diff options
-rw-r--r-- | sql/FULL/world_script_waypoints.sql | 46 | ||||
-rw-r--r-- | sql/FULL/world_scripts_full.sql | 5 | ||||
-rw-r--r-- | sql/updates/6213_world_scripts.sql | 49 | ||||
-rw-r--r-- | src/bindings/scripts/scripts/northrend/borean_tundra.cpp | 407 | ||||
-rw-r--r-- | src/bindings/scripts/scripts/world/item_scripts.cpp | 63 |
5 files changed, 566 insertions, 4 deletions
diff --git a/sql/FULL/world_script_waypoints.sql b/sql/FULL/world_script_waypoints.sql index 9b017e6b574..a839f97ebc7 100644 --- a/sql/FULL/world_script_waypoints.sql +++ b/sql/FULL/world_script_waypoints.sql @@ -1675,3 +1675,49 @@ INSERT INTO `script_waypoint` VALUES (23784, 21, 1608.51, -6175.83, 8.80075, 5, 'Apothecary Hanes'), (23784, 22, 1619.15, -6167.6, 9.39125, 5, 'Apothecary Hanes'), (23784, 23, 1634.05, -6153.81, 8.08527, 5, 'Apothecary Hanes'); + +DELETE FROM `script_waypoint` WHERE `entry`=25208; +INSERT INTO `script_waypoint` VALUES + (25208, 0, 4014.01, 6391.91, 29.9735, 17000, ''), + (25208, 1, 4029.05, 6374.1, 28.8288, 0, ''), + (25208, 2, 4039.11, 6370.05, 27.8701, 0, ''), + (25208, 3, 4052.24, 6364.92, 27.2941, 0, ''), + (25208, 4, 4058.31, 6357.79, 26.3543, 0, ''), + (25208, 5, 4062.46, 6346.26, 24.3838, 0, ''), + (25208, 6, 4063.82, 6334.14, 25.3818, 0, ''), + (25208, 7, 4062.66, 6319.39, 24.9775, 0, ''), + (25208, 8, 4061.14, 6307.67, 24.4034, 0, ''), + (25208, 9, 4059.64, 6301.33, 24.5615, 0, ''), + (25208, 10, 4066.46, 6292.12, 24.3167, 0, ''), + (25208, 11, 4078.37, 6280.88, 26.6926, 0, ''), + (25208, 12, 4087.03, 6281.33, 27.4604, 0, ''), + (25208, 13, 4097.8, 6282.47, 25.4414, 0, ''), + (25208, 14, 4107.07, 6279.26, 25.2578, 0, ''), + (25208, 15, 4114.68, 6279.78, 24.7762, 0, ''), + (25208, 16, 4122.9, 6280.34, 26.1671, 0, ''), + (25208, 17, 4127.69, 6280.67, 28.1951, 0, ''), + (25208, 18, 4134.75, 6282.09, 28.9761, 0, ''), + (25208, 19, 4141.62, 6281.92, 29.3518, 0, ''), + (25208, 20, 4152.14, 6281.43, 30.6951, 0, ''), + (25208, 21, 4159.63, 6282.6, 30.2401, 0, ''), + (25208, 22, 4169.82, 6289.25, 24.182, 0, ''), + (25208, 23, 4181.02, 6293.88, 18.035, 0, ''), + (25208, 24, 4189.27, 6295.87, 14.4513, 0, ''), + (25208, 25, 4200.09, 6298.4, 12.7249, 0, ''), + (25208, 26, 4206.46, 6291.56, 10.9628, 0, ''), + (25208, 27, 4211.45, 6282.82, 9.05693, 0, ''), + (25208, 28, 4215.22, 6277.25, 8.54002, 0, ''), + (25208, 29, 4215.28, 6268.57, 8.30674, 0, ''), + (25208, 30, 4224.23, 6269.53, 6.97205, 0, ''), + (25208, 31, 4235.98, 6270.9, 3.27214, 0, ''), + (25208, 32, 4242.67, 6269.45, 1.45579, 0, ''), + (25208, 33, 4250.43, 6262.49, 0.611961, 0, ''), + (25208, 34, 4259.07, 6253.33, -0.0686721, 0, ''), + (25208, 35, 4261.11, 6248.81, -0.112029, 0, ''), + (25208, 36, 4257.58, 6234.09, -0.094803, 0, ''), + (25208, 37, 4252.62, 6224.3, -0.154816, 0, ''), + (25208, 38, 4247.92, 6214.75, -0.221144, 0, ''), + (25208, 39, 4254.04, 6205.58, -0.186623, 0, ''), + (25208, 40, 4262.6, 6194.47, -0.145114, 0, ''), + (25208, 41, 4268.96, 6189.47, 0.0303093, 21000, ''); + diff --git a/sql/FULL/world_scripts_full.sql b/sql/FULL/world_scripts_full.sql index 5b78e2672fe..df559456193 100644 --- a/sql/FULL/world_scripts_full.sql +++ b/sql/FULL/world_scripts_full.sql @@ -362,6 +362,11 @@ UPDATE `creature_template` SET `ScriptName`='npc_loklira_crone' WHERE `entry`=29 UPDATE `creature_template` SET `ScriptName`='npc_victorious_challenger' WHERE `entry`=30012; UPDATE `creature_template` SET `ScriptName`='npc_mcgoyver' WHERE `entry`=24040; UPDATE `creature_template` SET `ScriptName`='npc_jenny' WHERE `entry`=25969; +UPDATE `creature_template` SET `ScriptName`='npc_lurgglbr' WHERE `entry`=25208; +UPDATE `creature_template` SET `ScriptName`='npc_nexus_drake_hatchling' WHERE `entry`=26127; +UPDATE `creature_template` SET `ScriptName`='npc_nesingwary_trapper' WHERE `entry`=25835; +UPDATE `item_template` SET `ScriptName`='item_pile_fake_furs' WHERE `entry`=35127; + /* BURNING STEPPES */ UPDATE `creature_template` SET `ScriptName`='npc_ragged_john' WHERE `entry`=9563; diff --git a/sql/updates/6213_world_scripts.sql b/sql/updates/6213_world_scripts.sql new file mode 100644 index 00000000000..8a34414f200 --- /dev/null +++ b/sql/updates/6213_world_scripts.sql @@ -0,0 +1,49 @@ +UPDATE `creature_template` SET `ScriptName`='npc_lurgglbr' WHERE `entry`=25208; +UPDATE `creature_template` SET `ScriptName`='npc_nexus_drake_hatchling' WHERE `entry`=26127; +UPDATE `creature_template` SET `ScriptName`='npc_nesingwary_trapper' WHERE `entry`=25835; +UPDATE `item_template` SET `ScriptName`='item_pile_fake_furs' WHERE `entry`=35127; + +DELETE FROM `script_waypoint` WHERE `entry`=25208; +INSERT INTO `script_waypoint` VALUES + (25208, 0, 4014.01, 6391.91, 29.9735, 17000, ''), + (25208, 1, 4029.05, 6374.1, 28.8288, 0, ''), + (25208, 2, 4039.11, 6370.05, 27.8701, 0, ''), + (25208, 3, 4052.24, 6364.92, 27.2941, 0, ''), + (25208, 4, 4058.31, 6357.79, 26.3543, 0, ''), + (25208, 5, 4062.46, 6346.26, 24.3838, 0, ''), + (25208, 6, 4063.82, 6334.14, 25.3818, 0, ''), + (25208, 7, 4062.66, 6319.39, 24.9775, 0, ''), + (25208, 8, 4061.14, 6307.67, 24.4034, 0, ''), + (25208, 9, 4059.64, 6301.33, 24.5615, 0, ''), + (25208, 10, 4066.46, 6292.12, 24.3167, 0, ''), + (25208, 11, 4078.37, 6280.88, 26.6926, 0, ''), + (25208, 12, 4087.03, 6281.33, 27.4604, 0, ''), + (25208, 13, 4097.8, 6282.47, 25.4414, 0, ''), + (25208, 14, 4107.07, 6279.26, 25.2578, 0, ''), + (25208, 15, 4114.68, 6279.78, 24.7762, 0, ''), + (25208, 16, 4122.9, 6280.34, 26.1671, 0, ''), + (25208, 17, 4127.69, 6280.67, 28.1951, 0, ''), + (25208, 18, 4134.75, 6282.09, 28.9761, 0, ''), + (25208, 19, 4141.62, 6281.92, 29.3518, 0, ''), + (25208, 20, 4152.14, 6281.43, 30.6951, 0, ''), + (25208, 21, 4159.63, 6282.6, 30.2401, 0, ''), + (25208, 22, 4169.82, 6289.25, 24.182, 0, ''), + (25208, 23, 4181.02, 6293.88, 18.035, 0, ''), + (25208, 24, 4189.27, 6295.87, 14.4513, 0, ''), + (25208, 25, 4200.09, 6298.4, 12.7249, 0, ''), + (25208, 26, 4206.46, 6291.56, 10.9628, 0, ''), + (25208, 27, 4211.45, 6282.82, 9.05693, 0, ''), + (25208, 28, 4215.22, 6277.25, 8.54002, 0, ''), + (25208, 29, 4215.28, 6268.57, 8.30674, 0, ''), + (25208, 30, 4224.23, 6269.53, 6.97205, 0, ''), + (25208, 31, 4235.98, 6270.9, 3.27214, 0, ''), + (25208, 32, 4242.67, 6269.45, 1.45579, 0, ''), + (25208, 33, 4250.43, 6262.49, 0.611961, 0, ''), + (25208, 34, 4259.07, 6253.33, -0.0686721, 0, ''), + (25208, 35, 4261.11, 6248.81, -0.112029, 0, ''), + (25208, 36, 4257.58, 6234.09, -0.094803, 0, ''), + (25208, 37, 4252.62, 6224.3, -0.154816, 0, ''), + (25208, 38, 4247.92, 6214.75, -0.221144, 0, ''), + (25208, 39, 4254.04, 6205.58, -0.186623, 0, ''), + (25208, 40, 4262.6, 6194.47, -0.145114, 0, ''), + (25208, 41, 4268.96, 6189.47, 0.0303093, 21000, ''); diff --git a/src/bindings/scripts/scripts/northrend/borean_tundra.cpp b/src/bindings/scripts/scripts/northrend/borean_tundra.cpp index 3fd135035da..7b21ecc67d4 100644 --- a/src/bindings/scripts/scripts/northrend/borean_tundra.cpp +++ b/src/bindings/scripts/scripts/northrend/borean_tundra.cpp @@ -27,9 +27,20 @@ npc_surristrasz npc_tiare npc_iruk npc_corastrasza +npc_jenny +npc_sinkhole_kill_credit +npc_khunok_the_behemoth +npc_scourge_prisoner +mob_nerubar_victim +npc_keristrasza +npc_nesingwary_trapper +npc_lurgglbr +npc_nexus_drake_hatchling EndContentData */ #include "precompiled.h" +#include "escort_ai.h" +#include "follower_ai.h" /*###### ## npc_fizzcrank_fullthrottle @@ -521,10 +532,7 @@ enum eJenny SPELL_GIVE_JENNY_CREDIT = 46358, SPELL_CRATES_CARRIED = 46340, - SPELL_DROP_CRATE = 46342, - - FACTION_ESCORT_A_NEUTRAL_ACTIVE = 231, - FACTION_ESCORT_H_NEUTRAL_ACTIVE = 232 + SPELL_DROP_CRATE = 46342 }; struct TRINITY_DLL_DECL npc_jennyAI : public ScriptedAI @@ -587,6 +595,380 @@ CreatureAI* GetAI_npc_jenny(Creature *pCreature) return new npc_jennyAI (pCreature); } +/*###### +## npc_npc_nesingwary_trapper +######*/ + +enum eNesingwaryTrapper +{ + GO_HIGH_QUALITY_FUR = 187983, + + GO_CARIBOU_TRAP_1 = 187982, + GO_CARIBOU_TRAP_2 = 187995, + GO_CARIBOU_TRAP_3 = 187996, + GO_CARIBOU_TRAP_4 = 187997, + GO_CARIBOU_TRAP_5 = 187998, + GO_CARIBOU_TRAP_6 = 187999, + GO_CARIBOU_TRAP_7 = 188000, + GO_CARIBOU_TRAP_8 = 188001, + GO_CARIBOU_TRAP_9 = 188002, + GO_CARIBOU_TRAP_10 = 188003, + GO_CARIBOU_TRAP_11 = 188004, + GO_CARIBOU_TRAP_12 = 188005, + GO_CARIBOU_TRAP_13 = 188006, + GO_CARIBOU_TRAP_14 = 188007, + GO_CARIBOU_TRAP_15 = 188008, + + SPELL_TRAPPED = 46104, +}; + +//#define SAY_NESINGWARY_1 -1571008 + +struct TRINITY_DLL_DECL npc_nesingwary_trapperAI : public ScriptedAI +{ + npc_nesingwary_trapperAI(Creature *c) : ScriptedAI(c) {m_creature->SetVisibility(VISIBILITY_OFF);} + + GameObject* go_caribou; + uint8 Phase; + uint32 Phase_Timer; + + void Reset() + { + m_creature->SetVisibility(VISIBILITY_OFF); + Phase_Timer = 2500; + Phase = 1; + } + void EnterCombat(Unit *who) {} + void MoveInLineOfSight(Unit *who) {} + + void JustDied(Unit* who) + { + go_caribou->SetLootState(GO_JUST_DEACTIVATED); + + TempSummon *summon = (TempSummon*)m_creature; + ((Player*)(summon->GetSummoner()))->KilledMonsterCredit(m_creature->GetEntry(),0); + + go_caribou->SetGoState(GO_STATE_READY); + } + + void UpdateAI(const uint32 diff) + { + if (Phase_Timer < diff) + { + switch (Phase) + { + case 1: + m_creature->SetVisibility(VISIBILITY_ON); + + Phase_Timer = 2000; + Phase = 2; + break; + + case 2: + if (GameObject* go_fur = m_creature->FindNearestGameObject(GO_HIGH_QUALITY_FUR,11.0f)) + m_creature->GetMotionMaster()->MovePoint(0,go_fur->GetPositionX(),go_fur->GetPositionY(),go_fur->GetPositionZ()); + Phase_Timer = 1500; + Phase = 3; + break; + + case 3: + //DoScriptText(SAY_NESINGWARY_1, m_creature); + + Phase_Timer = 2000; + Phase = 4; + break; + + case 4: + m_creature->HandleEmoteCommand(EMOTE_ONESHOT_LOOT); + + Phase_Timer = 1000; + Phase = 5; + break; + + case 5: + m_creature->HandleEmoteCommand(EMOTE_ONESHOT_NONE); + + Phase_Timer = 500; + Phase = 6; + break; + + case 6: + if (GameObject* go_fur = m_creature->FindNearestGameObject(GO_HIGH_QUALITY_FUR,11.0f)) + go_fur->Delete(); + + Phase_Timer = 500; + Phase = 7; + break; + + case 7: + if ((go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_1, 5.0f)) || + (go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_2, 5.0f)) || + (go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_3, 5.0f)) || + (go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_4, 5.0f)) || + (go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_5, 5.0f)) || + (go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_6, 5.0f)) || + (go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_7, 5.0f)) || + (go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_8, 5.0f)) || + (go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_9, 5.0f)) || + (go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_10, 5.0f)) || + (go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_11, 5.0f)) || + (go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_12, 5.0f)) || + (go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_13, 5.0f)) || + (go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_14, 5.0f)) || + (go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_15, 5.0f))) + + go_caribou->SetGoState(GO_STATE_ACTIVE); + + Phase = 8; + Phase_Timer = 1000; + break; + + case 8: + m_creature->CastSpell(m_creature,SPELL_TRAPPED,true); + Phase = 0; + break; + } + } else Phase_Timer -= diff; + } +}; + +CreatureAI* GetAI_npc_nesingwary_trapper(Creature *pCreature) +{ + return new npc_nesingwary_trapperAI (pCreature); +} + +/*###### +## npc_lurgglbr +######*/ + +enum eLurgglbr +{ + QUEST_ESCAPE_WINTERFIN_CAVERNS = 11570, + + GO_CAGE = 187369, + + FACTION_ESCORTEE_A = 774, + FACTION_ESCORTEE_H = 775, +}; + +#define SAY_WP_1_LUR_START -1571004 +#define SAY_WP_1_LUR_END -1571005 +#define SAY_WP_41_LUR_START -1571006 +#define SAY_WP_41_LUR_END -1571007 + +struct TRINITY_DLL_DECL npc_lurgglbrAI : public npc_escortAI +{ + npc_lurgglbrAI(Creature* c) : npc_escortAI(c){} + + uint32 IntroTimer; + uint32 IntroPhase; + + void Reset() + { + IntroTimer = 0; + IntroPhase = 0; + } + + void WaypointReached(uint32 i) + { + switch(i) + { + case 0: + IntroPhase = 1; + IntroTimer = 2000; + break; + case 41: + IntroPhase = 4; + IntroTimer = 2000; + break; + } + } + + void UpdateAI(const uint32 diff) + { + if (IntroPhase) + { + if (IntroTimer < diff) + { + switch(IntroPhase) + { + case 1: + //DoScriptText(SAY_WP_1_LUR_START,m_creature); + + IntroPhase = 2; + IntroTimer = 7500; + break; + + case 2: + //DoScriptText(SAY_WP_1_LUR_END,m_creature); + + IntroPhase = 3; + IntroTimer = 7500; + break; + case 3: + m_creature->SetReactState(REACT_AGGRESSIVE); + + IntroPhase = 0; + IntroTimer = 0; + break; + + case 4: + //DoScriptText(SAY_WP_41_LUR_START,m_creature); + + IntroPhase = 5; + IntroTimer = 8000; + break; + case 5: + //DoScriptText(SAY_WP_41_LUR_END,m_creature); + + IntroPhase = 6; + IntroTimer = 2500; + break; + + case 6: + if (Player* pPlayer = GetPlayerForEscort()) + pPlayer->AreaExploredOrEventHappens(QUEST_ESCAPE_WINTERFIN_CAVERNS); + + IntroPhase = 7; + IntroTimer = 2500; + break; + + case 7: + m_creature->ForcedDespawn(); + + IntroPhase = 0; + IntroTimer = 0; + break; + } + }else IntroTimer-=diff; + } + npc_escortAI::UpdateAI(diff); + } +}; + +CreatureAI* GetAI_npc_lurgglbr(Creature* pCreature) +{ + return new npc_lurgglbrAI(pCreature); +} + +bool QuestAccept_npc_lurgglbr(Player* pPlayer, Creature* pCreature, Quest const *_Quest) +{ + if (_Quest->GetQuestId() == QUEST_ESCAPE_WINTERFIN_CAVERNS) + { + if(GameObject* pGo = pCreature->FindNearestGameObject(GO_CAGE,5.0f)) + { + pGo->SetRespawnTime(0); + pGo->SetGoType(GAMEOBJECT_TYPE_BUTTON); + pGo->UseDoorOrButton(20); + } + + if (npc_escortAI* pEscortAI = CAST_AI(npc_lurgglbrAI, pCreature->AI())) + pEscortAI->Start(true, false, pPlayer->GetGUID()); + + if (pPlayer->GetTeam() == ALLIANCE) + pCreature->setFaction(FACTION_ESCORTEE_A); + + if (pPlayer->GetTeam() == HORDE) + pCreature->setFaction(FACTION_ESCORTEE_H); + + return true; + } + return false; +} + +/*###### +## npc_nexus_drake_hatchling +######*/ + +enum eNexusDrakeHatchling +{ + SPELL_DRAKE_HARPOON = 46607, + SPELL_RED_DRAGONBLOOD = 46620, + SPELL_DRAKE_HATCHLING_SUBDUED = 46691, + SPELL_SUBDUED = 46675, + + NPC_RAELORASZ = 26117, + + QUEST_DRAKE_HUNT = 11919, + QUEST_DRAKE_HUNT_D = 11940 +}; + +struct TRINITY_DLL_DECL npc_nexus_drake_hatchlingAI : public FollowerAI //The spell who makes the npc follow the player is missing, also we can use FollowerAI! +{ + npc_nexus_drake_hatchlingAI(Creature *c) : FollowerAI(c) {Reset();} + + bool WithRedDragonBlood; + + Unit* pPlayer; + + void Reset() + { + WithRedDragonBlood = false; + } + + void EnterCombat(Unit* pWho) + { + if (m_creature->canAttack(pWho)) + m_creature->AI()->AttackStart(pWho); + } + + void SpellHit(Unit *caster, const SpellEntry *spell) + { + if (spell->Id == SPELL_DRAKE_HARPOON) + { + pPlayer = caster; + + m_creature->CastSpell(m_creature,SPELL_RED_DRAGONBLOOD,true); + + WithRedDragonBlood = true; + } + } + + void MoveInLineOfSight(Unit *pWho) + { + FollowerAI::MoveInLineOfSight(pWho); + + if (m_creature->HasAura(SPELL_SUBDUED) && pWho->GetEntry() == NPC_RAELORASZ) + { + if (m_creature->IsWithinDistInMap(pWho, INTERACTION_DISTANCE)) + { + ((Player*)(pPlayer))->KilledMonsterCredit(26175,0); + ((Player*)(pPlayer))->RemoveAura(SPELL_DRAKE_HATCHLING_SUBDUED); + SetFollowComplete(); + m_creature->DisappearAndDie(); + } + } + } + + void UpdateAI(const uint32 diff) + { + if (WithRedDragonBlood && !m_creature->HasAura(SPELL_RED_DRAGONBLOOD)) + { + if (npc_nexus_drake_hatchlingAI* pDrakeAI = CAST_AI(npc_nexus_drake_hatchlingAI, m_creature->AI())) + { + EnterEvadeMode(); + pDrakeAI->StartFollow((Player*)(pPlayer), 35, NULL); + } + + m_creature->CastSpell(m_creature,SPELL_SUBDUED,true); + ((Player*)(pPlayer))->CastSpell((Player*)(pPlayer),SPELL_DRAKE_HATCHLING_SUBDUED,true); + + m_creature->AttackStop(); + WithRedDragonBlood = false; + } + + if (!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); + } +}; + +CreatureAI* GetAI_npc_nexus_drake_hatchling(Creature* pCreature) +{ + return new npc_nexus_drake_hatchlingAI(pCreature); +} + void AddSC_borean_tundra() { @@ -652,4 +1034,21 @@ void AddSC_borean_tundra() newscript->Name = "npc_jenny"; newscript->GetAI = &GetAI_npc_jenny; newscript->RegisterSelf(); + + newscript = new Script; + newscript->Name = "npc_nesingwary_trapper"; + newscript->GetAI = &GetAI_npc_nesingwary_trapper; + newscript->RegisterSelf(); + newscript = new Script; + + newscript = new Script; + newscript->Name = "npc_lurgglbr"; + newscript->GetAI = &GetAI_npc_lurgglbr; + newscript->pQuestAccept = &QuestAccept_npc_lurgglbr; + newscript->RegisterSelf(); + + newscript = new Script; + newscript->Name = "npc_nexus_drake_hatchling"; + newscript->GetAI = &GetAI_npc_nexus_drake_hatchling; + newscript->RegisterSelf(); } diff --git a/src/bindings/scripts/scripts/world/item_scripts.cpp b/src/bindings/scripts/scripts/world/item_scripts.cpp index 77da633fcbe..2464d64422e 100644 --- a/src/bindings/scripts/scripts/world/item_scripts.cpp +++ b/src/bindings/scripts/scripts/world/item_scripts.cpp @@ -230,6 +230,64 @@ bool ItemUse_item_harvesters_gift(Player* pPlayer, Item* pItem, SpellCastTargets return true; } +/*##### +# item_pile_fake_furs +#####*/ + +enum ePileFakeFur +{ + GO_CARIBOU_TRAP_1 = 187982, + GO_CARIBOU_TRAP_2 = 187995, + GO_CARIBOU_TRAP_3 = 187996, + GO_CARIBOU_TRAP_4 = 187997, + GO_CARIBOU_TRAP_5 = 187998, + GO_CARIBOU_TRAP_6 = 187999, + GO_CARIBOU_TRAP_7 = 188000, + GO_CARIBOU_TRAP_8 = 188001, + GO_CARIBOU_TRAP_9 = 188002, + GO_CARIBOU_TRAP_10 = 188003, + GO_CARIBOU_TRAP_11 = 188004, + GO_CARIBOU_TRAP_12 = 188005, + GO_CARIBOU_TRAP_13 = 188006, + GO_CARIBOU_TRAP_14 = 188007, + GO_CARIBOU_TRAP_15 = 188008, + GO_HIGH_QUALITY_FUR = 187983, + NPC_NESINGWARY_TRAPPER = 25835 +}; +bool ItemUse_item_pile_fake_furs(Player* pPlayer, Item* _Item, SpellCastTargets const& targets) +{ + GameObject* pGo; + if ((pGo = pPlayer->FindNearestGameObject(GO_CARIBOU_TRAP_1, 5.0f)) || + (pGo = pPlayer->FindNearestGameObject(GO_CARIBOU_TRAP_2, 5.0f)) || + (pGo = pPlayer->FindNearestGameObject(GO_CARIBOU_TRAP_3, 5.0f)) || + (pGo = pPlayer->FindNearestGameObject(GO_CARIBOU_TRAP_4, 5.0f)) || + (pGo = pPlayer->FindNearestGameObject(GO_CARIBOU_TRAP_5, 5.0f)) || + (pGo = pPlayer->FindNearestGameObject(GO_CARIBOU_TRAP_6, 5.0f)) || + (pGo = pPlayer->FindNearestGameObject(GO_CARIBOU_TRAP_7, 5.0f)) || + (pGo = pPlayer->FindNearestGameObject(GO_CARIBOU_TRAP_8, 5.0f)) || + (pGo = pPlayer->FindNearestGameObject(GO_CARIBOU_TRAP_9, 5.0f)) || + (pGo = pPlayer->FindNearestGameObject(GO_CARIBOU_TRAP_10, 5.0f)) || + (pGo = pPlayer->FindNearestGameObject(GO_CARIBOU_TRAP_11, 5.0f)) || + (pGo = pPlayer->FindNearestGameObject(GO_CARIBOU_TRAP_12, 5.0f)) || + (pGo = pPlayer->FindNearestGameObject(GO_CARIBOU_TRAP_13, 5.0f)) || + (pGo = pPlayer->FindNearestGameObject(GO_CARIBOU_TRAP_14, 5.0f)) || + (pGo = pPlayer->FindNearestGameObject(GO_CARIBOU_TRAP_15, 5.0f))) + { + if (pGo->FindNearestCreature(NPC_NESINGWARY_TRAPPER,10.0f,true) || pGo->FindNearestCreature(NPC_NESINGWARY_TRAPPER,10.0f,false) || pGo->FindNearestGameObject(GO_HIGH_QUALITY_FUR,2.0f)) + return true; + float x, y, z; + pGo->GetClosePoint(x, y, z, pGo->GetObjectSize() / 3, 7.0f); + pGo->SummonGameObject(GO_HIGH_QUALITY_FUR,pGo->GetPositionX(),pGo->GetPositionY(),pGo->GetPositionZ(),0,0,0,0,0,1000); + if (TempSummon* summon = pPlayer->SummonCreature(NPC_NESINGWARY_TRAPPER, x, y, z, pGo->GetOrientation(), TEMPSUMMON_DEAD_DESPAWN, 1000)) + { + summon->SetVisibility(VISIBILITY_OFF); + summon->SetReactState(REACT_PASSIVE); + summon->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE); + } + } else + return true; +} + void AddSC_item_scripts() { Script *newscript; @@ -278,5 +336,10 @@ void AddSC_item_scripts() newscript->Name = "item_harvesters_gift"; newscript->pItemUse = &ItemUse_item_harvesters_gift; newscript->RegisterSelf(); + + newscript = new Script; + newscript->Name = "item_pile_fake_furs"; + newscript->pItemUse = &ItemUse_item_pile_fake_furs; + newscript->RegisterSelf(); } |