view Items.h @ 201:30aa44013f7a

On Items
author Nomad
date Sun, 17 Feb 2013 00:16:48 +0200
parents 821fd955c379
children 1bd823f52e3a
line wrap: on
line source

#pragma once






/*  338 */
enum ITEM_FLAGS
{
  ITEM_IDENTIFIED = 0x1,
  ITEM_BROKEN = 0x2,
  ITEM_TEMP_BONUS = 0x8,
  ITEM_STOLEN = 0x100,
  ITEM_ENCHANTED = 0x200,
};


/*  330 */
enum ITEM_TYPE
{
  ITEM_LONGSWORD_1 = 0x1,
  ITEM_DAGGER_1 = 0xF,
  ITEM_AXE_1 = 0x17,
  ITEM_SPEAR_1 = 0x1F,
  ITEM_CROSSBOW_1 = 0x2F,
  ITEM_MACE_1 = 0x32,
  ITEM_STAFF_1 = 0x3D,
  ITEM_LEATHER_1 = 0x42,
  ITEM_CHAINMAIL_1 = 0x47,
  ITEM_PLATE_1 = 0x4C,
  ITEM_BUCKLER_1 = 0x54,
  ITEM_GAUNTLETS_1 = 0x6E,
  ITEM_BOOTS_1 = 0x73,
  ITEM_WAND_FIRE = 0x87,
  ITEM_WAND_STUN = 0x8A,
  ITEM_WAND_INCENERATION = 0x9F,
  ITEM_TROLL_BLOOD = 0xCA,
  ITEM_DRAGON_EYE = 0xCC,
  ITEM_HARPY_FEATHER = 0xCF,
  ITEM_DEVIL_ICHOR = 0xD6,
  ITEM_OOZE_ECTOPLASM_BOTTLE = 0xD9,
  ITEM_POTION_BOTTLE = 0xDC,
  ITEM_SPELLBOOK_FIRE_STRIKE = 0x191,
  ITEM_SPELLBOOK_AIR_FEATHER_FALL = 0x19C,
  ITEM_SPELLBOOK_WATER_POISON_SPRAY = 0x1A7,
  ITEM_SPELLBOOK_EARTH_SLOW = 0x1B2,
  ITEM_SPELLBOOK_SPIRIT_BLESS = 0x1BD,
  ITEM_SPELLBOOK_MIND_MIND_BLAST = 0x1C8,
  ITEM_SPELLBOOK_BODY_FIRST_AID = 0x1D3,
  ITEM_SPELLBOOK_BODY_HEAL = 0x1D6,
  ITEM_SPELLBOOK_BODY_BREAK_POISON = 0x1D7,
  ITEM_SPELLBOOK_LIGHT_LIGHT_BOLT = 0x1DD,
  ITEM_SPELLBOOK_LIGHT_SUN_BURST = 0x1E6,
  ITEM_SPELLBOOK_LIGHT_DIVINE_INTERVENTION = 0x1E7,
  ITEM_ARTIFACT_PUCK = 0x1F4,
  ITEM_RELIC_MEKORIGS_HAMMER = 0x210,
};

/*  331 */
enum ITEM_EQUIP_TYPE
{
  EQUIP_ONE_OR_TWO_HANDS = 0x0,
  EQUIP_TWO_HANDED = 0x1,
  EQUIP_BOW = 0x2,
  EQUIP_ARMOUR = 0x3,
  EQUIP_SHIELD = 0x4,
  EQUIP_HELMET = 0x5,
  EQUIP_BELT = 0x6,
  EQUIP_CLOAK = 0x7,
  EQUIP_GAUNTLETS = 0x8,
  EQUIP_BOOTS = 0x9,
  EQUIP_RING = 0xA,
  EQUIP_AMULET = 0xB,
  EQUIP_C = 0xC,      // wand?
  EQUIP_REAGENT = 0xD,
  EQUIP_POTION = 0xE,
  EQUIP_F = 0xF,
  EQUIP_BOOK = 0x10,
  EQUIP_11 = 0x11,
  EQUIP_GOLD = 0x12,
  EQUIP_GEM = 0x13,
};



/*   64 */
#pragma pack(push, 1)
struct ItemGen
{
  //----- (0042EB25) --------------------------------------------------------
  inline ItemGen()
  {
    Reset();
  }

  bool GenerateArtifact();
  unsigned int GetValue();
  const char *GetDisplayName();
  const char *GetIdentifiedName();
  void UpdateTempBonus(__int64 uTimePlayed);
  void Reset();
  int _439DF3_get_additional_damage(int *a2, int *a3);



  unsigned int uItemID;
  int _bonus_type;
  int _bonus_strength;
  int uAdditionalValue;
  int uNumCharges;
  unsigned int uAttributes;
  unsigned __int8 uBodyAnchor;
  char uMaxCharges;
  char field_1A;
  char field_1B;
  unsigned __int64 uExpireTime;
};
#pragma pack(pop)



/*  175 */
#pragma pack(push, 1)
struct ItemDesc
{
  unsigned int uItemID;
  char *pIconName;
  char *pName;
  char *pUnidentifiedName;
  char *pDescription;
  unsigned int uValue;
  unsigned __int16 uSpriteID;
  __int16 field_1A;
  unsigned __int16 uEquipX;
  unsigned __int16 uEquipY;
  unsigned __int8 uEquipType;
  unsigned __int8 uSkillType;
  unsigned __int8 uDamageDice;
  unsigned __int8 uDamageRoll;
  unsigned __int8 uDamageMod;
  unsigned __int8 uMaterial;
  char _additional_value;
  char _bonus_type;
  char _bonus_strength;
  char field_29;
  char field_2A;
  char field_2B;
  char field_2C[4];
};
#pragma pack(pop)



/*  177 */
#pragma pack(push, 1)
struct ItemEnchantment
{
  char *pName;
  char *pParam;
  char field_8[12];
};
#pragma pack(pop)

/*  178 */
#pragma pack(push, 1)
struct ItemSpecialEnchantment
{
  char *pName;
  char *pParam;
  char field_8[12];
  int field_14;
  int field_18;
};
#pragma pack(pop)



/*  176 */
#pragma pack(push, 1)
struct ItemsTable
{
  void Initialize();
  void LoadPotions();
  void LoadPotionNotes();
  void GenerateItem(int a2, int a3, ItemGen *pItem);
  void SetSpecialBonus(ItemGen *pItem);
  bool _456D43_is_material_equals_3(ItemGen *pItem);
  bool _456D5E_is_some_material(ItemGen *pItem);
  char *Release();


  ItemDesc pItems[638];
  char align1[18];
  unsigned __int8 potion_data[50][50]; //int8!!!! not int16 as in decomp code. hexrays wrong!!
  unsigned __int8 potion_note[50][50];
  char align2[2758];
  ItemEnchantment pEnchantments[24];
  ItemSpecialEnchantment pSpecialEnchantments[72];
  char field_9FC0[5000];
  char field_B348[5000];
  char field_C6D0[5000];
  char field_DA58[5000];
  char field_EDE0[5000];
  char field_10168[5000];
  char field_114F0[388];
  char *pItemsTXT_Raw;
  char *pRndItemsTXT_Raw;
  char *pStdItemsTXT_Raw;
  char *pSpcItemsTXT_Raw;
  int field_11684[6];
  char field_1169C[60];
  int field_116D8[24];
  int field_11738[24];
  int field_11798;
  char field_1179C;
};
#pragma pack(pop)




extern ItemGen *ptr_50C9A4;

extern struct ItemsTable *pItemsTable;