mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-17 03:08:26 +00:00
Implemented SE_IllusionOther - Allows next Illusion buff (self only)
cast to be cast on target. (AA ProjectIllusion now uses this) Run required SLQ to update AA.
This commit is contained in:
@@ -454,12 +454,6 @@ void Client::HandleAAAction(aaID activate) {
|
||||
}
|
||||
break;
|
||||
|
||||
case aaActionProjectIllusion:
|
||||
EnableAAEffect(aaEffectProjectIllusion, 3600);
|
||||
Message(10, "The power of your next illusion spell will flow to your grouped target in your place.");
|
||||
break;
|
||||
|
||||
|
||||
case aaActionEscape:
|
||||
Escape();
|
||||
break;
|
||||
|
||||
@@ -50,7 +50,7 @@ typedef enum { //AA Effect IDs
|
||||
aaEffectFrostArrows,
|
||||
aaEffectWarcry,
|
||||
aaEffectLeechTouch,
|
||||
aaEffectProjectIllusion // seveian 2008-09-23
|
||||
aaEffectProjectIllusion // unused - Handled via spell effect
|
||||
} aaEffectType;
|
||||
|
||||
|
||||
|
||||
@@ -181,6 +181,7 @@ Mob::Mob(const char* in_name,
|
||||
has_shieldequiped = false;
|
||||
has_numhits = false;
|
||||
has_MGB = false;
|
||||
has_ProjectIllusion = false;
|
||||
|
||||
if(in_aa_title>0)
|
||||
aa_title = in_aa_title;
|
||||
|
||||
@@ -270,6 +270,8 @@ public:
|
||||
inline void Numhits(bool val) { has_numhits = val; }
|
||||
bool HasMGB() const { return has_MGB; }
|
||||
inline void SetMGB(bool val) { has_MGB = val; }
|
||||
bool HasProjectIllusion() const { return has_ProjectIllusion ; }
|
||||
inline void SetProjectIllusion(bool val) { has_ProjectIllusion = val; }
|
||||
void SpreadVirus(uint16 spell_id, uint16 casterID);
|
||||
bool IsNimbusEffectActive(uint32 nimbus_effect);
|
||||
void SetNimbusEffect(uint32 nimbus_effect);
|
||||
@@ -1100,6 +1102,7 @@ protected:
|
||||
bool has_shieldequiped;
|
||||
bool has_numhits;
|
||||
bool has_MGB;
|
||||
bool has_ProjectIllusion;
|
||||
|
||||
// Bind wound
|
||||
Timer bindwound_timer;
|
||||
|
||||
@@ -2717,6 +2717,12 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial)
|
||||
break;
|
||||
}
|
||||
|
||||
case SE_IllusionOther: {
|
||||
SetProjectIllusion(true);
|
||||
Message(10, "The power of your next illusion spell will flow to your grouped target in your place.");
|
||||
break;
|
||||
}
|
||||
|
||||
// Handled Elsewhere
|
||||
case SE_ImmuneFleeing:
|
||||
case SE_NegateSpellEffect:
|
||||
|
||||
+4
-4
@@ -1371,7 +1371,7 @@ bool Mob::DetermineSpellTargets(uint16 spell_id, Mob *&spell_target, Mob *&ae_ce
|
||||
&& IsClient()
|
||||
&& (IsGrouped() // still self only if not grouped
|
||||
|| IsRaidGrouped())
|
||||
&& CastToClient()->CheckAAEffect(aaEffectProjectIllusion)){
|
||||
&& (HasProjectIllusion())){
|
||||
mlog(AA__MESSAGE, "Project Illusion overwrote target caster: %s spell id: %d was ON", GetName(), spell_id);
|
||||
targetType = ST_GroupClientAndPet;
|
||||
}
|
||||
@@ -1853,7 +1853,7 @@ bool Mob::SpellFinished(uint16 spell_id, Mob *spell_target, uint16 slot, uint16
|
||||
range = GetActSpellRange(spell_id, range);
|
||||
if(IsPlayerIllusionSpell(spell_id)
|
||||
&& IsClient()
|
||||
&& CastToClient()->CheckAAEffect(aaEffectProjectIllusion)){
|
||||
&& (HasProjectIllusion())){
|
||||
range = 100;
|
||||
}
|
||||
if(spell_target != nullptr && spell_target != this) {
|
||||
@@ -1912,9 +1912,9 @@ bool Mob::SpellFinished(uint16 spell_id, Mob *spell_target, uint16 slot, uint16
|
||||
|
||||
if(IsPlayerIllusionSpell(spell_id)
|
||||
&& IsClient()
|
||||
&& CastToClient()->CheckAAEffect(aaEffectProjectIllusion)){
|
||||
&& (HasProjectIllusion())){
|
||||
mlog(AA__MESSAGE, "Effect Project Illusion for %s on spell id: %d was ON", GetName(), spell_id);
|
||||
CastToClient()->DisableAAEffect(aaEffectProjectIllusion);
|
||||
SetProjectIllusion(false);
|
||||
}
|
||||
else{
|
||||
mlog(AA__MESSAGE, "Effect Project Illusion for %s on spell id: %d was OFF", GetName(), spell_id);
|
||||
|
||||
Reference in New Issue
Block a user