view Party.h @ 212:9f349addbe00

Слияние
author Ritor1
date Sat, 16 Feb 2013 22:14:04 +0600
parents cca78efb377e
children 1f0af5cac2dd
line wrap: on
line source

#pragma once
#include "Player.h"
#include "NPC.h"
#include "Spells.h"
#include "VectorTypes.h"










/*  355 */
enum PARTY_FLAGS_1: __int32
{
  PARTY_FLAGS_1_LANDING = 0x100,
};
enum PARTY_FLAGS_2: __int32
{
  PARTY_FLAGS_2_RUNNING = 0x2,
};

/*  347 */
enum PARTY_BUFF_INDEX
{
  PARTY_BUFF_RESIST_AIR = 0x0,
  PARTY_BUFF_RESIST_BODY = 0x1,
  PARTY_BUFF_DAY_OF_GODS = 0x2,
  PARTY_BUFF_DETECT_LIFE = 0x3,
  PARTY_BUFF_RESIST_EARTH = 0x4,
  PARTY_BUFF_FEATHER_FALL = 0x5,
  PARTY_BUFF_RESIST_FIRE = 0x6,
  PARTY_BUFF_FLY = 0x7,
  PARTY_BUFF_HASTE = 0x8,
  PARTY_BUFF_HEROISM = 0x9,
  PARTY_BUFF_IMMOLATION = 0xA,
  PARTY_BUFF_INVISIBILITY = 0xB,
  PARTY_BUFF_RESIST_MIND = 0xC,
  PARTY_BUFF_PROTECTION_FROM_MAGIC = 0xD,
  PARTY_BUFF_SHIELD = 0xE,
  PARTY_BUFF_STONE_SKIN = 0xF,
  PARTY_BUFF_TORCHLIGHT = 0x10,
  PARTY_BUFF_RESIST_WATER = 0x11,
  PARTY_BUFF_WATER_WALK = 0x12,
  PARTY_BUFF_WIZARD_EYE = 0x13,
};



/*  300 */
enum PartyAction: unsigned __int32
{
  PARTY_INVALID = 0,
  PARTY_TurnLeft = 0x1,
  PARTY_TurnRight = 0x2,
  PARTY_StrafeLeft = 0x3,
  PARTY_StrafeRight = 0x4,
  PARTY_WalkForward = 0x5,
  PARTY_WalkBackward = 0x6,
  PARTY_LookUp = 0x7,
  PARTY_LookDown = 0x8,
  PARTY_CenterView = 0x9,
  PARTY_unkA = 0xA,
  PARTY_unkB = 0xB,
  PARTY_Jump = 0xC,
  PARTY_FlyUp = 0xD,
  PARTY_FlyDown = 0xE,
  PARTY_Land = 0xF,
  PARTY_RunForward = 0x10,
  PARTY_RunBackward = 0x11,
  PARTY_FastTurnLeft = 0x12,
  PARTY_FastTurnRight = 0x13,

  PARTY_dword = 0xFFFFFFFF
};



/*  135 */
#pragma pack(push, 1)
struct ActionQueue
{
  void Add(PartyAction action);
  PartyAction Next();

  unsigned int uNumActions;
  PartyAction  pActions[30];
};
#pragma pack(pop)










/*  208 */
#pragma pack(push, 1)
struct Party_stru0
{
  int field_0[20];
  int field_50[170];
  int _shop_ban_times[82];
  int field_440[44];
  int field_4F0[38];
  char field_588[2];
  char pIsArtifactFound[238];
};
#pragma pack(pop)

/*  207 */
#pragma pack(push, 1)
struct Party
{
  Party():
    uTimePlayed(0)
  {
    uCurrentYear = 0;
    uCurrentMonth = 0;
    uCurrentMonthWeek = 0;
    uDaysPlayed = 0;
    uCurrentHour = 0;
    uCurrentMinute = 0;
    uCurrentTimeSecond = 0;

    field_6FC = 0;
    field_764 = 0;

    vPosition.y = 0;
    vPosition.z = 0;
    vPosition.x = 0;
    uFallStartY = 0;
    sRotationY = 0;
    sRotationX = 0;
    uFallSpeed = 0;
    field_28 = 0;
    uDefaultPartyHeight = 120;
    field_14 = 37;
    y_rotation_granularity = 25;
    uWalkSpeed = 384;
    y_rotation_speed = 90;
    field_24 = 5;
    field_6FC = 0;
    field_708 = 15;
    field_0 = 25;
  }

  void UpdatePlayersAndHirelingsEmotions();
  void RestAndHeal();
  unsigned int GetPartyFame();
  void CreateDefaultParty(char bGiveItems);
  int Reset();
  void ResetPosMiscAndSpellBuffs();
  bool HasItem(unsigned int uItemID);
  void SetHoldingItem(ItemGen *pItem);
  int GetNextActiveCharacter();
  bool _497FC5_check_party_perception_against_level();
  bool AddItem(ItemGen *pItem);
  void Yell();
  
