aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2023_04_06_03_world.sql5
-rw-r--r--src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp53
2 files changed, 24 insertions, 34 deletions
diff --git a/sql/updates/world/master/2023_04_06_03_world.sql b/sql/updates/world/master/2023_04_06_03_world.sql
new file mode 100644
index 00000000000..3174299d162
--- /dev/null
+++ b/sql/updates/world/master/2023_04_06_03_world.sql
@@ -0,0 +1,5 @@
+DELETE FROM `creature_template_sparring` WHERE `Entry` IN (44791, 44792, 44793);
+INSERT INTO `creature_template_sparring` (`Entry`, `NoNPCDamageBelowHealthPct`) VALUES
+(44791, 80),
+(44792, 80),
+(44793, 80);
diff --git a/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp b/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp
index 57736e31c01..a82cf68206c 100644
--- a/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp
+++ b/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp
@@ -310,8 +310,8 @@ enum QuestTheWarchiefCometh
EVENT_START_SCENE_COMETH = 1,
EVENT_SUMMON_PORTAL_COMETH = 2,
EVENT_SUMMON_GARROSH_COMETH = 3,
- EVENT_AGATHA_RAISE_FORSAKEN = 4, // Note: 4-8 are used
- EVENT_SCENE_TALK_COMETH = 9, // Note: 9-36 are used
+ EVENT_AGATHA_RAISE_FORSAKEN = 4, // Note: 4-8 are used.
+ EVENT_SCENE_TALK_COMETH = 9, // Note: 9-36 are used.
ACTION_START_SCENE_COMETH = 1,
@@ -1203,7 +1203,7 @@ struct npc_silverpine_deathstalker : public ScriptedAI
void JustAppeared() override
{
- // @TODO: figure out some common thing why powertype energy is used here
+ // @TODO: figure out a common system to allow energy usage without scripts.
me->SetPowerType(POWER_ENERGY);
me->SetMaxPower(POWER_ENERGY, 100);
me->SetPower(POWER_ENERGY, 100, true);
@@ -1235,13 +1235,6 @@ struct npc_silverpine_worgen_renegade : public ScriptedAI
me->SetReactState(REACT_AGGRESSIVE);
}
- void DamageTaken(Unit* attacker, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
- {
- // HACKFIX: sparring system is not implemented yet.
- if (!attacker->IsPlayer() && me->HealthBelowPctDamaged(80.0f, damage))
- damage = 0;
- }
-
void JustEngagedWith(Unit* /*who*/) override
{
_events.ScheduleEvent(EVENT_FLURRY_OF_CLAWS, 3s);
@@ -1316,19 +1309,9 @@ struct npc_silverpine_forsaken_trooper : public ScriptedAI
{
_events.Reset();
- // Note: these texts are not sent by summoned creatures from Lordaeron (questId 27098).
- if (!me->IsSummon())
- {
- if (urand(0, 1))
- Talk(TALK_TROOPER_RESET);
- }
- }
-
- void DamageTaken(Unit* attacker, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
- {
- // HACKFIX: sparring system is not implemented yet.
- if (!attacker->IsPlayer() && me->HealthBelowPctDamaged(80.0f, damage))
- damage = 0;
+ // Note: these texts are sent aswell during Lordaeron (questId 27098).
+ if (urand(0, 1))
+ Talk(TALK_TROOPER_RESET);
}
void JustEngagedWith(Unit* /*who*/) override
@@ -3551,7 +3534,7 @@ struct npc_silverpine_forest_ettin : public ScriptedAI
if (!spellInfo)
return;
- // Hackfix: according to BasePoints damage is around 90k, which is wrong. On retail, it deals 80% of its health points only.
+ // HACKFIX: according to BasePoints damage is around 90k, which is wrong. On retail, it deals 80% of its health points only.
// Also, Mutant Bush Chicken is summoned as not player-controlled (not blue-taped), though it uses the same summonProperties's
// Control and Slot as some other summoning spells from this zone.
if (spellInfo->Id == SPELL_BUSH_EXPLOSION)
@@ -3790,12 +3773,7 @@ struct npc_silverpine_webbed_victim : public ScriptedAI
if (Player* player = killer->ToPlayer())
{
if (player->GetQuestStatus(QUEST_LOST_IN_THE_DARKNESS) == QUEST_STATUS_INCOMPLETE)
- {
- if (roll_chance_i(50))
- player->CastSpell(me, SPELL_FREE_WEBBED_VICTIM, true);
- else
- player->CastSpell(me, SPELL_FREE_WEBBED_VICTIM_RANDOM, true);
- }
+ player->CastSpell(me, roll_chance_i(50) ? SPELL_FREE_WEBBED_VICTIM : SPELL_FREE_WEBBED_VICTIM_RANDOM, true);
}
}
};
@@ -4062,7 +4040,6 @@ struct npc_silverpine_skitterweb_matriarch : public ScriptedAI
case EVENT_RESET_POSITION:
me->SetFacingTo(0.820305f);
me->SetHomePosition(me->GetPosition());
-
me->SetAIAnimKitId(ANIMKIT_MATRIARCH_LURKING_ON_CEILING);
break;
@@ -4152,7 +4129,7 @@ enum AgathaFenrisIsle
SPELL_RIDE_REVERSE_CAST_NO_ESCAPE = 84109,
- EVENT_AGATHA_CHECK_PLAYER = 1,
+ EVENT_AGATHA_CHECK_PLAYER_HEALTH = 1,
EVENT_UNHOLY_SMITE = 2,
EVENT_DOOMHOWL = 3,
EVENT_FLEE_FROM_FENRIS = 4,
@@ -4187,7 +4164,7 @@ struct npc_silverpine_agatha_fenris_isle : public ScriptedAI
me->GetMotionMaster()->Clear();
me->GetMotionMaster()->MoveFollow(me->GetOwner(), 3.0f, float(M_PI / 2.0f));
- _events.ScheduleEvent(EVENT_AGATHA_CHECK_PLAYER, 1s);
+ _events.ScheduleEvent(EVENT_AGATHA_CHECK_PLAYER_HEALTH, 1s);
}
void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
@@ -4199,16 +4176,21 @@ struct npc_silverpine_agatha_fenris_isle : public ScriptedAI
switch (spellInfo->Id)
{
case SPELL_AGATHA_BROADCAST:
+ {
if (_isSceneStarted)
return;
+
if (Unit* summoner = tempSummon->GetSummonerUnit())
Talk(TALK_AGATHA_BROADCAST, summoner);
break;
+ }
case SPELL_GENERAL_TRIGGER_84114:
+ {
if (!_isSceneStarted)
SetEventNoEscape();
break;
+ }
case SPELL_GENERAL_TRIGGER_84107:
if (Unit* summoner = tempSummon->GetSummonerUnit())
@@ -4278,7 +4260,7 @@ struct npc_silverpine_agatha_fenris_isle : public ScriptedAI
{
switch (eventId)
{
- case EVENT_AGATHA_CHECK_PLAYER:
+ case EVENT_AGATHA_CHECK_PLAYER_HEALTH:
{
if (Unit* summoner = tempSummon->GetSummonerUnit())
{
@@ -4971,9 +4953,11 @@ struct npc_silverpine_fenris_keep_camera : public ScriptedAI
TempSummon* summon = me->ToTempSummon();
if (!summon)
return;
+
Unit* summoner = summon->GetSummonerUnit();
if (!summoner)
return;
+
_events.Update(diff);
while (uint32 eventId = _events.ExecuteEvent())
@@ -5084,6 +5068,7 @@ struct npc_silverpine_crowley_bloodfang_fenris_keep : public ScriptedAI
Unit* summoner = tempSummon->GetSummonerUnit();
if (!summoner)
return;
+
_events.Update(diff);
if (me->GetEntry() != NPC_CROWLEY_FENRIS)