It seems something has gone very wrong with the .NET wrapper and I have no further recourse to finding the source of it. I can't call it out as a specific bug; it seems more systematic. Basically a lot of data that is exposed by the wrapper seems to disappear in place, especially after reviving or normal zoning. Most noticeably the Character.Ability( ) and Character.Group( ) tables go from returning valid data to returning blank or invalid data. I have pasted two exception stack traces below, the first thrown when accessing GroupMember.Trauma and the second when accessing Ability.Range (other properties from the same classes have triggered exceptions too from time to time). My code never threw these exceptions in mid-March when I last worked on it, before taking a hiatus until after Fan Faire.
Message: Input string was not in a correct format.
Void StringToNumber(System.String, System.Globalization.NumberStyles, NumberBuffer ByRef, System.Globalization.NumberFormatInfo, Boolean)
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
at System.String.System.IConvertible.ToInt32(IFormatProvider provider)
at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
at LavishScriptAPI.Conversion.LavishScriptTypes.As[T](Int32 objtoken, Int32 typetoken)
at LavishScriptAPI.LavishScriptObject.GetMember[T](String Member)
at EQ2.ISXEQ2.GroupMember.get_Trauma()
at EQ2GlassCannon.PlayerController.VitalStatus..ctor(GroupMember SourceInfo)
at EQ2GlassCannon.PlayerController.<EnumVitalStatuses>d__12.MoveNext()
at EQ2GlassCannon.MysticController.DoNextAction()
at EQ2GlassCannon.Program.Main()
Message: Input string was not in a correct format.
Void StringToNumber(System.String, System.Globalization.NumberStyles, NumberBuffer ByRef, System.Globalization.NumberFormatInfo, Boolean)
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseSingle(String value, NumberStyles options, NumberFormatInfo numfmt)
at System.Single.Parse(String s, NumberStyles style, NumberFormatInfo info)
at System.Convert.ToSingle(String value, IFormatProvider provider)
at System.String.System.IConvertible.ToSingle(IFormatProvider provider)
at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
at LavishScriptAPI.Conversion.LavishScriptTypes.As[T](Int32 objtoken, Int32 typetoken)
at LavishScriptAPI.LavishScriptObject.GetMember[T](String Member)
at EQ2.ISXEQ2.Ability.get_Range()
at EQ2GlassCannon.PlayerController.CastAbility(Int32 iAbilityID, String strPlayerTarget, Boolean bMustBeAlive)
at EQ2GlassCannon.EnchanterController.CheckManaFlow()
at EQ2GlassCannon.IllusionistController.DoNextAction()
at EQ2GlassCannon.Program.Main()
Message: Input string was not in a correct format.
Void StringToNumber(System.String, System.Globalization.NumberStyles, NumberBuffer ByRef, System.Globalization.NumberFormatInfo, Boolean)
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
at System.String.System.IConvertible.ToInt32(IFormatProvider provider)
at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
at LavishScriptAPI.Conversion.LavishScriptTypes.As[T](Int32 objtoken, Int32 typetoken)
at LavishScriptAPI.LavishScriptObject.GetMember[T](String Member)
at EQ2.ISXEQ2.GroupMember.get_Trauma()
at EQ2GlassCannon.PlayerController.VitalStatus..ctor(GroupMember SourceInfo)
at EQ2GlassCannon.PlayerController.<EnumVitalStatuses>d__12.MoveNext()
at EQ2GlassCannon.MysticController.DoNextAction()
at EQ2GlassCannon.Program.Main()
Message: Input string was not in a correct format.
Void StringToNumber(System.String, System.Globalization.NumberStyles, NumberBuffer ByRef, System.Globalization.NumberFormatInfo, Boolean)
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseSingle(String value, NumberStyles options, NumberFormatInfo numfmt)
at System.Single.Parse(String s, NumberStyles style, NumberFormatInfo info)
at System.Convert.ToSingle(String value, IFormatProvider provider)
at System.String.System.IConvertible.ToSingle(IFormatProvider provider)
at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
at LavishScriptAPI.Conversion.LavishScriptTypes.As[T](Int32 objtoken, Int32 typetoken)
at LavishScriptAPI.LavishScriptObject.GetMember[T](String Member)
at EQ2.ISXEQ2.Ability.get_Range()
at EQ2GlassCannon.PlayerController.CastAbility(Int32 iAbilityID, String strPlayerTarget, Boolean bMustBeAlive)
at EQ2GlassCannon.EnchanterController.CheckManaFlow()
at EQ2GlassCannon.IllusionistController.DoNextAction()
at EQ2GlassCannon.Program.Main()