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:
KayenEQ 2014-06-26 06:23:27 -04:00
parent ec35c0d933
commit 87e7b9c3f0
9 changed files with 27 additions and 12 deletions

View File

@ -7,6 +7,7 @@ Kayen: Updated SE_FadingMemories - Base value will be properly utilized to set %
Kayen: Implemented SE_StrikeThough (Was incorrectly defined as implemented previously) - Works same as item bonus.
Kayen: Update SE_Taunt - Limit value if present will now add instant hate.
Kayen: Implemented SE_MassGroupBuff - Allows next group buff cast to be a MGB (AA now uses this)
Kayen: Implemented SE_IllusionOther - Allows next Illusion buff (self only) cast to be cast on target. (AA now uses this)
Required SQL: utils/sql/git/required/2014_06_25_MGB_AA.sql

View File

@ -349,7 +349,7 @@ typedef enum {
#define SE_Taunt 199 // implemented - % chance to taunt the target
#define SE_ProcChance 200 // implemented
#define SE_RangedProc 201 // implemented
//#define SE_IllusionOther 202 // *not implemented as bonus(Project Illusion)
#define SE_IllusionOther 202 // implemented - Project Illusion
#define SE_MassGroupBuff 203 // implemented
#define SE_GroupFearImmunity 204 // *not implemented as bonus
#define SE_Rampage 205 // implemented

View File

@ -0,0 +1,10 @@
-- AA MGB update
UPDATE altadv_vars SET spellid = 5228 WHERE skill_id = 128;
UPDATE aa_actions SET spell_id = 5228, nonspell_action = 0 WHERE aaid = 128;
-- AA Project Illusion update
UPDATE altadv_vars SET spellid = 5227 WHERE skill_id = 643;
UPDATE aa_actions SET spell_id = 5227, nonspell_action = 0 WHERE aaid = 643;
-- spells_new update
ALTER TABLE `spells_new` CHANGE `field175` `numhits_type` INT(11) NOT NULL DEFAULT '0';

View File

@ -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;

View File

@ -50,7 +50,7 @@ typedef enum { //AA Effect IDs
aaEffectFrostArrows,
aaEffectWarcry,
aaEffectLeechTouch,
aaEffectProjectIllusion // seveian 2008-09-23
aaEffectProjectIllusion // unused - Handled via spell effect
} aaEffectType;

View File

@ -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;

View File

@ -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;

View File

@ -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:

View File

@ -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);