2023-12-08 15:20:12 -06:00

2237 lines
67 KiB
C#

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using LavishScriptAPI;
using MRBot.IsxEq2.AbilityEffect;
using MRBot.IsxEq2.Helpers;
using MRBot.IsxEq2.InventoryConsignment;
using MRBot.IsxEq2.UI;
namespace MRBot.IsxEq2.CharacterActor
{
/// <summary>
/// This Data Type includes all of the data available to ISXEQ2 that can be gathered from the character Information structure.
/// </summary>
public class Character : LavishScriptObject
{
#region Constructor
/// <summary>
/// Constructor
/// </summary>
/// <param name="copy">LS Object</param>
public Character(LavishScriptObject copy) : base(copy)
{
}
#endregion
#region Members
/// <summary>
/// Returns an ability based on the index from 1 to NumAbilities
/// </summary>
/// <param name="index">index</param>
public Ability Ability(int id) => new Ability(GetMember("Ability", id.ToString(CultureInfo.InvariantCulture)));
/// <summary>
/// Returns an ability based on ID
/// </summary>
/// <param name="id">ID</param>
public Ability Ability(uint id) => new Ability(GetMember("Ability", id.ToString(CultureInfo.InvariantCulture)));
/// <summary>
/// Retrieves an ability based on name.
/// </summary>
/// <param name="name">name</param>
public Ability Ability(string name) => new Ability(GetMember("Ability", name));
/// <summary>
/// Agility
/// </summary>
public int Agility
{
get
{
Trace.WriteLine(String.Format("Character:Agility"));
return this.GetIntFromLSO("Agility");
}
}
/// <summary>
/// Achievement Point Experience
/// </summary>
public float APExp
{
get
{
Trace.WriteLine(String.Format("Character:APExp"));
return this.GetFloatFromLSO("APExp");
}
}
/// <summary>
/// Arcane Affliction Counter
/// </summary>
public int Arcane
{
get
{
Trace.WriteLine(String.Format("Character:Arcane"));
return this.GetIntFromLSO("Arcane");
}
}
/// <summary>
/// Arcane Resist
/// </summary>
public int ArcaneResist
{
get
{
Trace.WriteLine(String.Format("Character:ArcaneResist"));
return this.GetIntFromLSO("ArcaneResist");
}
}
/// <summary>
/// Arcane Resist Percentage
/// </summary>
public float ArcaneResistPct
{
get
{
Trace.WriteLine(String.Format("Character:ArcaneResistPct"));
return this.GetFloatFromLSO("ArcaneResistPct");
}
}
/// <summary>
/// Cache of Archetype
/// </summary>
private string _archetype;
/// <summary>
/// Archetype (fighter, priest, scout, mage)
/// </summary>
public string Archetype
{
get
{
Trace.WriteLine(String.Format("Character:Archetype"));
return _archetype ?? (_archetype = this.GetStringFromLSO("Archetype"));
}
}
/// <summary>
/// Returns TRUE if at the Character Select Screen. Only works
/// after logging all the way in once.
/// </summary>
public bool AtCharSelect
{
get
{
Trace.WriteLine(String.Format("Character:AtCharSelect"));
return this.GetBoolFromLSO("AtCharSelect");
}
}
/// <summary>
/// Returns TRUE if auto attack is on.
/// </summary>
public bool AutoAttackOn
{
get
{
Trace.WriteLine(String.Format("Character:AutoAttackOn"));
return this.GetBoolFromLSO("AutoAttackOn");
}
}
/// <summary>
/// Actual bank slots free and bank container slots free
/// </summary>
public int BankSlotsFree
{
get
{
Trace.WriteLine(String.Format("Character:BankSlotsFree"));
return this.GetIntFromLSO("BankSlotsFree");
}
}
/// <summary>
/// Cache of BaseAgility
/// </summary>
private int? _baseAgility;
/// <summary>
/// Base Agility
/// </summary>
public int BaseAgility
{
get
{
Trace.WriteLine(String.Format("Character:BaseAgility"));
if (!_baseAgility.HasValue)
_baseAgility = this.GetIntFromLSO("BaseAgility");
return _baseAgility.Value;
}
}
/// <summary>
/// Cache of BaseIntelligence
/// </summary>
private int? _baseIntelligence;
/// <summary>
/// Base Intelligence
/// </summary>
public int BaseIntelligence
{
get
{
Trace.WriteLine(String.Format("Character:BaseIntelligence"));
if (!_baseIntelligence.HasValue)
_baseIntelligence = this.GetIntFromLSO("BaseIntelligence");
return _baseIntelligence.Value;
}
}
/// <summary>
/// Cache of BaseStamina
/// </summary>
private int? _baseStamina;
/// <summary>
/// Base Stamina
/// </summary>
public int BaseStamina
{
get
{
Trace.WriteLine(String.Format("Character:BaseStamina"));
if (!_baseStamina.HasValue)
_baseStamina = this.GetIntFromLSO("BaseStamina");
return _baseStamina.Value;
}
}
/// <summary>
/// Cache of BaseStrength
/// </summary>
private int? _baseStrength;
/// <summary>
/// Base Strength
/// </summary>
public int BaseStrength
{
get
{
Trace.WriteLine(String.Format("Character:BaseStrength"));
if (!_baseStrength.HasValue)
_baseStrength = this.GetIntFromLSO("BaseStrength");
return _baseStrength.Value;
}
}
/// <summary>
/// Cache of BaseWisdom
/// </summary>
private int? _baseWisdom;
/// <summary>
/// Base Wisdom
/// </summary>
public int BaseWisdom
{
get
{
Trace.WriteLine(String.Format("Character:BaseWisdom"));
if (!_baseWisdom.HasValue)
_baseWisdom = this.GetIntFromLSO("BaseWisdom");
return _baseWisdom.Value;
}
}
/// TODO: Find out what Me.Breath is.
/// <summary>
/// Breath
/// </summary>
public float Breath
{
get
{
Trace.WriteLine(String.Format("Character:Breath"));
return this.GetFloatFromLSO("Breath");
}
}
/// <summary>
/// Returns TRUE if casting a spell.
/// </summary>
public bool CastingSpell
{
get
{
Trace.WriteLine(String.Format("Character:CastingSpell"));
return this.GetBoolFromLSO("CastingSpell");
}
}
/// <summary>
/// Checks between the character and the given point.
/// </summary>
/// <param name="toX">X</param>
/// <param name="toY">Y</param>
/// <param name="toZ">Z</param>
public bool CheckCollision(float toX, float toY, float toZ)
{
Trace.WriteLine(String.Format("Character:CheckCollision({0}, {1}, {2})", toX.ToString(CultureInfo.InvariantCulture),
toY.ToString(CultureInfo.InvariantCulture), toZ.ToString(CultureInfo.InvariantCulture)));
return this.GetBoolFromLSO("CheckCollision", toX.ToString(CultureInfo.InvariantCulture),
toY.ToString(CultureInfo.InvariantCulture), toZ.ToString(CultureInfo.InvariantCulture));
}
/// <summary>
/// Cache of Class
/// </summary>
private string _class;
/// <summary>
/// Class (warrior, brawler, crusader, sorcerer, enchanter, summoner, druid,
/// cleric, shaman, shaper, bard, predator, rogue, animalist)
/// </summary>
public string Class
{
get
{
Trace.WriteLine(String.Format("Character:Class"));
return _class ?? (_class = this.GetStringFromLSO("Class"));
}
}
/// <summary>
/// Returns TRUE if Combat Experience is enabled.
/// </summary>
public bool CombatExpEnabled
{
get
{
Trace.WriteLine(String.Format("Character:CombatExpEnabled"));
return this.GetBoolFromLSO("CombatExpEnabled");
}
}
/// <summary>
/// Copper
/// </summary>
public int Copper
{
get
{
Trace.WriteLine(String.Format("Character:Copper"));
return this.GetIntFromLSO("Copper");
}
}
/// <summary>
/// The number of effects. (Beneficial, Detrimental, All)
/// </summary>
/// <param name="type">effect type</param>
public int CountEffects(EffectType type = EffectType.All)
{
Trace.WriteLine(String.Format("Character:CountEffects({0})", type));
switch (type)
{
case EffectType.Beneficial:
case EffectType.Detrimental:
return this.GetIntFromLSO("CountEffects", type.ToString());
default:
return this.GetIntFromLSO("CountEffects");
}
}
/// <summary>
/// The number of maintained effects.
/// </summary>
public int CountMaintained
{
get
{
Trace.WriteLine(String.Format("Character:CountMaintained"));
return this.GetIntFromLSO("CountMaintained");
}
}
/// <summary>
/// Cursed Counter
/// </summary>
public bool Cursed
{
get
{
Trace.WriteLine(String.Format("Character:Cursed"));
return GetMember<bool>("Cursed");
}
}
/// <summary>
/// This member will return an 'actor' object of whatever is currently underneath your mouse cursor.
/// </summary>
public Actor CursorActor
{
get
{
Trace.WriteLine(String.Format("Character:CursorActor"));
return new Actor(this.GetMember("CursorActor"));
}
}
/// <summary>
/// Retrieves the item at the specified index of the CustomInventoryArray
/// </summary>
/// <param name="index">index</param>
public Item CustomInventory(int index)
{
Trace.WriteLine(String.Format("Character:CustomInventory({0})", index.ToString(CultureInfo.InvariantCulture)));
return new Item(this.GetMember("CustomInventory", index.ToString(CultureInfo.InvariantCulture)));
}
/// <summary>
/// Retrieves the item based on the search arguments from the CustomInventoryArray
/// </summary>
/// <param name="args">search arguments</param>
public Item CustomInventory(params string[] args)
{
Trace.WriteLine(String.Format("Character:CustomInventory({0})", String.Join(", ", args)));
return new Item(this.GetMember("CustomInventory", args));
}
/// <summary>
/// Returns the size of the CustomInventoryArray
/// </summary>
public int CustomInventoryArraySize
{
get
{
Trace.WriteLine(String.Format("Character:CustomInventoryArraySize"));
return this.GetIntFromLSO("CustomInventoryArraySize");
}
}
/// <summary>
/// Dissipation
/// </summary>
public int Dissipation
{
get
{
Trace.WriteLine(String.Format("Character:Dissipation"));
return this.GetIntFromLSO("Dissipation");
}
}
/// <summary>
/// Dissonance
/// </summary>
public int Dissonance
{
get
{
Trace.WriteLine(String.Format("Character:Dissonance"));
return this.GetIntFromLSO("Dissonance");
}
}
/// <summary>
/// Dissonance Remaining
/// </summary>
public int DissonanceRemaining
{
get
{
Trace.WriteLine(String.Format("Character:DissonanceRemaining"));
return this.GetIntFromLSO("DissonanceRemaining");
}
}
/// <summary>
/// Retrieves the effect of the given type at the specified index. (Beneficial, Detrimental, All)
/// </summary>
/// <param name="type">effect type</param>
/// <param name="index">index</param>
public Effect Effect(int index, EffectType type = EffectType.All)
{
Trace.WriteLine(String.Format("Character:CountEffects({0}, {1})", type, index.ToString(CultureInfo.InvariantCulture)));
switch (type)
{
case EffectType.Beneficial:
case EffectType.Detrimental:
return new Effect(this.GetMember("Effect", type.ToString(), index.ToString(CultureInfo.InvariantCulture)));
default:
return new Effect(this.GetMember("Effect", index.ToString(CultureInfo.InvariantCulture)));
}
}
/// <summary>
/// Retrieves the effect of the given type at the specified index. (Beneficial, Detrimental, All(
/// </summary>
/// <param name="type">type</param>
/// <param name="name">name</param>
public Effect Effect(string name, EffectType type = EffectType.All)
{
Trace.WriteLine(String.Format("Character:CountEffects({0}, {1})", type, name));
switch (type)
{
case EffectType.Beneficial:
case EffectType.Detrimental:
return new Effect(this.GetMember("Effect", type.ToString(), name));
default:
return new Effect(this.GetMember("Effect", name));
}
}
/// <summary>
/// Effective Level (Mentored or Chrono)
/// </summary>
public int EffectiveLevel
{
get
{
Trace.WriteLine(String.Format("Character:EffectiveLevel"));
return this.GetIntFromLSO("EffectiveLevel");
}
}
/// <summary>
/// Elemental Affliction Counter
/// </summary>
public int Elemental
{
get
{
Trace.WriteLine(String.Format("Character:Elemental"));
return GetMember<int>("Elemental");
}
}
/// <summary>
/// Elemental Resist
/// </summary>
public int ElementalResist
{
get
{
Trace.WriteLine(String.Format("Character:ElementalResist"));
return GetMember<int>("ElementalResist");
}
}
/// <summary>
/// Elemental Resist Percent
/// </summary>
public int ElementalResistPct
{
get
{
Trace.WriteLine(String.Format("Character:ElementalResistPct"));
return GetMember<int>("ElementalResistPct");
}
}
/// <summary>
/// Retrieves an equipped item that matches the search criteria
/// </summary>
/// <param name="args">search criteria</param>
public Item Equipment(params string[] args)
{
Trace.WriteLine(String.Format("Character:Equipment({0})", String.Join(", ", args)));
return new Item(this.GetMember("Equipment", args));
}
/// <summary>
/// Experience
/// </summary>
public int Exp
{
get
{
Trace.WriteLine(String.Format("Character:Exp"));
return this.GetIntFromLSO("Exp");
}
}
/// TODO: Find out why Me.ExpDebt returns NULL
/// <summary>
/// Experience Debt
/// </summary>
public float ExpDebt
{
get
{
Trace.WriteLine(String.Format("Character:ExpDebt"));
return this.GetFloatFromLSO("ExpDebt");
}
}
/// <summary>
/// Experience Points
/// </summary>
public float ExpPoints
{
get
{
Trace.WriteLine(String.Format("Character:ExpPoints"));
return this.GetFloatFromLSO("ExpPoints");
}
}
/// <summary>
/// Experience Points Needed to Reach the Next Level
/// </summary>
public float ExpPointsToLevel
{
get
{
Trace.WriteLine(String.Format("Character:ExpPointsToLevel"));
return this.GetFloatFromLSO("ExpPointsToLevel");
}
}
/// <summary>
/// Cache of Gender
/// </summary>
private string _gender;
/// <summary>
/// Gender
/// </summary>
public string Gender
{
get
{
Trace.WriteLine(String.Format("Character:Gender"));
return _gender ?? (_gender = this.GetStringFromLSO("Gender"));
}
}
/// <summary>
/// Returns an IEnumerable of all abilities.
/// </summary>
public List<Ability> QueryAbilities()
{
Trace.WriteLine(String.Format("Character:QueryAbilities()"));
return this.GetListFromMethod<Ability>("QueryAbilities", "ability");
}
/// <summary>
/// Returns an IEnumerable of all equipped items.
/// </summary>
/// <returns></returns>
public IEnumerable<Item> GetEquipment()
{
Trace.WriteLine(String.Format("Character:GetEquipment()"));
return Util.GetListFromMember<Item>(this, "GetEquipment", "item");
}
// TODO: Research Me.GetGameData
/// <summary>
/// Returns the EQ2UIElement at the specified path.
/// </summary>
/// <param name="path">path</param>
public EQ2Widget GetGameData(string path)
{
Trace.WriteLine(String.Format("Character:GetGameData({0})", path));
return new EQ2Widget(this.GetMember("GetGameData", path));
}
/// <summary>
/// Returns an IEnumerable of all items (including bank) NOT EQUIPPED.
/// </summary>
public IEnumerable<Item> QueryInventory()
{
Trace.WriteLine(String.Format("Character:QueryInventory()"));
return Util.GetListFromMember<Item>(this, "QueryInventory?", "item");
}
/// <summary>
/// Returns an IEnumerable of all items (excluding bank) NOT EQUIPPED
/// </summary>
public IEnumerable<Item> GetInventoryAtHand()
{
Trace.WriteLine(String.Format("Character:GetInventory()"));
return Util.GetListFromMember<Item>(this, "GetInventory", "item");
}
/// <summary>
/// Gold
/// </summary>
public int Gold
{
get
{
Trace.WriteLine(String.Format("Character:Gold"));
return this.GetIntFromLSO("Gold");
}
}
/// <summary>
/// Returns the group member at the specified index between 1 and 5.
/// The player is at index 0. Me.Group(0) is the same as Me.ToActor
/// </summary>
/// <param name="index">index</param>
public GroupMember Group(int index)
{
Trace.WriteLine(String.Format("Character:Group({0})", index.ToString(CultureInfo.InvariantCulture)));
return new GroupMember(this.GetMember("Group", index.ToString(CultureInfo.InvariantCulture)));
}
/// <summary>
/// Returns the group member matching the name provided.
/// </summary>
/// <param name="name">name</param>
public GroupMember Group(string name)
{
Trace.WriteLine(String.Format("Character:Group({0})", name));
return new GroupMember(this.GetMember("Group", name));
}
/// <summary>
/// Returns the number of members in the group from 1 to 6.
/// </summary>
public int GroupCount
{
get
{
Trace.WriteLine(String.Format("Character:GroupCount"));
return this.GetIntFromLSO("GroupCount");
}
}
/// <summary>
/// Returns TRUE if the character is Grouped
/// </summary>
public bool Grouped
{
get
{
Trace.WriteLine(String.Format("Character:Grouped"));
return this.GetBoolFromLSO("Grouped");
}
}
/// <summary>
/// Returns TRUE if guild privacy is on
/// </summary>
public bool GuildPrivacyOn
{
get
{
Trace.WriteLine(String.Format("Character:GuildPrivacyOn"));
return GetMember<bool>("GuildPrivacyOn");
}
}
/// <summary>
/// Heading. Returns heading as degrees (think compass), to a precision of 2 decimal places.
/// </summary>
public float Heading
{
get
{
Trace.WriteLine(String.Format("Character:Heading"));
return this.GetFloatFromLSO("Heading");
}
}
/// <summary>
/// Returns the heading you would need to face to reach the target point. Better known as bearing.
/// </summary>
/// <param name="toX">X</param>
/// <param name="toY">Y</param>
/// <param name="toZ">Z</param>
public float HeadingTo(float toX, float toY, float toZ)
{
Trace.WriteLine(String.Format("Character:HeadingTo({0}, {1}, {2})", toX.ToString(CultureInfo.InvariantCulture),
toY.ToString(CultureInfo.InvariantCulture), toZ.ToString(CultureInfo.InvariantCulture)));
return this.GetFloatFromLSO("HeadingTo", toX.ToString(CultureInfo.InvariantCulture),
toY.ToString(CultureInfo.InvariantCulture), toZ.ToString(CultureInfo.InvariantCulture));
}
/// <summary>
/// Returns health as a percentage.
/// </summary>
public int Health
{
get
{
Trace.WriteLine(String.Format("Character:Health"));
return GetMember<int>("Health");
}
}
/// <summary>
/// Health Regeneration
/// </summary>
public int HealthRegen
{
get
{
Trace.WriteLine(String.Format("Character:HealthRegen"));
return this.GetIntFromLSO("HealthRegen");
}
}
/// <summary>
/// ID
/// </summary>
public int ID
{
get
{
Trace.WriteLine(String.Format("Character:ID"));
return this.GetIntFromLSO("ID");
}
}
/// <summary>
/// Returns TRUE if user is "ignoring all" as toggled with the 'eq2ignore all' command.
/// </summary>
public bool IgnoringAll
{
get
{
Trace.WriteLine(String.Format("Character:IgnoringAll"));
return this.GetBoolFromLSO("IgnoringAll");
}
}
/// <summary>
/// Returns TRUE if the camera is in First Person
/// </summary>
public bool InFirstPersonView
{
get
{
Trace.WriteLine(String.Format("Character:In1stPersonView"));
return this.GetBoolFromLSO("In1stPersonView");
}
}
/// <summary>
/// Returns TRUE if the camera is in Third Person
/// </summary>
public bool InThirdPersonView
{
get
{
Trace.WriteLine(String.Format("Character:In3rdPersonView"));
return this.GetBoolFromLSO("In3rdPersonView");
}
}
/// <summary>
/// Returns TRUE if the character is in combat
/// </summary>
public bool InCombat
{
get
{
Trace.WriteLine(String.Format("Character:InCombat"));
return this.GetBoolFromLSO("InCombat");
}
}
/// <summary>
/// Returns TRUE if the character is in the game world. Only
/// works if you have logged in completely once.
/// </summary>
public bool InGameWorld
{
get
{
Trace.WriteLine(String.Format("Character:InGameWorld"));
return this.GetBoolFromLSO("InGameWorld");
}
}
/// <summary>
/// Returns TRUE if Initializing Effects on the character.
/// </summary>
public bool InitializingEffects
{
get
{
Trace.WriteLine(String.Format("Character:InitializingEffects"));
return this.GetBoolFromLSO("InitializingEffects");
}
}
/// <summary>
/// Returns TRUE if the character is in a raid.
/// </summary>
public bool InRaid
{
get
{
Trace.WriteLine(String.Format("Character:InRaid"));
return this.GetBoolFromLSO("InRaid");
}
}
/// <summary>
/// Intelligence
/// </summary>
public int Intelligence
{
get
{
Trace.WriteLine(String.Format("Character:InRaid"));
return this.GetIntFromLSO("Intelligence");
}
}
/// <summary>
/// Retrieves the inventory item based on the search criteria
/// </summary>
/// <param name="args">criteria</param>
public Item Inventory(params string[] args)
{
Trace.WriteLine(String.Format("Character:Inventory({0})", String.Join(", ", args)));
return new Item(this.GetMember("Inventory", args));
}
/// <summary>
/// Actual inventory slots free and inventory container slots free
/// </summary>
public int InventorySlotsFree
{
get
{
Trace.WriteLine(String.Format("Character:InventorySlotsFree"));
return this.GetIntFromLSO("InventorySlotsFree");
}
}
/// <summary>
/// Returns TRUE if the character is in the water
/// </summary>
public bool InWater
{
get
{
Trace.WriteLine(String.Format("Character:InWater"));
return this.GetBoolFromLSO("InWater");
}
}
/// <summary>
/// Returns TRUE if the character is afflicted by arcane, noxious, etc.
/// </summary>
public bool IsAfflicted
{
get
{
Trace.WriteLine(String.Format("Character:IsAfflicted"));
return this.GetBoolFromLSO("IsAfflicted");
}
}
/// <summary>
/// Returns TRUE if the character is flagged AFK
/// </summary>
public bool IsAFK
{
get
{
Trace.WriteLine(String.Format("Character:IsAfflicted"));
return this.GetBoolFromLSO("IsAFK");
}
}
/// <summary>
/// Returns TRUE if the character is flagged anonymous
/// </summary>
public bool IsAnonymous
{
get
{
Trace.WriteLine(String.Format("Character:IsAnonymous"));
return this.GetBoolFromLSO("IsAnonymous");
}
}
/// <summary>
/// Returns TRUE if the character is camping
/// </summary>
public bool IsCamping
{
get
{
Trace.WriteLine(String.Format("Character:IsCamping"));
return this.GetBoolFromLSO("IsCamping");
}
}
/// <summary>
/// Returns TRUE if the character is declining duel invites
/// </summary>
public bool IsDecliningDuelInvites
{
get
{
Trace.WriteLine(String.Format("Character:IsDecliningDuelInvites"));
return this.GetBoolFromLSO("IsDecliningDuelInvites");
}
}
/// <summary>
/// Returns TRUE if the character is declining group invites
/// </summary>
public bool IsDecliningGroupInvites
{
get
{
Trace.WriteLine(String.Format("Character:IsDecliningGroupInvites"));
return this.GetBoolFromLSO("IsDecliningGroupInvites");
}
}
/// <summary>
/// Returns TRUE if the character is declining guild invites
/// </summary>
public bool IsDecliningGuildInvites
{
get
{
Trace.WriteLine(String.Format("Character:IsDecliningGuildInvites"));
return this.GetBoolFromLSO("IsDecliningGuildInvites");
}
}
/// <summary>
/// Returns TRUE if the character is declining raid invites
/// </summary>
public bool IsDecliningRaidInvites
{
get
{
Trace.WriteLine(String.Format("Character:IsDecliningRaidInvites"));
return this.GetBoolFromLSO("IsDecliningRaidInvites");
}
}
/// <summary>
/// Returns TRUE if the character is declining trade invites
/// </summary>
public bool IsDecliningTradeInvites
{
get
{
Trace.WriteLine(String.Format("Character:IsDecliningTradeInvites"));
return this.GetBoolFromLSO("IsDecliningTradeInvites");
}
}
/// <summary>
/// Returns TRUE if the character is on a hate list
/// </summary>
public bool IsHated
{
get
{
Trace.WriteLine(String.Format("Character:IsHated"));
return this.GetBoolFromLSO("IsHated");
}
}
/// <summary>
/// Returns TRUE if the character is engaged in PvP combat
/// </summary>
public bool IsInPVP
{
get
{
Trace.WriteLine(String.Format("Character:IsInPvP"));
return this.GetBoolFromLSO("IsInPVP");
}
}
/// <summary>
/// Returns TRUE if the character is looking for group
/// </summary>
public bool IsLFG
{
get
{
Trace.WriteLine(String.Format("Character:IsLFG"));
return this.GetBoolFromLSO("IsLFG");
}
}
/// <summary>
/// Returns TRUE if the character is looking for work
/// </summary>
public bool IsLFW
{
get
{
Trace.WriteLine(String.Format("Character:IsLFW"));
return this.GetBoolFromLSO("IsLFW");
}
}
/// <summary>
/// Returns TRUE if the character is moving
/// </summary>
public bool IsMoving
{
get
{
Trace.WriteLine(String.Format("Character:IsMoving"));
return this.GetBoolFromLSO("IsMoving");
}
}
/// <summary>
/// Returns TRUE if the character is roleplaying
/// </summary>
public bool IsRolePlaying
{
get
{
Trace.WriteLine(String.Format("Character:IsRoleplaying"));
return this.GetBoolFromLSO("IsRolePlaying");
}
}
/// <summary>
/// Returns TRUE if the character is sitting
/// </summary>
public bool IsSitting
{
get
{
Trace.WriteLine(String.Format("Character:IsSitting"));
return this.GetBoolFromLSO("IsSitting");
}
}
/// <summary>
/// Cache of Level
/// </summary>
private int? _level;
/// <summary>
/// Level
/// </summary>
public int Level
{
get
{
Trace.WriteLine(String.Format("Character:Level"));
if (!_level.HasValue)
_level = this.GetIntFromLSO("Level");
return _level.Value;
}
}
/// <summary>
/// Returns the maintained effect at the index
/// </summary>
/// <param name="index">index</param>
public Maintained Maintained(int index)
{
Trace.WriteLine(String.Format("Character:Maintained({0})", index.ToString(CultureInfo.InvariantCulture)));
return new Maintained(this.GetMember("Maintained", index.ToString(CultureInfo.InvariantCulture)));
}
/// <summary>
/// Returns the maintained effect by name
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public Maintained Maintained(string name)
{
Trace.WriteLine(String.Format("Character:Maintained({0})", name));
return new Maintained(this.GetMember("Maintained", name));
}
/// <summary>
/// Maximum Achievement Points
/// </summary>
public int MaxAPs
{
get
{
Trace.WriteLine(String.Format("Character:MaxAPs"));
return this.GetIntFromLSO("MaxAPs");
}
}
/// <summary>
/// Cache of MaxConc
/// </summary>
private int? _maxConc;
/// <summary>
/// Max Concentration
/// </summary>
public int MaxConc
{
get
{
Trace.WriteLine(String.Format("Character:MaxConc"));
if (!_maxConc.HasValue)
_maxConc = this.GetIntFromLSO("MaxConc");
return _maxConc.Value;
}
}
/// <summary>
/// Cache of MaxDissonance
/// </summary>
private int? _maxDissonance;
/// <summary>
/// Max Dissonance
/// </summary>
public int MaxDissonance
{
get
{
Trace.WriteLine(String.Format("Character:MaxDissonance"));
if (!_maxDissonance.HasValue)
_maxDissonance = this.GetIntFromLSO("MaxDissonance");
return _maxDissonance.Value;
}
}
/// <summary>
/// Max Health
/// </summary>
public int MaxHealth
{
get
{
Trace.WriteLine(String.Format("Character:MaxHealth"));
return this.GetIntFromLSO("MaxHealth");
}
}
/// <summary>
/// Max Power
/// </summary>
public int MaxPower
{
get
{
Trace.WriteLine(String.Format("Character:MaxPower"));
return this.GetIntFromLSO("MaxPower");
}
}
/// <summary>
/// Cache of MentoringXPAdj
/// </summary>
private float? _mentoringXPAdj;
/// <summary>
/// Mentoring XP Adjustment
/// </summary>
public float MentoringXPAdj
{
get
{
Trace.WriteLine(String.Format("Character:MentoringXPAdj"));
if (!_mentoringXPAdj.HasValue)
_mentoringXPAdj = this.GetFloatFromLSO("MentoringXPAdj");
return _mentoringXPAdj.Value;
}
}
/// <summary>
/// Returns the object the character is capable of selling at the specified index. (1 to NumItemsICanSell)
/// </summary>
/// <param name="index">index</param>
public Merchandise Merchandise(int index)
{
Trace.WriteLine(String.Format("Character:Merchandise({0})", index.ToString(CultureInfo.InvariantCulture)));
return new Merchandise(this.GetMember("Merchandise", index.ToString(CultureInfo.InvariantCulture)));
}
/// <summary>
/// Returns the object the character is capable of selling based on name.
/// </summary>
/// <param name="name">name</param>
public Merchandise Merchandise(string name)
{
Trace.WriteLine(String.Format("Character:Merchandise({0})", name));
return new Merchandise(this.GetMember("Merchandise", name));
}
/// <summary>
/// Cache of Name
/// </summary>
private string _name;
/// <summary>
/// Name
/// </summary>
public string Name
{
get
{
Trace.WriteLine(String.Format("Character:Name"));
return _name ?? (_name = this.GetStringFromLSO("Name"));
}
}
/// <summary>
/// Returns an integer which is the ID of the first available container in the inventory that has an open slot
/// </summary>
public int NextFreeInvContainer
{
get
{
Trace.WriteLine(String.Format("Character:NextFreeInvContainer"));
return this.GetIntFromLSO("NextFreeInvContainer");
}
}
/// <summary>
/// Noxious Affliction Counter
/// </summary>
public int Noxious
{
get
{
Trace.WriteLine(String.Format("Character:Noxious"));
return this.GetIntFromLSO("Noxious");
}
}
/// <summary>
/// Noxious Resist
/// </summary>
public int NoxiousResist
{
get
{
Trace.WriteLine(String.Format("Character:NoxiousResist"));
return this.GetIntFromLSO("NoxiousResist");
}
}
/// <summary>
/// Noxious Resist Percent
/// </summary>
public float NoxiousResistPct
{
get
{
Trace.WriteLine(String.Format("Character:NoxiousResistPct"));
return this.GetFloatFromLSO("NoxiousResistPct");
}
}
/// <summary>
/// Returns the number of abilities your character currently has in his/her knowledge book.
/// </summary>
public int NumAbilities
{
get
{
Trace.WriteLine(String.Format("Character:NumAbilities"));
return this.GetIntFromLSO("NumAbilities");
}
}
/// <summary>
/// The number of effects. (Beneficial, Detrimental, All)
/// </summary>
/// <param name="type">type</param>
public int NumEffects(EffectType type = EffectType.All)
{
Trace.WriteLine(String.Format("Character:NumEffects({0})", type));
switch (type)
{
case EffectType.Beneficial:
case EffectType.Detrimental:
return this.GetIntFromLSO("NumEffects", type.ToString());
default:
return this.GetIntFromLSO("NumEffects");
}
}
/// <summary>
/// Returns the number of items that the character is capable of selling
/// (ie, the number of items in the inventory minus the number of NO VALUE and NO TRADE items.)
/// </summary>
public int NumItemsICanSell
{
get
{
Trace.WriteLine(String.Format("Character:NumItemsICanSell"));
return this.GetIntFromLSO("NumItemsICanSell");
}
}
/// <summary>
/// Returns the number of recipes your character currently has in his/her recipe book.
/// </summary>
public int NumRecipes
{
get
{
Trace.WriteLine(String.Format("Character:NumRecipes"));
return this.GetIntFromLSO("NumRecipes");
}
}
/// <summary>
/// Returns the number of vending containers
/// </summary>
public int NumVendingContainers
{
get
{
Trace.WriteLine(String.Format("Character:NumVendingContainers"));
return this.GetIntFromLSO("NumVendingContainers");
}
}
/// <summary>
/// Returns the number of vending containers
/// </summary>
public int NumVendors
{
get
{
Trace.WriteLine(String.Format("Character:NumVendors"));
return this.GetIntFromLSO("NumVendors");
}
}
/// <summary>
/// Returns the character's pet, if any.
/// </summary>
public Actor Pet
{
get
{
Trace.WriteLine(String.Format("Character:Pet"));
return new Actor(this.GetMember("Pet"));
}
}
/// <summary>
/// Platinum
/// </summary>
public int Platinum
{
get
{
Trace.WriteLine(String.Format("Character:Platinum"));
return this.GetIntFromLSO("Platinum");
}
}
/// <summary>
/// Power
/// </summary>
public int Power
{
get
{
Trace.WriteLine(String.Format("Character:Power"));
return this.GetIntFromLSO("Power");
}
}
/// <summary>
/// Power Regen
/// </summary>
public int PowerRegen
{
get
{
Trace.WriteLine(String.Format("Character:PowerRegen"));
return this.GetIntFromLSO("PowerRegen");
}
}
/// <summary>
/// Cache of Race
/// </summary>
private string _race;
/// <summary>
/// Race
/// </summary>
public string Race
{
get
{
Trace.WriteLine(String.Format("Character:Race"));
return _race ?? (_race = this.GetStringFromLSO("Race"));
}
}
/// <summary>
/// Number of people in the raid. If you are not in a raid, this returns 0.
/// </summary>
public int Raid()
{
Trace.WriteLine(String.Format("Character:Raid()"));
return this.GetIntFromLSO("Raid");
}
/// <summary>
/// Returns the raid member by Actor ID or Raid Member number
/// </summary>
/// <param name="number">ID or member number</param>
public GroupMember Raid(int number)
{
Trace.WriteLine(String.Format("Character:Raid({0})", number.ToString(CultureInfo.InvariantCulture)));
return number < 25 ? new GroupMember(this.GetMember("Raid", number.ToString(CultureInfo.InvariantCulture)))
: new GroupMember(this.GetMember("Raid", "id", number.ToString(CultureInfo.InvariantCulture)));
}
/// <summary>
/// Returns the raid member by group and member numbers
/// </summary>
/// <param name="group">group number</param>
/// <param name="member">member number</param>
public GroupMember Raid(int group, int member)
{
Trace.WriteLine(String.Format("Character:Raid({0}, {1})", group.ToString(CultureInfo.InvariantCulture),
member.ToString(CultureInfo.InvariantCulture)));
return new GroupMember(this.GetMember("Raid", group.ToString(CultureInfo.InvariantCulture),
member.ToString(CultureInfo.InvariantCulture)));
}
/// <summary>
/// Number of people in the raid. If you are not in a raid, this returns 0.
/// </summary>
public int RaidCount
{
get
{
Trace.WriteLine(String.Format("Character:RaidCount"));
return this.GetIntFromLSO("RaidCount");
}
}
/// <summary>
/// Returns the character's raid group number
/// </summary>
public int RaidGroupNum
{
get
{
Trace.WriteLine(String.Format("Character:RaidGroupNum"));
return this.GetIntFromLSO("RaidGroupNum");
}
}
/// <summary>
/// Returns TRUE if the ranged auto attack is on
/// </summary>
public bool RangedAutoAttackOn
{
get
{
Trace.WriteLine(String.Format("Character:RangedAutoAttackOn"));
return this.GetBoolFromLSO("RangedAutoAttackOn");
}
}
/// <summary>
/// Returns the recipe at the specified index
/// </summary>
/// <param name="index">index</param>
public Recipe.Recipe Recipe(int index)
{
Trace.WriteLine(String.Format("Character:Recipe({0})", index.ToString(CultureInfo.InvariantCulture)));
return new Recipe.Recipe(this.GetMember("Recipe", index.ToString(CultureInfo.InvariantCulture)));
}
/// <summary>
/// Returns the recipe with the ID provided
/// </summary>
/// <param name="id">ID</param>
public Recipe.Recipe Recipe(uint id)
{
Trace.WriteLine(String.Format("Character:Recipe({0})", id.ToString(CultureInfo.InvariantCulture)));
return new Recipe.Recipe(this.GetMember("Recipe", "id", id.ToString(CultureInfo.InvariantCulture)));
}
/// <summary>
/// Returns the recipe with the name provided
/// </summary>
/// <param name="name"></param>
public Recipe.Recipe Recipe(string name)
{
Trace.WriteLine(String.Format("Character:Recipe({0})", name));
return new Recipe.Recipe(this.GetMember("Recipe", name));
}
/// <summary>
/// Returns the number of shared bank slots free
/// </summary>
public int SharedBankSlotsFree
{
get
{
Trace.WriteLine(String.Format("Character:SharedBankSlotsFree)"));
return this.GetIntFromLSO("SharedBankSlotsFree");
}
}
/// <summary>
/// Silver
/// </summary>
public int Silver
{
get
{
Trace.WriteLine(String.Format("Character:Silver)"));
return this.GetIntFromLSO("Silver");
}
}
/// <summary>
/// Stamina
/// </summary>
public int Stamina
{
get
{
Trace.WriteLine(String.Format("Character:Stamina)"));
return this.GetIntFromLSO("Stamina");
}
}
/// <summary>
/// Strength
/// </summary>
public int Strength
{
get
{
Trace.WriteLine(String.Format("Character:Strength)"));
return this.GetIntFromLSO("Strength");
}
}
/// <summary>
/// Cache of SubClass
/// </summary>
private string _subClass;
/// <summary>
/// Sub Class. What we normally think of as Class. (Guardian, Mystic, etc...)
/// </summary>
public string SubClass
{
get
{
Trace.WriteLine(String.Format("Character:SubClass)"));
return _subClass ?? (_subClass = this.GetStringFromLSO("SubClass"));
}
}
/// <summary>
/// Returns TRUE if you have Line of Sight to your current target.
/// </summary>
public bool TargetLOS
{
get
{
Trace.WriteLine(String.Format("Character:TargetLOS"));
return this.GetBoolFromLSO("TargetLOS");
}
}
/// <summary>
/// Returns the time until camp out. Starts at 20, and updates every 5 seconds.
/// </summary>
public float TimeToCampOut
{
get
{
Trace.WriteLine(String.Format("Character:TimeToCampout"));
return this.GetFloatFromLSO("TimeToCampOut");
}
}
/// <summary>
/// Returns as Actor
/// </summary>
public Actor ToActor
{
get
{
Trace.WriteLine(String.Format("Character:ToActor"));
return new Actor(this.GetMember("ToActor"));
}
}
/// <summary>
/// Target, if any.
/// </summary>
public Actor Target
{
get
{
Trace.WriteLine(String.Format("Actor:Target"));
return new Actor(this.GetMember("Target"));
}
}
/// <summary>
/// Location (or position in Point3f)
/// </summary>
public Point3f Loc
{
get
{
Trace.WriteLine(String.Format("Actor:Loc"));
return new Point3f(this.GetMember("Loc"));
}
}
/// <summary>
/// Total Earned APs
/// </summary>
public int TotalEarnedAPs
{
get
{
Trace.WriteLine(String.Format("Character:TotalEarnedAPs"));
return this.GetIntFromLSO("TotalEarnedAPs");
}
}
/// <summary>
/// Total slot capacity of all the characters vending containers combined.
/// </summary>
public int TotalVendingCapacity
{
get
{
Trace.WriteLine(String.Format("Character:TotalVendingCapacity"));
return this.GetIntFromLSO("TotalVendingCapacity");
}
}
/// <summary>
/// Trauma Affliction Counter
/// </summary>
public int Trauma
{
get
{
Trace.WriteLine(String.Format("Character:Trauma"));
return this.GetIntFromLSO("Trauma");
}
}
/// <summary>
/// Cache of TSArchetype
/// </summary>
private string _tSArchetype;
/// <summary>
/// Trade Skill Archetype (artisan, etc.)
/// </summary>
public string TSArchetype
{
get
{
Trace.WriteLine(String.Format("Character:TSArcheype"));
return _tSArchetype ?? (_tSArchetype = this.GetStringFromLSO("TSArchetype"));
}
}
/// <summary>
/// Cache of TSClass
/// </summary>
private string _tSClass;
/// <summary>
/// Trade Skill Class (outfitter, etc.)
/// </summary>
public string TSClass
{
get
{
Trace.WriteLine(String.Format("Character:TSClass"));
return _tSClass ?? (_tSClass = this.GetStringFromLSO("TSClass"));
}
}
/// <summary>
/// Trade Skill Experience
/// </summary>
public float TSExp
{
get
{
Trace.WriteLine(String.Format("Character:TSExp"));
return this.GetFloatFromLSO("TSExp");
}
}
/// <summary>
/// Trade Skill Experience Debt
/// </summary>
public float TSExpDebt
{
get
{
Trace.WriteLine(String.Format("Character:TSExpDebt"));
return this.GetFloatFromLSO("TSExpDebt");
}
}
/// <summary>
/// Trade Skill Experience Points
/// </summary>
public float TSExpPoints
{
get
{
Trace.WriteLine(String.Format("Character:TSExpPoints"));
return this.GetFloatFromLSO("TSExpPoints");
}
}
/// <summary>
/// Trade Skill Experience Points Needed to Reach the Next Level
/// </summary>
public float TSExpPointsToLevel
{
get
{
Trace.WriteLine(String.Format("Character:TSExpPointsToLevel"));
return this.GetFloatFromLSO("TSExpPointsToLevel");
}
}
/// <summary>
/// Trade Skill Level
/// </summary>
public int TSLevel
{
get
{
Trace.WriteLine(String.Format("Character:TSLevel"));
return this.GetIntFromLSO("TSLevel");
}
}
/// <summary>
/// Trade Skill SubClass (armorer, etc.)
/// </summary>
public string TSSubClass
{
get
{
Trace.WriteLine(String.Format("Character:TSSubClass"));
return this.GetStringFromLSO("TSSubClass");
}
}
/// <summary>
/// Trade Skill Vitality
/// </summary>
public float TSVitality
{
get
{
Trace.WriteLine(String.Format("Character:TSVitality"));
return this.GetFloatFromLSO("TSVitality");
}
}
/// <summary>
/// Amount of Concentration Used
/// </summary>
public int UsedConc
{
get
{
Trace.WriteLine(String.Format("Character:UsedConc"));
return this.GetIntFromLSO("UsedConc");
}
}
/// <summary>
/// Retrieves the vending container at the index (1 to 6)
/// </summary>
/// <param name="index">index</param>
public VendingContainer Vending(int index)
{
Trace.WriteLine(String.Format("Character:Vending({0})", index.ToString(CultureInfo.InvariantCulture)));
return new VendingContainer(this.GetMember("Vending", index.ToString(CultureInfo.InvariantCulture)));
}
/// <summary>
/// Retrieves the vending container by exact name
/// </summary>
/// <param name="name">name</param>
public VendingContainer Vending(string name)
{
Trace.WriteLine(String.Format("Character:Vending({0})", name));
return new VendingContainer(this.GetMember("Vending", name));
}
/// <summary>
/// Number of vending container slots currently free for use
/// </summary>
public int VendingCapacityFree
{
get
{
Trace.WriteLine(String.Format("Character:VendingCapacityFree"));
return this.GetIntFromLSO("VendingCapacityFree");
}
}
/// <summary>
/// Number of vending container slots currently being used
/// </summary>
public int VendingCapacityUsed
{
get
{
Trace.WriteLine(String.Format("Character:VendingCapacityUsed"));
return this.GetIntFromLSO("VendingCapacityUsed");
}
}
/// <summary>
/// Experience Vitality
/// </summary>
public float Vitality
{
get
{
Trace.WriteLine(String.Format("Character:Vitality"));
return this.GetFloatFromLSO("Vitality");
}
}
/// <summary>
/// Water Depth
/// </summary>
public float WaterDepth
{
get
{
Trace.WriteLine(String.Format("Character:WaterDepth"));
return this.GetFloatFromLSO("WaterDepth");
}
}
/// <summary>
/// Wisdom
/// </summary>
public int Wisdom
{
get
{
Trace.WriteLine(String.Format("Character:Wisdom"));
return this.GetIntFromLSO("Wisdom");
}
}
/// <summary>
/// X-coordinate
/// </summary>
public float X
{
get
{
Trace.WriteLine(String.Format("Character:X"));
return GetMember<float>("X");
}
}
/// <summary>
/// Y-coordinate
/// </summary>
public float Y
{
get
{
Trace.WriteLine(String.Format("Character:Y"));
return this.GetFloatFromLSO("Y");
}
}
/// <summary>
/// Z-coordinate
/// </summary>
public float Z
{
get
{
Trace.WriteLine(String.Format("Character:Z"));
return this.GetFloatFromLSO("Z");
}
}
#endregion
#region Methods
/// <summary>
/// Deposits the specified quantity of coin into the player's bank. May be used
/// to transfer money from the shared bank as well.
/// </summary>
/// <param name="type">type of coin</param>
/// <param name="amount">amount of coin</param>
/// <param name="useSharedBank">use shared bank as source</param>
/// <returns>call success</returns>
public bool BankDeposit(CoinType type, int amount, bool useSharedBank = false)
{
Trace.WriteLine(String.Format("Character:BankDeposit({0}, {1}, {2})", type,
amount.ToString(CultureInfo.InvariantCulture), useSharedBank));
return !useSharedBank ? this.ExecuteMethod("BankDeposit", type.ToString()[0].ToString(CultureInfo.InvariantCulture),
amount.ToString(CultureInfo.InvariantCulture)) : this.ExecuteMethod("BankDeposit",
type.ToString()[0].ToString(CultureInfo.InvariantCulture), amount.ToString(CultureInfo.InvariantCulture), "FromShared");
}
/// <summary>
/// Withdraws the selected quantity of coin from the player's bank.
/// </summary>
/// <param name="type">type of coin</param>
/// <param name="amount">amount of coin</param>
/// <returns>call success</returns>
public bool BankWithdraw(CoinType type, int amount)
{
Trace.WriteLine(String.Format("Character:BankWithdraw({0}, {1})", type,
amount.ToString(CultureInfo.InvariantCulture)));
return this.ExecuteMethod("BankWithdraw", type.ToString()[0].ToString(CultureInfo.InvariantCulture),
amount.ToString(CultureInfo.InvariantCulture));
}
/// <summary>
/// Creates a custom inventory array of the specified type.
/// </summary>
/// <param name="type">inventory type</param>
/// <returns>call success</returns>
public bool CreateCustomInventoryArray(InvType type = InvType.All)
{
Trace.WriteLine(String.Format("Character:CreateCustomInventoryArray({0})", type.ToString()));
return ExecuteMethod("CreateCustomInventoryArray", type.ToString().ToLower());
}
/// <summary>
/// Deposits the specified amount of copper and status into house escrow
/// </summary>
/// <param name="coin">copper</param>
/// <param name="status">status</param>
/// <returns>call success</returns>
public void DepositIntoHouseEscrow(int coin, int status)
{
Trace.WriteLine(String.Format("Character:DepositIntoHouseEscrow({0}, {1})", coin.ToString(CultureInfo.InvariantCulture),
status.ToString(CultureInfo.InvariantCulture)));
ExecuteMethod("DepositIntoHouseEscrow", coin.ToString(CultureInfo.InvariantCulture),
status.ToString(CultureInfo.InvariantCulture));
}
/// <summary>
/// Rotates the character to face the supplied heading (0 to 360)
/// </summary>
/// <param name="heading"></param>
/// <returns>call success</returns>
public bool Face(float heading)
{
Trace.WriteLine(String.Format("Character:Face({0})", heading.ToString(CultureInfo.InvariantCulture)));
return this.ExecuteMethod("Face", heading.ToString(CultureInfo.InvariantCulture));
}
/// <summary>
/// Deposits the specified amount of silver in the designated guild bank
/// </summary>
/// <param name="bank">bank number (1-4)</param>
/// <param name="amount">amount to deposit in silver</param>
/// <returns>call success</returns>
public bool GuildBankDeposit(int bank, int amount)
{
Trace.WriteLine(String.Format("Character:GuildBankDeposit({0}, {1})", bank.ToString(CultureInfo.InvariantCulture),
amount.ToString(CultureInfo.InvariantCulture)));
return this.ExecuteMethod("GuildBankDeposit", bank.ToString(CultureInfo.InvariantCulture),
amount.ToString(CultureInfo.InvariantCulture));
}
/// <summary>
/// Withdraws the specified amount of silver from the designated guild bank
/// </summary>
/// <param name="bank">bank number (1-4)</param>
/// <param name="amount">amount to withdraw in silver</param>
/// <returns>call success</returns>
public bool GuildBankWithdraw(int bank, int amount)
{
Trace.WriteLine(String.Format("Character:GuildBankWithdraw({0}, {1})", bank.ToString(CultureInfo.InvariantCulture),
amount.ToString(CultureInfo.InvariantCulture)));
return this.ExecuteMethod("GuildBankWithdraw", bank.ToString(CultureInfo.InvariantCulture),
amount.ToString(CultureInfo.InvariantCulture));
}
/// <summary>
/// Initializes character effects
/// </summary>
/// <returns>call success</returns>
public bool InitializeEffects()
{
Trace.WriteLine(String.Format("Character:InitializeEffects()"));
return this.ExecuteMethod("InitializeEffects");
}
/// <summary>
/// Attempts to reset the time for the zone. This may require to have opened
/// the zone reuse window at least once in your current session before working
/// properly (use /togglezonereuse)
/// </summary>
/// <param name="name">zone name</param>
/// <returns>call success</returns>
public bool ResetZoneTimer(string name)
{
Trace.WriteLine(String.Format("Character:ResetZoneTimer({0})", name));
return this.ExecuteMethod("ResetZoneTimer", name);
}
/// <summary>
/// Deposits the amount of the coin type provided into the bank. Optional third parameter will
/// move the coin from the regular bank to the shared bank if true.
/// </summary>
/// <param name="type">coin type</param>
/// <param name="amount">coin amount</param>
/// <param name="useBank">use bank as source</param>
/// <returns></returns>
public bool SharedBankDeposit(CoinType type, int amount, bool useBank = false)
{
Trace.WriteLine(String.Format("Character:BankDeposit({0}, {1}, {2})", type,
amount.ToString(CultureInfo.InvariantCulture), useBank));
return !useBank ? this.ExecuteMethod("BankDeposit", type.ToString()[0].ToString(CultureInfo.InvariantCulture),
amount.ToString(CultureInfo.InvariantCulture)) : this.ExecuteMethod("BankDeposit",
type.ToString()[0].ToString(CultureInfo.InvariantCulture), amount.ToString(CultureInfo.InvariantCulture), "FromBank");
}
/// <summary>
/// Withdraws the specified coin type and amount from the shared bank.
/// </summary>
/// <param name="type">coin type</param>
/// <param name="amount">coin amount</param>
/// <returns>call success</returns>
public bool SharedBankWithdraw(CoinType type, int amount)
{
Trace.WriteLine(String.Format("Character:SharedBankWithdraw({0}, {1})", type,
amount.ToString(CultureInfo.InvariantCulture)));
return this.ExecuteMethod("SharedBankWithdraw", type.ToString()[0].ToString(CultureInfo.InvariantCulture),
amount.ToString(CultureInfo.InvariantCulture));
}
/// <summary>
/// Removes all coin from all vendors at once.
/// </summary>
/// <returns>call success</returns>
public bool TakeAllVendingCoin()
{
Trace.WriteLine(String.Format("Character:TakeAllVendingCoin()"));
return this.ExecuteMethod("TakeAllVendingCoin");
}
#endregion
#region Enums
/// <summary>
/// Effect Types
/// </summary>
public enum EffectType
{
/// <summary>
/// Beneficial
/// </summary>
Beneficial,
/// <summary>
/// Detrimental
/// </summary>
Detrimental,
/// <summary>
/// All
/// </summary>
All
}
/// <summary>
/// Coin Types
/// </summary>
public enum CoinType
{
/// <summary>
/// Coin Type Copper
/// </summary>
Copper,
/// <summary>
/// Coin Type Silver
/// </summary>
Silver,
/// <summary>
/// Coin Type Gold
/// </summary>
Gold,
/// <summary>
/// Coin Type Platinum
/// </summary>
Platinum
}
/// <summary>
/// Inventory Types
/// </summary>
public enum InvType
{
/// <summary>
/// Not in bank or shared bank
/// </summary>
NonBankOnly,
/// <summary>
/// Only in bank or shared bank
/// </summary>
BankOnly,
/// <summary>
/// All items
/// </summary>
All
}
#endregion
}
}