  static void SetGold(unsigned int uNumGold);
  static void TakeGold(unsigned int uNumGold);
  static __int16 SetFood(unsigned int uNumFood);
  static void TakeFood(unsigned int uNumFood);
  static __int16 GiveFood(unsigned int _this);

  inline bool WizardEyeActive()      {return pPartyBuffs[PARTY_BUFF_WIZARD_EYE].uExpireTime > 0;}
  inline int  WizardEyeSkillLevel()  {return pPartyBuffs[PARTY_BUFF_WIZARD_EYE].uSkill;}
  inline bool TorchlightActive()     {return pPartyBuffs[PARTY_BUFF_TORCHLIGHT].uExpireTime > 0;}
  inline bool FlyActive()            {return pPartyBuffs[PARTY_BUFF_FLY].uExpireTime > 0;}
  inline bool WaterWalkActive()      {return pPartyBuffs[PARTY_BUFF_WATER_WALK].uExpireTime > 0;}
  inline bool ImmolationActive()     {return pPartyBuffs[PARTY_BUFF_IMMOLATION].uExpireTime > 0;}
  inline bool ImmolationSkillLevel() {return pPartyBuffs[PARTY_BUFF_IMMOLATION].uSkill;}
  inline bool FeatherFallActive()    {return pPartyBuffs[PARTY_BUFF_FEATHER_FALL].uExpireTime > 0;}
  inline bool Invisible()            {return pPartyBuffs[PARTY_BUFF_INVISIBILITY].uExpireTime > 0;}


  int field_0;
  unsigned int uPartyHeight;
  unsigned int uDefaultPartyHeight;
  int sEyelevel;
  unsigned int uDefaultEyelevel;
  int field_14;
  int y_rotation_granularity;
  unsigned int uWalkSpeed;
  int y_rotation_speed;  // deg/s
  int field_24;
  int field_28;
  unsigned __int64 uTimePlayed;
  __int64 uLastRegenerationTime;
  Party_stru0 field_3C;
  Vec3_int_ vPosition;
  int sRotationY;
  int sRotationX;
  Vec3_int_ vPrevPosition;
  int sPrevRotationY;
  int sPrevRotationX;
  int sPrevEyelevel;
  int field_6E0;
  int field_6E4;
  int uFallSpeed;
  int field_6EC;
  int field_6F0;
  int field_6F4_packedid;
  int field_6F8;
  int field_6FC;
  int uFallStartY;
  unsigned int bFlying;
  char field_708;
  char field_709;
  char field_70A;
  char field_70B;
  unsigned int uCurrentYear;
  unsigned int uCurrentMonth;
  unsigned int uCurrentMonthWeek;
  unsigned int uDaysPlayed;
  unsigned int uCurrentHour;
  unsigned int uCurrentMinute;
  unsigned int uCurrentTimeSecond;
  unsigned int uNumFoodRations;
  int field_72C;
  int field_730;
  unsigned int uNumGold;
  unsigned int uNumGoldInBank;
  unsigned int uNumDeaths;
  int field_740;
  int uNumPrisonTerms;
  unsigned int uNumBountiesCollected;
  int field_74C;
  __int16 field_750[5];
  __int16 field_75A[5];
  char field_764; // num hours resting or some sort of.
  unsigned __int8 _award_bits[64];
  unsigned __int8 pArcomageWins[16];
  char field_7B5_in_arena_quest;
  char uNumArenaPageWins;
  char uNumArenaSquireWins;
  char uNumArenaKnightWins;
  char uNumArenaLordWins;
  char field_7BA[12];
  char pArtifactsFound[56];
  unsigned char _autonote_bits[12];
  char field_80A[74];
  char field_854[32];
  int field_874;
  int field_878;
  unsigned int bTurnBasedModeOn;
  int field_880;
  int uFlags2;
  unsigned int uAlignment;
  SpellBuff pPartyBuffs[20];
  Player pPlayers[4];
  NPCData pHirelings[2];
  ItemGen pPickedItem;
  unsigned int uFlags;
  int field_777C[1000];
  int field_871C[1000];
  int field_96BC[1000];
  int field_A65C[1000];
  int field_B5FC[1000];
  int field_C59C[1000];
  int field_D53C[1000];
  int field_E4DC[300];
  int field_E98C[13];
  int dword_E9C0;
  int dword_E9C4;
  char field_E9C8[5000];
  char field_FD50[5000];
  char field_110D8[5000];
  char field_12460[5000];
  char field_137E8[5000];
  char field_14B70[5000];
  char field_15EF8[250];
  char field_15FF2[130];
  char pHireling1Name[100];
  char pHireling2Name[100];
  int field_1613C;
  int field_16140;
  int pTurnBasedPlayerRecoveryTimes[4];
  char field_16154[212];
  int uFine;
  float flt_TorchlightColorR;
  float flt_TorchlightColorG;
  float flt_TorchlightColorB;
};
#pragma pack(pop)



extern Party *pParty; // idb


extern struct ActionQueue *pPartyActionQueue;