diff options
-rw-r--r-- | sql/updates/world/2012_01_02_00_world_sai.sql | 41 | ||||
-rw-r--r-- | sql/updates/world/2012_01_02_01_world_game_event.sql | 4 | ||||
-rw-r--r-- | sql/updates/world/2012_01_02_02_world_creature_template.sql | 21 | ||||
-rw-r--r-- | sql/updates/world/2012_01_02_03_world_creature_onkill_reputation.sql | 57 | ||||
-rwxr-xr-x | src/server/game/Chat/Commands/Level2.cpp | 6 | ||||
-rwxr-xr-x | src/server/game/Spells/SpellEffects.cpp | 3 | ||||
-rwxr-xr-x | src/server/game/World/World.cpp | 4 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_wp.cpp | 2 | ||||
-rwxr-xr-x | src/server/shared/Database/Implementation/WorldDatabase.cpp | 2 | ||||
-rwxr-xr-x | src/server/shared/Database/Implementation/WorldDatabase.h | 2 | ||||
-rwxr-xr-x | src/server/shared/Utilities/Util.cpp | 25 | ||||
-rwxr-xr-x | src/server/shared/Utilities/Util.h | 3 |
12 files changed, 156 insertions, 14 deletions
diff --git a/sql/updates/world/2012_01_02_00_world_sai.sql b/sql/updates/world/2012_01_02_00_world_sai.sql new file mode 100644 index 00000000000..3b9abd4c746 --- /dev/null +++ b/sql/updates/world/2012_01_02_00_world_sai.sql @@ -0,0 +1,41 @@ +-- [Q] Plan B (11658) +SET @ENTRY_GUARD := 25342; -- Dead Caravan Guard +SET @ENTRY_WORKER := 25343; -- Dead Caravan Worker +SET @ITEM := 34842; -- Warsong Outfit +SET @GOSSIP_1 := 9155; +SET @GOSSIP_2 := 9156; +SET @QUEST := 11658; -- Plan B + +DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP_1; +DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP_2; +INSERT INTO `gossip_menu` (`entry`, `text_id`) VALUES +(@GOSSIP_1, 12388), +(@GOSSIP_2, 12389); + +DELETE FROM `gossip_menu_option` WHERE `menu_id`=@GOSSIP_1; +DELETE FROM `gossip_menu_option` WHERE `menu_id`=@GOSSIP_2; +INSERT INTO `gossip_menu_option` VALUES +(@GOSSIP_1, 0, 0, 'Retrieve Warsong Outfit.', 1, 1, 0, 0, 0, 0, ''), +(@GOSSIP_2, 0, 0, 'Retrieve Warsong Outfit.', 1, 1, 0, 0, 0, 0, ''); + +UPDATE `creature_template` SET `npcflag`=`npcflag`|1 WHERE `entry` IN (@ENTRY_GUARD, @ENTRY_WORKER); +DELETE FROM `creature_ai_scripts` WHERE `creature_id`=25342 AND `id`=2534201; +DELETE FROM `creature_ai_scripts` WHERE `creature_id`=25343 AND `id`=2534301; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry` IN (@ENTRY_GUARD, @ENTRY_WORKER); +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY_GUARD AND `source_type`=0; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY_WORKER AND `source_type`=0; +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`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) +VALUES +(@ENTRY_GUARD, 0, 0, 1, 62, 0, 100, 0, @GOSSIP_1, 0, 0, 0, 56, @ITEM, 1, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Dead Caravan Guard - On Gossip Select - Add Item Warsong Outfit'), +(@ENTRY_GUARD, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Dead Caravan Guard - On Gossip Select - Forced Despawn'), +(@ENTRY_WORKER, 0, 0, 1, 62, 0, 100, 0, @GOSSIP_2, 0, 0, 0, 56, @ITEM, 1, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Dead Caravan Worker - On Gossip Select - Add Item Warsong Outfit'), +(@ENTRY_WORKER, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Dead Caravan Worker - On Gossip Select - Forced Despawn'); + +-- Conditions +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=@GOSSIP_1; +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=@GOSSIP_2; +INSERT INTO `conditions` VALUES +(15, @GOSSIP_1, 0, 0, 9, @QUEST, 0, 0, 0, '', 'Only show gossip if player has quest Plan B'), +(15, @GOSSIP_2, 0, 0, 9, @QUEST, 0, 0, 0, '', 'Only show gossip if player has quest Plan B'), +(15, @GOSSIP_1, 0, 0, 2, @ITEM, 10, 0, 0, '', 'Only show gossip if player has less then 10 outfits'), +(15, @GOSSIP_2, 0, 0, 2, @ITEM, 10, 0, 0, '', 'Only show gossip if player has less then 10 outfits'); diff --git a/sql/updates/world/2012_01_02_01_world_game_event.sql b/sql/updates/world/2012_01_02_01_world_game_event.sql new file mode 100644 index 00000000000..11267a6b296 --- /dev/null +++ b/sql/updates/world/2012_01_02_01_world_game_event.sql @@ -0,0 +1,4 @@ +-- More Darkmoon Faerie synchronization +UPDATE `game_event` SET `start_time`='2012-02-05 00:01:00' WHERE `eventEntry`=3; +UPDATE `game_event` SET `start_time`='2012-03-04 00:01:00' WHERE `eventEntry`=4; +UPDATE `game_event` SET `start_time`='2012-01-01 00:01:00' WHERE `eventEntry`=5; diff --git a/sql/updates/world/2012_01_02_02_world_creature_template.sql b/sql/updates/world/2012_01_02_02_world_creature_template.sql new file mode 100644 index 00000000000..1f87f418dec --- /dev/null +++ b/sql/updates/world/2012_01_02_02_world_creature_template.sql @@ -0,0 +1,21 @@ +-- Kill xp exploit, mobs spawned by portal keepers don't gives xp on retail. (ie mobs 30662, 30664) +UPDATE `creature_template` SET `flags_extra`= `flags_extra`|64 WHERE `entry` IN ( +-- NORMAL +30661, -- CREATURE_AZURE_INVADER_1 +30961, -- CREATURE_AZURE_INVADER_2 +30662, -- CREATURE_AZURE_SPELLBREAKER_1 +30962, -- CREATURE_AZURE_SPELLBREAKER_2 +30663, -- CREATURE_AZURE_BINDER_1 +30918, -- CREATURE_AZURE_BINDER_2 +30664, -- CREATURE_AZURE_MAGE_SLAYER_1 +30963, -- CREATURE_AZURE_MAGE_SLAYER_2 +-- HEROIC: +31487, -- Azure Invader +31494, -- Azure Spellbreaker +31483, -- Azure Binder +31497, -- Azure Mage Slayer +31484, -- Azure Binder +31488, -- Azure Invader +31495, -- Azure Spellbreaker +31498, -- Azure Mage Slayer +); diff --git a/sql/updates/world/2012_01_02_03_world_creature_onkill_reputation.sql b/sql/updates/world/2012_01_02_03_world_creature_onkill_reputation.sql new file mode 100644 index 00000000000..282fc58dd3b --- /dev/null +++ b/sql/updates/world/2012_01_02_03_world_creature_onkill_reputation.sql @@ -0,0 +1,57 @@ +-- The Oculus hero +DELETE FROM `creature_onkill_reputation` WHERE `creature_id` IN (31558, 31561, 31560, 31559, 30901, 30902, 30903, 30904, 30905, 30906, 30907, 30908, 30909, 30910, 30911, 30912, 30913, 30914, 30991, 30915, 30916, 30879); +INSERT INTO `creature_onkill_reputation` VALUES +(31558, 1037, 1052, 7, 0, 250, 7, 0, 250, 1), +(31561, 1037, 1052, 7, 0, 250, 7, 0, 250, 1), +(31560, 1037, 1052, 7, 0, 250, 7, 0, 250, 1), +(31559, 1037, 1052, 7, 0, 250, 7, 0, 250, 1), +(30901, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30902, 1037, 1052, 7, 0, 2, 7, 0, 2, 1), +(30903, 1037, 1052, 7, 0, 30, 7, 0, 30, 1), +(30904, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30905, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30991, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30906, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30907, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30908, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30909, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30910, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30911, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30912, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30913, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30914, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30879, 1037, 1052, 7, 0, 0, 7, 0, 0, 1), +(30915, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30916, 1037, 1052, 7, 0, 15, 7, 0, 15, 1); + +-- Utgarde Pinnacle hero +DELETE FROM `creature_onkill_reputation` WHERE `creature_id` IN (30774, 30788, 30807, 30810, 30756, 30762, 30764, 30765, 30766, 30767, 30770, 30772, 30779, 30790, 30803, 30775, 30791, 30804, 30806, 30809, 30816, 30817, 30818, 30819, 30820, 30821, 30822, 30823); +INSERT INTO `creature_onkill_reputation` VALUES +(30774, 1037, 1052, 7, 0, 250, 7, 0, 250, 1), +(30788, 1037, 1052, 7, 0, 250, 7, 0, 250, 1), +(30807, 1037, 1052, 7, 0, 250, 7, 0, 250, 1), +(30810, 1037, 1052, 7, 0, 250, 7, 0, 250, 1), +(30756, 1037, 1052, 7, 0, 0, 7, 0, 0, 1), +(30762, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30764, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30765, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30766, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30767, 1037, 1052, 7, 0, 2, 7, 0, 2, 1), +(30770, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30772, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30779, 1037, 1052, 7, 0, 0, 7, 0, 0, 1), +(30790, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30803, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30775, 1037, 1052, 7, 0, 0, 7, 0, 0, 1), +(30791, 1037, 1052, 7, 0, 2, 7, 0, 2, 1), +(30804, 1037, 1052, 7, 0, 2, 7, 0, 2, 1), +(30806, 1037, 1052, 7, 0, 30, 7, 0, 30, 1), +(30809, 1037, 1052, 7, 0, 0, 7, 0, 0, 1), +(30816, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30817, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30818, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30819, 1037, 1052, 7, 0, 2, 7, 0, 2, 1), +(30820, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30821, 1037, 1052, 7, 0, 15, 7, 0, 15, 1), +(30822, 1037, 1052, 7, 0, 2, 7, 0, 2, 1), +(30823, 1037, 1052, 7, 0, 2, 7, 0, 2, 1); diff --git a/src/server/game/Chat/Commands/Level2.cpp b/src/server/game/Chat/Commands/Level2.cpp index 144a1f83eff..2f04ebcf6bc 100755 --- a/src/server/game/Chat/Commands/Level2.cpp +++ b/src/server/game/Chat/Commands/Level2.cpp @@ -568,7 +568,7 @@ bool ChatHandler::HandleCharacterChangeRaceCommand(const char * args) PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ADD_AT_LOGIN_FLAG); - stmt->setUInt16(0, uint16(AT_LOGIN_CHANGE_FACTION)); + stmt->setUInt16(0, uint16(AT_LOGIN_CHANGE_RACE)); if (target) { @@ -710,13 +710,13 @@ bool ChatHandler::HandleLookupPlayerIpCommand(const char* args) std::string ip; int32 limit; char* limit_str; - + Player *chr = getSelectedPlayer(); if (chr == NULL) { if (!*args) return false; - + ip = strtok ((char*)args, " "); limit_str = strtok (NULL, " "); limit = limit_str ? atoi (limit_str) : -1; diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index bb898acd3a7..c3c73598af7 100755 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -5878,7 +5878,10 @@ void Spell::EffectInebriate(SpellEffIndex /*effIndex*/) uint16 currentDrunk = player->GetDrunkValue(); uint16 drunkMod = damage * 256; if (currentDrunk + drunkMod > 0xFFFF) + { currentDrunk = 0xFFFF; + player->CastSpell(player, 67468, false); + } else currentDrunk += drunkMod; player->SetDrunkValue(currentDrunk, m_CastItem ? m_CastItem->GetEntry() : 0); diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index d2a4323bb30..388bafc503d 100755 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1936,7 +1936,7 @@ void World::Update(uint32 diff) stmt->setUInt64(0, uint64(tmpDiff)); stmt->setUInt16(1, uint16(maxOnlinePlayers)); stmt->setUInt32(2, realmID); - stmt->setUInt16(3, uint64(m_startTime)); + stmt->setUInt64(3, uint64(m_startTime)); LoginDatabase.Execute(stmt); } @@ -1959,7 +1959,9 @@ void World::Update(uint32 diff) /// <li> Handle all other objects ///- Update objects when the timer has passed (maps, transport, creatures, ...) + RecordTimeDiff(NULL); sMapMgr->Update(diff); + RecordTimeDiff("UpdateMapMgr"); if (sWorld->getBoolConfig(CONFIG_AUTOBROADCAST)) { diff --git a/src/server/scripts/Commands/cs_wp.cpp b/src/server/scripts/Commands/cs_wp.cpp index 6482589f149..8f5e862555c 100644 --- a/src/server/scripts/Commands/cs_wp.cpp +++ b/src/server/scripts/Commands/cs_wp.cpp @@ -1041,7 +1041,7 @@ public: } while (result->NextRow()); // set "wpguid" column to "empty" - no visual waypoint spawned - PreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WOLRD_UPD_ALL_WAYPOINT_DATA_WPGUID); + PreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_ALL_WAYPOINT_DATA_WPGUID); WorldDatabase.Execute(stmt); //WorldDatabase.PExecute("UPDATE creature_movement SET wpguid = '0' WHERE wpguid <> '0'"); diff --git a/src/server/shared/Database/Implementation/WorldDatabase.cpp b/src/server/shared/Database/Implementation/WorldDatabase.cpp index 7fd438daf48..d7d8491008b 100755 --- a/src/server/shared/Database/Implementation/WorldDatabase.cpp +++ b/src/server/shared/Database/Implementation/WorldDatabase.cpp @@ -48,7 +48,7 @@ void WorldDatabaseConnection::DoPrepareStatements() PREPARE_STATEMENT(WORLD_UPD_WAYPOINT_DATA_POINT, "UPDATE waypoint_data SET point = point - 1 WHERE id = ? AND point > ?", CONNECTION_ASYNC); PREPARE_STATEMENT(WORLD_UPD_WAYPOINT_DATA_POSITION, "UPDATE waypoint_data SET position_x = ?, position_y = ?, position_z = ? where id = ? AND point = ?", CONNECTION_ASYNC); PREPARE_STATEMENT(WORLD_UPD_WAYPOINT_DATA_WPGUID, "UPDATE waypoint_data SET wpguid = ? WHERE id = ? and point = ?", CONNECTION_ASYNC); - PREPARE_STATEMENT(WOLRD_UPD_ALL_WAYPOINT_DATA_WPGUID, "UPDATE waypoint_data SET wpguid = 0", CONNECTION_ASYNC); + PREPARE_STATEMENT(WORLD_UPD_ALL_WAYPOINT_DATA_WPGUID, "UPDATE waypoint_data SET wpguid = 0", CONNECTION_ASYNC); PREPARE_STATEMENT(WORLD_INS_CREATURE_ADDON, "INSERT INTO creature_addon(guid, path_id) VALUES (?, ?)", CONNECTION_ASYNC); PREPARE_STATEMENT(WORLD_UPD_CREATURE_ADDON_PATH, "UPDATE creature_addon SET path_id = ? WHERE guid = ?", CONNECTION_ASYNC); PREPARE_STATEMENT(WORLD_DEL_CREATURE_ADDON, "DELETE FROM creature_addon WHERE guid = ?", CONNECTION_ASYNC); diff --git a/src/server/shared/Database/Implementation/WorldDatabase.h b/src/server/shared/Database/Implementation/WorldDatabase.h index 92aa75fae61..e708177503f 100755 --- a/src/server/shared/Database/Implementation/WorldDatabase.h +++ b/src/server/shared/Database/Implementation/WorldDatabase.h @@ -68,7 +68,7 @@ enum WorldDatabaseStatements WORLD_UPD_WAYPOINT_DATA_POINT, WORLD_UPD_WAYPOINT_DATA_POSITION, WORLD_UPD_WAYPOINT_DATA_WPGUID, - WOLRD_UPD_ALL_WAYPOINT_DATA_WPGUID, + WORLD_UPD_ALL_WAYPOINT_DATA_WPGUID, WORLD_UPD_CREATURE_ADDON_PATH, WORLD_INS_CREATURE_ADDON, WORLD_DEL_CREATURE_ADDON, diff --git a/src/server/shared/Utilities/Util.cpp b/src/server/shared/Utilities/Util.cpp index ba385230822..6ae43bc6840 100755 --- a/src/server/shared/Utilities/Util.cpp +++ b/src/server/shared/Utilities/Util.cpp @@ -30,17 +30,22 @@ typedef ACE_TSS<SFMTRand> SFMTRandTSS; static SFMTRandTSS sfmtRand; -int32 irand (int32 min, int32 max) +int32 irand(int32 min, int32 max) { return int32(sfmtRand->IRandom(min, max)); } -uint32 urand (uint32 min, uint32 max) +uint32 urand(uint32 min, uint32 max) { return sfmtRand->URandom(min, max); } -int32 rand32 () +float frand(float min, float max) +{ + return float(sfmtRand->Random() * (max - min) + min); +} + +int32 rand32() { return int32(sfmtRand->BRandom()); } @@ -50,27 +55,33 @@ double rand_norm(void) return sfmtRand->Random(); } -double rand_chance (void) +double rand_chance(void) { return sfmtRand->Random() * 100.0; } + #else typedef ACE_TSS<MTRand> MTRandTSS; static MTRandTSS mtRand; int32 irand(int32 min, int32 max) { - return int32(mtRand->randInt (max - min)) + min; + return int32(mtRand->randInt(max - min)) + min; } uint32 urand(uint32 min, uint32 max) { - return mtRand->randInt (max - min) + min; + return mtRand->randInt(max - min) + min; +} + +float frand(float min, float max) +{ + return float(mtRand->randExc(max - min) + min); } int32 rand32() { - return mtRand->randInt (); + return mtRand->randInt(); } double rand_norm(void) diff --git a/src/server/shared/Utilities/Util.h b/src/server/shared/Utilities/Util.h index b67761c4977..684b26eea63 100755 --- a/src/server/shared/Utilities/Util.h +++ b/src/server/shared/Utilities/Util.h @@ -64,6 +64,9 @@ inline uint32 secsToTimeBitFields(time_t secs) /* Return a random number in the range 0 .. RAND32_MAX. */ int32 rand32(); + /* Return a random number in the range min..max */ + float frand(float min, float max); + /* Return a random double from 0.0 to 1.0 (exclusive). Floats support only 7 valid decimal digits. * A double supports up to 15 valid decimal digits and is used internally (RAND32_MAX has 10 digits). * With an FPU, there is usually no difference in performance between float and double. */ |