Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitfe41744

Browse files
authored
Scripts: Update Azuregos to new model (#26392)
Co-authored-by: offl <offl@users.noreply.github.com>
1 parent07fe74b commitfe41744

File tree

1 file changed

+116
-138
lines changed

1 file changed

+116
-138
lines changed

‎src/server/scripts/Kalimdor/boss_azuregos.cpp‎

Lines changed: 116 additions & 138 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@
2121
#include"ScriptedCreature.h"
2222
#include"SpellScript.h"
2323

24-
enumSay
24+
enumAzuregosTexts
2525
{
2626
SAY_TELEPORT =0
2727
};
2828

29-
enumSpells
29+
enumAzuregosSpells
3030
{
3131
SPELL_MARK_OF_FROST =23182,
3232
SPELL_AURA_OF_FROST =23186,
@@ -39,7 +39,7 @@ enum Spells
3939
SPELL_ENRAGE =23537
4040
};
4141

42-
enumEvents
42+
enumAzuregosEvents
4343
{
4444
EVENT_MARK_OF_FROST =1,
4545
EVENT_MANA_STORM,
@@ -51,114 +51,103 @@ enum Events
5151
EVENT_ENRAGE
5252
};
5353

54-
classboss_azuregos :publicCreatureScript
54+
structboss_azuregos :publicWorldBossAI
5555
{
56-
public:
57-
boss_azuregos() : CreatureScript("boss_azuregos") { }
58-
59-
structboss_azuregosAI :publicWorldBossAI
56+
boss_azuregos(Creature* creature) : WorldBossAI(creature)
57+
{
58+
_enraged =false;
59+
}
60+
61+
voidReset()override
62+
{
63+
_Reset();
64+
}
65+
66+
voidJustEngagedWith(Unit*/*who*/)override
67+
{
68+
DoCast(me, SPELL_MARK_OF_FROST_AURA,true);
69+
_enraged =false;
70+
71+
events.ScheduleEvent(EVENT_MARK_OF_FROST, 35s);
72+
events.ScheduleEvent(EVENT_MANA_STORM, 5s, 17s);
73+
events.ScheduleEvent(EVENT_CHILL, 10s, 30s);
74+
events.ScheduleEvent(EVENT_BREATH, 2s, 8s);
75+
events.ScheduleEvent(EVENT_TELEPORT, 30s);
76+
events.ScheduleEvent(EVENT_REFLECT, 15s, 30s);
77+
events.ScheduleEvent(EVENT_CLEAVE, 7s);
78+
}
79+
80+
voidKilledUnit(Unit* who)override
81+
{
82+
if (who->GetTypeId() == TYPEID_PLAYER)
83+
who->CastSpell(who, SPELL_MARK_OF_FROST,true);
84+
}
85+
86+
voidUpdateAI(uint32 diff)override
87+
{
88+
if (!UpdateVictim())
89+
return;
90+
91+
events.Update(diff);
92+
93+
if (me->HasUnitState(UNIT_STATE_CASTING))
94+
return;
95+
96+
while (uint32 eventId = events.ExecuteEvent())
6097
{
61-
boss_azuregosAI(Creature* creature) : WorldBossAI(creature)
62-
{
63-
_enraged =false;
64-
}
65-
66-
voidReset()override
67-
{
68-
_Reset();
69-
}
70-
71-
voidJustEngagedWith(Unit*/*who*/)override
72-
{
73-
DoCast(me, SPELL_MARK_OF_FROST_AURA,true);
74-
_enraged =false;
75-
76-
events.ScheduleEvent(EVENT_MARK_OF_FROST, 35s);
77-
events.ScheduleEvent(EVENT_MANA_STORM, 5s, 17s);
78-
events.ScheduleEvent(EVENT_CHILL, 10s, 30s);
79-
events.ScheduleEvent(EVENT_BREATH, 2s, 8s);
80-
events.ScheduleEvent(EVENT_TELEPORT, 30s);
81-
events.ScheduleEvent(EVENT_REFLECT, 15s, 30s);
82-
events.ScheduleEvent(EVENT_CLEAVE, 7s);
83-
}
84-
85-
voidKilledUnit(Unit* who)override
98+
switch (eventId)
8699
{
87-
if (who->GetTypeId() == TYPEID_PLAYER)
88-
who->CastSpell(who, SPELL_MARK_OF_FROST,true);
89-
}
90-
91-
voidUpdateAI(uint32 diff)override
92-
{
93-
if (!UpdateVictim())
94-
return;
95-
96-
events.Update(diff);
97-
98-
if (me->HasUnitState(UNIT_STATE_CASTING))
99-
return;
100-
101-
while (uint32 eventId = events.ExecuteEvent())
100+
case EVENT_MANA_STORM:
101+
if (Unit* target =SelectTarget(SelectTargetMethod::Random,0,60.0f,true))
102+
DoCast(target, SPELL_MANA_STORM);
103+
events.ScheduleEvent(EVENT_MANA_STORM, 7500ms, 12500ms);
104+
break;
105+
case EVENT_CHILL:
106+
DoCastVictim(SPELL_CHILL);
107+
events.ScheduleEvent(EVENT_CHILL, 13s, 25s);
108+
break;
109+
case EVENT_BREATH:
110+
DoCastVictim(SPELL_FROST_BREATH);
111+
events.ScheduleEvent(EVENT_BREATH, 10s, 15s);
112+
break;
113+
case EVENT_TELEPORT:
102114
{
103-
switch (eventId)
104-
{
105-
case EVENT_MANA_STORM:
106-
if (Unit* target =SelectTarget(SelectTargetMethod::Random,0,60.0f,true))
107-
DoCast(target, SPELL_MANA_STORM);
108-
events.ScheduleEvent(EVENT_MANA_STORM, 7500ms, 12500ms);
109-
break;
110-
case EVENT_CHILL:
111-
DoCastVictim(SPELL_CHILL);
112-
events.ScheduleEvent(EVENT_CHILL, 13s, 25s);
113-
break;
114-
case EVENT_BREATH:
115-
DoCastVictim(SPELL_FROST_BREATH);
116-
events.ScheduleEvent(EVENT_BREATH, 10s, 15s);
117-
break;
118-
case EVENT_TELEPORT:
119-
{
120-
Talk(SAY_TELEPORT);
121-
for (autoconst& pair : me->GetCombatManager().GetPvECombatRefs())
122-
if (Player* player = pair.second->GetOther(me)->ToPlayer())
123-
DoTeleportPlayer(player, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ()+3, player->GetOrientation());
124-
125-
ResetThreatList();
126-
events.ScheduleEvent(EVENT_TELEPORT, 30s);
127-
break;
128-
}
129-
case EVENT_REFLECT:
130-
DoCast(me, SPELL_REFLECT);
131-
events.ScheduleEvent(EVENT_REFLECT, 20s, 35s);
132-
break;
133-
case EVENT_CLEAVE:
134-
DoCastVictim(SPELL_CLEAVE);
135-
events.ScheduleEvent(EVENT_CLEAVE, 7s);
136-
break;
137-
default:
138-
break;
139-
}
140-
141-
if (me->HasUnitState(UNIT_STATE_CASTING))
142-
return;
115+
Talk(SAY_TELEPORT);
116+
for (autoconst& pair : me->GetCombatManager().GetPvECombatRefs())
117+
if (Player* player = pair.second->GetOther(me)->ToPlayer())
118+
DoTeleportPlayer(player, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ()+3, player->GetOrientation());
119+
120+
ResetThreatList();
121+
events.ScheduleEvent(EVENT_TELEPORT, 30s);
122+
break;
143123
}
144-
145-
if (HealthBelowPct(26) && !_enraged)
146-
{
147-
DoCast(me, SPELL_ENRAGE);
148-
_enraged =true;
149-
}
150-
151-
DoMeleeAttackIfReady();
124+
case EVENT_REFLECT:
125+
DoCast(me, SPELL_REFLECT);
126+
events.ScheduleEvent(EVENT_REFLECT, 20s, 35s);
127+
break;
128+
case EVENT_CLEAVE:
129+
DoCastVictim(SPELL_CLEAVE);
130+
events.ScheduleEvent(EVENT_CLEAVE, 7s);
131+
break;
132+
default:
133+
break;
152134
}
153135

154-
private:
155-
bool _enraged;
156-
};
136+
if (me->HasUnitState(UNIT_STATE_CASTING))
137+
return;
138+
}
157139

158-
CreatureAI*GetAI(Creature* creature)constoverride
140+
if (HealthBelowPct(26) && !_enraged)
159141
{
160-
returnnewboss_azuregosAI(creature);
142+
DoCast(me, SPELL_ENRAGE);
143+
_enraged =true;
161144
}
145+
146+
DoMeleeAttackIfReady();
147+
}
148+
149+
private:
150+
bool _enraged;
162151
};
163152

