--HG--
branch : trunk
This commit is contained in:
megamage
2009-03-31 14:17:57 -06:00
13 changed files with 186 additions and 231 deletions
-41
View File
@@ -1,41 +0,0 @@
## Modified for Trinity <http://www.trinitycore.org/>
##
## Permission is hereby granted, free of charge, to any person obtaining a copy
## of this software and associated documentation files (the "Software"), to deal
## in the Software without restriction, including without limitation the rights
## to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
## copies of the Software, and to permit persons to whom the Software is furnished
## to do so, subject to the following conditions:
##
## The above copyright notice and this permission notice shall be included in all
## copies or substantial portions of the Software.
##
## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
## IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
## AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
## WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
## CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
## Process this file with automake to produce Makefile.in
## CPP flags for includes, defines, etc.
AM_CPPFLAGS = -I$(srcdir) -I$(srcdir)/../../include -I$(srcdir)/../../include/g3dlite
noinst_LIBRARIES = libg3dlite.a
libg3dlite_a_SOURCES = \
AABox.cpp \
Box.cpp \
Crypto.cpp \
format.cpp \
Matrix3.cpp \
Plane.cpp \
System.cpp \
Triangle.cpp \
Vector3.cpp \
Vector4.cpp
EXTRA_DIST = \
license.html
-56
View File
@@ -1,56 +0,0 @@
## Modified for Trinity <http://www.trinitycore.org/>
##
## Permission is hereby granted, free of charge, to any person obtaining a copy
## of this software and associated documentation files (the "Software"), to deal
## in the Software without restriction, including without limitation the rights
## to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
## copies of the Software, and to permit persons to whom the Software is furnished
## to do so, subject to the following conditions:
##
## The above copyright notice and this permission notice shall be included in all
## copies or substantial portions of the Software.
##
## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
## IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
## AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
## WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
## CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
## Process this file with automake to produce Makefile.in
## CPP flags for includes, defines, etc.
AM_CPPFLAGS = -I$(srcdir) -I$(srcdir)/../../include -I$(srcdir)/../../include/zlib
## Build zlib as convenience library.
# libzlib conveniece library will later be reused by ...
noinst_LIBRARIES = libzlib.a
libzlib_a_SOURCES = \
adler32.c \
compress.c \
crc32.c \
deflate.c \
example.c \
gzio.c \
infback.c \
inffast.c \
inflate.c \
inftrees.c \
trees.c \
uncompr.c \
zutil.c
## Additional files to include when running 'make dist'
# Nothing yet.
EXTRA_DIST = \
crc32.h \
deflate.h \
inffast.h \
inffixed.h \
inflate.h \
inftrees.h \
trees.h \
zconf.h \
zlib.h \
zutil.h
-132
View File
@@ -1,132 +0,0 @@
## Copyright (c) 2005, Eric Crahen
## Modified for Trinity <http://www.trinitycore.org/>
##
## Permission is hereby granted, free of charge, to any person obtaining a copy
## of this software and associated documentation files (the "Software"), to deal
## in the Software without restriction, including without limitation the rights
## to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
## copies of the Software, and to permit persons to whom the Software is furnished
## to do so, subject to the following conditions:
##
## The above copyright notice and this permission notice shall be included in all
## copies or substantial portions of the Software.
##
## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
## IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
## AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
## WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
## CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
## Process this file with automake to produce Makefile.in
## CPP flags for includes, defines, etc.
AM_CPPFLAGS = -I$(srcdir)/../../include -I$(srcdir)/../../include/zthread
## Build ZThread as shared library.
# libZThread shared library will later be reused by realm list daemon
# and world server daemon.
lib_LTLIBRARIES = libZThread.la
libZThread_la_SOURCES = \
AtomicCount.cxx \
Condition.cxx \
ConcurrentExecutor.cxx \
CountingSemaphore.cxx \
FastMutex.cxx \
FastRecursiveMutex.cxx \
Mutex.cxx \
RecursiveMutexImpl.cxx \
RecursiveMutex.cxx \
Monitor.cxx \
PoolExecutor.cxx \
PriorityCondition.cxx \
PriorityInheritanceMutex.cxx \
PriorityMutex.cxx \
PrioritySemaphore.cxx \
Semaphore.cxx \
SynchronousExecutor.cxx \
Thread.cxx \
ThreadedExecutor.cxx \
ThreadImpl.cxx \
ThreadLocalImpl.cxx \
ThreadQueue.cxx \
Time.cxx \
ThreadOps.cxx
## libtool settings
# API versioning
# Link against dependencies
# How to increase version info:
# - only bug fixes implemented:
# bump the version to LTZTHREAD_CURRENT:LTZTHREAD_REVISION+1:LTZTHREAD_AGE
# - augmented the interface:
# bump the version to LTZTHREAD_CURRENT+1:0:LTZTHREAD_AGE+1
# - broken old interface:
# bump the version to LTZTHREAD_CURRENT+1:0:0
LTZTHREAD_CURRENT = 2
LTZTHREAD_REVISION = 3
LTZTHREAD_AGE = 2
libZThread_la_LDFLAGS = -version-info $(LTZTHREAD_CURRENT):$(LTZTHREAD_REVISION):$(LTZTHREAD_AGE)
## Additional files to include when running 'make dist'
# Header files.
EXTRA_DIST = \
ConditionImpl.h \
Debug.h \
DeferredInterruptionScope.h \
FastLock.h \
FastRecursiveLock.h \
IntrusivePtr.h \
Monitor.h \
MutexImpl.h \
RecursiveMutexImpl.h \
Scheduling.h \
SemaphoreImpl.h \
State.h \
Status.h \
TSS.h \
ThreadImpl.h \
ThreadOps.h \
ThreadQueue.h \
TimeStrategy.h \
config.h
# Implementation specific files.
EXTRA_DIST += \
linux/AtomicCount.cxx \
linux/AtomicFastLock.h \
linux/FastRecursiveLock.h \
macos/FastLock.h \
macos/Monitor.cxx \
macos/Monitor.h \
macos/TSS.h \
macos/ThreadOps.cxx \
macos/ThreadOps.h \
macos/UpTimeStrategy.h \
posix/ConditionRecursiveLock.h \
posix/FastLock.h \
posix/FtimeStrategy.h \
posix/GetTimeOfDayStrategy.h \
posix/Monitor.cxx \
posix/Monitor.h \
posix/PriorityOps.h \
posix/TSS.h \
posix/ThreadOps.cxx \
posix/ThreadOps.h \
solaris/FastRecursiveLock.h \
vanilla/DualMutexRecursiveLock.h \
vanilla/SimpleAtomicCount.cxx \
vanilla/SimpleRecursiveLock.h \
win32/AtomicCount.cxx \
win32/AtomicFastLock.h \
win32/AtomicFastRecursiveLock.h \
win32/FastLock.h \
win32/FastRecursiveLock.h \
win32/Monitor.cxx \
win32/Monitor.h \
win32/PerformanceCounterStrategy.h \
win32/TSS.h \
win32/ThreadOps.cxx \
win32/ThreadOps.h \
win9x/AtomicCount.cxx \
win9x/AtomicFastLock.h
+1
View File
@@ -0,0 +1 @@
UPDATE `gameobject_template` SET `scriptname` = 'go_sacred_fire_of_life' WHERE `entry` = 175944;
+1
View File
@@ -0,0 +1 @@
UPDATE `gameobject_template` SET `scriptname`='go_skull_pile' WHERE `entry`=185913;
+24
View File
@@ -2302,6 +2302,30 @@ bool GossipSelectWithCode( Player *player, Creature *_Creature, uint32 sender, u
return tmpscript->pGossipSelectWithCode(player,_Creature,sender,action,sCode);
}
TRINITY_DLL_EXPORT
bool GOSelect( Player *player, GameObject *_GO, uint32 sender, uint32 action )
{
debug_log("TSCR: Gossip selection, sender: %d, action: %d",sender, action);
Script *tmpscript = m_scripts[_GO->GetGOInfo()->ScriptId];
if(!tmpscript || !tmpscript->pGOSelect) return false;
player->PlayerTalkClass->ClearMenus();
return tmpscript->pGOSelect(player,_GO,sender,action);
}
TRINITY_DLL_EXPORT
bool GOSelectWithCode( Player *player, GameObject *_GO, uint32 sender, uint32 action, const char* sCode )
{
debug_log("TSCR: Gossip selection, sender: %d, action: %d",sender, action);
Script *tmpscript = m_scripts[_GO->GetGOInfo()->ScriptId];
if(!tmpscript || !tmpscript->pGOSelectWithCode) return false;
player->PlayerTalkClass->ClearMenus();
return tmpscript->pGOSelectWithCode(player,_GO,sender,action,sCode);
}
TRINITY_DLL_EXPORT
bool QuestAccept( Player *player, Creature *_Creature, Quest const *_Quest )
{
+2
View File
@@ -45,6 +45,8 @@ struct Script
bool (*pQuestAccept )(Player*, Creature*, Quest const* );
bool (*pGossipSelect )(Player*, Creature*, uint32 , uint32 );
bool (*pGossipSelectWithCode)(Player*, Creature*, uint32 , uint32 , const char* );
bool (*pGOSelect )(Player*, GameObject*, uint32 , uint32 );
bool (*pGOSelectWithCode )(Player*, GameObject*, uint32 , uint32 , const char* );
bool (*pQuestSelect )(Player*, Creature*, Quest const* );
bool (*pQuestComplete )(Player*, Creature*, Quest const* );
uint32 (*pNPCDialogStatus )(Player*, Creature* );
@@ -219,6 +219,20 @@ bool GOHello_go_ethereum_prison(Player *player, GameObject* _GO)
return true;
}
/*######
## go_sacred_fire_of_life
######*/
#define NPC_ARIKARA 10882
bool GOHello_go_sacred_fire_of_life(Player* pPlayer, GameObject* pGO)
{
if (pGO->GetGoType() == GAMEOBJECT_TYPE_GOOBER)
pPlayer->SummonCreature(NPC_ARIKARA, -5008.338, -2118.894, 83.657, 0.874, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000);
return true;
}
void AddSC_go_scripts()
{
Script *newscript;
@@ -283,5 +297,10 @@ void AddSC_go_scripts()
newscript->pGOHello = &GOHello_go_ethereum_prison;
newscript->RegisterSelf();
newscript = new Script;
newscript->Name = "go_sacred_fire_of_life";
newscript->pGOHello = &GOHello_go_sacred_fire_of_life;
newscript->RegisterSelf();
}
@@ -491,6 +491,56 @@ CreatureAI* GetAI_npc_isla_starmaneAI(Creature *_Creature)
return (CreatureAI*)thisAI;
}
/*######
## go_skull_pile
######*/
#define GOSSIP_S_DARKSCREECHER_AKKARAI "Summon Darkscreecher Akkarai"
#define GOSSIP_S_KARROG "Summon Karrog"
#define GOSSIP_S_GEZZARAK_THE_HUNTRESS "Summon Gezzarak the Huntress"
#define GOSSIP_S_VAKKIZ_THE_WINDRAGER "Summon Vakkiz the Windrager"
bool GossipHello_go_skull_pile(Player *player, GameObject* _GO)
{
if (player->GetQuestStatus(11885) == QUEST_STATUS_INCOMPLETE)
{
player->ADD_GOSSIP_ITEM(1, GOSSIP_S_DARKSCREECHER_AKKARAI, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
player->ADD_GOSSIP_ITEM(2, GOSSIP_S_KARROG, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
player->ADD_GOSSIP_ITEM(3, GOSSIP_S_GEZZARAK_THE_HUNTRESS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
player->ADD_GOSSIP_ITEM(4, GOSSIP_S_VAKKIZ_THE_WINDRAGER, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
}
player->SEND_GOSSIP_MENU(_GO->GetGOInfo()->questgiver.gossipID, _GO->GetGUID());
return true;
}
void SendActionMenu_go_skull_pile(Player *player, GameObject* _GO, uint32 action)
{
switch(action)
{
case GOSSIP_ACTION_INFO_DEF + 1:
player->CastSpell(player,40642,false);
break;
case GOSSIP_ACTION_INFO_DEF + 2:
player->CastSpell(player,40640,false);
break;
case GOSSIP_ACTION_INFO_DEF + 3:
player->CastSpell(player,40632,false);
break;
case GOSSIP_ACTION_INFO_DEF + 4:
player->CastSpell(player,40644,false);
break;
}
}
bool GossipSelect_go_skull_pile(Player *player, GameObject* _GO, uint32 sender, uint32 action )
{
switch(sender)
{
case GOSSIP_SENDER_MAIN: SendActionMenu_go_skull_pile(player, _GO, action); break;
}
return true;
}
void AddSC_terokkar_forest()
{
Script *newscript;
@@ -532,5 +582,12 @@ void AddSC_terokkar_forest()
newscript->GetAI = &GetAI_npc_isla_starmaneAI;
newscript->pQuestAccept = &QuestAccept_npc_isla_starmane;
newscript->RegisterSelf();
newscript = new Script;
newscript->Name="go_skull_pile";
newscript->pGOHello = &GossipHello_go_skull_pile;
newscript->pGOSelect = &GossipSelect_go_skull_pile;
newscript->RegisterSelf();
}
+74
View File
@@ -26,6 +26,7 @@
#include "Opcodes.h"
#include "Log.h"
#include "Player.h"
#include "GossipDef.h"
#include "World.h"
#include "ObjectMgr.h"
#include "WorldSession.h"
@@ -68,6 +69,79 @@ void WorldSession::HandleRepopRequestOpcode( WorldPacket & /*recv_data*/ )
GetPlayer()->RepopAtGraveyard();
}
void WorldSession::HandleGossipSelectOptionOpcode( WorldPacket & recv_data )
{
CHECK_PACKET_SIZE(recv_data,8+4+4);
sLog.outDebug("WORLD: CMSG_GOSSIP_SELECT_OPTION");
uint32 option;
uint32 unk;
uint64 guid;
std::string code = "";
recv_data >> guid >> unk >> option;
if(_player->PlayerTalkClass->GossipOptionCoded( option ))
{
// recheck
CHECK_PACKET_SIZE(recv_data,8+4+1);
sLog.outBasic("reading string");
recv_data >> code;
sLog.outBasic("string read: %s", code.c_str());
}
Creature *unit = NULL;
GameObject *go = NULL;
if(IS_CREATURE_GUID(guid))
{
unit = ObjectAccessor::GetNPCIfCanInteractWith(*_player, guid, UNIT_NPC_FLAG_NONE);
if (!unit)
{
sLog.outDebug( "WORLD: HandleGossipSelectOptionOpcode - Unit (GUID: %u) not found or you can't interact with him.", uint32(GUID_LOPART(guid)) );
return;
}
}
else if(IS_GAMEOBJECT_GUID(guid))
{
go = ObjectAccessor::GetGameObject(*_player, guid);
if (!go)
{
sLog.outDebug( "WORLD: HandleGossipSelectOptionOpcode - GameObject (GUID: %u) not found.", uint32(GUID_LOPART(guid)) );
return;
}
}
else
{
sLog.outDebug( "WORLD: HandleGossipSelectOptionOpcode - unsupported GUID type for highguid %u. lowpart %u.", uint32(GUID_HIPART(guid)), uint32(GUID_LOPART(guid)) );
}
// remove fake death
if(GetPlayer()->hasUnitState(UNIT_STAT_DIED))
GetPlayer()->RemoveSpellsCausingAura(SPELL_AURA_FEIGN_DEATH);
if(!code.empty())
{
if(unit)
{
if(!Script->GossipSelectWithCode( _player, unit, _player->PlayerTalkClass->GossipOptionSender( option ), _player->PlayerTalkClass->GossipOptionAction( option ), code.c_str()) )
unit->OnGossipSelect( _player, option );
}
else
Script->GOSelectWithCode( _player, go, _player->PlayerTalkClass->GossipOptionSender( option ), _player->PlayerTalkClass->GossipOptionAction( option ), code.c_str());
}
else
{
if(unit)
{
if(!Script->GossipSelect( _player, unit, _player->PlayerTalkClass->GossipOptionSender( option ), _player->PlayerTalkClass->GossipOptionAction( option )) )
unit->OnGossipSelect( _player, option );
}
else
Script->GOSelect( _player, go, _player->PlayerTalkClass->GossipOptionSender( option ), _player->PlayerTalkClass->GossipOptionAction( option ));
}
}
void WorldSession::HandleWhoOpcode( WorldPacket & recv_data )
{
CHECK_PACKET_SIZE(recv_data,4+4+1+1+4+4+4+4);
+2 -2
View File
@@ -306,7 +306,7 @@ void WorldSession::HandleGossipHelloOpcode( WorldPacket & recv_data )
}
}
void WorldSession::HandleGossipSelectOptionOpcode( WorldPacket & recv_data )
/*void WorldSession::HandleGossipSelectOptionOpcode( WorldPacket & recv_data )
{
CHECK_PACKET_SIZE(recv_data,8+4+4);
@@ -349,7 +349,7 @@ void WorldSession::HandleGossipSelectOptionOpcode( WorldPacket & recv_data )
if (!Script->GossipSelect (_player, unit, _player->PlayerTalkClass->GossipOptionSender (option), _player->PlayerTalkClass->GossipOptionAction (option)))
unit->OnGossipSelect (_player, option);
}
}
}*/
void WorldSession::HandleSpiritHealerActivateOpcode( WorldPacket & recv_data )
{
+2
View File
@@ -64,6 +64,8 @@ bool LoadScriptingModule(char const* libName)
||!(testScript->QuestAccept =(scriptCallQuestAccept )TRINITY_GET_PROC_ADDR(testScript->hScriptsLib,"QuestAccept" ))
||!(testScript->GossipSelect =(scriptCallGossipSelect )TRINITY_GET_PROC_ADDR(testScript->hScriptsLib,"GossipSelect" ))
||!(testScript->GossipSelectWithCode=(scriptCallGossipSelectWithCode)TRINITY_GET_PROC_ADDR(testScript->hScriptsLib,"GossipSelectWithCode"))
||!(testScript->GOSelect =(scriptCallGOSelect )TRINITY_GET_PROC_ADDR(testScript->hScriptsLib,"GOSelect" ))
||!(testScript->GOSelectWithCode =(scriptCallGOSelectWithCode )TRINITY_GET_PROC_ADDR(testScript->hScriptsLib,"GOSelectWithCode" ))
||!(testScript->QuestSelect =(scriptCallQuestSelect )TRINITY_GET_PROC_ADDR(testScript->hScriptsLib,"QuestSelect" ))
||!(testScript->QuestComplete =(scriptCallQuestComplete )TRINITY_GET_PROC_ADDR(testScript->hScriptsLib,"QuestComplete" ))
||!(testScript->NPCDialogStatus =(scriptCallNPCDialogStatus )TRINITY_GET_PROC_ADDR(testScript->hScriptsLib,"NPCDialogStatus" ))
+4
View File
@@ -45,6 +45,8 @@ typedef bool(TRINITY_IMPORT * scriptCallGossipHello) (Player *player, Creature *
typedef bool(TRINITY_IMPORT * scriptCallQuestAccept) (Player *player, Creature *_Creature, Quest const *);
typedef bool(TRINITY_IMPORT * scriptCallGossipSelect)(Player *player, Creature *_Creature, uint32 sender, uint32 action);
typedef bool(TRINITY_IMPORT * scriptCallGossipSelectWithCode)( Player *player, Creature *_Creature, uint32 sender, uint32 action, const char* sCode );
typedef bool(TRINITY_IMPORT * scriptCallGOSelect)(Player *player, GameObject *_GO, uint32 sender, uint32 action);
typedef bool(TRINITY_IMPORT * scriptCallGOSelectWithCode)( Player *player, GameObject *_GO, uint32 sender, uint32 action, const char* sCode );
typedef bool(TRINITY_IMPORT * scriptCallQuestSelect)( Player *player, Creature *_Creature, Quest const* );
typedef bool(TRINITY_IMPORT * scriptCallQuestComplete)(Player *player, Creature *_Creature, Quest const*);
typedef uint32(TRINITY_IMPORT * scriptCallNPCDialogStatus)( Player *player, Creature *_Creature);
@@ -75,6 +77,8 @@ typedef struct
scriptCallQuestAccept QuestAccept;
scriptCallGossipSelect GossipSelect;
scriptCallGossipSelectWithCode GossipSelectWithCode;
scriptCallGOSelect GOSelect;
scriptCallGOSelectWithCode GOSelectWithCode;
scriptCallQuestSelect QuestSelect;
scriptCallQuestComplete QuestComplete;
scriptCallNPCDialogStatus NPCDialogStatus;