public Int32 GetIsTalentValid(NWTalent tTalent) { return ScriptHost.ExecuteActionService_359_1_GetIsTalentValid(tTalent); }
public Int32 GetIdFromTalent(NWTalent tTalent) { return ScriptHost.ExecuteActionService_363_1_GetIdFromTalent(tTalent); }
public void ActionUseTalentAtLocation(NWTalent tChosenTalent, NWLocation lTargetLocation) { ScriptHost.ExecuteActionService_310_2_ActionUseTalentAtLocation(tChosenTalent, lTargetLocation); }
public void ActionUseTalentOnObject(NWTalent tChosenTalent, UInt32 oTarget) { ScriptHost.ExecuteActionService_309_2_ActionUseTalentOnObject(tChosenTalent, oTarget); }
public Int32 GetCreatureHasTalent(NWTalent tTalent, UInt32 oCreature) { return ScriptHost.ExecuteActionService_306_2_GetCreatureHasTalent(tTalent, oCreature); }
/// <summary> /// This seeks a target for for large terrain-altering or wide effect spells meant to sway battles. It prioritizes distant and high-danger targets. /// </summary> /// <param name="Debuff">Provides the NWTalent for the buff to check against.</param> /// <returns>the object ID of the target, or OBJECT_INVALID on error.</returns> private uint _FindTargetForDebuff(NWTalent Debuff) { int SpellId = Script.GetIdFromTalent(Debuff); CreatureObject Target = Party.GetFarthest(this, Party.Enemies); if (Target != null && Script.GetHasSpellEffect(SpellId, Target.ObjectId) == CLRScriptBase.FALSE) { foreach (uint Collateral in Script.GetObjectsInShape(CLRScriptBase.SHAPE_SPHERE, CLRScriptBase.RADIUS_SIZE_MEDIUM, Script.GetLocation(Target.ObjectId), false, CLRScriptBase.OBJECT_TYPE_CREATURE, Script.Vector(0.0f, 0.0f, 0.0f))) { if (Script.GetReputation(ObjectId, Collateral) != CLRScriptBase.REPUTATION_TYPE_ENEMY) Target = null; } if(Target != null) return Target.ObjectId; } Target = Party.GetFarthest(this, Party.EnemySpellcasters); if (Target != null && Script.GetHasSpellEffect(SpellId, Target.ObjectId) == CLRScriptBase.FALSE) { foreach (uint Collateral in Script.GetObjectsInShape(CLRScriptBase.SHAPE_SPHERE, CLRScriptBase.RADIUS_SIZE_MEDIUM, Script.GetLocation(Target.ObjectId), false, CLRScriptBase.OBJECT_TYPE_CREATURE, Script.Vector(0.0f, 0.0f, 0.0f))) { if (Script.GetReputation(ObjectId, Collateral) != CLRScriptBase.REPUTATION_TYPE_ENEMY) Target = null; } if (Target != null) return Target.ObjectId; } Target = Party.GetFarthest(this, Party.EnemyHealers); if (Target != null && Script.GetHasSpellEffect(SpellId, Target.ObjectId) == CLRScriptBase.FALSE) { foreach (uint Collateral in Script.GetObjectsInShape(CLRScriptBase.SHAPE_SPHERE, CLRScriptBase.RADIUS_SIZE_MEDIUM, Script.GetLocation(Target.ObjectId), false, CLRScriptBase.OBJECT_TYPE_CREATURE, Script.Vector(0.0f, 0.0f, 0.0f))) { if (Script.GetReputation(ObjectId, Collateral) != CLRScriptBase.REPUTATION_TYPE_ENEMY) Target = null; } if (Target != null) return Target.ObjectId; } Target = Party.GetFarthest(this, Party.EnemySoftTargets); if (Target != null && Script.GetHasSpellEffect(SpellId, Target.ObjectId) == CLRScriptBase.FALSE) { foreach (uint Collateral in Script.GetObjectsInShape(CLRScriptBase.SHAPE_SPHERE, CLRScriptBase.RADIUS_SIZE_MEDIUM, Script.GetLocation(Target.ObjectId), false, CLRScriptBase.OBJECT_TYPE_CREATURE, Script.Vector(0.0f, 0.0f, 0.0f))) { if (Script.GetReputation(ObjectId, Collateral) != CLRScriptBase.REPUTATION_TYPE_ENEMY) Target = null; } if (Target != null) return Target.ObjectId; } foreach(CreatureObject SpellTarget in Party.EnemyHardTargets) { if (Script.GetHasSpellEffect(SpellId, SpellTarget.ObjectId) == CLRScriptBase.FALSE) { foreach (uint Collateral in Script.GetObjectsInShape(CLRScriptBase.SHAPE_SPHERE, CLRScriptBase.RADIUS_SIZE_MEDIUM, Script.GetLocation(Target.ObjectId), false, CLRScriptBase.OBJECT_TYPE_CREATURE, Script.Vector(0.0f, 0.0f, 0.0f))) { if (Script.GetReputation(ObjectId, Collateral) != CLRScriptBase.REPUTATION_TYPE_ENEMY) Target = null; } if (Target != null) return Target.ObjectId; } } return OBJECT_INVALID; }
/// <summary> /// This seeks a target for a buff talent, prioritizing on high-risk allies, but only selecting one who doesn't already have the effect. /// </summary> /// <param name="Buff">The talent to check</param> /// <returns>the object ID of a valid target, or OBJECT_INVALID on error</returns> private uint _FindTargetForBuff(NWTalent Buff) { int SpellId = Script.GetIdFromTalent(Buff); foreach (CreatureObject PartyMember in Party.PartyTanks) { if (Script.GetHasSpellEffect(SpellId, PartyMember.ObjectId) == CLRScriptBase.FALSE) return PartyMember.ObjectId; } foreach (CreatureObject PartyMember in Party.PartyShocks) { if (Script.GetHasSpellEffect(SpellId, PartyMember.ObjectId) == CLRScriptBase.FALSE) return PartyMember.ObjectId; } foreach (CreatureObject PartyMember in Party.PartySkrimishers) { if (Script.GetHasSpellEffect(SpellId, PartyMember.ObjectId) == CLRScriptBase.FALSE) return PartyMember.ObjectId; } foreach (CreatureObject PartyMember in Party.PartyFlanks) { if (Script.GetHasSpellEffect(SpellId, PartyMember.ObjectId) == CLRScriptBase.FALSE) return PartyMember.ObjectId; } foreach (CreatureObject PartyMember in Party.PartyAnimals) { if (Script.GetHasSpellEffect(SpellId, PartyMember.ObjectId) == CLRScriptBase.FALSE) return PartyMember.ObjectId; } foreach (CreatureObject PartyMember in Party.PartyMindless) { if (Script.GetHasSpellEffect(SpellId, PartyMember.ObjectId) == CLRScriptBase.FALSE) return PartyMember.ObjectId; } if (Script.GetHasSpellEffect(SpellId, ObjectId) == CLRScriptBase.FALSE) return ObjectId; return OBJECT_INVALID; }