164153
classMarkOfFrostTargetSelector
@@ -174,46 +163,35 @@ class MarkOfFrostTargetSelector
174163
}
175164
};
176165

177-
classspell_mark_of_frost :publicSpellScriptLoader
166+
classspell_mark_of_frost :publicSpellScript
178167
{
179-
public:
180-
spell_mark_of_frost() : SpellScriptLoader("spell_mark_of_frost") { }
181-
182-
classspell_mark_of_frost_SpellScript :publicSpellScript
183-
{
184-
PrepareSpellScript(spell_mark_of_frost_SpellScript);
185-
186-
boolValidate(SpellInfoconst*/*spellInfo*/)override
187-
{
188-
returnValidateSpellInfo({ SPELL_MARK_OF_FROST, SPELL_AURA_OF_FROST });
189-
}
190-
191-
voidFilterTargets(std::list<WorldObject*>& targets)
192-
{
193-
targets.remove_if(MarkOfFrostTargetSelector());
194-
}
195-
196-
voidHandleEffect(SpellEffIndex effIndex)
197-
{
198-
PreventHitDefaultEffect(effIndex);
199-
GetHitUnit()->CastSpell(GetHitUnit(), SPELL_AURA_OF_FROST,true);
200-
}
201-
202-
voidRegister()override
203-
{
204-
OnObjectAreaTargetSelect +=SpellObjectAreaTargetSelectFn(spell_mark_of_frost_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY);
205-
OnEffectHitTarget +=SpellEffectFn(spell_mark_of_frost_SpellScript::HandleEffect, EFFECT_0, SPELL_EFFECT_APPLY_AURA);
206-
}
207-
};
208-
209-
SpellScript*GetSpellScript()constoverride
210-
{
211-
returnnewspell_mark_of_frost_SpellScript();
212-
}
168+
PrepareSpellScript(spell_mark_of_frost);
169+
170+
boolValidate(SpellInfoconst*/*spellInfo*/)override
171+
{
172+
returnValidateSpellInfo({ SPELL_MARK_OF_FROST, SPELL_AURA_OF_FROST });
173+
}
174+
175+
voidFilterTargets(std::list<WorldObject*>& targets)
176+
{
177+
targets.remove_if(MarkOfFrostTargetSelector());
178+
}
179+
180+
voidHandleEffect(SpellEffIndex effIndex)
181+
{
182+
PreventHitDefaultEffect(effIndex);
183+
GetHitUnit()->CastSpell(GetHitUnit(), SPELL_AURA_OF_FROST,true);
184+
}
185+
186+
voidRegister()override
187+
{
188+
OnObjectAreaTargetSelect +=SpellObjectAreaTargetSelectFn(spell_mark_of_frost::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY);
189+
OnEffectHitTarget +=SpellEffectFn(spell_mark_of_frost::HandleEffect, EFFECT_0, SPELL_EFFECT_APPLY_AURA);
190+
}
213191
};
214192

215193
voidAddSC_boss_azuregos()
216194
{
217-
newboss_azuregos();
218-
newspell_mark_of_frost();
195+
RegisterCreatureAI(boss_azuregos);
196+
RegisterSpellScript(spell_mark_of_frost);
219197
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp