Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Linq;
- using System.Xml;
- using TaleWorlds.Library;
- using TaleWorlds.Localization;
- using TaleWorlds.SaveSystem;
- namespace TaleWorlds.Core
- {
- // Token: 0x02000013 RID: 19
- [SaveableClass(10037)]
- public class BasicCharacterObject : MBObjectBase
- {
- // Token: 0x17000037 RID: 55
- // (get) Token: 0x060000BA RID: 186 RVA: 0x0000456A File Offset: 0x0000276A
- // (set) Token: 0x060000BB RID: 187 RVA: 0x00004572 File Offset: 0x00002772
- public virtual TextObject Name
- {
- get
- {
- return this._basicName;
- }
- set
- {
- this.SetName(value);
- }
- }
- // Token: 0x060000BC RID: 188 RVA: 0x0000457B File Offset: 0x0000277B
- private void SetName(TextObject name)
- {
- this._basicName = name;
- }
- // Token: 0x060000BD RID: 189 RVA: 0x00004584 File Offset: 0x00002784
- public override TextObject GetName()
- {
- return this.Name;
- }
- // Token: 0x17000038 RID: 56
- // (get) Token: 0x060000BE RID: 190 RVA: 0x0000458C File Offset: 0x0000278C
- // (set) Token: 0x060000BF RID: 191 RVA: 0x00004594 File Offset: 0x00002794
- public virtual StaticBodyProperties StaticBodyPropertiesMin { get; set; }
- // Token: 0x17000039 RID: 57
- // (get) Token: 0x060000C0 RID: 192 RVA: 0x0000459D File Offset: 0x0000279D
- // (set) Token: 0x060000C1 RID: 193 RVA: 0x000045A5 File Offset: 0x000027A5
- public virtual StaticBodyProperties StaticBodyPropertiesMax { get; set; }
- // Token: 0x1700003A RID: 58
- // (get) Token: 0x060000C2 RID: 194 RVA: 0x000045AE File Offset: 0x000027AE
- // (set) Token: 0x060000C3 RID: 195 RVA: 0x000045B6 File Offset: 0x000027B6
- public int DefaultFormationGroup { get; set; }
- // Token: 0x1700003B RID: 59
- // (get) Token: 0x060000C4 RID: 196 RVA: 0x000045BF File Offset: 0x000027BF
- // (set) Token: 0x060000C5 RID: 197 RVA: 0x000045C7 File Offset: 0x000027C7
- public FormationClass CurrentFormationClass { get; set; }
- // Token: 0x1700003C RID: 60
- // (get) Token: 0x060000C6 RID: 198 RVA: 0x000045D0 File Offset: 0x000027D0
- // (set) Token: 0x060000C7 RID: 199 RVA: 0x000045D8 File Offset: 0x000027D8
- public FormationPositionPreference FormationPositionPreference { get; protected set; }
- // Token: 0x1700003D RID: 61
- // (get) Token: 0x060000C8 RID: 200 RVA: 0x000045E1 File Offset: 0x000027E1
- // (set) Token: 0x060000C9 RID: 201 RVA: 0x000045E9 File Offset: 0x000027E9
- public virtual bool IsFemale { get; set; }
- // Token: 0x1700003E RID: 62
- // (get) Token: 0x060000CA RID: 202 RVA: 0x000045F2 File Offset: 0x000027F2
- public virtual MBReadOnlyList<Equipment> AllEquipments
- {
- get
- {
- return this._equipmentsAsReadOnlyList;
- }
- }
- // Token: 0x1700003F RID: 63
- // (get) Token: 0x060000CB RID: 203 RVA: 0x000045FA File Offset: 0x000027FA
- public virtual Equipment Equipment
- {
- get
- {
- return this._equipments.FirstOrDefault<Equipment>();
- }
- }
- // Token: 0x060000CC RID: 204 RVA: 0x00004607 File Offset: 0x00002807
- private bool HasCivilianEquipment()
- {
- return this.AllEquipments.Any((Equipment eq) => eq.IsCivilian);
- }
- // Token: 0x060000CD RID: 205 RVA: 0x00004633 File Offset: 0x00002833
- public void InitializeEquipmentsOnLoad(List<Equipment> equipments)
- {
- this._equipments = equipments;
- this._equipmentsAsReadOnlyList = this._equipments.GetReadOnlyList<Equipment>();
- }
- // Token: 0x060000CE RID: 206 RVA: 0x00004650 File Offset: 0x00002850
- public Equipment GetFirstEquipment(bool civilianSet)
- {
- if (!civilianSet)
- {
- return this.Equipment;
- }
- if (!this.HasCivilianEquipment())
- {
- return this.Equipment;
- }
- return this.AllEquipments.FirstOrDefault((Equipment eq) => eq.IsCivilian);
- }
- // Token: 0x17000040 RID: 64
- // (get) Token: 0x060000CF RID: 207 RVA: 0x000046A0 File Offset: 0x000028A0
- // (set) Token: 0x060000D0 RID: 208 RVA: 0x000046A8 File Offset: 0x000028A8
- public virtual int Level { get; set; }
- // Token: 0x17000041 RID: 65
- // (get) Token: 0x060000D1 RID: 209 RVA: 0x000046B1 File Offset: 0x000028B1
- // (set) Token: 0x060000D2 RID: 210 RVA: 0x000046B9 File Offset: 0x000028B9
- public BasicCultureObject Culture
- {
- get
- {
- return this._culture;
- }
- set
- {
- this._culture = value;
- }
- }
- // Token: 0x17000042 RID: 66
- // (get) Token: 0x060000D3 RID: 211 RVA: 0x000046C2 File Offset: 0x000028C2
- public virtual bool IsPlayerCharacter
- {
- get
- {
- return false;
- }
- }
- // Token: 0x17000043 RID: 67
- // (get) Token: 0x060000D4 RID: 212 RVA: 0x000046C5 File Offset: 0x000028C5
- // (set) Token: 0x060000D5 RID: 213 RVA: 0x000046CD File Offset: 0x000028CD
- public virtual float Age
- {
- get
- {
- return this._age;
- }
- set
- {
- this._age = value;
- }
- }
- // Token: 0x17000044 RID: 68
- // (get) Token: 0x060000D6 RID: 214 RVA: 0x000046D6 File Offset: 0x000028D6
- public virtual int HitPoints
- {
- get
- {
- return this.MaxHitPoints();
- }
- }
- // Token: 0x060000D7 RID: 215 RVA: 0x000046DE File Offset: 0x000028DE
- public virtual BodyProperties GetBodyPropertiesMin(bool returnBaseValue = false)
- {
- return new BodyProperties(this._dynamicBodyProperties, this.StaticBodyPropertiesMin);
- }
- // Token: 0x060000D8 RID: 216 RVA: 0x000046F1 File Offset: 0x000028F1
- public virtual BodyProperties GetBodyPropertiesMax()
- {
- return new BodyProperties(this._dynamicBodyProperties, this.StaticBodyPropertiesMax);
- }
- // Token: 0x060000D9 RID: 217 RVA: 0x00004704 File Offset: 0x00002904
- public virtual BodyProperties GetBodyProperties(Equipment equipment, int seed = -1)
- {
- BodyProperties bodyPropertiesMin = this.GetBodyPropertiesMin(false);
- BodyProperties bodyPropertiesMax = this.GetBodyPropertiesMax();
- return FaceGen.GetRandomBodyProperties(this.IsFemale, bodyPropertiesMin, bodyPropertiesMax, (int)((equipment != null) ? equipment.HairCoverType : ArmorComponent.HairCoverTypes.None), seed, this.HairTags, this.BeardTags, this.TattooTags);
- }
- // Token: 0x060000DA RID: 218 RVA: 0x0000474C File Offset: 0x0000294C
- public virtual void UpdatePlayerCharacterBodyProperties(BodyProperties properties, bool isFemale)
- {
- this.StaticBodyPropertiesMax = properties.StaticProperties;
- this.StaticBodyPropertiesMin = properties.StaticProperties;
- this._dynamicBodyProperties = properties.DynamicProperties;
- this.IsFemale = isFemale;
- }
- // Token: 0x17000045 RID: 69
- // (get) Token: 0x060000DB RID: 219 RVA: 0x0000477C File Offset: 0x0000297C
- // (set) Token: 0x060000DC RID: 220 RVA: 0x00004784 File Offset: 0x00002984
- [SaveableProperty(16)]
- public float FaceDirtAmount { get; set; }
- // Token: 0x17000046 RID: 70
- // (get) Token: 0x060000DD RID: 221 RVA: 0x0000478D File Offset: 0x0000298D
- // (set) Token: 0x060000DE RID: 222 RVA: 0x00004795 File Offset: 0x00002995
- public string HairTags { get; set; }
- // Token: 0x17000047 RID: 71
- // (get) Token: 0x060000DF RID: 223 RVA: 0x0000479E File Offset: 0x0000299E
- // (set) Token: 0x060000E0 RID: 224 RVA: 0x000047A6 File Offset: 0x000029A6
- public string BeardTags { get; set; }
- // Token: 0x17000048 RID: 72
- // (get) Token: 0x060000E1 RID: 225 RVA: 0x000047AF File Offset: 0x000029AF
- // (set) Token: 0x060000E2 RID: 226 RVA: 0x000047B7 File Offset: 0x000029B7
- public string TattooTags { get; set; }
- // Token: 0x17000049 RID: 73
- // (get) Token: 0x060000E3 RID: 227 RVA: 0x000047C0 File Offset: 0x000029C0
- public virtual bool IsHero
- {
- get
- {
- return this._isBasicHero;
- }
- }
- // Token: 0x1700004A RID: 74
- // (get) Token: 0x060000E4 RID: 228 RVA: 0x000047C8 File Offset: 0x000029C8
- // (set) Token: 0x060000E5 RID: 229 RVA: 0x000047D0 File Offset: 0x000029D0
- public bool IsSoldier { get; private set; }
- // Token: 0x060000E6 RID: 230 RVA: 0x000047DC File Offset: 0x000029DC
- public BasicCharacterObject()
- {
- this._equipments = new List<Equipment>();
- this._equipmentsAsReadOnlyList = this._equipments.GetReadOnlyList<Equipment>();
- this._emptyEquipment = new Equipment(true);
- this._equipments.Add(this._emptyEquipment);
- }
- // Token: 0x060000E7 RID: 231 RVA: 0x00004828 File Offset: 0x00002A28
- [LoadInitializationCallback]
- private void OnLoad(MetaData metaData)
- {
- this._equipments = new List<Equipment>();
- this._equipmentsAsReadOnlyList = this._equipments.GetReadOnlyList<Equipment>();
- this._emptyEquipment = new Equipment(true);
- this._equipments.Add(this._emptyEquipment);
- }
- // Token: 0x060000E8 RID: 232 RVA: 0x00004864 File Offset: 0x00002A64
- public int GetDefaultFaceSeed(int rank)
- {
- int num = base.StringId.GetDeterministicHashCode() * 6791 + rank * 197;
- return ((num >= 0) ? num : (-num)) % 2000;
- }
- // Token: 0x060000E9 RID: 233 RVA: 0x0000489A File Offset: 0x00002A9A
- public float GetStepSize()
- {
- return 0.8f + 0.2f * (float)this.GetSkillValue(DefaultSkills.Athletics) * 0.00333333f;
- }
- // Token: 0x060000EA RID: 234 RVA: 0x000048BC File Offset: 0x00002ABC
- public bool HasMount()
- {
- return this.Equipment[10].Item != null;
- }
- // Token: 0x060000EB RID: 235 RVA: 0x000048E1 File Offset: 0x00002AE1
- public virtual int MaxHitPoints()
- {
- return Game.Current.HumanMonster.HitPoints;
- }
- // Token: 0x060000EC RID: 236 RVA: 0x000048F4 File Offset: 0x00002AF4
- public virtual float GetPower()
- {
- float num = 0f;
- float num2 = (float)this.Level + num;
- return 0.2f + (num2 + 10f) * (num2 + 10f) * 0.0025f;
- }
- // Token: 0x060000ED RID: 237 RVA: 0x0000492C File Offset: 0x00002B2C
- public virtual int GetMountKeySeed()
- {
- return MBRandom.RandomInt();
- }
- // Token: 0x060000EE RID: 238 RVA: 0x00004933 File Offset: 0x00002B33
- public virtual int GetSkillValue(SkillObject skill)
- {
- return this._characterSkills.GetPropertyValue(skill);
- }
- // Token: 0x060000EF RID: 239 RVA: 0x00004941 File Offset: 0x00002B41
- public void SetSkillValue(SkillObject skill, int value)
- {
- this._characterSkills.SetPropertyValue(skill, value);
- }
- // Token: 0x060000F0 RID: 240 RVA: 0x00004950 File Offset: 0x00002B50
- public void InitializeHeroBasicCharacterOnAfterLoad(BasicCharacterObject originCharacter, TextObject name)
- {
- this.Name = name;
- this.IsSoldier = originCharacter.IsSoldier;
- this._isBasicHero = originCharacter._isBasicHero;
- this._characterSkills = originCharacter._characterSkills;
- this.HairTags = originCharacter.HairTags;
- this.BeardTags = originCharacter.BeardTags;
- this.TattooTags = originCharacter.TattooTags;
- this.StaticBodyPropertiesMin = originCharacter.StaticBodyPropertiesMin;
- this.StaticBodyPropertiesMax = originCharacter.StaticBodyPropertiesMax;
- this.IsFemale = originCharacter.IsFemale;
- this.Culture = originCharacter.Culture;
- this.DefaultFormationGroup = originCharacter.DefaultFormationGroup;
- this.CurrentFormationClass = originCharacter.CurrentFormationClass;
- this.FormationPositionPreference = originCharacter.FormationPositionPreference;
- this._equipments = originCharacter._equipments;
- this._equipmentsAsReadOnlyList = this._equipments.GetReadOnlyList<Equipment>();
- }
- // Token: 0x060000F1 RID: 241 RVA: 0x00004A20 File Offset: 0x00002C20
- public override void Deserialize(MBObjectManager objectManager, XmlNode node)
- {
- base.Deserialize(objectManager, node);
- XmlAttribute xmlAttribute = node.Attributes["name"];
- if (xmlAttribute != null)
- {
- this._basicName = new TextObject(xmlAttribute.Value, null);
- }
- XmlNode xmlNode = node.Attributes["occupation"];
- if (xmlNode != null)
- {
- this.IsSoldier = (xmlNode.InnerText.IndexOf("soldier", StringComparison.OrdinalIgnoreCase) >= 0);
- }
- XmlNodeList childNodes = node.ChildNodes;
- this._isBasicHero = XmlHelper.ReadBool(node, "is_hero");
- BasicCharacterObject basicCharacterObject = objectManager.ReadObjectReferenceFromXml("skill_template", typeof(BasicCharacterObject), node) as BasicCharacterObject;
- if (basicCharacterObject != null)
- {
- this._characterSkills = new CharacterSkills(basicCharacterObject._characterSkills);
- }
- else
- {
- this._characterSkills = new CharacterSkills();
- }
- childNodes = node.ChildNodes;
- foreach (object obj in childNodes)
- {
- XmlNode xmlNode2 = (XmlNode)obj;
- if (xmlNode2.Name == "Skills" || xmlNode2.Name == "skills")
- {
- if (!this._isBasicHero)
- {
- this._characterSkills.Deserialize(objectManager, xmlNode2);
- }
- }
- else if (xmlNode2.Name == "face")
- {
- this.HairTags = "";
- this.BeardTags = "";
- this.TattooTags = "";
- foreach (object obj2 in xmlNode2.ChildNodes)
- {
- XmlNode xmlNode3 = (XmlNode)obj2;
- if (xmlNode3.Name == "hair_tags")
- {
- using (IEnumerator enumerator3 = xmlNode3.ChildNodes.GetEnumerator())
- {
- while (enumerator3.MoveNext())
- {
- object obj3 = enumerator3.Current;
- XmlNode xmlNode4 = (XmlNode)obj3;
- this.HairTags = this.HairTags + xmlNode4.Attributes["name"].Value + ",";
- }
- continue;
- }
- }
- if (xmlNode3.Name == "beard_tags")
- {
- using (IEnumerator enumerator3 = xmlNode3.ChildNodes.GetEnumerator())
- {
- while (enumerator3.MoveNext())
- {
- object obj4 = enumerator3.Current;
- XmlNode xmlNode5 = (XmlNode)obj4;
- this.BeardTags = this.BeardTags + xmlNode5.Attributes["name"].Value + ",";
- }
- continue;
- }
- }
- if (xmlNode3.Name == "tattoo_tags")
- {
- using (IEnumerator enumerator3 = xmlNode3.ChildNodes.GetEnumerator())
- {
- while (enumerator3.MoveNext())
- {
- object obj5 = enumerator3.Current;
- XmlNode xmlNode6 = (XmlNode)obj5;
- this.TattooTags = this.TattooTags + xmlNode6.Attributes["name"].Value + ",";
- }
- continue;
- }
- }
- if (xmlNode3.Name == "BodyProperties")
- {
- BodyProperties bodyProperties;
- if (BodyProperties.FromXmlNode(xmlNode3, out bodyProperties))
- {
- this.StaticBodyPropertiesMin = bodyProperties.StaticProperties;
- this._dynamicBodyProperties = bodyProperties.DynamicProperties;
- }
- }
- else if (xmlNode3.Name == "BodyPropertiesMax")
- {
- BodyProperties bodyProperties2;
- if (BodyProperties.FromXmlNode(xmlNode3, out bodyProperties2))
- {
- this.StaticBodyPropertiesMax = bodyProperties2.StaticProperties;
- this._dynamicBodyProperties = bodyProperties2.DynamicProperties;
- }
- else
- {
- this.StaticBodyPropertiesMax = this.StaticBodyPropertiesMin;
- }
- }
- else if (xmlNode3.Name == "face_key_template")
- {
- BasicCharacterObject basicCharacterObject2 = objectManager.ReadObjectReferenceFromXml<BasicCharacterObject>("value", xmlNode3);
- this.StaticBodyPropertiesMin = basicCharacterObject2.StaticBodyPropertiesMin;
- this.StaticBodyPropertiesMax = basicCharacterObject2.StaticBodyPropertiesMax;
- this._dynamicBodyProperties = basicCharacterObject2._dynamicBodyProperties;
- if (!basicCharacterObject2.HairTags.IsStringNoneOrEmpty())
- {
- this.HairTags = basicCharacterObject2.HairTags;
- }
- if (!basicCharacterObject2.BeardTags.IsStringNoneOrEmpty())
- {
- this.BeardTags = basicCharacterObject2.BeardTags;
- }
- if (!basicCharacterObject2.TattooTags.IsStringNoneOrEmpty())
- {
- this.TattooTags = basicCharacterObject2.TattooTags;
- }
- }
- }
- }
- }
- this.IsFemale = false;
- this.DefaultFormationGroup = 0;
- XmlNode xmlNode7 = node.Attributes["is_female"];
- if (xmlNode7 != null)
- {
- this.IsFemale = Convert.ToBoolean(xmlNode7.InnerText);
- }
- this.Culture = objectManager.ReadObjectReferenceFromXml<BasicCultureObject>("culture", node);
- XmlNode xmlNode8 = node.Attributes["age"];
- this.Age = ((xmlNode8 == null) ? 20f : ((float)Convert.ToInt32(xmlNode8.InnerText)));
- XmlNode xmlNode9 = node.Attributes["level"];
- this.Level = ((xmlNode9 != null) ? Convert.ToInt32(xmlNode9.InnerText) : 1);
- XmlNode xmlNode10 = node.Attributes["default_group"];
- if (xmlNode10 != null)
- {
- this.DefaultFormationGroup = this.FetchDefaultFormationGroup(xmlNode10.InnerText);
- }
- this.CurrentFormationClass = (FormationClass)this.DefaultFormationGroup;
- XmlNode xmlNode11 = node.Attributes["formation_position_preference"];
- this.FormationPositionPreference = ((xmlNode11 != null) ? ((FormationPositionPreference)Enum.Parse(typeof(FormationPositionPreference), xmlNode11.InnerText)) : FormationPositionPreference.Middle);
- List<XmlNode> list = new List<XmlNode>();
- List<XmlNode> list2 = new List<XmlNode>();
- foreach (object obj6 in childNodes)
- {
- XmlNode xmlNode12 = (XmlNode)obj6;
- if (xmlNode12.Name == "equipmentSet")
- {
- list.Add(xmlNode12);
- }
- else if (xmlNode12.Name == "equipment")
- {
- list2.Add(xmlNode12);
- }
- }
- List<Equipment> list3 = new List<Equipment>();
- if (list.Count > 0)
- {
- int num = 0;
- foreach (XmlNode xmlNode13 in list)
- {
- XmlAttribute xmlAttribute2 = xmlNode13.Attributes["civilian"];
- bool isCivilian = xmlAttribute2 != null && bool.Parse(xmlAttribute2.Value);
- list3.Add(new Equipment(isCivilian));
- list3[list3.Count - 1].Deserialize(objectManager, xmlNode13);
- num++;
- }
- if (list3.Count > 0)
- {
- this.AddEquipment(list3);
- }
- }
- if (list2.Count > 0)
- {
- foreach (XmlNode node2 in list2)
- {
- foreach (Equipment equipment in this._equipments)
- {
- if (!equipment.IsCivilian)
- {
- equipment.DeserializeNode(objectManager, node2);
- }
- }
- }
- }
- XmlNode xmlNode14 = node.Attributes["default_equipment_set"];
- if (xmlNode14 != null)
- {
- if (this._equipments[0] == null)
- {
- this._equipments[0] = new Equipment(false);
- }
- this._equipments[0].FillFrom(Game.Current.GetDefaultEquipmentWithName(xmlNode14.Value), true);
- }
- BasicCharacterObject basicCharacterObject3 = objectManager.ReadObjectReferenceFromXml("battleTemplate", typeof(BasicCharacterObject), node) as BasicCharacterObject;
- if (basicCharacterObject3 != null)
- {
- List<Equipment> list4 = new List<Equipment>();
- int num2 = 0;
- foreach (Equipment equipment2 in basicCharacterObject3.AllEquipments)
- {
- if (!equipment2.IsCivilian)
- {
- list4.Add(new Equipment(false));
- list4[num2].FillFrom(equipment2, false);
- num2++;
- }
- }
- this.AddEquipment(list4);
- }
- BasicCharacterObject basicCharacterObject4 = objectManager.ReadObjectReferenceFromXml("civilianTemplate", typeof(BasicCharacterObject), node) as BasicCharacterObject;
- if (basicCharacterObject4 != null)
- {
- List<Equipment> list5 = new List<Equipment>();
- int num3 = 0;
- foreach (Equipment equipment3 in basicCharacterObject4.AllEquipments)
- {
- if (equipment3.IsCivilian)
- {
- list5.Add(new Equipment(true));
- list5[num3].FillFrom(equipment3, false);
- num3++;
- }
- }
- this.AddEquipment(list5);
- }
- this._equipments = new List<Equipment>(from eq in this._equipments
- orderby !eq.IsCivilian descending
- select eq);
- this._equipmentsAsReadOnlyList = this._equipments.GetReadOnlyList<Equipment>();
- }
- // Token: 0x060000F2 RID: 242 RVA: 0x00005418 File Offset: 0x00003618
- private void AddEquipment(List<Equipment> eq)
- {
- if (this._equipments.Contains(this._emptyEquipment))
- {
- this._equipments.Remove(this._emptyEquipment);
- }
- this._equipments.AddRange(eq);
- }
- // Token: 0x060000F3 RID: 243 RVA: 0x0000544C File Offset: 0x0000364C
- protected int FetchDefaultFormationGroup(string innerText)
- {
- FormationClass result;
- if (Enum.TryParse<FormationClass>(innerText, true, out result))
- {
- return (int)result;
- }
- return -1;
- }
- // Token: 0x04000109 RID: 265
- private TextObject _basicName;
- // Token: 0x0400010C RID: 268
- private DynamicBodyProperties _dynamicBodyProperties;
- // Token: 0x04000111 RID: 273
- private List<Equipment> _equipments;
- // Token: 0x04000112 RID: 274
- private MBReadOnlyList<Equipment> _equipmentsAsReadOnlyList;
- // Token: 0x04000113 RID: 275
- private Equipment _emptyEquipment;
- // Token: 0x04000115 RID: 277
- private BasicCultureObject _culture;
- // Token: 0x04000116 RID: 278
- private float _age;
- // Token: 0x0400011B RID: 283
- private bool _isBasicHero;
- // Token: 0x0400011D RID: 285
- protected CharacterSkills _characterSkills;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment