mirror of
https://github.com/EQEmu/Server.git
synced 2026-02-19 07:32:25 +00:00
Merge branch 'master' into random
This commit is contained in:
commit
0a8f3554e9
@ -1,5 +1,11 @@
|
||||
EQEMu Changelog (Started on Sept 24, 2003 15:50)
|
||||
-------------------------------------------------------
|
||||
== 12/04/2014 ==
|
||||
Kayen: Ranged attacks will now more accurately check MAX firing range, fixing the issue where you would
|
||||
hit ranged attack and nothing would happpen due to incorrect server side range checks.
|
||||
Trevius: Initial addition of the RoF2 client from May 10th 2013 (currently available on Steam as the F2P client).
|
||||
Trevius: RoF2 is disabled by default, but you can enable by editing /common/patches/patches.cpp (see comments)
|
||||
|
||||
== 12/01/2014 ==
|
||||
Trevius: Mercenaries now spawn as the same Gender and Size of the Merchant they are purchased from.
|
||||
Trevius: Mercenaries now spawn with randomized facial features when purchased.
|
||||
|
||||
@ -72,6 +72,7 @@ SET(common_sources
|
||||
patches/sod.cpp
|
||||
patches/sof.cpp
|
||||
patches/rof.cpp
|
||||
patches/rof2.cpp
|
||||
patches/titanium.cpp
|
||||
patches/underfoot.cpp
|
||||
SocketLib/Base64.cpp
|
||||
@ -217,6 +218,11 @@ SET(common_headers
|
||||
patches/rof_itemfields.h
|
||||
patches/rof_ops.h
|
||||
patches/rof_structs.h
|
||||
patches/rof2.h
|
||||
patches/rof2_constants.h
|
||||
patches/rof2_itemfields.h
|
||||
patches/rof2_ops.h
|
||||
patches/rof2_structs.h
|
||||
patches/titanium.h
|
||||
patches/titanium_constants.h
|
||||
patches/titanium_itemfields.h
|
||||
@ -270,6 +276,11 @@ SOURCE_GROUP(Patches FILES
|
||||
patches/rof_ops.h
|
||||
patches/rof_constants.h
|
||||
patches/rof_structs.h
|
||||
patches/rof2.h
|
||||
patches/rof2_itemfields.h
|
||||
patches/rof2_ops.h
|
||||
patches/rof2_constants.h
|
||||
patches/rof2_structs.h
|
||||
patches/titanium.h
|
||||
patches/titanium_itemfields.h
|
||||
patches/titanium_ops.h
|
||||
@ -285,6 +296,7 @@ SOURCE_GROUP(Patches FILES
|
||||
patches/sod.cpp
|
||||
patches/sof.cpp
|
||||
patches/rof.cpp
|
||||
patches/rof2.cpp
|
||||
patches/titanium.cpp
|
||||
patches/underfoot.cpp
|
||||
)
|
||||
@ -336,7 +348,7 @@ ADD_LIBRARY(common ${common_sources} ${common_headers})
|
||||
IF(UNIX)
|
||||
ADD_DEFINITIONS(-fPIC)
|
||||
SET_SOURCE_FILES_PROPERTIES("SocketLib/Mime.cpp" PROPERTY COMPILE_FLAGS -Wno-unused-result)
|
||||
SET_SOURCE_FILES_PROPERTIES("patches/sod.cpp" "patches/sof.cpp" "patches/rof.cpp" "patches/underfoot.cpp" PROPERTIES COMPILE_FLAGS -O0)
|
||||
SET_SOURCE_FILES_PROPERTIES("patches/sod.cpp" "patches/sof.cpp" "patches/rof.cpp" "patches/rof2.cpp" "patches/underfoot.cpp" PROPERTIES COMPILE_FLAGS -O0)
|
||||
ENDIF(UNIX)
|
||||
|
||||
|
||||
|
||||
@ -32,7 +32,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#include "../common/patches/sod_constants.h"
|
||||
#include "../common/patches/underfoot_constants.h"
|
||||
#include "../common/patches/rof_constants.h"
|
||||
//#include "../common/patches/rof2_constants.h"
|
||||
#include "../common/patches/rof2_constants.h"
|
||||
|
||||
// *** DO NOT CHANGE without a full understanding of the consequences..the server is set up to use these settings explicitly!! ***
|
||||
// *** You will cause compilation failures and corrupt your database if partial or incorrect attempts to change them are made!! ***
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
#include "sof.h"
|
||||
#include "sod.h"
|
||||
#include "rof.h"
|
||||
//#include "rof2.h"
|
||||
#include "rof2.h"
|
||||
|
||||
void RegisterAllPatches(EQStreamIdentifier &into) {
|
||||
Client62::Register(into);
|
||||
@ -17,6 +17,7 @@ void RegisterAllPatches(EQStreamIdentifier &into) {
|
||||
SoD::Register(into);
|
||||
Underfoot::Register(into);
|
||||
RoF::Register(into);
|
||||
// Uncomment the line below to enable RoF2 Client
|
||||
//RoF2::Register(into);
|
||||
}
|
||||
|
||||
@ -27,5 +28,6 @@ void ReloadAllPatches() {
|
||||
SoD::Reload();
|
||||
Underfoot::Reload();
|
||||
RoF::Reload();
|
||||
// Uncomment the line below to enable RoF2 Client
|
||||
//RoF2::Reload();
|
||||
}
|
||||
|
||||
5673
common/patches/rof2.cpp
Normal file
5673
common/patches/rof2.cpp
Normal file
File diff suppressed because it is too large
Load Diff
37
common/patches/rof2.h
Normal file
37
common/patches/rof2.h
Normal file
@ -0,0 +1,37 @@
|
||||
#ifndef RoF2_H_
|
||||
#define RoF2_H_
|
||||
|
||||
#include "../struct_strategy.h"
|
||||
|
||||
class EQStreamIdentifier;
|
||||
|
||||
namespace RoF2 {
|
||||
|
||||
//these are the only public member of this namespace.
|
||||
extern void Register(EQStreamIdentifier &into);
|
||||
extern void Reload();
|
||||
|
||||
|
||||
|
||||
//you should not directly access anything below..
|
||||
//I just dont feel like making a seperate header for it.
|
||||
|
||||
class Strategy : public StructStrategy {
|
||||
public:
|
||||
Strategy();
|
||||
|
||||
protected:
|
||||
|
||||
virtual std::string Describe() const;
|
||||
virtual const EQClientVersion ClientVersion() const;
|
||||
|
||||
//magic macro to declare our opcode processors
|
||||
#include "ss_declare.h"
|
||||
#include "rof2_ops.h"
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif /*RoF2_H_*/
|
||||
216
common/patches/rof2_constants.h
Normal file
216
common/patches/rof2_constants.h
Normal file
@ -0,0 +1,216 @@
|
||||
/*
|
||||
EQEMu: Everquest Server Emulator
|
||||
|
||||
Copyright (C) 2001-2014 EQEMu Development Team (http://eqemulator.net)
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; version 2 of the License.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY except by those people which sell it, which
|
||||
are required to give you total support for your newly bought product;
|
||||
without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
*/
|
||||
|
||||
#ifndef RoF2_CONSTANTS_H_
|
||||
#define RoF2_CONSTANTS_H_
|
||||
|
||||
#include "../types.h"
|
||||
|
||||
namespace RoF2 {
|
||||
namespace maps {
|
||||
typedef enum : int16 {
|
||||
MapPossessions = 0,
|
||||
MapBank,
|
||||
MapSharedBank,
|
||||
MapTrade,
|
||||
MapWorld,
|
||||
MapLimbo,
|
||||
MapTribute,
|
||||
MapTrophyTribute,
|
||||
MapGuildTribute,
|
||||
MapMerchant,
|
||||
MapDeleted,
|
||||
MapCorpse,
|
||||
MapBazaar,
|
||||
MapInspect,
|
||||
MapRealEstate,
|
||||
MapViewMODPC,
|
||||
MapViewMODBank,
|
||||
MapViewMODSharedBank,
|
||||
MapViewMODLimbo,
|
||||
MapAltStorage,
|
||||
MapArchived,
|
||||
MapMail,
|
||||
MapGuildTrophyTribute,
|
||||
MapOther,
|
||||
_MapCount
|
||||
} InventoryMaps;
|
||||
}
|
||||
|
||||
namespace slots {
|
||||
typedef enum : int16 {
|
||||
MainCharm = 0,
|
||||
MainEar1,
|
||||
MainHead,
|
||||
MainFace,
|
||||
MainEar2,
|
||||
MainNeck,
|
||||
MainShoulders,
|
||||
MainArms,
|
||||
MainBack,
|
||||
MainWrist1,
|
||||
MainWrist2,
|
||||
MainRange,
|
||||
MainHands,
|
||||
MainPrimary,
|
||||
MainSecondary,
|
||||
MainFinger1,
|
||||
MainFinger2,
|
||||
MainChest,
|
||||
MainLegs,
|
||||
MainFeet,
|
||||
MainWaist,
|
||||
MainPowerSource,
|
||||
MainAmmo,
|
||||
MainGeneral1,
|
||||
MainGeneral2,
|
||||
MainGeneral3,
|
||||
MainGeneral4,
|
||||
MainGeneral5,
|
||||
MainGeneral6,
|
||||
MainGeneral7,
|
||||
MainGeneral8,
|
||||
MainGeneral9,
|
||||
MainGeneral10,
|
||||
MainCursor,
|
||||
_MainCount,
|
||||
_MainEquipmentBegin = MainCharm,
|
||||
_MainEquipmentEnd = MainAmmo,
|
||||
_MainEquipmentCount = (_MainEquipmentEnd - _MainEquipmentBegin + 1),
|
||||
_MainGeneralBegin = MainGeneral1,
|
||||
_MainGeneralEnd = MainGeneral10,
|
||||
_MainGeneralCount = (_MainGeneralEnd - _MainGeneralBegin + 1)
|
||||
} EquipmentSlots;
|
||||
}
|
||||
|
||||
namespace consts {
|
||||
static const uint16 MAP_POSSESSIONS_SIZE = slots::_MainCount;
|
||||
static const uint16 MAP_BANK_SIZE = 24;
|
||||
static const uint16 MAP_SHARED_BANK_SIZE = 2;
|
||||
static const uint16 MAP_TRADE_SIZE = 8;
|
||||
static const uint16 MAP_WORLD_SIZE = 10;
|
||||
static const uint16 MAP_LIMBO_SIZE = 36;
|
||||
static const uint16 MAP_TRIBUTE_SIZE = 0; //?
|
||||
static const uint16 MAP_TROPHY_TRIBUTE_SIZE = 0;
|
||||
static const uint16 MAP_GUILD_TRIBUTE_SIZE = 0;
|
||||
static const uint16 MAP_MERCHANT_SIZE = 0;
|
||||
static const uint16 MAP_DELETED_SIZE = 0;
|
||||
static const uint16 MAP_CORPSE_SIZE = slots::_MainCount;
|
||||
static const uint16 MAP_BAZAAR_SIZE = 200;
|
||||
static const uint16 MAP_INSPECT_SIZE = slots::_MainEquipmentCount;
|
||||
static const uint16 MAP_REAL_ESTATE_SIZE = 0;
|
||||
static const uint16 MAP_VIEW_MOD_PC_SIZE = MAP_POSSESSIONS_SIZE;
|
||||
static const uint16 MAP_VIEW_MOD_BANK_SIZE = MAP_BANK_SIZE;
|
||||
static const uint16 MAP_VIEW_MOD_SHARED_BANK_SIZE = MAP_SHARED_BANK_SIZE;
|
||||
static const uint16 MAP_VIEW_MOD_LIMBO_SIZE = MAP_LIMBO_SIZE;
|
||||
static const uint16 MAP_ALT_STORAGE_SIZE = 0;
|
||||
static const uint16 MAP_ARCHIVED_SIZE = 0;
|
||||
static const uint16 MAP_MAIL_SIZE = 0;
|
||||
static const uint16 MAP_GUILD_TROPHY_TRIBUTE_SIZE = 0;
|
||||
static const uint16 MAP_KRONO_SIZE = NOT_USED;
|
||||
static const uint16 MAP_OTHER_SIZE = 0;
|
||||
|
||||
// most of these definitions will go away with the structure-based system..this maintains compatibility for now
|
||||
// (bag slots and main slots beyond Possessions are assigned for compatibility with current server coding)
|
||||
static const int16 EQUIPMENT_BEGIN = slots::MainCharm;
|
||||
static const int16 EQUIPMENT_END = slots::MainAmmo;
|
||||
static const uint16 EQUIPMENT_SIZE = slots::_MainEquipmentCount;
|
||||
|
||||
static const int16 GENERAL_BEGIN = slots::MainGeneral1;
|
||||
static const int16 GENERAL_END = slots::MainGeneral10;
|
||||
static const uint16 GENERAL_SIZE = slots::_MainGeneralCount;
|
||||
static const int16 GENERAL_BAGS_BEGIN = 251;
|
||||
static const int16 GENERAL_BAGS_END_OFFSET = 99;
|
||||
static const int16 GENERAL_BAGS_END = GENERAL_BAGS_BEGIN + GENERAL_BAGS_END_OFFSET;
|
||||
|
||||
static const int16 CURSOR = slots::MainCursor;
|
||||
static const int16 CURSOR_BAG_BEGIN = 351;
|
||||
static const int16 CURSOR_BAG_END_OFFSET = 9;
|
||||
static const int16 CURSOR_BAG_END = CURSOR_BAG_BEGIN + CURSOR_BAG_END_OFFSET;
|
||||
|
||||
static const int16 BANK_BEGIN = 2000;
|
||||
static const int16 BANK_END = 2023;
|
||||
static const int16 BANK_BAGS_BEGIN = 2031;
|
||||
static const int16 BANK_BAGS_END_OFFSET = 239;
|
||||
static const int16 BANK_BAGS_END = BANK_BAGS_BEGIN + BANK_BAGS_END_OFFSET;
|
||||
|
||||
static const int16 SHARED_BANK_BEGIN = 2500;
|
||||
static const int16 SHARED_BANK_END = 2501;
|
||||
static const int16 SHARED_BANK_BAGS_BEGIN = 2531;
|
||||
static const int16 SHARED_BANK_BAGS_END_OFFSET = 19;
|
||||
static const int16 SHARED_BANK_BAGS_END = SHARED_BANK_BAGS_BEGIN + SHARED_BANK_BAGS_END_OFFSET;
|
||||
|
||||
static const int16 TRADE_BEGIN = 3000;
|
||||
static const int16 TRADE_END = 3007;
|
||||
static const int16 TRADE_NPC_END = 3003;
|
||||
static const int16 TRADE_BAGS_BEGIN = 3031;
|
||||
static const int16 TRADE_BAGS_END_OFFSET = 79;
|
||||
static const int16 TRADE_BAGS_END = TRADE_BAGS_BEGIN + TRADE_BAGS_END_OFFSET;
|
||||
|
||||
static const int16 WORLD_BEGIN = 4000;
|
||||
static const int16 WORLD_END = 4009;
|
||||
|
||||
static const int16 TRIBUTE_BEGIN = 400;
|
||||
static const int16 TRIBUTE_END = 404;
|
||||
|
||||
static const int16 CORPSE_BEGIN = slots::MainGeneral1;
|
||||
static const int16 CORPSE_END = slots::MainGeneral1 + slots::MainCursor;
|
||||
|
||||
static const uint16 ITEM_COMMON_SIZE = 6;
|
||||
static const uint16 ITEM_CONTAINER_SIZE = 255; // 255; (server max will be 255..unsure what actual client is - test)
|
||||
|
||||
static const uint32 BANDOLIERS_COUNT = 20; // count = number of bandolier instances
|
||||
static const uint32 BANDOLIER_SIZE = 4; // size = number of equipment slots in bandolier instance
|
||||
static const uint32 POTION_BELT_SIZE = 5;
|
||||
}
|
||||
|
||||
namespace limits {
|
||||
static const bool ALLOWS_EMPTY_BAG_IN_BAG = true;
|
||||
static const bool ALLOWS_CLICK_CAST_FROM_BAG = true;
|
||||
static const bool COIN_HAS_WEIGHT = false;
|
||||
}
|
||||
|
||||
}; //end namespace RoF2
|
||||
|
||||
#endif /*RoF2_CONSTANTS_H_*/
|
||||
|
||||
/*
|
||||
RoF2 Notes:
|
||||
** Structure-based inventory **
|
||||
ok Possessions: ( 0, { 0 .. 33 }, -1, -1 ) (Corpse: { 23 .. 56 } [Offset 23])
|
||||
ok [Equipment: ( 0, { 0 .. 22 }, -1, -1 )]
|
||||
ok [General: ( 0, { 23 .. 32 }, -1, -1 )]
|
||||
ok [Cursor: ( 0, 33, -1, -1 )]
|
||||
General Bags: ( 0, { 23 .. 32 }, { 0 .. (maxsize - 1) }, -1 )
|
||||
Cursor Bags: ( 0, 33, { 0 .. (maxsize - 1) }, -1 )
|
||||
|
||||
Bank: ( 1, { 0 .. 23 }, -1, -1 )
|
||||
Bank Bags: ( 1, { 0 .. 23 }, { 0 .. (maxsize - 1)}, -1 )
|
||||
|
||||
Shared Bank: ( 2, { 0 .. 1 }, -1, -1 )
|
||||
Shared Bank Bags: ( 2, { 0 .. 1 }, { 0 .. (maxsize - 1) }, -1 )
|
||||
|
||||
Trade: ( 3, { 0 .. 8 }, -1, -1 )
|
||||
(Trade Bags: 3031 - 3110 -- server values)
|
||||
|
||||
World: ( 4, { 0 .. 10 }, -1, -1 )
|
||||
|
||||
*/
|
||||
439
common/patches/rof2_itemfields.h
Normal file
439
common/patches/rof2_itemfields.h
Normal file
@ -0,0 +1,439 @@
|
||||
/*
|
||||
|
||||
|
||||
These fields must be in the order of how they are serialized!
|
||||
|
||||
|
||||
|
||||
*/
|
||||
#define NEW_TRY
|
||||
#ifdef NEW_TRY
|
||||
//* 000 */ I(ItemClass) // Leave this one off on purpose
|
||||
/* 001 */ S(Name)
|
||||
/* 002 */ S(Lore)
|
||||
//* 003 */ C("")//lorefile - Newly Added - Field is Null
|
||||
/* 004 */ S(IDFile)
|
||||
/* 005 */ I(ID)
|
||||
/* 006 */ I(Weight)
|
||||
/* 007 */ I(NoRent)
|
||||
/* 008 */ I(NoDrop)
|
||||
/* 009 */ I(Size)
|
||||
/* 010 */ I(Slots)
|
||||
/* 011 */ I(Price)
|
||||
/* 012 */ I(Icon)
|
||||
/* 013 */ C("0")//UNK013
|
||||
/* 014 */ C("0")//UNK014
|
||||
/* 015 */ I(BenefitFlag)
|
||||
/* 016 */ I(Tradeskills)
|
||||
/* 017 */ I(CR)
|
||||
/* 018 */ I(DR)
|
||||
/* 019 */ I(PR)
|
||||
/* 020 */ I(MR)
|
||||
/* 021 */ I(FR)
|
||||
/* 022 */ C("0")//svcorruption - Newly Added
|
||||
/* 023 */ I(AStr)
|
||||
/* 024 */ I(ASta)
|
||||
/* 025 */ I(AAgi)
|
||||
/* 026 */ I(ADex)
|
||||
/* 027 */ I(ACha)
|
||||
/* 028 */ I(AInt)
|
||||
/* 029 */ I(AWis)
|
||||
/* 030 */ I(HP)
|
||||
/* 031 */ I(Mana)
|
||||
/* 032 */ I(Endur) //endur - Relocated
|
||||
/* 033 */ I(AC)
|
||||
/* 034 */ I(Classes)//classes - Relocated
|
||||
/* 035 */ I(Races)//races - Relocated
|
||||
/* 036 */ I(Deity)
|
||||
/* 037 */ I(SkillModValue)
|
||||
/* 038 */ C("0")//UNK038 - Default is 0
|
||||
/* 039 */ I(SkillModType)
|
||||
/* 040 */ I(BaneDmgRace)
|
||||
/* 041 */ I(BaneDmgBody)//banedmgbody - Relocated
|
||||
/* 042 */ I(BaneDmgRaceAmt)//banedmgraceamt - Relocated
|
||||
/* 043 */ I(BaneDmgAmt)//banedmgamt - Relocated
|
||||
/* 044 */ I(Magic)
|
||||
/* 045 */ I(CastTime_)
|
||||
/* 046 */ I(ReqLevel)
|
||||
/* 047 */ I(RecLevel)//reclevel - Relocated
|
||||
/* 048 */ I(RecSkill)//recskill - Relocated
|
||||
/* 049 */ I(BardType)
|
||||
/* 050 */ I(BardValue)
|
||||
/* 051 */ I(Light)
|
||||
/* 052 */ I(Delay)
|
||||
/* 053 */ I(ElemDmgType)
|
||||
/* 054 */ I(ElemDmgAmt)
|
||||
/* 055 */ I(Range)
|
||||
/* 056 */ I(Damage)
|
||||
/* 057 */ I(Color)
|
||||
/* 058 */ I(ItemType)
|
||||
/* 059 */ I(Material)
|
||||
/* 060 */ C("0")//UNK060 - Default is 0
|
||||
/* 061 */ C("0")//UNK061 - Default is 0
|
||||
/* 062 */ F(SellRate)
|
||||
/* 063 */ I(CombatEffects)
|
||||
/* 064 */ I(Shielding)
|
||||
/* 065 */ I(StunResist)
|
||||
/* 066 */ I(StrikeThrough)
|
||||
/* 067 */ I(ExtraDmgSkill)
|
||||
/* 068 */ I(ExtraDmgAmt)
|
||||
/* 069 */ I(SpellShield)
|
||||
/* 070 */ I(Avoidance)
|
||||
/* 071 */ I(Accuracy)
|
||||
/* 072 */ I(CharmFileID)
|
||||
/* 073 */ I(FactionMod1)//Swapped these so Faction Amt comes after each Faction Mod
|
||||
/* 074 */ I(FactionAmt1)//Swapped these so Faction Amt comes after each Faction Mod
|
||||
/* 075 */ I(FactionMod2)//Swapped these so Faction Amt comes after each Faction Mod
|
||||
/* 076 */ I(FactionAmt2)//Swapped these so Faction Amt comes after each Faction Mod
|
||||
/* 077 */ I(FactionMod3)//Swapped these so Faction Amt comes after each Faction Mod
|
||||
/* 078 */ I(FactionAmt3)//Swapped these so Faction Amt comes after each Faction Mod
|
||||
/* 079 */ I(FactionMod4)//Swapped these so Faction Amt comes after each Faction Mod
|
||||
/* 080 */ I(FactionAmt4)//Swapped these so Faction Amt comes after each Faction Mod
|
||||
/* 081 */ S(CharmFile)
|
||||
/* 082 */ I(AugType)
|
||||
/* 083 */ I(AugRestrict)//augrestrict - Relocated
|
||||
/* 084 */ I(AugDistiller)//augdistiller - Relocated
|
||||
/* 085 */ I(AugSlotType[0])
|
||||
/* 086 */ I(AugSlotVisible[0])//augslot1visible - Default 1
|
||||
/* 087 */ C("0")//augslot1unk2 - Newly Added - Default 0
|
||||
/* 088 */ I(AugSlotType[1])
|
||||
/* 089 */ I(AugSlotVisible[1])
|
||||
/* 090 */ C("0")//augslot2unk2 - Newly Added
|
||||
/* 091 */ I(AugSlotType[2])
|
||||
/* 092 */ I(AugSlotVisible[2])
|
||||
/* 093 */ C("0")//augslot3unk2 - Newly Added
|
||||
/* 094 */ I(AugSlotType[3])
|
||||
/* 095 */ I(AugSlotVisible[3])
|
||||
/* 096 */ C("0")//augslot4unk2 - Newly Added
|
||||
/* 097 */ I(AugSlotType[4])
|
||||
/* 098 */ I(AugSlotVisible[4])
|
||||
/* 099 */ C("0")//augslot5unk2 - Newly Added
|
||||
/* 100 */ I(PointType)//pointtype - Relocated
|
||||
/* 101 */ I(LDoNTheme)
|
||||
/* 102 */ I(LDoNPrice)
|
||||
/* 103 */ C("70")//UNK098 - Newly Added - Default 70, but some are set to 0
|
||||
/* 104 */ I(LDoNSold)
|
||||
/* 105 */ I(BagType)
|
||||
/* 106 */ I(BagSlots)
|
||||
/* 107 */ I(BagSize)
|
||||
/* 108 */ I(BagWR)
|
||||
/* 109 */ I(Book)
|
||||
/* 110 */ I(BookType)
|
||||
/* 111 */ S(Filename)
|
||||
/* 112 */ I(LoreGroup)
|
||||
/* 113 */ I(ArtifactFlag)
|
||||
/* 114 */ C("0")//I(PendingLoreFlag)?//UNK109 - Default 0, but a few are 1
|
||||
/* 115 */ I(Favor)
|
||||
/* 116 */ I(GuildFavor)//guildfavor - Relocated
|
||||
/* 117 */ I(FVNoDrop)
|
||||
/* 118 */ I(DotShielding)
|
||||
/* 119 */ I(Attack)
|
||||
/* 120 */ I(Regen)
|
||||
/* 121 */ I(ManaRegen)
|
||||
/* 122 */ I(EnduranceRegen)
|
||||
/* 123 */ I(Haste)
|
||||
/* 124 */ I(DamageShield)
|
||||
/* 125 */ C("-1") //UNK120 - Default is -1
|
||||
/* 126 */ C("0") //UNK121 - Default is 0
|
||||
/* 127 */ I(Attuneable)
|
||||
/* 128 */ I(NoPet)
|
||||
/* 129 */ C("0") //UNK124 - Default 0, but a few are 1
|
||||
/* 130 */ I(PotionBelt)
|
||||
/* 131 */ C("0") //potionbeltslots - Default 0, but a few are 1
|
||||
/* 132 */ I(StackSize)
|
||||
/* 133 */ I(NoTransfer)
|
||||
/* 134 */ I(Stackable)//UNK129 - Default is 0, but some are much higher
|
||||
/* 135 */ I(QuestItemFlag)//questitemflag - Default is 0 (off), flag on = 1
|
||||
/* 136 */ C("0")//UNK131 - Default is 0, but there is an item set to 1
|
||||
/* 137 */ C("0")//UNK132 - Default is 0? 0000000000000000000?
|
||||
/* 138 */ I(Click.Effect)
|
||||
/* 139 */ I(Click.Type)
|
||||
/* 140 */ I(Click.Level2)
|
||||
/* 141 */ I(Click.Level)
|
||||
/* 142 */ I(MaxCharges)//maxcharges - Relocated
|
||||
/* 143 */ I(CastTime_)//casttime - Relocated - Note Duplicate Entries for CastTime_ and none for CastTime
|
||||
/* 144 */ I(RecastDelay)//recastdelay - Relocated
|
||||
/* 145 */ I(RecastType)//recasttype - Relocated
|
||||
/* 146 */ C("0")//clickunk5 - Newly Added - Default is 0
|
||||
/* 147 */ C("")//clickname - Newly Added - Default is Null
|
||||
/* 148 */ C("-1")//clickunk7 - Newly Added - Default is -1, but some set to 0 and some much higher
|
||||
/* 149 */ I(Proc.Effect)
|
||||
/* 150 */ I(Proc.Type)
|
||||
/* 151 */ I(Proc.Level2)
|
||||
/* 152 */ I(Proc.Level)
|
||||
/* 153 */ C("0")//procunk1 - Newly Added - Default is 0, but some set to -1 and 1
|
||||
/* 154 */ C("0")//procunk2 - Newly Added - Default is 0
|
||||
/* 155 */ C("0")//procunk3 - Newly Added - Default is 0
|
||||
/* 156 */ C("0")//procunk4 - Newly Added - Default is 0
|
||||
/* 157 */ I(ProcRate)//procrate - Relocated
|
||||
/* 158 */ C("")//procname - Newly Added - Default is Null
|
||||
/* 159 */ C("-1")//procunk7 - Newly Added - Default is -1, but some set to 0
|
||||
/* 160 */ I(Worn.Effect)
|
||||
/* 161 */ I(Worn.Type)
|
||||
/* 162 */ I(Worn.Level2)
|
||||
/* 163 */ I(Worn.Level)
|
||||
/* 164 */ C("0")//wornunk1 - Newly Added - Default is 0
|
||||
/* 165 */ C("0")//wornunk2 - Newly Added - Default is 0
|
||||
/* 166 */ C("0")//wornunk3 - Newly Added - Default is 0
|
||||
/* 167 */ C("0")//wornunk4 - Newly Added - Default is 0
|
||||
/* 168 */ C("0")//wornunk5 - Newly Added - Default is 0
|
||||
/* 169 */ C("")//wornname - Newly Added - Default is Null
|
||||
/* 170 */ C("-1")//wornunk7 - Newly Added - Default is -1, but some set to 0
|
||||
/* 171 */ I(Focus.Effect)
|
||||
/* 172 */ I(Focus.Type)
|
||||
/* 173 */ I(Focus.Level2)
|
||||
/* 174 */ I(Focus.Level)
|
||||
/* 175 */ C("0")//focusunk1 - Newly Added - Default is 0
|
||||
/* 176 */ C("0")//focusunk2 - Newly Added - Default is 0
|
||||
/* 177 */ C("0")//focusunk3 - Newly Added - Default is 0
|
||||
/* 178 */ C("0")//focusunk4 - Newly Added - Default is 0
|
||||
/* 179 */ C("0")//focusunk5 - Newly Added - Default is 0
|
||||
/* 180 */ C("")//focusname - Newly Added - Default is Null
|
||||
/* 181 */ C("-1")//focusunk7 - Newly Added - Default is -1, but some set to 0
|
||||
/* 182 */ I(Scroll.Effect)
|
||||
/* 183 */ I(Scroll.Type)
|
||||
/* 184 */ I(Scroll.Level2)
|
||||
/* 185 */ I(Scroll.Level)
|
||||
/* 186 */ C("0")//scrollunk1 - Renumber this***
|
||||
/* 187 */ C("0")//scrollunk2 - Newly Added - Default is 0
|
||||
/* 188 */ C("0")//scrollunk3 - Newly Added - Default is 0
|
||||
/* 189 */ C("0")//scrollunk4 - Newly Added - Default is 0
|
||||
/* 190 */ C("0")//scrollunk5 - Newly Added - Default is 0
|
||||
/* 191 */ C("")//scrollname - Newly Added - Default is Null
|
||||
/* 192 */ C("-1")//scrollunk7 - Newly Added - Default is -1, but some set to 0
|
||||
/* 193 */ C("0")//UNK193 - Default is 0
|
||||
/* 194 */ C("0")//purity - Newly Added - Default is 0, but some go up to 75
|
||||
/* 195 */ C("0")//dsmitigation - Newly Added - Default is 0, but some are up to 2
|
||||
/* 196 */ C("0")//heroic_str - Newly Added - Default is 0
|
||||
/* 197 */ C("0")//heroic_int - Newly Added - Default is 0
|
||||
/* 198 */ C("0")//heroic_wis - Newly Added - Default is 0
|
||||
/* 199 */ C("0")//heroic_agi - Newly Added - Default is 0
|
||||
/* 200 */ C("0")//heroic_dex - Newly Added - Default is 0
|
||||
/* 201 */ C("0")//heroic_sta - Newly Added - Default is 0
|
||||
/* 202 */ C("0")//heroic_cha - Newly Added - Default is 0
|
||||
/* 203 */ C("0")//HeroicSvPoison - Newly Added - Default is 0
|
||||
/* 204 */ C("0")//HeroicSvMagic - Newly Added - Default is 0
|
||||
/* 205 */ C("0")//HeroicSvFire - Newly Added - Default is 0
|
||||
/* 206 */ C("0")//HeroicSvDisease - Newly Added - Default is 0
|
||||
/* 207 */ C("0")//HeroicSvCold - Newly Added - Default is 0
|
||||
/* 208 */ C("0")//HeroicSvCorruption - Newly Added - Default is 0
|
||||
/* 209 */ C("0")//healamt - Newly Added - Default is 0, but some are up to 9
|
||||
/* 210 */ C("0")//spelldmg - Newly Added - Default is 0, but some are up to 9
|
||||
/* 211 */ C("0")//clairvoyance - Newly Added - Default is 0, but some are up to 10
|
||||
/* 212 */ C("0")//backstabdmg - Newly Added - Default is 0, but some are up to 65
|
||||
//* 213 */ C("0")//evolvinglevel - Newly Added - Default is 0, but some are up to 7
|
||||
//* 214 */ C("0")//MaxPower - Newly Added
|
||||
//* 215 */ C("0")//Power - Newly Added
|
||||
|
||||
//This doesn't appear to be used /* 102 */ S(verified)//verified
|
||||
//This doesn't appear to be used /* 102 */ S(serialized)//created
|
||||
//Unsure where this goes right now (or if it is even used) /* 108 */ I(SummonedFlag)
|
||||
|
||||
#else
|
||||
/* 000 */ //I(ItemClass) Leave this one off on purpose
|
||||
/* 001 */ S(Name)
|
||||
/* 002 */ S(Lore)
|
||||
/* 003 */ C("") //LoreFile?
|
||||
/* 003 */ S(IDFile)
|
||||
/* 004 */ I(ID)
|
||||
/* 005 */ I(Weight)
|
||||
/* 006 */ I(NoRent)
|
||||
/* 007 */ I(NoDrop)
|
||||
/* 008 */ I(Size)
|
||||
/* 009 */ I(Slots)
|
||||
/* 010 */ I(Price)
|
||||
/* 011 */ I(Icon)
|
||||
/* 013 */ C("0")
|
||||
/* 014 */ C("0")
|
||||
/* 014 */ I(BenefitFlag)
|
||||
/* 015 */ I(Tradeskills)
|
||||
/* 016 */ I(CR)
|
||||
/* 017 */ I(DR)
|
||||
/* 018 */ I(PR)
|
||||
/* 019 */ I(MR)
|
||||
/* 020 */ I(FR)
|
||||
C("0") //svcorruption
|
||||
/* 021 */ I(AStr)
|
||||
/* 022 */ I(ASta)
|
||||
/* 023 */ I(AAgi)
|
||||
/* 024 */ I(ADex)
|
||||
/* 025 */ I(ACha)
|
||||
/* 026 */ I(AInt)
|
||||
/* 027 */ I(AWis)
|
||||
/* 028 */ I(HP)
|
||||
/* 029 */ I(Mana)
|
||||
I(Endur)
|
||||
/* 030 */ I(AC)
|
||||
/* 052 */ I(Classes)
|
||||
/* 053 */ I(Races)
|
||||
/* 031 */ I(Deity)
|
||||
/* 032 */ I(SkillModValue)
|
||||
/* 033 */ C("0")
|
||||
/* 034 */ I(SkillModType)
|
||||
/* 035 */ I(BaneDmgRace)
|
||||
/* 037 */ I(BaneDmgBody)
|
||||
/* 036 */ I(BaneDmgRaceAmt)
|
||||
/* 036 */ I(BaneDmgAmt)
|
||||
/* 038 */ I(Magic)
|
||||
/* 039 */ I(CastTime_)
|
||||
/* 040 */ I(ReqLevel)
|
||||
/* 045 */ I(RecLevel)
|
||||
/* 046 */ I(RecSkill)
|
||||
/* 041 */ I(BardType)
|
||||
/* 042 */ I(BardValue)
|
||||
/* 043 */ I(Light)
|
||||
/* 044 */ I(Delay)
|
||||
/* 047 */ I(ElemDmgType)
|
||||
/* 048 */ I(ElemDmgAmt)
|
||||
/* 049 */ I(Range)
|
||||
/* 050 */ I(Damage)
|
||||
/* 051 */ I(Color)
|
||||
/* 056 */ I(ItemType)
|
||||
/* 057 */ I(Material)
|
||||
/* 060 */ C("0")
|
||||
/* 061 */ C("0")
|
||||
/* 058 */ F(SellRate)
|
||||
/* 063 */ I(CombatEffects)
|
||||
/* 064 */ I(Shielding)
|
||||
/* 065 */ I(StunResist)
|
||||
/* 059 */ //C("0")
|
||||
/* 061 */ //C("0")
|
||||
/* 066 */ I(StrikeThrough)
|
||||
/* 067 */ I(ExtraDmgSkill)
|
||||
/* 068 */ I(ExtraDmgAmt)
|
||||
/* 069 */ I(SpellShield)
|
||||
/* 070 */ I(Avoidance)
|
||||
/* 071 */ I(Accuracy)
|
||||
/* 072 */ I(CharmFileID)
|
||||
/* 073 */ I(FactionMod1)
|
||||
/* 077 */ I(FactionAmt1)
|
||||
/* 074 */ I(FactionMod2)
|
||||
/* 078 */ I(FactionAmt2)
|
||||
/* 075 */ I(FactionMod3)
|
||||
/* 079 */ I(FactionAmt3)
|
||||
/* 076 */ I(FactionMod4)
|
||||
/* 080 */ I(FactionAmt4)
|
||||
/* 081 */ S(CharmFile)
|
||||
/* 082 */ I(AugType)
|
||||
/* 082 */ I(AugRestrict)
|
||||
/* 082 */ I(AugDistiller)
|
||||
/* 083 */ I(AugSlotType[0])
|
||||
/* 084 */ I(AugSlotVisible[0])
|
||||
/* 084 */ I(AugSlotUnk2[0])
|
||||
/* 085 */ I(AugSlotType[1])
|
||||
/* 086 */ I(AugSlotVisible[1])
|
||||
/* 086 */ I(AugSlotUnk2[1])
|
||||
/* 087 */ I(AugSlotType[2])
|
||||
/* 088 */ I(AugSlotVisible[2])
|
||||
/* 088 */ I(AugSlotUnk2[2])
|
||||
/* 089 */ I(AugSlotType[3])
|
||||
/* 090 */ I(AugSlotVisible[3])
|
||||
/* 090 */ I(AugSlotUnk2[3])
|
||||
/* 091 */ I(AugSlotType[4])
|
||||
/* 092 */ I(AugSlotVisible[4])
|
||||
/* 092 */ I(AugSlotUnk2[4])
|
||||
/* 093 */ I(PointType)
|
||||
/* 093 */ I(LDoNTheme)
|
||||
/* 094 */ I(LDoNPrice)
|
||||
/* 094 */ C("0")
|
||||
/* 095 */ I(LDoNSold)
|
||||
/* 096 */ I(BagType)
|
||||
/* 097 */ I(BagSlots)
|
||||
/* 098 */ I(BagSize)
|
||||
/* 099 */ I(BagWR)
|
||||
/* 100 */ I(Book)
|
||||
/* 101 */ I(BookType)
|
||||
/* 102 */ S(Filename)
|
||||
/* 105 */ I(LoreGroup)
|
||||
/* 106 */ //I(PendingLoreFlag)
|
||||
/* 107 */ I(ArtifactFlag)
|
||||
/* 094 */ C("0")
|
||||
/* 108 */ //I(SummonedFlag)
|
||||
/* 109 */ I(Favor)
|
||||
/* 121 */ I(GuildFavor)
|
||||
/* 110 */ I(FVNoDrop)
|
||||
/* 112 */ I(DotShielding)
|
||||
/* 113 */ I(Attack)
|
||||
/* 114 */ I(Regen)
|
||||
/* 115 */ I(ManaRegen)
|
||||
/* 116 */ I(EnduranceRegen)
|
||||
/* 117 */ I(Haste)
|
||||
/* 118 */ I(DamageShield)
|
||||
/* 120 */ C("0")
|
||||
/* 121 */ C("0")
|
||||
/* 125 */ I(Attuneable)
|
||||
/* 126 */ I(NoPet)
|
||||
/* 124 */ C("0")
|
||||
/* 129 */ I(PotionBelt)
|
||||
/* 130 */ I(PotionBeltSlots)
|
||||
/* 131 */ I(StackSize)
|
||||
/* 132 */ I(NoTransfer)
|
||||
/* 129 */ C("0")
|
||||
/* 132 */ I(QuestItemFlag)
|
||||
/* 131 */ C("0")
|
||||
/* 132 */ C("00000000000000000000000000000000000000")
|
||||
/* 134 */ I(Click.Effect)
|
||||
/* 135 */ I(Click.Type)
|
||||
/* 136 */ I(Click.Level2)
|
||||
/* 137 */ I(Click.Level)
|
||||
/* 055 */ I(MaxCharges)
|
||||
/* 060 */ I(CastTime)
|
||||
/* 119 */ I(RecastDelay)
|
||||
/* 120 */ I(RecastType)
|
||||
/* 138 */ C("0") //clickunk5 (prolly ProcRate)
|
||||
/* 138 */ C("") //clickunk6
|
||||
/* 138 */ C("-1") //clickunk7
|
||||
/* 139 */ I(Proc.Effect)
|
||||
/* 140 */ I(Proc.Type)
|
||||
/* 141 */ I(Proc.Level2)
|
||||
/* 142 */ I(Proc.Level)
|
||||
/* 143 */ C("0") //procunk1 (prolly MaxCharges)
|
||||
/* 143 */ C("0") //procunk2 (prolly CastTime)
|
||||
/* 143 */ C("0") //procunk3 (prolly RecastDelay)
|
||||
/* 143 */ C("0") //procunk4 (prolly RecastType)
|
||||
/* 062 */ I(ProcRate)
|
||||
/* 143 */ C("") //procunk6
|
||||
/* 143 */ C("-1") //procunk7
|
||||
/* 144 */ I(Worn.Effect)
|
||||
/* 145 */ I(Worn.Type)
|
||||
/* 146 */ I(Worn.Level2)
|
||||
/* 147 */ I(Worn.Level)
|
||||
/* 143 */ C("0") //wornunk1 (prolly MaxCharges)
|
||||
/* 143 */ C("0") //wornunk2 (prolly CastTime)
|
||||
/* 143 */ C("0") //wornunk3 (prolly RecastDelay)
|
||||
/* 143 */ C("0") //wornunk4 (prolly RecastType)
|
||||
/* 143 */ C("0") //wornunk5 (prolly ProcRate)
|
||||
/* 143 */ C("") //wornunk6
|
||||
/* 143 */ C("-1") //wornunk7
|
||||
/* 149 */ I(Focus.Effect)
|
||||
/* 150 */ I(Focus.Type)
|
||||
/* 151 */ I(Focus.Level2)
|
||||
/* 152 */ I(Focus.Level)
|
||||
/* 143 */ C("0") //focusunk1 (prolly MaxCharges)
|
||||
/* 143 */ C("0") //focusunk2 (prolly CastTime)
|
||||
/* 143 */ C("0") //focusunk3 (prolly RecastDelay)
|
||||
/* 143 */ C("0") //focusunk4 (prolly RecastType)
|
||||
/* 143 */ C("0") //focusunk5 (prolly ProcRate)
|
||||
/* 143 */ C("") //focusunk6
|
||||
/* 143 */ C("-1") //focusunk7
|
||||
/* 154 */ I(Scroll.Effect)
|
||||
/* 155 */ I(Scroll.Type)
|
||||
/* 156 */ I(Scroll.Level2)
|
||||
/* 157 */ I(Scroll.Level)
|
||||
/* 143 */ C("0") //scrollunk1 (prolly MaxCharges)
|
||||
/* 143 */ C("0") //scrollunk2 (prolly CastTime)
|
||||
/* 143 */ C("0") //scrollunk3 (prolly RecastDelay)
|
||||
/* 143 */ C("0") //scrollunk4 (prolly RecastType)
|
||||
/* 143 */ C("0") //scrollunk5 (prolly ProcRate)
|
||||
/* 143 */ C("") //scrollunk6
|
||||
/* 143 */ C("-1") //scrollunk7
|
||||
/* 193 */ C("0") //Power Source Capacity
|
||||
/* 194 */ C("0") //purity
|
||||
|
||||
#endif
|
||||
|
||||
#undef I
|
||||
#undef C
|
||||
#undef S
|
||||
#undef F
|
||||
|
||||
173
common/patches/rof2_ops.h
Normal file
173
common/patches/rof2_ops.h
Normal file
@ -0,0 +1,173 @@
|
||||
// out-going packets that require an ENCODE translation:
|
||||
// Begin RoF2 Encodes
|
||||
|
||||
// incoming packets that require a DECODE translation:
|
||||
// Begin RoF2 Decodes
|
||||
|
||||
|
||||
// End RoF2 Encodes/Decodes
|
||||
|
||||
// These require Encodes/Decodes for RoF, so they do for RoF2 as well
|
||||
// Begin RoF Encodes
|
||||
E(OP_Action)
|
||||
E(OP_AdventureMerchantSell)
|
||||
E(OP_AltCurrency)
|
||||
E(OP_AltCurrencySell)
|
||||
E(OP_Animation)
|
||||
E(OP_ApplyPoison)
|
||||
E(OP_AugmentInfo)
|
||||
E(OP_Barter)
|
||||
E(OP_BazaarSearch)
|
||||
E(OP_BeginCast)
|
||||
E(OP_BlockedBuffs)
|
||||
E(OP_Buff)
|
||||
E(OP_BuffCreate)
|
||||
E(OP_CancelTrade)
|
||||
E(OP_CastSpell)
|
||||
E(OP_ChannelMessage)
|
||||
E(OP_CharInventory)
|
||||
E(OP_ClickObjectAction)
|
||||
E(OP_ClientUpdate)
|
||||
E(OP_Consider)
|
||||
E(OP_Damage)
|
||||
E(OP_DeleteCharge)
|
||||
E(OP_DeleteItem)
|
||||
E(OP_DeleteSpawn)
|
||||
E(OP_DisciplineUpdate)
|
||||
E(OP_DzCompass)
|
||||
E(OP_DzExpeditionEndsWarning)
|
||||
E(OP_DzExpeditionInfo)
|
||||
E(OP_DzExpeditionList)
|
||||
E(OP_DzJoinExpeditionConfirm)
|
||||
E(OP_DzLeaderStatus)
|
||||
E(OP_DzMemberList)
|
||||
E(OP_ExpansionInfo)
|
||||
E(OP_GMLastName)
|
||||
E(OP_GMTrainSkillConfirm)
|
||||
E(OP_GroundSpawn)
|
||||
E(OP_GroupCancelInvite)
|
||||
E(OP_GroupFollow)
|
||||
E(OP_GroupFollow2)
|
||||
E(OP_GroupInvite)
|
||||
E(OP_GroupUpdate)
|
||||
E(OP_GuildMemberList)
|
||||
E(OP_GuildMemberUpdate)
|
||||
E(OP_GuildsList)
|
||||
E(OP_HPUpdate)
|
||||
E(OP_Illusion)
|
||||
E(OP_InspectBuffs)
|
||||
E(OP_InspectRequest)
|
||||
E(OP_InterruptCast)
|
||||
E(OP_ItemLinkResponse)
|
||||
E(OP_ItemPacket)
|
||||
E(OP_ItemVerifyReply)
|
||||
E(OP_LeadershipExpUpdate)
|
||||
E(OP_LogServer)
|
||||
E(OP_LootItem)
|
||||
E(OP_ManaChange)
|
||||
E(OP_MercenaryDataResponse)
|
||||
E(OP_MercenaryDataUpdate)
|
||||
E(OP_MoveItem)
|
||||
E(OP_NewSpawn)
|
||||
E(OP_NewZone)
|
||||
E(OP_OnLevelMessage)
|
||||
//E(OP_OpenNewTasksWindow)
|
||||
E(OP_PetBuffWindow)
|
||||
E(OP_PlayerProfile)
|
||||
E(OP_RaidJoin)
|
||||
E(OP_RaidUpdate)
|
||||
E(OP_ReadBook)
|
||||
E(OP_RecipeAutoCombine)
|
||||
E(OP_RemoveBlockedBuffs)
|
||||
E(OP_RequestClientZoneChange)
|
||||
E(OP_RespondAA)
|
||||
E(OP_RezzRequest)
|
||||
E(OP_SendAATable)
|
||||
E(OP_SendCharInfo)
|
||||
E(OP_SendMembership)
|
||||
E(OP_SendZonepoints)
|
||||
E(OP_SetGuildRank)
|
||||
E(OP_ShopPlayerBuy)
|
||||
E(OP_ShopPlayerSell)
|
||||
E(OP_ShopRequest)
|
||||
E(OP_SkillUpdate)
|
||||
E(OP_SomeItemPacketMaybe)
|
||||
E(OP_SpawnAppearance)
|
||||
E(OP_SpawnDoor)
|
||||
E(OP_Stun)
|
||||
E(OP_TargetBuffs)
|
||||
E(OP_TaskDescription)
|
||||
E(OP_TaskHistoryReply)
|
||||
E(OP_Track)
|
||||
E(OP_Trader)
|
||||
E(OP_TraderBuy)
|
||||
E(OP_TributeInfo)
|
||||
E(OP_TributeItem)
|
||||
E(OP_VetRewardsAvaliable)
|
||||
E(OP_WearChange)
|
||||
E(OP_WhoAllResponse)
|
||||
E(OP_ZoneChange)
|
||||
E(OP_ZoneEntry)
|
||||
E(OP_ZonePlayerToBind)
|
||||
E(OP_ZoneServerInfo)
|
||||
E(OP_ZoneSpawns)
|
||||
// Begin RoF Decodes
|
||||
D(OP_AdventureMerchantSell)
|
||||
D(OP_AltCurrencySell)
|
||||
D(OP_AltCurrencySellSelection)
|
||||
D(OP_ApplyPoison)
|
||||
D(OP_AugmentInfo)
|
||||
D(OP_AugmentItem)
|
||||
D(OP_BazaarSearch)
|
||||
D(OP_BlockedBuffs)
|
||||
D(OP_Buff)
|
||||
D(OP_BuffRemoveRequest)
|
||||
D(OP_CastSpell)
|
||||
D(OP_ChannelMessage)
|
||||
D(OP_CharacterCreate)
|
||||
D(OP_ClientUpdate)
|
||||
D(OP_Consider)
|
||||
D(OP_ConsiderCorpse)
|
||||
D(OP_Consume)
|
||||
D(OP_Damage)
|
||||
D(OP_DeleteItem)
|
||||
D(OP_EnvDamage)
|
||||
D(OP_FaceChange)
|
||||
D(OP_FindPersonRequest)
|
||||
D(OP_GMLastName)
|
||||
D(OP_GroupCancelInvite)
|
||||
D(OP_GroupDisband)
|
||||
D(OP_GroupFollow)
|
||||
D(OP_GroupFollow2)
|
||||
D(OP_GroupInvite)
|
||||
D(OP_GroupInvite2)
|
||||
D(OP_GuildDemote)
|
||||
D(OP_GuildRemove)
|
||||
D(OP_GuildStatus)
|
||||
D(OP_InspectRequest)
|
||||
D(OP_ItemLinkClick)
|
||||
D(OP_ItemVerifyRequest)
|
||||
D(OP_LoadSpellSet)
|
||||
D(OP_LootItem)
|
||||
D(OP_MoveItem)
|
||||
D(OP_PetCommands)
|
||||
D(OP_RaidInvite)
|
||||
D(OP_ReadBook)
|
||||
D(OP_RecipeAutoCombine)
|
||||
D(OP_RemoveBlockedBuffs)
|
||||
D(OP_RezzAnswer)
|
||||
D(OP_Save)
|
||||
D(OP_SetServerFilter)
|
||||
D(OP_ShopPlayerBuy)
|
||||
D(OP_ShopPlayerSell)
|
||||
D(OP_ShopRequest)
|
||||
D(OP_Trader)
|
||||
D(OP_TraderBuy)
|
||||
D(OP_TradeSkillCombine)
|
||||
D(OP_TributeItem)
|
||||
D(OP_WhoAllRequest)
|
||||
D(OP_ZoneChange)
|
||||
D(OP_ZoneEntry)
|
||||
// End RoF Encodes/Decodes
|
||||
#undef E
|
||||
#undef D
|
||||
4922
common/patches/rof2_structs.h
Normal file
4922
common/patches/rof2_structs.h
Normal file
File diff suppressed because it is too large
Load Diff
660
utils/patches/patch_RoF2.conf
Normal file
660
utils/patches/patch_RoF2.conf
Normal file
@ -0,0 +1,660 @@
|
||||
# ShowEQ Import Notes:
|
||||
# ZERO THE FILE first
|
||||
# perl -pi -e 's/0x[0-9a-fA-F]{4}/0x0000/g' opcodes.conf
|
||||
# Unknown Mapping:
|
||||
# OP_Action2 -> OP_Damage
|
||||
# OP_EnvDamage -> OP_Damage ---> might have been a one time mistake
|
||||
# Name Differences:
|
||||
# OP_CancelInvite -> OP_GroupCancelInvite
|
||||
# OP_GMFind -> OP_FindPersonRequest
|
||||
# OP_CommonMessage -> OP_ChannelMessage
|
||||
|
||||
OP_Unknown=0x0000
|
||||
OP_ExploreUnknown=0x0000 # used for unknown explorer
|
||||
|
||||
# world packets
|
||||
# Required to reach Char Select:
|
||||
OP_SendLoginInfo=0x7a09
|
||||
OP_ApproveWorld=0x7499
|
||||
OP_LogServer=0x7ceb
|
||||
OP_SendCharInfo=0x00d2
|
||||
OP_ExpansionInfo=0x590d
|
||||
OP_GuildsList=0x0000
|
||||
OP_EnterWorld=0x578f
|
||||
OP_PostEnterWorld=0x6259
|
||||
OP_World_Client_CRC1=0x12cc
|
||||
OP_World_Client_CRC2=0x0f13
|
||||
OP_SendSpellChecksum=0x0000
|
||||
OP_SendSkillCapsChecksum=0x0000
|
||||
|
||||
# Character Select Related:
|
||||
OP_SendMaxCharacters=0x5475
|
||||
OP_SendMembership=0x7acc
|
||||
OP_SendMembershipDetails=0x057b
|
||||
OP_CharacterCreateRequest=0x6773
|
||||
OP_CharacterCreate=0x6bbf
|
||||
OP_DeleteCharacter=0x1808
|
||||
OP_RandomNameGenerator=0x5954
|
||||
OP_ApproveName=0x56a2
|
||||
OP_MOTD=0x0c22
|
||||
OP_SetChatServer=0x1bc5
|
||||
OP_SetChatServer2=0x7eec
|
||||
OP_ZoneServerInfo=0x4c44
|
||||
OP_WorldComplete=0x4493
|
||||
OP_WorldUnknown001=0x2301
|
||||
OP_FloatListThing=0x46c6
|
||||
|
||||
# Reasons for Disconnect:
|
||||
OP_ZoneUnavail=0x4cb4
|
||||
OP_WorldClientReady=0x23c1
|
||||
OP_CharacterStillInZone=0x0000
|
||||
OP_WorldChecksumFailure=0x0000
|
||||
OP_WorldLoginFailed=0x0000
|
||||
OP_WorldLogout=0x0000
|
||||
OP_WorldLevelTooHigh=0x0000
|
||||
OP_CharInacessable=0x0000
|
||||
OP_UserCompInfo=0x0000
|
||||
OP_SendExeChecksum=0x0000
|
||||
OP_SendBaseDataChecksum=0x0000
|
||||
|
||||
# Zone in opcodes
|
||||
OP_AckPacket=0x471d
|
||||
OP_ZoneEntry=0x5089
|
||||
OP_ReqNewZone=0x7887
|
||||
OP_NewZone=0x1795
|
||||
OP_ZoneSpawns=0x5237
|
||||
OP_PlayerProfile=0x6506
|
||||
OP_TimeOfDay=0x5070
|
||||
OP_LevelUpdate=0x1eec
|
||||
OP_Stamina=0x2a79
|
||||
OP_RequestClientZoneChange=0x3fcf
|
||||
OP_ZoneChange=0x2d18
|
||||
OP_LockoutTimerInfo=0x0000
|
||||
OP_ZoneServerReady=0x0000
|
||||
OP_ZoneInUnknown=0x0000
|
||||
OP_LogoutReply=0x0000
|
||||
OP_PreLogoutReply=0x0000
|
||||
|
||||
# Required to fully log in
|
||||
OP_SpawnAppearance=0x0971
|
||||
OP_ChangeSize=0x4707
|
||||
OP_TributeUpdate=0x5961
|
||||
OP_TributeTimer=0x073d
|
||||
OP_SendTributes=0x729b
|
||||
OP_SendGuildTributes=0x1877
|
||||
OP_TributeInfo=0x4254
|
||||
OP_Weather=0x661e
|
||||
OP_ReqClientSpawn=0x35fa
|
||||
OP_SpawnDoor=0x7291
|
||||
OP_GroundSpawn=0x6fca
|
||||
OP_SendZonepoints=0x69a4
|
||||
OP_BlockedBuffs=0x3033
|
||||
OP_RemoveBlockedBuffs=0x0de7
|
||||
OP_ClearBlockedBuffs=0x34cb
|
||||
OP_WorldObjectsSent=0x5ae2
|
||||
OP_SendExpZonein=0x5f8e
|
||||
OP_SendAATable=0x66b5
|
||||
OP_RespondAA=0x7a27
|
||||
OP_UpdateAA=0x66f0
|
||||
OP_SendAAStats=0x43c8
|
||||
OP_AAExpUpdate=0x7d14
|
||||
OP_ExpUpdate=0x20ed
|
||||
OP_HPUpdate=0x2828
|
||||
OP_ManaChange=0x43af
|
||||
OP_TGB=0x0876
|
||||
OP_SpecialMesg=0x0083
|
||||
OP_GuildMemberList=0x12a6
|
||||
OP_GuildMOTD=0x3e13
|
||||
OP_CharInventory=0x5ca6
|
||||
OP_WearChange=0x7994
|
||||
OP_ClientUpdate=0x7dfc
|
||||
OP_ClientReady=0x345d
|
||||
OP_SetServerFilter=0x444d
|
||||
|
||||
# Guild Opcodes - Disabled until crashes are resolved in RoF
|
||||
OP_GetGuildMOTD=0x36e0
|
||||
OP_GetGuildMOTDReply=0x4f1f
|
||||
OP_GuildMemberUpdate=0x69b9
|
||||
OP_GuildInvite=0x7099
|
||||
OP_GuildRemove=0x1444
|
||||
OP_GuildPeace=0x67e3
|
||||
OP_SetGuildMOTD=0x0b0b
|
||||
OP_GuildList=0x507a
|
||||
OP_GuildWar=0x1ffb
|
||||
OP_GuildLeader=0x7e09
|
||||
OP_GuildDelete=0x3708
|
||||
OP_GuildInviteAccept=0x7053
|
||||
OP_GuildDemote=0x2d4e
|
||||
OP_GuildPromote=0x0000
|
||||
OP_GuildPublicNote=0x5053
|
||||
OP_GuildManageBanker=0x748f
|
||||
OP_GuildBank=0x5134
|
||||
OP_SetGuildRank=0x0b9c
|
||||
OP_GuildUpdateURLAndChannel=0x2958
|
||||
OP_GuildStatus=0x7326
|
||||
OP_GuildCreate=0x1dc8
|
||||
OP_GuildMemberLevelUpdate=0x0000 # Unused?
|
||||
OP_ZoneGuildList=0x0000 # Unused?
|
||||
OP_GetGuildsList=0x0000 # Unused?
|
||||
OP_LFGuild=0x0000
|
||||
OP_GuildManageRemove=0x0000
|
||||
OP_GuildManageAdd=0x0000
|
||||
OP_GuildManageStatus=0x0000
|
||||
|
||||
# GM/Guide Opcodes
|
||||
OP_GMServers=0x08c1
|
||||
OP_GMBecomeNPC=0x3ae1
|
||||
OP_GMZoneRequest=0x62ac
|
||||
OP_GMZoneRequest2=0x7e1a
|
||||
OP_GMGoto=0x7d8e
|
||||
OP_GMSearchCorpse=0x357c
|
||||
OP_GMHideMe=0x79c5
|
||||
OP_GMDelCorpse=0x607e
|
||||
OP_GMApproval=0x6db5
|
||||
OP_GMToggle=0x2097
|
||||
OP_GMSummon=0x486f
|
||||
OP_GMEmoteZone=0x1cfd
|
||||
OP_GMEmoteWorld=0x458e
|
||||
OP_GMFind=0x4a8f
|
||||
OP_GMKick=0x26a7
|
||||
OP_GMKill=0x51d3
|
||||
OP_GMNameChange=0x035f
|
||||
OP_GMLastName=0x46ce
|
||||
|
||||
# Misc Opcodes
|
||||
OP_InspectRequest=0x57bc
|
||||
OP_InspectAnswer=0x71ac
|
||||
OP_InspectMessageUpdate=0x4d25
|
||||
OP_BeginCast=0x318f
|
||||
OP_ColoredText=0x0000
|
||||
OP_ConsentResponse=0x384a
|
||||
OP_MemorizeSpell=0x217c
|
||||
OP_SwapSpell=0x0efa
|
||||
OP_CastSpell=0x1287
|
||||
OP_Consider=0x742b
|
||||
OP_FormattedMessage=0x1024
|
||||
OP_SimpleMessage=0x213f
|
||||
OP_Buff=0x659c
|
||||
OP_Illusion=0x312a
|
||||
OP_MoneyOnCorpse=0x5f44
|
||||
OP_RandomReply=0x106b
|
||||
OP_DenyResponse=0x2382
|
||||
OP_SkillUpdate=0x004c
|
||||
OP_GMTrainSkillConfirm=0x66dd
|
||||
OP_RandomReq=0x7b10
|
||||
OP_Death=0x6517
|
||||
OP_GMTraining=0x1966
|
||||
OP_GMEndTraining=0x4d6b
|
||||
OP_GMTrainSkill=0x2a85
|
||||
OP_Animation=0x7177
|
||||
OP_Begging=0x6703
|
||||
OP_Consent=0x1fd1
|
||||
OP_ConsentDeny=0x7a45
|
||||
OP_AutoFire=0x241e
|
||||
OP_PetCommands=0x0159
|
||||
OP_DeleteSpell=0x52e5
|
||||
OP_Surname=0x0423
|
||||
OP_ClearSurname=0x7d23
|
||||
OP_FaceChange=0x5578
|
||||
OP_SenseHeading=0x260a
|
||||
OP_Action=0x744c
|
||||
OP_ConsiderCorpse=0x5204
|
||||
OP_HideCorpse=0x49e1
|
||||
OP_CorpseDrag=0x0904
|
||||
OP_CorpseDrop=0x7037
|
||||
OP_Bug=0x73f4
|
||||
OP_Feedback=0x5602
|
||||
OP_Report=0x1414
|
||||
OP_Damage=0x6f15
|
||||
OP_ChannelMessage=0x2b2d
|
||||
OP_Assist=0x4478
|
||||
OP_AssistGroup=0x27f8
|
||||
OP_MoveCoin=0x0bcf
|
||||
OP_ZonePlayerToBind=0x0ecb
|
||||
OP_KeyRing=0x6857
|
||||
OP_WhoAllRequest=0x65ab
|
||||
OP_WhoAllResponse=0x7c88
|
||||
OP_FriendsWho=0x3956
|
||||
OP_ConfirmDelete=0x43a3
|
||||
OP_Logout=0x4ac6
|
||||
OP_Rewind=0x1745
|
||||
OP_TargetCommand=0x58e2
|
||||
OP_Hide=0x67fe
|
||||
OP_Jump=0x2060
|
||||
OP_Camp=0x28ec
|
||||
OP_Emote=0x373b
|
||||
OP_SetRunMode=0x009f
|
||||
OP_BankerChange=0x383c
|
||||
OP_TargetMouse=0x075d
|
||||
OP_MobHealth=0x37b1
|
||||
OP_InitialMobHealth=0x0000 # Unused?
|
||||
OP_TargetHoTT=0x0272
|
||||
OP_XTargetResponse=0x672f
|
||||
OP_XTargetRequest=0x45be
|
||||
OP_XTargetAutoAddHaters=0x792c
|
||||
OP_TargetBuffs=0x4f4b
|
||||
OP_BuffCreate=0x3377
|
||||
OP_BuffRemoveRequest=0x64f2
|
||||
OP_DeleteSpawn=0x7280
|
||||
OP_AutoAttack=0x109d
|
||||
OP_AutoAttack2=0x3526
|
||||
OP_Consume=0x4b70
|
||||
OP_MoveItem=0x32ee
|
||||
OP_DeleteItem=0x18ad
|
||||
OP_DeleteCharge=0x01b8
|
||||
OP_ItemPacket=0x368e
|
||||
OP_ItemLinkResponse=0x633c
|
||||
OP_ItemLinkClick=0x4cef
|
||||
OP_ItemPreview=0x6b5c
|
||||
OP_NewSpawn=0x6097
|
||||
OP_Track=0x17e5
|
||||
OP_TrackTarget=0x0029
|
||||
OP_TrackUnknown=0x4577
|
||||
OP_ClickDoor=0x3a8f
|
||||
OP_MoveDoor=0x08e8
|
||||
OP_RemoveAllDoors=0x700c
|
||||
OP_EnvDamage=0x51fd
|
||||
OP_BoardBoat=0x4211
|
||||
OP_Forage=0x5306
|
||||
OP_LeaveBoat=0x7617
|
||||
OP_ControlBoat=0x0ae7
|
||||
OP_SafeFallSuccess=0x2219
|
||||
OP_RezzComplete=0x760d
|
||||
OP_RezzRequest=0x3c21
|
||||
OP_RezzAnswer=0x701c
|
||||
OP_Shielding=0x48c1
|
||||
OP_RequestDuel=0x3af1
|
||||
OP_MobRename=0x2c57
|
||||
OP_AugmentItem=0x661b
|
||||
OP_WeaponEquip1=0x34a7
|
||||
OP_WeaponEquip2=0x559a
|
||||
OP_WeaponUnequip2=0x2d25
|
||||
OP_ApplyPoison=0x31e6
|
||||
OP_Save=0x4a39
|
||||
OP_TestBuff=0x7cb8
|
||||
OP_CustomTitles=0x100e
|
||||
OP_Split=0x3a54
|
||||
OP_YellForHelp=0x4e56
|
||||
OP_LoadSpellSet=0x261d
|
||||
OP_Bandolier=0x7677
|
||||
OP_PotionBelt=0x1a3e
|
||||
OP_DuelResponse=0x6a46
|
||||
OP_DuelResponse2=0x68d3
|
||||
OP_SaveOnZoneReq=0x600d
|
||||
OP_ReadBook=0x72df
|
||||
OP_Dye=0x23b9
|
||||
OP_InterruptCast=0x048c
|
||||
OP_AAAction=0x424e
|
||||
OP_LeadershipExpToggle=0x6c55
|
||||
OP_LeadershipExpUpdate=0x2797
|
||||
OP_PurchaseLeadershipAA=0x0026
|
||||
OP_UpdateLeadershipAA=0x026
|
||||
OP_MarkNPC=0x5a58
|
||||
OP_MarkRaidNPC=0x74bd #unimplemented
|
||||
OP_ClearNPCMarks=0x2003
|
||||
OP_ClearRaidNPCMarks=0x20d3 #unimplemented
|
||||
OP_DelegateAbility=0x76b8
|
||||
OP_SetGroupTarget=0x2814
|
||||
OP_Charm=0x5d92
|
||||
OP_Stun=0x36a4
|
||||
OP_SendFindableNPCs=0x3897
|
||||
OP_FindPersonRequest=0x5cea
|
||||
OP_FindPersonReply=0x7e58
|
||||
OP_Sound=0x1a30
|
||||
OP_PetBuffWindow=0x5882
|
||||
OP_LevelAppearance=0x3bc9
|
||||
OP_Translocate=0x6580
|
||||
OP_Sacrifice=0x1821
|
||||
OP_PopupResponse=0x214a
|
||||
OP_OnLevelMessage=0x4fd0
|
||||
OP_AugmentInfo=0x0afb
|
||||
OP_Petition=0x5f03
|
||||
OP_SomeItemPacketMaybe=0x747c
|
||||
OP_PVPStats=0x6f4b
|
||||
OP_PVPLeaderBoardRequest=0x3707
|
||||
OP_PVPLeaderBoardReply=0x25b7
|
||||
OP_PVPLeaderBoardDetailsRequest=0x15a9
|
||||
OP_PVPLeaderBoardDetailsReply=0x04aa
|
||||
OP_RestState=0x00f
|
||||
OP_RespawnWindow=0x28bc
|
||||
OP_LDoNButton=0x5327
|
||||
OP_SetStartCity=0x6326
|
||||
OP_VoiceMacroIn=0x17fd
|
||||
OP_VoiceMacroOut=0x409a
|
||||
OP_ItemViewUnknown=0x2289
|
||||
OP_VetRewardsAvaliable=0x590e
|
||||
OP_VetClaimRequest=0x1126
|
||||
OP_VetClaimReply=0x16d4
|
||||
OP_DisciplineUpdate=0x759e
|
||||
OP_DisciplineTimer=0x6989
|
||||
OP_BecomeCorpse=0x0000 # Unused?
|
||||
OP_Action2=0x0000 # Unused?
|
||||
OP_MobUpdate=0x2c84
|
||||
OP_NPCMoveUpdate=0x189c
|
||||
OP_CameraEffect=0x127f
|
||||
OP_SpellEffect=0x5936
|
||||
OP_RemoveNimbusEffect=0xc693
|
||||
OP_AltCurrency=0x7121
|
||||
OP_AltCurrencyMerchantRequest=0x6b6d
|
||||
OP_AltCurrencyMerchantReply=0x74ec
|
||||
OP_AltCurrencyPurchase=0x61cb
|
||||
OP_AltCurrencySell=0x0165
|
||||
OP_AltCurrencySellSelection=0x5409
|
||||
OP_AltCurrencyReclaim=0x532a
|
||||
OP_CrystalCountUpdate=0x467f
|
||||
OP_CrystalCreate=0x7aee
|
||||
OP_CrystalReclaim=0x2439
|
||||
OP_Untargetable=0x053c
|
||||
OP_IncreaseStats=0x70a3
|
||||
OP_Weblink=0x18d3
|
||||
OP_OpenContainer=0x0000
|
||||
OP_Marquee=0x0000
|
||||
OP_ItemRecastDelay=0x08a6
|
||||
#OP_OpenInventory=0x0000 # Likely does not exist in RoF -U
|
||||
|
||||
OP_DzQuit=0xb2e3
|
||||
OP_DzListTimers=0x7b68
|
||||
OP_DzAddPlayer=0x4701
|
||||
OP_DzRemovePlayer=0x1abc
|
||||
OP_DzSwapPlayer=0x405b
|
||||
OP_DzMakeLeader=0x543d
|
||||
OP_DzPlayerList=0x14c6
|
||||
OP_DzJoinExpeditionConfirm=0x7f4b
|
||||
OP_DzJoinExpeditionReply=0x1950
|
||||
OP_DzExpeditionInfo=0x9119
|
||||
OP_DzExpeditionList=0x205f
|
||||
OP_DzMemberStatus=0x32f0
|
||||
OP_DzLeaderStatus=0x3de9
|
||||
OP_DzExpeditionEndsWarning=0x5189
|
||||
OP_DzMemberList=0x5ae4
|
||||
OP_DzCompass=0x3e0e
|
||||
OP_DzChooseZone=0x0000
|
||||
|
||||
# New Opcodes
|
||||
OP_SpawnPositionUpdate=0x0000 # Actually OP_MobUpdate ?
|
||||
OP_ManaUpdate=0x3791
|
||||
OP_EnduranceUpdate=0x5f42
|
||||
OP_MobManaUpdate=0x2404
|
||||
OP_MobEnduranceUpdate=0x1c81
|
||||
|
||||
# Mercenary Opcodes
|
||||
OP_MercenaryDataUpdateRequest=0x7b89
|
||||
OP_MercenaryDataUpdate=0x61a4
|
||||
OP_MercenaryDataRequest=0x11c1
|
||||
OP_MercenaryDataResponse=0x72ce
|
||||
OP_MercenaryHire=0x7169
|
||||
OP_MercenaryDismiss=0x6e83
|
||||
OP_MercenaryTimerRequest=0x31e4
|
||||
OP_MercenaryTimer=0x0763
|
||||
OP_MercenaryUnknown1=0x5d26
|
||||
OP_MercenaryCommand=0x27f2
|
||||
OP_MercenarySuspendRequest=0x4407
|
||||
OP_MercenarySuspendResponse=0x6f03
|
||||
OP_MercenaryUnsuspendResponse=0x27a0
|
||||
|
||||
# Looting
|
||||
OP_LootRequest=0x0adf
|
||||
OP_EndLootRequest=0x30f7
|
||||
OP_LootItem=0x4dc9
|
||||
OP_LootComplete=0x55c4
|
||||
|
||||
# bazaar trader stuff:
|
||||
OP_BazaarSearch=0x39d6
|
||||
OP_TraderDelItem=0x0000
|
||||
OP_BecomeTrader=0x61b3
|
||||
OP_TraderShop=0x31df
|
||||
OP_Trader=0x4ef5
|
||||
OP_TraderBuy=0x0000
|
||||
OP_Barter=0x243a
|
||||
OP_ShopItem=0x0000
|
||||
OP_BazaarInspect=0x0000
|
||||
OP_Bazaar=0x0000
|
||||
OP_TraderItemUpdate=0x0000
|
||||
|
||||
# pc/npc trading
|
||||
OP_TradeRequest=0x77b5
|
||||
OP_TradeAcceptClick=0x69e2
|
||||
OP_TradeRequestAck=0x14bf
|
||||
OP_TradeCoins=0x4206
|
||||
OP_FinishTrade=0x3993
|
||||
OP_CancelTrade=0x354c
|
||||
OP_TradeMoneyUpdate=0x68c2
|
||||
OP_MoneyUpdate=0x640c
|
||||
OP_TradeBusy=0x5505
|
||||
|
||||
# Sent after canceling trade or after closing tradeskill object
|
||||
OP_FinishWindow=0x7349
|
||||
OP_FinishWindow2=0x40ef
|
||||
|
||||
# Sent on Live for what seems to be item existance verification
|
||||
# Ex. Before Right Click Effect happens from items
|
||||
OP_ItemVerifyRequest=0x097b
|
||||
OP_ItemVerifyReply=0x2115
|
||||
|
||||
# merchant stuff
|
||||
OP_ShopPlayerSell=0x1901
|
||||
OP_ShopRequest=0x4fed
|
||||
OP_ShopEnd=0x30a8
|
||||
OP_ShopEndConfirm=0x3196
|
||||
OP_ShopPlayerBuy=0x04c
|
||||
OP_ShopDelItem=0x724f
|
||||
|
||||
# tradeskill stuff:
|
||||
OP_ClickObject=0x4aa1
|
||||
OP_ClickObjectAction=0x0c1e
|
||||
OP_ClearObject=0x7a11
|
||||
OP_RecipeDetails=0x40d7
|
||||
OP_RecipesFavorite=0x5c74
|
||||
OP_RecipesSearch=0x1db6
|
||||
OP_RecipeReply=0x6e02
|
||||
OP_RecipeAutoCombine=0x6261
|
||||
OP_TradeSkillCombine=0x579a
|
||||
|
||||
# Tribute Packets:
|
||||
OP_OpenGuildTributeMaster=0x378d
|
||||
OP_OpenTributeMaster=0x7666
|
||||
OP_SelectTribute=0x79fc
|
||||
OP_TributeItem=0x4f3e
|
||||
OP_TributeMoney=0x58fb
|
||||
OP_TributeToggle=0x241d
|
||||
OP_TributePointUpdate=0x5300
|
||||
OP_TributeNPC=0x0000
|
||||
OP_GuildTributeInfo=0x0000
|
||||
OP_OpenTributeReply=0x0000
|
||||
OP_GuildTributeStatus=0x0000
|
||||
|
||||
# Adventure packets:
|
||||
OP_LeaveAdventure=0x5d18
|
||||
OP_AdventureFinish=0x400f
|
||||
OP_AdventureInfoRequest=0x3cb0
|
||||
OP_AdventureInfo=0x4c54
|
||||
OP_AdventureRequest=0x2c6c
|
||||
OP_AdventureDetails=0x5648
|
||||
OP_AdventureData=0x7171
|
||||
OP_AdventureUpdate=0x1b01
|
||||
OP_AdventureMerchantRequest=0x6922
|
||||
OP_AdventureMerchantResponse=0x3e47
|
||||
OP_AdventureMerchantPurchase=0x5b72
|
||||
OP_AdventureMerchantSell=0x2f9b
|
||||
OP_AdventurePointsUpdate=0x65c3
|
||||
OP_AdventureStatsRequest=0x5a62
|
||||
OP_AdventureStatsReply=0x2370
|
||||
OP_AdventureLeaderboardRequest=0x7093
|
||||
OP_AdventureLeaderboardReply=0x7f79
|
||||
|
||||
# Group Opcodes
|
||||
OP_GroupDisband=0x4c10
|
||||
OP_GroupInvite=0x1649
|
||||
OP_GroupFollow=0x05ce
|
||||
OP_GroupUpdate=0x3abb
|
||||
OP_GroupUpdateB=0x6194
|
||||
OP_GroupCancelInvite=0x0000
|
||||
OP_GroupAcknowledge=0x7323
|
||||
OP_GroupDelete=0x0f6c
|
||||
OP_CancelInvite=0x32c2
|
||||
OP_GroupFollow2=0x2a50
|
||||
OP_GroupInvite2=0x6c65
|
||||
OP_GroupDisbandYou=0x1ae5
|
||||
OP_GroupDisbandOther=0x74da
|
||||
OP_GroupLeaderChange=0x21b4
|
||||
OP_GroupRoles=0x70e2
|
||||
OP_GroupMakeLeader=0x4229
|
||||
OP_DoGroupLeadershipAbility=0x1fb5
|
||||
OP_GroupLeadershipAAUpdate=0x02cf
|
||||
OP_GroupMentor=0x5892
|
||||
OP_InspectBuffs=0x486c
|
||||
|
||||
# LFG/LFP Opcodes
|
||||
OP_LFGCommand=0x6060
|
||||
OP_LFGGetMatchesRequest=0x0340
|
||||
OP_LFGGetMatchesResponse=0x5048
|
||||
OP_LFPGetMatchesRequest=0x4d7d
|
||||
OP_LFPGetMatchesResponse=0x22c6
|
||||
OP_LFPCommand=0x49a9
|
||||
OP_LFGAppearance=0x0000
|
||||
OP_LFGResponse=0x0000
|
||||
|
||||
# Raid Opcodes
|
||||
OP_RaidInvite=0x55ac
|
||||
OP_RaidUpdate=0x3973
|
||||
OP_RaidJoin=0x0000
|
||||
|
||||
# Button-push commands
|
||||
OP_Taunt=0x2703
|
||||
OP_CombatAbility=0x3eba
|
||||
OP_SenseTraps=0x02af
|
||||
OP_PickPocket=0x39e8
|
||||
OP_DisarmTraps=0x78bf
|
||||
OP_Disarm=0x5ec8
|
||||
OP_Sneak=0x5d55
|
||||
OP_Fishing=0x1e2a
|
||||
OP_InstillDoubt=0x640e
|
||||
OP_FeignDeath=0x52fa
|
||||
OP_Mend=0x0ecf
|
||||
OP_Bind_Wound=0x0386
|
||||
OP_LDoNOpen=0x3d5c
|
||||
|
||||
# Task packets
|
||||
OP_TaskDescription=0x083
|
||||
OP_TaskActivity=0x3714
|
||||
OP_CompletedTasks=0x4eba
|
||||
OP_TaskActivityComplete=0x5e19
|
||||
OP_AcceptNewTask=0x0a23
|
||||
OP_CancelTask=0x08d3
|
||||
OP_TaskMemberList=0x5727
|
||||
OP_OpenNewTasksWindow=0x48a2
|
||||
OP_AvaliableTask=0x36e8
|
||||
OP_TaskHistoryRequest=0x5f1c
|
||||
OP_TaskHistoryReply=0x3d05
|
||||
OP_DeclineAllTasks=0x0000
|
||||
|
||||
# Title opcodes
|
||||
OP_NewTitlesAvailable=0x0d32
|
||||
OP_RequestTitles=0x6344
|
||||
OP_SendTitleList=0x2d08
|
||||
OP_SetTitle=0x6527
|
||||
OP_SetTitleReply=0x4c21
|
||||
|
||||
# mail opcodes
|
||||
OP_Command=0x0000
|
||||
OP_MailboxHeader=0x0000
|
||||
OP_MailHeader=0x0000
|
||||
OP_MailBody=0x0000
|
||||
OP_NewMail=0x0000
|
||||
OP_SentConfirm=0x0000
|
||||
|
||||
########### Below this point should not be needed ###########
|
||||
|
||||
# This section are all unknown in Titanium
|
||||
OP_ForceFindPerson=0x0000
|
||||
OP_LocInfo=0x0000
|
||||
OP_ReloadUI=0x0000
|
||||
OP_ItemName=0x0000
|
||||
OP_ItemLinkText=0x0000
|
||||
OP_MultiLineMsg=0x0000
|
||||
OP_MendHPUpdate=0x0000
|
||||
OP_TargetReject=0x0000
|
||||
OP_SafePoint=0x0000
|
||||
OP_ApproveZone=0x0000
|
||||
OP_ZoneComplete=0x0000
|
||||
OP_ClientError=0x0000
|
||||
OP_DumpName=0x0000
|
||||
OP_Heartbeat=0x0000
|
||||
OP_CrashDump=0x0000
|
||||
OP_LoginComplete=0x0000
|
||||
|
||||
# discovered opcodes not yet used:
|
||||
OP_PickLockSuccess=0x0000
|
||||
OP_PlayMP3=0x0000
|
||||
OP_ReclaimCrystals=0x0000
|
||||
OP_DynamicWall=0x0000
|
||||
OP_OpenDiscordMerchant=0x0000
|
||||
OP_DiscordMerchantInventory=0x0000
|
||||
OP_GiveMoney=0x0000
|
||||
OP_RequestKnowledgeBase=0x0000
|
||||
OP_KnowledgeBase=0x0000
|
||||
OP_SlashAdventure=0x0000 # /adventure
|
||||
OP_BecomePVPPrompt=0x0000
|
||||
OP_MoveLogRequest=0x0000 # gone I think
|
||||
OP_MoveLogDisregard=0x0000 # gone I think
|
||||
|
||||
# named unknowns, to make looking for real unknown easier
|
||||
OP_AnnoyingZoneUnknown=0x0000
|
||||
OP_Some6ByteHPUpdate=0x0000 seems to happen when you target group members
|
||||
OP_QueryResponseThing=0x0000
|
||||
|
||||
|
||||
# realityincarnate: these are just here to stop annoying several thousand byte packet dumps
|
||||
#OP_LoginUnknown1=0x46d3 # OP_SendSpellChecksum
|
||||
#OP_LoginUnknown2=0x040b # OP_SendSkillCapsChecksum
|
||||
|
||||
# Petition Opcodes
|
||||
OP_PetitionSearch=0x0000 search term for petition
|
||||
OP_PetitionSearchResults=0x0000 (list of?) matches from search
|
||||
OP_PetitionSearchText=0x0000 text results of search
|
||||
|
||||
OP_PetitionUpdate=0x0000
|
||||
OP_PetitionCheckout=0x0000
|
||||
OP_PetitionCheckIn=0x0000
|
||||
OP_PetitionQue=0x0000
|
||||
OP_PetitionUnCheckout=0x0000
|
||||
OP_PetitionDelete=0x0000
|
||||
OP_DeletePetition=0x0000
|
||||
OP_PetitionResolve=0x0000
|
||||
OP_PDeletePetition=0x0000
|
||||
OP_PetitionBug=0x0000
|
||||
OP_PetitionRefresh=0x0000
|
||||
OP_PetitionCheckout2=0x0000
|
||||
OP_PetitionViewPetition=0x0000
|
||||
|
||||
# Login opcodes
|
||||
OP_SessionReady=0x0000
|
||||
OP_Login=0x0000
|
||||
OP_ServerListRequest=0x0000
|
||||
OP_PlayEverquestRequest=0x0000
|
||||
OP_PlayEverquestResponse=0x0000
|
||||
OP_ChatMessage=0x0000
|
||||
OP_LoginAccepted=0x0000
|
||||
OP_ServerListResponse=0x0000
|
||||
OP_Poll=0x0000
|
||||
OP_EnterChat=0x0000
|
||||
OP_PollResponse=0x0000
|
||||
|
||||
# raw opcodes
|
||||
OP_RAWSessionRequest=0x0000
|
||||
OP_RAWSessionResponse=0x0000
|
||||
OP_RAWCombined=0x0000
|
||||
OP_RAWSessionDisconnect=0x0000
|
||||
OP_RAWKeepAlive=0x0000
|
||||
OP_RAWSessionStatRequest=0x0000
|
||||
OP_RAWSessionStatResponse=0x0000
|
||||
OP_RAWPacket=0x0000
|
||||
OP_RAWFragment=0x0000
|
||||
OP_RAWOutOfOrderAck=0x0000
|
||||
OP_RAWAck=0x0000
|
||||
OP_RAWAppCombined=0x0000
|
||||
OP_RAWOutOfSession=0x0000
|
||||
|
||||
# we need to document the differences between these packets to make identifying them easier
|
||||
OP_Some3ByteHPUpdate=0x0000 # initial HP update for mobs
|
||||
OP_InitialHPUpdate=0x0000
|
||||
66
utils/scripts/opcode_scripts/conf_to_oplist.pl
Normal file
66
utils/scripts/opcode_scripts/conf_to_oplist.pl
Normal file
@ -0,0 +1,66 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
# File Name: conf_to_oplist.pl
|
||||
# Converts a Patch File into the Opcode List with Opcode Names for the Spreadsheet.
|
||||
|
||||
# Directions to use this script:
|
||||
# 1. Paste the contents of the current patch file in the patch_OLD.conf file.
|
||||
# 2. Run this script using "perl conf_to_oplist.pl"
|
||||
# 3. This updates the opcodelist.txt with the values from the Patch File.
|
||||
|
||||
|
||||
$stopmessage = "Failed to open file";
|
||||
open OpcodeFile, "<", "opcodelist.txt" or die $stopmessage;
|
||||
open PatchFile, "<", "patch_OLD.conf" or die $stopmessage;
|
||||
|
||||
my @OpcodeList = <OpcodeFile>;
|
||||
my @PatchFile = <PatchFile>;
|
||||
my %PatchHash = ();
|
||||
|
||||
foreach $line (@PatchFile)
|
||||
{
|
||||
@equalssplit = split(/=/, $line);
|
||||
$ArraySize = @equalssplit;
|
||||
if ($ArraySize > 1)
|
||||
{
|
||||
@OpcodeArray = split(//, $equalssplit[1]);
|
||||
$CurOpcode = $OpcodeArray[0].$OpcodeArray[1].$OpcodeArray[2].$OpcodeArray[3].$OpcodeArray[4].$OpcodeArray[5];
|
||||
$CurOpcode = lc($CurOpcode);
|
||||
# Opcode Name => Opcode
|
||||
$PatchHash{ $CurOpcode } = $equalssplit[0];
|
||||
}
|
||||
}
|
||||
|
||||
close(OpcodeFile);
|
||||
close(PatchFile);
|
||||
|
||||
# Clear out file contents
|
||||
open OpcodeResultFile, ">", "opcodelist.txt" or die $stopmessage;
|
||||
print OpcodeResultFile "";
|
||||
close(OpcodeResultFile);
|
||||
|
||||
open OpcodeResultFile, ">>", "opcodelist.txt" or die $stopmessage;
|
||||
|
||||
while( my ($k, $v) = each %$PatchFile )
|
||||
{
|
||||
#print OpcodeResultFile "key: $k, value: $v.\n";
|
||||
}
|
||||
|
||||
|
||||
$TabSpace = " "; # Tab
|
||||
foreach $line (@OpcodeList)
|
||||
{
|
||||
@LineSplit = split(//, $line);
|
||||
$CurOpcode = $LineSplit[0].$LineSplit[1].$LineSplit[2].$LineSplit[3].$LineSplit[4].$LineSplit[5];
|
||||
$CurOpcode = lc($CurOpcode);
|
||||
$OpcodeName = ""; # Tab
|
||||
if ($PatchHash{$CurOpcode})
|
||||
{
|
||||
$NameKey = $PatchHash{$CurOpcode};
|
||||
$OpcodeName = $NameKey;
|
||||
}
|
||||
$CurLine = $CurOpcode.$TabSpace.$OpcodeName."\n";
|
||||
print OpcodeResultFile $CurLine;
|
||||
}
|
||||
|
||||
close(OpcodeResultFile);
|
||||
1671
utils/scripts/opcode_scripts/opcodelist.txt
Normal file
1671
utils/scripts/opcode_scripts/opcodelist.txt
Normal file
File diff suppressed because it is too large
Load Diff
88
utils/scripts/opcode_scripts/oplist_to_conf.pl
Normal file
88
utils/scripts/opcode_scripts/oplist_to_conf.pl
Normal file
@ -0,0 +1,88 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
# File Name: oplist_to_conf.pl
|
||||
# Converts the Opcode List with Opcode Names from the Spreadsheet into a Patch File.
|
||||
|
||||
# Directions to use this script:
|
||||
# 1. Copy the opcodes and opcode names columns from the opcode spreadsheet
|
||||
# for the columns you want to create a new .conf file from into the file.
|
||||
# 2. Remove the header row entries in the newly created text file and save it.
|
||||
# 3. Paste the contents of the current patch file in the patch_OLD.conf file.
|
||||
# 4. Run this script using "perl oplist_to_conf.pl"
|
||||
# 5. This creates a new .conf file named patch_NEW.conf
|
||||
# 6. Rename patch_NEW.conf to the desired name and you are all done
|
||||
|
||||
|
||||
$stopmessage = "Failed to open file";
|
||||
# Open the text file that contains the opcode and opcode name rows for a single client from the opcode list spreadsheet
|
||||
open OpcodeFile, "<", "opcodelist.txt" or die $stopmessage;
|
||||
# Open the .conf file to copy from
|
||||
open PatchFile, "<", "patch_OLD.conf" or die $stopmessage;
|
||||
|
||||
# Read these files into arrays for looping and close the files
|
||||
my @OpcodeList = <OpcodeFile>;
|
||||
my @PatchFile = <PatchFile>;
|
||||
close(OpcodeFile);
|
||||
close(PatchFile);
|
||||
|
||||
# Open the new/destination .conf file and clear out file contents
|
||||
open OpcodeResultFile, ">", "patch_NEW.conf" or die $stopmessage;
|
||||
print OpcodeResultFile "";
|
||||
# Close out the newly cleared .conf file
|
||||
close(OpcodeResultFile);
|
||||
|
||||
# Open the new/destination .conf file again for appending
|
||||
open OpcodeResultFile, ">>", "patch_NEW.conf" or die $stopmessage;
|
||||
|
||||
my %PatchHash = ();
|
||||
|
||||
foreach $line (@OpcodeList)
|
||||
{
|
||||
@equalssplit = split(/ /, $line);
|
||||
$ArraySize = @equalssplit;
|
||||
if ($ArraySize > 1)
|
||||
{
|
||||
my $CurOpcode = "";
|
||||
my $CurOpcodeName = "";
|
||||
@OpcodeArray = split(//, $equalssplit[0]);
|
||||
if ($equalssplit[1] =~ /^OP_(.*)/i)
|
||||
{
|
||||
$CurOpcodeName = "OP_".$1;
|
||||
}
|
||||
foreach $Letter (@OpcodeArray)
|
||||
{
|
||||
if ($Letter =~ /[A-Za-z0-9]/)
|
||||
{
|
||||
$CurOpcode .= $Letter;
|
||||
}
|
||||
}
|
||||
if ($CurOpcode && $CurOpcodeName)
|
||||
{
|
||||
$CurOpcode = lc($CurOpcode);
|
||||
$PatchHash{ $CurOpcodeName } = $CurOpcode;
|
||||
#print $CurOpcodeName."=". $CurOpcode."\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$TabSpace = " "; # Tab
|
||||
foreach $line (@PatchFile)
|
||||
{
|
||||
$CurLine = $line;
|
||||
if ($line =~ /^OP_([^\=]+)=([^\s]+)(.*)/i)
|
||||
{
|
||||
$NewOpcode = "0x0000";
|
||||
$OpcodeName = "OP_".$1;
|
||||
|
||||
if ($PatchHash{$OpcodeName})
|
||||
{
|
||||
$NewOpcode = $PatchHash{$OpcodeName};
|
||||
}
|
||||
|
||||
$CurLine = $OpcodeName."=".$NewOpcode.$3."\n";
|
||||
}
|
||||
print OpcodeResultFile $CurLine;
|
||||
}
|
||||
|
||||
|
||||
close(OpcodeResultFile);
|
||||
661
utils/scripts/opcode_scripts/patch_NEW.conf
Normal file
661
utils/scripts/opcode_scripts/patch_NEW.conf
Normal file
@ -0,0 +1,661 @@
|
||||
# ShowEQ Import Notes:
|
||||
# ZERO THE FILE first
|
||||
# perl -pi -e 's/0x[0-9a-fA-F]{4}/0x0000/g' opcodes.conf
|
||||
# Unknown Mapping:
|
||||
# OP_Action2 -> OP_Damage
|
||||
# OP_EnvDamage -> OP_Damage ---> might have been a one time mistake
|
||||
# Name Differences:
|
||||
# OP_CancelInvite -> OP_GroupCancelInvite
|
||||
# OP_GMFind -> OP_FindPersonRequest
|
||||
# OP_CommonMessage -> OP_ChannelMessage
|
||||
|
||||
OP_Unknown=0x0000
|
||||
OP_ExploreUnknown=0x0000 used for unknown explorer
|
||||
|
||||
# world packets
|
||||
# Required to reach Char Select:
|
||||
OP_SendLoginInfo=0x7a09
|
||||
OP_ApproveWorld=0x7499
|
||||
OP_LogServer=0x7ceb
|
||||
OP_SendCharInfo=0x00d2
|
||||
OP_ExpansionInfo=0x590d
|
||||
OP_GuildsList=0x0000
|
||||
OP_EnterWorld=0x578f
|
||||
OP_PostEnterWorld=0x6259
|
||||
OP_World_Client_CRC1=0x12cc
|
||||
OP_World_Client_CRC2=0x0f13
|
||||
OP_SendSpellChecksum=0x0000
|
||||
OP_SendSkillCapsChecksum=0x0000
|
||||
|
||||
# Character Select Related:
|
||||
OP_SendMaxCharacters=0x5475
|
||||
OP_SendMembership=0x7acc
|
||||
OP_SendMembershipDetails=0x057b
|
||||
OP_CharacterCreateRequest=0x6773
|
||||
OP_CharacterCreate=0x6bbf
|
||||
OP_DeleteCharacter=0x1808
|
||||
OP_RandomNameGenerator=0x5954
|
||||
OP_ApproveName=0x56a2
|
||||
OP_MOTD=0x0c22
|
||||
OP_SetChatServer=0x1bc5
|
||||
OP_SetChatServer2=0x7eec
|
||||
OP_ZoneServerInfo=0x4c44
|
||||
OP_WorldComplete=0x4493
|
||||
OP_WorldUnknown001=0x2301
|
||||
OP_FloatListThing=0x46c6
|
||||
|
||||
# Reasons for Disconnect:
|
||||
OP_ZoneUnavail=0x4cb4
|
||||
OP_WorldClientReady=0x23c1
|
||||
OP_CharacterStillInZone=0x0000
|
||||
OP_WorldChecksumFailure=0x0000
|
||||
OP_WorldLoginFailed=0x0000
|
||||
OP_WorldLogout=0x0000
|
||||
OP_WorldLevelTooHigh=0x0000
|
||||
OP_CharInacessable=0x0000
|
||||
OP_UserCompInfo=0x0000
|
||||
OP_SendExeChecksum=0x0000
|
||||
OP_SendBaseDataChecksum=0x0000
|
||||
|
||||
# Zone in opcodes
|
||||
OP_AckPacket=0x471d
|
||||
OP_ZoneEntry=0x5089
|
||||
OP_ReqNewZone=0x7887
|
||||
OP_NewZone=0x1795
|
||||
OP_ZoneSpawns=0x5237
|
||||
OP_PlayerProfile=0x6506
|
||||
OP_TimeOfDay=0x5070
|
||||
OP_LevelUpdate=0x1eec
|
||||
OP_Stamina=0x2a79
|
||||
OP_RequestClientZoneChange=0x3fcf
|
||||
OP_ZoneChange=0x2d18
|
||||
OP_LockoutTimerInfo=0x0000
|
||||
OP_ZoneServerReady=0x0000
|
||||
OP_ZoneInUnknown=0x0000
|
||||
OP_LogoutReply=0x0000
|
||||
OP_PreLogoutReply=0x0000
|
||||
|
||||
# Required to fully log in
|
||||
OP_SpawnAppearance=0x0971
|
||||
OP_ChangeSize=0x4707
|
||||
OP_TributeUpdate=0x5961
|
||||
OP_TributeTimer=0x073d
|
||||
OP_SendTributes=0x729b
|
||||
OP_SendGuildTributes=0x1877
|
||||
OP_TributeInfo=0x4254
|
||||
OP_Weather=0x661e
|
||||
OP_ReqClientSpawn=0x35fa
|
||||
OP_SpawnDoor=0x7291
|
||||
OP_GroundSpawn=0x6fca
|
||||
OP_SendZonepoints=0x69a4
|
||||
OP_BlockedBuffs=0x3033
|
||||
OP_RemoveBlockedBuffs=0x0de7
|
||||
OP_ClearBlockedBuffs=0x34cb
|
||||
OP_WorldObjectsSent=0x5ae2
|
||||
OP_SendExpZonein=0x5f8e
|
||||
OP_SendAATable=0x66b5
|
||||
OP_RespondAA=0x7a27
|
||||
OP_UpdateAA=0x66f0
|
||||
OP_SendAAStats=0x43c8
|
||||
OP_AAExpUpdate=0x7d14
|
||||
OP_ExpUpdate=0x20ed
|
||||
OP_HPUpdate=0x2828
|
||||
OP_ManaChange=0x43af
|
||||
OP_TGB=0x0876
|
||||
OP_SpecialMesg=0x0083
|
||||
OP_GuildMemberList=0x12a6
|
||||
OP_GuildMOTD=0x3e13
|
||||
OP_CharInventory=0x5ca6
|
||||
OP_WearChange=0x7994
|
||||
OP_ClientUpdate=0x7dfc
|
||||
OP_ClientReady=0x345d # 0x422d
|
||||
OP_SetServerFilter=0x444d
|
||||
|
||||
# Guild Opcodes - Disabled until crashes are resolved in RoF
|
||||
OP_GetGuildMOTD=0x36e0 # Was 0x35dc
|
||||
OP_GetGuildMOTDReply=0x4f1f # Was 0x4586
|
||||
OP_GuildMemberUpdate=0x69b9 # Was 0x5643
|
||||
OP_GuildInvite=0x7099
|
||||
OP_GuildRemove=0x1444
|
||||
OP_GuildPeace=0x67e3
|
||||
OP_SetGuildMOTD=0x0b0b
|
||||
OP_GuildList=0x507a
|
||||
OP_GuildWar=0x1ffb
|
||||
OP_GuildLeader=0x7e09
|
||||
OP_GuildDelete=0x3708
|
||||
OP_GuildInviteAccept=0x7053
|
||||
OP_GuildDemote=0x2d4e
|
||||
OP_GuildPromote=0x0000
|
||||
OP_GuildPublicNote=0x5053
|
||||
OP_GuildManageBanker=0x748f # Was 0x0737
|
||||
OP_GuildBank=0x5134 # Was 0x10c3
|
||||
OP_SetGuildRank=0x0b9c
|
||||
OP_GuildUpdateURLAndChannel=0x2958
|
||||
OP_GuildStatus=0x7326
|
||||
OP_GuildCreate=0x1dc8 # or maybe 0x086e
|
||||
OP_GuildMemberLevelUpdate=0x0000 # Unused?
|
||||
OP_ZoneGuildList=0x0000 # Unused?
|
||||
OP_GetGuildsList=0x0000 # Unused?
|
||||
OP_LFGuild=0x0000
|
||||
OP_GuildManageRemove=0x0000
|
||||
OP_GuildManageAdd=0x0000
|
||||
OP_GuildManageStatus=0x0000
|
||||
|
||||
# GM/Guide Opcodes
|
||||
OP_GMServers=0x08c1
|
||||
OP_GMBecomeNPC=0x3ae1
|
||||
OP_GMZoneRequest=0x62ac
|
||||
OP_GMZoneRequest2=0x7e1a
|
||||
OP_GMGoto=0x7d8e
|
||||
OP_GMSearchCorpse=0x357c
|
||||
OP_GMHideMe=0x79c5
|
||||
OP_GMDelCorpse=0x607e
|
||||
OP_GMApproval=0x6db5
|
||||
OP_GMToggle=0x2097
|
||||
OP_GMSummon=0x486f # Was 0x684f
|
||||
OP_GMEmoteZone=0x1cfd # Was 0x0655
|
||||
OP_GMEmoteWorld=0x458e # Was 0x1935
|
||||
OP_GMFind=0x4a8f
|
||||
OP_GMKick=0x26a7
|
||||
OP_GMKill=0x51d3
|
||||
OP_GMNameChange=0x035f # Was 0x4434
|
||||
OP_GMLastName=0x46ce # Was 0x3077
|
||||
|
||||
# Misc Opcodes
|
||||
OP_InspectRequest=0x57bc
|
||||
OP_InspectAnswer=0x71ac
|
||||
OP_InspectMessageUpdate=0x4d25
|
||||
OP_BeginCast=0x318f
|
||||
OP_ColoredText=0x0000
|
||||
OP_ConsentResponse=0x384a
|
||||
OP_MemorizeSpell=0x217c
|
||||
OP_SwapSpell=0x0efa
|
||||
OP_CastSpell=0x1287
|
||||
OP_Consider=0x742b
|
||||
OP_FormattedMessage=0x1024
|
||||
OP_SimpleMessage=0x213f
|
||||
OP_Buff=0x659c
|
||||
OP_Illusion=0x312a
|
||||
OP_MoneyOnCorpse=0x5f44
|
||||
OP_RandomReply=0x106b
|
||||
OP_DenyResponse=0x2382
|
||||
OP_SkillUpdate=0x004c
|
||||
OP_GMTrainSkillConfirm=0x66dd # 0x3960
|
||||
OP_RandomReq=0x7b10
|
||||
OP_Death=0x6517
|
||||
OP_GMTraining=0x1966
|
||||
OP_GMEndTraining=0x4d6b
|
||||
OP_GMTrainSkill=0x2a85
|
||||
OP_Animation=0x7177
|
||||
OP_Begging=0x6703
|
||||
OP_Consent=0x1fd1
|
||||
OP_ConsentDeny=0x7a45
|
||||
OP_AutoFire=0x241e
|
||||
OP_PetCommands=0x0159
|
||||
OP_DeleteSpell=0x52e5
|
||||
OP_Surname=0x0423
|
||||
OP_ClearSurname=0x7d23
|
||||
OP_FaceChange=0x5578
|
||||
OP_SenseHeading=0x260a
|
||||
OP_Action=0x744c
|
||||
OP_ConsiderCorpse=0x5204
|
||||
OP_HideCorpse=0x49e1
|
||||
OP_CorpseDrag=0x0904
|
||||
OP_CorpseDrop=0x7037
|
||||
OP_Bug=0x73f4
|
||||
OP_Feedback=0x5602
|
||||
OP_Report=0x1414
|
||||
OP_Damage=0x6f15
|
||||
OP_ChannelMessage=0x2b2d
|
||||
OP_Assist=0x4478
|
||||
OP_AssistGroup=0x27f8
|
||||
OP_MoveCoin=0x0bcf
|
||||
OP_ZonePlayerToBind=0x0ecb
|
||||
OP_KeyRing=0x6857
|
||||
OP_WhoAllRequest=0x65ab
|
||||
OP_WhoAllResponse=0x7c88
|
||||
OP_FriendsWho=0x3956
|
||||
OP_ConfirmDelete=0x43a3
|
||||
OP_Logout=0x4ac6
|
||||
OP_Rewind=0x1745
|
||||
OP_TargetCommand=0x58e2
|
||||
OP_Hide=0x67fe
|
||||
OP_Jump=0x2060
|
||||
OP_Camp=0x28ec
|
||||
OP_Emote=0x373b
|
||||
OP_SetRunMode=0x009f
|
||||
OP_BankerChange=0x383c
|
||||
OP_TargetMouse=0x075d
|
||||
OP_MobHealth=0x37b1
|
||||
OP_InitialMobHealth=0x0000 # Unused?
|
||||
OP_TargetHoTT=0x0272
|
||||
OP_XTargetResponse=0x672f
|
||||
OP_XTargetRequest=0x45be
|
||||
OP_XTargetAutoAddHaters=0x792c
|
||||
OP_TargetBuffs=0x4f4b
|
||||
OP_BuffCreate=0x3377
|
||||
OP_BuffRemoveRequest=0x64f2
|
||||
OP_DeleteSpawn=0x7280
|
||||
OP_AutoAttack=0x109d
|
||||
OP_AutoAttack2=0x3526
|
||||
OP_Consume=0x4b70
|
||||
OP_MoveItem=0x32ee
|
||||
OP_DeleteItem=0x18ad
|
||||
OP_DeleteCharge=0x01b8
|
||||
OP_ItemPacket=0x368e
|
||||
OP_ItemLinkResponse=0x633c
|
||||
OP_ItemLinkClick=0x4cef
|
||||
OP_ItemPreview=0x6b5c
|
||||
OP_NewSpawn=0x6097
|
||||
OP_Track=0x17e5
|
||||
OP_TrackTarget=0x0029
|
||||
OP_TrackUnknown=0x4577
|
||||
OP_ClickDoor=0x3a8f
|
||||
OP_MoveDoor=0x08e8
|
||||
OP_RemoveAllDoors=0x700c
|
||||
OP_EnvDamage=0x51fd
|
||||
OP_BoardBoat=0x4211
|
||||
OP_Forage=0x5306
|
||||
OP_LeaveBoat=0x7617
|
||||
OP_ControlBoat=0x0ae7
|
||||
OP_SafeFallSuccess=0x2219
|
||||
OP_RezzComplete=0x760d
|
||||
OP_RezzRequest=0x3c21
|
||||
OP_RezzAnswer=0x701c
|
||||
OP_Shielding=0x48c1
|
||||
OP_RequestDuel=0x3af1
|
||||
OP_MobRename=0x2c57
|
||||
OP_AugmentItem=0x661b # Was 0x37cb
|
||||
OP_WeaponEquip1=0x34a7
|
||||
OP_WeaponEquip2=0x559a # Was 0x6022
|
||||
OP_WeaponUnequip2=0x2d25 # Was 0x0110
|
||||
OP_ApplyPoison=0x31e6
|
||||
OP_Save=0x4a39
|
||||
OP_TestBuff=0x7cb8 # Was 0x3772
|
||||
OP_CustomTitles=0x100e
|
||||
OP_Split=0x3a54
|
||||
OP_YellForHelp=0x4e56
|
||||
OP_LoadSpellSet=0x261d
|
||||
OP_Bandolier=0x7677
|
||||
OP_PotionBelt=0x1a3e # Was 0x4d3b
|
||||
OP_DuelResponse=0x6a46
|
||||
OP_DuelResponse2=0x68d3
|
||||
OP_SaveOnZoneReq=0x600d
|
||||
OP_ReadBook=0x72df
|
||||
OP_Dye=0x23b9
|
||||
OP_InterruptCast=0x048c
|
||||
OP_AAAction=0x424e
|
||||
OP_LeadershipExpToggle=0x6c55
|
||||
OP_LeadershipExpUpdate=0x2797
|
||||
OP_PurchaseLeadershipAA=0x0026
|
||||
OP_UpdateLeadershipAA=0x026
|
||||
OP_MarkNPC=0x5a58
|
||||
OP_MarkRaidNPC=0x74bd #unimplemented
|
||||
OP_ClearNPCMarks=0x2003
|
||||
OP_ClearRaidNPCMarks=0x20d3 #unimplemented
|
||||
OP_DelegateAbility=0x76b8
|
||||
OP_SetGroupTarget=0x2814
|
||||
OP_Charm=0x5d92
|
||||
OP_Stun=0x36a4
|
||||
OP_SendFindableNPCs=0x3897
|
||||
OP_FindPersonRequest=0x5cea
|
||||
OP_FindPersonReply=0x7e58
|
||||
OP_Sound=0x1a30
|
||||
OP_PetBuffWindow=0x5882
|
||||
OP_LevelAppearance=0x3bc9
|
||||
OP_Translocate=0x6580
|
||||
OP_Sacrifice=0x1821
|
||||
OP_PopupResponse=0x214a
|
||||
OP_OnLevelMessage=0x4fd0
|
||||
OP_AugmentInfo=0x0afb
|
||||
OP_Petition=0x5f03
|
||||
OP_SomeItemPacketMaybe=0x747c
|
||||
OP_PVPStats=0x6f4b # Unsure
|
||||
OP_PVPLeaderBoardRequest=0x3707
|
||||
OP_PVPLeaderBoardReply=0x25b7
|
||||
OP_PVPLeaderBoardDetailsRequest=0x15a9
|
||||
OP_PVPLeaderBoardDetailsReply=0x04aa
|
||||
OP_RestState=0x00f
|
||||
OP_RespawnWindow=0x28bc
|
||||
OP_LDoNButton=0x5327
|
||||
OP_SetStartCity=0x6326 # Was 0x2d1b
|
||||
OP_VoiceMacroIn=0x17fd
|
||||
OP_VoiceMacroOut=0x409a
|
||||
OP_ItemViewUnknown=0x2289
|
||||
OP_VetRewardsAvaliable=0x590e
|
||||
OP_VetClaimRequest=0x1126
|
||||
OP_VetClaimReply=0x16d4
|
||||
OP_DisciplineUpdate=0x759e # Was 0x2f05
|
||||
OP_DisciplineTimer=0x6989 # Was 0x5e3f
|
||||
OP_BecomeCorpse=0x0000 # Unused?
|
||||
OP_Action2=0x0000 # Unused?
|
||||
OP_MobUpdate=0x2c84
|
||||
OP_NPCMoveUpdate=0x189c
|
||||
OP_CameraEffect=0x127f
|
||||
OP_SpellEffect=0x5936
|
||||
OP_RemoveNimbusEffect=0xc693
|
||||
OP_AltCurrency=0x7121
|
||||
OP_AltCurrencyMerchantRequest=0x6b6d
|
||||
OP_AltCurrencyMerchantReply=0x74ec
|
||||
OP_AltCurrencyPurchase=0x61cb
|
||||
OP_AltCurrencySell=0x0165
|
||||
OP_AltCurrencySellSelection=0x5409
|
||||
OP_AltCurrencyReclaim=0x532a
|
||||
OP_CrystalCountUpdate=0x467f # Was 0x3f60
|
||||
OP_CrystalCreate=0x7aee # Was 0x5a82
|
||||
OP_CrystalReclaim=0x2439 # Was 0x7616
|
||||
OP_Untargetable=0x053c
|
||||
OP_IncreaseStats=0x70a3
|
||||
OP_Weblink=0x18d3
|
||||
#OP_OpenInventory=0x0000 # Likely does not exist in RoF -U
|
||||
OP_OpenContainer=0x0000
|
||||
OP_Marquee=0x0000
|
||||
|
||||
OP_DzQuit=0xb2e3
|
||||
OP_DzListTimers=0x7b68
|
||||
OP_DzAddPlayer=0x4701
|
||||
OP_DzRemovePlayer=0x1abc
|
||||
OP_DzSwapPlayer=0x405b
|
||||
OP_DzMakeLeader=0x543d
|
||||
OP_DzPlayerList=0x14c6
|
||||
OP_DzJoinExpeditionConfirm=0x7f4b
|
||||
OP_DzJoinExpeditionReply=0x1950
|
||||
OP_DzExpeditionInfo=0x9119
|
||||
OP_DzExpeditionList=0x205f
|
||||
OP_DzMemberStatus=0x32f0
|
||||
OP_DzLeaderStatus=0x3de9
|
||||
OP_DzExpeditionEndsWarning=0x5189
|
||||
OP_DzMemberList=0x5ae4
|
||||
OP_DzCompass=0x3e0e # Was 0x4f09
|
||||
OP_DzChooseZone=0x0000 # Maybe 0x29d6
|
||||
|
||||
# New Opcodes
|
||||
OP_SpawnPositionUpdate=0x0000 # Actually OP_MobUpdate ?
|
||||
OP_ManaUpdate=0x3791
|
||||
OP_EnduranceUpdate=0x5f42
|
||||
OP_MobManaUpdate=0x2404
|
||||
OP_MobEnduranceUpdate=0x1c81
|
||||
|
||||
# Mercenary Opcodes
|
||||
OP_MercenaryDataUpdateRequest=0x7b89
|
||||
OP_MercenaryDataUpdate=0x61a4
|
||||
OP_MercenaryDataRequest=0x11c1
|
||||
OP_MercenaryDataResponse=0x72ce
|
||||
OP_MercenaryHire=0x7169
|
||||
OP_MercenaryDismiss=0x6e83
|
||||
OP_MercenaryTimerRequest=0x31e4
|
||||
OP_MercenaryTimer=0x0763
|
||||
OP_MercenaryUnknown1=0x5d26
|
||||
OP_MercenaryCommand=0x27f2
|
||||
OP_MercenarySuspendRequest=0x4407
|
||||
OP_MercenarySuspendResponse=0x6f03
|
||||
OP_MercenaryUnsuspendResponse=0x27a0
|
||||
|
||||
# Looting
|
||||
OP_LootRequest=0x0adf
|
||||
OP_EndLootRequest=0x30f7
|
||||
OP_LootItem=0x4dc9
|
||||
OP_LootComplete=0x55c4
|
||||
|
||||
# bazaar trader stuff:
|
||||
OP_BazaarSearch=0x39d6
|
||||
OP_TraderDelItem=0x0000
|
||||
OP_BecomeTrader=0x61b3
|
||||
OP_TraderShop=0x31df
|
||||
OP_Trader=0x4ef5 # Was 0x6790
|
||||
OP_TraderBuy=0x0000
|
||||
OP_Barter=0x243a
|
||||
OP_ShopItem=0x0000
|
||||
OP_BazaarInspect=0x0000
|
||||
OP_Bazaar=0x0000
|
||||
OP_TraderItemUpdate=0x0000
|
||||
|
||||
# pc/npc trading
|
||||
OP_TradeRequest=0x77b5
|
||||
OP_TradeAcceptClick=0x69e2
|
||||
OP_TradeRequestAck=0x14bf
|
||||
OP_TradeCoins=0x4206
|
||||
OP_FinishTrade=0x3993
|
||||
OP_CancelTrade=0x354c
|
||||
OP_TradeMoneyUpdate=0x68c2
|
||||
OP_MoneyUpdate=0x640c
|
||||
OP_TradeBusy=0x5505
|
||||
|
||||
# Sent after canceling trade or after closing tradeskill object
|
||||
OP_FinishWindow=0x7349
|
||||
OP_FinishWindow2=0x40ef
|
||||
|
||||
# Sent on Live for what seems to be item existance verification
|
||||
# Ex. Before Right Click Effect happens from items
|
||||
OP_ItemVerifyRequest=0x097b
|
||||
OP_ItemVerifyReply=0x2115
|
||||
|
||||
# merchant stuff
|
||||
OP_ShopPlayerSell=0x1901
|
||||
OP_ShopRequest=0x4fed
|
||||
OP_ShopEnd=0x30a8
|
||||
OP_ShopEndConfirm=0x3196
|
||||
OP_ShopPlayerBuy=0x04c
|
||||
OP_ShopDelItem=0x724f
|
||||
|
||||
# tradeskill stuff:
|
||||
OP_ClickObject=0x4aa1
|
||||
OP_ClickObjectAction=0x0c1e
|
||||
OP_ClearObject=0x7a11
|
||||
OP_RecipeDetails=0x40d7
|
||||
OP_RecipesFavorite=0x5c74
|
||||
OP_RecipesSearch=0x1db6
|
||||
OP_RecipeReply=0x6e02
|
||||
OP_RecipeAutoCombine=0x6261
|
||||
OP_TradeSkillCombine=0x579a
|
||||
|
||||
# Tribute Packets:
|
||||
OP_OpenGuildTributeMaster=0x378d
|
||||
OP_OpenTributeMaster=0x7666 # Was 0x40f5
|
||||
OP_SelectTribute=0x79fc
|
||||
OP_TributeItem=0x4f3e
|
||||
OP_TributeMoney=0x58fb # Was 0x6fed
|
||||
OP_TributeToggle=0x241d
|
||||
OP_TributePointUpdate=0x5300
|
||||
OP_TributeNPC=0x0000
|
||||
OP_GuildTributeInfo=0x0000
|
||||
OP_OpenTributeReply=0x0000
|
||||
OP_GuildTributeStatus=0x0000
|
||||
|
||||
# Adventure packets:
|
||||
OP_LeaveAdventure=0x5d18
|
||||
OP_AdventureFinish=0x400f
|
||||
OP_AdventureInfoRequest=0x3cb0
|
||||
OP_AdventureInfo=0x4c54
|
||||
OP_AdventureRequest=0x2c6c
|
||||
OP_AdventureDetails=0x5648
|
||||
OP_AdventureData=0x7171
|
||||
OP_AdventureUpdate=0x1b01
|
||||
OP_AdventureMerchantRequest=0x6922 # Was 654d
|
||||
OP_AdventureMerchantResponse=0x3e47 # Was 7949
|
||||
OP_AdventureMerchantPurchase=0x5b72 # Was 155a
|
||||
OP_AdventureMerchantSell=0x2f9b # Was 389c
|
||||
OP_AdventurePointsUpdate=0x65c3 # Was 7589
|
||||
OP_AdventureStatsRequest=0x5a62
|
||||
OP_AdventureStatsReply=0x2370
|
||||
OP_AdventureLeaderboardRequest=0x7093
|
||||
OP_AdventureLeaderboardReply=0x7f79
|
||||
|
||||
# Group Opcodes
|
||||
OP_GroupDisband=0x4c10
|
||||
OP_GroupInvite=0x1649
|
||||
OP_GroupFollow=0x05ce
|
||||
OP_GroupUpdate=0x3abb
|
||||
OP_GroupUpdateB=0x6194
|
||||
OP_GroupCancelInvite=0x0000
|
||||
OP_GroupAcknowledge=0x7323
|
||||
OP_GroupDelete=0x0f6c
|
||||
OP_CancelInvite=0x32c2
|
||||
OP_GroupFollow2=0x2a50
|
||||
OP_GroupInvite2=0x6c65
|
||||
OP_GroupDisbandYou=0x1ae5
|
||||
OP_GroupDisbandOther=0x74da
|
||||
OP_GroupLeaderChange=0x21b4
|
||||
OP_GroupRoles=0x70e2
|
||||
OP_GroupMakeLeader=0x4229
|
||||
OP_DoGroupLeadershipAbility=0x1fb5
|
||||
OP_GroupLeadershipAAUpdate=0x02cf
|
||||
OP_GroupMentor=0x5892
|
||||
OP_InspectBuffs=0x486c
|
||||
|
||||
# LFG/LFP Opcodes
|
||||
OP_LFGCommand=0x6060
|
||||
OP_LFGGetMatchesRequest=0x0340
|
||||
OP_LFGGetMatchesResponse=0x5048
|
||||
OP_LFPGetMatchesRequest=0x4d7d
|
||||
OP_LFPGetMatchesResponse=0x22c6
|
||||
OP_LFPCommand=0x49a9
|
||||
OP_LFGAppearance=0x0000
|
||||
OP_LFGResponse=0x0000
|
||||
|
||||
# Raid Opcodes
|
||||
OP_RaidInvite=0x55ac
|
||||
OP_RaidUpdate=0x3973
|
||||
OP_RaidJoin=0x0000
|
||||
|
||||
# Button-push commands
|
||||
OP_Taunt=0x2703
|
||||
OP_CombatAbility=0x3eba
|
||||
OP_SenseTraps=0x02af # Was 0x2ee0
|
||||
OP_PickPocket=0x39e8
|
||||
OP_DisarmTraps=0x78bf
|
||||
OP_Disarm=0x5ec8
|
||||
OP_Sneak=0x5d55
|
||||
OP_Fishing=0x1e2a
|
||||
OP_InstillDoubt=0x640e
|
||||
OP_FeignDeath=0x52fa
|
||||
OP_Mend=0x0ecf
|
||||
OP_Bind_Wound=0x0386
|
||||
OP_LDoNOpen=0x3d5c
|
||||
|
||||
# Task packets
|
||||
OP_TaskDescription=0x083
|
||||
OP_TaskActivity=0x3714
|
||||
OP_CompletedTasks=0x4eba
|
||||
OP_TaskActivityComplete=0x5e19
|
||||
OP_AcceptNewTask=0x0a23
|
||||
OP_CancelTask=0x08d3
|
||||
OP_TaskMemberList=0x5727 # Was 0x1656
|
||||
OP_OpenNewTasksWindow=0x48a2 # Was 0x11de
|
||||
OP_AvaliableTask=0x36e8 # Was 0x2377
|
||||
OP_TaskHistoryRequest=0x5f1c
|
||||
OP_TaskHistoryReply=0x3d05
|
||||
OP_DeclineAllTasks=0x0000
|
||||
|
||||
# Title opcodes
|
||||
OP_NewTitlesAvailable=0x0d32
|
||||
OP_RequestTitles=0x6344
|
||||
OP_SendTitleList=0x2d08
|
||||
OP_SetTitle=0x6527
|
||||
OP_SetTitleReply=0x4c21
|
||||
|
||||
# mail opcodes
|
||||
OP_Command=0x0000
|
||||
OP_MailboxHeader=0x0000
|
||||
OP_MailHeader=0x0000
|
||||
OP_MailBody=0x0000
|
||||
OP_NewMail=0x0000
|
||||
OP_SentConfirm=0x0000
|
||||
|
||||
########### Below this point should not be needed ###########
|
||||
|
||||
# This section are all unknown in Titanium
|
||||
OP_ForceFindPerson=0x0000
|
||||
OP_LocInfo=0x0000
|
||||
OP_ReloadUI=0x0000
|
||||
OP_ItemName=0x0000
|
||||
OP_ItemLinkText=0x0000
|
||||
OP_MultiLineMsg=0x0000
|
||||
OP_MendHPUpdate=0x0000
|
||||
OP_TargetReject=0x0000
|
||||
OP_SafePoint=0x0000
|
||||
OP_ApproveZone=0x0000
|
||||
OP_ZoneComplete=0x0000
|
||||
OP_ClientError=0x0000
|
||||
OP_DumpName=0x0000
|
||||
OP_Heartbeat=0x0000
|
||||
OP_CrashDump=0x0000
|
||||
OP_LoginComplete=0x0000
|
||||
|
||||
# discovered opcodes not yet used:
|
||||
OP_PickLockSuccess=0x0000
|
||||
OP_PlayMP3=0x0000
|
||||
OP_ReclaimCrystals=0x0000
|
||||
OP_DynamicWall=0x0000
|
||||
OP_OpenDiscordMerchant=0x0000
|
||||
OP_DiscordMerchantInventory=0x0000
|
||||
OP_GiveMoney=0x0000
|
||||
OP_RequestKnowledgeBase=0x0000
|
||||
OP_KnowledgeBase=0x0000
|
||||
OP_SlashAdventure=0x0000 # /adventure
|
||||
OP_BecomePVPPrompt=0x0000
|
||||
OP_MoveLogRequest=0x0000 # gone I think
|
||||
OP_MoveLogDisregard=0x0000 # gone I think
|
||||
|
||||
# named unknowns, to make looking for real unknown easier
|
||||
OP_AnnoyingZoneUnknown=0x0000
|
||||
OP_Some6ByteHPUpdate=0x0000 seems to happen when you target group members
|
||||
OP_QueryResponseThing=0x0000
|
||||
|
||||
|
||||
# realityincarnate: these are just here to stop annoying several thousand byte packet dumps
|
||||
#OP_LoginUnknown1=0x46d3 # OP_SendSpellChecksum
|
||||
#OP_LoginUnknown2=0x040b # OP_SendSkillCapsChecksum
|
||||
|
||||
# Petition Opcodes
|
||||
OP_PetitionSearch=0x0000 search term for petition
|
||||
OP_PetitionSearchResults=0x0000 (list of?) matches from search
|
||||
OP_PetitionSearchText=0x0000 text results of search
|
||||
|
||||
OP_PetitionUpdate=0x0000
|
||||
OP_PetitionCheckout=0x0000
|
||||
OP_PetitionCheckIn=0x0000
|
||||
OP_PetitionQue=0x0000
|
||||
OP_PetitionUnCheckout=0x0000
|
||||
OP_PetitionDelete=0x0000
|
||||
OP_DeletePetition=0x0000
|
||||
OP_PetitionResolve=0x0000
|
||||
OP_PDeletePetition=0x0000
|
||||
OP_PetitionBug=0x0000
|
||||
OP_PetitionRefresh=0x0000
|
||||
OP_PetitionCheckout2=0x0000
|
||||
OP_PetitionViewPetition=0x0000
|
||||
|
||||
# Login opcodes
|
||||
OP_SessionReady=0x0000
|
||||
OP_Login=0x0000
|
||||
OP_ServerListRequest=0x0000
|
||||
OP_PlayEverquestRequest=0x0000
|
||||
OP_PlayEverquestResponse=0x0000
|
||||
OP_ChatMessage=0x0000
|
||||
OP_LoginAccepted=0x0000
|
||||
OP_ServerListResponse=0x0000
|
||||
OP_Poll=0x0000
|
||||
OP_EnterChat=0x0000
|
||||
OP_PollResponse=0x0000
|
||||
|
||||
# raw opcodes
|
||||
OP_RAWSessionRequest=0x0000
|
||||
OP_RAWSessionResponse=0x0000
|
||||
OP_RAWCombined=0x0000
|
||||
OP_RAWSessionDisconnect=0x0000
|
||||
OP_RAWKeepAlive=0x0000
|
||||
OP_RAWSessionStatRequest=0x0000
|
||||
OP_RAWSessionStatResponse=0x0000
|
||||
OP_RAWPacket=0x0000
|
||||
OP_RAWFragment=0x0000
|
||||
OP_RAWOutOfOrderAck=0x0000
|
||||
OP_RAWAck=0x0000
|
||||
OP_RAWAppCombined=0x0000
|
||||
OP_RAWOutOfSession=0x0000
|
||||
|
||||
# we need to document the differences between these packets to make identifying them easier
|
||||
OP_Some3ByteHPUpdate=0x0000 # initial HP update for mobs
|
||||
OP_InitialHPUpdate=0x0000
|
||||
|
||||
OP_ItemRecastDelay=0x08a6
|
||||
661
utils/scripts/opcode_scripts/patch_OLD.conf
Normal file
661
utils/scripts/opcode_scripts/patch_OLD.conf
Normal file
@ -0,0 +1,661 @@
|
||||
# ShowEQ Import Notes:
|
||||
# ZERO THE FILE first
|
||||
# perl -pi -e 's/0x[0-9a-fA-F]{4}/0x0000/g' opcodes.conf
|
||||
# Unknown Mapping:
|
||||
# OP_Action2 -> OP_Damage
|
||||
# OP_EnvDamage -> OP_Damage ---> might have been a one time mistake
|
||||
# Name Differences:
|
||||
# OP_CancelInvite -> OP_GroupCancelInvite
|
||||
# OP_GMFind -> OP_FindPersonRequest
|
||||
# OP_CommonMessage -> OP_ChannelMessage
|
||||
|
||||
OP_Unknown=0x0000
|
||||
OP_ExploreUnknown=0x0000 used for unknown explorer
|
||||
|
||||
# world packets
|
||||
# Required to reach Char Select:
|
||||
OP_SendLoginInfo=0x7a09
|
||||
OP_ApproveWorld=0x7499
|
||||
OP_LogServer=0x7ceb
|
||||
OP_SendCharInfo=0x00d2
|
||||
OP_ExpansionInfo=0x590d
|
||||
OP_GuildsList=0x7056
|
||||
OP_EnterWorld=0x0641
|
||||
OP_PostEnterWorld=0x6259
|
||||
OP_World_Client_CRC1=0x12cc
|
||||
OP_World_Client_CRC2=0x0f13
|
||||
OP_SendSpellChecksum=0x0000
|
||||
OP_SendSkillCapsChecksum=0x0000
|
||||
|
||||
# Character Select Related:
|
||||
OP_SendMaxCharacters=0x05a8
|
||||
OP_SendMembership=0x057b
|
||||
OP_SendMembershipDetails=0x6a98
|
||||
OP_CharacterCreateRequest=0x655c
|
||||
OP_CharacterCreate=0x6bbf
|
||||
OP_DeleteCharacter=0x1808
|
||||
OP_RandomNameGenerator=0x5954
|
||||
OP_ApproveName=0x56a2
|
||||
OP_MOTD=0x0c22
|
||||
OP_SetChatServer=0x1bc5
|
||||
OP_SetChatServer2=0x7db5
|
||||
OP_ZoneServerInfo=0x6ef5
|
||||
OP_WorldComplete=0x4493
|
||||
OP_WorldUnknown001=0x2958
|
||||
OP_FloatListThing=0x46c6
|
||||
|
||||
# Reasons for Disconnect:
|
||||
OP_ZoneUnavail=0x4c44
|
||||
OP_WorldClientReady=0x23c1
|
||||
OP_CharacterStillInZone=0x0000
|
||||
OP_WorldChecksumFailure=0x0000
|
||||
OP_WorldLoginFailed=0x0000
|
||||
OP_WorldLogout=0x0000
|
||||
OP_WorldLevelTooHigh=0x0000
|
||||
OP_CharInacessable=0x0000
|
||||
OP_UserCompInfo=0x0000
|
||||
OP_SendExeChecksum=0x0000
|
||||
OP_SendBaseDataChecksum=0x0000
|
||||
|
||||
# Zone in opcodes
|
||||
OP_AckPacket=0x471d
|
||||
OP_ZoneEntry=0x5089
|
||||
OP_ReqNewZone=0x7887
|
||||
OP_NewZone=0x1795
|
||||
OP_ZoneSpawns=0x5237
|
||||
OP_PlayerProfile=0x6506
|
||||
OP_TimeOfDay=0x5070
|
||||
OP_LevelUpdate=0x1eec
|
||||
OP_Stamina=0x2a79
|
||||
OP_RequestClientZoneChange=0x3fcf
|
||||
OP_ZoneChange=0x2d18
|
||||
OP_LockoutTimerInfo=0x0000
|
||||
OP_ZoneServerReady=0x0000
|
||||
OP_ZoneInUnknown=0x0000
|
||||
OP_LogoutReply=0x0000
|
||||
OP_PreLogoutReply=0x0000
|
||||
|
||||
# Required to fully log in
|
||||
OP_SpawnAppearance=0x0971
|
||||
OP_ChangeSize=0x4707
|
||||
OP_TributeUpdate=0x5961
|
||||
OP_TributeTimer=0x073d
|
||||
OP_SendTributes=0x729b
|
||||
OP_SendGuildTributes=0x4d5e
|
||||
OP_TributeInfo=0x4254
|
||||
OP_Weather=0x661e
|
||||
OP_ReqClientSpawn=0x35fa
|
||||
OP_SpawnDoor=0x7291
|
||||
OP_GroundSpawn=0x6fca
|
||||
OP_SendZonepoints=0x69a4
|
||||
OP_BlockedBuffs=0x4d25
|
||||
OP_RemoveBlockedBuffs=0x3033
|
||||
OP_ClearBlockedBuffs=0x6b3d
|
||||
OP_WorldObjectsSent=0x5ae2
|
||||
OP_SendExpZonein=0x5f8e
|
||||
OP_SendAATable=0x66b5
|
||||
OP_RespondAA=0x7a27
|
||||
OP_UpdateAA=0x66f0
|
||||
OP_SendAAStats=0x43c8
|
||||
OP_AAExpUpdate=0x7e92
|
||||
OP_ExpUpdate=0x20ed
|
||||
OP_HPUpdate=0x2828
|
||||
OP_ManaChange=0x1287
|
||||
OP_TGB=0x0000
|
||||
OP_SpecialMesg=0x0000
|
||||
OP_GuildMemberList=0x0e48
|
||||
OP_GuildMOTD=0x3e13
|
||||
OP_CharInventory=0x5ca6
|
||||
OP_WearChange=0x7994
|
||||
OP_ClientUpdate=0x7dfc
|
||||
OP_ClientReady=0x345d # 0x422d
|
||||
OP_SetServerFilter=0x444d
|
||||
|
||||
# Guild Opcodes - Disabled until crashes are resolved in RoF
|
||||
OP_GetGuildMOTD=0x36e0 # Was 0x35dc
|
||||
OP_GetGuildMOTDReply=0x4f1f # Was 0x4586
|
||||
OP_GuildMemberUpdate=0x69b9 # Was 0x5643
|
||||
OP_GuildInvite=0x7099
|
||||
OP_GuildRemove=0x1444
|
||||
OP_GuildPeace=0x084e
|
||||
OP_SetGuildMOTD=0x0b0b
|
||||
OP_GuildList=0x0000
|
||||
OP_GuildWar=0x46ce
|
||||
OP_GuildLeader=0x2f3e
|
||||
OP_GuildDelete=0x3708
|
||||
OP_GuildInviteAccept=0x7053
|
||||
OP_GuildDemote=0x2d4e
|
||||
OP_GuildPromote=0x0000
|
||||
OP_GuildPublicNote=0x5053
|
||||
OP_GuildManageBanker=0x748f # Was 0x0737
|
||||
OP_GuildBank=0x5134 # Was 0x10c3
|
||||
OP_SetGuildRank=0x0b9c
|
||||
OP_GuildUpdateURLAndChannel=0x6084
|
||||
OP_GuildStatus=0x7326
|
||||
OP_GuildCreate=0x1dc8 # or maybe 0x086e
|
||||
OP_GuildMemberLevelUpdate=0x0000 # Unused?
|
||||
OP_ZoneGuildList=0x0000 # Unused?
|
||||
OP_GetGuildsList=0x0000 # Unused?
|
||||
OP_LFGuild=0x0000
|
||||
OP_GuildManageRemove=0x0000
|
||||
OP_GuildManageAdd=0x0000
|
||||
OP_GuildManageStatus=0x0000
|
||||
|
||||
# GM/Guide Opcodes
|
||||
OP_GMServers=0x08c1
|
||||
OP_GMBecomeNPC=0x3ae1
|
||||
OP_GMZoneRequest=0x62ac
|
||||
OP_GMZoneRequest2=0x7e1a
|
||||
OP_GMGoto=0x7d8e
|
||||
OP_GMSearchCorpse=0x46b1
|
||||
OP_GMHideMe=0x79c5
|
||||
OP_GMDelCorpse=0x607e
|
||||
OP_GMApproval=0x6db5
|
||||
OP_GMToggle=0x2097
|
||||
OP_GMSummon=0x486f # Was 0x684f
|
||||
OP_GMEmoteZone=0x1cfd # Was 0x0655
|
||||
OP_GMEmoteWorld=0x458e # Was 0x1935
|
||||
OP_GMFind=0x4a8f
|
||||
OP_GMKick=0x26a7
|
||||
OP_GMKill=0x51d3
|
||||
OP_GMNameChange=0x035f # Was 0x4434
|
||||
OP_GMLastName=0x16ce # Was 0x3077
|
||||
|
||||
# Misc Opcodes
|
||||
OP_InspectRequest=0x57bc
|
||||
OP_InspectAnswer=0x71ac
|
||||
OP_InspectMessageUpdate=0x6f8b
|
||||
OP_BeginCast=0x318f
|
||||
OP_ColoredText=0x0000
|
||||
OP_ConsentResponse=0x384a
|
||||
OP_MemorizeSpell=0x6a0d
|
||||
OP_SwapSpell=0x0efa
|
||||
OP_CastSpell=0x4466
|
||||
OP_Consider=0x742b
|
||||
OP_FormattedMessage=0x1024
|
||||
OP_SimpleMessage=0x213f
|
||||
OP_Buff=0x3a54
|
||||
OP_Illusion=0x312a
|
||||
OP_MoneyOnCorpse=0x5f44
|
||||
OP_RandomReply=0x106b
|
||||
OP_DenyResponse=0x2382
|
||||
OP_SkillUpdate=0x2264
|
||||
OP_GMTrainSkillConfirm=0x19aa # 0x3960
|
||||
OP_RandomReq=0x7b10
|
||||
OP_Death=0x6517
|
||||
OP_GMTraining=0x1966
|
||||
OP_GMEndTraining=0x4d6b
|
||||
OP_GMTrainSkill=0x2a85
|
||||
OP_Animation=0x7177
|
||||
OP_Begging=0x6703
|
||||
OP_Consent=0x1fd1
|
||||
OP_ConsentDeny=0x7a45
|
||||
OP_AutoFire=0x241e
|
||||
OP_PetCommands=0x0159
|
||||
OP_DeleteSpell=0x52e5
|
||||
OP_Surname=0x0423
|
||||
OP_ClearSurname=0x7d23
|
||||
OP_FaceChange=0x5578
|
||||
OP_SenseHeading=0x217c
|
||||
OP_Action=0x744c
|
||||
OP_ConsiderCorpse=0x5204
|
||||
OP_HideCorpse=0x67fc
|
||||
OP_CorpseDrag=0x7eec
|
||||
OP_CorpseDrop=0x0904
|
||||
OP_Bug=0x73f4
|
||||
OP_Feedback=0x5602
|
||||
OP_Report=0x1414
|
||||
OP_Damage=0x6f15
|
||||
OP_ChannelMessage=0x2b2d
|
||||
OP_Assist=0x4478
|
||||
OP_AssistGroup=0x27f8
|
||||
OP_MoveCoin=0x0bcf
|
||||
OP_ZonePlayerToBind=0x0ecb
|
||||
OP_KeyRing=0x6857
|
||||
OP_WhoAllRequest=0x65ab
|
||||
OP_WhoAllResponse=0x407a
|
||||
OP_FriendsWho=0x3956
|
||||
OP_ConfirmDelete=0x43a3
|
||||
OP_Logout=0x4ac6
|
||||
OP_Rewind=0x1745
|
||||
OP_TargetCommand=0x58e2
|
||||
OP_Hide=0x5d55
|
||||
OP_Jump=0x2060
|
||||
OP_Camp=0x28ec
|
||||
OP_Emote=0x373b
|
||||
OP_SetRunMode=0x009f
|
||||
OP_BankerChange=0x383c
|
||||
OP_TargetMouse=0x075d
|
||||
OP_MobHealth=0x2dd3
|
||||
OP_InitialMobHealth=0x0000 # Unused?
|
||||
OP_TargetHoTT=0x486c
|
||||
OP_XTargetResponse=0x4d59
|
||||
OP_XTargetRequest=0x3763
|
||||
OP_XTargetAutoAddHaters=0x672f
|
||||
OP_TargetBuffs=0x4f4b
|
||||
OP_BuffCreate=0x3377
|
||||
OP_BuffRemoveRequest=0x49bc
|
||||
OP_DeleteSpawn=0x7280
|
||||
OP_AutoAttack=0x109d
|
||||
OP_AutoAttack2=0x3526
|
||||
OP_Consume=0x4b70
|
||||
OP_MoveItem=0x32ee
|
||||
OP_DeleteItem=0x18ad
|
||||
OP_DeleteCharge=0x01b8
|
||||
OP_ItemPacket=0x368e
|
||||
OP_ItemLinkResponse=0x70c0
|
||||
OP_ItemLinkClick=0x4cef
|
||||
OP_ItemPreview=0x7f80
|
||||
OP_NewSpawn=0x0b04
|
||||
OP_Track=0x17e5
|
||||
OP_TrackTarget=0x0029
|
||||
OP_TrackUnknown=0x0f83
|
||||
OP_ClickDoor=0x3a8f
|
||||
OP_MoveDoor=0x08e8
|
||||
OP_RemoveAllDoors=0x700c
|
||||
OP_EnvDamage=0x51fd
|
||||
OP_BoardBoat=0x31e6
|
||||
OP_Forage=0x5306
|
||||
OP_LeaveBoat=0x4211
|
||||
OP_ControlBoat=0x0ae7
|
||||
OP_SafeFallSuccess=0x6dbc
|
||||
OP_RezzComplete=0x760d
|
||||
OP_RezzRequest=0x3c21
|
||||
OP_RezzAnswer=0x701c
|
||||
OP_Shielding=0x48c1
|
||||
OP_RequestDuel=0x3af1
|
||||
OP_MobRename=0x2c57
|
||||
OP_AugmentItem=0x661b # Was 0x37cb
|
||||
OP_WeaponEquip1=0x34a7
|
||||
OP_WeaponEquip2=0x559a # Was 0x6022
|
||||
OP_WeaponUnequip2=0x2d25 # Was 0x0110
|
||||
OP_ApplyPoison=0x1b0c
|
||||
OP_Save=0x4a39
|
||||
OP_TestBuff=0x7cb8 # Was 0x3772
|
||||
OP_CustomTitles=0x100e
|
||||
OP_Split=0x0522
|
||||
OP_YellForHelp=0x4e56
|
||||
OP_LoadSpellSet=0x261d
|
||||
OP_Bandolier=0x7677
|
||||
OP_PotionBelt=0x1a3e # Was 0x4d3b
|
||||
OP_DuelResponse=0x6a46
|
||||
OP_DuelResponse2=0x68d3
|
||||
OP_SaveOnZoneReq=0x2c7a
|
||||
OP_ReadBook=0x72df
|
||||
OP_Dye=0x23b9
|
||||
OP_InterruptCast=0x048c
|
||||
OP_AAAction=0x424e
|
||||
OP_LeadershipExpToggle=0x74bd
|
||||
OP_LeadershipExpUpdate=0x4ee2
|
||||
OP_PurchaseLeadershipAA=0x6c55
|
||||
OP_UpdateLeadershipAA=0x0026
|
||||
OP_MarkNPC=0x5a58
|
||||
OP_MarkRaidNPC=0x0000 #unimplemented
|
||||
OP_ClearNPCMarks=0x0272
|
||||
OP_ClearRaidNPCMarks=0x0000 #unimplemented
|
||||
OP_DelegateAbility=0x4c9d
|
||||
OP_SetGroupTarget=0x026
|
||||
OP_Charm=0x5d92
|
||||
OP_Stun=0x36a4
|
||||
OP_SendFindableNPCs=0x587e
|
||||
OP_FindPersonRequest=0x5cea
|
||||
OP_FindPersonReply=0x7e58
|
||||
OP_Sound=0x1a30
|
||||
OP_PetBuffWindow=0x5882
|
||||
OP_LevelAppearance=0x3bc9
|
||||
OP_Translocate=0x6580
|
||||
OP_Sacrifice=0x1821
|
||||
OP_PopupResponse=0x214a
|
||||
OP_OnLevelMessage=0x4fd0
|
||||
OP_AugmentInfo=0x0afb
|
||||
OP_Petition=0x4101
|
||||
OP_SomeItemPacketMaybe=0x747c
|
||||
OP_PVPStats=0x6f4b # Unsure
|
||||
OP_PVPLeaderBoardRequest=0x3707
|
||||
OP_PVPLeaderBoardReply=0x25b7
|
||||
OP_PVPLeaderBoardDetailsRequest=0x15a9
|
||||
OP_PVPLeaderBoardDetailsReply=0x04aa
|
||||
OP_RestState=0x000f
|
||||
OP_RespawnWindow=0x28bc
|
||||
OP_LDoNButton=0x5327
|
||||
OP_SetStartCity=0x6326 # Was 0x2d1b
|
||||
OP_VoiceMacroIn=0x17fd
|
||||
OP_VoiceMacroOut=0x409a
|
||||
OP_ItemViewUnknown=0x465b
|
||||
OP_VetRewardsAvaliable=0x6773
|
||||
OP_VetClaimRequest=0x1126
|
||||
OP_VetClaimReply=0x16d4
|
||||
OP_DisciplineUpdate=0x759e # Was 0x2f05
|
||||
OP_DisciplineTimer=0x6989 # Was 0x5e3f
|
||||
OP_BecomeCorpse=0x0000 # Unused?
|
||||
OP_Action2=0x0000 # Unused?
|
||||
OP_MobUpdate=0x2c84
|
||||
OP_NPCMoveUpdate=0x5892
|
||||
OP_CameraEffect=0x127f
|
||||
OP_SpellEffect=0x5936
|
||||
OP_RemoveNimbusEffect=0xc693
|
||||
OP_AltCurrency=0x3ee6
|
||||
OP_AltCurrencyMerchantRequest=0x05f0
|
||||
OP_AltCurrencyMerchantReply=0x0165
|
||||
OP_AltCurrencyPurchase=0x6b6d
|
||||
OP_AltCurrencySell=0x61cb
|
||||
OP_AltCurrencySellSelection=0x74ec
|
||||
OP_AltCurrencyReclaim=0x27a2
|
||||
OP_CrystalCountUpdate=0x467f # Was 0x3f60
|
||||
OP_CrystalCreate=0x7aee # Was 0x5a82
|
||||
OP_CrystalReclaim=0x2439 # Was 0x7616
|
||||
OP_Untargetable=0x1456
|
||||
OP_IncreaseStats=0x70a3
|
||||
OP_Weblink=0x18d3
|
||||
#OP_OpenInventory=0x0000 # Likely does not exist in RoF -U
|
||||
OP_OpenContainer=0x0000
|
||||
OP_Marquee=0x0000
|
||||
|
||||
OP_DzQuit=0xb2e3
|
||||
OP_DzListTimers=0x7b68
|
||||
OP_DzAddPlayer=0x4701
|
||||
OP_DzRemovePlayer=0x1abc
|
||||
OP_DzSwapPlayer=0x405b
|
||||
OP_DzMakeLeader=0x543d
|
||||
OP_DzPlayerList=0x14c6
|
||||
OP_DzJoinExpeditionConfirm=0x7f4b
|
||||
OP_DzJoinExpeditionReply=0x1950
|
||||
OP_DzExpeditionInfo=0x9119
|
||||
OP_DzExpeditionList=0x205f
|
||||
OP_DzMemberStatus=0x32f0
|
||||
OP_DzLeaderStatus=0x3de9
|
||||
OP_DzExpeditionEndsWarning=0x5189
|
||||
OP_DzMemberList=0x0000
|
||||
OP_DzCompass=0x3e0e # Was 0x4f09
|
||||
OP_DzChooseZone=0x0000 # Maybe 0x29d6
|
||||
|
||||
# New Opcodes
|
||||
OP_SpawnPositionUpdate=0x0000 # Actually OP_MobUpdate ?
|
||||
OP_ManaUpdate=0x3791
|
||||
OP_EnduranceUpdate=0x5f42
|
||||
OP_MobManaUpdate=0x2925
|
||||
OP_MobEnduranceUpdate=0x7314
|
||||
|
||||
# Mercenary Opcodes
|
||||
OP_MercenaryDataUpdateRequest=0x2bcb
|
||||
OP_MercenaryDataUpdate=0x7b89
|
||||
OP_MercenaryDataRequest=0x61a4
|
||||
OP_MercenaryDataResponse=0x11c1
|
||||
OP_MercenaryHire=0x72ce
|
||||
OP_MercenaryDismiss=0x7169
|
||||
OP_MercenaryTimerRequest=0x6e83
|
||||
OP_MercenaryTimer=0x31e4
|
||||
OP_MercenaryUnknown1=0x20b9
|
||||
OP_MercenaryCommand=0x1b37
|
||||
OP_MercenarySuspendRequest=0x6e9f
|
||||
OP_MercenarySuspendResponse=0x4407
|
||||
OP_MercenaryUnsuspendResponse=0x6f03
|
||||
|
||||
# Looting
|
||||
OP_LootRequest=0x0adf
|
||||
OP_EndLootRequest=0x30f7
|
||||
OP_LootItem=0x4dc9
|
||||
OP_LootComplete=0x55c4
|
||||
|
||||
# bazaar trader stuff:
|
||||
OP_BazaarSearch=0x39d6
|
||||
OP_TraderDelItem=0x0000
|
||||
OP_BecomeTrader=0x61b3
|
||||
OP_TraderShop=0x5eca
|
||||
OP_Trader=0x4ef5 # Was 0x6790
|
||||
OP_TraderBuy=0x0000
|
||||
OP_Barter=0x243a
|
||||
OP_ShopItem=0x0000
|
||||
OP_BazaarInspect=0x0000
|
||||
OP_Bazaar=0x0000
|
||||
OP_TraderItemUpdate=0x0000
|
||||
|
||||
# pc/npc trading
|
||||
OP_TradeRequest=0x77b5
|
||||
OP_TradeAcceptClick=0x69e2
|
||||
OP_TradeRequestAck=0x14bf
|
||||
OP_TradeCoins=0x4206
|
||||
OP_FinishTrade=0x3993
|
||||
OP_CancelTrade=0x354c
|
||||
OP_TradeMoneyUpdate=0x68c2
|
||||
OP_MoneyUpdate=0x640c
|
||||
OP_TradeBusy=0x5505
|
||||
|
||||
# Sent after canceling trade or after closing tradeskill object
|
||||
OP_FinishWindow=0x7349
|
||||
OP_FinishWindow2=0x40ef
|
||||
|
||||
# Sent on Live for what seems to be item existance verification
|
||||
# Ex. Before Right Click Effect happens from items
|
||||
OP_ItemVerifyRequest=0x189c
|
||||
OP_ItemVerifyReply=0x097b
|
||||
|
||||
# merchant stuff
|
||||
OP_ShopPlayerSell=0x3de3
|
||||
OP_ShopRequest=0x4fed
|
||||
OP_ShopEnd=0x30a8
|
||||
OP_ShopEndConfirm=0x3196
|
||||
OP_ShopPlayerBuy=0x004c
|
||||
OP_ShopDelItem=0x724f
|
||||
|
||||
# tradeskill stuff:
|
||||
OP_ClickObject=0x4aa1
|
||||
OP_ClickObjectAction=0x0c1e
|
||||
OP_ClearObject=0x7a11
|
||||
OP_RecipeDetails=0x6e02
|
||||
OP_RecipesFavorite=0x5c74
|
||||
OP_RecipesSearch=0x6290
|
||||
OP_RecipeReply=0x1db6
|
||||
OP_RecipeAutoCombine=0x40d7
|
||||
OP_TradeSkillCombine=0x579a
|
||||
|
||||
# Tribute Packets:
|
||||
OP_OpenGuildTributeMaster=0x49ea
|
||||
OP_OpenTributeMaster=0x7666 # Was 0x40f5
|
||||
OP_SelectTribute=0x79fc
|
||||
OP_TributeItem=0x4f3e
|
||||
OP_TributeMoney=0x58fb # Was 0x6fed
|
||||
OP_TributeToggle=0x4e32
|
||||
OP_TributePointUpdate=0x5300
|
||||
OP_TributeNPC=0x0000
|
||||
OP_GuildTributeInfo=0x0000
|
||||
OP_OpenTributeReply=0x0000
|
||||
OP_GuildTributeStatus=0x0000
|
||||
|
||||
# Adventure packets:
|
||||
OP_LeaveAdventure=0x5d18
|
||||
OP_AdventureFinish=0x400f
|
||||
OP_AdventureInfoRequest=0x3cb0
|
||||
OP_AdventureInfo=0x4c54
|
||||
OP_AdventureRequest=0x2c6c
|
||||
OP_AdventureDetails=0x5648
|
||||
OP_AdventureData=0x7171
|
||||
OP_AdventureUpdate=0x1b01
|
||||
OP_AdventureMerchantRequest=0x6922 # Was 654d
|
||||
OP_AdventureMerchantResponse=0x3e47 # Was 7949
|
||||
OP_AdventureMerchantPurchase=0x5b72 # Was 155a
|
||||
OP_AdventureMerchantSell=0x2f9b # Was 389c
|
||||
OP_AdventurePointsUpdate=0x65c3 # Was 7589
|
||||
OP_AdventureStatsRequest=0x5a62
|
||||
OP_AdventureStatsReply=0x2370
|
||||
OP_AdventureLeaderboardRequest=0x7093
|
||||
OP_AdventureLeaderboardReply=0x7f79
|
||||
|
||||
# Group Opcodes
|
||||
OP_GroupDisband=0x4c10
|
||||
OP_GroupInvite=0x1649
|
||||
OP_GroupFollow=0x05ce
|
||||
OP_GroupUpdate=0x4ced
|
||||
OP_GroupUpdateB=0x0cbc
|
||||
OP_GroupCancelInvite=0x0000
|
||||
OP_GroupAcknowledge=0x04d0
|
||||
OP_GroupDelete=0x3abb
|
||||
OP_CancelInvite=0x32c2
|
||||
OP_GroupFollow2=0x2a50
|
||||
OP_GroupInvite2=0x6c65
|
||||
OP_GroupDisbandYou=0x7323
|
||||
OP_GroupDisbandOther=0x88a1
|
||||
OP_GroupLeaderChange=0x74da
|
||||
OP_GroupRoles=0x4d9f
|
||||
OP_GroupMakeLeader=0x4229
|
||||
OP_DoGroupLeadershipAbility=0x6eae
|
||||
OP_GroupLeadershipAAUpdate=0x6298
|
||||
OP_GroupMentor=0x3342
|
||||
OP_InspectBuffs=0x0000
|
||||
|
||||
# LFG/LFP Opcodes
|
||||
OP_LFGCommand=0x6060
|
||||
OP_LFGGetMatchesRequest=0x0340
|
||||
OP_LFGGetMatchesResponse=0x5048
|
||||
OP_LFPGetMatchesRequest=0x4d7d
|
||||
OP_LFPGetMatchesResponse=0x22c6
|
||||
OP_LFPCommand=0x49a9
|
||||
OP_LFGAppearance=0x0000
|
||||
OP_LFGResponse=0x0000
|
||||
|
||||
# Raid Opcodes
|
||||
OP_RaidInvite=0x3973
|
||||
OP_RaidUpdate=0x56fe
|
||||
OP_RaidJoin=0x0000
|
||||
|
||||
# Button-push commands
|
||||
OP_Taunt=0x2703
|
||||
OP_CombatAbility=0x3eba
|
||||
OP_SenseTraps=0x02af # Was 0x2ee0
|
||||
OP_PickPocket=0x39e8
|
||||
OP_DisarmTraps=0x0000
|
||||
OP_Disarm=0x5ec8
|
||||
OP_Sneak=0x4577
|
||||
OP_Fishing=0x1e2a
|
||||
OP_InstillDoubt=0x640e
|
||||
OP_FeignDeath=0x52fa
|
||||
OP_Mend=0x0ecf
|
||||
OP_Bind_Wound=0x0386
|
||||
OP_LDoNOpen=0x3d5c
|
||||
|
||||
# Task packets
|
||||
OP_TaskDescription=0x0083
|
||||
OP_TaskActivity=0x083
|
||||
OP_CompletedTasks=0x4eba
|
||||
OP_TaskActivityComplete=0x7037
|
||||
OP_AcceptNewTask=0x0a23
|
||||
OP_CancelTask=0x3714
|
||||
OP_TaskMemberList=0x5727 # Was 0x1656
|
||||
OP_OpenNewTasksWindow=0x48a2 # Was 0x11de
|
||||
OP_AvaliableTask=0x36e8 # Was 0x2377
|
||||
OP_TaskHistoryRequest=0x5f1c
|
||||
OP_TaskHistoryReply=0x3d05
|
||||
OP_DeclineAllTasks=0x0000
|
||||
|
||||
# Title opcodes
|
||||
OP_NewTitlesAvailable=0x0d32
|
||||
OP_RequestTitles=0x6344
|
||||
OP_SendTitleList=0x2d08
|
||||
OP_SetTitle=0x6527
|
||||
OP_SetTitleReply=0x4c21
|
||||
|
||||
# mail opcodes
|
||||
OP_Command=0x0000
|
||||
OP_MailboxHeader=0x0000
|
||||
OP_MailHeader=0x0000
|
||||
OP_MailBody=0x0000
|
||||
OP_NewMail=0x0000
|
||||
OP_SentConfirm=0x0000
|
||||
|
||||
########### Below this point should not be needed ###########
|
||||
|
||||
# This section are all unknown in Titanium
|
||||
OP_ForceFindPerson=0x0000
|
||||
OP_LocInfo=0x0000
|
||||
OP_ReloadUI=0x0000
|
||||
OP_ItemName=0x0000
|
||||
OP_ItemLinkText=0x0000
|
||||
OP_MultiLineMsg=0x0000
|
||||
OP_MendHPUpdate=0x0000
|
||||
OP_TargetReject=0x0000
|
||||
OP_SafePoint=0x0000
|
||||
OP_ApproveZone=0x0000
|
||||
OP_ZoneComplete=0x0000
|
||||
OP_ClientError=0x0000
|
||||
OP_DumpName=0x0000
|
||||
OP_Heartbeat=0x0000
|
||||
OP_CrashDump=0x0000
|
||||
OP_LoginComplete=0x0000
|
||||
|
||||
# discovered opcodes not yet used:
|
||||
OP_PickLockSuccess=0x0000
|
||||
OP_PlayMP3=0x0000
|
||||
OP_ReclaimCrystals=0x0000
|
||||
OP_DynamicWall=0x0000
|
||||
OP_OpenDiscordMerchant=0x0000
|
||||
OP_DiscordMerchantInventory=0x0000
|
||||
OP_GiveMoney=0x0000
|
||||
OP_RequestKnowledgeBase=0x0000
|
||||
OP_KnowledgeBase=0x0000
|
||||
OP_SlashAdventure=0x0000 # /adventure
|
||||
OP_BecomePVPPrompt=0x0000
|
||||
OP_MoveLogRequest=0x0000 # gone I think
|
||||
OP_MoveLogDisregard=0x0000 # gone I think
|
||||
|
||||
# named unknowns, to make looking for real unknown easier
|
||||
OP_AnnoyingZoneUnknown=0x0000
|
||||
OP_Some6ByteHPUpdate=0x0000 seems to happen when you target group members
|
||||
OP_QueryResponseThing=0x0000
|
||||
|
||||
|
||||
# realityincarnate: these are just here to stop annoying several thousand byte packet dumps
|
||||
#OP_LoginUnknown1=0x46d3 # OP_SendSpellChecksum
|
||||
#OP_LoginUnknown2=0x040b # OP_SendSkillCapsChecksum
|
||||
|
||||
# Petition Opcodes
|
||||
OP_PetitionSearch=0x0000 search term for petition
|
||||
OP_PetitionSearchResults=0x0000 (list of?) matches from search
|
||||
OP_PetitionSearchText=0x0000 text results of search
|
||||
|
||||
OP_PetitionUpdate=0x0000
|
||||
OP_PetitionCheckout=0x0000
|
||||
OP_PetitionCheckIn=0x0000
|
||||
OP_PetitionQue=0x0000
|
||||
OP_PetitionUnCheckout=0x0000
|
||||
OP_PetitionDelete=0x0000
|
||||
OP_DeletePetition=0x0000
|
||||
OP_PetitionResolve=0x0000
|
||||
OP_PDeletePetition=0x0000
|
||||
OP_PetitionBug=0x0000
|
||||
OP_PetitionRefresh=0x0000
|
||||
OP_PetitionCheckout2=0x0000
|
||||
OP_PetitionViewPetition=0x0000
|
||||
|
||||
# Login opcodes
|
||||
OP_SessionReady=0x0000
|
||||
OP_Login=0x0000
|
||||
OP_ServerListRequest=0x0000
|
||||
OP_PlayEverquestRequest=0x0000
|
||||
OP_PlayEverquestResponse=0x0000
|
||||
OP_ChatMessage=0x0000
|
||||
OP_LoginAccepted=0x0000
|
||||
OP_ServerListResponse=0x0000
|
||||
OP_Poll=0x0000
|
||||
OP_EnterChat=0x0000
|
||||
OP_PollResponse=0x0000
|
||||
|
||||
# raw opcodes
|
||||
OP_RAWSessionRequest=0x0000
|
||||
OP_RAWSessionResponse=0x0000
|
||||
OP_RAWCombined=0x0000
|
||||
OP_RAWSessionDisconnect=0x0000
|
||||
OP_RAWKeepAlive=0x0000
|
||||
OP_RAWSessionStatRequest=0x0000
|
||||
OP_RAWSessionStatResponse=0x0000
|
||||
OP_RAWPacket=0x0000
|
||||
OP_RAWFragment=0x0000
|
||||
OP_RAWOutOfOrderAck=0x0000
|
||||
OP_RAWAck=0x0000
|
||||
OP_RAWAppCombined=0x0000
|
||||
OP_RAWOutOfSession=0x0000
|
||||
|
||||
# we need to document the differences between these packets to make identifying them easier
|
||||
OP_Some3ByteHPUpdate=0x0000 # initial HP update for mobs
|
||||
OP_InitialHPUpdate=0x0000
|
||||
|
||||
OP_ItemRecastDelay=0x08a6
|
||||
@ -737,6 +737,7 @@ public:
|
||||
void ProjectileAttack();
|
||||
inline bool HasProjectileAttack() const { return ActiveProjectileATK; }
|
||||
inline void SetProjectileAttack(bool value) { ActiveProjectileATK = value; }
|
||||
float GetRangeDistTargetSizeMod(Mob* other);
|
||||
bool CanDoSpecialAttack(Mob *other);
|
||||
bool Flurry(ExtraAttackOptions *opts);
|
||||
bool Rampage(ExtraAttackOptions *opts);
|
||||
|
||||
@ -763,15 +763,16 @@ void Client::RangedAttack(Mob* other, bool CanDoubleAttack) {
|
||||
}
|
||||
}
|
||||
|
||||
float range = RangeItem->Range + AmmoItem->Range + 5.0f; //Fudge it a little, client will let you hit something at 0 0 0 when you are at 205 0 0
|
||||
float range = RangeItem->Range + AmmoItem->Range + GetRangeDistTargetSizeMod(GetTarget());
|
||||
mlog(COMBAT__RANGED, "Calculated bow range to be %.1f", range);
|
||||
range *= range;
|
||||
if(DistNoRootNoZ(*GetTarget()) > range) {
|
||||
if(DistNoRoot(*GetTarget()) > range) {
|
||||
mlog(COMBAT__RANGED, "Ranged attack out of range... client should catch this. (%f > %f).\n", DistNoRootNoZ(*GetTarget()), range);
|
||||
//target is out of range, client does a message
|
||||
Message_StringID(13,TARGET_OUT_OF_RANGE);//Client enforces range and sends the message, this is a backup just incase.
|
||||
return;
|
||||
}
|
||||
else if(DistNoRootNoZ(*GetTarget()) < (RuleI(Combat, MinRangedAttackDist)*RuleI(Combat, MinRangedAttackDist))){
|
||||
else if(DistNoRoot(*GetTarget()) < (RuleI(Combat, MinRangedAttackDist)*RuleI(Combat, MinRangedAttackDist))){
|
||||
Message_StringID(15,RANGED_TOO_CLOSE);//Client enforces range and sends the message, this is a backup just incase.
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1125,6 +1126,45 @@ void Mob::ProjectileAttack()
|
||||
SetProjectileAttack(false);
|
||||
}
|
||||
|
||||
float Mob::GetRangeDistTargetSizeMod(Mob* other)
|
||||
{
|
||||
/*
|
||||
Range is enforced client side, therefore these numbers do not need to be 100% accurate just close enough to
|
||||
prevent any exploitation. The range mod changes in some situations depending on if size is from spawn or from SendIllusionPacket changes.
|
||||
At present time only calculate from spawn (it is no consistent what happens to the calc when changing it after spawn).
|
||||
*/
|
||||
if (!other)
|
||||
return 0.0f;
|
||||
|
||||
float tsize = other->GetSize();
|
||||
|
||||
if (GetSize() > tsize)
|
||||
tsize = GetSize();
|
||||
|
||||
float mod = 0.0f;
|
||||
/*These are correct numbers if mob size is changed via #size (Don't know why it matters but it does)
|
||||
if (tsize < 7)
|
||||
mod = 16.0f;
|
||||
else if (tsize >=7 && tsize <= 20)
|
||||
mod = 16.0f + (0.6f * (tsize - 6.0f));
|
||||
else if (tsize >=20 && tsize <= 60)
|
||||
mod = 25.0f + (1.25f * (tsize - 20.0f));
|
||||
else
|
||||
mod = 75.0f;
|
||||
*/
|
||||
|
||||
if (tsize < 10)
|
||||
mod = 18.0f;
|
||||
else if (tsize >=10 && tsize < 15)
|
||||
mod = 20.0f + (4.0f * (tsize - 10.0f));
|
||||
else if (tsize >=15 && tsize <= 20)
|
||||
mod = 42.0f + (5.8f * (tsize - 15.0f));
|
||||
else
|
||||
mod = 75.0f;
|
||||
|
||||
return (mod + 2.0f); //Add 2.0f as buffer to prevent any chance of failures, client enforce range check regardless.
|
||||
}
|
||||
|
||||
void NPC::RangedAttack(Mob* other)
|
||||
{
|
||||
|
||||
@ -1330,16 +1370,16 @@ void Client::ThrowingAttack(Mob* other, bool CanDoubleAttack) { //old was 51
|
||||
}
|
||||
}
|
||||
|
||||
int range = item->Range +50/*Fudge it a little, client will let you hit something at 0 0 0 when you are at 205 0 0*/;
|
||||
float range = item->Range + GetRangeDistTargetSizeMod(GetTarget());
|
||||
mlog(COMBAT__RANGED, "Calculated bow range to be %.1f", range);
|
||||
range *= range;
|
||||
if(DistNoRootNoZ(*GetTarget()) > range) {
|
||||
if(DistNoRoot(*GetTarget()) > range) {
|
||||
mlog(COMBAT__RANGED, "Throwing attack out of range... client should catch this. (%f > %f).\n", DistNoRootNoZ(*GetTarget()), range);
|
||||
//target is out of range, client does a message
|
||||
Message_StringID(13,TARGET_OUT_OF_RANGE);//Client enforces range and sends the message, this is a backup just incase.
|
||||
return;
|
||||
}
|
||||
else if(DistNoRootNoZ(*GetTarget()) < (RuleI(Combat, MinRangedAttackDist)*RuleI(Combat, MinRangedAttackDist))){
|
||||
return;
|
||||
else if(DistNoRoot(*GetTarget()) < (RuleI(Combat, MinRangedAttackDist)*RuleI(Combat, MinRangedAttackDist))){
|
||||
Message_StringID(15,RANGED_TOO_CLOSE);//Client enforces range and sends the message, this is a backup just incase.
|
||||
}
|
||||
|
||||
if(!IsAttackAllowed(GetTarget()) ||
|
||||
|
||||
@ -396,7 +396,8 @@
|
||||
#define SONG_ENDS_OTHER 12688 //%1's song ends.
|
||||
#define SONG_ENDS_ABRUPTLY_OTHER 12689 //%1's song ends abruptly.
|
||||
#define DIVINE_AURA_NO_ATK 12695 //You can't attack while invulnerable!
|
||||
#define TRY_ATTACKING_SOMEONE 12696 //Try attacking someone other than yourself, it's more productive.
|
||||
#define TRY_ATTACKING_SOMEONE 12696 //Try attacking someone other than yourself, it's more productive
|
||||
#define RANGED_TOO_CLOSE 12698 //Your target is too close to use a ranged weapon!
|
||||
#define BACKSTAB_WEAPON 12874 //You need a piercing weapon as your primary weapon in order to backstab
|
||||
#define MORE_SKILLED_THAN_I 12931 //%1 tells you, 'You are more skilled than I! What could I possibly teach you?'
|
||||
#define SURNAME_EXISTS 12939 //You already have a surname. Operation failed.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user