diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 57530cad5..431fa857e 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -1243,14 +1243,46 @@ void Aura::TriggerSpell() // case 27819: break; // // Controller Timer // case 28095: break; -// // Stalagg Chain -// case 28096: break; -// // Stalagg Tesla Passive -// case 28097: break; -// // Feugen Tesla Passive -// case 28109: break; -// // Feugen Chain -// case 28111: break; + // Stalagg Chain and Feugen Chain + case 28096: + case 28111: + { + // X-Chain is casted by Tesla to X, so: caster == Tesla, target = X + Unit* pCaster = GetCaster(); + if (pCaster && pCaster->GetTypeId() == TYPEID_UNIT && !pCaster->IsWithinDistInMap(target, 60.0f)) + { + pCaster->InterruptNonMeleeSpells(true); + ((Creature*)pCaster)->SetInCombatWithZone(); + // Stalagg Tesla Passive or Feugen Tesla Passive + pCaster->CastSpell(pCaster, auraId == 28096 ? 28097 : 28109, true, NULL, NULL, target->GetObjectGuid()); + } + return; + } + // Stalagg Tesla Passive and Feugen Tesla Passive + case 28097: + case 28109: + { + // X-Tesla-Passive is casted by Tesla on Tesla with original caster X, so: caster = X, target = Tesla + Unit* pCaster = GetCaster(); + if (pCaster && pCaster->GetTypeId() == TYPEID_UNIT) + { + if (pCaster->getVictim() && !pCaster->IsWithinDistInMap(target, 60.0f)) + { + if (Unit* pTarget = ((Creature*)pCaster)->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0)) + target->CastSpell(pTarget, 28099, false);// Shock + } + else + { + // "Evade" + target->RemoveAurasDueToSpell(auraId); + target->DeleteThreatList(); + target->CombatStop(true); + // Recast chain (Stalagg Chain or Feugen Chain + target->CastSpell(pCaster, auraId == 28097 ? 28096 : 28111, false); + } + } + return; + } // // Mark of Didier // case 28114: break; // // Communique Timer, camp diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 4d97f814b..f57c65803 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "11749" + #define REVISION_NR "11750" #endif // __REVISION_NR_H__