aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/scripts')
-rw-r--r--src/server/scripts/Commands/cs_npc.cpp3
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_vaelastrasz.cpp2
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp11
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp29
-rw-r--r--src/server/scripts/World/npcs_special.cpp2
5 files changed, 33 insertions, 14 deletions
diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp
index ed6e2014ead..86686a52ac2 100644
--- a/src/server/scripts/Commands/cs_npc.cpp
+++ b/src/server/scripts/Commands/cs_npc.cpp
@@ -290,9 +290,8 @@ public:
return false;
}
- creature->SetMaxHealth(100 + 30*lvl);
- creature->SetHealth(100 + 30*lvl);
creature->SetLevel(lvl);
+ creature->UpdateLevelDependantStats();
creature->SaveToDB();
return true;
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_vaelastrasz.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_vaelastrasz.cpp
index ee9e3cb1d07..48844dc0aa9 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_vaelastrasz.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_vaelastrasz.cpp
@@ -84,6 +84,7 @@ struct boss_vaelastrasz : public BossAI
{
_Reset();
+ me->SetSpawnHealth();
me->SetStandState(UNIT_STAND_STATE_DEAD);
Initialize();
}
@@ -93,7 +94,6 @@ struct boss_vaelastrasz : public BossAI
BossAI::JustEngagedWith(who);
DoCast(me, SPELL_ESSENCEOFTHERED);
- me->SetHealth(me->CountPctFromMaxHealth(30));
// now drop damage requirement to be able to take loot
me->ResetPlayerDamageReq();
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
index 3b9e0f2b8de..aa44e6bb7a7 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
@@ -275,19 +275,10 @@ struct boss_valithria_dreamwalker : public ScriptedAI
_done = false;
}
- void InitializeAI() override
- {
- if (CreatureData const* data = me->GetCreatureData())
- if (data->curhealth)
- _spawnHealth = data->curhealth;
-
- ScriptedAI::InitializeAI();
- }
-
void Reset() override
{
_events.Reset();
- me->SetHealth(_spawnHealth);
+ me->SetSpawnHealth();
me->SetReactState(REACT_PASSIVE);
me->LoadCreaturesAddon();
// immune to percent heals
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp
index ff12c258c5e..8486d30ca9a 100644
--- a/src/server/scripts/Spells/spell_generic.cpp
+++ b/src/server/scripts/Spells/spell_generic.cpp
@@ -5317,6 +5317,32 @@ class spell_gen_random_aggro_taunt : public SpellScript
}
};
+// 24931 - 100 Health
+// 24959 - 500 Health
+// 28838 - 1 Health
+// 43645 - 1 Health
+// 73342 - 1 Health
+// 86562 - 1 Health
+class spell_gen_set_health : public SpellScript
+{
+public:
+ spell_gen_set_health(uint64 health) : _health(health) { }
+
+ void HandleHit(SpellEffIndex /*effIndex*/)
+ {
+ if (GetHitUnit()->IsAlive() && _health > 0)
+ GetHitUnit()->SetHealth(_health);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_gen_set_health::HandleHit, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+
+private:
+ uint64 _health;
+};
+
void AddSC_generic_spell_scripts()
{
RegisterSpellScript(spell_gen_absorb0_hitlimit1);
@@ -5493,4 +5519,7 @@ void AddSC_generic_spell_scripts()
RegisterSpellScript(spell_gen_major_healing_cooldown_modifier);
RegisterSpellScript(spell_gen_major_healing_cooldown_modifier_aura);
RegisterSpellScript(spell_gen_random_aggro_taunt);
+ RegisterSpellScriptWithArgs(spell_gen_set_health, "spell_gen_set_health_1", 1);
+ RegisterSpellScriptWithArgs(spell_gen_set_health, "spell_gen_set_health_100", 100);
+ RegisterSpellScriptWithArgs(spell_gen_set_health, "spell_gen_set_health_500", 500);
}
diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp
index a3db8c19c6b..d2294bbd2b7 100644
--- a/src/server/scripts/World/npcs_special.cpp
+++ b/src/server/scripts/World/npcs_special.cpp
@@ -1005,7 +1005,7 @@ public:
me->SetStandState(UNIT_STAND_STATE_KNEEL);
// expect database to have RegenHealth=0
- me->SetHealth(me->CountPctFromMaxHealth(70));
+ me->SetSpawnHealth();
}
void JustEngagedWith(Unit* /*who*/) override { }