diff options
Diffstat (limited to 'src')
29 files changed, 138 insertions, 126 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c372d12418b..7c2ebe9906c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/> +# Copyright (C) 2008-2012 TrinityCore <http://www.trinitycore.org/> # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without diff --git a/src/server/CMakeLists.txt b/src/server/CMakeLists.txt index 561ee50f439..2b6c553e10b 100644 --- a/src/server/CMakeLists.txt +++ b/src/server/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/> +# Copyright (C) 2008-2012 TrinityCore <http://www.trinitycore.org/> # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without diff --git a/src/server/game/AI/CoreAI/GameObjectAI.h b/src/server/game/AI/CoreAI/GameObjectAI.h index 0b91b6e8ddb..501959d67f9 100644 --- a/src/server/game/AI/CoreAI/GameObjectAI.h +++ b/src/server/game/AI/CoreAI/GameObjectAI.h @@ -50,6 +50,7 @@ class GameObjectAI virtual void Destroyed(Player* /*player*/, uint32 /*eventId*/) {} virtual void SetData(uint32 /*id*/, uint32 /*value*/) {} virtual void OnGameEvent(bool /*start*/, uint16 /*eventId*/) {} + virtual void OnStateChanged(uint32 state) { } }; class NullGameObjectAI : public GameObjectAI diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp index 09d70204a7b..1a26e241c5e 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.cpp +++ b/src/server/game/AI/SmartScripts/SmartAI.cpp @@ -937,6 +937,11 @@ void SmartGameObjectAI::OnGameEvent(bool start, uint16 eventId) GetScript()->ProcessEventsFor(start ? SMART_EVENT_GAME_EVENT_START : SMART_EVENT_GAME_EVENT_END, NULL, eventId); } +void SmartGameObjectAI::OnStateChanged(uint32 state) +{ + GetScript()->ProcessEventsFor(SMART_EVENT_GO_STATE_CHANGED, NULL, state); +} + class SmartTrigger : public AreaTriggerScript { public: diff --git a/src/server/game/AI/SmartScripts/SmartAI.h b/src/server/game/AI/SmartScripts/SmartAI.h index b33bfebf912..297ac88fbb0 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.h +++ b/src/server/game/AI/SmartScripts/SmartAI.h @@ -253,6 +253,7 @@ public: void SetData(uint32 id, uint32 value); void SetScript9(SmartScriptHolder& e, uint32 entry, Unit* invoker); void OnGameEvent(bool start, uint16 eventId); + void OnStateChanged(uint32 state); protected: GameObject* const go; diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index d0c62f8092d..9cea61c0d2b 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -1780,6 +1780,20 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u // TODO: Resume path when reached jump location break; } + case SMART_ACTION_GO_SET_LOOT_STATE: + { + ObjectList* targets = GetTargets(e, unit); + + if (!targets) + return; + + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) + if (IsGameObject(*itr)) + (*itr)->ToGameObject()->SetLootState((LootState)e.action.setGoLootState.state); + + delete targets; + break; + } case SMART_ACTION_SEND_GOSSIP_MENU: { if (!GetBaseObject()) @@ -2602,6 +2616,13 @@ void SmartScript::ProcessEvent(SmartScriptHolder& e, Unit* unit, uint32 var0, ui ProcessAction(e, NULL, var0); break; } + case SMART_EVENT_GO_STATE_CHANGED: + { + if (e.event.goStateChanged.state != var0) + return; + ProcessAction(e, unit, var0, var1); + break; + } default: sLog->outErrorDb("SmartScript::ProcessEvent: Unhandled Event type %u", e.GetEventType()); break; diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index 63595b2439f..15423c7aff2 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -478,6 +478,7 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e) return false; break; } + case SMART_EVENT_GO_STATE_CHANGED: case SMART_EVENT_TIMED_EVENT_TRIGGERED: case SMART_EVENT_INSTANCE_PLAYER_ENTER: case SMART_EVENT_TRANSPORT_RELOCATE: diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index 7cf290affe3..6b99a7dc5be 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -154,8 +154,9 @@ enum SMART_EVENT SMART_EVENT_IS_BEHIND_TARGET = 67, //1 // cooldownMin, CooldownMax SMART_EVENT_GAME_EVENT_START = 68, //1 // game_event.Entry SMART_EVENT_GAME_EVENT_END = 69, //1 // game_event.Entry + SMART_EVENT_GO_STATE_CHANGED = 70, // go state - SMART_EVENT_END = 70, + SMART_EVENT_END = 71, }; struct SmartEvent @@ -347,6 +348,11 @@ struct SmartEvent struct { + uint32 state; + } goStateChanged; + + struct + { uint32 param1; uint32 param2; uint32 param3; @@ -466,8 +472,9 @@ enum SMART_ACTION SMART_ACTION_REMOVE_DYNAMIC_FLAG = 96, // Flags SMART_ACTION_JUMP_TO_POS = 97, // speedXY, speedZ, targetX, targetY, targetZ SMART_ACTION_SEND_GOSSIP_MENU = 98, // menuId, optionId + SMART_ACTION_GO_SET_LOOT_STATE = 99, // state - SMART_ACTION_END = 99, + SMART_ACTION_END = 100, }; struct SmartAction @@ -873,6 +880,11 @@ struct SmartAction struct { + uint32 state; + } setGoLootState; + + struct + { uint32 param1; uint32 param2; uint32 param3; @@ -1137,6 +1149,7 @@ const uint32 SmartAIEventMask[SMART_EVENT_END][2] = {SMART_EVENT_IS_BEHIND_TARGET, SMART_SCRIPT_TYPE_MASK_CREATURE }, {SMART_EVENT_GAME_EVENT_START, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT }, {SMART_EVENT_GAME_EVENT_END, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT }, + {SMART_EVENT_GO_STATE_CHANGED, SMART_SCRIPT_TYPE_MASK_GAMEOBJECT }, }; diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index decbc49d3fe..22f001d0224 100755 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -1864,3 +1864,9 @@ void GameObject::SetDestructibleState(GameObjectDestructibleState state, Player* } } } + +void GameObject::SetLootState(LootState s) +{ + m_lootState = s; + AI()->OnStateChanged(s); +}
\ No newline at end of file diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h index 910b9129e45..9298c5affee 100755 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -713,7 +713,7 @@ class GameObject : public WorldObject, public GridObject<GameObject> void Use(Unit* user); LootState getLootState() const { return m_lootState; } - void SetLootState(LootState s) { m_lootState = s; } + void SetLootState(LootState s); uint16 GetLootMode() { return m_LootMode; } bool HasLootMode(uint16 lootMode) { return m_LootMode & lootMode; } diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 6854a68ac1d..e9a1ac0e64f 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -16657,6 +16657,7 @@ bool Player::LoadFromDB(uint32 guid, SQLQueryHolder *holder) _LoadInstanceTimeRestrictions(holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOADINSTANCELOCKTIMES)); _LoadBGData(holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOADBGDATA)); + GetSession()->SetPlayer(this); MapEntry const* mapEntry = sMapStore.LookupEntry(mapId); if (!mapEntry || !IsPositionValid()) { diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp index 7e4bebaab95..b3531d585c3 100755 --- a/src/server/game/Entities/Vehicle/Vehicle.cpp +++ b/src/server/game/Entities/Vehicle/Vehicle.cpp @@ -359,6 +359,7 @@ bool Vehicle::AddPassenger(Unit* unit, int8 seatId) { if (!_me->SetCharmedBy(unit, CHARM_TYPE_VEHICLE)) ASSERT(false); + unit->ToPlayer()->SetMover(this->GetBase()); } if (_me->IsInWorld()) @@ -410,7 +411,10 @@ void Vehicle::RemovePassenger(Unit* unit) unit->ClearUnitState(UNIT_STAT_ONVEHICLE); if (_me->GetTypeId() == TYPEID_UNIT && unit->GetTypeId() == TYPEID_PLAYER && seat->first == 0 && seat->second.SeatInfo->m_flags & VEHICLE_SEAT_FLAG_CAN_CONTROL) + { _me->RemoveCharmedBy(unit); + unit->ToPlayer()->SetMover(unit->ToPlayer()); + } if (_me->IsInWorld()) { diff --git a/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp b/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp index fd649175f76..35276bb1d0a 100644 --- a/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp @@ -776,6 +776,7 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder* holder) // "GetAccountId() == db stored account id" checked in LoadFromDB (prevent login not own character using cheating tools) if (!pCurrChar->LoadFromDB(GUID_LOPART(playerGuid), holder)) { + SetPlayer(NULL); KickPlayer(); // disconnect client, player no set to session and it will not deleted or saved at kick delete pCurrChar; // delete it manually delete holder; // delete all unprocessed queries @@ -784,9 +785,6 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder* holder) } pCurrChar->GetMotionMaster()->Initialize(); - - SetPlayer(pCurrChar); - pCurrChar->SendDungeonDifficulty(false); WorldPacket data(SMSG_LOGIN_VERIFY_WORLD, 20); diff --git a/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp b/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp index 0c54a37c362..7d1233c8f70 100755 --- a/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp @@ -473,10 +473,7 @@ void WorldSession::HandleSetActiveMoverOpcode(WorldPacket &recv_data) if (GetPlayer()->IsInWorld()) { if (_player->m_mover->GetGUID() != guid) - { sLog->outError("HandleSetActiveMoverOpcode: incorrect mover guid: mover is " UI64FMTD " (%s - Entry: %u) and should be " UI64FMTD, guid, GetLogNameForGuid(guid), GUID_ENPART(guid), _player->m_mover->GetGUID()); - GetPlayer()->SetMover(GetPlayer()); - } } } diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 58a37e75b2c..1d3c657f50a 100755 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -3104,6 +3104,8 @@ void AuraEffect::HandleModPossess(AuraApplication const* aurApp, uint8 mode, boo { target->RemoveCharmedBy(caster); caster->ToPlayer()->SetMover(caster); + if (target->GetTypeId() == TYPEID_PLAYER) + target->ToPlayer()->SetMover(target); } } diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index f76dbd7be47..d864ce2d606 100755 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -3829,6 +3829,9 @@ void Spell::SendSpellGo() castFlags |= CAST_FLAG_UNKNOWN_19; // same as in SMSG_SPELL_START } + if (m_targets.HasTraj()) + castFlags |= CAST_FLAG_ADJUST_MISSILE; + WorldPacket data(SMSG_SPELL_GO, 50); // guess size if (m_CastItem) @@ -3871,11 +3874,10 @@ void Spell::SendSpellGo() } } } - - if (castFlags & CAST_FLAG_UNKNOWN_18) + if (castFlags & CAST_FLAG_ADJUST_MISSILE) { - data << float(0); - data << uint32(0); + data << m_targets.GetElevation(); + data << uint32(m_targets.GetSpeedXY()*m_targets.GetSpeedZ()*2); } if (castFlags & CAST_FLAG_AMMO) diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index 6b7c73ad32b..2bbc04d6a3b 100755 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -55,7 +55,7 @@ enum SpellCastFlags CAST_FLAG_UNKNOWN_15 = 0x00004000, CAST_FLAG_UNKNOWN_16 = 0x00008000, CAST_FLAG_UNKNOWN_17 = 0x00010000, - CAST_FLAG_UNKNOWN_18 = 0x00020000, + CAST_FLAG_ADJUST_MISSILE = 0x00020000, CAST_FLAG_UNKNOWN_19 = 0x00040000, CAST_FLAG_UNKNOWN_20 = 0x00080000, CAST_FLAG_UNKNOWN_21 = 0x00100000, diff --git a/src/server/scripts/EasternKingdoms/AlteracValley/boss_balinda.cpp b/src/server/scripts/EasternKingdoms/AlteracValley/boss_balinda.cpp index d3083146967..1292cdaee17 100644 --- a/src/server/scripts/EasternKingdoms/AlteracValley/boss_balinda.cpp +++ b/src/server/scripts/EasternKingdoms/AlteracValley/boss_balinda.cpp @@ -27,8 +27,9 @@ enum Spells enum Yells { - YELL_AGGRO = -1810023, - YELL_EVADE = -1810024 + YELL_AGGRO = 0, + YELL_EVADE = 1, + YELL_SALVATION = 2, }; enum Creatures @@ -122,7 +123,7 @@ public: void EnterCombat(Unit* /*who*/) { - DoScriptText(YELL_AGGRO, me); + Talk(YELL_AGGRO); } void JustRespawned() @@ -185,7 +186,7 @@ public: if (me->GetDistance2d(me->GetHomePosition().GetPositionX(), me->GetHomePosition().GetPositionY()) > 50) { EnterEvadeMode(); - DoScriptText(YELL_EVADE, me); + Talk(YELL_EVADE); } resetTimer = 5 * IN_MILLISECONDS; } else resetTimer -= diff; diff --git a/src/server/scripts/EasternKingdoms/AlteracValley/boss_drekthar.cpp b/src/server/scripts/EasternKingdoms/AlteracValley/boss_drekthar.cpp index 959ed88be1c..8b2a95be977 100644 --- a/src/server/scripts/EasternKingdoms/AlteracValley/boss_drekthar.cpp +++ b/src/server/scripts/EasternKingdoms/AlteracValley/boss_drekthar.cpp @@ -31,14 +31,10 @@ enum Spells enum Yells { - YELL_AGGRO = -1810000, - YELL_EVADE = -1810001, - YELL_RESPAWN = -1810002, - YELL_RANDOM1 = -1810003, - YELL_RANDOM2 = -1810004, - YELL_RANDOM3 = -1810005, - YELL_RANDOM4 = -1810006, - YELL_RANDOM5 = -1810007 + YELL_AGGRO = 0, + YELL_EVADE = 1, + YELL_RESPAWN = 2, + YELL_RANDOM = 3 }; class boss_drekthar : public CreatureScript @@ -69,13 +65,13 @@ public: void EnterCombat(Unit* /*who*/) { - DoScriptText(YELL_AGGRO, me); + Talk(YELL_AGGRO); } void JustRespawned() { Reset(); - DoScriptText(YELL_RESPAWN, me); + Talk(YELL_RESPAWN); } void UpdateAI(const uint32 diff) @@ -109,7 +105,7 @@ public: if (YellTimer <= diff) { - DoScriptText(RAND(YELL_RANDOM1, YELL_RANDOM2, YELL_RANDOM3, YELL_RANDOM4, YELL_RANDOM5), me); + Talk(YELL_RANDOM); YellTimer = urand(20 * IN_MILLISECONDS, 30 * IN_MILLISECONDS); //20 to 30 seconds } else YellTimer -= diff; @@ -119,7 +115,7 @@ public: if (me->GetDistance2d(me->GetHomePosition().GetPositionX(), me->GetHomePosition().GetPositionY()) > 50) { EnterEvadeMode(); - DoScriptText(YELL_EVADE, me); + Talk(YELL_EVADE); } ResetTimer = 5 * IN_MILLISECONDS; } else ResetTimer -= diff; diff --git a/src/server/scripts/EasternKingdoms/AlteracValley/boss_galvangar.cpp b/src/server/scripts/EasternKingdoms/AlteracValley/boss_galvangar.cpp index 95c16612aef..da53cffc99d 100644 --- a/src/server/scripts/EasternKingdoms/AlteracValley/boss_galvangar.cpp +++ b/src/server/scripts/EasternKingdoms/AlteracValley/boss_galvangar.cpp @@ -28,8 +28,8 @@ enum Spells enum Yells { - YELL_AGGRO = -1810021, - YELL_EVADE = -1810022 + YELL_AGGRO = 0, + YELL_EVADE = 1 }; class boss_galvangar : public CreatureScript @@ -60,7 +60,7 @@ public: void EnterCombat(Unit* /*who*/) { - DoScriptText(YELL_AGGRO, me); + Talk(YELL_AGGRO); } void JustRespawned() @@ -109,7 +109,7 @@ public: if (me->GetDistance2d(me->GetHomePosition().GetPositionX(), me->GetHomePosition().GetPositionY()) > 50) { EnterEvadeMode(); - DoScriptText(YELL_EVADE, me); + Talk(YELL_EVADE); } ResetTimer = 5 * IN_MILLISECONDS; } else ResetTimer -= diff; diff --git a/src/server/scripts/EasternKingdoms/AlteracValley/boss_vanndar.cpp b/src/server/scripts/EasternKingdoms/AlteracValley/boss_vanndar.cpp index 94b5bc9a56c..54fcb9d99c2 100644 --- a/src/server/scripts/EasternKingdoms/AlteracValley/boss_vanndar.cpp +++ b/src/server/scripts/EasternKingdoms/AlteracValley/boss_vanndar.cpp @@ -19,17 +19,12 @@ enum Yells { - YELL_AGGRO = -1810008, - YELL_EVADE = -1810009, - YELL_RESPAWN1 = -1810010, - YELL_RESPAWN2 = -1810011, - YELL_RANDOM1 = -1810012, - YELL_RANDOM2 = -1810013, - YELL_RANDOM3 = -1810014, - YELL_RANDOM4 = -1810015, - YELL_RANDOM5 = -1810016, - YELL_RANDOM6 = -1810017, - YELL_RANDOM7 = -1810018 + YELL_AGGRO = 0, + YELL_EVADE = 1, + YELL_RESPAWN1 = -1810010, // no creature_text + YELL_RESPAWN2 = -1810011, // no creature_text + YELL_RANDOM = 2, + YELL_SPELL = 3, }; enum Spells @@ -65,7 +60,7 @@ public: void EnterCombat(Unit* /*who*/) { - DoScriptText(YELL_AGGRO, me); + Talk(YELL_AGGRO); } void JustRespawned() @@ -99,7 +94,7 @@ public: if (YellTimer <= diff) { - DoScriptText(RAND(YELL_RANDOM1, YELL_RANDOM2, YELL_RANDOM3, YELL_RANDOM4, YELL_RANDOM5, YELL_RANDOM6, YELL_RANDOM7), me); + Talk(YELL_RANDOM); YellTimer = urand(20 * IN_MILLISECONDS, 30 * IN_MILLISECONDS); //20 to 30 seconds } else YellTimer -= diff; @@ -109,7 +104,7 @@ public: if (me->GetDistance2d(me->GetHomePosition().GetPositionX(), me->GetHomePosition().GetPositionY()) > 50) { EnterEvadeMode(); - DoScriptText(YELL_EVADE, me); + Talk(YELL_EVADE); } ResetTimer = 5 * IN_MILLISECONDS; } else ResetTimer -= diff; diff --git a/src/server/scripts/EasternKingdoms/arathi_highlands.cpp b/src/server/scripts/EasternKingdoms/arathi_highlands.cpp index 8b6cbf26de2..e2a9717882b 100644 --- a/src/server/scripts/EasternKingdoms/arathi_highlands.cpp +++ b/src/server/scripts/EasternKingdoms/arathi_highlands.cpp @@ -36,16 +36,16 @@ EndContentData */ enum eEnums { - SAY_PROGRESS_1 = -1000264, - SAY_PROGRESS_2 = -1000265, - SAY_PROGRESS_3 = -1000266, - EMOTE_PROGRESS_4 = -1000267, - SAY_AGGRO = -1000268, - SAY_PROGRESS_5 = -1000269, - SAY_PROGRESS_6 = -1000270, - SAY_PROGRESS_7 = -1000271, - EMOTE_PROGRESS_8 = -1000272, - SAY_PROGRESS_9 = -1000273, + SAY_PROGRESS_1 = 0, + SAY_PROGRESS_2 = 1, + SAY_PROGRESS_3 = 2, + EMOTE_PROGRESS_4 = 3, + SAY_AGGRO = 4, + SAY_PROGRESS_5 = 5, + SAY_PROGRESS_6 = 6, + SAY_PROGRESS_7 = 7, + EMOTE_PROGRESS_8 = 8, + SAY_PROGRESS_9 = 9, QUEST_SUNKEN_TREASURE = 665, MOB_VENGEFUL_SURGE = 2776 @@ -73,24 +73,24 @@ class npc_professor_phizzlethorpe : public CreatureScript switch (uiPointId) { - case 4:DoScriptText(SAY_PROGRESS_2, me, player);break; - case 5:DoScriptText(SAY_PROGRESS_3, me, player);break; - case 8:DoScriptText(EMOTE_PROGRESS_4, me);break; + case 4:Talk(SAY_PROGRESS_2, player->GetGUID());break; + case 5:Talk(SAY_PROGRESS_3, player->GetGUID());break; + case 8:Talk(EMOTE_PROGRESS_4);break; case 9: { me->SummonCreature(MOB_VENGEFUL_SURGE, -2052.96f, -2142.49f, 20.15f, 1.0f, TEMPSUMMON_CORPSE_DESPAWN, 0); me->SummonCreature(MOB_VENGEFUL_SURGE, -2052.96f, -2142.49f, 20.15f, 1.0f, TEMPSUMMON_CORPSE_DESPAWN, 0); break; } - case 10:DoScriptText(SAY_PROGRESS_5, me, player);break; + case 10:Talk(SAY_PROGRESS_5, player->GetGUID());break; case 11: - DoScriptText(SAY_PROGRESS_6, me, player); + Talk(SAY_PROGRESS_6, player->GetGUID()); SetRun(); break; - case 19:DoScriptText(SAY_PROGRESS_7, me, player); break; + case 19:Talk(SAY_PROGRESS_7, player->GetGUID()); break; case 20: - DoScriptText(EMOTE_PROGRESS_8, me); - DoScriptText(SAY_PROGRESS_9, me, player); + Talk(EMOTE_PROGRESS_8); + Talk(SAY_PROGRESS_9, player->GetGUID()); if (player) CAST_PLR(player)->GroupEventHappens(QUEST_SUNKEN_TREASURE, me); break; @@ -104,7 +104,7 @@ class npc_professor_phizzlethorpe : public CreatureScript void EnterCombat(Unit* /*who*/) { - DoScriptText(SAY_AGGRO, me); + Talk(SAY_AGGRO); } void UpdateAI(const uint32 diff) @@ -122,7 +122,7 @@ class npc_professor_phizzlethorpe : public CreatureScript { if (quest->GetQuestId() == QUEST_SUNKEN_TREASURE) { - DoScriptText(SAY_PROGRESS_1, creature, player); + creature->AI()->Talk(SAY_PROGRESS_1, player->GetGUID()); if (npc_escortAI* pEscortAI = CAST_AI(npc_professor_phizzlethorpeAI, (creature->AI()))) pEscortAI->Start(false, false, player->GetGUID(), quest); diff --git a/src/server/scripts/EasternKingdoms/duskwood.cpp b/src/server/scripts/EasternKingdoms/duskwood.cpp index 872137ee937..5d04489bbca 100644 --- a/src/server/scripts/EasternKingdoms/duskwood.cpp +++ b/src/server/scripts/EasternKingdoms/duskwood.cpp @@ -25,6 +25,14 @@ EndScriptData */ #include "ScriptPCH.h" +enum Yells +{ + YELL_TWILIGHTCORRUPTOR_RESPAWN = 0, + YELL_TWILIGHTCORRUPTOR_AGGRO = 1, + YELL_TWILIGHTCORRUPTOR_KILL = 2, +}; + + /*###### # at_twilight_grove ######*/ @@ -43,11 +51,11 @@ public: TCorrupter->setFaction(14); TCorrupter->SetMaxHealth(832750); } - if (Unit* CorrupterSpeaker = player->SummonCreature(1, player->GetPositionX(), player->GetPositionY(), player->GetPositionZ()-1, 0, TEMPSUMMON_TIMED_DESPAWN, 15000)) + if (Creature* CorrupterSpeaker = player->SummonCreature(1, player->GetPositionX(), player->GetPositionY(), player->GetPositionZ()-1, 0, TEMPSUMMON_TIMED_DESPAWN, 15000)) { CorrupterSpeaker->SetName("Twilight Corrupter"); CorrupterSpeaker->SetVisible(true); - CorrupterSpeaker->MonsterYell("Come, $N. See what the Nightmare brings...", 0, player->GetGUID()); + CorrupterSpeaker->AI()->Talk(YELL_TWILIGHTCORRUPTOR_RESPAWN, player->GetGUID()); } } return false; @@ -89,7 +97,7 @@ public: } void EnterCombat(Unit* /*who*/) { - me->MonsterYell("The Nightmare cannot be stopped!", 0, me->GetGUID()); + Talk(YELL_TWILIGHTCORRUPTOR_AGGRO); } void KilledUnit(Unit* victim) @@ -97,7 +105,7 @@ public: if (victim->GetTypeId() == TYPEID_PLAYER) { ++KillCount; - me->MonsterTextEmote("Twilight Corrupter squeezes the last bit of life out of $N and swallows their soul.", victim->GetGUID(), true); + Talk(YELL_TWILIGHTCORRUPTOR_KILL, victim->GetGUID()); if (KillCount == 3) { diff --git a/src/server/scripts/EasternKingdoms/eversong_woods.cpp b/src/server/scripts/EasternKingdoms/eversong_woods.cpp index 7c09a740d26..4797774ef49 100644 --- a/src/server/scripts/EasternKingdoms/eversong_woods.cpp +++ b/src/server/scripts/EasternKingdoms/eversong_woods.cpp @@ -69,10 +69,10 @@ enum eFaction enum eSays { - TEXT_SECOND_TRIAL_1 = -1000637, - TEXT_SECOND_TRIAL_2 = -1000638, - TEXT_SECOND_TRIAL_3 = -1000639, - TEXT_SECOND_TRIAL_4 = -1000640, + TEXT_SECOND_TRIAL_1 = 0, + TEXT_SECOND_TRIAL_2 = 1, + TEXT_SECOND_TRIAL_3 = 2, + TEXT_SECOND_TRIAL_4 = 3, }; struct Locations @@ -335,16 +335,16 @@ public: switch (paladinPhase) { case 0: - DoScriptText(TEXT_SECOND_TRIAL_1, me); + Talk(TEXT_SECOND_TRIAL_1); break; case 1: - DoScriptText(TEXT_SECOND_TRIAL_2, me); + Talk(TEXT_SECOND_TRIAL_2); break; case 2: - DoScriptText(TEXT_SECOND_TRIAL_3, me); + Talk(TEXT_SECOND_TRIAL_3); break; case 3: - DoScriptText(TEXT_SECOND_TRIAL_4, me); + Talk(TEXT_SECOND_TRIAL_4); break; } } diff --git a/src/server/scripts/EasternKingdoms/ghostlands.cpp b/src/server/scripts/EasternKingdoms/ghostlands.cpp index a5a8bd45cfd..412613572f1 100644 --- a/src/server/scripts/EasternKingdoms/ghostlands.cpp +++ b/src/server/scripts/EasternKingdoms/ghostlands.cpp @@ -34,45 +34,6 @@ EndContentData */ #include "ScriptedEscortAI.h" /*###### -## npc_blood_knight_dawnstar -######*/ - -#define GOSSIP_H_BKD "Take Blood Knight Insignia" - -class npc_blood_knight_dawnstar : public CreatureScript -{ -public: - npc_blood_knight_dawnstar() : CreatureScript("npc_blood_knight_dawnstar") { } - - bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*uiSender*/, uint32 uiAction) - { - player->PlayerTalkClass->ClearMenus(); - if (uiAction == GOSSIP_ACTION_INFO_DEF+1) - { - ItemPosCountVec dest; - uint8 msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, 24226, 1, NULL); - if (msg == EQUIP_ERR_OK) - { - player->StoreNewItem(dest, 24226, 1, true); - player->PlayerTalkClass->ClearMenus(); - } - } - return true; - } - - bool OnGossipHello(Player* player, Creature* creature) - { - if (player->GetQuestStatus(9692) == QUEST_STATUS_INCOMPLETE && !player->HasItemCount(24226, 1, true)) - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_H_BKD, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - - player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID()); - - return true; - } - -}; - -/*###### ## npc_budd_nedreck ######*/ @@ -255,7 +216,6 @@ public: void AddSC_ghostlands() { - new npc_blood_knight_dawnstar(); new npc_budd_nedreck(); new npc_rathis_tomber(); new npc_ranger_lilatha(); diff --git a/src/tools/CMakeLists.txt b/src/tools/CMakeLists.txt index 64a7dcb7276..82f71aed030 100644 --- a/src/tools/CMakeLists.txt +++ b/src/tools/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/> +# Copyright (C) 2008-2012 TrinityCore <http://www.trinitycore.org/> # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without diff --git a/src/tools/map_extractor/CMakeLists.txt b/src/tools/map_extractor/CMakeLists.txt index 641bf00c678..afeb8af99ba 100644 --- a/src/tools/map_extractor/CMakeLists.txt +++ b/src/tools/map_extractor/CMakeLists.txt @@ -1,5 +1,5 @@ # Copyright (C) 2005-2009 MaNGOS project <http://getmangos.com/> -# Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/> +# Copyright (C) 2008-2012 TrinityCore <http://www.trinitycore.org/> # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without diff --git a/src/tools/vmap3_assembler/CMakeLists.txt b/src/tools/vmap3_assembler/CMakeLists.txt index d596fb3e818..ba5d1649d38 100644 --- a/src/tools/vmap3_assembler/CMakeLists.txt +++ b/src/tools/vmap3_assembler/CMakeLists.txt @@ -1,5 +1,5 @@ # Copyright (C) 2005-2009 MaNGOS project <http://getmangos.com/> -# Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/> +# Copyright (C) 2008-2012 TrinityCore <http://www.trinitycore.org/> # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without diff --git a/src/tools/vmap3_extractor/CMakeLists.txt b/src/tools/vmap3_extractor/CMakeLists.txt index 905e9318985..2ff2fd0cf6b 100644 --- a/src/tools/vmap3_extractor/CMakeLists.txt +++ b/src/tools/vmap3_extractor/CMakeLists.txt @@ -1,5 +1,5 @@ # Copyright (C) 2005-2009 MaNGOS project <http://getmangos.com/> -# Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/> +# Copyright (C) 2008-2012 TrinityCore <http://www.trinitycore.org/> # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without |