Scripts/Halion: refixed Twilight Cutter

Scripts/Garfrost: fixed forge jump
This commit is contained in:
joschiwald
2013-09-11 17:07:29 +02:00
parent 3420c70a47
commit 77f90c1c67
6 changed files with 22 additions and 26 deletions
+4 -1
View File
@@ -1026,8 +1026,11 @@ bool SpellInfo::NeedsToBeTriggeredByCaster(SpellInfo const* triggeringSpell) con
uint32 mask = 0;
for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
{
if (Effects[i].TargetA.GetTarget() != TARGET_UNIT_CASTER && Effects[i].TargetA.GetTarget() != TARGET_DEST_CASTER)
if (Effects[i].TargetA.GetTarget() != TARGET_UNIT_CASTER && Effects[i].TargetA.GetTarget() != TARGET_DEST_CASTER
&& Effects[i].TargetB.GetTarget() != TARGET_UNIT_CASTER && Effects[i].TargetB.GetTarget() != TARGET_DEST_CASTER)
{
mask |= Effects[i].GetProvidedTargetMask();
}
}
if (mask & TARGET_FLAG_UNIT_MASK)
@@ -1620,16 +1620,16 @@ class spell_halion_clear_debuffs : public SpellScriptLoader
class TwilightCutterSelector
{
public:
TwilightCutterSelector(Unit* caster, Unit* cutterCaster) : _caster(caster), _cutterCaster(cutterCaster) {}
TwilightCutterSelector(Unit* caster, Unit* target) : _caster(caster), _channelTarget(target) {}
bool operator()(WorldObject* unit)
{
return !unit->IsInBetween(_caster, _cutterCaster, 4.0f);
return !unit->IsInBetween(_caster, _channelTarget, 4.0f);
}
private:
Unit* _caster;
Unit* _cutterCaster;
Unit* _channelTarget;
};
class spell_halion_twilight_cutter : public SpellScriptLoader
@@ -1647,13 +1647,10 @@ class spell_halion_twilight_cutter : public SpellScriptLoader
return;
Unit* caster = GetCaster();
if (Aura* cutter = caster->GetAura(SPELL_TWILIGHT_CUTTER))
if (Unit* channelTarget = ObjectAccessor::GetUnit(*caster, caster->GetUInt64Value(UNIT_FIELD_CHANNEL_OBJECT)))
{
if (Unit* cutterCaster = cutter->GetCaster())
{
unitList.remove_if(TwilightCutterSelector(caster, cutterCaster));
return;
}
unitList.remove_if(TwilightCutterSelector(caster, channelTarget));
return;
}
// In case cutter caster werent found for some reason
@@ -69,8 +69,7 @@ enum Events
EVENT_CHILLING_WAVE = 2,
EVENT_DEEP_FREEZE = 3,
EVENT_FORGE_JUMP = 4,
EVENT_FORGING = 5,
EVENT_RESUME_ATTACK = 6
EVENT_RESUME_ATTACK = 5
};
Position const northForgePos = { 722.5643f, -234.1615f, 527.182f, 2.16421f };
@@ -210,9 +209,9 @@ class boss_garfrost : public CreatureScript
case EVENT_FORGE_JUMP:
me->AttackStop();
if (events.IsInPhase(PHASE_TWO))
me->GetMotionMaster()->MoveJump(northForgePos, 25.0f, 15.0f);
me->GetMotionMaster()->MoveJump(northForgePos, 25.0f, 15.0f, POINT_FORGE);
else if (events.IsInPhase(PHASE_THREE))
me->GetMotionMaster()->MoveJump(southForgePos, 25.0f, 15.0f);
me->GetMotionMaster()->MoveJump(southForgePos, 25.0f, 15.0f, POINT_FORGE);
break;
case EVENT_RESUME_ATTACK:
if (events.IsInPhase(PHASE_TWO))
@@ -15,11 +15,8 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef DEF_PIT_OF_SARON_H
#define DEF_PIT_OF_SARON_H
#include "Map.h"
#include "Creature.h"
#ifndef PIT_OF_SARON_H_
#define PIT_OF_SARON_H_
#define PoSScriptName "instance_pit_of_saron"
@@ -104,4 +101,4 @@ AI* GetPitOfSaronAI(Creature* creature)
return GetInstanceAI<AI>(creature, PoSScriptName);
}
#endif
#endif // PIT_OF_SARON_H_
@@ -21,10 +21,10 @@
DoorData const doorData[] =
{
{ GO_VOLKHAN_DOOR, DATA_VOLKHAN, DOOR_TYPE_PASSAGE, BOUNDARY_NONE },
{ GO_IONAR_DOOR, DATA_IONAR, DOOR_TYPE_PASSAGE, BOUNDARY_NONE },
{ GO_LOKEN_DOOR, DATA_LOKEN, DOOR_TYPE_PASSAGE, BOUNDARY_NONE },
{ 0, 0, DOOR_TYPE_ROOM, BOUNDARY_NONE } // END
{ GO_VOLKHAN_DOOR, DATA_VOLKHAN, DOOR_TYPE_PASSAGE, BOUNDARY_NONE },
{ GO_IONAR_DOOR, DATA_IONAR, DOOR_TYPE_PASSAGE, BOUNDARY_NONE },
{ GO_LOKEN_DOOR, DATA_LOKEN, DOOR_TYPE_PASSAGE, BOUNDARY_NONE },
{ 0, 0, DOOR_TYPE_ROOM, BOUNDARY_NONE } // END
};
class instance_halls_of_lightning : public InstanceMapScript
@@ -23,8 +23,8 @@
DoorData const doorData[] =
{
{ GO_SJONNIR_DOOR, DATA_BRANN_EVENT, DOOR_TYPE_PASSAGE, BOUNDARY_NONE },
{ 0, 0, DOOR_TYPE_ROOM, BOUNDARY_NONE } // END
{ GO_SJONNIR_DOOR, DATA_BRANN_EVENT, DOOR_TYPE_PASSAGE, BOUNDARY_NONE },
{ 0, 0, DOOR_TYPE_ROOM, BOUNDARY_NONE } // END
};
class instance_halls_of_stone : public InstanceMapScript