1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-06-03 22:57:45 +00:00
This commit is contained in:
Tahir Akhlaq 2018-08-17 11:01:48 +00:00 committed by GitHub
commit 38e4ca6c0f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
387 changed files with 12776 additions and 2916 deletions

2
.gitignore vendored
View file

@ -113,7 +113,7 @@ src/common/Version\.cpp
.mtime_cache
# generated script loader files
src/servers/sapphire_zone/Script/Scripts/*/ScriptLoader.cpp
src/servers/Scripts/*/ScriptLoader.cpp
# cotire generated files/folders
cotire/

View file

@ -51,5 +51,6 @@ add_subdirectory( "src/tools/exd_common_gen" )
add_subdirectory( "src/tools/exd_struct_gen" )
add_subdirectory( "src/tools/exd_struct_test" )
add_subdirectory( "src/tools/quest_parser" )
add_subdirectory( "src/tools/discovery_parser" )
#add_subdirectory("src/tools/pcb_reader")
#add_subdirectory("src/tools/event_object_parser")

View file

@ -47,3 +47,7 @@ ALTER TABLE `charainfo` CHANGE `Mounts` `Mounts` BINARY(15) NULL DEFAULT NULL;
ALTER TABLE `charainfo` CHANGE `Orchestrion` `Orchestrion` BINARY(40) NULL DEFAULT NULL;
ALTER TABLE `charainfo` CHANGE `Minions` `Minions` BINARY(37) NULL DEFAULT NULL;
ALTER TABLE `charainfo` CHANGE `QuestCompleteFlags` `QuestCompleteFlags` VARBINARY(396) NULL DEFAULT NULL;
ALTER TABLE `charainfo` ADD COLUMN `EquipDisplayFlags` INT(3) NULL DEFAULT '0' AFTER `GMRank`;
ALTER TABLE `charainfofriendlist` CHANGE `CharacterId` `ContentId` bigint(20) NULL DEFAULT NULL;
ALTER TABLE `charainfofriendlist` CHANGE `CharacterIdList` `ContentIdList` blob NULL DEFAULT NULL;

4422
sql/update_discovery.sql Normal file

File diff suppressed because it is too large Load diff

View file

