Mercurial > mm7
view Player.h @ 1523:53265d238d94
interaction_distance_limit for 3DModel in DrawStatusText
author | Ritor1 |
---|---|
date | Thu, 05 Sep 2013 13:12:30 +0600 |
parents | ff2118028c71 |
children | fed56133bf8a |
line wrap: on
line source
#pragma once #include "Items.h" #include "Spells.h" #include "Conditions.h" #define PLAYER_BUFF_BLESS 1 #define PLAYER_BUFF_FATE 4 #define PLAYER_BUFF_HAMMERHANDS 6 #define PLAYER_BUFF_7 7 #define PLAYER_BUFF_8 8 #define PLAYER_BUFF_PAIN_REFLECTION 10 #define PLAYER_BUFF_PRESERVATION 11 #define PLAYER_BUFF_REGENERATION 12 #define PLAYER_BUFF_13 13 #define PLAYER_BUFF_14 14 #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, }; /* 332 */ enum CHARACTER_ATTRIBUTE_TYPE { CHARACTER_ATTRIBUTE_STRENGTH = 0, CHARACTER_ATTRIBUTE_INTELLIGENCE = 1, CHARACTER_ATTRIBUTE_WILLPOWER = 2, CHARACTER_ATTRIBUTE_ENDURANCE = 3, CHARACTER_ATTRIBUTE_ACCURACY = 4, CHARACTER_ATTRIBUTE_SPEED = 5, CHARACTER_ATTRIBUTE_LUCK = 6, CHARACTER_ATTRIBUTE_HEALTH = 7, CHARACTER_ATTRIBUTE_MANA = 8, CHARACTER_ATTRIBUTE_AC_BONUS = 9, CHARACTER_ATTRIBUTE_RESIST_FIRE = 10, CHARACTER_ATTRIBUTE_RESIST_AIR = 11, CHARACTER_ATTRIBUTE_RESIST_WATER = 12, CHARACTER_ATTRIBUTE_RESIST_EARTH = 13, CHARACTER_ATTRIBUTE_RESIST_MIND = 14, CHARACTER_ATTRIBUTE_RESIST_BODY = 15, CHARACTER_ATTRIBUTE_SKILL_ALCHEMY = 16, CHARACTER_ATTRIBUTE_SKILL_STEALING = 17, CHARACTER_ATTRIBUTE_SKILL_TRAP_DISARM = 18, CHARACTER_ATTRIBUTE_SKILL_ITEM_ID = 19, CHARACTER_ATTRIBUTE_SKILL_MONSTER_ID = 20, CHARACTER_ATTRIBUTE_SKILL_ARMSMASTER = 21, CHARACTER_ATTRIBUTE_SKILL_DODGE = 22, CHARACTER_ATTRIBUTE_SKILL_UNARMED = 23, CHARACTER_ATTRIBUTE_LEVEL = 24, CHARACTER_ATTRIBUTE_ATTACK = 25, CHARACTER_ATTRIBUTE_MELEE_DMG_BONUS = 26, CHARACTER_ATTRIBUTE_MELEE_DMG_MIN = 27, CHARACTER_ATTRIBUTE_MELEE_DMG_MAX = 28, CHARACTER_ATTRIBUTE_RANGED_ATTACK = 29, CHARACTER_ATTRIBUTE_RANGED_DMG_BONUS = 30, CHARACTER_ATTRIBUTE_RANGED_DMG_MIN = 31, CHARACTER_ATTRIBUTE_RANGED_DMG_MAX = 32, CHARACTER_ATTRIBUTE_RESIST_SPIRIT = 33, CHARACTER_ATTRIBUTE_SKILL_FIRE = 34, CHARACTER_ATTRIBUTE_SKILL_AIR = 35, CHARACTER_ATTRIBUTE_SKILL_WATER = 36, CHARACTER_ATTRIBUTE_SKILL_EARTH = 37, CHARACTER_ATTRIBUTE_SKILL_SPIRIT = 38, CHARACTER_ATTRIBUTE_SKILL_MIND = 39, CHARACTER_ATTRIBUTE_SKILL_BODY = 40, CHARACTER_ATTRIBUTE_SKILL_LIGHT = 41, CHARACTER_ATTRIBUTE_SKILL_DARK = 42, CHARACTER_ATTRIBUTE_SKILL_MEDITATION = 43, CHARACTER_ATTRIBUTE_SKILL_BOW = 44, CHARACTER_ATTRIBUTE_SKILL_SHIELD = 45, CHARACTER_ATTRIBUTE_SKILL_LEARNING = 46 }; /* 328 */ enum PLAYER_SKILL_TYPE: signed __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 PartyPos_X; int PartyPos_Y; int PartyPos_Z; __int16 PartyRot_X; __int16 PartyRot_Y; int SaveFileID; }; #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_DMGRECVD_MINOR = 34, CHARACTER_EXPRESSION_DMGRECVD_MODERATE = 35, CHARACTER_EXPRESSION_DMGRECVD_MAJOR = 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_FALLING = 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 { static const unsigned int INVETORYSLOTSWIDTH = 14; static const unsigned int INVETORYSLOTSHEIGHT = 9; 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 GetActualAttribute(CHARACTER_ATTRIBUTE_TYPE attrId); 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(DAMAGE_TYPE dmg_type, int amount); 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 item_id, ITEM_EQUIP_TYPE equip_type); 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 amount, DAMAGE_TYPE dmg_type); 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 GetParameterBonus(int player_parameter); 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(); void SetSexByVoice(); void Reset(PLAYER_CLASS_TYPE classType); PLAYER_SKILL_TYPE GetSkillIdxByOrder(signed int order); void DecreaseAttribute(int eAttribute); void 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); int FindFreeInventoryListSlot(); int CreateItemInInventory(unsigned int uSlot, unsigned int uItemID); int HasSkill(unsigned int uSkillType); void WearItem(unsigned int uItemID); int AddItem(int uSlot, unsigned int uItemID); int AddItem2(int uSlot, ItemGen *Src); int CreateItemInInventory2(unsigned int index, ItemGen *Src); void PutItemArInventoryIndex(int uItemID, int itemListPos, int uSlot); void RemoveItemAtInventoryIndex(unsigned int uSlot); bool CanAct(); bool CanSteal(); bool CanEquip_RaceAndAlignmentCheck(unsigned int uItemID); void SetCondition(unsigned int uConditionIdx, int a3); bool ProfessionOrGuildFlagsCorrect(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); bool IsPlayerHealableByTemple(); int GetBaseIdentifyPrice(float a2); int GetBaseRepairPrice(int a2, float a3); int GetBaseBuyingPrice(int a2, float a3); int GetBaseSellingPrice(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 GetTempleHealCostModifier(float a2); int GetConditionDayOfWeek(unsigned int uCondition); bool NothingOrJustBlastersEquipped(); void SalesProcess(unsigned int inventory_idnx, int item_index, int _2devent_idx);//0x4BE2DD bool Recover(signed int a2); bool CanCastSpell(unsigned int uRequiredMana); void PlaySoundBasedOnCondition(int currPlayerId); void DrawPlayerBuffAnimBasedOnCondition(int currPlayerId); void EquipBody(ITEM_EQUIP_TYPE uEquipType); bool IsWeak(); bool IsDead(); bool IsEradicated(); bool IsZombie(); bool IsCursed(); bool IsPertified(); bool IsUnconcious(); bool IsAsleep(); bool IsParalyzed(); void SetCursed(bool state); void SetWeak(bool state); void SetAsleep(bool state); void SetAfraid(bool state); void SetDrunk(bool state); void SetInsane(bool state); void SetPoison1(bool state); void SetDisease1(bool state); void SetPoison2(bool state); void SetDisease2(bool state); void SetPoison3(bool state); void SetDisease3(bool state); void SetParalyzed(bool state); void SetUnconcious(bool state); void SetDead(bool state); void SetPertified(bool state); void SetEradicated(bool state); void SetZombie(bool state); void SetCondWeakWithBlockCheck (int blockable); void SetCondInsaneWithBlockCheck (int blockable); void SetCondDeadWithBlockCheck (int blockable); inline bool IsRaceHuman() {return GetRace() == CHARACTER_RACE_HUMAN;} inline bool IsRaceDwarf() {return GetRace() == CHARACTER_RACE_DWARF;} inline bool IsRaceElf() {return GetRace() == CHARACTER_RACE_ELF;} inline bool IsRaceGoblin() {return GetRace() == CHARACTER_RACE_GOBLIN;} inline bool IsMale() { return GetSexByVoice() == SEX_MALE;} inline bool IsFemale() { return !IsMale();} __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 _achieved_awards_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 pInventoryItemList[126]; ItemGen pEquippedItems[12]; }; ItemGen pOwnItems[138]; }; int pInventoryMatrix[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)