Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "x2_inc_switches"
- #include "nw_i0_generic"
- void main()
- {
- object oSelf = OBJECT_SELF;
- SetCreatureOverrideAIScriptFinished(OBJECT_SELF);
- if(__InCombatRound())
- return;
- ClearAllActions();
- object oEnemy = bkAcquireTarget();
- if (GetIsObjectValid(oEnemy))
- {
- __TurnCombatRoundOn(TRUE);
- if(TalentPersistentAbilities()) // * Will put up things like Auras quickly
- {
- __TurnCombatRoundOn(FALSE);
- return;
- }
- else if(TalentHealingSelf())
- {
- __TurnCombatRoundOn(FALSE);
- return;
- }
- else if(TalentHeal())
- {
- __TurnCombatRoundOn(FALSE);
- return;
- }
- if(GetHasSpell(SPELL_IMPLOSION) && d4() == 1)
- {
- ActionCastSpellAtObject(SPELL_IMPLOSION,oEnemy);
- }
- else if(GetHasSpell(SPELL_DESTRUCTION) && !GetIsImmune(oEnemy,IMMUNITY_TYPE_DEATH,OBJECT_SELF))
- {
- ActionCastSpellAtObject(SPELL_DESTRUCTION,oEnemy);
- }
- else if(GetHasSpell(SPELL_HARM) && !GetHasSpellEffect(SPELL_SHADOW_SHIELD,oEnemy) && !GetHasSpellEffect(SPELL_NEGATIVE_ENERGY_PROTECTION,oEnemy) && GetCurrentHitPoints(oEnemy) > GetMaxHitPoints(oEnemy)/2 && GetRacialType(oEnemy) != RACIAL_TYPE_UNDEAD)
- {
- ActionCastSpellAtObject(SPELL_HARM,oEnemy);
- }
- else if(GetHasSpell(SPELL_ENERGY_DRAIN) && !GetIsImmune(oEnemy,IMMUNITY_TYPE_NEGATIVE_LEVEL,OBJECT_SELF))
- {
- ActionCastSpellAtObject(SPELL_ENERGY_DRAIN,oEnemy);
- }
- else if(GetHasSpell(SPELL_WORD_OF_FAITH) && d4()==1)
- {
- ActionCastSpellAtObject(SPELL_WORD_OF_FAITH,oEnemy);
- }
- else if(GetHasSpell(SPELL_GREATER_DISPELLING) && (GetHasSpellEffect(SPELL_SPELL_MANTLE,oEnemy) || GetHasSpellEffect(SPELL_LESSER_SPELL_MANTLE,oEnemy) || GetHasSpellEffect(SPELL_GREATER_SPELL_MANTLE,oEnemy) || GetHasSpellEffect(SPELL_SPELL_RESISTANCE,oEnemy)))
- {
- ActionCastSpellAtObject(SPELL_GREATER_DISPELLING,oEnemy);
- }
- else if(GetHasSpell(SPELL_BLADE_BARRIER) && d4()==1)
- {
- ActionCastSpellAtObject(SPELL_BLADE_BARRIER,oEnemy);
- }
- else if(GetHasSpell(SPELL_FIRE_STORM) || GetHasSpell(SPELL_FLAME_STRIKE))
- {
- switch(d2())
- {
- case 1:
- if(GetHasSpell(SPELL_FIRE_STORM))
- {
- ActionCastSpellAtLocation(SPELL_FIRE_STORM,GetLocation(OBJECT_SELF));
- break;
- }
- case 2:
- if(GetHasSpell(SPELL_FLAME_STRIKE))
- {
- ActionCastSpellAtObject(SPELL_FLAME_STRIKE,oEnemy);
- break;
- }
- }
- }
- else//no offensive spells
- {
- if(GetHasSpell(SPELL_DIVINE_POWER))
- {
- ActionCastSpellAtObject(SPELL_DIVINE_POWER,OBJECT_SELF);
- }
- else if(GetHasSpell(SPELL_DIVINE_FAVOR))
- {
- ActionCastSpellAtObject(SPELL_DIVINE_FAVOR,OBJECT_SELF);
- }
- else
- {
- ActionAttack(oEnemy);
- }
- }
- __TurnCombatRoundOn(FALSE);
- }
- else
- {
- object oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_IS_PC,OBJECT_SELF,1,CREATURE_TYPE_IS_ALIVE,TRUE,CREATURE_TYPE_PERCEPTION,PERCEPTION_SEEN);
- if(GetIsObjectValid(oPC))
- {
- __TurnCombatRoundOn(TRUE);
- if(TalentHealingSelf())
- {
- __TurnCombatRoundOn(FALSE);
- return;
- }
- else if(TalentHeal())
- {
- __TurnCombatRoundOn(FALSE);
- return;
- }
- if(GetHasSpell(SPELL_IMPLOSION))
- {
- ActionCastSpellAtLocation(SPELL_IMPLOSION,GetLocation(oPC));
- __TurnCombatRoundOn(FALSE);
- return;
- }
- else if(GetHasSpell(SPELL_BLADE_BARRIER))
- {
- ActionCastSpellAtLocation(SPELL_BLADE_BARRIER,GetLocation(oPC));
- __TurnCombatRoundOn(FALSE);
- return;
- }
- else if(GetHasSpell(SPELL_FIRE_STORM))
- {
- ActionCastSpellAtLocation(SPELL_FIRE_STORM,GetLocation(OBJECT_SELF));
- __TurnCombatRoundOn(FALSE);
- return;
- }
- else if(GetHasSpell(SPELL_FLAME_STRIKE))
- {
- ActionCastSpellAtLocation(SPELL_FLAME_STRIKE,GetLocation(oPC));
- __TurnCombatRoundOn(FALSE);
- return;
- }
- else if(GetHasSpell(SPELL_GREATER_DISPELLING))
- {
- ActionCastSpellAtLocation(SPELL_GREATER_DISPELLING,GetLocation(oPC));
- __TurnCombatRoundOn(FALSE);
- return;
- }
- else if(GetHasSpell(SPELL_WORD_OF_FAITH))
- {
- ActionCastSpellAtLocation(SPELL_WORD_OF_FAITH,GetLocation(oPC));
- __TurnCombatRoundOn(FALSE);
- return;
- }
- __TurnCombatRoundOn(FALSE);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement