mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Scripts/Borean Tundra: Plug the Sinkholes (#24085)
* Scripts/Borean Tundra: Plug the Sinkholes
* Scripts/Borean Tundra: Improve SQL
* Scripts/Borean Tundra: Remove item script
* Rename 9999_99_99_99_world.sql to 2020_01_26_03_world.sql
Co-authored-by: Giacomo Pozzoni <giacomopoz@gmail.com>
(cherry picked from commit 552a638e31)
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
UPDATE `creature_template` SET `ScriptName`='',`AIName`='SmartAI' WHERE `entry` IN (26248,26249);
|
||||
UPDATE `creature_template` SET `unit_flags`=768 WHERE `entry`=26250;
|
||||
|
||||
DELETE FROM `item_script_names` WHERE `ScriptName`='item_incendiary_explosives';
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=17 AND `SourceEntry`=46797;
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(17,0,46797,0,0,29,0,26248,15,0,0,0,0,'','Spell \'Set Explosives Cart\' can be used within 15 yards of Northern Sinkhole'),
|
||||
(17,0,46797,0,1,29,0,26249,15,0,0,0,0,'','Spell \'Set Explosives Cart\' can be used within 15 yards of Southern Sinkhole');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` IN (26248,26249) AND `source_type`=0;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` IN (2624800,2624900) AND `source_type`=9;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(26248,0,0,0,8,0,100,0,46797,0,9000,9000,0,80,2624800,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Northern Sinkhole - On spellhit - Action list'),
|
||||
(2624800,9,0,0,0,0,100,0,0,0,0,0,0,33,26248,0,0,0,0,0,7,0,0,0,0,0,0,0,0,'Northern Sinkhole - Action list - Kill credit'),
|
||||
(2624800,9,1,0,0,0,100,0,0,0,0,0,0,11,46798,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Northern Sinkhole - Action list - Cast \'Summon Explosives Cart\''),
|
||||
(2624800,9,2,0,0,0,100,0,4000,4000,0,0,0,11,46799,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Northern Sinkhole - Action list - Cast \'Summon Explosives Cart - Fire\''),
|
||||
(2624800,9,3,0,0,0,100,0,1000,1000,0,0,0,9,0,0,0,0,0,0,20,188160,0,0,0,0,0,0,0,'Northern Sinkhole - Action list - Activate Explosives Cart - Fire'),
|
||||
(2624800,9,4,0,0,0,100,0,1000,1000,0,0,0,11,42445,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Northern Sinkhole - Action list - Cast \'Cannon Fire\''),
|
||||
(2624800,9,5,0,0,0,100,0,1000,1000,0,0,0,11,46225,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Northern Sinkhole - Action list - Cast \'Huge Explosion\''),
|
||||
(2624800,9,6,0,0,0,100,0,500,500,0,0,0,11,46800,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Northern Sinkhole - Action list - Cast \'Summon Scourged Burrower\''),
|
||||
(2624800,9,7,0,0,0,100,0,1000,1000,0,0,0,51,0,0,0,0,0,0,19,26250,3,0,0,0,0,0,0,'Northern Sinkhole - Action list - Kill Scourged Burrower'),
|
||||
(2624800,9,8,0,0,0,100,0,0,0,0,0,0,41,0,0,0,0,0,0,20,188160,0,0,0,0,0,0,0,'Northern Sinkhole - Action list - Despawn Explosives Cart - Fire'),
|
||||
|
||||
(26249,0,0,0,8,0,100,0,46797,0,9000,9000,0,80,2624900,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Southern Sinkhole - On spellhit - Action list'),
|
||||
(2624900,9,0,0,0,0,100,0,0,0,0,0,0,33,26249,0,0,0,0,0,7,0,0,0,0,0,0,0,0,'Southern Sinkhole - Action list - Kill credit'),
|
||||
(2624900,9,1,0,0,0,100,0,0,0,0,0,0,11,46798,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Southern Sinkhole - Action list - Cast \'Summon Explosives Cart\''),
|
||||
(2624900,9,2,0,0,0,100,0,4000,4000,0,0,0,11,46799,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Southern Sinkhole - Action list - Cast \'Summon Explosives Cart - Fire\''),
|
||||
(2624900,9,3,0,0,0,100,0,1000,1000,0,0,0,9,0,0,0,0,0,0,20,188160,0,0,0,0,0,0,0,'Southern Sinkhole - Action list - Activate Explosives Cart'),
|
||||
(2624900,9,4,0,0,0,100,0,1000,1000,0,0,0,11,42445,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Southern Sinkhole - Action list - Cast \'Cannon Fire\''),
|
||||
(2624900,9,5,0,0,0,100,0,1000,1000,0,0,0,11,46225,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Southern Sinkhole - Action list - Cast \'Huge Explosion\''),
|
||||
(2624900,9,6,0,0,0,100,0,500,500,0,0,0,11,46800,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Southern Sinkhole - Action list - Cast \'Summon Scourged Burrower\''),
|
||||
(2624900,9,7,0,0,0,100,0,1000,1000,0,0,0,51,0,0,0,0,0,0,19,26250,3,0,0,0,0,0,0,'Southern Sinkhole - Action list - Kill Scourged Burrower'),
|
||||
(2624900,9,8,0,0,0,100,0,0,0,0,0,0,41,0,0,0,0,0,0,20,188160,0,0,0,0,0,0,0,'Southern Sinkhole - Action list - Despawn Explosives Cart');
|
||||
@@ -33,136 +33,6 @@
|
||||
#include "TemporarySummon.h"
|
||||
#include "WorldSession.h"
|
||||
|
||||
/*######
|
||||
## npc_sinkhole_kill_credit
|
||||
######*/
|
||||
|
||||
enum Sinkhole
|
||||
{
|
||||
GO_EXPLOSIVES_CART = 188160,
|
||||
NPC_SCOURGED_BURROWER = 26250,
|
||||
QUEST_PLUG_THE_SINKHOLES = 11897,
|
||||
SPELL_SET_CART = 46797,
|
||||
SPELL_EXPLODE_CART = 46799,
|
||||
SPELL_SUMMON_CART = 46798,
|
||||
SPELL_SUMMON_WORM = 46800
|
||||
};
|
||||
|
||||
class npc_sinkhole_kill_credit : public CreatureScript
|
||||
{
|
||||
public:
|
||||
npc_sinkhole_kill_credit() : CreatureScript("npc_sinkhole_kill_credit") { }
|
||||
|
||||
struct npc_sinkhole_kill_creditAI : public ScriptedAI
|
||||
{
|
||||
npc_sinkhole_kill_creditAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
phaseTimer = 500;
|
||||
phase = 0;
|
||||
casterGuid.Clear();
|
||||
}
|
||||
|
||||
uint32 phaseTimer;
|
||||
uint8 phase;
|
||||
ObjectGuid casterGuid;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void SpellHit(Unit* caster, SpellInfo const* spell) override
|
||||
{
|
||||
if (phase || spell->Id != SPELL_SET_CART)
|
||||
return;
|
||||
|
||||
Player* player = caster->ToPlayer();
|
||||
if (player && player->GetQuestStatus(QUEST_PLUG_THE_SINKHOLES) == QUEST_STATUS_INCOMPLETE)
|
||||
{
|
||||
phase = 1;
|
||||
casterGuid = caster->GetGUID();
|
||||
}
|
||||
}
|
||||
|
||||
void JustEngagedWith(Unit* /*who*/) override { }
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (!phase)
|
||||
return;
|
||||
|
||||
if (phaseTimer <= diff)
|
||||
{
|
||||
switch (phase)
|
||||
{
|
||||
case 1:
|
||||
DoCast(me, SPELL_EXPLODE_CART, true);
|
||||
DoCast(me, SPELL_SUMMON_CART, true);
|
||||
if (GameObject* cart = me->FindNearestGameObject(GO_EXPLOSIVES_CART, 3.0f))
|
||||
cart->SetFaction(FACTION_MONSTER);
|
||||
phaseTimer = 3000;
|
||||
phase = 2;
|
||||
break;
|
||||
case 2:
|
||||
if (GameObject* cart = me->FindNearestGameObject(GO_EXPLOSIVES_CART, 3.0f))
|
||||
cart->UseDoorOrButton();
|
||||
DoCast(me, SPELL_EXPLODE_CART, true);
|
||||
phaseTimer = 3000;
|
||||
phase = 3;
|
||||
break;
|
||||
case 3:
|
||||
DoCast(me, SPELL_EXPLODE_CART, true);
|
||||
phaseTimer = 2000;
|
||||
phase = 5; // @fixme: phase 4 is missing...
|
||||
break;
|
||||
case 5:
|
||||
DoCast(me, SPELL_SUMMON_WORM, true);
|
||||
if (Unit* worm = me->FindNearestCreature(NPC_SCOURGED_BURROWER, 3.0f))
|
||||
{
|
||||
worm->AddUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
worm->HandleEmoteCommand(EMOTE_ONESHOT_EMERGE);
|
||||
}
|
||||
phaseTimer = 1000;
|
||||
phase = 6;
|
||||
break;
|
||||
case 6:
|
||||
DoCast(me, SPELL_EXPLODE_CART, true);
|
||||
if (Unit* worm = me->FindNearestCreature(NPC_SCOURGED_BURROWER, 3.0f))
|
||||
{
|
||||
Unit::Kill(me, worm);
|
||||
worm->RemoveDynamicFlag(UNIT_DYNFLAG_LOOTABLE);
|
||||
}
|
||||
phaseTimer = 2000;
|
||||
phase = 7;
|
||||
break;
|
||||
case 7:
|
||||
DoCast(me, SPELL_EXPLODE_CART, true);
|
||||
if (Player* caster = ObjectAccessor::GetPlayer(*me, casterGuid))
|
||||
caster->KilledMonster(me->GetCreatureTemplate(), me->GetGUID());
|
||||
phaseTimer = 5000;
|
||||
phase = 8;
|
||||
break;
|
||||
case 8:
|
||||
EnterEvadeMode();
|
||||
break;
|
||||
}
|
||||
} else phaseTimer -= diff;
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new npc_sinkhole_kill_creditAI(creature);
|
||||
}
|
||||
};
|
||||
|
||||
/*######
|
||||
## npc_khunok_the_behemoth
|
||||
######*/
|
||||
@@ -2470,7 +2340,6 @@ class spell_q11653_shortening_blaster : public SpellScript
|
||||
|
||||
void AddSC_borean_tundra()
|
||||
{
|
||||
new npc_sinkhole_kill_credit();
|
||||
new npc_khunok_the_behemoth();
|
||||
new npc_corastrasza();
|
||||
new npc_iruk();
|
||||
|
||||
@@ -128,27 +128,6 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
/*#####
|
||||
# item_incendiary_explosives
|
||||
#####*/
|
||||
|
||||
class item_incendiary_explosives : public ItemScript
|
||||
{
|
||||
public:
|
||||
item_incendiary_explosives() : ItemScript("item_incendiary_explosives") { }
|
||||
|
||||
bool OnUse(Player* player, Item* item, SpellCastTargets const& /*targets*/, ObjectGuid /*castId*/) override
|
||||
{
|
||||
if (player->FindNearestCreature(26248, 15) || player->FindNearestCreature(26249, 15))
|
||||
return false;
|
||||
else
|
||||
{
|
||||
player->SendEquipError(EQUIP_ERR_OUT_OF_RANGE, item, nullptr);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/*#####
|
||||
# item_mysterious_egg
|
||||
#####*/
|
||||
@@ -349,7 +328,6 @@ void AddSC_item_scripts()
|
||||
new item_only_for_flight();
|
||||
new item_nether_wraith_beacon();
|
||||
new item_gor_dreks_ointment();
|
||||
new item_incendiary_explosives();
|
||||
new item_mysterious_egg();
|
||||
new item_disgusting_jar();
|
||||
new item_petrov_cluster_bombs();
|
||||
|
||||
Reference in New Issue
Block a user