88#define POS_Y_GATE -3360.78f
89#define POS_Y_WEST -3285.0f
90#define POS_Y_EAST -3434.0f
91#define POS_X_NORTH 2750.49f
92#define POS_X_SOUTH 2633.84f
94#define IN_LIVE_SIDE(who) (who->GetPositionY() < POS_Y_GATE)
112 {2669.7f, -3428.76f, 268.56f, 1.6f},
113 {2692.1f, -3428.76f, 268.56f, 1.6f},
114 {2714.4f, -3428.76f, 268.56f, 1.6f},
115 {2669.7f, -3431.67f, 268.56f, 1.6f},
116 {2692.1f, -3431.67f, 268.56f, 1.6f},
117 {2714.4f, -3431.67f, 268.56f, 1.6f},
122 {2725.1f, -3310.0f, 268.85f, 3.4f},
123 {2699.3f, -3322.8f, 268.60f, 3.3f},
124 {2733.1f, -3348.5f, 268.84f, 3.1f},
125 {2682.8f, -3304.2f, 268.85f, 3.9f},
126 {2664.8f, -3340.7f, 268.23f, 3.7f},
191 SF_LOG_ERROR(
"scripts",
"Script Gothik: cannot summon triggers!");
208 summon->setActive(
true);
212 summon->AI()->EnterEvadeMode();
216 summon->AI()->DoAction(0);
217 summon->AI()->DoZoneInCombat();
305 Map* map =
me->GetMap();
311 bool checklife =
false;
312 bool checkdead =
false;
315 if (i->GetSource() && i->GetSource()->IsAlive() &&
318 i->GetSource()->GetPositionY() <=
POS_Y_GATE &&
323 else if (i->GetSource() && i->GetSource()->IsAlive() &&
326 i->GetSource()->GetPositionY() >=
POS_Y_GATE &&
332 if (checklife && checkdead)
350 if (spellId &&
me->IsInCombat())
354 me->CastSpell(pRandomDeadTrigger, spellId,
true);
366 if (!
me->IsInCombat())
474 me->getThreatManager().addThreat(target, 100.0f);
529 if (
Unit* owner =
me->ToTempSummon()->GetSummoner())
544 Map* map =
me->GetMap();
552 if (i->GetSource() && i->GetSource()->IsAlive() &&
isOnSameSide(i->GetSource()))
561 me->GetMotionMaster()->MoveIdle();
@ DIFFICULTY_25MAN_NORMAL
@ DIFFICULTY_10MAN_NORMAL
#define SF_LOG_ERROR(filterType__,...)
@ EMOTE_ONESHOT_SPELL_CAST
@ TARGET_UNIT_SRC_AREA_ENEMY
#define SpellObjectAreaTargetSelectFn(F, I, N)
#define SF_UNARY_FUNCTION
float const PosPlatform[4]
float const PosGroundLiveSide[4]
const Position PosSummonLive[POS_LIVE]
@ SPELL_INFORM_LIVE_TRAINEE
@ SPELL_INFORM_LIVE_KNIGHT
@ SPELL_INFORM_DEAD_RIDER
@ SPELL_INFORM_LIVE_RIDER
@ SPELL_INFORM_DEAD_TRAINEE
@ SPELL_INFORM_DEAD_KNIGHT
float const PosGroundDeadSide[4]
#define IN_LIVE_SIDE(who)
const Position PosSummonDead[POS_DEAD]
InstanceScript *const instance
BossAI(Creature *creature, uint32 bossId)
void JustDied(Unit *killer) OVERRIDE
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Creature * DoSummon(uint32 entry, Position const &pos, uint32 despawnTime=30000, TempSummonType summonType=TempSummonType::TEMPSUMMON_CORPSE_TIMED_DESPAWN)
void Talk(uint8 id, WorldObject const *whisperTarget=NULL)
virtual void EnterEvadeMode()
CreatureScript(const char *name)
PlayerList const & GetPlayers() const
LinkedListHead::Iterator< MapReference const > const_iterator
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
SpellScriptLoader(const char *name)
void DoMeleeAttackIfReady()
Unit * SelectTarget(SelectAggroTarget targetType, uint32 position=0, float dist=0.0f, bool playerOnly=false, int32 aura=0)
void DoCastVictim(uint32 spellId, bool triggered=false)
virtual void AttackStart(Unit *)
static Creature * GetCreature(WorldObject &object, uint64 guid)
CreatureAI * GetAI(Creature *creature) const OVERRIDE
CreatureAI * GetAI(Creature *creature) const OVERRIDE
PrepareSpellScript(spell_gothik_shadow_bolt_volley_SpellScript)
void FilterTargets(std::list< WorldObject * > &targets)
SpellScript * GetSpellScript() const OVERRIDE
spell_gothik_shadow_bolt_volley()
NotOnSameSide(Unit *source)
bool operator()(Unit const *target)
DifficultyID GetDifficulty() const
void DoTeleportTo(float x, float y, float z, uint32 time=0)
bool HealthBelowPct(uint32 pct) const
const T & RAID_MODE(const T &normal10, const T &normal25) const
void AttackStart(Unit *) OVERRIDE
void SpellHit(Unit *, SpellInfo const *spell) OVERRIDE
bool CheckGroupSplitted()
std::vector< uint64 > DeadTriggerGUID
bool thirtyPercentReached
void EnterCombat(Unit *) OVERRIDE
void JustSummoned(Creature *summon) OVERRIDE
void DoGothikSummon(uint32 entry)
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
void DamageTaken(Unit *, uint32 &damage) OVERRIDE
std::vector< uint64 > LiveTriggerGUID
boss_gothikAI(Creature *creature)
std::vector< Creature * > TriggerVct
void SummonedCreatureDespawn(Creature *summon) OVERRIDE
void SpellHitTarget(Unit *target, SpellInfo const *spell) OVERRIDE
void KilledUnit(Unit *) OVERRIDE
void JustDied(Unit *) OVERRIDE
void DoAction(int32 param) OVERRIDE
void DamageTaken(Unit *attacker, uint32 &damage) OVERRIDE
void JustDied(Unit *) OVERRIDE
bool isOnSameSide(Unit const *who) const
npc_gothik_minionAI(Creature *creature)
void EnterEvadeMode() OVERRIDE
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================