mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-11 21:01:29 +00:00
255 lines
7.9 KiB
C++
255 lines
7.9 KiB
C++
/* EQEMu: Everquest Server Emulator
|
|
Copyright (C) 2001-2016 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 04111-1307 USA
|
|
*/
|
|
|
|
#ifndef ITEM_STRUCT_H
|
|
#define ITEM_STRUCT_H
|
|
|
|
/*
|
|
* Note: (Doodman)
|
|
* This structure has field names that match the DB name exactly.
|
|
* Please take care as to not mess this up as it should make
|
|
* everyones life (i.e. mine) much easier. And the DB names
|
|
* match the field name from the 13th floor (SEQ) item collectors,
|
|
* so please maintain that as well.
|
|
*
|
|
* Note #2: (Doodman)
|
|
* UnkXXX fields are left in here for completeness but commented
|
|
* out since they are really unknown and since the items are now
|
|
* preserialized they should not be needed. Conversly if they
|
|
* -are- needed, then they shouldn't be unkown.
|
|
*
|
|
* Note #3: (Doodman)
|
|
* Please take care when adding new found data fields to add them
|
|
* to the appropriate structure. Item_Struct has elements that are
|
|
* global to all types of items only.
|
|
*
|
|
* Note #4: (Doodman)
|
|
* Made ya look! Ha!
|
|
*/
|
|
|
|
#include "emu_constants.h"
|
|
|
|
/*
|
|
** Child struct of Item_Struct:
|
|
** Effect data: Click, Proc, Focus, Worn, Scroll
|
|
**
|
|
*/
|
|
struct ItemEffect_Struct {
|
|
int32 Effect;
|
|
uint8 Type;
|
|
uint8 Level;
|
|
uint8 Level2;
|
|
//MaxCharges
|
|
//CastTime
|
|
//RecastDelay
|
|
//RecastType
|
|
//ProcRate
|
|
};
|
|
|
|
class ItemInst;
|
|
|
|
struct InternalSerializedItem_Struct {
|
|
int16 slot_id;
|
|
const void * inst;
|
|
};
|
|
|
|
// use EmuConstants::ITEM_COMMON_SIZE
|
|
//#define MAX_AUGMENT_SLOTS 5
|
|
|
|
struct Item_Struct {
|
|
bool IsEquipable(uint16 Race, uint16 Class) const;
|
|
// Non packet based fields
|
|
uint8 MinStatus;
|
|
|
|
// Packet based fields
|
|
uint8 ItemClass; // Item Type: 0=common, 1=container, 2=book
|
|
char Name[64]; // Name
|
|
char Lore[80]; // Lore Name: *=lore, &=summoned, #=artifact, ~=pending lore
|
|
char IDFile[30]; // Visible model
|
|
uint32 ID; // Unique ID (also PK for DB)
|
|
int32 Weight; // Item weight * 10
|
|
uint8 NoRent; // No Rent: 0=norent, 255=not norent
|
|
uint8 NoDrop; // No Drop: 0=nodrop, 255=not nodrop
|
|
uint8 Size; // Size: 0=tiny, 1=small, 2=medium, 3=large, 4=giant
|
|
uint32 Slots; // Bitfield for which slots this item can be used in
|
|
uint32 Price; // Item cost (?)
|
|
uint32 Icon; // Icon Number
|
|
uint32 LoreGroup; // Later items use LoreGroup instead of LoreFlag. we might want to see about changing this to int32 since it is commonly -1 and is constantly being cast from signed (-1) to unsigned (4294967295)
|
|
bool LoreFlag; // This will be true if LoreGroup is non-zero
|
|
bool PendingLoreFlag;
|
|
bool ArtifactFlag;
|
|
bool SummonedFlag;
|
|
uint8 FVNoDrop; // Firiona Vie nodrop flag
|
|
uint32 Favor; // Individual favor
|
|
uint32 GuildFavor; // Guild favor
|
|
uint32 PointType;
|
|
|
|
//uint32 Unk117;
|
|
//uint32 Unk118;
|
|
//uint32 Unk121;
|
|
//uint32 Unk124;
|
|
|
|
uint8 BagType; // 0:Small Bag, 1:Large Bag, 2:Quiver, 3:Belt Pouch ... there are 50 types
|
|
uint8 BagSlots; // Number of slots: can only be 2, 4, 6, 8, or 10
|
|
uint8 BagSize; // 0:TINY, 1:SMALL, 2:MEDIUM, 3:LARGE, 4:GIANT
|
|
uint8 BagWR; // 0->100
|
|
|
|
bool BenefitFlag;
|
|
bool Tradeskills; // Is this a tradeskill item?
|
|
int8 CR; // Save vs Cold
|
|
int8 DR; // Save vs Disease
|
|
int8 PR; // Save vs Poison
|
|
int8 MR; // Save vs Magic
|
|
int8 FR; // Save vs Fire
|
|
int8 AStr; // Strength
|
|
int8 ASta; // Stamina
|
|
int8 AAgi; // Agility
|
|
int8 ADex; // Dexterity
|
|
int8 ACha; // Charisma
|
|
int8 AInt; // Intelligence
|
|
int8 AWis; // Wisdom
|
|
int32 HP; // HP
|
|
int32 Mana; // Mana
|
|
int32 AC; // AC
|
|
uint32 Deity; // Bitmask of Deities that can equip this item
|
|
//uint32 Unk033
|
|
int32 SkillModValue; // % Mod to skill specified in SkillModType
|
|
int32 SkillModMax; // Max skill point modification
|
|
uint32 SkillModType; // Type of skill for SkillModValue to apply to
|
|
uint32 BaneDmgRace; // Bane Damage Race
|
|
int8 BaneDmgAmt; // Bane Damage Body Amount
|
|
uint32 BaneDmgBody; // Bane Damage Body
|
|
bool Magic; // True=Magic Item, False=not
|
|
int32 CastTime_;
|
|
uint8 ReqLevel; // Required Level to use item
|
|
uint32 BardType; // Bard Skill Type
|
|
int32 BardValue; // Bard Skill Amount
|
|
int8 Light; // Light
|
|
uint8 Delay; // Delay * 10
|
|
uint8 RecLevel; // Recommended level to use item
|
|
uint8 RecSkill; // Recommended skill to use item (refers to primary skill of item)
|
|
uint8 ElemDmgType; // Elemental Damage Type (1=magic, 2=fire)
|
|
uint8 ElemDmgAmt; // Elemental Damage
|
|
uint8 Range; // Range of item
|
|
uint32 Damage; // Delay between item usage (in 0.1 sec increments)
|
|
uint32 Color; // RR GG BB 00 <-- as it appears in pc
|
|
uint32 Classes; // Bitfield of classes that can equip item (1 << class#)
|
|
uint32 Races; // Bitfield of races that can equip item (1 << race#)
|
|
//uint32 Unk054;
|
|
int16 MaxCharges; // Maximum charges items can hold: -1 if not a chargeable item
|
|
uint8 ItemType; // Item Type/Skill (itemClass* from above)
|
|
uint8 Material; // Item material type
|
|
uint32 HerosForgeModel;// Hero's Forge Armor Model Type (2-13?)
|
|
float SellRate; // Sell rate
|
|
//uint32 Unk059;
|
|
union {
|
|
uint32 Fulfilment; // Food fulfilment (How long it lasts)
|
|
uint32 CastTime; // Cast Time for clicky effects, in milliseconds
|
|
};
|
|
uint32 EliteMaterial;
|
|
int32 ProcRate;
|
|
int8 CombatEffects; // PoP: Combat Effects +
|
|
int8 Shielding; // PoP: Shielding %
|
|
int8 StunResist; // PoP: Stun Resist %
|
|
int8 StrikeThrough; // PoP: Strike Through %
|
|
uint32 ExtraDmgSkill;
|
|
uint32 ExtraDmgAmt;
|
|
int8 SpellShield; // PoP: Spell Shield %
|
|
int8 Avoidance; // PoP: Avoidance +
|
|
int8 Accuracy; // PoP: Accuracy +
|
|
uint32 CharmFileID;
|
|
int32 FactionMod1; // Faction Mod 1
|
|
int32 FactionMod2; // Faction Mod 2
|
|
int32 FactionMod3; // Faction Mod 3
|
|
int32 FactionMod4; // Faction Mod 4
|
|
int32 FactionAmt1; // Faction Amt 1
|
|
int32 FactionAmt2; // Faction Amt 2
|
|
int32 FactionAmt3; // Faction Amt 3
|
|
int32 FactionAmt4; // Faction Amt 4
|
|
char CharmFile[32]; // ?
|
|
uint32 AugType;
|
|
uint8 AugSlotType[EQEmu::constants::ITEM_COMMON_SIZE]; // RoF: Augment Slot 1-6 Type
|
|
uint8 AugSlotVisible[EQEmu::constants::ITEM_COMMON_SIZE]; // RoF: Augment Slot 1-6 Visible
|
|
uint8 AugSlotUnk2[EQEmu::constants::ITEM_COMMON_SIZE]; // RoF: Augment Slot 1-6 Unknown Most likely Powersource related
|
|
uint32 LDoNTheme;
|
|
uint32 LDoNPrice;
|
|
uint32 LDoNSold;
|
|
uint32 BaneDmgRaceAmt;
|
|
uint32 AugRestrict;
|
|
uint32 Endur;
|
|
uint32 DotShielding;
|
|
uint32 Attack;
|
|
uint32 Regen;
|
|
uint32 ManaRegen;
|
|
uint32 EnduranceRegen;
|
|
uint32 Haste;
|
|
uint32 DamageShield;
|
|
uint32 RecastDelay;
|
|
uint32 RecastType;
|
|
uint32 AugDistiller;
|
|
bool Attuneable;
|
|
bool NoPet;
|
|
bool PotionBelt;
|
|
bool Stackable;
|
|
bool NoTransfer;
|
|
bool QuestItemFlag;
|
|
int16 StackSize;
|
|
uint8 PotionBeltSlots;
|
|
ItemEffect_Struct Click, Proc, Worn, Focus, Scroll, Bard;
|
|
|
|
uint8 Book; // 0=Not book, 1=Book
|
|
uint32 BookType;
|
|
char Filename[33]; // Filename for book data
|
|
// Begin SoF Fields
|
|
int32 SVCorruption;
|
|
uint32 Purity;
|
|
uint8 EvolvingItem;
|
|
uint32 EvolvingID;
|
|
uint8 EvolvingLevel;
|
|
uint8 EvolvingMax;
|
|
uint32 BackstabDmg;
|
|
uint32 DSMitigation;
|
|
int32 HeroicStr;
|
|
int32 HeroicInt;
|
|
int32 HeroicWis;
|
|
int32 HeroicAgi;
|
|
int32 HeroicDex;
|
|
int32 HeroicSta;
|
|
int32 HeroicCha;
|
|
int32 HeroicMR;
|
|
int32 HeroicFR;
|
|
int32 HeroicCR;
|
|
int32 HeroicDR;
|
|
int32 HeroicPR;
|
|
int32 HeroicSVCorrup;
|
|
int32 HealAmt;
|
|
int32 SpellDmg;
|
|
uint32 LDoNSellBackRate;
|
|
uint32 ScriptFileID;
|
|
uint16 ExpendableArrow;
|
|
uint32 Clairvoyance;
|
|
char ClickName[65];
|
|
char ProcName[65];
|
|
char WornName[65];
|
|
char FocusName[65];
|
|
char ScrollName[65];
|
|
|
|
};
|
|
|
|
#endif
|