@ -481,6 +481,8 @@ namespace Core {
RemoveName = 0xA8,
SetBGM = 0xA1,
ScreenFadeOut = 0xAA,
ZoneIn = 0xC8,
@ -560,9 +562,11 @@ namespace Core {
SetFavorite = 0x1FC,
LearnTeleport = 0x1FD,
ArmoryErrorMsg = 0x201,
AchievementPopup = 0x203,
SetStatusIcon = 0x1F8,
LimitBreakGauge = 0x1F9, // Max level, amount, build type (chop sound), lb type(0=pve lb 1=pvp lb)
SetHomepoint = 0x1FB,
SetFavorite = 0x1FC,
LearnTeleport = 0x1FD,
Unk7 = 0x205, // LogMessage?
AchievementMsg = 0x206,
@ -586,126 +590,38 @@ namespace Core {
Dismount = 0x3a0
};
enum struct ChatType : uint16_t
{
LogKindError,
ServerDebug,
ServerUrgent,
ServerNotice,
Unused4,
Unused5,
Unused6,
Unused7,
Unused8,
Unused9,
Say,
Shout,
Tell,
TellReceive,
Party,
Alliance,
LS1,
LS2,
LS3,
LS4,
LS5,
LS6,
LS7,
LS8,
FreeCompany,
Unused25,
Unused26,
NoviceNetwork,
CustomEmote,
StandardEmote,
Yell,
Unknown31,
PartyUnk2,
Unused33,
Unused34,
Unused35,
Unused36,
Unused37,
Unused38,
Unused39,
Unused40,
BattleDamage,
BattleFailed,
BattleActions,
BattleItems,
BattleHealing,
BattleBeneficial,
BattleDetrimental,
BattleUnk48,
BattleUnk49,
Unused50,
Unused51,
Unused52,
Unused53,
Unused54,
Unused55,
Echo,
SystemMessage,
SystemErrorMessage,
BattleSystem,
GatheringSystem,
NPCMessage,
LootMessage,
Unused63,
CharProgress,
Loot,
Crafting,
Gathering,
NPCAnnouncement,
FCAnnouncement,
FCLogin,
RetainerSale,
PartySearch,
PCSign,
DiceRoll,
NoviceNetworkNotice,
Unknown76,
Unused77,
Unused78,
Unused79,
GMTell,
GMSay,
GMShout,
GMYell,
GMParty,
GMFreeCompany,
GMLS1,
GMLS2,
GMLS3,
GMLS4,
GMLS5,
GMLS6,
GMLS7,
GMLS8,
GMNoviceNetwork,
Unused95,
Unused96,
Unused97,
Unused98,
Unused99,
Unused100
};
SetFestival = 0x386, // param1: festival.exd index
enum EquipDisplayFlags : uint8_t
{
HideNothing = 0x0,
HideHead = 0x1,
HideWeapon = 0x2,
LegacyMark = 0x4,
ToggleOrchestrionUnlock = 0x396,
Dismount = 0x3A0,
// Duty Recorder
BeginReplayAck = 0x3A1,
EndReplayAck = 0x3A2,
// PvP Duel
SetPvPState = 0x5E0, // param3 must be 6 to engage a duel (hardcoded in the client)
EndDuelSession = 0x5E1, // because someone went oob?
StartDuelCountdown = 0x5E2, // begins a countdown; also does some duel bgm thing.
StartDuel = 0x5E3, // actually all it does is set the challenger actor id;
DuelResultScreen = 0x5E4, // win/lose thing, also reset a target id just like what EndDuelSession does.
// Duty Action
SetDutyActionId = 0x5E8, // ContentExAction
SetDutyActionHud = 0x5E9, // disable/enable
SetDutyActionActive = 0x5EA,
SetDutyActionRemaining = 0x5EB,
};
Visor = 0x40,
};
enum SkillType : uint8_t
{
Normal = 0x1,
MountSkill = 0xD,
};
enum EquipDisplayFlags : uint8_t
{
HideNothing = 0x0,
HideHead = 0x1,
HideWeapon = 0x2,
HideLegacyMark = 0x4,
enum SocialCategory : uint8_t
{
@ -734,9 +650,9 @@ namespace Core {
enum class SocialRequestResponse : uint8_t
{
Decline,
Accept,
Cancel,
Decline = 0,
Accept = 1,
Cancel = 2
};
typedef std::vector< PlayerStateFlag > PlayerStateFlagList;

View file

@ -29,7 +29,7 @@ void Core::Db::CharaDbConnection::doPrepareStatements()
"FavoritePoint, RestPoint, StartTown, ActiveTitle, TitleList, Achievement, "
"Aetheryte, HowTo, Minions, Mounts, Orchestrion, EquippedMannequin, ConfigFlags, "
"QuestCompleteFlags, OpeningSequence, QuestTracking, GrandCompany, "
"GrandCompanyRank, Discovery, GMRank, Unlocks, CFPenaltyUntil "
"GrandCompanyRank, Discovery, GMRank, EquipDisplayFlags, Unlocks, CFPenaltyUntil "
"FROM charainfo WHERE CharacterId = ?;", CONNECTION_SYNC );
@ -43,7 +43,7 @@ void Core::Db::CharaDbConnection::doPrepareStatements()
"Class = ?, Status = ?, TotalPlayTime = ?, HomePoint = ?, FavoritePoint = ?, RestPoint = ?, "
"ActiveTitle = ?, TitleList = ?, Achievement = ?, Aetheryte = ?, HowTo = ?, Minions = ?, Mounts = ?, Orchestrion = ?, "
"EquippedMannequin = ?, ConfigFlags = ?, QuestCompleteFlags = ?, OpeningSequence = ?, "
"QuestTracking = ?, GrandCompany = ?, GrandCompanyRank = ?, Discovery = ?, GMRank = ?, Unlocks = ?, "
"QuestTracking = ?, GrandCompany = ?, GrandCompanyRank = ?, Discovery = ?, GMRank = ?, EquipDisplayFlags = ?, Unlocks = ?, "
"CFPenaltyUntil = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
@ -51,6 +51,10 @@ void Core::Db::CharaDbConnection::doPrepareStatements()
"Class, ContentId, BirthDay, BirthMonth "
"FROM charainfo WHERE CharacterId = ?;", CONNECTION_SYNC );
prepareStatement( CHARA_SEL_MINIMAL_FROM_CONTENTID, "SELECT Name, Customize, ModelEquip, TerritoryId, GuardianDeity, "
"Class, ContentId, BirthDay, BirthMonth "
"FROM charainfo WHERE ContentId = ?;", CONNECTION_SYNC );
prepareStatement( CHARA_INS, "INSERT INTO charainfo (AccountId, CharacterId, ContentId, Name, Hp, Mp, "
"Customize, Voice, IsNewGame, TerritoryId, PosX, PosY, PosZ, PosR, ModelEquip, "
"IsNewAdventurer, GuardianDeity, Birthday, BirthMonth, Class, Status, FirstClass, "
@ -97,6 +101,7 @@ void Core::Db::CharaDbConnection::doPrepareStatements()
prepareStatement( CHARA_UP_GRANDCOMPANYRANKS, "UPDATE charainfo SET GrandCompanyRank = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
prepareStatement( CHARA_UP_DISCOVERY, "UPDATE charainfo SET Discovery = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
prepareStatement( CHARA_UP_GMRANK, "UPDATE charainfo SET GMRank = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
prepareStatement( CHARA_UP_EQUIPDISPLAYFLAGS, "UPDATE charainfo SET EquipDisplayFlags = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
prepareStatement( CHARA_UP_UNLOCKS, "UPDATE charainfo SET Unlocks = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
prepareStatement( CHARA_UP_CFPENATLY, "UPDATE charainfo SET CFPenaltyUntil = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
@ -133,7 +138,7 @@ void Core::Db::CharaDbConnection::doPrepareStatements()
/// ITEM GLOBAL
prepareStatement( CHARA_ITEMGLOBAL_INS, "INSERT INTO charaglobalitem ( CharacterId, ItemId, catalogId, UPDATE_DATE ) VALUES ( ?, ?, ?, NOW() );", CONNECTION_BOTH );
// SOCIAL GROUPS
prepareStatement( CHARA_SOCIAL_FRIENDS_INS, "INSERT INTO charainfofriendlist ( ContentId, ContentIdList, InviteDataList, UPDATE_DATE ) VALUES ( ?, ?, ?, NOW() );", CONNECTION_SYNC ); // todo: maybe not sync
}

View file

@ -13,6 +13,7 @@ enum CharaDbStatements : uint32_t
{
CHARA_SEL,
CHARA_SEL_MINIMAL,
CHARA_SEL_MINIMAL_FROM_CONTENTID,
CHARA_SEARCHINFO_SEL,
CHARA_QUEST_SEL,
CHARA_INS,
@ -55,6 +56,7 @@ enum CharaDbStatements : uint32_t
CHARA_UP_GRANDCOMPANYRANKS,
CHARA_UP_DISCOVERY,
CHARA_UP_GMRANK,
CHARA_UP_EQUIPDISPLAYFLAGS,
CHARA_UP_UNLOCKS,
CHARA_UP_CFPENATLY,
CHARA_SEARCHINFO_INS,
@ -75,6 +77,8 @@ enum CharaDbStatements : uint32_t
CHARA_ITEMGLOBAL_INS,
CHARA_SOCIAL_FRIENDS_INS,
MAX_STATEMENTS
};

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,3 @@
/**
* Structural definitions common to all FFXIV:ARR packets.
*/
#ifndef _CORE_NETWORK_PACKETS_COMMON_H
#define _CORE_NETWORK_PACKETS_COMMON_H
@ -25,7 +22,7 @@ namespace Packets {
*
* std::stringstream buf;
* buf << pkt_hdr;
* for (int i = 0; i < n; i++)
* for( int i = 0; i < n; i++ )
* {
* buf << pkt_seg_hdr[i];
* buf << {pkt_seg_data[i]};
@ -46,6 +43,8 @@ namespace Packets {
*
* 0 4 8 12 14 16
* +-------------------------------+---------------+-------+-------+
* | unknown_0 | unknown_8 |
* +-------------------------------+---------------+-------+-------+
* | timestamp | size | cType | count |
* +---+---+-------+---------------+---------------+-------+-------+
* | ? |CMP| ? | ? |
@ -54,13 +53,10 @@ namespace Packets {
*/
struct FFXIVARR_PACKET_HEADER
{
/** Unknown data, no actual use has been determined */
uint64_t unknown_0;
uint64_t unknown_8;
/**
* Represents the number of milliseconds since epoch that the packet was
* sent.
*/
/** Represents the number of milliseconds since epoch that the packet was sent. */
uint64_t timestamp;
/** The size of the packet header and its payload */
uint32_t size;
@ -74,14 +70,14 @@ struct FFXIVARR_PACKET_HEADER
uint32_t unknown_24;
};
inline ostream& operator<<(ostream& os, const FFXIVARR_PACKET_HEADER& hdr)
inline ostream& operator << ( ostream& os, const FFXIVARR_PACKET_HEADER& hdr )
{
return os.write(reinterpret_cast<const char*>(&hdr), sizeof hdr);
return os.write( reinterpret_cast< const char* >( &hdr ), sizeof hdr );
}
inline istream& operator>>(istream& is, FFXIVARR_PACKET_HEADER& hdr)
inline istream& operator >> ( istream& is, FFXIVARR_PACKET_HEADER& hdr )
{
return is.read(reinterpret_cast<char*>(&hdr), sizeof hdr);
return is.read( reinterpret_cast< char* >( &hdr ), sizeof hdr );
}
/**
@ -92,7 +88,7 @@ inline istream& operator>>(istream& is, FFXIVARR_PACKET_HEADER& hdr)
*
* 0 4 8 12 16
* +---------------+---------------+---------------+-------+-------+
* | size | source_actor | target_actor | type | ? |
* | size | source_actor | target_actor | type | pad |
* +---------------+---------------+---------------+-------+-------+
* | |
* : type-specific data of length, size, follows :
@ -109,22 +105,20 @@ struct FFXIVARR_PACKET_SEGMENT_HEADER
uint32_t target_actor;
/** The segment type. (1, 2, 3, 7, 8, 9, 10) */
uint16_t type;
uint16_t _reserved_E;
uint16_t padding;
};
inline ostream& operator<<(ostream& os, const FFXIVARR_PACKET_SEGMENT_HEADER& hdr)
inline ostream& operator << ( ostream& os, const FFXIVARR_PACKET_SEGMENT_HEADER& hdr )
{
return os.write(reinterpret_cast<const char*>(&hdr), sizeof hdr);
return os.write( reinterpret_cast< const char* >( &hdr ), sizeof hdr );
}
inline istream& operator>>(istream& is, FFXIVARR_PACKET_SEGMENT_HEADER& hdr)
inline istream& operator >> ( istream& is, FFXIVARR_PACKET_SEGMENT_HEADER& hdr )
{
return is.read(reinterpret_cast<char*>(&hdr), sizeof hdr);
return is.read( reinterpret_cast< char* >( &hdr ), sizeof hdr );
}
// TODO: Include structures for the individual packet segment types
template <int T> struct FFXIVIpcBasePacket
template < int T > struct FFXIVIpcBasePacket
{
/** Creates a constant representing the IPC type */
enum { _ServerIpcType = T };
@ -133,7 +127,7 @@ template <int T> struct FFXIVIpcBasePacket
struct FFXIVARR_PACKET_RAW
{
FFXIVARR_PACKET_SEGMENT_HEADER segHdr;
std::vector<uint8_t> data;
std::vector< uint8_t > data;
};
/**
@ -142,7 +136,7 @@ struct FFXIVARR_PACKET_RAW
*
* 0 4 6 8 12 16
* +-------+-------+------+----------+---------------+---------------+
* | 14 00 | type | ?? | serverId | timestamp | ??? |
* | 14 00 | type | pad | serverId | timestamp | pad1 |
* +-------+-------+------+----------+---------------+---------------+
* | |
* : data :
@ -153,24 +147,22 @@ struct FFXIVARR_IPC_HEADER
{
uint16_t reserved;
uint16_t type;
uint16_t unknown_2;
uint16_t padding;
uint16_t serverId;
uint32_t timestamp;
uint32_t unknown_C;
uint32_t padding1;
};
inline ostream& operator<<(ostream& os, const FFXIVARR_IPC_HEADER& hdr)
inline ostream& operator << ( ostream& os, const FFXIVARR_IPC_HEADER& hdr )
{
return os.write(reinterpret_cast<const char*>(&hdr), sizeof hdr);
return os.write( reinterpret_cast< const char* >( &hdr ), sizeof hdr );
}
inline istream& operator>>(istream& is, FFXIVARR_IPC_HEADER& hdr)
inline istream& operator >> ( istream& is, FFXIVARR_IPC_HEADER& hdr )
{
return is.read(reinterpret_cast<char*>(&hdr), sizeof hdr);
return is.read( reinterpret_cast< char* >( &hdr ), sizeof hdr );
}
} /* Packets */
} /* Network */
} /* Core */

View file

@ -23,7 +23,7 @@ void Core::Network::Packets::GamePacket::setHeader( uint16_t size, uint16_t type
m_segHdr.type = type;
m_segHdr.source_actor = id1;
m_segHdr.target_actor = id2;
m_segHdr._reserved_E = 0x00;
//m_segHdr._reserved_E = 0x00;
m_subType = subType;
m_timeStamp = static_cast< uint32_t >( time( nullptr ) );
@ -88,7 +88,7 @@ Core::Network::Packets::GamePacket::~GamePacket()
void Core::Network::Packets::GamePacket::savePacket()
{
char filename[20];
sprintf( filename, "dump_0x%x.dat", m_subType );
sprintf( filename, "dump_0x%x_%i.dat", m_subType, Util::getTimeMs() );
FILE * fp = nullptr;
fp = fopen( filename, "wb" );
fwrite( &m_dataBuf[0], 1, m_segHdr.size, fp );

View file

@ -16,11 +16,11 @@ namespace Packets {
// Must forward define these in order to enable the compiler to produce the
// correct template functions.
template <typename T, typename T1>
template < typename T, typename T1 >
class GamePacketNew;
template <typename T, typename T1>
std::ostream& operator<< ( std::ostream& os, const GamePacketNew<T, T1>& packet );
template < typename T, typename T1 >
std::ostream& operator<< ( std::ostream& os, const GamePacketNew< T, T1 >& packet );
template< class T >
using ZoneChannelPacket = GamePacketNew< T, ServerZoneIpcType >;
@ -31,11 +31,11 @@ using ChatChannelPacket = GamePacketNew< T, ServerChatIpcType >;
/**
* The base implementation of a game packet. Needed for parsing packets.
*/
template <typename T1>
class GamePacketNewBase
template < typename T1 >
class FFXIVPacketBase
{
public:
virtual ~GamePacketNewBase() = default;
virtual ~FFXIVPacketBase() = default;
/**
* @brief Gets the IPC type of this packet. (Useful for determining the
* type of a parsed packet.)
@ -49,8 +49,8 @@ public:
* type that represents just the IPC data portion (the bytes after the initial
* 32 byte header information.)
*/
template <typename T, typename T1>
class GamePacketNew : public GamePacketNewBase<T1>
template < typename T, typename T1 >
class GamePacketNew : public FFXIVPacketBase< T1 >
{
public:
/**
@ -58,7 +58,7 @@ public:
* @param sourceActorId The source actor id.
* @param targetActorId The target actor id.
*/
GamePacketNew<T, T1>( uint32_t sourceActorId, uint32_t targetActorId )
GamePacketNew< T, T1 >( uint32_t sourceActorId, uint32_t targetActorId )
{
initialize();
m_segHdr.source_actor = sourceActorId;
@ -69,7 +69,7 @@ public:
* @brief Constructs a new game packet with the specified actors.
* @param sourceActorId The source and target actor id.
*/
GamePacketNew<T, T1>( uint32_t bothActorId )
GamePacketNew< T, T1 >( uint32_t bothActorId )
{
initialize();
m_segHdr.source_actor = bothActorId;
@ -109,7 +109,7 @@ public:
* @param actorId The source actor id.
* @return This IPC packet object (can be used for chaining).
*/
GamePacketNew<T, T1> sourceActor( uint32_t actorId )
GamePacketNew< T, T1 > sourceActor( uint32_t actorId )
{
m_segHdr.source_actor = actorId;
return this;
@ -129,7 +129,7 @@ public:
* @param actorId The target actor id.
* @return This IPC packet object (can be used for chaining).
*/
GamePacketNew<T, T1> targetActor( uint32_t actorId )
GamePacketNew< T, T1 > targetActor( uint32_t actorId )
{
m_segHdr.target_actor = actorId;
return this;
@ -144,7 +144,7 @@ public:
return m_segHdr.target_actor;
};
friend std::ostream& operator<< <> ( std::ostream& os, const GamePacketNew<T, T1>& packet );
friend std::ostream& operator<< <> ( std::ostream& os, const GamePacketNew< T, T1 >& packet );
friend class GamePacketFactory;
@ -205,7 +205,7 @@ private:
};
};
template <typename T, typename T1>
template < typename T, typename T1 >
std::ostream& operator<<( std::ostream& os, const GamePacketNew<T, T1>& packet )
{
#if 0

View file

@ -11,80 +11,67 @@ namespace Core
{
namespace Packets
{
PacketParseResult getHeader(
const std::vector< uint8_t > &buffer,
const uint32_t offset,
FFXIVARR_PACKET_HEADER &header)
PacketParseResult getHeader( const std::vector< uint8_t > &buffer,
const uint32_t offset,
FFXIVARR_PACKET_HEADER &header )
{
const auto headerSize = sizeof( FFXIVARR_PACKET_HEADER );
// Check if we have enough bytes in the buffer.
auto remainingBytes = buffer.size() - offset;
if ( remainingBytes < headerSize )
{
if( remainingBytes < headerSize )
return Incomplete;
}
// Copy packet header.
memcpy( &header, buffer.data() + offset, headerSize );
if ( !checkHeader(header) )
{
if( !checkHeader(header) )
return Malformed;
}
return Success;
}
PacketParseResult getSegmentHeader(
const std::vector< uint8_t > &buffer,
const uint32_t offset,
FFXIVARR_PACKET_SEGMENT_HEADER &header)
PacketParseResult getSegmentHeader( const std::vector< uint8_t > &buffer,
const uint32_t offset,
FFXIVARR_PACKET_SEGMENT_HEADER &header )
{
const auto headerSize = sizeof( FFXIVARR_PACKET_SEGMENT_HEADER );
// Check if we have enough bytes in the buffer.
auto remainingBytes = buffer.size() - offset;
if (remainingBytes < headerSize)
{
if( remainingBytes < headerSize )
return Incomplete;
}
// Copy segment header
memcpy(&header, buffer.data() + offset, headerSize);
memcpy( &header, buffer.data() + offset, headerSize );
return Success;
}
PacketParseResult getPackets(
const std::vector< uint8_t > &buffer,
const uint32_t offset,
const FFXIVARR_PACKET_HEADER &packetHeader,
std::vector< FFXIVARR_PACKET_RAW > &packets)
PacketParseResult getPackets( const std::vector< uint8_t > &buffer,
const uint32_t offset,
const FFXIVARR_PACKET_HEADER &packetHeader,
std::vector< FFXIVARR_PACKET_RAW > &packets )
{
// sanity check: check there's enough bytes in the buffer
const auto bytesExpected = packetHeader.size - sizeof(struct FFXIVARR_PACKET_HEADER);
if ( buffer.size() - offset < bytesExpected )
{
const auto bytesExpected = packetHeader.size - sizeof( struct FFXIVARR_PACKET_HEADER );
if( buffer.size() - offset < bytesExpected )
return Incomplete;
}
// Loop each message
uint32_t count = 0;
uint32_t bytesProcessed = 0;
while ( count < packetHeader.count )
while( count < packetHeader.count )
{
FFXIVARR_PACKET_RAW rawPacket;
// Copy ipc packet message
const auto packetResult = getPacket(buffer, offset + bytesProcessed, rawPacket);
if ( packetResult != Success )
{
const auto packetResult = getPacket( buffer, offset + bytesProcessed, rawPacket );
if( packetResult != Success )
return packetResult;
}
// NOTE: isn't rawPacket is allocated on stack?
// why is okay to do this?
// why is okay to do this?
packets.push_back( rawPacket );
// Add message size and count
@ -94,34 +81,25 @@ namespace Core
// sanity check: check if we processed all bytes.
// this check can fail if size of messages don't add up to size reported from packet header.
if ( bytesExpected != bytesProcessed )
{
if( bytesExpected != bytesProcessed )
return Malformed;
}
return Success;
}
PacketParseResult getPacket(
const std::vector< uint8_t > &buffer,
const uint32_t offset,
FFXIVARR_PACKET_RAW &packet
)
PacketParseResult getPacket( const std::vector< uint8_t > &buffer, const uint32_t offset,
FFXIVARR_PACKET_RAW &packet )
{
// Copy segment header
const auto headerResult = getSegmentHeader(buffer, offset, packet.segHdr);
if ( headerResult != Success )
{
const auto headerResult = getSegmentHeader( buffer, offset, packet.segHdr );
if( headerResult != Success )
return headerResult;
}
// Check header sanity and it's size
if ( !checkSegmentHeader( packet.segHdr ) )
{
if( !checkSegmentHeader( packet.segHdr ) )
return Malformed;
}
const auto dataOffset = offset + sizeof(struct FFXIVARR_PACKET_SEGMENT_HEADER);
const auto dataOffset = offset + sizeof( struct FFXIVARR_PACKET_SEGMENT_HEADER );
const auto dataSize = packet.segHdr.size;
// Allocate data buffer and copy
@ -131,30 +109,24 @@ namespace Core
return Success;
}
bool checkHeader(const FFXIVARR_PACKET_HEADER &header)
bool checkHeader( const FFXIVARR_PACKET_HEADER &header )
{
// Max size of the packet is capped at 1MB for now.
if ( header.size > 1 * 1024 * 1024 )
{
if( header.size > 1 * 1024 * 1024 )
return false;
}
// Max number of message is capped at 255 for now.
if ( header.count > 255 )
{
if( header.count > 255 )
return false;
}
return true;
}
bool checkSegmentHeader(const FFXIVARR_PACKET_SEGMENT_HEADER &header)
bool checkSegmentHeader( const FFXIVARR_PACKET_SEGMENT_HEADER &header )
{
// Max size of individual message is capped at 256KB for now.
if ( header.size > 256 * 1024 )
{
if( header.size > 256 * 1024 )
return false;
}
return true;
}

View file

@ -7,14 +7,14 @@
#include <chrono>
Core::Network::Packets::PacketContainer::PacketContainer( void )
Core::Network::Packets::PacketContainer::PacketContainer()
{
memset( &m_ipcHdr, 0, sizeof( FFXIVARR_PACKET_HEADER ) );
m_ipcHdr.size = sizeof( FFXIVARR_PACKET_HEADER );
m_ipcHdr.count = 0;
}
Core::Network::Packets::PacketContainer::~PacketContainer( void )
Core::Network::Packets::PacketContainer::~PacketContainer()
{
m_entryList.clear();
}

View file

@ -16,14 +16,14 @@ class GamePacket;
class PacketContainer
{
public:
PacketContainer( void );
~PacketContainer( void );
PacketContainer();
~PacketContainer();
void addPacket( GamePacket pEntry );
FFXIVARR_PACKET_HEADER m_ipcHdr;
std::vector<GamePacket> m_entryList;
std::vector< GamePacket > m_entryList;
std::string toString();

View file

@ -45,11 +45,10 @@ namespace Packets {
enum ServerZoneIpcType : uint16_t
{
// static opcode ( the ones that rarely if ever change )
// static opcode ( the ones that rarely, if ever, change )
Ping = 0x0065,
Init = 0x0066,
ActorSpawn = 0x0190, // DEPRECATED
ActorFreeSpawn = 0x0191,
InitZone = 0x019A,
@ -62,130 +61,132 @@ namespace Packets {
///////////////////////////////////////////////////
ChatBanned = 0x006B,
Logout = 0x0077,
Logout = 0x0077, // updated 4.3
CFNotify = 0x0078,
CFMemberStatus = 0x0079,
CFDutyInfo = 0x007A,
CFPlayerInNeed = 0x007F,
SocialRequestError = 0x00AD,
Playtime = 0x00DF, // updated 4.2
CFRegistered = 0x00B8, // updated 4.1
CancelAllianceForming = 0x00C6, // updated 4.2
Chat = 0x00E1, // updated 4.2
SocialRequestResponse = 0x00E5, // updated 4.1
SocialRequestReceive = 0x00E6, // updated 4.2
SocialList = 0x00E7, // updated 4.2
UpdateSearchInfo = 0x00EA, // updated 4.2
InitSearchInfo = 0x00EB, // updated 4.2
Chat = 0x00F7, // updated 4.3
SocialList = 0x00FD, // updated 4.3
ServerNotice = 0x00F0, // updated 4.2
SetOnlineStatus = 0x00F1, // updated 4.2
UpdateSearchInfo = 0x0100, // updated 4.3
InitSearchInfo = 0x0101, // updated 4.3
CountdownInitiate = 0x00FB, // updated 4.2
CountdownCancel = 0x00FC, // updated 4.2
ServerNotice = 0x0106, // updated 4.3
SetOnlineStatus = 0x0107, // updated 4.3
BlackList = 0x00FF, // updated 4.2
CountdownInitiate = 0x0111, // updated 4.3
CountdownCancel = 0x0112, // updated 4.3
BlackList = 0x0115, // updated 4.3
LogMessage = 0x00D0,
LinkshellList = 0x0106, // updated 4.2
SetCharacterFCInfo = 0x0114, // updated 4.2
StatusEffectList = 0x0125, // updated 4.2
Effect = 0x0128, // updated 4.2
PersistantEffect = 0x013B, // updated 4.2
LinkshellList = 0x011C, // updated 4.3
SetCharaFCTag = 0x013B, // updated 4.3
SetFreeCompanyInfo = 0x013D, // updated 4.3
StatusEffectList = 0x014E, // updated 4.3
Effect = 0x0151, // updated 4.3
PersistantEffect = 0x0158, // updated 4.3
GCAffiliation = 0xCCFC, // OUTDATED
PlayerSpawn = 0x015C, // updated 4.2
NpcSpawn = 0x015D, // updated 4.2
ActorMove = 0x015E, // updated 4.2
ActorSetPos = 0x0160, // updated 4.2
PlayerSpawn = 0x0172, // updated 4.3
NpcSpawn = 0x0173, // updated 4.3
ActorMove = 0x0174, // updated 4.3
ActorSetPos = 0x0176, // updated 4.3
ActorCast = 0x0162, // updated 4.2
ActorCast = 0x0178, // updated 4.3
HateList = 0x0165, // updated 4.2
HateList = 0x017B, // updated 4.3
ObjectSpawn = 0x0167, // updated 4.2
ObjectDespawn = 0x0168, // updated 4.2
UpdateClassInfo = 0x0169, // updated 4.2
InitUI = 0x016B, // updated 4.2
PlayerStats = 0x016C, // updated 4.2
ActorOwner = 0x016D, // updated 4.2 ?
PlayerStateFlags = 0x016E, // updated 4.2
PlayerClassInfo = 0x016F, // updated 4.2
ModelEquip = 0x0170, // updated 4.2
ItemInfo = 0x017A, // updated 4.2
ContainerInfo = 0x017B, // updated 4.2
InventoryTransactionFinish = 0x017C, // updated 4.2
InventoryTransaction = 0x017D, // updated 4.2
CurrencyCrystalInfo = 0x017E, // updated 4.2
ObjectSpawn = 0x017D, // updated 4.3
ObjectDespawn = 0x017E, // updated 4.3
InventoryActionAck = 0x0180, // updated 4.2 ?
UpdateInventorySlot = 0x0181, // updated 4.2
EventPlay = 0x018E, // updated 4.2
DirectorPlayScene = 0x0192, // updated 4.2
InitUI = 0x0181, // updated 4.3
PlayerStats = 0x0182, // updated 4.3
ActorOwner = 0x0183, // updated 4.3 ?
PlayerStateFlags = 0x0184, // updated 4.3
PlayerClassInfo = 0x0185, // updated 4.3
ModelEquip = 0x0186, // updated 4.3
EventStart = 0x0198, // updated 4.2
EventFinish = 0x0199, // updated 4.2
UpdateClassInfo = 0x018A, // updated 4.3
ItemInfo = 0x0190, // updated 4.3
ContainerInfo = 0x0192, // updated 4.3
InventoryTransactionFinish = 0x0193, // updated 4.3
InventoryTransaction = 0x0194, // updated 4.3
CurrencyCrystalInfo = 0x0197, // updated 4.3
UpdateInventorySlot = 0x0198, // updated 4.3
EventPlay = 0x01A6, // updated 4.3
DirectorPlayScene = 0x01AA, // updated 4.3
EventStart = 0x01AF, // updated 4.3
EventFinish = 0x01B0, // updated 4.3
EventLinkshell = 0x1169,
QuestMessage = 0x01B8, // updated 4.2
QuestTracker = 0x01BD, // updated 4.2
QuestActiveList = 0x01C3, // updated 4.3
QuestUpdate = 0x01C4, // updated 4.3
QuestCompleteList = 0x01C5, // updated 4.3
QuestFinish = 0x01B0, // updated 4.2
MSQTrackerComplete = 0x01B1, // updated 4.2
MSQTrackerProgress = 0x01B2, // updated 4.2
QuestFinish = 0x01C6, // updated 4.3
MSQTrackerComplete = 0x01C7, // updated 4.3
MSQTrackerProgress = 0x01C8, // updated 4.3
QuestActiveList = 0x01AD, // updated 4.2
QuestMessage = 0x01CE, // updated 4.3
QuestUpdate = 0x01AE, // updated 4.2
QuestCompleteList = 0x01AF, // updated 4.2
QuestTracker = 0x01D3, // updated 4.3
Mount = 0x01CD, // updated 4.2
Mount = 0x01E3, // updated 4.3
DirectorVars = 0x01CF, // updated 4.2
WeatherChange = 0x01EA, // updated 4.2
PlayerTitleList = 0x01EB, // updated 4.2
Discovery = 0x01EC, // updated 4.2
EorzeaTimeOffset = 0x01EE, // updated 4.2
EquipDisplayFlags = 0x01FA, // updated 4.2
DirectorVars = 0x01E5, // updated 4.3
CFAvailableContents = 0x01FD, // updated 4.2
PrepareZoning = 0x027C, // updated 4.2
ActorGauge = 0x027D, // updated 4.2
WeatherChange = 0x0200, // updated 4.3
PlayerTitleList = 0x0201, // updated 4.3
Discovery = 0x0202, // updated 4.3
EorzeaTimeOffset = 0x0204, // updated 4.3
EquipDisplayFlags = 0x0210, // updated 4.3
DuelChallenge = 0x0277, // 4.2; this is responsible for opening the ui
PerformNote = 0x0286, // updated 4.3
PrepareZoning = 0x0291, // updated 4.3
ActorGauge = 0x0292, // updated 4.3
PerformNote = 0x0286, // updated 4.2
// Unknown IPC types that still need to be sent
// TODO: figure all these out properly
IPCTYPE_UNK_320 = 0x0235, // updated 4.2
IPCTYPE_UNK_322 = 0x0237, // updated 4.2
IPCTYPE_UNK_320 = 0x024C, // updated 4.3
IPCTYPE_UNK_322 = 0x024E, // updated 4.3
};
// TODO: Include structures for the individual packet segment types
/**
* Client IPC Zone Type Codes.
*/
enum ClientZoneIpcType : uint16_t
{
PingHandler = 0x0065, // unchanged 4.2
InitHandler = 0x0066, // unchanged 4.2
PingHandler = 0x0065, // unchanged 4.3
InitHandler = 0x0066, // unchanged 4.3
FinishLoadingHandler = 0x0069, // unchanged 4.2
FinishLoadingHandler = 0x0069, // unchanged 4.3
CFCommenceHandler = 0x006F,
@ -193,22 +194,24 @@ namespace Packets {
CFRegisterDuty = 0x0071,
CFRegisterRoulette = 0x0072,
PlayTimeHandler = 0x0073, // unchanged 4.2
LogoutHandler = 0x0074, // unchanged 4.2
PlayTimeHandler = 0x0073, // unchanged 4.3
LogoutHandler = 0x0074, // unchanged 4.3
CFDutyInfoHandler = 0x0078, // updated 4.2
SocialReqSendHandler = 0x00AE, // updated 4.1
CreateCrossWorldLS = 0x00AF, // updated 4.3
ChatHandler = 0x00C7, // updated 4.2
ChatHandler = 0x00D3, // updated 4.3
SocialListHandler = 0x00CF, // updated 4.2
ReqSearchInfoHandler = 0x00D4, // updated 4.2
SetSearchInfoHandler = 0x00D2, // updated 4.2
SocialListHandler = 0x00DB, // updated 4.3
ReqSearchInfoHandler = 0x00E0, // updated 4.3
SetSearchInfoHandler = 0x00DE, // updated 4.3
BlackListHandler = 0x00E0, // updated 4.2
BlackListHandler = 0x00EC, // updated 4.3
PlayerSearchHandler = 0x00E2, // updated 4.2
LinkshellListHandler = 0x00E8, // updated 4.2
LinkshellListHandler = 0x00F4, // updated 4.3
FcInfoReqHandler = 0x011A, // updated 4.2
@ -217,34 +220,34 @@ namespace Packets {
ReqCountdownInitiate = 0x012C, // updated 4.2
ReqCountdownCancel = 0x012D, // updated 4.2
ZoneLineHandler = 0x0130, // updated 4.2
ActionHandler = 0x0131, // updated 4.2
DiscoveryHandler = 0x0132, // updated 4.2
ZoneLineHandler = 0x013C, // updated 4.3
ActionHandler = 0x013D, // updated 4.3
DiscoveryHandler = 0x013E, // updated 4.3
SkillHandler = 0x0134, // updated 4.2
GMCommand1 = 0x0135, // updated 4.2
GMCommand2 = 0x0136, // updated 4.2
UpdatePositionHandler = 0x0138, // updated 4.2
UpdatePositionInstance = 0x0177, // updated 4.2
SkillHandler = 0x0140, // updated 4.3
GMCommand1 = 0x0141, // updated 4.3
GMCommand2 = 0x0142, // updated 4.3
InventoryModifyHandler = 0x013F, // updated 4.2
UpdatePositionHandler = 0x0144, // updated 4.3
UpdatePositionInstance = 0x0183, // updated 4.3
TalkEventHandler = 0x0148, // updated 4.2
EmoteEventHandler = 0x0149, // updated 4.2
WithinRangeEventHandler = 0x014A, // updated 4.2
OutOfRangeEventHandler = 0x014B, // updated 4.2
EnterTeriEventHandler = 0x014C, // updated 4.2
InventoryModifyHandler = 0x014B, // updated 4.3
ReturnEventHandler = 0x0151, // updated 4.2
TradeReturnEventHandler = 0x0152, // updated 4.2
TalkEventHandler = 0x0154, // updated 4.3
EmoteEventHandler = 0x0155, // updated 4.3
WithinRangeEventHandler = 0x0156, // updated 4.3
OutOfRangeEventHandler = 0x0157, // updated 4.3
EnterTeriEventHandler = 0x0158, // updated 4.3
ReturnEventHandler = 0x015D, // updated 4.3
TradeReturnEventHandler = 0x015E, // updated 4.3
LinkshellEventHandler = 0x0144, // updated 4.1 ??
LinkshellEventHandler1 = 0x0145, // updated 4.1 ??
LinkshellEventHandler = 0x0150, // updated 4.1 ??
LinkshellEventHandler1 = 0x0151, // updated 4.1 ??
PerformNoteHandler = 0x0160,
PerformNoteHandler = 0x029B, // updated 4.3
ReqEquipDisplayFlagsChange = 0x016C, // updated 4.2
ReqEquipDisplayFlagsChange = 0x0178, // updated 4.3
};

View file

@ -87,8 +87,10 @@ struct FFXIVIpcCharList : FFXIVIpcBasePacket<LobbyCharList>
uint32_t index;
uint32_t padding2;
uint16_t serverId;
uint16_t serverId1;
char nameChara[32];
char nameServer[32];
char nameServer1[32];
char charDetailJson[1030];
} charaDetails[2];

View file

@ -82,25 +82,28 @@ struct FFXIVIpcPlayTime : FFXIVIpcBasePacket<Playtime>
struct PlayerEntry {
uint64_t contentId;
uint32_t timestamp;
uint8_t bytes[4];
uint32_t padding;
uint8_t status; // bitmask. friend: if it's a request, if added, recipient/sender
uint8_t unknown; // maybe bitmask? a value of 4 sets it to linkshell request
uint8_t entryIcon; // observed in friend group icon, sideffects for displaying text
uint8_t unavailable; // bool
uint16_t zoneId;
uint8_t grandCompany;
uint8_t unknown_43_1;
uint8_t unknown_43_2;
uint8_t grandCompany;
uint8_t clientLanguage;
uint8_t knownLanguages; // bitmask, J 0x01, E 0x02, D 0x04, F 0x08
uint8_t searchComment; // bool
char bytes1[6];
uint8_t knownLanguages; // bitmask, J 0x01, E 0x02, D 0x04, F 0x08
uint8_t searchComment; // bool
char bytes1[4];
uint64_t onlineStatusMask;
Common::ClassJob classJob;
uint8_t padding;
uint8_t padding_1;
uint16_t level;
uint16_t padding2;
uint16_t padding_2;
uint8_t one;
char name[0x20];
char fcTag[5];
uint32_t unknown_p1; // Added 4.2
};
struct FFXIVIpcSocialRequestReceive : FFXIVIpcBasePacket<SocialRequestReceive>
@ -123,6 +126,8 @@ struct FFXIVIpcSocialRequestReceive : FFXIVIpcBasePacket<SocialRequestReceive>
struct FFXIVIpcSocialRequestError : FFXIVIpcBasePacket<SocialRequestError>
{
uint32_t unknown_p1; // Added on 4.2, unknown. Possibly padding/crossworld related
uint32_t unknown_p2;
uint32_t messageId; // if 0 then type's message is used (type must 2/4/5 or it wont print)
Common::SocialCategory category; // 2 - friend request, 4 - fc petition, 5 - fc invitation, anything else and wont print
uint8_t unknown; // possibly padding
@ -136,7 +141,8 @@ struct FFXIVIpcSocialRequestResponse : FFXIVIpcBasePacket<SocialRequestResponse>
uint64_t contentId;
uint32_t unknown;
Common::SocialCategory category; // Common::SocialCategory
Common::SocialRequestResponse response; // Common::SocialRequestResponse
Common::SocialRequestExecute execute; // Common::SocialRequestResponse
uint8_t unknown2; // possibly padding
char name[0x20];
uint16_t padding;
};
@ -654,37 +660,14 @@ struct FFXIVIpcInitZone : FFXIVIpcBasePacket<InitZone>
*/
struct FFXIVIpcInitUI : FFXIVIpcBasePacket<InitUI>
{
// plain C types for a bit until the packet is actually fixed.
// makes conversion between different editors easier.
uint64_t contentId;
uint32_t unknown8;
uint32_t unknownC;
uint32_t charId;
uint32_t restedExp;
uint16_t unknown18;
uint8_t maxLevel;
uint8_t expansion;
uint8_t unknown1A;
uint8_t race;
uint8_t tribe;
uint8_t gender;
uint8_t currentJob;
uint8_t currentClass;
uint8_t deity;
uint8_t namedayMonth;
uint8_t namedayDay;
uint8_t cityState;
uint8_t homepoint;
uint8_t unknown26; // 2 if "warrior of light"
uint8_t petHotBar;
uint8_t companionRank;
uint8_t companionStars;
uint8_t companionSp;
uint8_t companionUnk2B;
uint8_t companionColor;
uint8_t companionFavoFeed;
uint8_t companionUnk2E;
float companionTimePassed;
uint32_t companionCurrentExp;
uint32_t unknown38;
uint32_t unknown3C;
uint32_t fishCaught;
uint32_t useBaitCatalogId;
@ -694,60 +677,91 @@ struct FFXIVIpcInitUI : FFXIVIpcBasePacket<InitUI>
uint16_t pvpStats[6];
uint16_t playerCommendations;
uint16_t pvpStats1;
uint8_t frontlineCampaigns[4];
uint16_t frontlineCampaigns[4];
uint16_t frontlineCampaignsWeekly;
uint8_t currentRelic;
uint8_t currentBook;
uint8_t masterCrafterMask;
uint8_t unknown69;
uint8_t unknown6A;
uint8_t unknown6B;
uint8_t unknown6C[4];
uint8_t unknown70[61];
uint8_t preNamePadding;
char name[32];
uint8_t unknownOword[16];
uint8_t unknownDE[2];
uint16_t currentRelic;
uint16_t currentBook;
uint16_t masterCrafterMask;
uint16_t unknown69;
uint16_t unknown6A;
uint16_t unknown6B;
uint16_t unknown6C[4];
uint16_t unknown50[34];
uint16_t unknown18;
uint16_t maxLevel;
uint16_t expansion;
uint16_t unknown76;
uint16_t race;
uint16_t tribe;
uint16_t gender;
uint16_t currentJob;
uint16_t currentClass;
uint16_t deity;
uint16_t namedayMonth;
uint16_t namedayDay;
uint16_t cityState;
uint16_t homepoint;
uint16_t unknown26;
uint16_t petHotBar;
uint16_t companionRank;
uint16_t companionStars;
uint16_t companionSp;
uint16_t companionUnk2B;
uint16_t companionColor;
uint16_t companionFavoFeed;
uint16_t companionUnk89;
uint16_t companionUnk90[5];
uint16_t unknown90[7];
uint16_t unknown9E;
uint16_t unknownA0;
uint32_t exp[25];
uint16_t unknown564[16];
uint32_t pvpFrontlineOverall1st;
uint32_t pvpFrontlineOverall2nd;
uint32_t pvpFrontlineOverall3rd;
uint16_t relicBookCompletion1[4];
uint16_t levels[25];
uint16_t levelsPadding;
uint32_t exp[25];
uint8_t unlockBitmask[64];
uint8_t aetheryte[16];
uint8_t discovery[421];
uint8_t howto[33];
uint8_t minions[37];
uint8_t chocoboTaxiMask[8];
uint8_t contentClearMask[108];
uint8_t contentClearPadding;
uint16_t unknown428[8];
uint8_t companionBardingMask[8];
uint8_t companionEquippedHead;
uint8_t companionEquippedBody;
uint8_t companionEquippedFeet;
uint8_t companionUnk4[4];
uint8_t companion_fields[11];
uint8_t companion_name[21];
uint8_t companionDefRank;
uint8_t companionAttRank;
uint8_t companionHealRank;
uint8_t mountGuideMask[15];
uint8_t fishingGuideMask[89];
uint8_t fishingSpotVisited[25];
uint16_t unknown15C[8];
uint16_t fishingRecordsFish[26];
uint16_t fishingRecordsFishWeight[26];
uint8_t unknownMask554[15];
uint8_t unknownMask4Padding;
uint8_t unknown564[19];
uint8_t rankAmalJaa;
uint8_t rankSylph;
uint8_t rankKobold;
uint8_t rankSahagin;
uint8_t rankIxal;
uint8_t rankVanu;
uint8_t rankVath;
uint8_t rankMoogle;
uint8_t rankKojin;
uint8_t rankAnata;
uint16_t unknownMask554[44];
uint16_t companion_name[21];
uint16_t companionDefRank;
uint16_t companionAttRank;
uint16_t companionHealRank;
uint16_t mountGuideMask[16];
char name[32];
uint16_t unknownOword[16];
uint16_t unknown258;
uint16_t unlockBitmask[64];
uint16_t aetheryte[17];
uint16_t discovery[421];
uint16_t howto[33];
uint16_t minions[38];
uint16_t chocoboTaxiMask[8];
uint16_t contentClearMask[111];
uint16_t contentClearPadding;
uint16_t unknown428[8];
uint16_t companionBardingMask[8];
uint16_t companionEquippedHead;
uint16_t companionEquippedBody;
uint16_t companionEquippedFeet;
uint16_t companionUnk4[4];
uint16_t companion_fields[11];
uint16_t fishingGuideMask[89];
uint16_t fishingSpotVisited[25];
uint16_t unknownMask4Padding;
uint16_t rankAmalJaa;
uint16_t rankSylph;
uint16_t rankKobold;
uint16_t rankSahagin;
uint16_t rankIxal;
uint16_t rankVanu;
uint16_t rankVath;
uint16_t rankMoogle;
uint16_t rankKojin;
uint16_t rankAnata;
uint16_t expAmalJaa;
uint16_t expSylph;
uint16_t expKobold;
@ -758,42 +772,38 @@ struct FFXIVIpcInitUI : FFXIVIpcBasePacket<InitUI>
uint16_t expMoogle;
uint16_t expKojin;
uint16_t expAnata;
uint8_t unknown596[10];
uint16_t unknown596[10];
uint16_t unknown5A0[5];
uint8_t unknownMask59E[5];
uint8_t unknown5A3[18];
uint8_t unknownMask5C1[28];
uint8_t unknown_03411;
uint16_t unknownMask59E[5];
uint16_t unknown5A3[18];
uint16_t unknownMask5C1[28];
uint16_t unknown_03411;
uint32_t unknownDword5E0;
uint8_t relicBookCompletion[12];
uint8_t sightseeingMask[26];
uint16_t unknown_XXX;
uint32_t pvpFrontlineOverall1st;
uint32_t pvpFrontlineOverall2nd;
uint32_t pvpFrontlineOverall3rd;
uint16_t pvpFrontlineWeekly1st;
uint16_t pvpFrontlineWeekly2nd;
uint16_t pvpFrontlineWeekly3rd;
uint8_t unknown61E;
uint8_t unknown61F[32];
uint8_t unknown63F[22];
uint8_t tripleTriadCards[28];
uint8_t unknown671[11];
uint8_t unknownMask67C[22];
uint8_t unknown692[3];
uint8_t orchestrionMask[40];
uint8_t hallOfNoviceCompleteMask[3];
uint8_t unknownMask6C0[11];
uint8_t unknownMask6CB[16];
uint8_t unknown6DB[14];
uint8_t unlockedRaids[28];
uint8_t unlockedDungeons[18];
uint8_t unlockedGuildhests[10];
uint8_t unlockedTrails[7];
uint8_t unlockedPvp[5];
uint8_t unknownMask72D[28];
uint8_t unknownMask749[18];
uint8_t unknown749[23];
uint16_t relicBookCompletion2[8];
uint16_t sightseeingMask[26];
uint16_t unknown_XXX;
uint16_t unknown61E[20];
uint16_t unknown656[29];
uint16_t unknown63F[22];
uint16_t tripleTriadCards[28];
uint16_t unknown671[11];
uint16_t unknownMask67C[22];
uint16_t unknown692[3];
uint16_t orchestrionMask[40];
uint16_t hallOfNoviceCompleteMask[3];
uint16_t unknownMask6C0[11];
uint16_t unknownMask6CB[16];
uint16_t unknown6DB[14];
uint16_t unlockedRaids[28];
uint16_t unlockedDungeons[18];
uint16_t unlockedGuildhests[10];
uint16_t unlockedTrials[7];
uint16_t unlockedPvp[5];
uint16_t unknownMask72D[28];
};
/**
@ -1044,7 +1054,7 @@ struct FFXIVIpcEventStart : FFXIVIpcBasePacket<EventStart>
/* 000D */ uint8_t param2;
/* 000E */ uint16_t padding;
/* 0010 */ uint32_t param3;
/* 0014 */ uint32_t contentId;
/* 0014 */ uint32_t padding1;
};
@ -1081,7 +1091,8 @@ struct FFXIVIpcDirectorPlayScene : FFXIVIpcBasePacket<DirectorPlayScene>
uint8_t param4;
uint8_t padding1[3];
uint32_t param5;
uint8_t unknown[0x40];
uint8_t unknown8[0x08];
uint8_t unknown[0x38];
};
/**
@ -1407,6 +1418,18 @@ struct FFXIVIpcObjectDespawn : FFXIVIpcBasePacket<ObjectDespawn>
uint8_t padding[7];
};
struct FFXIVIpcDuelChallenge : FFXIVIpcBasePacket<DuelChallenge>
{
uint8_t otherClassJobId;
uint8_t otherLevel; // class job level
uint8_t challengeByYou; // 0 if the other challenges you, 1 if you challenges the other.
uint8_t otherItemLevel;
uint32_t otherActorId;
char otherName[32];
};
} /* Server */
} /* Packets */

View file

@ -14,7 +14,7 @@ set(RUNTIME_OUTPUT_DIRECTORY "${SCRIPT_LIB_DIR}")
file(GLOB children "${CMAKE_CURRENT_SOURCE_DIR}/*" )
foreach(_scriptDir ${children})
get_filename_component(_name "${_scriptDir}" NAME_WE)
if(IS_DIRECTORY ${_scriptDir} AND NOT ${_name} MATCHES "CMakeFiles")
if(IS_DIRECTORY ${_scriptDir} AND NOT ${_name} MATCHES "CMakeFiles" AND NOT ${_name} MATCHES "\\.dir$")
message("discovered plugin lib: ${_scriptDir} (${_name})")
file(GLOB_RECURSE SCRIPT_BUILD_FILES "${_scriptDir}/*.cpp")

View file

@ -4,88 +4,6 @@
#include <Forwards.h>
#include <Script/NativeScriptApi.h>
enum EventFlags
{
NONE = 0,
NO_DEFAULT_CAMERA = 0x00000001,
FADE_OUT = 0x00000002,
INVIS_ENPC = 0x00000004,
INVIS_EOBJ = 0x00000008,
INVIS_BNPC = 0x00000010,
INVIS_OTHER_PC = 0x00000020,
INVIS_PARTY_PC = 0x00000040,
INVIS_PARTY_BUDDY = 0x10000000,
INVIS_GATHERING_POINT = 0x00000080,
INVIS_AETHERYTE = 0x00000100,
INVIS_TREASURE = 0x00000200,
CONDITION_CUTSCENE = 0x00000400,
HIDE_UI = 0x00000800,
INVIS_ALL = 0xF80003FC,
AUTO_LOC_CAMERA = 0x00001000,
HIDE_HOTBAR = 0x00002000,
INVINCIBLE = 0x00004000,
SILENT_ENTER_TERRI_ENV = 0x00008000,
SILENT_ENTER_TERRI_BGM = 0x00010000,
SILENT_ENTER_TERRI_SE = 0x00020000,
SILENT_ENTER_TERRI_ALL = 0x00038000,
DISABLE_SKIP = 0x00080000,
HIDE_FESTIVAL = 0x00200000,
DISABLE_STEALTH = 0x00400000,
ROLLBACK_HIDE_UI = 0x00800000,
LOCK_HUD = 0x01000000,
LOCK_HOTBAR = 0x02000000,
DISABLE_CANCEL_EMOTE = 0x04000000,
INVIS_AOE = 0x08000000,
INVIS_ALLIANCE_PC = 0x20000000,
INVIS_ALLIANCE_BUDDY = 0x40000000,
INVIS_COMPANION = 0x80000000,
SET_BASE = 0xF8400EFB,
SET_INVIS_BASE = 0xF8400FFF,
SET_EOBJ_BASE = 0xF8400EF3
};
enum EventTypes
{
EVENT_TALK = 1,
EVENT_EMOTE = 2,
EVENT_DISTANCE_BELOW = 3,
EVENT_DISTANCE_OVER = 4,
EVENT_BATTLE_REWARD = 5,
EVENT_CRAFT = 6,
EVENT_NEST = 7,
EVENT_EVENT_ITEM = 8,
EVENT_DROP = 9,
EVENT_WITHIN_RANGE = 10,
EVENT_OUTSIDE_RANGE = 11,
EVENT_GAME_START = 12,
EVENT_GAME_PROGRESS = 13,
EVENT_ENTER_TERRITORY = 15,
EVENT_GAME_COME_BACK = 17,
EVENT_ACTION_RESULT = 18,
EVENT_MATERIA_CRAFT = 19,
EVENT_FISHING = 20,
EVENT_UI = 21,
EVENT_HOUSING = 22,
EVENT_SAY = 23,
EVENT_TABLE_GAME = 24
};
enum EventFinishState
{
UNLOCK = 1,
KEEPLOCK = 0
};
enum DamageType
{
STD_DAMAGE = 0X03,
STD_HEAL = 0X04,
STD_MP_LOSS = 0X0A,
STD_MP_GAIN = 0X0B,
STD_TP_LOSS = 0X0C,
STD_TP_GAIN = 0X0D
};
#include <Event/EventDefs.h>
#endif //SAPPHIRE_SCRIPTOBJECT_H

View file

@ -1,15 +0,0 @@
#include <Script/NativeScriptApi.h>
#include "ActionSprint3.cpp"
const ScriptObject* ptrs[] =
{
static_cast< ScriptObject* >( new ActionSprint3 ),
nullptr
};
extern "C" EXPORT const ScriptObject** getScripts()
{
return ptrs;
}

View file

@ -21,11 +21,11 @@ public:
{
if( player.isAetheryteRegistered( eventId & 0xFFFF ) )
{
player.eventPlay( eventId, 2, 0, []( Entity::Player& player, uint32_t eventId, uint16_t param1, uint16_t param2, uint16_t param3 )
player.playScene( eventId, 2, 0, []( Entity::Player& player, const Event::SceneResult& result )
{
if( param1 == 256 )
if( result.param1 == 256 )
{
player.teleport( param2, 2 );
player.teleport( result.param2, 2 );
}
} );
}
@ -34,7 +34,7 @@ public:
player.eventActionStart( eventId, ACTION_ATTUNE, []( Entity::Player& player, uint32_t eventId, uint64_t additional )
{
player.registerAetheryte( eventId & 0xFFFF );
player.eventPlay( eventId, 3, 0, 0, 0 );
player.playScene( eventId, 3, 0, 0, 0 );
},
[] ( Entity::Player& ply, uint32_t evntId, uint64_t additional )
{

View file

@ -23,20 +23,19 @@ public:
{
if( player.isAetheryteRegistered( eventId & 0xFFFF ) )
{
player.eventPlay( eventId, 0, 1, []( Entity::Player& player, uint32_t eventId, uint16_t param1, uint16_t param2, uint16_t param3 )
player.playScene( eventId, 0, 1, []( Entity::Player& player, const Event::SceneResult& result )
{
if( param1 == 256 ) // set homepoint
if( result.param1 == 256 ) // set homepoint
{
player.setHomepoint( eventId & 0xFFFF );
player.sendQuestMessage( eventId, 2, 0xEA, 0, 0 );
}
else if( param1 == 512 ) // aethernet access
player.setHomepoint( result.eventId & 0xFFFF );
player.sendQuestMessage( result.eventId, 2, 0xEA, 0, 0 );
} else if( result.param1 == 512 ) // aethernet access
{
if( param2 == 4 )
if( result.param2 == 4 )
{
player.teleport( param3, 2 );
player.teleport( result.param3, 2 );
}
else if( param2 == 2 ) // register favored destination
else if( result.param2 == 2 ) // register favored destination
{
}

View file

@ -10,25 +10,25 @@ public:
void Scene00000( Entity::Player& player )
{
auto callback = [ this ]( Entity::Player& player, uint32_t eventId, uint16_t param1, uint16_t param2, uint16_t param3 )
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
{
if( param2 != 0 )
if( result.param2 != 0 )
{
Scene00001( player, param2 );
Scene00001( player, result.param2 );
}
};
player.eventPlay( getId(), 0, 0x2000, 0, 1, callback );
player.playScene( getId(), 0, 0x2000, 0, 1, callback );
}
void Scene00001( Entity::Player& player, uint16_t returnScene )
{
auto callback = []( Entity::Player& player, uint32_t eventId, uint16_t param1, uint16_t param2, uint16_t param3 )
auto callback = []( Entity::Player& player, const Event::SceneResult& result )
{
// todo: this is fucked
};
player.eventPlay( getId(), 1, 0xFB2EC8F8, 0, 1, returnScene, callback );
player.playScene( getId(), 1, 0xFB2EC8F8, 0, 1, returnScene, callback );
}
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override

View file

@ -11,39 +11,39 @@ public:
// menu
void Scene00000( Entity::Player& player )
{
auto callback = [ this ]( Entity::Player& player, uint32_t eventId, uint16_t param1, uint16_t param2, uint16_t param3 )
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
{
if( param2 > 0 )
Scene00001( player, param2 );
if( result.param2 > 0 )
Scene00001( player, result.param2 );
};
player.eventPlay( getId(), 0, 0x2000, 0, 1, callback );
player.playScene( getId(), 0, 0x2000, 0, 1, callback );
}
// lay down
void Scene00001( Entity::Player& player, uint16_t param )
{
auto callback = [ this ]( Entity::Player& player, uint32_t eventId, uint16_t param1, uint16_t param2, uint16_t param3 )
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
{
Scene00002( player, param2 );
Scene00002( player, result.param2 );
};
player.eventPlay( getId(), 1, 0xF32E48F8, 0, 1, param, callback );
player.playScene( getId(), 1, 0xF32E48F8, 0, 1, param, callback );
}
// logout
void Scene00002( Entity::Player& player, uint16_t param )
{
player.eventPlay( getId(), 2, 0xF32E48F8, 0, 1, param, nullptr );
player.playScene( getId(), 2, 0xF32E48F8, 0, 1, param, nullptr );
}
// wake up
void Scene00100( Entity::Player& player )
{
auto callback = []( Entity::Player& player, uint32_t eventId, uint16_t param1, uint16_t param2, uint16_t param3 )
{};
auto callback = []( Entity::Player& player, const Event::SceneResult& result )
{ };
player.eventPlay( getId(), 100, 0x800, 0, 0, callback );
player.playScene( getId(), 100, 0x800, 0, 0, callback );
}
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
@ -51,7 +51,7 @@ public:
Scene00000( player );
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( Entity::Player& player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
{
Scene00100( player );
}

View file

@ -14,9 +14,9 @@ public:
void Scene00001( Entity::Player& player )
{
auto callback = [ this ]( Entity::Player& player, uint32_t eventId, uint16_t param1, uint16_t param2, uint16_t param3 )
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
{
switch( param2 )
switch( result.param2 )
{
case ACTION_CREATE:
Scene00002( player );
@ -32,25 +32,25 @@ public:
}
};
player.eventPlay( getId(), 1, 0, 0, 0, callback );
player.playScene( getId(), 1, 0, 0, 0, callback );
}
// create linkshell
void Scene00002( Entity::Player& player )
{
player.eventPlay( getId(), 2, 0, 0, 0 );
player.playScene( getId(), 2, 0, 0, 0 );
}
// rename linkshell
void Scene00003( Entity::Player& player )
{
player.eventPlay( getId(), 3, 0, 0, 0 );
player.playScene( getId(), 3, 0, 0, 0 );
}
// remove linkshell
void Scene00004( Entity::Player& player )
{
player.eventPlay( getId(), 4, 0, 0, 0 );
player.playScene( getId(), 4, 0, 0, 0 );
}
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override

View file

@ -10,7 +10,7 @@ public:
void Scene00000( Entity::Player& player )
{
player.eventPlay( getId(), 0, 0x2000, 0, 1 );
player.playScene( getId(), 0, 0x2000, 0, 1 );
}
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override

View file

@ -1,25 +0,0 @@
#include <Script/NativeScriptApi.h>
#include "Aethernet.cpp"
#include "Aetheryte.cpp"
#include "HouFurOrchestrion.cpp"
#include "CmnDefInnBed.cpp"
#include "CmnDefCutSceneReplay.cpp"
#include "CmnDefLinkShell.cpp"
const ScriptObject* ptrs[] =
{
static_cast< ScriptObject* >( new Aethernet ),
static_cast< ScriptObject* >( new Aetheryte ),
static_cast< ScriptObject* >( new HouFurOrchestrion ),
static_cast< ScriptObject* >( new CmnDefInnBed ),
static_cast< ScriptObject* >( new CmnDefCutSceneReplay ),
static_cast< ScriptObject* >( new CmnDefLinkShell ),
nullptr
};
extern "C" EXPORT const ScriptObject** getScripts()
{
return ptrs;
}

View file

@ -31,7 +31,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -1,547 +0,0 @@
#include <Script/NativeScriptApi.h>
#include "pvp/TheFeastTeamRanked.cpp"
#include "pvp/SealRockSeize.cpp"
#include "pvp/TheFeast4on4Ranked.cpp"
#include "pvp/TheFeast4on4LightParty.cpp"
#include "pvp/TheFeastRanked.cpp"
#include "pvp/TheFieldsofGloryShatter.cpp"
#include "pvp/TheFeastTraining.cpp"
#include "pvp/Astragalos.cpp"
#include "pvp/TheFeast4on4Training.cpp"
#include "pvp/TheFeastCustomMatchFeastingGrounds.cpp"
#include "pvp/TheFeastCustomMatchLichenweed.cpp"
#include "pvp/TheBorderlandRuinsSecure.cpp"
#include "pvp/TheFeastCustomMatchCrystalTower.cpp"
#include "dungeons/TheTamTaraDeepcroft.cpp"
#include "dungeons/DomaCastle.cpp"
#include "dungeons/HullbreakerIsleHard.cpp"
#include "dungeons/Snowcloak.cpp"
#include "dungeons/TheGreatGubalLibrary.cpp"
#include "dungeons/TheWanderersPalace.cpp"
#include "dungeons/Xelphatol.cpp"
#include "dungeons/TheLostCityofAmdaporHard.cpp"
#include "dungeons/SaintMociannesArboretum.cpp"
#include "dungeons/BardamsMettle.cpp"
#include "dungeons/TheTamTaraDeepcroftHard.cpp"
#include "dungeons/KuganeCastle.cpp"
#include "dungeons/TheDrownedCityofSkalla.cpp"
#include "dungeons/ShisuioftheVioletTides.cpp"
#include "dungeons/CuttersCry.cpp"
#include "dungeons/HellsLid.cpp"
#include "dungeons/TheVault.cpp"
#include "dungeons/TheStoneVigilHard.cpp"
#include "dungeons/Sastasha.cpp"
#include "dungeons/TheFractalContinuum.cpp"
#include "dungeons/TheLostCityofAmdapor.cpp"
#include "dungeons/TheAurumVale.cpp"
#include "dungeons/SohrKhai.cpp"
#include "dungeons/TheSunkenTempleofQarnHard.cpp"
#include "dungeons/Neverreap.cpp"
#include "dungeons/TheAntitower.cpp"
#include "dungeons/Halatali.cpp"
#include "dungeons/TheAery.cpp"
#include "dungeons/PharosSiriusHard.cpp"
#include "dungeons/CastrumMeridianum.cpp"
#include "dungeons/TheGreatGubalLibraryHard.cpp"
#include "dungeons/SohmAl.cpp"
#include "dungeons/TheTempleoftheFist.cpp"
#include "dungeons/TheKeeperoftheLake.cpp"
#include "dungeons/AmdaporKeepHard.cpp"
#include "dungeons/TheWanderersPalaceHard.cpp"
#include "dungeons/CastrumAbania.cpp"
#include "dungeons/AlaMhigo.cpp"
#include "dungeons/PharosSirius.cpp"
#include "dungeons/TheStoneVigil.cpp"
#include "dungeons/TheThousandMawsofTotoRak.cpp"
#include "dungeons/BrayfloxsLongstopHard.cpp"
#include "dungeons/DzemaelDarkhold.cpp"
#include "dungeons/SohmAlHard.cpp"
#include "dungeons/HaukkeManor.cpp"
#include "dungeons/HullbreakerIsle.cpp"
#include "dungeons/TheFractalContinuumHard.cpp"
#include "dungeons/TheSirensongSea.cpp"
#include "dungeons/BaelsarsWall.cpp"
#include "dungeons/HalataliHard.cpp"
#include "dungeons/TheAetherochemicalResearchFacility.cpp"
#include "dungeons/SastashaHard.cpp"
#include "dungeons/CopperbellMinesHard.cpp"
#include "dungeons/TheSunkenTempleofQarn.cpp"
#include "dungeons/AmdaporKeep.cpp"
#include "dungeons/TheDuskVigil.cpp"
#include "dungeons/BrayfloxsLongstop.cpp"
#include "dungeons/HaukkeManorHard.cpp"
#include "dungeons/CopperbellMines.cpp"
#include "dungeons/ThePraetorium.cpp"
#include "questbattles/RaisingtheSword.cpp"
#include "questbattles/InterdimensionalRift.cpp"
#include "questbattles/CuriousGorgeMeetsHisMatch.cpp"
#include "questbattles/WithHeartandSteel.cpp"
#include "questbattles/OneLifeforOneWorld.cpp"
#include "questbattles/ABloodyReunion.cpp"
#include "questbattles/MatsubaMayhem.cpp"
#include "questbattles/BloodontheDeck.cpp"
#include "questbattles/OurCompromise.cpp"
#include "questbattles/Naadam.cpp"
#include "questbattles/InThalsName.cpp"
#include "questbattles/TheResonant.cpp"
#include "questbattles/OurUnsungHeroes.cpp"
#include "questbattles/DarkwingDragon.cpp"
#include "questbattles/BloodDragoon.cpp"
#include "questbattles/ASpectaclefortheAges.cpp"
#include "questbattles/ItsProbablyaTrap.cpp"
#include "questbattles/TheBattleonBekko.cpp"
#include "questbattles/TheHeartoftheProblem.cpp"
#include "questbattles/TheOrphansandtheBrokenBlade.cpp"
#include "questbattles/TheCarteneauFlatsHeliodrome.cpp"
#include "questbattles/ReturnoftheBull.cpp"
#include "questbattles/TheFaceofTrueEvil.cpp"
#include "questbattles/WhenClansCollide.cpp"
#include "raids/AlexanderTheArmoftheSonSavage.cpp"
#include "raids/TheLabyrinthoftheAncients.cpp"
#include "raids/SigmascapeV30.cpp"
#include "raids/TheVoidArk.cpp"
#include "raids/SyrcusTower.cpp"
#include "raids/DeltascapeV20.cpp"
#include "raids/TheFinalCoilofBahamutTurn1.cpp"
#include "raids/SigmascapeV20Savage.cpp"
#include "raids/TheFinalCoilofBahamutTurn3.cpp"
#include "raids/SigmascapeV30Savage.cpp"
#include "raids/TheBindingCoilofBahamutTurn2.cpp"
#include "raids/AlexanderTheSouloftheCreatorSavage.cpp"
#include "raids/DunScaith.cpp"
#include "raids/DeltascapeV40Savage.cpp"
#include "raids/TheSecondCoilofBahamutTurn1.cpp"
#include "raids/AlexanderTheHeartoftheCreatorSavage.cpp"
#include "raids/DeltascapeV40.cpp"
#include "raids/TheSecondCoilofBahamutSavageTurn2.cpp"
#include "raids/TheSecondCoilofBahamutTurn3.cpp"
#include "raids/TheUnendingCoilofBahamutUltimate.cpp"
#include "raids/TheSecondCoilofBahamutTurn2.cpp"
#include "raids/TheWorldofDarkness.cpp"
#include "raids/SigmascapeV10.cpp"
#include "raids/AlexanderTheBurdenoftheSonSavage.cpp"
#include "raids/TheFinalCoilofBahamutTurn2.cpp"
#include "raids/AlexanderTheBurdenoftheFatherSavage.cpp"
#include "raids/AlexanderTheHeartoftheCreator.cpp"
#include "raids/TheBindingCoilofBahamutTurn4.cpp"
#include "raids/AlexanderTheBreathoftheCreatorSavage.cpp"
#include "raids/AlexanderTheEyesoftheCreatorSavage.cpp"
#include "raids/AlexanderTheArmoftheFatherSavage.cpp"
#include "raids/DeltascapeV30.cpp"
#include "raids/AlexanderTheFistoftheFather.cpp"
#include "raids/DeltascapeV10.cpp"
#include "raids/DeltascapeV10Savage.cpp"
#include "raids/SigmascapeV40Savage.cpp"
#include "raids/AlexanderTheCuffoftheSon.cpp"
#include "raids/AlexanderTheFistoftheSonSavage.cpp"
#include "raids/TheSecondCoilofBahamutSavageTurn3.cpp"
#include "raids/AlexanderTheArmoftheFather.cpp"
#include "raids/AlexanderTheCuffoftheSonSavage.cpp"
#include "raids/TheBindingCoilofBahamutTurn5.cpp"
#include "raids/SigmascapeV20.cpp"
#include "raids/AlexanderTheCuffoftheFather.cpp"
#include "raids/TheSecondCoilofBahamutSavageTurn1.cpp"
#include "raids/TheBindingCoilofBahamutTurn1.cpp"
#include "raids/AlexanderTheBurdenoftheSon.cpp"
#include "raids/AlexanderTheBreathoftheCreator.cpp"
#include "raids/TheFinalCoilofBahamutTurn4.cpp"
#include "raids/DeltascapeV30Savage.cpp"
#include "raids/AlexanderTheFistoftheSon.cpp"
#include "raids/AlexanderTheFistoftheFatherSavage.cpp"
#include "raids/AlexanderTheArmoftheSon.cpp"
#include "raids/TheBindingCoilofBahamutTurn3.cpp"
#include "raids/SigmascapeV40.cpp"
#include "raids/TheSecondCoilofBahamutTurn4.cpp"
#include "raids/AlexanderTheCuffoftheFatherSavage.cpp"
#include "raids/SigmascapeV10Savage.cpp"
#include "raids/DeltascapeV20Savage.cpp"
#include "raids/TheWeepingCityofMhach.cpp"
#include "raids/TheRoyalCityofRabanastre.cpp"
#include "raids/AlexanderTheBurdenoftheFather.cpp"
#include "raids/AlexanderTheEyesoftheCreator.cpp"
#include "raids/TheSecondCoilofBahamutSavageTurn4.cpp"
#include "raids/AlexanderTheSouloftheCreator.cpp"
#include "AkhAfahAmphitheatreExtreme.cpp"
#include "guildhests/HeroontheHalfShell.cpp"
#include "guildhests/BasicTrainingEnemyStrongholds.cpp"
#include "guildhests/ShadowandClaw.cpp"
#include "guildhests/AnnoytheVoid.cpp"
#include "guildhests/StingingBack.cpp"
#include "guildhests/FlickingSticksandTakingNames.cpp"
#include "guildhests/SolemnTrinity.cpp"
#include "guildhests/UndertheArmor.cpp"
#include "guildhests/LongLivetheQueen.cpp"
#include "guildhests/AllsWellthatEndsintheWell.cpp"
#include "guildhests/MorethanaFeeler.cpp"
#include "guildhests/PullingPoisonPosies.cpp"
#include "guildhests/WardUp.cpp"
#include "guildhests/BasicTrainingEnemyParties.cpp"
#include "trials/TheStrikingTreeHard.cpp"
#include "trials/TheJadeStoaExtreme.cpp"
#include "trials/TheMinstrelsBalladThordansReign.cpp"
#include "trials/TheBowlofEmbersHard.cpp"
#include "trials/TheSingularityReactor.cpp"
#include "trials/ContainmentBayS1T7Extreme.cpp"
#include "trials/ContainmentBayS1T7.cpp"
#include "trials/TheHowlingEyeHard.cpp"
#include "trials/TheStrikingTreeExtreme.cpp"
#include "trials/Emanation.cpp"
#include "trials/SpecialEventI.cpp"
#include "trials/TheLimitlessBlueExtreme.cpp"
#include "trials/ThePoolofTributeExtreme.cpp"
#include "trials/BattleontheBigBridge.cpp"
#include "trials/TheRoyalMenagerie.cpp"
#include "trials/BattleintheBigKeep.cpp"
#include "trials/UrthsFount.cpp"
#include "trials/EmanationExtreme.cpp"
#include "trials/TheJadeStoa.cpp"
#include "trials/TheHowlingEyeExtreme.cpp"
#include "trials/TheBowlofEmbers.cpp"
#include "trials/TheChrysalis.cpp"
#include "trials/TheStepsofFaith.cpp"
#include "trials/ARelicReborntheChimera.cpp"
#include "trials/ContainmentBayP1T6.cpp"
#include "trials/TheMinstrelsBalladNidhoggsRage.cpp"
#include "trials/ThokastThokExtreme.cpp"
#include "trials/ThornmarchExtreme.cpp"
#include "trials/TheLimitlessBlueHard.cpp"
#include "trials/ContainmentBayP1T6Extreme.cpp"
#include "trials/TheNavelExtreme.cpp"
#include "trials/SpecialEventII.cpp"
#include "trials/TheWhorleaterExtreme.cpp"
#include "trials/TheMinstrelsBalladUltimasBane.cpp"
#include "trials/ContainmentBayZ1T9.cpp"
#include "trials/TheFinalStepsofFaith.cpp"
#include "trials/ThokastThokHard.cpp"
#include "trials/AkhAfahAmphitheatreHard.cpp"
#include "trials/CapeWestwind.cpp"
#include "trials/TheMinstrelsBalladShinryusDomain.cpp"
#include "trials/ContainmentBayZ1T9Extreme.cpp"
#include "trials/SpecialEventIII.cpp"
#include "trials/ThornmarchHard.cpp"
#include "trials/TheDragonsNeck.cpp"
#include "trials/TheNavelHard.cpp"
#include "trials/TheWhorleaterHard.cpp"
#include "trials/TheNavel.cpp"
#include "trials/TheBowlofEmbersExtreme.cpp"
#include "trials/ARelicReborntheHydra.cpp"
#include "trials/ThePoolofTribute.cpp"
#include "trials/TheHowlingEye.cpp"
#include "deepdungeon/ThePalaceoftheDeadFloors181190.cpp"
#include "deepdungeon/ThePalaceoftheDeadFloors6170.cpp"
#include "deepdungeon/ThePalaceoftheDeadFloors151160.cpp"
#include "deepdungeon/ThePalaceoftheDeadFloors4150.cpp"
#include "deepdungeon/ThePalaceoftheDeadFloors5160.cpp"
#include "deepdungeon/ThePalaceoftheDeadFloors3140.cpp"
#include "deepdungeon/ThePalaceoftheDeadFloors1120.cpp"
#include "deepdungeon/ThePalaceoftheDeadFloors110.cpp"
#include "deepdungeon/ThePalaceoftheDeadFloors141150.cpp"
#include "deepdungeon/ThePalaceoftheDeadFloors161170.cpp"
#include "deepdungeon/ThePalaceoftheDeadFloors131140.cpp"
#include "deepdungeon/ThePalaceoftheDeadFloors7180.cpp"
#include "deepdungeon/ThePalaceoftheDeadFloors101110.cpp"
#include "deepdungeon/ThePalaceoftheDeadFloors171180.cpp"
#include "deepdungeon/ThePalaceoftheDeadFloors2130.cpp"
#include "deepdungeon/ThePalaceoftheDeadFloors191200.cpp"
#include "deepdungeon/ThePalaceoftheDeadFloors121130.cpp"
#include "deepdungeon/ThePalaceoftheDeadFloors111120.cpp"
#include "deepdungeon/ThePalaceoftheDeadFloors91100.cpp"
#include "deepdungeon/ThePalaceoftheDeadFloors8190.cpp"
#include "treasurehunt/TheAquapolis.cpp"
#include "treasurehunt/TheLostCanalsofUznair.cpp"
#include "treasurehunt/TheHiddenCanalsofUznair.cpp"
#include "hallofthenovice/InteractwiththeBattlefield.cpp"
#include "hallofthenovice/AvoidEngagedTargets.cpp"
#include "hallofthenovice/AvoidAreaofEffectAttacks.cpp"
#include "hallofthenovice/HealMultipleAllies.cpp"
#include "hallofthenovice/ExecuteaCombotoIncreaseEnmity.cpp"
#include "hallofthenovice/AssistAlliesinDefeatingaTarget.cpp"
#include "hallofthenovice/HealanAlly.cpp"
#include "hallofthenovice/EngageMultipleTargets.cpp"
#include "hallofthenovice/FinalExercise.cpp"
#include "hallofthenovice/EngageEnemyReinforcements.cpp"
#include "hallofthenovice/ExecuteaRangedAttacktoIncreaseEnmity.cpp"
#include "hallofthenovice/ExecuteaComboinBattle.cpp"
#include "hallofthenovice/DefeatanOccupiedTarget.cpp"
#include "hallofthenovice/AccrueEnmityfromMultipleTargets.cpp"
#include "events/TheValentionesCeremony.cpp"
#include "events/TheHauntedManor.cpp"
const ScriptObject* ptrs[] =
{
static_cast< ScriptObject* >( new TheFeastTeamRanked ),
static_cast< ScriptObject* >( new SealRockSeize ),
static_cast< ScriptObject* >( new TheFeast4on4Ranked ),
static_cast< ScriptObject* >( new TheFeast4on4LightParty ),
static_cast< ScriptObject* >( new TheFeastRanked ),
static_cast< ScriptObject* >( new TheFieldsofGloryShatter ),
static_cast< ScriptObject* >( new TheFeastTraining ),
static_cast< ScriptObject* >( new Astragalos ),
static_cast< ScriptObject* >( new TheFeast4on4Training ),
static_cast< ScriptObject* >( new TheFeastCustomMatchFeastingGrounds ),
static_cast< ScriptObject* >( new TheFeastCustomMatchLichenweed ),
static_cast< ScriptObject* >( new TheBorderlandRuinsSecure ),
static_cast< ScriptObject* >( new TheFeastCustomMatchCrystalTower ),
static_cast< ScriptObject* >( new TheTamTaraDeepcroft ),
static_cast< ScriptObject* >( new DomaCastle ),
static_cast< ScriptObject* >( new HullbreakerIsleHard ),
static_cast< ScriptObject* >( new Snowcloak ),
static_cast< ScriptObject* >( new TheGreatGubalLibrary ),
static_cast< ScriptObject* >( new TheWanderersPalace ),
static_cast< ScriptObject* >( new Xelphatol ),
static_cast< ScriptObject* >( new TheLostCityofAmdaporHard ),
static_cast< ScriptObject* >( new SaintMociannesArboretum ),
static_cast< ScriptObject* >( new BardamsMettle ),
static_cast< ScriptObject* >( new TheTamTaraDeepcroftHard ),
static_cast< ScriptObject* >( new KuganeCastle ),
static_cast< ScriptObject* >( new TheDrownedCityofSkalla ),
static_cast< ScriptObject* >( new ShisuioftheVioletTides ),
static_cast< ScriptObject* >( new CuttersCry ),
static_cast< ScriptObject* >( new HellsLid ),
static_cast< ScriptObject* >( new TheVault ),
static_cast< ScriptObject* >( new TheStoneVigilHard ),
static_cast< ScriptObject* >( new Sastasha ),
static_cast< ScriptObject* >( new TheFractalContinuum ),
static_cast< ScriptObject* >( new TheLostCityofAmdapor ),
static_cast< ScriptObject* >( new TheAurumVale ),
static_cast< ScriptObject* >( new SohrKhai ),
static_cast< ScriptObject* >( new TheSunkenTempleofQarnHard ),
static_cast< ScriptObject* >( new Neverreap ),
static_cast< ScriptObject* >( new TheAntitower ),
static_cast< ScriptObject* >( new Halatali ),
static_cast< ScriptObject* >( new TheAery ),
static_cast< ScriptObject* >( new PharosSiriusHard ),
static_cast< ScriptObject* >( new CastrumMeridianum ),
static_cast< ScriptObject* >( new TheGreatGubalLibraryHard ),
static_cast< ScriptObject* >( new SohmAl ),
static_cast< ScriptObject* >( new TheTempleoftheFist ),
static_cast< ScriptObject* >( new TheKeeperoftheLake ),
static_cast< ScriptObject* >( new AmdaporKeepHard ),
static_cast< ScriptObject* >( new TheWanderersPalaceHard ),
static_cast< ScriptObject* >( new CastrumAbania ),
static_cast< ScriptObject* >( new AlaMhigo ),
static_cast< ScriptObject* >( new PharosSirius ),
static_cast< ScriptObject* >( new TheStoneVigil ),
static_cast< ScriptObject* >( new TheThousandMawsofTotoRak ),
static_cast< ScriptObject* >( new BrayfloxsLongstopHard ),
static_cast< ScriptObject* >( new DzemaelDarkhold ),
static_cast< ScriptObject* >( new SohmAlHard ),
static_cast< ScriptObject* >( new HaukkeManor ),
static_cast< ScriptObject* >( new HullbreakerIsle ),
static_cast< ScriptObject* >( new TheFractalContinuumHard ),
static_cast< ScriptObject* >( new TheSirensongSea ),
static_cast< ScriptObject* >( new BaelsarsWall ),
static_cast< ScriptObject* >( new HalataliHard ),
static_cast< ScriptObject* >( new TheAetherochemicalResearchFacility ),
static_cast< ScriptObject* >( new SastashaHard ),
static_cast< ScriptObject* >( new CopperbellMinesHard ),
static_cast< ScriptObject* >( new TheSunkenTempleofQarn ),
static_cast< ScriptObject* >( new AmdaporKeep ),
static_cast< ScriptObject* >( new TheDuskVigil ),
static_cast< ScriptObject* >( new BrayfloxsLongstop ),
static_cast< ScriptObject* >( new HaukkeManorHard ),
static_cast< ScriptObject* >( new CopperbellMines ),
static_cast< ScriptObject* >( new ThePraetorium ),
static_cast< ScriptObject* >( new RaisingtheSword ),
static_cast< ScriptObject* >( new InterdimensionalRift ),
static_cast< ScriptObject* >( new CuriousGorgeMeetsHisMatch ),
static_cast< ScriptObject* >( new WithHeartandSteel ),
static_cast< ScriptObject* >( new OneLifeforOneWorld ),
static_cast< ScriptObject* >( new ABloodyReunion ),
static_cast< ScriptObject* >( new MatsubaMayhem ),
static_cast< ScriptObject* >( new BloodontheDeck ),
static_cast< ScriptObject* >( new OurCompromise ),
static_cast< ScriptObject* >( new Naadam ),
static_cast< ScriptObject* >( new InThalsName ),
static_cast< ScriptObject* >( new TheResonant ),
static_cast< ScriptObject* >( new OurUnsungHeroes ),
static_cast< ScriptObject* >( new DarkwingDragon ),
static_cast< ScriptObject* >( new BloodDragoon ),
static_cast< ScriptObject* >( new ASpectaclefortheAges ),
static_cast< ScriptObject* >( new ItsProbablyaTrap ),
static_cast< ScriptObject* >( new TheBattleonBekko ),
static_cast< ScriptObject* >( new TheHeartoftheProblem ),
static_cast< ScriptObject* >( new TheOrphansandtheBrokenBlade ),
static_cast< ScriptObject* >( new TheCarteneauFlatsHeliodrome ),
static_cast< ScriptObject* >( new ReturnoftheBull ),
static_cast< ScriptObject* >( new TheFaceofTrueEvil ),
static_cast< ScriptObject* >( new WhenClansCollide ),
static_cast< ScriptObject* >( new AlexanderTheArmoftheSonSavage ),
static_cast< ScriptObject* >( new TheLabyrinthoftheAncients ),
static_cast< ScriptObject* >( new SigmascapeV30 ),
static_cast< ScriptObject* >( new TheVoidArk ),
static_cast< ScriptObject* >( new SyrcusTower ),
static_cast< ScriptObject* >( new DeltascapeV20 ),
static_cast< ScriptObject* >( new TheFinalCoilofBahamutTurn1 ),
static_cast< ScriptObject* >( new SigmascapeV20Savage ),
static_cast< ScriptObject* >( new TheFinalCoilofBahamutTurn3 ),
static_cast< ScriptObject* >( new SigmascapeV30Savage ),
static_cast< ScriptObject* >( new TheBindingCoilofBahamutTurn2 ),
static_cast< ScriptObject* >( new AlexanderTheSouloftheCreatorSavage ),
static_cast< ScriptObject* >( new DunScaith ),
static_cast< ScriptObject* >( new DeltascapeV40Savage ),
static_cast< ScriptObject* >( new TheSecondCoilofBahamutTurn1 ),
static_cast< ScriptObject* >( new AlexanderTheHeartoftheCreatorSavage ),
static_cast< ScriptObject* >( new DeltascapeV40 ),
static_cast< ScriptObject* >( new TheSecondCoilofBahamutSavageTurn2 ),
static_cast< ScriptObject* >( new TheSecondCoilofBahamutTurn3 ),
static_cast< ScriptObject* >( new TheUnendingCoilofBahamutUltimate ),
static_cast< ScriptObject* >( new TheSecondCoilofBahamutTurn2 ),
static_cast< ScriptObject* >( new TheWorldofDarkness ),
static_cast< ScriptObject* >( new SigmascapeV10 ),
static_cast< ScriptObject* >( new AlexanderTheBurdenoftheSonSavage ),
static_cast< ScriptObject* >( new TheFinalCoilofBahamutTurn2 ),
static_cast< ScriptObject* >( new AlexanderTheBurdenoftheFatherSavage ),
static_cast< ScriptObject* >( new AlexanderTheHeartoftheCreator ),
static_cast< ScriptObject* >( new TheBindingCoilofBahamutTurn4 ),
static_cast< ScriptObject* >( new AlexanderTheBreathoftheCreatorSavage ),
static_cast< ScriptObject* >( new AlexanderTheEyesoftheCreatorSavage ),
static_cast< ScriptObject* >( new AlexanderTheArmoftheFatherSavage ),
static_cast< ScriptObject* >( new DeltascapeV30 ),
static_cast< ScriptObject* >( new AlexanderTheFistoftheFather ),
static_cast< ScriptObject* >( new DeltascapeV10 ),
static_cast< ScriptObject* >( new DeltascapeV10Savage ),
static_cast< ScriptObject* >( new SigmascapeV40Savage ),
static_cast< ScriptObject* >( new AlexanderTheCuffoftheSon ),
static_cast< ScriptObject* >( new AlexanderTheFistoftheSonSavage ),
static_cast< ScriptObject* >( new TheSecondCoilofBahamutSavageTurn3 ),
static_cast< ScriptObject* >( new AlexanderTheArmoftheFather ),
static_cast< ScriptObject* >( new AlexanderTheCuffoftheSonSavage ),
static_cast< ScriptObject* >( new TheBindingCoilofBahamutTurn5 ),
static_cast< ScriptObject* >( new SigmascapeV20 ),
static_cast< ScriptObject* >( new AlexanderTheCuffoftheFather ),
static_cast< ScriptObject* >( new TheSecondCoilofBahamutSavageTurn1 ),
static_cast< ScriptObject* >( new TheBindingCoilofBahamutTurn1 ),
static_cast< ScriptObject* >( new AlexanderTheBurdenoftheSon ),
static_cast< ScriptObject* >( new AlexanderTheBreathoftheCreator ),
static_cast< ScriptObject* >( new TheFinalCoilofBahamutTurn4 ),
static_cast< ScriptObject* >( new DeltascapeV30Savage ),
static_cast< ScriptObject* >( new AlexanderTheFistoftheSon ),
static_cast< ScriptObject* >( new AlexanderTheFistoftheFatherSavage ),
static_cast< ScriptObject* >( new AlexanderTheArmoftheSon ),
static_cast< ScriptObject* >( new TheBindingCoilofBahamutTurn3 ),
static_cast< ScriptObject* >( new SigmascapeV40 ),
static_cast< ScriptObject* >( new TheSecondCoilofBahamutTurn4 ),
static_cast< ScriptObject* >( new AlexanderTheCuffoftheFatherSavage ),
static_cast< ScriptObject* >( new SigmascapeV10Savage ),
static_cast< ScriptObject* >( new DeltascapeV20Savage ),
static_cast< ScriptObject* >( new TheWeepingCityofMhach ),
static_cast< ScriptObject* >( new TheRoyalCityofRabanastre ),
static_cast< ScriptObject* >( new AlexanderTheBurdenoftheFather ),
static_cast< ScriptObject* >( new AlexanderTheEyesoftheCreator ),
static_cast< ScriptObject* >( new TheSecondCoilofBahamutSavageTurn4 ),
static_cast< ScriptObject* >( new AlexanderTheSouloftheCreator ),
static_cast< ScriptObject* >( new AkhAfahAmphitheatreExtreme ),
static_cast< ScriptObject* >( new HeroontheHalfShell ),
static_cast< ScriptObject* >( new BasicTrainingEnemyStrongholds ),
static_cast< ScriptObject* >( new ShadowandClaw ),
static_cast< ScriptObject* >( new AnnoytheVoid ),
static_cast< ScriptObject* >( new StingingBack ),
static_cast< ScriptObject* >( new FlickingSticksandTakingNames ),
static_cast< ScriptObject* >( new SolemnTrinity ),
static_cast< ScriptObject* >( new UndertheArmor ),
static_cast< ScriptObject* >( new LongLivetheQueen ),
static_cast< ScriptObject* >( new AllsWellthatEndsintheWell ),
static_cast< ScriptObject* >( new MorethanaFeeler ),
static_cast< ScriptObject* >( new PullingPoisonPosies ),
static_cast< ScriptObject* >( new WardUp ),
static_cast< ScriptObject* >( new BasicTrainingEnemyParties ),
static_cast< ScriptObject* >( new TheStrikingTreeHard ),
static_cast< ScriptObject* >( new TheJadeStoaExtreme ),
static_cast< ScriptObject* >( new TheMinstrelsBalladThordansReign ),
static_cast< ScriptObject* >( new TheBowlofEmbersHard ),
static_cast< ScriptObject* >( new TheSingularityReactor ),
static_cast< ScriptObject* >( new ContainmentBayS1T7Extreme ),
static_cast< ScriptObject* >( new ContainmentBayS1T7 ),
static_cast< ScriptObject* >( new TheHowlingEyeHard ),
static_cast< ScriptObject* >( new TheStrikingTreeExtreme ),
static_cast< ScriptObject* >( new Emanation ),
static_cast< ScriptObject* >( new SpecialEventI ),
static_cast< ScriptObject* >( new TheLimitlessBlueExtreme ),
static_cast< ScriptObject* >( new ThePoolofTributeExtreme ),
static_cast< ScriptObject* >( new BattleontheBigBridge ),
static_cast< ScriptObject* >( new TheRoyalMenagerie ),
static_cast< ScriptObject* >( new BattleintheBigKeep ),
static_cast< ScriptObject* >( new UrthsFount ),
static_cast< ScriptObject* >( new EmanationExtreme ),
static_cast< ScriptObject* >( new TheJadeStoa ),
static_cast< ScriptObject* >( new TheHowlingEyeExtreme ),
static_cast< ScriptObject* >( new TheBowlofEmbers ),
static_cast< ScriptObject* >( new TheChrysalis ),
static_cast< ScriptObject* >( new TheStepsofFaith ),
static_cast< ScriptObject* >( new ARelicReborntheChimera ),
static_cast< ScriptObject* >( new ContainmentBayP1T6 ),
static_cast< ScriptObject* >( new TheMinstrelsBalladNidhoggsRage ),
static_cast< ScriptObject* >( new ThokastThokExtreme ),
static_cast< ScriptObject* >( new ThornmarchExtreme ),
static_cast< ScriptObject* >( new TheLimitlessBlueHard ),
static_cast< ScriptObject* >( new ContainmentBayP1T6Extreme ),
static_cast< ScriptObject* >( new TheNavelExtreme ),
static_cast< ScriptObject* >( new SpecialEventII ),
static_cast< ScriptObject* >( new TheWhorleaterExtreme ),
static_cast< ScriptObject* >( new TheMinstrelsBalladUltimasBane ),
static_cast< ScriptObject* >( new ContainmentBayZ1T9 ),
static_cast< ScriptObject* >( new TheFinalStepsofFaith ),
static_cast< ScriptObject* >( new ThokastThokHard ),
static_cast< ScriptObject* >( new AkhAfahAmphitheatreHard ),
static_cast< ScriptObject* >( new CapeWestwind ),
static_cast< ScriptObject* >( new TheMinstrelsBalladShinryusDomain ),
static_cast< ScriptObject* >( new ContainmentBayZ1T9Extreme ),
static_cast< ScriptObject* >( new SpecialEventIII ),
static_cast< ScriptObject* >( new ThornmarchHard ),
static_cast< ScriptObject* >( new TheDragonsNeck ),
static_cast< ScriptObject* >( new TheNavelHard ),
static_cast< ScriptObject* >( new TheWhorleaterHard ),
static_cast< ScriptObject* >( new TheNavel ),
static_cast< ScriptObject* >( new TheBowlofEmbersExtreme ),
static_cast< ScriptObject* >( new ARelicReborntheHydra ),
static_cast< ScriptObject* >( new ThePoolofTribute ),
static_cast< ScriptObject* >( new TheHowlingEye ),
static_cast< ScriptObject* >( new ThePalaceoftheDeadFloors181190 ),
static_cast< ScriptObject* >( new ThePalaceoftheDeadFloors6170 ),
static_cast< ScriptObject* >( new ThePalaceoftheDeadFloors151160 ),
static_cast< ScriptObject* >( new ThePalaceoftheDeadFloors4150 ),
static_cast< ScriptObject* >( new ThePalaceoftheDeadFloors5160 ),
static_cast< ScriptObject* >( new ThePalaceoftheDeadFloors3140 ),
static_cast< ScriptObject* >( new ThePalaceoftheDeadFloors1120 ),
static_cast< ScriptObject* >( new ThePalaceoftheDeadFloors110 ),
static_cast< ScriptObject* >( new ThePalaceoftheDeadFloors141150 ),
static_cast< ScriptObject* >( new ThePalaceoftheDeadFloors161170 ),
static_cast< ScriptObject* >( new ThePalaceoftheDeadFloors131140 ),
static_cast< ScriptObject* >( new ThePalaceoftheDeadFloors7180 ),
static_cast< ScriptObject* >( new ThePalaceoftheDeadFloors101110 ),
static_cast< ScriptObject* >( new ThePalaceoftheDeadFloors171180 ),
static_cast< ScriptObject* >( new ThePalaceoftheDeadFloors2130 ),
static_cast< ScriptObject* >( new ThePalaceoftheDeadFloors191200 ),
static_cast< ScriptObject* >( new ThePalaceoftheDeadFloors121130 ),
static_cast< ScriptObject* >( new ThePalaceoftheDeadFloors111120 ),
static_cast< ScriptObject* >( new ThePalaceoftheDeadFloors91100 ),
static_cast< ScriptObject* >( new ThePalaceoftheDeadFloors8190 ),
static_cast< ScriptObject* >( new TheAquapolis ),
static_cast< ScriptObject* >( new TheLostCanalsofUznair ),
static_cast< ScriptObject* >( new TheHiddenCanalsofUznair ),
static_cast< ScriptObject* >( new InteractwiththeBattlefield ),
static_cast< ScriptObject* >( new AvoidEngagedTargets ),
static_cast< ScriptObject* >( new AvoidAreaofEffectAttacks ),
static_cast< ScriptObject* >( new HealMultipleAllies ),
static_cast< ScriptObject* >( new ExecuteaCombotoIncreaseEnmity ),
static_cast< ScriptObject* >( new AssistAlliesinDefeatingaTarget ),
static_cast< ScriptObject* >( new HealanAlly ),
static_cast< ScriptObject* >( new EngageMultipleTargets ),
static_cast< ScriptObject* >( new FinalExercise ),
static_cast< ScriptObject* >( new EngageEnemyReinforcements ),
static_cast< ScriptObject* >( new ExecuteaRangedAttacktoIncreaseEnmity ),
static_cast< ScriptObject* >( new ExecuteaComboinBattle ),
static_cast< ScriptObject* >( new DefeatanOccupiedTarget ),
static_cast< ScriptObject* >( new AccrueEnmityfromMultipleTargets ),
static_cast< ScriptObject* >( new TheValentionesCeremony ),
static_cast< ScriptObject* >( new TheHauntedManor ),
nullptr
};
extern "C" EXPORT const ScriptObject** getScripts()
{
return ptrs;
}

View file

@ -21,7 +21,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -19,7 +19,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -19,7 +19,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -19,7 +19,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -19,7 +19,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -19,7 +19,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -19,7 +19,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -19,7 +19,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -19,7 +19,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -19,7 +19,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -19,7 +19,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -19,7 +19,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -19,7 +19,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -27,7 +27,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -27,7 +27,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -19,7 +19,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -19,7 +19,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -19,7 +19,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -21,7 +21,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -21,7 +21,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -17,7 +17,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -140,7 +140,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -57,7 +57,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -49,7 +49,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -17,7 +17,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -40,7 +40,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -46,7 +46,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -17,7 +17,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -87,7 +87,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -71,7 +71,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -63,7 +63,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -57,7 +57,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -17,7 +17,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -117,7 +117,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -68,7 +68,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -73,7 +73,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -61,7 +61,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -87,7 +87,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -17,7 +17,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -85,7 +85,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -48,7 +48,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -17,7 +17,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -17,7 +17,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -52,7 +52,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -49,7 +49,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -17,7 +17,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -69,9 +69,9 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
{
player.directorPlayScene( getId(), 1, NO_DEFAULT_CAMERA | HIDE_HOTBAR, 0, 0xA );
}
};

View file

@ -57,7 +57,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -17,7 +17,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -63,7 +63,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -17,7 +17,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -17,7 +17,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -17,7 +17,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -17,7 +17,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -17,7 +17,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -17,7 +17,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -39,7 +39,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -17,7 +17,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -17,7 +17,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -17,7 +17,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -17,7 +17,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -17,7 +17,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -17,7 +17,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -52,7 +52,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -72,7 +72,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -63,7 +63,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -133,7 +133,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -17,7 +17,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -54,7 +54,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

View file

@ -47,7 +47,8 @@ public:
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
void onEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ) override
{
}

Some files were not shown because too many files have changed in this diff Show more