mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-20 01:15:35 +01:00
*GO - Southfury Moonstone script, from SD2, patch by manuel
*Fix Auctionhouse CPU usage during item expire check, by MrSmite --HG-- branch : trunk
This commit is contained in:
@@ -1158,6 +1158,7 @@ UPDATE `creature_template` SET `ScriptName`='npc_elder_kuruti' WHERE `entry`=181
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_mortog_steamhead' WHERE `entry`=23373;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_kayra_longmane' WHERE `entry`=17969;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_timothy_daniels' WHERE `entry`=18019;
|
||||
UPDATE `gameobject_template` SET `ScriptName`='go_southfury_moonstone' WHERE `entry`=185566;
|
||||
|
||||
/* ZUL'AMAN */
|
||||
UPDATE `instance_template` SET `script`='instance_zulaman' WHERE `map`=568;
|
||||
|
||||
2
sql/updates/5702_world_scripts.sql
Normal file
2
sql/updates/5702_world_scripts.sql
Normal file
@@ -0,0 +1,2 @@
|
||||
|
||||
UPDATE `gameobject_template` SET `ScriptName`='go_southfury_moonstone' WHERE `entry`=185566;
|
||||
@@ -31,6 +31,7 @@ go_ethereum_prison
|
||||
go_ethereum_stasis
|
||||
go_sacred_fire_of_life
|
||||
go_shrine_of_the_birds
|
||||
go_southfury_moonstone
|
||||
go_field_repair_bot_74A
|
||||
go_orb_of_command
|
||||
go_resonite_cask
|
||||
@@ -348,6 +349,29 @@ bool GOHello_go_shrine_of_the_birds(Player* pPlayer, GameObject* pGo)
|
||||
return false;
|
||||
}
|
||||
|
||||
/*######
|
||||
## go_southfury_moonstone
|
||||
######*/
|
||||
|
||||
enum
|
||||
{
|
||||
NPC_RIZZLE = 23002,
|
||||
SPELL_BLACKJACK = 39865, //stuns player
|
||||
SPELL_SUMMON_RIZZLE = 39866
|
||||
|
||||
};
|
||||
|
||||
bool GOHello_go_southfury_moonstone(Player* pPlayer, GameObject* pGo)
|
||||
{
|
||||
//implicitTarget=48 not implemented as of writing this code, and manual summon may be just ok for our purpose
|
||||
//pPlayer->CastSpell(pPlayer,SPELL_SUMMON_RIZZLE,false);
|
||||
|
||||
if (Creature* pCreature = pPlayer->SummonCreature(NPC_RIZZLE, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_DEAD_DESPAWN, 0))
|
||||
pCreature->CastSpell(pPlayer,SPELL_BLACKJACK,false);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/*######
|
||||
## go_tele_to_dalaran_crystal
|
||||
######*/
|
||||
@@ -460,6 +484,11 @@ void AddSC_go_scripts()
|
||||
newscript->pGOHello = &GOHello_go_shrine_of_the_birds;
|
||||
newscript->RegisterSelf();
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name = "go_southfury_moonstone";
|
||||
newscript->pGOHello = &GOHello_go_southfury_moonstone;
|
||||
newscript->RegisterSelf();
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name="go_tablet_of_madness";
|
||||
newscript->pGOHello = &GOHello_go_tablet_of_madness;
|
||||
|
||||
@@ -537,8 +537,16 @@ void AuctionHouseObject::Update()
|
||||
{
|
||||
time_t curTime = sWorld.GetGameTime();
|
||||
///- Handle expired auctions
|
||||
AuctionEntryMap::iterator next;
|
||||
for (AuctionEntryMap::iterator itr = AuctionsMap.begin(); itr != AuctionsMap.end();itr = next)
|
||||
|
||||
// reset next if at end of map
|
||||
if (next == AuctionsMap.end())
|
||||
next = AuctionsMap.begin();
|
||||
|
||||
uint32 loopBreaker = 0;
|
||||
|
||||
// Initialize itr with next. next is stored for future calls to Update() after
|
||||
// 50 items are checked
|
||||
for (AuctionEntryMap::const_iterator itr = next; itr != AuctionsMap.end(); itr = next)
|
||||
{
|
||||
next = itr;
|
||||
++next;
|
||||
@@ -565,6 +573,12 @@ void AuctionHouseObject::Update()
|
||||
delete itr->second;
|
||||
RemoveAuction(itr->first);
|
||||
}
|
||||
|
||||
// only check 50 items per update to not peg the CPU
|
||||
++loopBreaker;
|
||||
|
||||
if (loopBreaker > 50)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -76,7 +76,8 @@ struct AuctionEntry
|
||||
class AuctionHouseObject
|
||||
{
|
||||
public:
|
||||
AuctionHouseObject() {}
|
||||
// Initialize storage
|
||||
AuctionHouseObject() { next = AuctionsMap.begin(); }
|
||||
~AuctionHouseObject()
|
||||
{
|
||||
for (AuctionEntryMap::iterator itr = AuctionsMap.begin(); itr != AuctionsMap.end(); ++itr)
|
||||
@@ -118,6 +119,9 @@ class AuctionHouseObject
|
||||
|
||||
private:
|
||||
AuctionEntryMap AuctionsMap;
|
||||
|
||||
// storage for "next" auction item for next Update()
|
||||
AuctionEntryMap::const_iterator next;
|
||||
};
|
||||
|
||||
class AuctionHouseMgr
|
||||
|
||||
Reference in New Issue
Block a user