Mercurial > mm7
view Player.h @ 1021:67e33708d815
player use item continue cleanup
author | Gloval |
---|---|
date | Tue, 21 May 2013 08:53:43 +0400 |
parents | 32ec62bbaa2c |
children | 83be083ab25e |
line wrap: on
line source
#pragma once #include "Items.h" #include "Spells.h" #define PLAYER_BUFF_BLESS 1 #define PLAYER_BUFF_FATE 4 #define PLAYER_BUFF_HAMMERHANDS 6 #define PLAYER_BUFF_7 7 #define PLAYER_BUFF_PAIN_REFLECTION 10 #define PLAYER_BUFF_PRESERVATION 11 #define PLAYER_BUFF_REGENERATION 12 #define PLAYER_GUILD_BITS__SPIRIT_MEMBERSHIP 58 #define PLAYER_GUILD_BITS__ARCOMAGE_WIN 103 #define PLAYER_GUILD_BITS__ARCOMAGE_LOSE 104 /* 301 */ enum PlayerSpeech { SPEECH_1 = 1, SPEECH_2 = 2, SPEECH_3 = 3, SPEECH_4 = 4, SPEECH_5 = 5, SPEECH_6 = 6, SPEECH_7 = 7, SPEECH_8 = 8, SPEECH_9 = 9, SPEECH_10 = 10, SPEECH_11 = 11, SPEECH_12 = 12, SPEECH_14 = 14, SPEECH_NoRoom = 15, // when placing to inventory SPEECH_16 = 16, SPEECH_17 = 17, SPEECH_18 = 18, SPEECH_19 = 19, SPEECH_20 = 20, SPEECH_21 = 21, SPEECH_GoodDay = 22, // greets on dialogue start SPEECH_GoodEvening = 23, SPEECH_24 = 24, SPEECH_25 = 25, SPEECH_26 = 26, SPEECH_27 = 27, SPEECH_28 = 28, SPEECH_29 = 29, SPEECH_30 = 30, SPEECH_31 = 31, SPEECH_32 = 32, SPEECH_33 = 33, SPEECH_34 = 34, SPEECH_35 = 35, SPEECH_36 = 36, SPEECH_37 = 37, SPEECH_NotEnoughGold = 38, SPEECH_39 = 39, SPEECH_40 = 40, SPEECH_41 = 41, SPEECH_42 = 42, SPEECH_43 = 43, SPEECH_44 = 44, SPEECH_45 = 45, SPEECH_46 = 46, SPEECH_47 = 47, SPEECH_48 = 48, SPEECH_49 = 49, SPEECH_50 = 50, SPEECH_51 = 51, SPEECH_52 = 52, SPEECH_53 = 53, SPEECH_54 = 54, SPEECH_55 = 55, SPEECH_56 = 56, SPEECH_57 = 57, SPEECH_58 = 58, SPEECH_59 = 59, SPEECH_60 = 60, SPEECH_61 = 61, SPEECH_62 = 62, SPEECH_63 = 63, SPEECH_64 = 64, SPEECH_Yell = 65, SPEECH_66 = 66, SPEECH_67 = 67, SPEECH_68 = 68, SPEECH_69 = 69, SPEECH_70 = 70, SPEECH_CarriageReady = 71, // travelling by carriage SPEECH_SetSail = 72, // travelling by sea SPEECH_73 = 73, SPEECH_74 = 74, SPEECH_75 = 75, SPEECH_76 = 76, SPEECH_77 = 77, SPEECH_78 = 78, SPEECH_79 = 79, SPEECH_80 = 80, SPEECH_81 = 81, SPEECH_82 = 82, SPEECH_83 = 83, SPEECH_84 = 84, SPEECH_85 = 85, SPEECH_86 = 86, SPEECH_87 = 87, SPEECH_88 = 88, SPEECH_89 = 89, SPEECH_90 = 90, SPEECH_91 = 91, SPEECH_92 = 92, SPEECH_93 = 93, SPEECH_94 = 94, SPEECH_95 = 95, SPEECH_96 = 96, SPEECH_97 = 97, SPEECH_98 = 98, SPEECH_99 = 99, SPEECH_100 = 100, SPEECH_101 = 101, SPEECH_PickMe = 102, SPEECH_103 = 103, SPEECH_104 = 104, SPEECH_105 = 105, SPEECH_106 = 106, SPEECH_107 = 107, SPEECH_108 = 108, SPEECH_109 = 109, SPEECH_110 = 110, }; /* 339 */ enum CHARACTER_RACE { CHARACTER_RACE_HUMAN = 0, CHARACTER_RACE_ELF = 1, CHARACTER_RACE_GOBLIN = 2, CHARACTER_RACE_DWARF = 3, }; enum CHARACTER_ATTRIBUTE { CHARACTER_MIGHT = 0x0, CHARACTER_INTELLIGANCE = 0x1, CHARACTER_WILLPOWER = 0x2, CHARACTER_ENDURANCE = 0x3, CHARACTER_ACCURACY = 0x4, CHARACTER_SPEED = 0x5, CHARACTER_LUCK = 0x6, }; /* 332 */ enum CHARACTER_ATTRIBUTE_TYPE { CHARACTER_ATTRIBUTE_STRENGTH = 0x0, CHARACTER_ATTRIBUTE_INTELLIGENCE = 0x1, CHARACTER_ATTRIBUTE_WILLPOWER = 0x2, CHARACTER_ATTRIBUTE_ENDURANCE = 0x3, CHARACTER_ATTRIBUTE_ACCURACY = 0x4, CHARACTER_ATTRIBUTE_SPEED = 0x5, CHARACTER_ATTRIBUTE_LUCK = 0x6, CHARACTER_ATTRIBUTE_HEALTH = 0x7, CHARACTER_ATTRIBUTE_MANA = 0x8, CHARACTER_ATTRIBUTE_AC_BONUS = 0x9, CHARACTER_ATTRIBUTE_RESIST_FIRE = 0xA, CHARACTER_ATTRIBUTE_RESIST_AIR = 0xB, CHARACTER_ATTRIBUTE_RESIST_WATER = 0xC, CHARACTER_ATTRIBUTE_RESIST_EARTH = 0xD, CHARACTER_ATTRIBUTE_RESIST_MIND = 0xE, CHARACTER_ATTRIBUTE_RESIST_BODY = 0xF, CHARACTER_ATTRIBUTE_LEVEL = 0x18, CHARACTER_ATTRIBUTE_ATTACK = 0x19, CHARACTER_ATTRIBUTE_MELEE_DMG_BONUS = 0x1A, CHARACTER_ATTRIBUTE_MELEE_DMG_MIN = 0x1B, CHARACTER_ATTRIBUTE_MELEE_DMG_MAX = 0x1C, CHARACTER_ATTRIBUTE_RANGED_ATTACK = 0x1D, CHARACTER_ATTRIBUTE_RANGED_DAMAGE_BONUS = 0x1E, CHARACTER_ATTRIBUTE_RANGED_DAMAGE_MIN = 0x1F, CHARACTER_ATTRIBUTE_RANGED_DAMAGE_MAX = 0x20, }; /* 328 */ enum PLAYER_SKILL_TYPE: unsigned __int8 { PLAYER_SKILL_STAFF = 0, PLAYER_SKILL_SWORD = 1, PLAYER_SKILL_DAGGER = 2, PLAYER_SKILL_AXE = 3, PLAYER_SKILL_SPEAR = 4, PLAYER_SKILL_BOW = 5, PLAYER_SKILL_MACE = 6, PLAYER_SKILL_BLASTER = 7, PLAYER_SKILL_SHIELD = 8, PLAYER_SKILL_LEATHER = 9, PLAYER_SKILL_CHAIN = 10, PLAYER_SKILL_PLATE = 11, PLAYER_SKILL_FIRE = 12, PLAYER_SKILL_AIR = 13, PLAYER_SKILL_WATER = 14, PLAYER_SKILL_EARTH = 15, PLAYER_SKILL_SPIRIT = 16, PLAYER_SKILL_MIND = 17, PLAYER_SKILL_BODY = 18, PLAYER_SKILL_LIGHT = 19, PLAYER_SKILL_DARK = 20, PLAYER_SKILL_ITEM_ID = 21, PLAYER_SKILL_MERCHANT = 22, PLAYER_SKILL_REPAIR = 23, PLAYER_SKILL_BODYBUILDING = 24, PLAYER_SKILL_MEDITATION = 25, PLAYER_SKILL_PERCEPTION = 26, PLAYER_SKILL_DIPLOMACY = 27, PLAYER_SKILL_TIEVERY = 28, PLAYER_SKILL_TRAP_DISARM = 29, PLAYER_SKILL_DODGE = 30, PLAYER_SKILL_UNARMED = 31, PLAYER_SKILL_MONSTER_ID = 32, PLAYER_SKILL_ARMSMASTER = 33, PLAYER_SKILL_STEALING = 34, PLAYER_SKILL_ALCHEMY = 35, PLAYER_SKILL_LEARNING = 36, PLAYER_SKILL_CLUB = 37, PLAYER_SKILL_MISC = 38, PLAYER_SKILL_INVALID = -1 }; /* 329 */ enum PLAYER_CLASS_TYPE: unsigned __int8 { PLAYER_CLASS_KNIGHT = 0, PLAYER_CLASS_CHEVALIER = 1, PLAYER_CLASS_CHAMPION = 2, PLAYER_CLASS_BLACK_KNIGHT = 3, PLAYER_CLASS_THEIF = 4, PLAYER_CLASS_ROGUE = 5, PLAYER_CLASS_SPY = 6, PLAYER_CLASS_ASSASSIN = 7, PLAYER_CLASS_MONK = 8, PLAYER_CLASS_INITIATE = 9, PLAYER_CLASS_MASTER = 10, PLAYER_CLASS_NINJA = 11, PLAYER_CLASS_PALADIN = 12, PLAYER_CLASS_CRUSADER = 13, PLAYER_CLASS_HERO = 14, PLAYER_CLASS_VILLIAN = 15, PLAYER_CLASS_ARCHER = 16, PLAYER_CLASS_WARRIOR_MAGE = 17, PLAYER_CLASS_MASTER_ARCHER = 18, PLAYER_CLASS_SNIPER = 19, PLAYER_CLASS_RANGER = 20, PLAYER_CLASS_HUNTER = 21, PLAYER_CLASS_RANGER_LORD = 22, PLAYER_CLASS_BOUNTY_HUNTER = 23, PLAYER_CLASS_CLERIC = 24, PLAYER_CLASS_PRIEST = 25, PLAYER_CLASS_PRIEST_OF_SUN = 26, PLAYER_CLASS_PRIEST_OF_MOON = 27, PLAYER_CLASS_DRUID = 28, PLAYER_CLASS_GREAT_DRUID = 29, PLAYER_CLASS_ARCH_DRUID = 30, PLAYER_CLASS_WARLOCK = 31, PLAYER_CLASS_SORCERER = 32, PLAYER_CLASS_WIZARD = 33, PLAYER_CLASS_ARCHMAGE = 34, PLAYER_CLASS_LICH = 35 }; #pragma pack(push, 1) struct LloydBeacon { unsigned __int64 uBeaconTime; int field_8; int field_C; int field_10; int field_14; int field_18; }; #pragma pack(pop) #pragma pack(push, 1) struct PlayerSpellbookChapter { char bIsSpellAvailable[11]; }; #pragma pack(pop) #pragma pack(push, 1) struct PlayerSpells { union { struct { PlayerSpellbookChapter pFireSpellbook; PlayerSpellbookChapter pAirSpellbook; PlayerSpellbookChapter pWaterSpellbook; PlayerSpellbookChapter pEarthSpellbook; PlayerSpellbookChapter pSpiritSpellbook; PlayerSpellbookChapter pMindSpellbook; PlayerSpellbookChapter pBodySpellbook; PlayerSpellbookChapter pLightSpellbook; PlayerSpellbookChapter pDarkSpellbook; char _pad_0; }; struct { PlayerSpellbookChapter pChapters[9]; char _pad_1; }; struct { char bHaveSpell[99]; char _pad_1; }; }; }; #pragma pack(pop) #pragma pack(push, 1) union PlayerEquipment { union { struct { unsigned int uShield; unsigned int uMainHand; unsigned int uBow; unsigned int uArmor; unsigned int uHelm; unsigned int uBelt; unsigned int uCloak; unsigned int uGlove; unsigned int uBoot; unsigned int uAmulet; unsigned int uRings[6]; //unsigned int field_2C; //unsigned int field_30; //unsigned int field_34; //unsigned int field_38; //unsigned int field_3C; }; unsigned int pIndices[16]; }; }; #pragma pack(pop) enum CHARACTER_EXPRESSION_ID: unsigned __int16 { CHARACTER_EXPRESSION_INVALID = 0, CHARACTER_EXPRESSION_1 = 1, CHARACTER_EXPRESSION_CURSED = 2, CHARACTER_EXPRESSION_WEAK = 3, CHARACTER_EXPRESSION_SLEEP = 4, CHARACTER_EXPRESSION_FEAR = 5, CHARACTER_EXPRESSION_DRUNK = 6, CHARACTER_EXPRESSION_INSANE = 7, CHARACTER_EXPRESSION_POISONED = 8, CHARACTER_EXPRESSION_DISEASED = 9, CHARACTER_EXPRESSION_PARALYZED = 10, CHARACTER_EXPRESSION_UNCONCIOUS = 11, CHARACTER_EXPRESSION_PERTIFIED = 12, CHARACTER_EXPRESSION_13 = 13, CHARACTER_EXPRESSION_14 = 14, CHARACTER_EXPRESSION_15 = 15, CHARACTER_EXPRESSION_16 = 16, CHARACTER_EXPRESSION_17 = 17, CHARACTER_EXPRESSION_18 = 18, CHARACTER_EXPRESSION_19 = 19, CHARACTER_EXPRESSION_20 = 20, CHARACTER_EXPRESSION_21 = 21, CHARACTER_EXPRESSION_22 = 22, CHARACTER_EXPRESSION_23 = 23, CHARACTER_EXPRESSION_24 = 24, CHARACTER_EXPRESSION_25 = 25, CHARACTER_EXPRESSION_26 = 26, CHARACTER_EXPRESSION_27 = 27, CHARACTER_EXPRESSION_28 = 28, CHARACTER_EXPRESSION_29 = 29, CHARACTER_EXPRESSION_30 = 30, CHARACTER_EXPRESSION_31 = 31, CHARACTER_EXPRESSION_32 = 32, CHARACTER_EXPRESSION_33 = 33, CHARACTER_EXPRESSION_34 = 34, CHARACTER_EXPRESSION_35 = 35, CHARACTER_EXPRESSION_36 = 36, CHARACTER_EXPRESSION_37 = 37, CHARACTER_EXPRESSION_38 = 38, CHARACTER_EXPRESSION_39 = 39, // ? CHARACTER_EXPRESSION_SCARED = 46, // like falling CHARACTER_EXPRESSION_54 = 54, CHARACTER_EXPRESSION_55 = 55, CHARACTER_EXPRESSION_56 = 56, CHARACTER_EXPRESSION_57 = 57, CHARACTER_EXPRESSION_58 = 58, // ? CHARACTER_EXPRESSION_DEAD = 98, CHARACTER_EXPRESSION_ERADICATED = 99, }; enum PLAYER_SEX: unsigned __int8 { SEX_MALE = 0, SEX_FEMALE = 1 }; #pragma pack(push, 1) struct Player { enum Condition: unsigned __int32 { Condition_Cursed = 0, Condition_Weak = 1, Condition_Sleep = 2, Condition_Fear = 3, Condition_Drunk = 4, Condition_Insane = 5, Condition_Poison1 = 6, Condition_Disease1 = 7, Condition_Poison2 = 8, Condition_Disease2 = 9, Condition_Poison3 = 10, Condition_Disease3 = 11, Condition_Paralyzed = 12, Condition_Unconcious = 13, Condition_Dead = 14, Condition_Pertified = 15, Condition_Eradicated = 16, Condition_Zombie = 17, Condition_Good = 18 }; Player(); void SetVariable(enum VariableType var, signed int a3); void AddVariable(enum VariableType var, signed int val); bool SubtractVariable(enum VariableType VarNum, signed int pValue); bool CompareVariable(enum VariableType VarNum, signed int pValue); void UseItem_DrinkPotion_etc(signed int a2, int a3); bool AddItem(struct ItemGen *pItem); int GetBaseStrength(); int GetBaseIntelligence(); int GetBaseWillpower(); int GetBaseEndurance(); int GetBaseAccuracy(); int GetBaseSpeed(); int GetBaseLuck(); int GetBaseLevel(); int GetActualLevel(); int GetActualMight(); int GetActualIntelligence(); int GetActualWillpower(); int GetActualEndurance(); int GetActualAccuracy(); int GetActualSpeed(); int GetActualLuck(); int GetActualAttack(int a2); int GetMeleeDamageMinimal(); int GetMeleeDamageMaximal(); int CalculateMeleeDamageTo(int a2, int a3, unsigned int uTargetActorID); int GetRangedAttack(); int GetRangedDamageMin(); int GetRangedDamageMax(); bool CalculateRangedDamageTo(int a2); char *GetMeleeDamageString(); char *GetRangedDamageString(); bool CanTrainToNextLevel(); unsigned int GetExperienceDisplayColor(); int CalculateIncommingDamage(int resistance, signed int type); ITEM_EQUIP_TYPE GetEquippedItemEquipType(ITEM_EQUIP_TYPE uEquipSlot); PLAYER_SKILL_TYPE GetEquippedItemSkillType(ITEM_EQUIP_TYPE uEquipSlot); bool IsUnarmed(); bool HasItemEquipped(ITEM_EQUIP_TYPE uEquipIndex); bool HasEnchantedItemEquipped(int uEnchantment); bool WearsItem(int a1, signed int a2); bool StealFromShop(struct ItemGen *a2, int a3, int a4, int a5, int *a6); int StealFromActor(unsigned int uActorID, int _steal_perm, int reputation); void Heal(int amount); int ReceiveDamage(signed int type, int resistance); int _48DCF6(int a2, struct Actor *pActor); unsigned int GetSpellSchool(unsigned int uSpellID); int GetAttackRecoveryTime(bool bRangedAttack); int GetMaxHealth(); int GetMaxMana(); int GetBaseAC(); int GetActualAC(); unsigned int GetBaseAge(); unsigned int GetActualAge(); int GetBaseResistance(enum CHARACTER_ATTRIBUTE_TYPE a2); int GetActualResistance(enum CHARACTER_ATTRIBUTE_TYPE a2); void SetRecoveryTime(signed int sRecoveryTime); void RandomizeName(); unsigned int GetMajorConditionIdx(); int _48EA1B_get_static_effect(int a2); int _48EA46_calc_special_bonus_by_items(int a2); int GetItemsBonus(enum CHARACTER_ATTRIBUTE_TYPE attr, int a3); int GetMagicalBonus(enum CHARACTER_ATTRIBUTE_TYPE a2); int GetActualSkillLevel(PLAYER_SKILL_TYPE uSkillType); int GetSkillBonus(enum CHARACTER_ATTRIBUTE_TYPE a2); enum CHARACTER_RACE GetRace(); PLAYER_SEX GetSexByVoice(); void SetInitialStats(); int SetSexByVoice(); void Reset(PLAYER_CLASS_TYPE classType); PLAYER_SKILL_TYPE GetSkillIdxByOrder(signed int order); void DecreaseAttribute(int eAttribute); int IncreaseAttribute(int eAttribute); void Player::Zero(); unsigned int GetStatColor(int uStat); bool DiscardConditionIfLastsLongerThan(unsigned int uCondition, unsigned __int64 uTime); int SelectPhrasesTransaction(ItemGen *pItem, int building_type, int BuildID_2Events, int a5); int GetBodybuilding(); int GetMeditation(); int CanIdentify(ItemGen *pItem); int CanRepair(ItemGen *); int GetMerchant(); int GetPerception(); int GetDisarmTrap(); char GetLearningPercent(); bool CanFitItem(unsigned int uSlot, unsigned int uItemID); unsigned int FindFreeInventorySlot(); int CreateItemInInventory(unsigned int uSlot, unsigned int uItemID); int HasSkill(unsigned int uSkillType); int WearItem(unsigned int uItemID); int AddItem(int uSlot, unsigned int uItemID); int AddItem2(int uSlot, ItemGen *Src); int CreateItemInInventory2(unsigned int uSlot, ItemGen *Src); int PutItemArInventoryIndex(ItemGen *item, int item_id, int uSlot); void RemoveItemAtInventoryIndex(unsigned int uSlot); bool CanAct(); bool CanSteal(); bool CanEquip_RaceAndAlignmentCheck(unsigned int uItemID); int SetCondition(unsigned int uConditionIdx, int a3); int _49327B(unsigned int uClass, int a3); void PlaySound(PlayerSpeech speech, int a3); void PlayEmotion(CHARACTER_EXPRESSION_ID expression, int a3); void ItemsEnchant(int enchant_count); unsigned int GetItemIDAtInventoryIndex(int *a2); int _4B6FF9(); int _4B824B(float a2); int _4B8265(int a2, float a3); int _4B8233(int a2, float a3); int _4B8213(int a2, float a3); int GetPriceRepair(int a2, float a3); int GetPriceIdentification(float a2); int GetBuyingPrice(unsigned int uRealValue, float price_multiplier); int GetPriceSell(int uRealValue, float price_multiplier); int _4B807C(float a2); int _4B8040_condition_time(unsigned int uCondition); bool _43EEF3(); void SalesProcess(unsigned int inventory_idnx, int item_index, int _2devent_idx);//0x4BE2DD bool Recover(signed int a2); bool CanCastSpell(unsigned int uRequiredMana); inline bool Weak() {return pConditions[Condition::Condition_Weak] != 0;} inline bool Dead() {return pConditions[Condition::Condition_Dead] != 0;} inline bool Eradicated() {return pConditions[Condition::Condition_Eradicated] != 0;} inline bool Zombie() {return pConditions[Condition::Condition_Zombie] != 0;} inline bool Cursed() {return pConditions[Condition::Condition_Cursed] != 0;} inline bool Pertified() {return pConditions[Condition::Condition_Pertified] != 0;} inline void SetCursed(bool state) {pConditions[Condition::Condition_Cursed] = state;} inline void SetWeak(bool state) {pConditions[Condition::Condition_Weak] = state;} inline void SetAsleep(bool state) {pConditions[Condition::Condition_Sleep] = state;} inline void SetAfraid(bool state) {pConditions[Condition::Condition_Fear] = state;} inline void SetDrunk(bool state) {pConditions[Condition::Condition_Drunk] = state;} inline void SetInsane(bool state) {pConditions[Condition::Condition_Insane] = state;} inline void SetPoison1(bool state) {pConditions[Condition::Condition_Poison1] = state;} inline void SetDisease1(bool state) {pConditions[Condition::Condition_Disease1] = state;} inline void SetPoison2(bool state) {pConditions[Condition::Condition_Poison2] = state;} inline void SetDisease2(bool state) {pConditions[Condition::Condition_Disease2] = state;} inline void SetPoison3(bool state) {pConditions[Condition::Condition_Poison3] = state;} inline void SetDisease3(bool state) {pConditions[Condition::Condition_Disease3] = state;} inline void SetParalyzed(bool state) {pConditions[Condition::Condition_Paralyzed] = state;} inline void SetUnconcious(bool state) {pConditions[Condition::Condition_Unconcious] = state;} inline void SetDead(bool state) {pConditions[Condition::Condition_Dead] = state;} inline void SetPertified(bool state) {pConditions[Condition::Condition_Pertified] = state;} inline void SetEradicated(bool state) {pConditions[Condition::Condition_Eradicated] = state;} inline void SetZombie(bool state) {pConditions[Condition::Condition_Zombie] = state;} __int64 pConditions[20]; unsigned __int64 uExperience; char pName[16]; PLAYER_SEX uSex; PLAYER_CLASS_TYPE classType; unsigned __int8 uCurrentFace; char field_BB; unsigned __int16 uMight; unsigned __int16 uMightBonus; unsigned __int16 uIntelligence; unsigned __int16 uIntelligenceBonus; unsigned __int16 uWillpower; unsigned __int16 uWillpowerBonus; unsigned __int16 uEndurance; unsigned __int16 uEnduranceBonus; unsigned __int16 uSpeed; unsigned __int16 uSpeedBonus; unsigned __int16 uAccuracy; unsigned __int16 uAccuracyBonus; unsigned __int16 uLuck; unsigned __int16 uLuckBonus; __int16 sACModifier; unsigned __int16 uLevel; __int16 sLevelModifier; __int16 sAgeModifier; int field_E0; int field_E4; int field_E8; int field_EC; int field_F0; int field_F4; int field_F8; int field_FC; int field_100; int field_104; union { struct { unsigned __int16 skillStaff; unsigned __int16 skillSword; unsigned __int16 skillDagger; unsigned __int16 skillAxe; unsigned __int16 skillSpear; unsigned __int16 skillBow; unsigned __int16 skillMace; unsigned __int16 skillBlaster; unsigned __int16 skillShield; unsigned __int16 skillLeather; unsigned __int16 skillChain; unsigned __int16 skillPlate; unsigned __int16 skillFire; unsigned __int16 skillAir; unsigned __int16 skillWater; unsigned __int16 skillEarth; unsigned __int16 skillSpirit; unsigned __int16 skillMind; unsigned __int16 skillBody; unsigned __int16 skillLight; unsigned __int16 skillDark; unsigned __int16 skillItemId; unsigned __int16 skillMerchant; unsigned __int16 skillRepair; unsigned __int16 skillBodybuilding; unsigned __int16 skillMeditation; unsigned __int16 skillPerception; unsigned __int16 skillDiplomacy; unsigned __int16 skillThievery; unsigned __int16 skillDisarmTrap; unsigned __int16 skillDodge; unsigned __int16 skillUnarmed; unsigned __int16 skillMonsterId; unsigned __int16 skillArmsmaster; unsigned __int16 skillStealing; unsigned __int16 skillAlchemy; unsigned __int16 skillLearning; }; unsigned __int16 pActiveSkills[37]; }; unsigned char _guilds_member_bits[64]; PlayerSpells spellbook; char field__1F5[2]; // used to be [31] int pure_luck_used; int pure_speed_used; int pure_intellect_used; int pure_endurance_used; int pure_willpower_used; int pure_accuracy_used; int pure_might_used; union //214h { struct { ItemGen pInventoryItems[126]; ItemGen pEquippedItems[12]; }; ItemGen pOwnItems[138]; }; int pInventoryIndices[126]; __int16 sResFireBase; __int16 sResAirBase; __int16 sResWaterBase; __int16 sResEarthBase; __int16 field_177C; __int16 sResMagicBase; __int16 sResSpiritBase; __int16 sResMindBase; __int16 sResBodyBase; __int16 sResLightBase; __int16 sResDarkBase; __int16 sResFireBonus; __int16 sResAirBonus; __int16 sResWaterBonus; __int16 sResEarthBonus; __int16 field_1792; __int16 sResMagicBonus; __int16 sResSpiritBonus; __int16 sResMindBonus; __int16 sResBodyBonus; __int16 sResLightBonus; __int16 sResDarkBonus; SpellBuff pPlayerBuffs[24]; unsigned int uVoiceID; int uPrevVoiceID; int uPrevFace; int field_192C; int field_1930; unsigned __int16 uTimeToRecovery; char field_1936; char field_1937; unsigned int uSkillPoints; int sHealth; int sMana; unsigned int uBirthYear; PlayerEquipment pEquipment; int field_1988[49]; char field_1A4C; char field_1A4D; char lastOpenedSpellbookPage; unsigned __int8 uQuickSpell; char field_1A50[64]; char _some_attack_bonus; char field_1A91; char _melee_dmg_bonus; char field_1A93; char _ranged_atk_bonus; char field_1A95; char _ranged_dmg_bonus; char field_1A97; char uFullHealthBonus; char _health_related; char uFullManaBonus; char _mana_related; CHARACTER_EXPRESSION_ID expression; unsigned __int16 uExpressionTimePassed; unsigned __int16 uExpressionTimeLength; __int16 field_1AA2; int _expression21_animtime; int _expression21_frameset; LloydBeacon pInstalledBeacons[5]; char uNumDivineInterventionCastsThisDay; char uNumArmageddonCasts; char uNumFireSpikeCasts; char field_1B3B; }; #pragma pack(pop)