698 lines
No EOL
16 KiB
C++
698 lines
No EOL
16 KiB
C++
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
|
// Copyright (C) 2010 Winch Gate Property Limited
|
|
//
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU Affero General Public License as
|
|
// published by the Free Software Foundation, either version 3 of the
|
|
// License, or (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU Affero General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU Affero General Public License
|
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
#ifndef CHARACTER_H
|
|
#define CHARACTER_H
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// includes
|
|
//-----------------------------------------------------------------------------
|
|
|
|
#include "nel/misc/sstring.h"
|
|
#include "game_share/persistent_data.h"
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Data types
|
|
//-----------------------------------------------------------------------------
|
|
|
|
typedef uint32 TAIAlias;
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Persistent data for CStatsScanMissionHistory
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class CStatsScanMissionHistory
|
|
{
|
|
public:
|
|
DECLARE_PERSISTENCE_METHODS
|
|
|
|
bool Successfull;
|
|
NLMISC::TGameCycle LastSuccessDate;
|
|
|
|
CStatsScanMissionHistory()
|
|
{
|
|
Successfull=false;
|
|
LastSuccessDate=0;
|
|
}
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Persistent data for CStatsScanDeathPenalties
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class CStatsScanDeathPenalties
|
|
{
|
|
public:
|
|
DECLARE_PERSISTENCE_METHODS
|
|
|
|
CStatsScanDeathPenalties()
|
|
{
|
|
_NbDeath=0;
|
|
_CurrentDeathXP=0.0;
|
|
_DeathXPToGain=0.0;
|
|
_BonusUpdateTime=0;
|
|
}
|
|
|
|
uint8 _NbDeath;
|
|
double _CurrentDeathXP;
|
|
double _DeathXPToGain;
|
|
uint32 _BonusUpdateTime;
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Persistent data for CStatsScanRespawnPoints
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class CStatsScanRespawnPoints
|
|
{
|
|
public:
|
|
DECLARE_PERSISTENCE_METHODS
|
|
|
|
std::vector<std::string> RespawnPoints;
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Persistent data for CStatsScanFameContainerEntry
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class CStatsScanFameContainerEntry
|
|
{
|
|
public:
|
|
DECLARE_PERSISTENCE_METHODS
|
|
|
|
sint32 Fame;
|
|
sint32 FameMemory;
|
|
std::string LastFameChangeTrend;
|
|
|
|
CStatsScanFameContainerEntry()
|
|
{
|
|
Fame=0;
|
|
FameMemory=0;
|
|
}
|
|
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Persistent data for CStatsScanFameContainer
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class CStatsScanFameContainer
|
|
{
|
|
public:
|
|
DECLARE_PERSISTENCE_METHODS
|
|
|
|
std::map<NLMISC::CSheetId,CStatsScanFameContainerEntry> _Fame;
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Persistent data for CStatsScanEncyCharThema
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class CStatsScanEncyCharThema
|
|
{
|
|
public:
|
|
DECLARE_PERSISTENCE_METHODS
|
|
|
|
uint8 ThemaState;
|
|
uint16 RiteTaskStatePacked;
|
|
|
|
CStatsScanEncyCharThema()
|
|
{
|
|
ThemaState=0;
|
|
RiteTaskStatePacked=0;
|
|
}
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Persistent data for CStatsScanEncyCharAlbum
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class CStatsScanEncyCharAlbum
|
|
{
|
|
public:
|
|
DECLARE_PERSISTENCE_METHODS
|
|
|
|
uint8 AlbumState;
|
|
std::vector<CStatsScanEncyCharThema> Themas;
|
|
|
|
CStatsScanEncyCharAlbum()
|
|
{
|
|
AlbumState=0;
|
|
}
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Persistent data for CStatsScanCharaterEncyclopedia
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class CStatsScanCharaterEncyclopedia
|
|
{
|
|
public:
|
|
DECLARE_PERSISTENCE_METHODS
|
|
|
|
std::vector<CStatsScanEncyCharAlbum> _EncyCharAlbums;
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Persistent data for CStatsScanGameEvent
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class CStatsScanGameEvent
|
|
{
|
|
public:
|
|
DECLARE_PERSISTENCE_METHODS
|
|
|
|
CStatsScanGameEvent()
|
|
{
|
|
_Date=0;
|
|
}
|
|
|
|
uint32 _Date;
|
|
std::string _EventFaction;
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Persistent data for CStatsScanPact
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class CStatsScanPact
|
|
{
|
|
public:
|
|
DECLARE_PERSISTENCE_METHODS
|
|
|
|
CStatsScanPact()
|
|
{
|
|
PactNature=0;
|
|
PactType=0;
|
|
}
|
|
|
|
uint8 PactNature;
|
|
uint8 PactType;
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Persistent data for CStatsScanPetAnimal
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class CStatsScanPetAnimal
|
|
{
|
|
public:
|
|
DECLARE_PERSISTENCE_METHODS
|
|
|
|
NLMISC::CSheetId TicketPetSheetId;
|
|
NLMISC::CSheetId PetSheetId;
|
|
uint32 Price;
|
|
NLMISC::CEntityId OwnerId;
|
|
TAIAlias StableAlias;
|
|
sint32 Landscape_X;
|
|
sint32 Landscape_Y;
|
|
sint32 Landscape_Z;
|
|
uint32 DeathTick;
|
|
uint16 PetStatus;
|
|
sint16 Slot;
|
|
bool IsFollowing;
|
|
bool IsMounted;
|
|
bool IsTpAllowed;
|
|
|
|
CStatsScanPetAnimal()
|
|
{
|
|
Price=0;
|
|
StableAlias=0;
|
|
Landscape_X=0;
|
|
Landscape_Y=0;
|
|
Landscape_Z=0;
|
|
DeathTick=0;
|
|
PetStatus=0;
|
|
Slot=0;
|
|
IsFollowing=false;
|
|
IsMounted=false;
|
|
IsTpAllowed=false;
|
|
}
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Persistent data for CStatsScanPhysCharacs
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class CStatsScanPhysCharacs
|
|
{
|
|
public:
|
|
DECLARE_PERSISTENCE_METHODS
|
|
|
|
std::map<std::string,sint32> _PhysicalCharacteristics;
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Persistent data for CStatsScanPhysScoresEntry
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class CStatsScanPhysScoresEntry
|
|
{
|
|
public:
|
|
DECLARE_PERSISTENCE_METHODS
|
|
|
|
CStatsScanPhysScoresEntry()
|
|
{
|
|
Current=0;
|
|
Base=0;
|
|
Max=0;
|
|
BaseRegenerateRepos=0.0f;
|
|
BaseRegenerateAction=0.0f;
|
|
CurrentRegenerate=0.0f;
|
|
}
|
|
|
|
sint32 Current;
|
|
sint32 Base;
|
|
sint32 Max;
|
|
float BaseRegenerateRepos;
|
|
float BaseRegenerateAction;
|
|
float CurrentRegenerate;
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Persistent data for CStatsScanPhysScores
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class CStatsScanPhysScores
|
|
{
|
|
public:
|
|
DECLARE_PERSISTENCE_METHODS
|
|
|
|
CStatsScanPhysScores()
|
|
{
|
|
BaseWalkSpeed=0.0f;
|
|
BaseRunSpeed=0.0f;
|
|
CurrentWalkSpeed=0.0f;
|
|
CurrentRunSpeed=0.0f;
|
|
}
|
|
|
|
float BaseWalkSpeed;
|
|
float BaseRunSpeed;
|
|
float CurrentWalkSpeed;
|
|
float CurrentRunSpeed;
|
|
std::map<std::string,CStatsScanPhysScoresEntry> PhysicalScores;
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Persistent data for CStatsScanSkillsEntry
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class CStatsScanSkillsEntry
|
|
{
|
|
public:
|
|
DECLARE_PERSISTENCE_METHODS
|
|
|
|
CStatsScanSkillsEntry()
|
|
{
|
|
Base=0;
|
|
Current=0;
|
|
MaxLvlReached=0;
|
|
Xp=0.0;
|
|
XpNextLvl=0.0;
|
|
}
|
|
|
|
sint32 Base;
|
|
sint32 Current;
|
|
sint32 MaxLvlReached;
|
|
double Xp;
|
|
double XpNextLvl;
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Persistent data for CStatsScanSkills
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class CStatsScanSkills
|
|
{
|
|
public:
|
|
DECLARE_PERSISTENCE_METHODS
|
|
|
|
std::map<std::string,CStatsScanSkillsEntry> Skills;
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Persistent data for CStatsScanItemCraftParameters
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class CStatsScanItemCraftParameters
|
|
{
|
|
public:
|
|
DECLARE_PERSISTENCE_METHODS
|
|
|
|
CStatsScanItemCraftParameters()
|
|
{
|
|
Durability=0.0f;
|
|
Weight=0.0f;
|
|
SapLoad=0.0f;
|
|
StatEnergy=0.0f;
|
|
Dmg=0.0f;
|
|
Speed=0.0f;
|
|
Range=0.0f;
|
|
DodgeModifier=0.0f;
|
|
ParryModifier=0.0f;
|
|
AdversaryDodgeModifier=0.0f;
|
|
AdversaryParryModifier=0.0f;
|
|
ProtectionFactor=0.0f;
|
|
MaxSlashingProtection=0.0f;
|
|
MaxBluntProtection=0.0f;
|
|
MaxPiercingProtection=0.0f;
|
|
ElementalCastingTimeFactor=0.0f;
|
|
ElementalPowerFactor=0.0f;
|
|
OffensiveAfflictionCastingTimeFactor=0.0f;
|
|
OffensiveAfflictionPowerFactor=0.0f;
|
|
HealCastingTimeFactor=0.0f;
|
|
HealPowerFactor=0.0f;
|
|
DefensiveAfflictionCastingTimeFactor=0.0f;
|
|
DefensiveAfflictionPowerFactor=0.0f;
|
|
Color=0;
|
|
HpBuff=0;
|
|
SapBuff=0;
|
|
StaBuff=0;
|
|
FocusBuff=0;
|
|
}
|
|
|
|
float Durability;
|
|
float Weight;
|
|
float SapLoad;
|
|
float StatEnergy;
|
|
float Dmg;
|
|
float Speed;
|
|
float Range;
|
|
float DodgeModifier;
|
|
float ParryModifier;
|
|
float AdversaryDodgeModifier;
|
|
float AdversaryParryModifier;
|
|
float ProtectionFactor;
|
|
float MaxSlashingProtection;
|
|
float MaxBluntProtection;
|
|
float MaxPiercingProtection;
|
|
float ElementalCastingTimeFactor;
|
|
float ElementalPowerFactor;
|
|
float OffensiveAfflictionCastingTimeFactor;
|
|
float OffensiveAfflictionPowerFactor;
|
|
float HealCastingTimeFactor;
|
|
float HealPowerFactor;
|
|
float DefensiveAfflictionCastingTimeFactor;
|
|
float DefensiveAfflictionPowerFactor;
|
|
uint8 Color;
|
|
sint32 HpBuff;
|
|
sint32 SapBuff;
|
|
sint32 StaBuff;
|
|
sint32 FocusBuff;
|
|
std::string Protection;
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Persistent data for CStatsScanItem
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class CStatsScanItem
|
|
{
|
|
public:
|
|
DECLARE_PERSISTENCE_METHODS
|
|
|
|
CStatsScanItem()
|
|
{
|
|
_ClientInventoryPosition=0;
|
|
_HP=0;
|
|
_Recommended=0;
|
|
_LocSlot=0;
|
|
_SlotImage=0;
|
|
_SlotCount=0;
|
|
_SapLoad=0;
|
|
_Dropable=true;
|
|
_Destroyable=true;
|
|
StackSize=0;
|
|
}
|
|
|
|
NLMISC::CSheetId _SheetId;
|
|
sint16 _ClientInventoryPosition;
|
|
uint32 _HP;
|
|
uint32 _Recommended;
|
|
NLMISC::CEntityId _CreatorId;
|
|
uint8 _LocSlot;
|
|
std::string _PhraseId;
|
|
uint16 _SlotImage;
|
|
sint16 _SlotCount;
|
|
uint32 _SapLoad;
|
|
bool _Dropable;
|
|
bool _Destroyable;
|
|
uint32 StackSize;
|
|
CStatsScanItemCraftParameters _CraftParameters;
|
|
std::vector<NLMISC::CSheetId> _Enchantment;
|
|
std::vector<CStatsScanItem> Child;
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Persistent data for CStatsScanInventory
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class CStatsScanInventory
|
|
{
|
|
public:
|
|
DECLARE_PERSISTENCE_METHODS
|
|
|
|
std::vector<CStatsScanItem> _Item;
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Persistent data for CStatsScanPlayerRoom
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class CStatsScanPlayerRoom
|
|
{
|
|
public:
|
|
DECLARE_PERSISTENCE_METHODS
|
|
|
|
TAIAlias Building;
|
|
CStatsScanItem Inventory;
|
|
sint32 Bulk;
|
|
sint32 MaxBulk;
|
|
|
|
CStatsScanPlayerRoom()
|
|
{
|
|
Building=0;
|
|
Bulk=0;
|
|
MaxBulk=0;
|
|
}
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Persistent data for CStatsScanEntityPosition
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class CStatsScanEntityPosition
|
|
{
|
|
public:
|
|
DECLARE_PERSISTENCE_METHODS
|
|
|
|
sint32 X;
|
|
sint32 Y;
|
|
sint32 Z;
|
|
float Heading;
|
|
|
|
CStatsScanEntityPosition()
|
|
{
|
|
X=0;
|
|
Y=0;
|
|
Z=0;
|
|
Heading=0.0f;
|
|
}
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Persistent data for CStatsScanEntityBase
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class CStatsScanEntityBase
|
|
{
|
|
public:
|
|
DECLARE_PERSISTENCE_METHODS
|
|
|
|
CStatsScanEntityPosition _EntityPosition;
|
|
uint32 _SheetId;
|
|
std::string _Name;
|
|
std::string _Race;
|
|
uint8 _Gender;
|
|
uint8 _Size;
|
|
bool _DodgeAsDefense;
|
|
CStatsScanPhysCharacs _PhysCharacs;
|
|
CStatsScanPhysScores _PhysScores;
|
|
CStatsScanSkills _Skills;
|
|
|
|
sint32 MeleeAttackModifierOnEnemy;
|
|
sint32 MeleeAttackModifierOnSelf;
|
|
sint32 MagicCastingModifierOnSelf;
|
|
sint32 MagicCastingModifierOnEnemy;
|
|
sint32 RangeAttackModifierOnEnemy;
|
|
sint32 RangeAttackModifierOnSelf;
|
|
sint32 AttackModifierOnSelf;
|
|
sint32 ChanceToFailStrategy;
|
|
sint32 ChanceToFailSpell;
|
|
sint32 ChanceToFailFaber;
|
|
sint32 ChanceToFailHarvest;
|
|
sint32 ChanceToFailTracking;
|
|
sint32 MeleeAttackSlow;
|
|
sint32 MeleeSlashingDamageArmor;
|
|
sint32 MeleeBluntDamageArmor;
|
|
sint32 MeleePiercingDamageArmor;
|
|
sint32 MeleeDamageModifierFactor;
|
|
sint32 RangeDamageModifierFactor;
|
|
sint32 CreatureMeleeTakenDamageFactor;
|
|
sint32 CreatureRangeTakenDamageFactor;
|
|
sint32 CombatBrickLatencyMultiplier;
|
|
sint32 MagicBrickLatencyMultiplier;
|
|
sint32 ArmorQualityModifier;
|
|
sint32 WeaponQualityModifier;
|
|
sint32 ArmorAbsorbtionMultiplier;
|
|
|
|
CStatsScanEntityBase()
|
|
{
|
|
_DodgeAsDefense=false;
|
|
_SheetId=0;
|
|
_Gender=0;
|
|
_Size=0;
|
|
|
|
MeleeAttackModifierOnEnemy=0;
|
|
MeleeAttackModifierOnSelf=0;
|
|
MagicCastingModifierOnSelf=0;
|
|
MagicCastingModifierOnEnemy=0;
|
|
RangeAttackModifierOnEnemy=0;
|
|
RangeAttackModifierOnSelf=0;
|
|
AttackModifierOnSelf=0;
|
|
ChanceToFailStrategy=0;
|
|
ChanceToFailSpell=0;
|
|
ChanceToFailFaber=0;
|
|
ChanceToFailHarvest=0;
|
|
ChanceToFailTracking=0;
|
|
MeleeAttackSlow=0;
|
|
MeleeSlashingDamageArmor=0;
|
|
MeleeBluntDamageArmor=0;
|
|
MeleePiercingDamageArmor=0;
|
|
MeleeDamageModifierFactor=0;
|
|
RangeDamageModifierFactor=0;
|
|
CreatureMeleeTakenDamageFactor=0;
|
|
CreatureRangeTakenDamageFactor=0;
|
|
CombatBrickLatencyMultiplier=0;
|
|
MagicBrickLatencyMultiplier=0;
|
|
ArmorQualityModifier=0;
|
|
WeaponQualityModifier=0;
|
|
ArmorAbsorbtionMultiplier=0;
|
|
}
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Persistent data for CStatsScanCharacter
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class CStatsScanCharacter
|
|
{
|
|
public:
|
|
DECLARE_PERSISTENCE_METHODS
|
|
|
|
uint32 VERSION;
|
|
|
|
uint8 _HairType;
|
|
uint8 _HairColor;
|
|
uint8 _HatColor;
|
|
uint8 _JacketColor;
|
|
uint8 _ArmsColor;
|
|
uint8 _TrousersColor;
|
|
uint8 _FeetColor;
|
|
uint8 _HandsColor;
|
|
uint64 _Money;
|
|
uint32 _GuildId;
|
|
bool _NewCharacter;
|
|
uint8 _CreationPointsRepartition;
|
|
uint32 _ForbidAuraUseEndDate;
|
|
std::string _Title;
|
|
|
|
/* Visual Properties */
|
|
uint8 HairType;
|
|
uint8 HairColor;
|
|
uint8 GabaritHeight;
|
|
uint8 GabaritTorsoWidth;
|
|
uint8 GabaritArmsWidth;
|
|
uint8 GabaritLegsWidth;
|
|
uint8 GabaritBreastSize;
|
|
uint8 MorphTarget1;
|
|
uint8 MorphTarget2;
|
|
uint8 MorphTarget3;
|
|
uint8 MorphTarget4;
|
|
uint8 MorphTarget5;
|
|
uint8 MorphTarget6;
|
|
uint8 MorphTarget7;
|
|
uint8 MorphTarget8;
|
|
uint8 EyesColor;
|
|
uint8 Tattoo;
|
|
uint8 NameStringId;
|
|
|
|
bool _HairCuteDiscount ;
|
|
float _NextDeathPenaltyFactor;
|
|
|
|
CStatsScanDeathPenalties _DeathPenalties;
|
|
CStatsScanPlayerRoom _PlayerRoom;
|
|
CStatsScanEntityBase EntityBase;
|
|
CStatsScanRespawnPoints RespawnPoints;
|
|
CStatsScanFameContainer _Fames;
|
|
CStatsScanCharaterEncyclopedia _EncycloChar;
|
|
CStatsScanGameEvent _GameEvent;
|
|
|
|
std::vector<NLMISC::CSheetId> _BoughtPhrases;
|
|
std::vector<NLMISC::CSheetId> _KnownBricks;
|
|
std::vector<NLMISC::CEntityId> _FriendsList;
|
|
std::vector<NLMISC::CEntityId> _IgnoreList;
|
|
std::vector<NLMISC::CEntityId> _IsFriendOf;
|
|
std::vector<NLMISC::CEntityId> _IsIgnoredBy;
|
|
|
|
std::vector<CStatsScanPact> _Pact;
|
|
|
|
std::map<TAIAlias,CStatsScanMissionHistory> _MissionHistories;
|
|
std::map<std::string,double> SkillPoints;
|
|
std::map<std::string,uint32> SpentSkillPoints;
|
|
std::map<std::string,sint32> ScorePermanentModifiers;
|
|
std::map<std::string,uint8> StartingCharacteristicValues;
|
|
std::map<std::string,CStatsScanInventory> Inventory;
|
|
std::map<uint32,CStatsScanPetAnimal> _PlayerPets;
|
|
};
|
|
|
|
|
|
#endif |