Exemple #1
0
        public Character()
        {
            _class = CharacterEnums.CharacterClass.Explorer;
            _race = CharacterEnums.CharacterRace.Human;
            _gender = CharacterEnums.Genders.Female;
            _skinColor = CharacterEnums.SkinColors.Fair;
            _skinType = CharacterEnums.SkinType.Flesh;
            _hairColor = CharacterEnums.HairColors.Black;
            _eyeColor = CharacterEnums.EyeColors.Brown;
            _build = CharacterEnums.BodyBuild.Medium;

            _koCount = new Tuple<int, DateTime>(0, DateTime.Now);
            _actionState = CharacterActionState.None;
            _stanceState = CharacterStanceState.Standing;

            _primaryLanguage = CharacterEnums.Languages.Common;
            KnownLanguages = new HashSet<Languages>();
            KnownLanguages.Add(_primaryLanguage);

            FirstName = "";
            LastName = "";
            Description = "";
            Age = 17;   //Do we want an age? And are we going to advance it every in game year?  We'll need a birthdate for this.
            Weight = 180; //pounds or kilos?
            Height = 70;  //inches or centimeters?
            Location = "A1";
            InCombat = false;
            LastCombatTime = DateTime.MinValue.ToUniversalTime();
            IsNPC = false;
            Leveled = false;
            MainHand = "WIELD_RIGHT";
            NextLevelExperience = 300;
            Level = 1;
            Experience = 0;
            PointsToSpend = 0;

            Inventory = new Inventory();
            Equipment = new Equipment();
            Bonuses = new StatBonuses();

            Inventory.playerID = this.ID;
            Equipment.playerID = this.ID;

            Attributes = new Dictionary<string, Attribute>();

            Attributes.Add("Hitpoints", new Attribute(150, "Hitpoints", 150, 0.1, 1));
            Attributes.Add("Dexterity", new Attribute(10, "Dexterity", 5, 0, 1));
            Attributes.Add("Strength", new Attribute(10, "Strength", 5, 0, 1));
            Attributes.Add("Intelligence", new Attribute(10, "Intelligence", 5, 0, 1));
            Attributes.Add("Endurance", new Attribute(10, "Endurance", 5, 0, 1));
            Attributes.Add("Charisma", new Attribute(10, "Charisma", 5, 0, 1));

            SubAttributes = new Dictionary<string, double>();

            SubAttributes.Add("Agility", 1);
            SubAttributes.Add("Toughness", 1);
            SubAttributes.Add("Cunning", 1);
            SubAttributes.Add("Wisdom", 1);
            SubAttributes.Add("Leadership", 1);
        }
 public CharacterSheet(string constructorName, CharacterRace constructorRace, CharacterClass constructorClass, Alignment constructorAlignment)
 {
     charName = constructorName;
     charRace = constructorRace;
     charClass = constructorClass;
     charAlign = constructorAlignment;
     hitDie = charClass.hitDie;
     darkVision = charRace.hasDarkVision;
     charLevel = 1;
 }
Exemple #3
0
        private void ValidateCharacter(string name, CharacterFaction characterFaction, CharacterRace characterRace, CharacterClass characterClass)
        {
            if(String.IsNullOrEmpty(name))
            {
                throw new Exception("Character must have a name");
            }

            #region Faction Validation
            
            if(characterFaction == CharacterFaction.Horde)
            {
                if(characterRace != CharacterRace.Orc &&
                   characterRace != CharacterRace.Tauren &&
                   characterRace != CharacterRace.BloodElf)
                {
                    throw new Exception("Only Orcs, Taurens, and Blood Elfs can fight for the Horde");
                }
            }
            else
            {
                if (characterRace != CharacterRace.Human &&
                   characterRace != CharacterRace.Gnome &&
                   characterRace != CharacterRace.Worgen)
                {
                    throw new Exception("Only Humans, Gnomes, and Worgen can fight for the Alliance");
                }
            }

            #endregion

            #region Race Validation
            
            if(characterClass == CharacterClass.Druid)
            {
                if(characterRace != CharacterRace.Tauren &&
                   characterRace != CharacterRace.Worgen)
                {
                    throw new Exception("This race cannot be a Druid");
                }
            }

            if(characterRace == CharacterRace.BloodElf && characterClass == CharacterClass.Warrior)
            {
                throw new Exception("Blood Elfs cannot be Warriors");
            }

            #endregion
        }
Exemple #4
0
        public  Character(string name, CharacterFaction characterFaction, CharacterRace characterRace, CharacterClass characterClass)
        {
            ValidateCharacter(name, characterFaction, characterRace, characterClass);

            this.Id = Guid.NewGuid();
            this.Name = name;
            this.Faction = characterFaction;
            this.Race = characterRace;
            this.Class = characterClass;
            this.Active = true;
            
            if(characterClass == CharacterClass.DeathKnight)
            {
                this.Level = 55;
            }
            else
            {
                this.Level = 1;
            }
        }
        private static void LoadRacesFromNodes(XmlNodeList nodes, string rootImagePath)
        {
            if (nodes == null)
            {
                return;
            }

            foreach (XmlNode node in nodes)
            {
                CharacterRace characterRace =
                    new CharacterRace(node.AttributeAsInt("ID"),
                                      node.AttributeAsString("Name"),
                                      node.SelectSingleNode("./Description")?.InnerText ?? "",
                                      $".{rootImagePath}{node.AttributeAsString("ImageName")}",
                                      node.SelectSingleNode("./Pro")?.InnerText ?? "",
                                      node.SelectSingleNode("./Con")?.InnerText ?? "");


                _characterRaces.Add(characterRace);
            }
        }
Exemple #6
0
        public Player(string name, int life, int maxLife, int hitChance, int block, int speed, CharacterRace race, Weapon equippedWeapon) : base(name, life, maxLife, hitChance, block, speed)
        {
            Race           = race;
            EquippedWeapon = equippedWeapon;

            switch (race)
            {
            case CharacterRace.Hellion:    //TODO: make these races like it would be easy, intermediate, hard
                MaxLife   += 25;
                Life      += 25;
                Block     += 4;
                HitChance += 5;
                Speed     += 5;
                break;

            case CharacterRace.Nephalim:
                MaxLife   += 45;
                Life      += 45;
                Block     += 6;
                HitChance += 10;
                Speed     += 7;
                break;

            case CharacterRace.Sentinel:
                MaxLife   += 35;
                Life      += 35;
                Block     += 5;
                HitChance += 6;
                Speed     += 6;
                break;

            case CharacterRace.DoomGuy:
                MaxLife   += 45;
                Life      += 45;
                Block     += 6;
                HitChance += 20;
                Speed     += 20;
                break;
            }
        }//end ctor
        private IEnumerable <int> GetHitPointRange(CharacterClass characterClass, CharacterRace characterRace, int characterLevel)
        {
            IEnumerable <int> range;

            if (characterClass == CharacterClass.Fighter && characterRace == CharacterRace.Human)
            {
                range = Enumerable.Range(1 * characterLevel, 7 * characterLevel + 1);
            }
            if (characterClass == CharacterClass.Fighter && characterRace == CharacterRace.Elf)
            {
                range = Enumerable.Range(1 * characterLevel, 5 * characterLevel + 1);
            }
            if (characterClass == CharacterClass.Fighter && characterRace == CharacterRace.Dwarf)
            {
                range = Enumerable.Range(1 * characterLevel, 7 * characterLevel + 1);
            }
            if (characterClass == CharacterClass.Fighter && characterRace == CharacterRace.Halfling)
            {
                range = Enumerable.Range(1 * characterLevel, 5 * characterLevel + 1);
            }
            if (characterClass == CharacterClass.Cleric)
            {
                range = Enumerable.Range(1 * characterLevel, 5 * characterLevel + 1);
            }
            if (characterClass == CharacterClass.Thief)
            {
                range = Enumerable.Range(1 * characterLevel, 3 * characterLevel + 1);
            }
            if (characterClass == CharacterClass.MagicUser)
            {
                range = Enumerable.Range(1 * characterLevel, 3 * characterLevel + 1);
            }
            else
            {
                range = Enumerable.Range(1 * characterLevel, 5 * characterLevel + 1);
            }

            return(range);
        }
    public void chooseRace(int raceIndex)
    {
        switch (raceIndex)
        {
        case 0:
            raceAbility.text  = "Adaption";
            charRace          = CharacterRace.Human;
            selectedRaceIndex = 0;
            break;

        case 1:

            raceAbility.text  = "Light as Air";
            charRace          = CharacterRace.Elf;
            selectedRaceIndex = 1;
            break;

        case 2:

            raceAbility.text  = "Earthern Expert";
            charRace          = CharacterRace.Dwarf;
            selectedRaceIndex = 2;
            break;

        case 3:

            raceAbility.text  = "Shadow's Agent";
            charRace          = CharacterRace.DarkElf;
            selectedRaceIndex = 3;
            break;

        case 4:

            raceAbility.text  = "Beastial Instinct";
            charRace          = CharacterRace.Beastman;
            selectedRaceIndex = 4;
            break;
        }
    }
Exemple #9
0
 public Item[] GetRelevantItems(CalculationsBase model, CharacterRace race)
 {
     if (cachedRelevantItems == null || model != lastModel || race != lastRace)
     {
         lock (syncLock)
         {
             // test again because of race conditions, but we still want to avoid the lock if we can because that'll be the majority case
             if (cachedRelevantItems == null || model != lastModel || race != lastRace)
             {
                 List <Item> itemList = new List <Item>(AllItems).FindAll(new Predicate <Item>(
                                                                              delegate(Item item)
                 {
                     return(model.IsItemRelevant(item) && ItemFilter.IsItemRelevant(model, item) && item.FitsFaction(race));
                 }));
                 cachedRelevantItems = itemList.ToArray();
                 lastModel           = model;
                 lastRace            = race;
             }
         }
     }
     return(cachedRelevantItems);
 }
Exemple #10
0
    public void loadCharacter(string firstName, string lastName, CharacterSex mCSex, CharacterRace mCRace, int age,
                              CharacterBackground mCBackground, int height, int weight, CharacterClass mCClass,
                              int mCSturdy, int mCPerception, int mCTechnique, int mCWellVersed,
                              Color characterColor, Color headColor, Color primaryColor, Color secondaryColor, CharacterHairStyle hairStyle)
    {
        int heightRemainder = height % 12;

        height -= heightRemainder;

        personalInfo = new PersonalInformation(new CharacterName(firstName, lastName),
                                               mCSex, mCRace, mCBackground, new CharacterAge(age),
                                               new CharacterHeight(height, heightRemainder),
                                               new CharacterWeight(weight), hairStyle);
        characterProgress = new CharacterProgress(mCClass);
        abilityScores     = new AbilityScores(mCSturdy, mCPerception, mCTechnique, mCWellVersed);
        combatScores      = new CombatScores(abilityScores, personalInfo, characterProgress);
        skillScores       = new SkillScores(combatScores, characterProgress);
        CharacterColors characterColors = new CharacterColors(characterColor, headColor, primaryColor, secondaryColor);

        characterSheet = new CharacterSheet(abilityScores, personalInfo,
                                            characterProgress, combatScores, skillScores, characterColors, this, characterLoadout);
    }
Exemple #11
0
    public Character loadData(string textFile2, Unit u)
    {
        Character ch = new Character();

        //	ch.characterLoadout = characterLoadout;
        ch.setCharacterLoadout(characterLoadout);
        ch.unit = u;
        if (textFile2 != null && textFile2 != "")
        {
            textFile = textFile2;
        }
        if (textFile != null && textFile != "")
        {
            ch.loadCharacterFromTextFile(textFile);
        }
        else
        {
            CharacterRace  mCRace  = CharacterRace.getRace(mCRaceName);
            CharacterClass mCClass = CharacterClass.getClass(mCClassName);

            CharacterHairStyle hairSt;
            if (hairPrefab != null)
            {
                hairSt = new CharacterHairStyle(hairPrefab);
            }
            else
            {
                hairSt = new CharacterHairStyle((hairStyle >= 0 && hairStyle < PersonalInformation.hairTypes.Length ? hairStyle : 0));
            }

            ch.loadCharacter(firstName, lastName, mCSex, mCRace, age,
                             mCBackground, height, weight, mCClass,
                             mCSturdy, mCPerception, mCTechnique, mCWellVersed, characterColor, headColor, primaryColor, secondaryColor, hairSt);
            int level      = ch.characterSheet.characterProgress.setLevel(mClevel);
            int experience = ch.characterSheet.characterProgress.setExperience(mCexperience);
        }
        return(ch);
    }
Exemple #12
0
        private Character SaveData()
        {
            var character = new Character();

            character.Name        = _txtName.Text;
            character.Description = _txtDescription.Text;
            CharacterRace characterRace = (CharacterRace)_cbRace.SelectedItem;

            character.Race = characterRace;
            CharacterProfession characterProfession = (CharacterProfession)_cbProfession.SelectedItem;

            character.Profession   = characterProfession;
            character.Strength     = _numStr.Value;
            character.Intelligence = _numInt.Value;
            character.Agility      = _numAgi.Value;
            character.Dexterity    = _numDex.Value;
            character.Endurance    = _numEnd.Value;
            character.Male         = _rbMale.Checked;
            character.Female       = _rbFemale.Checked;


            return(character);
        }
Exemple #13
0
 public static CharacterFaction getFactionFromRace(CharacterRace race)
 {
     if ((race == CharacterRace.Human) || (race == CharacterRace.Dwarf) || (race == CharacterRace.Elf))
     {
         return(CharacterFaction.TheAccord);
     }
     else if (race == CharacterRace.IgnezorOrc)
     {
         return(CharacterFaction.IgnezorOrc);
     }
     else if (race == CharacterRace.TerrazorOrc)
     {
         return(CharacterFaction.TerrazorOrc);
     }
     else if (race == CharacterRace.BelzorOrc)
     {
         return(CharacterFaction.BelzorOrc);
     }
     else
     {
         //figure out how to throw error here
         return(CharacterFaction.Error);
     }
 }
        private CharacterAbilities GenerateCharacterAbilities(CharacterClass characterClass, CharacterRace characterRace)
        {
            CharacterAbilities characterAbilities = CharacterAbilities.None;

            if (characterRace == CharacterRace.Dwarf)
            {
                characterAbilities |= CharacterAbilities.Darkvision;
                characterAbilities |= CharacterAbilities.DetectConstruction;
            }
            if (characterRace == CharacterRace.Elf)
            {
                characterAbilities |= CharacterAbilities.Darkvision;
                characterAbilities |= CharacterAbilities.GhoulImmune;
                characterAbilities |= CharacterAbilities.DetectSecretDoors;
                characterAbilities |= CharacterAbilities.ReduceSurprise;
            }
            if (characterRace == CharacterRace.Halfling)
            {
                characterAbilities |= CharacterAbilities.HalflingACBonus;
                characterAbilities |= CharacterAbilities.HalflingAttackBonus;
                characterAbilities |= CharacterAbilities.HalflingHiding;
                characterAbilities |= CharacterAbilities.HalflingInitiative;
            }
            if (characterRace == CharacterRace.Human)
            {
                characterAbilities |= CharacterAbilities.HumanXPBonus;
            }
            if (characterClass == CharacterClass.Thief)
            {
                characterAbilities |= CharacterAbilities.ThiefSkills;
            }
            if (characterClass == CharacterClass.Cleric)
            {
                characterAbilities |= CharacterAbilities.TurnUndead;
            }

            return(characterAbilities);
        }
        protected void AssertStatCorrect(Func<Stats,float> property, float expected, CharacterRace race)
        {
            _character.Race = race;

            AssertStatCorrect(property, expected);
        }
Exemple #16
0
        /// <summary>This overload is used from optimizer and is optimized for performance, do not modify</summary>
        public Character(Character baseCharacter, object[] items, int count)
        {
            IsLoading = true;
            _name = baseCharacter._name;
            _realm = baseCharacter._realm;
            _region = baseCharacter._region;
            _race = baseCharacter._race;
            _currentModel = baseCharacter._currentModel;
            _calculationOptions = baseCharacter._calculationOptions;
            _primaryProfession = baseCharacter._primaryProfession;
            _secondaryProfession = baseCharacter._secondaryProfession;
            _class = baseCharacter._class;
            AssignAllTalentsFromCharacter(baseCharacter, false);
            CalculationToOptimize = baseCharacter.CalculationToOptimize;
            OptimizationRequirements = baseCharacter.OptimizationRequirements;
            _bossOptions = baseCharacter._bossOptions;
            _faction = baseCharacter._faction;

            _item = new ItemInstance[SlotCount];
            Array.Copy(items, _item, count);

            IsLoading = false;
            ActiveBuffs = new List<Buff>(baseCharacter.ActiveBuffs);
            RecalculateSetBonuses();
        }
Exemple #17
0
 public Character(string name, string realm, CharacterRegion region, CharacterRace race, BossOptions boss,
     ItemInstance head, ItemInstance neck, ItemInstance shoulders, ItemInstance back, ItemInstance chest, ItemInstance shirt, ItemInstance tabard,
         ItemInstance wrist, ItemInstance hands, ItemInstance waist, ItemInstance legs, ItemInstance feet, ItemInstance finger1, ItemInstance finger2,
     ItemInstance trinket1, ItemInstance trinket2, ItemInstance mainHand, ItemInstance offHand, ItemInstance ranged, ItemInstance projectile,
     ItemInstance projectileBag)
 {
     Initialize();
     //_trackEquippedItemChanges = trackEquippedItemChanges;
     IsLoading = true;
     _name = name;
     _realm = realm;
     _region = region;
     _race = race;
     Head = head;
     Neck = neck;
     Shoulders = shoulders;
     Back = back;
     Chest = chest;
     Shirt = shirt;
     Tabard = tabard;
     Wrist = wrist;
     Hands = hands;
     Waist = waist;
     Legs = legs;
     Feet = feet;
     Finger1 = finger1;
     Finger2 = finger2;
     Trinket1 = trinket1;
     Trinket2 = trinket2;
     MainHand = mainHand;
     OffHand = offHand;
     Ranged = ranged;
     Projectile = projectile;
     ProjectileBag = projectileBag;
     _activeBuffs = new List<Buff>();
     SetFaction();
     IsLoading = false;
     RecalculateSetBonuses();
     BossOptions = boss.Clone();
 }
Exemple #18
0
        public static Stats GetBaseStats(int level, CharacterClass characterClass, CharacterRace characterRace, DruidForm characterForm)
        {   // Health, Mana and some other things are same for every race.
            lock (syncLock)
            {
                #region Cache
                if (level == _lastLevel &&
                    characterClass == _lastClass &&
                    characterRace == _lastRace &&
                    characterForm == _lastForm)
                {
                    return(_lastStats.Clone());
                }
                _lastLevel = level;
                _lastClass = characterClass;
                _lastRace  = characterRace;
                _lastForm  = characterForm;
                #endregion

                Stats S = new Stats();

                #region Base Stats
                #region All Classes
                S.Miss  = 0.05f;
                S.Block = 0.0f;
                S.Parry = 0.0f;
                #endregion
                switch (characterClass)
                {
                    #region Death Knight
                case CharacterClass.DeathKnight:
                    // Blood Elf, Draenei, Dwarf, Gnome, Human, Night Elf, Orc, Tauren, Troll, Undead
                    S.Mana         = 0;
                    S.Health       = 8121;
                    S.Armor        = 0;
                    S.AttackPower  = 220;
                    S.PhysicalCrit = 0.0319f;
                    S.Dodge        = 0.0362500f;
                    S.Parry        = 0.05f;
                    S.SpellPower   = 0;
                    S.SpellCrit    = 0.0f;
                    switch (characterRace)
                    {
                    case CharacterRace.BloodElf:
                        S.Strength  = 172;
                        S.Agility   = 114;
                        S.Stamina   = 158;
                        S.Intellect = 39;
                        S.Spirit    = 58;
                        break;

                    case CharacterRace.Draenei:
                        S.Strength  = 176;
                        S.Agility   = 109;
                        S.Stamina   = 162;
                        S.Intellect = 36;
                        S.Spirit    = 61;
                        break;

                    case CharacterRace.Dwarf:
                        S.Strength  = 177;
                        S.Agility   = 108;
                        S.Stamina   = 163;
                        S.Intellect = 34;
                        S.Spirit    = 58;
                        break;

                    case CharacterRace.Gnome:
                        S.Strength  = 170;
                        S.Agility   = 115;
                        S.Stamina   = 159;
                        S.Intellect = 37;           // 39/1.05 = 37.14 ~37
                        S.Spirit    = 59;
                        break;

                    case CharacterRace.Human:
                        S.Strength  = 175;
                        S.Agility   = 112;
                        S.Stamina   = 160;
                        S.Intellect = 35;
                        S.Spirit    = 58;       // 60/1.03 = 58.25 ~58.
                        break;

                    case CharacterRace.NightElf:
                        S.Strength  = 172;
                        S.Agility   = 117;
                        S.Stamina   = 159;
                        S.Intellect = 35;
                        S.Spirit    = 59;
                        break;

                    case CharacterRace.Orc:
                        S.Strength  = 178;
                        S.Agility   = 109;
                        S.Stamina   = 162;
                        S.Intellect = 32;
                        S.Spirit    = 62;
                        break;

                    case CharacterRace.Tauren:
                        S.Strength  = 180;
                        S.Agility   = 107;
                        S.Stamina   = 162;
                        S.Intellect = 30;
                        S.Spirit    = 61;
                        break;

                    case CharacterRace.Troll:
                        S.Strength  = 176;
                        S.Agility   = 114;
                        S.Stamina   = 165;
                        S.Intellect = 31;
                        S.Spirit    = 60;
                        break;

                    case CharacterRace.Undead:
                        S.Strength  = 174;
                        S.Agility   = 110;
                        S.Stamina   = 161;
                        S.Intellect = 33;
                        S.Spirit    = 64;
                        break;

                    default:
                        break;
                    }
                    break;

                    #endregion
                    #region Druid
                case CharacterClass.Druid:
                    // NightElf, Tauren
                    S.Mana       = 3496;
                    S.Health     = 7417;
                    S.Armor      = 0;
                    S.SpellPower = 0;
                    S.SpellCrit  = 0.0185f;
                    switch (characterForm)
                    {
                    case DruidForm.Moonkin:
                    case DruidForm.Caster:
                        S.AttackPower  = -10;
                        S.PhysicalCrit = 0.0743f;
                        S.Dodge        = 0.0556970f;  //??
                        break;

                    case DruidForm.Bear:
                        S.AttackPower            = 220;
                        S.PhysicalCrit           = 0.05f;
                        S.Dodge                  = 0.0556970f;
                        S.BonusStaminaMultiplier = 0.25f;
                        break;

                    case DruidForm.Cat:
                        S.AttackPower  = 140;
                        S.PhysicalCrit = 0.07476f;
                        S.Dodge        = 0.0556970f;
                        break;

                    default:
                        break;
                    }
                    if (characterRace == CharacterRace.NightElf)
                    {
                        S.Strength  = 85;
                        S.Agility   = 86;
                        S.Stamina   = 97;
                        S.Intellect = 143;
                        S.Spirit    = 159;
                    }
                    else if (characterRace == CharacterRace.Tauren)
                    {
                        S.Strength  = 94;
                        S.Agility   = 77;
                        S.Stamina   = 100;
                        S.Intellect = 140;
                        S.Spirit    = 185;
                    }
                    break;

                    #endregion
                    #region Hunter
                case CharacterClass.Hunter:
                    // Blood Elf, Draenei, Dwarf, Night Elf, Orc, Tauren, Troll

                    S.Mana              = 5046;
                    S.Armor             = 0;
                    S.AttackPower       = 140;
                    S.RangedAttackPower = 150;
                    S.PhysicalCrit      = -0.0153f;
                    S.Dodge             = -0.0412730f;
                    S.Parry             = 0.05f;
                    S.SpellPower        = 0;
                    S.SpellCrit         = 0.0360f;
                    switch (characterRace)
                    {
                    case CharacterRace.BloodElf:
                        S.Strength  = 71;
                        S.Agility   = 183;
                        S.Stamina   = 126;
                        S.Intellect = 94;
                        S.Spirit    = 96;
                        S.Health    = 7324;
                        break;

                    case CharacterRace.Draenei:
                        S.Strength  = 75;
                        S.Agility   = 178;
                        S.Stamina   = 129;
                        S.Intellect = 91;
                        S.Spirit    = 99;
                        S.Health    = 7400;
                        break;

                    case CharacterRace.Dwarf:
                        S.Strength  = 76;
                        S.Agility   = 177;
                        S.Stamina   = 131;
                        S.Intellect = 89;
                        S.Spirit    = 96;
                        S.Health    = 7412;
                        break;

                    case CharacterRace.NightElf:
                        S.Strength  = 71;
                        S.Agility   = 184;
                        S.Stamina   = 127;
                        S.Intellect = 90;
                        S.Spirit    = 97;
                        S.Health    = 7324;
                        break;

                    case CharacterRace.Orc:
                        S.Strength  = 77;
                        S.Agility   = 178;
                        S.Stamina   = 130;
                        S.Intellect = 87;
                        S.Spirit    = 100;
                        S.Health    = 7324;
                        break;

                    case CharacterRace.Tauren:
                        S.Strength  = 79;
                        S.Agility   = 176;
                        S.Stamina   = 130;
                        S.Intellect = 85;
                        S.Spirit    = 99;
                        S.Health    = 7400;
                        break;

                    case CharacterRace.Troll:
                        S.Strength  = 75;
                        S.Agility   = 183;
                        S.Stamina   = 129;
                        S.Intellect = 86;
                        S.Spirit    = 98;
                        S.Health    = 7324;
                        break;

                    default:
                        break;
                    }
                    break;

                    #endregion
                    #region Mage
                case CharacterClass.Mage:
                    // Blood Elf, Draenei, Gnome, Human, Troll, Undead
                    S.Mana         = 3268;
                    S.Health       = 6963;
                    S.Armor        = 0;
                    S.AttackPower  = -10;
                    S.PhysicalCrit = 0.03f;
                    S.Dodge        = 0.0361870f;
                    S.SpellPower   = 0;
                    S.SpellCrit    = 0.0091f;
                    switch (characterRace)
                    {
                    case CharacterRace.BloodElf:
                        S.Strength  = 33;
                        S.Agility   = 45;
                        S.Stamina   = 57;
                        S.Intellect = 185;
                        S.Spirit    = 173;
                        break;

                    case CharacterRace.Draenei:
                        S.Strength  = 37;
                        S.Agility   = 40;
                        S.Stamina   = 58;
                        S.Intellect = 182;
                        S.Spirit    = 176;
                        break;

                    case CharacterRace.Gnome:
                        S.Strength  = 31;
                        S.Agility   = 46;
                        S.Stamina   = 58;
                        S.Intellect = 184;         // 193/1.05 = 183.8 ~184.
                        S.Spirit    = 174;
                        break;

                    case CharacterRace.Human:
                        S.Strength  = 36;
                        S.Agility   = 43;
                        S.Stamina   = 59;
                        S.Intellect = 181;
                        S.Spirit    = 174;      // 179/1.03 = 173.8 ~174
                        break;

                    case CharacterRace.Troll:
                        S.Strength  = 37;
                        S.Agility   = 45;
                        S.Stamina   = 60;
                        S.Intellect = 177;
                        S.Spirit    = 175;
                        break;

                    case CharacterRace.Undead:
                        S.Strength  = 35;
                        S.Agility   = 41;
                        S.Stamina   = 60;
                        S.Intellect = 179;
                        S.Spirit    = 179;
                        break;

                    default:
                        break;
                    }
                    break;

                    #endregion
                    #region Paladin
                case CharacterClass.Paladin:
                    // Blood Elf, Draenei, Dwarf, Human
                    S.Mana         = 4394;
                    S.Health       = 6934;
                    S.Armor        = 0;
                    S.AttackPower  = 240;
                    S.PhysicalCrit = 0.0327f;
                    S.SpellPower   = 0;
                    S.SpellCrit    = 0.03336f;
                    S.Dodge        = 0.0349430f;
                    S.Parry        = 0.05f;
                    S.Block        = 0.05f;
                    S.Defense      = 400.0f;
                    switch (characterRace)
                    {
                    case CharacterRace.BloodElf:
                        S.Strength  = 148;
                        S.Agility   = 92;
                        S.Stamina   = 143;
                        S.Intellect = 101;
                        S.Spirit    = 103;
                        break;

                    case CharacterRace.Draenei:
                        S.Strength  = 152;
                        S.Agility   = 87;
                        S.Stamina   = 143;
                        S.Intellect = 98;
                        S.Spirit    = 107;
                        break;

                    case CharacterRace.Dwarf:
                        S.Strength  = 153;
                        S.Agility   = 86;
                        S.Stamina   = 146;
                        S.Intellect = 97;
                        S.Spirit    = 104;
                        break;

                    case CharacterRace.Human:
                        S.Strength  = 151;
                        S.Agility   = 90;
                        S.Stamina   = 143;
                        S.Intellect = 98;
                        S.Spirit    = 108;
                        break;

                    default:
                        break;
                    }
                    break;

                    #endregion
                    #region Priest
                case CharacterClass.Priest:
                    // Blood Elf, Draenei, Dwarf, Human, Night Elf, Troll, Undead
                    S.Mana         = 3863;
                    S.Health       = 6960;
                    S.Armor        = 0;
                    S.AttackPower  = -10;
                    S.PhysicalCrit = 0.027f;
                    S.Dodge        = 0.0337780f;
                    S.SpellPower   = 0;
                    S.SpellCrit    = 0.0124f;
                    switch (characterRace)
                    {
                    case CharacterRace.BloodElf:
                        S.Strength  = 40;
                        S.Agility   = 53;
                        S.Stamina   = 65;
                        S.Intellect = 178;
                        S.Spirit    = 180;
                        break;

                    case CharacterRace.Draenei:
                        S.Strength  = 44;
                        S.Agility   = 48;
                        S.Stamina   = 66;
                        S.Intellect = 175;
                        S.Spirit    = 183;
                        break;

                    case CharacterRace.Dwarf:
                        S.Strength  = 45;
                        S.Agility   = 47;
                        S.Stamina   = 70;
                        S.Intellect = 176;
                        S.Spirit    = 180;
                        break;

                    case CharacterRace.Human:
                        S.Strength  = 43;
                        S.Agility   = 51;
                        S.Stamina   = 67;
                        S.Intellect = 174;
                        S.Spirit    = 181;          // 186/1.03 = 180.5->181
                        break;

                    case CharacterRace.NightElf:
                        S.Strength  = 40;
                        S.Agility   = 56;
                        S.Stamina   = 66;
                        S.Intellect = 174;
                        S.Spirit    = 181;
                        break;

                    case CharacterRace.Troll:
                        S.Strength  = 44;
                        S.Agility   = 53;
                        S.Stamina   = 68;
                        S.Intellect = 170;
                        S.Spirit    = 182;
                        break;

                    case CharacterRace.Undead:
                        S.Strength  = 42;
                        S.Agility   = 49;
                        S.Stamina   = 68;
                        S.Intellect = 172;
                        S.Spirit    = 186;
                        break;

                    default:
                        break;
                    }
                    break;

                    #endregion
                    #region Rogue
                case CharacterClass.Rogue:
                    // Blood Elf, Dwarf, Gnome, Human, Night Elf, Orc, Troll, Undead
                    S.Mana         = 0;
                    S.Health       = 7604;
                    S.Armor        = 0;
                    S.AttackPower  = 140;
                    S.PhysicalCrit = -0.00295f;
                    S.Dodge        = 0.0205570f;
                    S.Parry        = 0.05f;
                    S.SpellPower   = 0;
                    S.SpellCrit    = 0f;
                    switch (characterRace)
                    {
                    case CharacterRace.BloodElf:
                        S.Strength  = 110;
                        S.Agility   = 191;
                        S.Stamina   = 103;
                        S.Intellect = 47;
                        S.Spirit    = 66;
                        break;

                    case CharacterRace.Dwarf:
                        S.Strength  = 115;
                        S.Agility   = 185;
                        S.Stamina   = 108;
                        S.Intellect = 42;
                        S.Spirit    = 66;
                        break;

                    case CharacterRace.Gnome:
                        S.Strength  = 108;
                        S.Agility   = 192;
                        S.Stamina   = 104;
                        S.Intellect = 46;           // 48/1.05 = 45.71 ~46
                        S.Spirit    = 67;
                        break;

                    case CharacterRace.Human:
                        S.Strength  = 113;
                        S.Agility   = 189;
                        S.Stamina   = 105;
                        S.Intellect = 43;
                        S.Spirit    = 67;       // 69/1.03 = 66.99 ~67
                        break;

                    case CharacterRace.NightElf:
                        S.Strength  = 110;
                        S.Agility   = 194;
                        S.Stamina   = 104;
                        S.Intellect = 43;
                        S.Spirit    = 67;
                        break;

                    case CharacterRace.Orc:
                        S.Strength  = 116;
                        S.Agility   = 186;
                        S.Stamina   = 107;
                        S.Intellect = 40;
                        S.Spirit    = 70;
                        break;

                    case CharacterRace.Troll:
                        S.Strength  = 114;
                        S.Agility   = 191;
                        S.Stamina   = 108;
                        S.Intellect = 39;
                        S.Spirit    = 68;
                        break;

                    case CharacterRace.Undead:
                        S.Strength  = 112;
                        S.Agility   = 187;
                        S.Stamina   = 105;
                        S.Intellect = 41;
                        S.Spirit    = 72;
                        break;

                    default:
                        break;
                    }
                    break;

                    #endregion
                    #region Shaman
                case CharacterClass.Shaman:
                    // Draenei, Orc, Tauren, Troll
                    S.Mana         = 4396;
                    S.Health       = 6960;
                    S.Armor        = 0;
                    S.AttackPower  = 140;
                    S.PhysicalCrit = 0.0292f;
                    S.Dodge        = 0.0206800f;
                    S.Block        = 0.05f;
                    S.SpellPower   = 0;
                    S.SpellCrit    = 0.022f;
                    switch (characterRace)
                    {
                    case CharacterRace.Draenei:
                        S.Strength  = 121;
                        S.Agility   = 71;
                        S.Stamina   = 136;
                        S.Intellect = 128;
                        S.Spirit    = 145;
                        break;

                    case CharacterRace.Orc:
                        S.Strength  = 123;
                        S.Agility   = 71;
                        S.Stamina   = 137;
                        S.Intellect = 125;
                        S.Spirit    = 145;
                        break;

                    case CharacterRace.Tauren:
                        S.Strength  = 125;
                        S.Agility   = 70;
                        S.Stamina   = 137;
                        S.Intellect = 124;
                        S.Spirit    = 145;
                        break;

                    case CharacterRace.Troll:
                        S.Strength  = 121;
                        S.Agility   = 76;
                        S.Stamina   = 137;
                        S.Intellect = 124;
                        S.Spirit    = 144;
                        break;

                    default:
                        break;
                    }
                    break;

                    #endregion
                    #region Warlock
                case CharacterClass.Warlock:
                    // Blood Elf, Gnome, Human, Orc, Undead
                    S.Mana         = 3856;
                    S.Health       = 7164;
                    S.Armor        = 0;
                    S.AttackPower  = -10;
                    S.PhysicalCrit = 0.028f;
                    S.Dodge        = 0.0238110f;
                    S.SpellPower   = 0;
                    S.SpellCrit    = 0.01701f;
                    switch (characterRace)
                    {
                    case CharacterRace.BloodElf:
                        S.Strength  = 56;
                        S.Agility   = 69;
                        S.Stamina   = 87;
                        S.Intellect = 163;
                        S.Spirit    = 165;
                        break;

                    case CharacterRace.Gnome:
                        S.Strength  = 54;
                        S.Agility   = 70;
                        S.Stamina   = 88;
                        S.Intellect = 162;          // 170/1.05 = 161.9 ~162
                        S.Spirit    = 166;
                        break;

                    case CharacterRace.Human:
                        S.Strength  = 59;
                        S.Agility   = 67;
                        S.Stamina   = 89;
                        S.Intellect = 159;
                        S.Spirit    = 165;      // 170/1.03 = 165.05 ~165
                        break;

                    case CharacterRace.Orc:
                        S.Strength  = 62;
                        S.Agility   = 64;
                        S.Stamina   = 91;
                        S.Intellect = 156;
                        S.Spirit    = 169;
                        break;

                    case CharacterRace.Undead:
                        S.Strength  = 58;
                        S.Agility   = 65;
                        S.Stamina   = 90;
                        S.Intellect = 157;
                        S.Spirit    = 171;
                        break;

                    default:
                        break;
                    }
                    break;

                    #endregion
                    #region Warrior
                case CharacterClass.Warrior:
                    // Draenei, Dwarf, Gnome, Human, Night Elf, Orc, Tauren, Troll, Undead
                    S.Mana         = 0f;
                    S.Health       = 8121f;
                    S.Armor        = 0f;
                    S.AttackPower  = 220f;
                    S.PhysicalCrit = 0.03192f;     // This + the base agi makes 4.88%
                    S.Dodge        = 0.03664f;
                    S.Parry        = 0.05f;
                    S.Block        = 0.05f;
                    S.SpellPower   = 0f;
                    S.SpellCrit    = 0.0f;
                    S.Defense      = 400.0f;
                    switch (characterRace)
                    {
                    case CharacterRace.Draenei:
                        S.Strength  = 182;
                        S.Agility   = 110;
                        S.Stamina   = 166;
                        S.Intellect = 37;
                        S.Spirit    = 61;
                        break;

                    case CharacterRace.Dwarf:
                        S.Strength  = 176;
                        S.Agility   = 109;
                        S.Stamina   = 162;
                        S.Intellect = 35;
                        S.Spirit    = 58;
                        break;

                    case CharacterRace.Gnome:
                        S.Strength  = 169;
                        S.Agility   = 116;
                        S.Stamina   = 158;
                        S.Intellect = 38;           // 40/1.05 = 38.095 ~38.
                        S.Spirit    = 59;
                        break;

                    case CharacterRace.Human:
                        S.Strength  = 174f;
                        S.Agility   = 113f;
                        S.Stamina   = 159f;
                        S.Intellect = 36f;
                        S.Spirit    = 58f;       // 60/1.03 = 58.25 ~58
                        break;

                    case CharacterRace.NightElf:
                        S.Strength  = 171;
                        S.Agility   = 118;
                        S.Stamina   = 158;
                        S.Intellect = 36;
                        S.Spirit    = 59;
                        break;

                    case CharacterRace.Orc:
                        S.Strength  = 177;
                        S.Agility   = 110;
                        S.Stamina   = 161;
                        S.Intellect = 33;
                        S.Spirit    = 62;
                        break;

                    case CharacterRace.Tauren:
                        S.Strength  = 179;
                        S.Agility   = 109;
                        S.Stamina   = 161;
                        S.Intellect = 31;
                        S.Spirit    = 61;
                        break;

                    case CharacterRace.Troll:
                        S.Strength  = 185;
                        S.Agility   = 115;
                        S.Stamina   = 162;
                        S.Intellect = 32;
                        S.Spirit    = 60;
                        break;

                    case CharacterRace.Undead:
                        S.Strength  = 183;
                        S.Agility   = 111;
                        S.Stamina   = 169;
                        S.Intellect = 34;
                        S.Spirit    = 64;
                        break;

                    default:
                        break;
                    }
                    break;

                    #endregion
                    #region No Class
                default:
                    break;
                    #endregion
                }
                #endregion

                #region Racials
                if (characterRace == CharacterRace.Gnome)
                {
                    S.BonusIntellectMultiplier = 0.05f;
                }
                else if (characterRace == CharacterRace.Human)
                {
                    S.BonusSpiritMultiplier = 0.03f;
                }
                else if (characterRace == CharacterRace.NightElf)
                {
                    S.Miss += 0.02f;
                }
                else if (characterRace == CharacterRace.Tauren)
                {
                    S.Health = S.Health * 1.05f;
                }
                else if (characterRace == CharacterRace.Troll)
                {
                    if (characterClass == CharacterClass.DeathKnight || characterClass == CharacterClass.Warrior || characterClass == CharacterClass.Rogue)
                    {
                        S.AddSpecialEffect(new SpecialEffect(Trigger.Use, new Stats()
                        {
                            PhysicalHaste = 0.2f
                        }, 10f, 180f));
                    }
                    else
                    {
                        S.AddSpecialEffect(new SpecialEffect(Trigger.Use, new Stats()
                        {
                            SpellHaste = 0.2f, PhysicalHaste = 0.2f
                        }, 10f, 180f));
                    }
                }
                else if (characterRace == CharacterRace.Orc)
                {
                    if (characterClass == CharacterClass.Shaman)
                    {
                        S.AddSpecialEffect(new SpecialEffect(Trigger.Use, new Stats()
                        {
                            AttackPower = 2 + (level * 4), SpellPower = 3 + (level * 2)
                        }, 15f, 120f));
                    }
                    else if (characterClass == CharacterClass.Warlock)
                    {
                        S.AddSpecialEffect(new SpecialEffect(Trigger.Use, new Stats()
                        {
                            SpellPower = 3 + (level * 2)
                        }, 15f, 120f));
                    }
                    else
                    {
                        S.AddSpecialEffect(new SpecialEffect(Trigger.Use, new Stats()
                        {
                            AttackPower = 2 + (level * 4)
                        }, 15f, 120f));
                    }
                }
                #endregion

                _lastStats = S.Clone();
                return(S);
            }
        }
Exemple #19
0
        // Public constructor for a Non-player character
        public NonPlayerCharacter(string aDescription, CharacterRace aRace, CharacterClass aClass) : base (aDescription, aRace, aClass)
        {


        }
Exemple #20
0
 public static Item[] GetRelevantItems(CalculationsBase model, CharacterRace race)
 {
     return(_instance.GetRelevantItems(model, race));
 }
Exemple #21
0
        private void ValidateCharacter(string name, CharacterFaction characterFaction, CharacterRace characterRace, CharacterClass characterClass)
        {
            if (String.IsNullOrEmpty(name))
            {
                throw new Exception("Character must have a name");
            }

            #region Faction Validation

            if (characterFaction == CharacterFaction.Horde)
            {
                if (characterRace != CharacterRace.Orc &&
                    characterRace != CharacterRace.Tauren &&
                    characterRace != CharacterRace.BloodElf)
                {
                    throw new Exception("Only Orcs, Taurens, and Blood Elfs can fight for the Horde");
                }
            }
            else
            {
                if (characterRace != CharacterRace.Human &&
                    characterRace != CharacterRace.Gnome &&
                    characterRace != CharacterRace.Worgen)
                {
                    throw new Exception("Only Humans, Gnomes, and Worgen can fight for the Alliance");
                }
            }

            #endregion

            #region Race Validation

            if (characterClass == CharacterClass.Druid)
            {
                if (characterRace != CharacterRace.Tauren &&
                    characterRace != CharacterRace.Worgen)
                {
                    throw new Exception("This race cannot be a Druid");
                }
            }

            if (characterRace == CharacterRace.BloodElf && characterClass == CharacterClass.Warrior)
            {
                throw new Exception("Blood Elfs cannot be Warriors");
            }

            #endregion
        }
Exemple #22
0
 public Player(string name, CharacterGender GenderSelect, CharacterRace race, CharacterProfession profession) : base()
 {
     Name   = name;
     Gender = GenderSelect;
     Race   = race;
 }
Exemple #23
0
 public void RaceChange()
 {
     charRace = (CharacterRace)raceChange.value;
 }
Exemple #24
0
        public void Load(string id)
        {
            MongoUtils.MongoData.ConnectToDatabase();
            MongoDatabase   characterDB         = MongoUtils.MongoData.GetDatabase("Characters");
            MongoCollection characterCollection = characterDB.GetCollection <BsonDocument>("NPCCharacters");
            IMongoQuery     query = Query.EQ("_id", ObjectId.Parse(id));
            BsonDocument    found = characterCollection.FindOneAs <BsonDocument>(query);

            ID                = found["_id"].AsObjectId.ToString();
            FirstName         = found["FirstName"].AsString.CamelCaseWord();
            LastName          = found["LastName"].AsString.CamelCaseWord();
            _class            = (CharacterClass)Enum.Parse(typeof(CharacterClass), found["Class"].AsString.CamelCaseWord());
            _race             = (CharacterRace)Enum.Parse(typeof(CharacterRace), found["Race"].AsString.CamelCaseWord());
            _gender           = (Genders)Enum.Parse(typeof(Genders), found["Gender"].AsString.CamelCaseWord());
            _skinType         = (SkinType)Enum.Parse(typeof(SkinType), found["SkinType"].AsString.CamelCaseWord());
            _skinColor        = (SkinColors)Enum.Parse(typeof(SkinColors), found["SkinColor"].AsString.CamelCaseWord());
            _skinType         = (SkinType)Enum.Parse(typeof(SkinType), found["SkinType"].AsString.CamelCaseWord());
            _hairColor        = (HairColors)Enum.Parse(typeof(HairColors), found["HairColor"].AsString.CamelCaseWord());
            _eyeColor         = (EyeColors)Enum.Parse(typeof(EyeColors), found["EyeColor"].AsString.CamelCaseWord());
            _stanceState      = (CharacterStanceState)Enum.Parse(typeof(CharacterStanceState), found["StanceState"].AsString.CamelCaseWord());
            _actionState      = (CharacterActionState)Enum.Parse(typeof(CharacterActionState), found["ActionState"].AsString.CamelCaseWord());
            Description       = found["Description"].AsString;
            Location          = found["Location"].AsString;
            Height            = found["Height"].AsDouble;
            Weight            = found["Weight"].AsDouble;
            IsNPC             = found["IsNPC"].AsBoolean;
            MobTypeID         = found["MobTypeID"].AsInt32;
            NextAiAction      = found["NextAiAction"].ToUniversalTime();
            InCombat          = found["InCombat"].AsBoolean;
            LastCombatTime    = found["LastCombatTime"].ToUniversalTime();
            CurrentTarget     = found["CurrentTarget"].AsString != "" ? found["CurrentTarget"].AsString : null;
            LastTarget        = found["LastTarget"].AsString != "" ? found["LastTarget"].AsString : null;
            Fsm.state         = Fsm.GetStateFromName(found["AiState"].AsString);
            Fsm.previousState = Fsm.GetStateFromName(found["previousAiState"].AsString);
            Fsm.globalState   = Fsm.GetStateFromName(found["AiGlobalState"].AsString);
            Experience        = found["Experience"].AsInt64;
            Level             = found["Level"].AsInt32;
            Title             = found.Contains("Title") ? found["Title"].AsString : "";
            KillerID          = found.Contains("KillerID") ? found["KillerID"].AsString : "";

            //if you just use var instead of casting it like this you will be in a world of pain and suffering when dealing with subdocuments.
            BsonArray    playerAttributes = found["Attributes"].AsBsonArray;
            BsonArray    xpTracker        = found["XpTracker"].AsBsonArray;
            BsonDocument triggers         = found["Triggers"].AsBsonDocument;
            BsonArray    bonusesList      = null;

            if (found.Contains("Bonuses"))
            {
                bonusesList = found["Bonuses"].AsBsonArray;
            }

            if (playerAttributes != null)
            {
                foreach (BsonDocument attrib in playerAttributes)
                {
                    if (!this.Attributes.ContainsKey(attrib["Name"].ToString()))
                    {
                        Attribute tempAttrib = new Attribute();
                        tempAttrib.Name      = attrib["Name"].ToString();
                        tempAttrib.Value     = attrib["Value"].AsDouble;
                        tempAttrib.Max       = attrib["Max"].AsDouble;
                        tempAttrib.RegenRate = attrib["RegenRate"].AsDouble;


                        this.Attributes.Add(tempAttrib.Name, tempAttrib);
                    }
                    else
                    {
                        this.Attributes[attrib["Name"].ToString()].Max       = attrib["Max"].AsDouble;
                        this.Attributes[attrib["Name"].ToString()].Value     = attrib["Value"].AsDouble;
                        this.Attributes[attrib["Name"].ToString()].RegenRate = attrib["RegenRate"].AsDouble;
                    }
                }
            }

            if (xpTracker != null && xpTracker.Count > 0)
            {
                foreach (BsonDocument track in xpTracker)
                {
                    //we just newed this up so it should always have to be refilled
                    damageTracker.Add(track["ID"].AsString, track["Value"].AsDouble);
                }
            }

            ITrigger trigger = new GeneralTrigger(triggers, "NPC");

            Triggers.Add(trigger);

            if (bonusesList != null && bonusesList.Count > 0)
            {
                Bonuses.LoadFromBson(bonusesList);
            }
        }
Exemple #25
0
        public NPC(CharacterRace race, CharacterClass characterClass, Genders gender, Languages language, SkinColors skinColor, SkinType skinType, HairColors hairColor, EyeColors eyeColor, BodyBuild build)
        {
            Messages = new Queue <string>();

            Fsm       = AI.FSM.GetInstance();
            Fsm.state = Fsm.GetStateFromName("Wander");

            _class     = characterClass;
            _race      = race;
            _gender    = gender;
            _skinColor = skinColor;
            _skinType  = skinType;
            _hairColor = hairColor;
            _eyeColor  = eyeColor;
            _build     = build;

            _koCount     = new Tuple <int, DateTime>(0, DateTime.Now);
            _actionState = CharacterActionState.None;
            _stanceState = CharacterStanceState.Standing;

            _primaryLanguage = language;
            KnownLanguages   = new HashSet <Languages>();
            KnownLanguages.Add(_primaryLanguage);

            Inventory     = new Inventory();
            damageTracker = new Dictionary <string, double>();
            Triggers      = new List <ITrigger>();
            Bonuses       = new StatBonuses();

            FirstName           = "";
            LastName            = "";
            Description         = "";
            Age                 = 17;     //Do we want an age? And are we going to advance it every in game year?  Players could be 400+ years old rather quick.
            Weight              = 180.0d; //pounds or kilos?
            Height              = 70.0d;  //inches or centimeters?
            Location            = "A0";
            InCombat            = false;
            LastCombatTime      = DateTime.MinValue.ToUniversalTime();
            IsNPC               = true;
            Leveled             = false;
            MainHand            = "WIELD_RIGHT";
            NextLevelExperience = 300;
            Level               = 1;
            Experience          = 0;
            PointsToSpend       = 0;
            IsMob               = false;

            Inventory = new Inventory();
            Equipment = new Equipment();

            Inventory.playerID = this.ID;
            Equipment.playerID = this.ID;

            Attributes = new Dictionary <string, Attribute>();

            Attributes.Add("Hitpoints", new Attribute(200.0d, "Hitpoints", 200.0d, 0.2d, 1));
            Attributes.Add("Dexterity", new Attribute(10.0d, "Dexterity", 10.0d, 0.0d, 1));
            Attributes.Add("Strength", new Attribute(10.0d, "Strength", 10.0d, 0.0d, 1));
            Attributes.Add("Intelligence", new Attribute(10.0d, "Intelligence", 10.0d, 0.0d, 1));
            Attributes.Add("Endurance", new Attribute(10.0d, "Endurance", 10.0d, 0.0d, 1));
            Attributes.Add("Charisma", new Attribute(10.0d, "Charisma", 10.0d, 0.0d, 1));

            SubAttributes = new Dictionary <string, double>();

            SubAttributes.Add("Agility", 10.0d);
            SubAttributes.Add("Toughness", 10.0d);
            SubAttributes.Add("Cunning", 10.0d);
            SubAttributes.Add("Wisdom", 10.0d);
            SubAttributes.Add("Leadership", 10.0d);
        }
Exemple #26
0
		public async void Load(ObjectId id) {
			var characterCollection = MongoUtils.MongoData.GetCollection<NPC>("Characters", "NPCCharacters");
			var found = await MongoUtils.MongoData.RetrieveObjectAsync<NPC>(characterCollection, n => n.Id == id);
            
			Id = found.Id;
			FirstName = found.FirstName.CamelCaseWord();
			LastName = found.LastName.CamelCaseWord();
            _class = found.Class;
            _race = found.Race;
            _gender = found.Gender;
            _skinType = found.SkinType;
            _skinColor = found.SkinColor;
            _hairColor = found.HairColor;
            _eyeColor = found.EyeColor;
			_stanceState = found.StanceState;
			_actionState = found.ActionState;
			Description = found.Description;
			Location = found.Location;
			Height = found.Height;
			Weight = found.Weight;
			IsNPC = found.IsNPC;
			MobTypeID = found.MobTypeID;
			NextAiAction = found.NextAiAction.ToUniversalTime();
			InCombat = found.InCombat;
			LastCombatTime = found.LastCombatTime.ToUniversalTime();
			CurrentTarget = found.CurrentTarget;
			LastTarget = found.LastTarget;
			Fsm.state = Fsm.GetStateFromName(found.AiState);
			Fsm.previousState = Fsm.GetStateFromName(found.PreviousAiState);
			Fsm.globalState = Fsm.GetStateFromName(found.AiGlobalState);
			Experience = found.Experience;
            Level = found.Level;
            Title = found.Title;
			KillerID = found.KillerID;

			Attributes = found.Attributes;
			XpTracker = found.XpTracker;
			Triggers = found.Triggers;
			Quests = found.Quests;
			Bonuses = found.Bonuses;
			StatBonus.Bonuses = Bonuses;
			
			//if (playerAttributes != null) {
			//	foreach (BsonDocument attrib in playerAttributes) {

			//		if (!this.Attributes.ContainsKey(attrib["Name"].ToString())) {
			//			Attribute tempAttrib = new Attribute();
			//			tempAttrib.Name = attrib["Name"].ToString();
			//			tempAttrib.Value = attrib["Value"].AsDouble;
			//			tempAttrib.Max = attrib["Max"].AsDouble;
			//			tempAttrib.RegenRate = attrib["RegenRate"].AsDouble;


			//			this.Attributes.Add(tempAttrib.Name, tempAttrib);
			//		}
			//		else {
			//			this.Attributes[attrib["Name"].ToString()].Max = attrib["Max"].AsDouble;
			//			this.Attributes[attrib["Name"].ToString()].Value = attrib["Value"].AsDouble;
			//			this.Attributes[attrib["Name"].ToString()].RegenRate = attrib["RegenRate"].AsDouble;
			//		}
			//	}
			//}

			//if (xpTracker != null && xpTracker.Count > 0) {
			//	foreach (BsonDocument track in xpTracker) {
			//		//we just newed this up so it should always have to be refilled
			//		damageTracker.Add(track["ID"].AsString, track["Value"].AsDouble);
			//	}
			//}

			//foreach (BsonDocument triggerdoc in triggers) {
			//	ITrigger trigger = new GeneralTrigger(triggerdoc, TriggerType.NPC);
			//	Triggers.Add(trigger);
			//}

			//if (questIds != null) {
			//	foreach (BsonDocument questDoc in questIds) {
			//		Dictionary<string, int> playerSteps = new Dictionary<string, int>();

			//		if (questDoc.Contains("PlayerIDs")) {
			//			foreach (var playerStep in questDoc["PlayerIDs"].AsBsonArray) {
			//				playerSteps.Add(playerStep["PlayerID"].AsString, playerStep["Step"].AsInt32);
			//			}
			//		}

			//		var quest = new Quests.Quest(questDoc["QuestID"].AsString, playerSteps);

			//		if (questDoc.Contains("AutoPlayers")) {
			//			foreach (var autoID in questDoc["AutoPlayers"].AsBsonArray) {
			//				quest.AutoProcessPlayer.Enqueue(autoID.AsString);
			//			}
			//		}
					
			//		Quests.Add(quest);
			//	}
			//}

			//if (bonusesList != null && bonusesList.Count > 0) {
			//	Bonuses.LoadFromBson(bonusesList);
			//}

			Inventory.playerID = Id;
			Equipment.playerID = Id;
		}
Exemple #27
0
        public void Load(string id)
        {
            MongoUtils.MongoData.ConnectToDatabase();
            MongoDatabase characterDB = MongoUtils.MongoData.GetDatabase("Characters");
            MongoCollection characterCollection = characterDB.GetCollection<BsonDocument>("NPCCharacters");
            IMongoQuery query = Query.EQ("_id", ObjectId.Parse(id));
            BsonDocument found = characterCollection.FindOneAs<BsonDocument>(query);

            ID = found["_id"].AsObjectId.ToString();
            FirstName = found["FirstName"].AsString.CamelCaseWord();
            LastName = found["LastName"].AsString.CamelCaseWord();
            _class = (CharacterClass)Enum.Parse(typeof(CharacterClass), found["Class"].AsString.CamelCaseWord());
            _race = (CharacterRace)Enum.Parse(typeof(CharacterRace), found["Race"].AsString.CamelCaseWord());
            _gender = (Genders)Enum.Parse(typeof(Genders), found["Gender"].AsString.CamelCaseWord());
            _skinType = (SkinType)Enum.Parse(typeof(SkinType), found["SkinType"].AsString.CamelCaseWord());
            _skinColor = (SkinColors)Enum.Parse(typeof(SkinColors), found["SkinColor"].AsString.CamelCaseWord());
            _skinType = (SkinType)Enum.Parse(typeof(SkinType), found["SkinType"].AsString.CamelCaseWord());
            _hairColor = (HairColors)Enum.Parse(typeof(HairColors), found["HairColor"].AsString.CamelCaseWord());
            _eyeColor = (EyeColors)Enum.Parse(typeof(EyeColors), found["EyeColor"].AsString.CamelCaseWord());
            _stanceState = (CharacterStanceState)Enum.Parse(typeof(CharacterStanceState), found["StanceState"].AsString.CamelCaseWord());
            _actionState = (CharacterActionState)Enum.Parse(typeof(CharacterActionState), found["ActionState"].AsString.CamelCaseWord());
            Description = found["Description"].AsString;
            Location = found["Location"].AsString;
            Height = found["Height"].AsDouble;
            Weight = found["Weight"].AsDouble;
            IsNPC = found["IsNPC"].AsBoolean;
            MobTypeID = found["MobTypeID"].AsInt32;
            NextAiAction = found["NextAiAction"].ToUniversalTime();
            InCombat = found["InCombat"].AsBoolean;
            LastCombatTime = found["LastCombatTime"].ToUniversalTime();
            CurrentTarget = found["CurrentTarget"].AsString != "" ? found["CurrentTarget"].AsString : null;
            LastTarget = found["LastTarget"].AsString != "" ? found["LastTarget"].AsString : null;
            Fsm.state = Fsm.GetStateFromName(found["AiState"].AsString);
            Fsm.previousState = Fsm.GetStateFromName(found["previousAiState"].AsString);
            Fsm.globalState = Fsm.GetStateFromName(found["AiGlobalState"].AsString);
            Experience = found["Experience"].AsInt64;
            Level = found["Level"].AsInt32;
            Title = found.Contains("Title") ? found["Title"].AsString : "";
            KillerID = found.Contains("KillerID") ? found["KillerID"].AsString : "";

            //if you just use var instead of casting it like this you will be in a world of pain and suffering when dealing with subdocuments.
            BsonArray playerAttributes = found["Attributes"].AsBsonArray;
            BsonArray xpTracker = found["XpTracker"].AsBsonArray;
            BsonDocument triggers = found["Triggers"].AsBsonDocument;
            BsonArray bonusesList = null;
            if (found.Contains("Bonuses")) {
                bonusesList = found["Bonuses"].AsBsonArray;
            }

            if (playerAttributes != null) {
                foreach (BsonDocument attrib in playerAttributes) {

                    if (!this.Attributes.ContainsKey(attrib["Name"].ToString())) {
                        Attribute tempAttrib = new Attribute();
                        tempAttrib.Name = attrib["Name"].ToString();
                        tempAttrib.Value = attrib["Value"].AsDouble;
                        tempAttrib.Max = attrib["Max"].AsDouble;
                        tempAttrib.RegenRate = attrib["RegenRate"].AsDouble;

                        this.Attributes.Add(tempAttrib.Name, tempAttrib);
                    }
                    else {
                        this.Attributes[attrib["Name"].ToString()].Max = attrib["Max"].AsDouble;
                        this.Attributes[attrib["Name"].ToString()].Value = attrib["Value"].AsDouble;
                        this.Attributes[attrib["Name"].ToString()].RegenRate = attrib["RegenRate"].AsDouble;
                    }
                }
            }

            if (xpTracker != null && xpTracker.Count > 0) {
                foreach (BsonDocument track in xpTracker) {
                    //we just newed this up so it should always have to be refilled
                    damageTracker.Add(track["ID"].AsString, track["Value"].AsDouble);
                }
            }

            ITrigger trigger = new GeneralTrigger(triggers, "NPC");
            Triggers.Add(trigger);

            if (bonusesList != null && bonusesList.Count > 0) {
                Bonuses.LoadFromBson(bonusesList);
            }
        }
Exemple #28
0
 public Partner(string pseudo, CharacterRace race, int size, int weight, int hp, Defence defences, int initiative, PlayerCharacter master) : base(pseudo, race, size, weight, hp, defences, initiative)
 {
     _master = master;
 }
Exemple #29
0
        public Character(Position position, char symbol, ConsoleColor colour, int health, int mana, int range, int attackDamage, CharacterRace race) : base(position, symbol, colour)
        {
            this.Health       = health;
            this.Mana         = mana;
            this.Range        = range;
            this.AttackDamage = attackDamage;
            this.Race         = race;

            this.inventory = new List <Item>();
        }
Exemple #30
0
        public NPC(CharacterRace race, CharacterClass characterClass, Genders gender, Languages language, SkinColors skinColor, SkinType skinType, HairColors hairColor, EyeColors eyeColor, BodyBuild build)
        {
            Messages = new Queue<string>();

            Fsm = AI.FSM.GetInstance();
            Fsm.state = Fsm.GetStateFromName("Wander");

            _class = characterClass;
            _race = race;
            _gender = gender;
            _skinColor = skinColor;
            _skinType = skinType;
            _hairColor = hairColor;
            _eyeColor = eyeColor;
            _build = build;

            _koCount = new Tuple<int, DateTime>(0, DateTime.Now);
            _actionState = CharacterActionState.None;
            _stanceState = CharacterStanceState.Standing;

            _primaryLanguage = language;
            KnownLanguages = new HashSet<Languages>();
            KnownLanguages.Add(_primaryLanguage);

            Inventory = new Inventory();
            damageTracker = new Dictionary<string, double>();
            Triggers = new List<ITrigger>();
            Bonuses = new StatBonuses();

            FirstName = "";
            LastName = "";
            Description = "";
            Age = 17;   //Do we want an age? And are we going to advance it every in game year?  Players could be 400+ years old rather quick.
            Weight = 180.0d; //pounds or kilos?
            Height = 70.0d;  //inches or centimeters?
            Location = "A0";
            InCombat = false;
            LastCombatTime = DateTime.MinValue.ToUniversalTime();
            IsNPC = true;
            Leveled = false;
            MainHand = "WIELD_RIGHT";
            NextLevelExperience = 300;
            Level = 1;
            Experience = 0;
            PointsToSpend = 0;
            IsMob = false;

            Inventory = new Inventory();
            Equipment = new Equipment();

            Inventory.playerID = this.ID;
            Equipment.playerID = this.ID;

            Attributes = new Dictionary<string, Attribute>();

            Attributes.Add("Hitpoints", new Attribute(200.0d, "Hitpoints", 200.0d, 0.2d, 1));
            Attributes.Add("Dexterity", new Attribute(10.0d, "Dexterity", 10.0d, 0.0d, 1));
            Attributes.Add("Strength", new Attribute(10.0d, "Strength", 10.0d, 0.0d, 1));
            Attributes.Add("Intelligence", new Attribute(10.0d, "Intelligence", 10.0d, 0.0d, 1));
            Attributes.Add("Endurance", new Attribute(10.0d, "Endurance", 10.0d, 0.0d, 1));
            Attributes.Add("Charisma", new Attribute(10.0d, "Charisma", 10.0d, 0.0d, 1));

            SubAttributes = new Dictionary<string, double>();

            SubAttributes.Add("Agility", 10.0d);
            SubAttributes.Add("Toughness", 10.0d);
            SubAttributes.Add("Cunning", 10.0d);
            SubAttributes.Add("Wisdom", 10.0d);
            SubAttributes.Add("Leadership", 10.0d);
        }
        void RandomizeByVariable(CharacterObjectGroups cog, CharacterGender gender, Elements elements, CharacterRace race, FacialHair facialHair, SkinColor skinColor, HeadCovering headCovering)
        {
            // if facial elements are enabled
            switch (elements)
            {
            case Elements.Yes:
                //select head with all elements
                if (cog.headAllElements.Count != 0)
                {
                    ActivateItem(cog.headAllElements[Random.Range(0, cog.headAllElements.Count)]);
                }

                //select eyebrows
                if (cog.eyebrow.Count != 0)
                {
                    ActivateItem(cog.eyebrow[Random.Range(0, cog.eyebrow.Count)]);
                }

                //select facial hair (conditional)
                if (cog.facialHair.Count != 0 && facialHair == FacialHair.Yes && gender == CharacterGender.Male && headCovering != HeadCovering.HeadCoverings_No_FacialHair)
                {
                    ActivateItem(cog.facialHair[Random.Range(0, cog.facialHair.Count)]);
                }

                // select hair attachment
                switch (headCovering)
                {
                case HeadCovering.HeadCoverings_Base_Hair:
                    // set hair attachment to index 1
                    if (_allGenderObjectGroups.all_Hair.Count != 0)
                    {
                        ActivateItem(_allGenderObjectGroups.all_Hair[1]);
                    }
                    if (_allGenderObjectGroups.headCoverings_Base_Hair.Count != 0)
                    {
                        ActivateItem(_allGenderObjectGroups.headCoverings_Base_Hair[Random.Range(0, _allGenderObjectGroups.headCoverings_Base_Hair.Count)]);
                    }
                    break;

                case HeadCovering.HeadCoverings_No_FacialHair:
                    // no facial hair attachment
                    if (_allGenderObjectGroups.all_Hair.Count != 0)
                    {
                        ActivateItem(_allGenderObjectGroups.all_Hair[Random.Range(0, _allGenderObjectGroups.all_Hair.Count)]);
                    }
                    if (_allGenderObjectGroups.headCoverings_No_FacialHair.Count != 0)
                    {
                        ActivateItem(_allGenderObjectGroups.headCoverings_No_FacialHair[Random.Range(0, _allGenderObjectGroups.headCoverings_No_FacialHair.Count)]);
                    }
                    break;

                case HeadCovering.HeadCoverings_No_Hair:
                    // select hair attachment
                    if (_allGenderObjectGroups.headCoverings_No_Hair.Count != 0)
                    {
                        ActivateItem(_allGenderObjectGroups.all_Hair[Random.Range(0, _allGenderObjectGroups.all_Hair.Count)]);
                    }
                    // if not human
                    if (race != CharacterRace.Human)
                    {
                        // select elf ear attachment
                        if (_allGenderObjectGroups.elf_Ear.Count != 0)
                        {
                            ActivateItem(_allGenderObjectGroups.elf_Ear[Random.Range(0, _allGenderObjectGroups.elf_Ear.Count)]);
                        }
                    }
                    break;
                }
                break;

            case Elements.No:
                //select head with no elements
                if (cog.headNoElements.Count != 0)
                {
                    ActivateItem(cog.headNoElements[Random.Range(0, cog.headNoElements.Count)]);
                }
                break;
            }

            // select torso starting at index 1
            if (cog.torso.Count != 0)
            {
                ActivateItem(cog.torso[Random.Range(1, cog.torso.Count)]);
            }

            // determine chance for upper arms to be different and activate
            if (cog.arm_Upper_Right.Count != 0)
            {
                RandomizeLeftRight(cog.arm_Upper_Right, cog.arm_Upper_Left, 15);
            }

            // determine chance for lower arms to be different and activate
            if (cog.arm_Lower_Right.Count != 0)
            {
                RandomizeLeftRight(cog.arm_Lower_Right, cog.arm_Lower_Left, 15);
            }

            // determine chance for hands to be different and activate
            if (cog.hand_Right.Count != 0)
            {
                RandomizeLeftRight(cog.hand_Right, cog.hand_Left, 15);
            }

            // select hips starting at index 1
            if (cog.hips.Count != 0)
            {
                ActivateItem(cog.hips[Random.Range(1, cog.hips.Count)]);
            }

            // determine chance for legs to be different and activate
            if (cog.leg_Right.Count != 0)
            {
                RandomizeLeftRight(cog.leg_Right, cog.leg_Left, 15);
            }

            // select chest attachment
            if (_allGenderObjectGroups.chest_Attachment.Count != 0)
            {
                ActivateItem(_allGenderObjectGroups.chest_Attachment[Random.Range(0, _allGenderObjectGroups.chest_Attachment.Count)]);
            }

            // select back attachment
            if (_allGenderObjectGroups.back_Attachment.Count != 0)
            {
                ActivateItem(_allGenderObjectGroups.back_Attachment[Random.Range(0, _allGenderObjectGroups.back_Attachment.Count)]);
            }

            // determine chance for shoulder attachments to be different and activate
            if (_allGenderObjectGroups.shoulder_Attachment_Right.Count != 0)
            {
                RandomizeLeftRight(_allGenderObjectGroups.shoulder_Attachment_Right, _allGenderObjectGroups.shoulder_Attachment_Left, 10);
            }

            // determine chance for elbow attachments to be different and activate
            if (_allGenderObjectGroups.elbow_Attachment_Right.Count != 0)
            {
                RandomizeLeftRight(_allGenderObjectGroups.elbow_Attachment_Right, _allGenderObjectGroups.elbow_Attachment_Left, 10);
            }

            // select hip attachment
            if (_allGenderObjectGroups.hips_Attachment.Count != 0)
            {
                ActivateItem(_allGenderObjectGroups.hips_Attachment[Random.Range(0, _allGenderObjectGroups.hips_Attachment.Count)]);
            }

            // determine chance for knee attachments to be different and activate
            if (_allGenderObjectGroups.knee_Attachement_Right.Count != 0)
            {
                RandomizeLeftRight(_allGenderObjectGroups.knee_Attachement_Right, _allGenderObjectGroups.knee_Attachement_Left, 10);
            }

            // start randomization of the random characters colors
            RandomizeColors(skinColor);
        }
Exemple #32
0
        public Character(CharacterClass characterClass, CharacterRace characterRace, string name)
        {
            this.Class = characterClass;
            this.Race  = characterRace;
            this.Name  = name;

            this.Health       = BASE_HEALTH;
            this.Mana         = BASE_MANA;
            this.Attack       = BASE_ATTACK;
            this.Defence      = BASE_DEFENCE;
            this.MagicAttack  = BASE_MAGIC_ATTACK;
            this.MagicDefence = BASE_MAGIC_DEFENCE;
            this.Exp          = 0;
            this.Level        = 1;
            this.Gold         = 0;
            this.Items        = new List <Item>();
            this.Spells       = new List <Spell>();

            ////Items added////
            Items.Add(new MaxMana.Tools.Consumable.HealthPotion());
            Items.Add(new Weapons.Excalibur());

            // Class Bonuses
            switch (characterClass)
            {
            case CharacterClass.Mage:
            {
                this.Health       += 2;
                this.Mana         += 8;
                this.Attack       += 2;
                this.Defence      += 2;
                this.MagicAttack  += 4;
                this.MagicDefence += 4;
                break;
            }

            case CharacterClass.Rogue:
            {
                this.Health       += 4;
                this.Mana         += 4;
                this.Attack       += 2;
                this.Defence      += 2;
                this.MagicAttack  += 2;
                this.MagicDefence += 2;
                break;
            }

            case CharacterClass.Warrior:
            {
                this.Health       += 8;
                this.Mana         += 2;
                this.Attack       += 4;
                this.Defence      += 4;
                this.MagicAttack  += 2;
                this.MagicDefence += 3;
                break;
            }
            }

            // Race Bonuses
            switch (characterRace)
            {
            case CharacterRace.Dwarf:
            {
                this.Health       += 4;
                this.Defence      += 4;
                this.MagicDefence += 4;
                this.Spells.Add(new Abilities.Headbutt());
                //double attack

                break;
            }

            case CharacterRace.Elf:
            {
                this.Mana         += 4;
                this.MagicAttack  += 4;
                this.MagicDefence += 4;
                this.Spells.Add(new Abilities.Snipe());
                //add critical chance
                break;
            }

            case CharacterRace.Human:
            {
                this.Health       += 2;
                this.Mana         += 2;
                this.Attack       += 2;
                this.Defence      += 2;
                this.MagicAttack  += 2;
                this.MagicDefence += 2;
                this.Spells.Add(new Abilities.CoinToss());
                //
                break;
            }
            }

            this.MaxHealth = this.Health;
            this.MaxMana   = this.Mana;
        }
Exemple #33
0
        public Character(string name, string realm, CharacterRegion region, CharacterRace race, BossOptions boss,
            string head, string neck, string shoulders, string back, string chest, string shirt, string tabard,
                string wrist, string hands, string waist, string legs, string feet, string finger1, string finger2, 
            string trinket1, string trinket2, string mainHand, string offHand, string ranged, string projectile, 
            string projectileBag)
        {
            Initialize();
            IsLoading = true;
            _name = name;
            _realm = realm;
            _region = region;
            _race = race;
            _head = head;
            _neck = neck;
            _shoulders = shoulders;
            _back = back;
            _chest = chest;
            _shirt = shirt;
            _tabard = tabard;
            _wrist = wrist;
            _hands = hands;
            _waist = waist;
            _legs = legs;
            _feet = feet;
            _finger1 = finger1;
            _finger2 = finger2;
            _trinket1 = trinket1;
            _trinket2 = trinket2;
            _mainHand = mainHand;
            _offHand = offHand;
            _ranged = ranged;
            _projectile = projectile;
            _projectileBag = projectileBag;

            WaistBlacksmithingSocketEnabled = true;
            _activeBuffs = new List<Buff>();
            SetFaction();
            IsLoading = false;
            RecalculateSetBonuses();

            BossOptions = boss.Clone();
        }
Exemple #34
0
        /// <summary>
        /// Deep copy constructor
        /// </summary>
        /// <param name="copy"></param>
        public Character(Character copy)
        {
            //copy constructor
            _class = copy._class;
            _race = copy._race;
            _gender = copy._gender;
            _skinColor = copy._skinColor;
            _skinType = copy._skinType;
            _hairColor = copy._hairColor;
            _eyeColor = copy._eyeColor;
            _build = copy._build;
            _koCount = new Tuple<int, DateTime>(0, DateTime.Now);
            _actionState = CharacterActionState.None;
            _stanceState = CharacterStanceState.Standing;

            _primaryLanguage = copy._primaryLanguage;
            KnownLanguages = new HashSet<Languages>();
            foreach (CharacterEnums.Languages lang in copy.KnownLanguages) {
                KnownLanguages.Add(lang);
            }

            FirstName = copy.FirstName;
            LastName = copy.LastName;
            Description = copy.Description;
            Age = copy.Age;   //Do we want an age? And are we going to advance it every in game year?  Players could be 400+ years old rather quick.
            Weight = copy.Weight; //pounds or kilos?
            Height = copy.Height;  //inches or centimeters?
            Location = "A1";
            InCombat = false;
            LastCombatTime = DateTime.MinValue.ToUniversalTime();
            IsNPC = false;
            Leveled = false;
            NextLevelExperience = 300;
            Level = 1;
            Experience = 0;
            PointsToSpend = 0;
            MainHand = "WIELD_RIGHT";

            Attributes = new Dictionary<string, Attribute>();

            foreach (KeyValuePair<string, Attribute> attrib in copy.Attributes){
                Attributes.Add(attrib.Key, attrib.Value);
            }

            SubAttributes = new Dictionary<string, double>();

            foreach (KeyValuePair<string, double> subAttrib in copy.SubAttributes) {
                SubAttributes.Add(subAttrib.Key, subAttrib.Value);
            }

            Inventory = new Inventory();

            this.Save();
        }
Exemple #35
0
        // The following are special contructors used by optimizer, they assume the cached items/enchant are always used, and the underlying gemmedid/enchantid are never used
        public Character(string name, string realm, CharacterRegion region, CharacterRace race, BossOptions boss,
            ItemInstance head, ItemInstance neck, ItemInstance shoulders, ItemInstance back, ItemInstance chest, ItemInstance shirt, ItemInstance tabard,
                ItemInstance wrist, ItemInstance hands, ItemInstance waist, ItemInstance legs, ItemInstance feet, ItemInstance finger1, ItemInstance finger2, 
            ItemInstance trinket1, ItemInstance trinket2, ItemInstance mainHand, ItemInstance offHand, ItemInstance ranged, ItemInstance projectile,
            ItemInstance projectileBag, List<Buff> activeBuffs, string model)
        {
            Initialize();
            IsLoading = true;
            _name = name;
            _realm = realm;
            _region = region;
            _race = race;
            _item[(int)CharacterSlot.Head] = head;
            _item[(int)CharacterSlot.Neck] = neck;
            _item[(int)CharacterSlot.Shoulders] = shoulders;
            _item[(int)CharacterSlot.Back] = back;
            _item[(int)CharacterSlot.Chest] = chest;
            _item[(int)CharacterSlot.Shirt] = shirt;
            _item[(int)CharacterSlot.Tabard] = tabard;
            _item[(int)CharacterSlot.Wrist] = wrist;
            _item[(int)CharacterSlot.Hands] = hands;
            _item[(int)CharacterSlot.Waist] = waist;
            _item[(int)CharacterSlot.Legs] = legs;
            _item[(int)CharacterSlot.Feet] = feet;
            _item[(int)CharacterSlot.Finger1] = finger1;
            _item[(int)CharacterSlot.Finger2] = finger2;
            _item[(int)CharacterSlot.Trinket1] = trinket1;
            _item[(int)CharacterSlot.Trinket2] = trinket2;
            _item[(int)CharacterSlot.MainHand] = mainHand;
            _item[(int)CharacterSlot.OffHand] = offHand;
            _item[(int)CharacterSlot.Ranged] = ranged;
            _item[(int)CharacterSlot.Projectile] = projectile;
            _item[(int)CharacterSlot.ProjectileBag] = projectileBag;
            IsLoading = false;
            ActiveBuffs = new List<Buff>(activeBuffs);
            SetFaction();
            CurrentModel = model;
            RecalculateSetBonuses();

            BossOptions = boss.Clone();
        }
Exemple #36
0
 public Item[] GetUnfilteredRelevantItems(CalculationsBase model, CharacterRace race)
 {
     List<Item> itemList = new List<Item>(AllItems).FindAll(new Predicate<Item>(
         delegate(Item item) 
         { 
             return model.IsItemRelevant(item) && item.FitsFaction(race); 
         }));
     return itemList.ToArray();
 }
Exemple #37
0
        public Character(string name, string realm, CharacterRegion region, CharacterRace race, BossOptions boss,
            ItemInstance[] items, List<Buff> activeBuffs, string model)
        {
            Initialize();
            IsLoading = true;
            _name = name;
            _realm = realm;
            _region = region;
            _race = race;
            Array.Copy(items, _item, items.Length);

            IsLoading = false;
            ActiveBuffs = new List<Buff>(activeBuffs);
            SetFaction();
            CurrentModel = model;
            RecalculateSetBonuses();

            BossOptions = boss.Clone();
        }
Exemple #38
0
 public static Item[] GetUnfilteredRelevantItems(CalculationsBase model, CharacterRace race) { return _instance.GetUnfilteredRelevantItems(model, race); }
Exemple #39
0
        // Fields for all Monsters
        // TBD

        // Public constructor for Monsters
        public MonsterCharacter(string aName, string aDescription, CharacterRace aRace, CharacterClass aClass) : base(aName, aDescription, aRace, aClass)
        {
            // TBD
        }
Exemple #40
0
 public Character(string aName, string aDescription, CharacterRace aRace, CharacterClass aClass, int hp = 2) : base (aName, aDescription)
 {
     // Change default HP to be a factor of race and class rather than directly specified
     // at the very least, it should be a final, optional parameter that can override the default
     _maxHitPoints = _currentHitPoints = hp;
     CharacterRace characterRace = aRace;
     CharacterClass characterClass = aClass;
 }
Exemple #41
0
 public static Stats GetBaseStats(int level, CharacterClass characterClass, CharacterRace characterRace)
 {
     return(GetBaseStats(level, characterClass, characterRace, DruidForm.Caster));
 }
Exemple #42
0
 public static Stats GetBaseStats(int level, CharacterClass characterClass, CharacterRace characterRace) { return GetBaseStats(level, characterClass, characterRace, DruidForm.Caster); }
Exemple #43
0
 public void showRacePanel(CharacterRace cr)
 {
     toggleAllExcept(getRaceTextField(cr));
 }
 public Hero(string Name, uint MaxHP = 0, uint Age = 0, CharacterGender Gender = CharacterGender.Male, CharacterRace Race = CharacterRace.People) : base(Name, MaxHP, Age)
 {
     this.Gender = Gender;
     this.Race   = Race;
 }
Exemple #45
0
        public static Stats GetBaseStats(int level, CharacterClass characterClass, CharacterRace characterRace, DruidForm characterForm)
        {   // Health, Mana and some other things are same for every race.
            lock (syncLock)
            {
                #region Cache
                if (level == _lastLevel
                    && characterClass == _lastClass
                    && characterRace == _lastRace
                    && characterForm == _lastForm)
                    return _lastStats.Clone();
                _lastLevel = level;
                _lastClass = characterClass;
                _lastRace = characterRace;
                _lastForm = characterForm;
                #endregion

                Stats S = new Stats();
                #region Race, not class benefit
                // Most Level 85 Race and Class Stats come from:
                // http://code.google.com/p/simulationcraft/source/browse/branches/cataclysm/engine/sc_rating.cpp?r=6207
                // When they were still at 80 as of Jan 01st, 2011

                // From SimCraft
                Stats race = new Stats();
                switch (characterRace)
                {
                    // Alliance
                    case CharacterRace.Human:    race.Strength = 20; race.Agility = 20; race.Stamina = 20; race.Intellect = 20; race.Spirit = 20; break;
                    case CharacterRace.Dwarf:    race.Strength = 25; race.Agility = 16; race.Stamina = 21; race.Intellect = 19; race.Spirit = 19; break;
                    case CharacterRace.NightElf: race.Strength = 16; race.Agility = 24; race.Stamina = 20; race.Intellect = 20; race.Spirit = 20; break;
                    case CharacterRace.Gnome:    race.Strength = 15; race.Agility = 22; race.Stamina = 20; race.Intellect = 24; race.Spirit = 20; break;
                    case CharacterRace.Draenei:  race.Strength = 21; race.Agility = 17; race.Stamina = 20; race.Intellect = 20; race.Spirit = 22; break;
                    case CharacterRace.Worgen:   race.Strength = 23; race.Agility = 22; race.Stamina = 20; race.Intellect = 16; race.Spirit = 19; break;
                    // Horde
                    case CharacterRace.Orc:      race.Strength = 23; race.Agility = 17; race.Stamina = 21; race.Intellect = 17; race.Spirit = 22; break;
                    case CharacterRace.Undead:   race.Strength = 19; race.Agility = 18; race.Stamina = 20; race.Intellect = 18; race.Spirit = 25; break;
                    case CharacterRace.Tauren:   race.Strength = 25; race.Agility = 16; race.Stamina = 21; race.Intellect = 16; race.Spirit = 22; break;
                    case CharacterRace.Troll:    race.Strength = 21; race.Agility = 22; race.Stamina = 20; race.Intellect = 16; race.Spirit = 21; break;
                    case CharacterRace.BloodElf: race.Strength = 17; race.Agility = 22; race.Stamina = 20; race.Intellect = 23; race.Spirit = 18; break;
                    case CharacterRace.Goblin:   race.Strength = 17; race.Agility = 22; race.Stamina = 20; race.Intellect = 23; race.Spirit = 20; break;
                    default: { break; }
                };
                // From Chardev (85)
                //Class           Str Agi Sta Int Spi
                //Druid            76  69  86 136 153
                //Shaman          111  60 128 119 136
                //Death Knight    171 101 154  16  44
                //Hunter           60 178 119  77  88
                //Mage             17  26  43 187 175
                //Paladin         144  77 136  86  97
                //Priest           26  34  51 188 183
                //Rogue           102 186  94  26  53
                //Warlock          43  51  76 161 166
                //Warrior         169 103 153  17  44
                #endregion

                #region Base Stats
                #region All Classes
                S.Miss  = 0.05f;
                S.Block = 0.00f;
                S.Parry = 0.00f;
                #endregion
                switch (characterClass)
                {
                    #region Death Knight
                    case CharacterClass.DeathKnight:
                        Stats dk = new Stats() {
                            Strength = 171, Agility = 101, Stamina = 274, Intellect = 16, Spirit = 44,
                            Health = 43025f,
                            Dodge = 0.05f, Parry = 0.05f, Block = 0.00f,
                            PhysicalCrit = 0.0049f, AttackPower = 595f,
                        };
                        S.Accumulate(race);
                        S.Accumulate(dk);
                        break;
                    #endregion
                    #region Druid
                    case CharacterClass.Druid:
                        Stats druid = new Stats() {
                            Strength = 76, Agility = 69, Stamina = 86, Intellect = 136, Spirit = 153,
                            Health = 39533f, Mana = 18635f,
                            Dodge = 0.03758f, Parry = 0.05f, Block = 0.05f,
                            PhysicalCrit = 0.03192f, AttackPower = 613f,
                            SpellCrit = 0.0185f, Mp5 = 931f,
                        };
                        S.Accumulate(race);
                        S.Accumulate(druid);
                        switch (characterForm)
                        {
                            case DruidForm.Moonkin:
                            case DruidForm.Caster:
                                S.AttackPower = -10;
                                S.PhysicalCrit = 0.0743f;
                                S.Dodge = 0.0556970f; //??
                                break;
                            case DruidForm.Bear:
                                S.AttackPower = 255;
                                S.PhysicalCrit = 0.074755f;
                                S.Dodge = 0.0556970f;
                                S.BonusStaminaMultiplier = 0.2f;
                                break;
                            case DruidForm.Cat:
                                S.AttackPower = 235;
                                S.PhysicalCrit = 0.074755f;
                                S.Dodge = 0.0556970f;
                                break;
                            default:
                                break;
                        }
                        break;
                    #endregion
                    #region Hunter
                    case CharacterClass.Hunter:
                        Stats hun = new Stats() {
                            // Stats updated 8/19/2011 4.2 w/ Troll Hunter: Tsevon @ US-Dragonmaw w/ no spec.
                            Strength = 60,
                            Agility = 178,
                            Stamina = 119,
                            Intellect = 77,
                            Spirit = 88,
                            Health = 39037,
                            Dodge = 0.03758f, Parry = 0.05f, 
                            // This assumes ALL AP from full AP += AGI * 2
                            // So naked Hunter has 31 AP un accounted for.
                            // Naked troll, no gear, no spec, LW & Skinning.
                            PhysicalCrit = 0, AttackPower = 31f, RangedAttackPower = 31f,
                        };
                        S.Accumulate(race);
                        S.Accumulate(hun);
                        break;
                    #endregion
                    #region Mage
                    case CharacterClass.Mage:
                        Stats mag = new Stats() {
                            Strength = 17, Agility = 26, Stamina = 43, Intellect = 187, Spirit = 175,
                            Health = 36853f, Mana = 17138f,
                            Dodge = 0.03758f, Parry = 0.05f,
                        };
                        S.Accumulate(race);
                        S.Accumulate(mag);
                        break;
                    #endregion
                    #region Paladin
                    case CharacterClass.Paladin:
                        Stats pal = new Stats() {
                            Strength = 144, Agility = 77, Stamina = 136, Intellect = 86, Spirit = 97,
                            Health = 43285f, Mana = 23422,
                            Dodge = 0.05f, Parry = 0.05f, Block = 0.05f,
                            PhysicalCrit = 0.00652f, AttackPower = 235f,
                            SpellCrit = 0.033355f,
                        };
                        S.Accumulate(race);
                        S.Accumulate(pal);
                        break;
                    #endregion
                    #region Priest
                    case CharacterClass.Priest:
                        // added adjustments to the base race here because the math using the previous stats
                        // just don't work for the in game calculations on priest tests. 
                        // also unsure how these changes would effect other modules if moved up.
                        // adding or subracting from the priest stats don't work and throws all other class
                        // calculations off. 
                        switch (characterRace)
                        {
                            case CharacterRace.Human: race.Spirit = 19; break;
                            case CharacterRace.Gnome: race.Intellect = 23; break;
                            case CharacterRace.Goblin: race.Spirit = 18; break;
                        }
                        Stats pri = new Stats() {
                            Strength = 26, Agility = 34, Stamina = 51, Intellect = 169, Spirit = 178,
                            Health = 43285f, Mana = 20590f,
                            Dodge = 0.0337780f,
                            Parry = 0.05f,
                            PhysicalCrit = 0.027f, SpellCrit = 0.012375f,
                        };
                        pri.Mp5 = pri.Mana * 0.05f;     // Always 5% of base mana in regen.
                        S.Accumulate(race);
                        S.Accumulate(pri);
                        break;
                    #endregion
                    #region Rogue
                    case CharacterClass.Rogue:
                        Stats rog = new Stats() {
                            Strength = 102, Agility = 186, Stamina = 94, Intellect = 26, Spirit = 53,
                            Health = 40529f,
                            Dodge = 0.03758f, Parry = 0.05f,
                            PhysicalCrit = 0.03192f, AttackPower = 613f,
                        };
                        S.Accumulate(race);
                        S.Accumulate(rog);
                        break;
                    #endregion
                    #region Shaman
                    case CharacterClass.Shaman:
                        Stats sha = new Stats() {
                            Strength = 111, Agility = 60, Stamina = 128, Intellect = 119, Spirit = 136,
                            Health = 37037f, Mana = 23430f,
                            Dodge = 0.0193f, Parry = 0.05f, Block = 0.05f,
                            PhysicalCrit = 0.02910375f, AttackPower = 140f,
                            SpellCrit = 0.022057f, SpellPower = -10,
                        };
                        S.Accumulate(race);
                        S.Accumulate(sha);
                        break;
                    #endregion
                    #region Warlock
                    case CharacterClass.Warlock:
                        Stats warlock = new Stats() { Strength = 43, Agility = 51, Stamina = 76, Intellect = 153, Spirit = 161,
                            Health = 38184f, Mana = 20553f,
                            Dodge = 0.0238110f, Parry = 0.05f, Block = 0.05f,
                            PhysicalCrit = 0.026219999417663f, SpellCrit = 0.017000000923872f,
                        };
                        S.Accumulate(race);
                        S.Accumulate(warlock);
                        break;
                    #endregion
                    #region Warrior
                    case CharacterClass.Warrior:
                        Stats war = new Stats() {
                            Strength = 169, Agility = 103, Stamina = 153, Intellect = 17, Spirit = 44,
                            Health = 43285f,
                            Dodge = 0.05f, Parry = 0.05f, Block = 0.05f,
                            PhysicalCrit = 0.03192f, AttackPower = 613f,
                        };
                        S.Accumulate(race);
                        S.Accumulate(war);
                        break;
                    #endregion
                    #region No Class
                    default:
                        break;
                    #endregion
                }
                #endregion

                #region Racials
                // Resistance do not stack with other buffs. Until then I'll commenting them out
                if (characterRace == CharacterRace.Gnome)  //CATA: changed from 5% int to 5% mana
                {
                    // S.ArcaneResistance += 85f;
                    S.BonusManaMultiplier = 0.05f;
                    //S.BonusIntellectMultiplier = 0.05f;
                }
                else if (characterRace == CharacterRace.Human)
                {
                    S.BonusSpiritMultiplier = 0.03f;
                    // Patch 4.0.6+ changed from a 3 minute cooldown to 2 minute cooldown
                    S.AddSpecialEffect(new SpecialEffect(Trigger.Use, new Stats() { PVPTrinket = 1 }, 0f, 120f));
                }
                else if (characterRace == CharacterRace.NightElf)
                {
                    // S.NatureResistance += 85f;
                    S.Miss += 0.02f;
                }
                else if (characterRace == CharacterRace.Dwarf)
                {
                    // S.FrostResistance += 85f;
                    // Armor +10% for 8 Sec.
                    S.AddSpecialEffect(new SpecialEffect(Trigger.Use, new Stats() { BaseArmorMultiplier = .1f }, 8, 120));
                    // TODO: Add debuff removal.  Doesn't work on all bosses so not sure if we want to.

                }
                else if (characterRace == CharacterRace.Draenei)
                {
                    // S.ArcaneResistance += 85f;
                    S.SpellHit += 0.01f;
                    S.PhysicalHit += 0.01f;
                    // Patch 4.0.6+ changed from a scaling Health restore to a flat 20% of max health
                    S.AddSpecialEffect(new SpecialEffect(Trigger.Use, new Stats() { HealthRestoreFromMaxHealth = 0.2f / 15f }, 15f, 180f));
                }
                else if (characterRace == CharacterRace.Worgen)
                {
                    // S.NatureResistance = 64f;
                    // S.ShadowResistance = 64f;
                    // Patch 4.0.6+ Darkflight changed from a 3 minute CD to a 2 minute CD
                    S.AddSpecialEffect(new SpecialEffect(Trigger.Use, new Stats() { MovementSpeed = 0.40f }, 10f, 120f));
                    S.PhysicalCrit += 0.01f;
                    S.SpellCrit += 0.01f;
                }
                else if (characterRace == CharacterRace.Tauren)
                {
                    // S.NatureResistance = 85f;
                    S.Health = (float)Math.Floor(S.Health * 1.05f);
                }
                else if (characterRace == CharacterRace.Troll)
                {
                    S.SnareRootDurReduc = .15f;
                    if (characterClass == CharacterClass.DeathKnight || characterClass == CharacterClass.Warrior || characterClass == CharacterClass.Rogue)
                        S.AddSpecialEffect(new SpecialEffect(Trigger.Use, new Stats() { PhysicalHaste = 0.2f }, 10f, 180f));
                    else
                        S.AddSpecialEffect(new SpecialEffect(Trigger.Use, new Stats() { SpellHaste = 0.2f, PhysicalHaste = 0.2f }, 10f, 180f));
                }
                else if (characterRace == CharacterRace.Undead)
                {
                    S.AddSpecialEffect(new SpecialEffect(Trigger.Use, new Stats() { FearDurReduc = 1f }, .1f, 120f));
                }
                else if (characterRace == CharacterRace.Orc)
                {
                    S.StunDurReduc = 0.15f;
                    if (characterClass == CharacterClass.Shaman)
                        S.AddSpecialEffect(new SpecialEffect(Trigger.Use, new Stats() { AttackPower = 65 + (level * 13), SpellPower = 75 + (level * 6) }, 15f, 120f));
                    else if (characterClass == CharacterClass.Warlock || characterClass == CharacterClass.Mage)
                        S.AddSpecialEffect(new SpecialEffect(Trigger.Use, new Stats() { SpellPower = 75 + (level * 6) }, 15f, 120f));
                    else
                        S.AddSpecialEffect(new SpecialEffect(Trigger.Use, new Stats() { AttackPower = 65 + (level * 13) }, 15f, 120f));
                }
                else if (characterRace == CharacterRace.BloodElf)
                {
                    // S.ArcaneResistance += 85f;
                    if (characterClass == CharacterClass.DeathKnight || characterClass == CharacterClass.Rogue || characterClass == CharacterClass.Hunter)
                        S.AddSpecialEffect(new SpecialEffect(Trigger.Use, new Stats() { ManaorEquivRestore = .15f }, 0f, 120f));
                    else if (characterClass == CharacterClass.Warrior)
                        S.AddSpecialEffect(new SpecialEffect(Trigger.Use, new Stats() { BonusRageGen = 15f }, 0f, 120f));
                    else
                        S.AddSpecialEffect(new SpecialEffect(Trigger.Use, new Stats() { ManaorEquivRestore = .06f }, 0f, 120f));
                }
                else if (characterRace == CharacterRace.Goblin)
                {
                    S.PhysicalHaste += 0.01f;
                    S.SpellHaste += 0.01f;
                    // TODO: The damage of the rocket belt proc is dependent on the character's current AP and SP
                    S.AddSpecialEffect(new SpecialEffect(Trigger.Use, new Stats() { FireDamage = 1f + (level * 2) }, 0f, 120f));
                }
                else if (characterRace == CharacterRace.PandarenAlliance || characterRace == CharacterRace.PandarenHorde)
                {

                }
                #endregion

                _lastStats = S.Clone();
                return S;
            }
        }
 public Magician(string Name, uint MaxHP = 0, uint Age = 0, uint MaxMP = 0, CharacterGender Gender = CharacterGender.Male,
                 CharacterRace Race      = CharacterRace.People) : base(Name, MaxHP, Age, Gender, Race)
 {
     this.mp = MaxMP;
 }
Exemple #47
0
    private void LeftRight()
    {
        GameObject parent;

        if (Constants.LastEndActionClickedName.Contains("Selector"))
        {
            parent = GameObject.Find(Constants.LastEndActionClickedName);
        }
        else
        {
            parent = GameObject.Find(Constants.LastEndActionClickedName).transform.parent.gameObject;
        }
        var bodyPart       = parent.name.Substring(Helper.CharacterAfterString(parent.name, "Selector"));
        var spriteRenderer = parent.transform.Find("Sprite").GetComponent <SpriteRenderer>();

        // GENDER //
        if (bodyPart.Contains("Gender"))
        {
            if (!Constants.LastEndActionClickedName.Contains("Selector"))
            {
                _gender = _gender == CharacterGender.Male ? CharacterGender.Female : CharacterGender.Male;
            }
            spriteRenderer.sprite = Helper.GetSpriteFromSpriteSheet("Sprites/IconsGender_" + _gender.GetHashCode());
            if (!Constants.LastEndActionClickedName.Contains("Selector"))
            {
                UpdateButtons();
            }
            return;
        }
        // RACE //
        if (bodyPart.Contains("Race"))
        {
            var raceId = _race.GetHashCode();
            if (Constants.LastEndActionClickedName.Contains("Right"))
            {
                ++raceId;
            }
            else if (Constants.LastEndActionClickedName.Contains("Left"))
            {
                --raceId;
            }
            if (raceId < 0)
            {
                raceId = Helper.EnumCount <CharacterRace>() - 1;
            }
            else if (raceId >= Helper.EnumCount <CharacterRace>())
            {
                raceId = 0;
            }
            _race = (CharacterRace)raceId;
            _raceTextMesh.text = _race.ToString();
            if (!Constants.LastEndActionClickedName.Contains("Selector"))
            {
                UpdateButtons();
            }
            return;
        }
        int id = 0;

        if (spriteRenderer.sprite != null)
        {
            id = int.Parse(spriteRenderer.sprite.name.Substring(Helper.CharacterAfterString(spriteRenderer.sprite.name, "_")));
        }
        if (Constants.LastEndActionClickedName.Contains("Right"))
        {
            ++id;
        }
        else if (Constants.LastEndActionClickedName.Contains("Left"))
        {
            --id;
        }
        var customGender = "";

        if (bodyPart.Contains("Skin"))
        {
            if (id < 0)
            {
                id = RacesData.NbSkinTemplates - 1;
            }
            else if (id >= RacesData.NbSkinTemplates)
            {
                id = 0;
            }
        }
        else if (bodyPart.Contains("Hair"))
        {
            if (id < 0)
            {
                id = RacesData.NbHairTemplates - 1;
            }
            else if (id >= RacesData.NbHairTemplates)
            {
                id = 0;
            }
            customGender += _gender;
        }
        else
        {
            if (id < 0)
            {
                id = RacesData.NbBodyTemplates - 1;
            }
            else if (id >= RacesData.NbBodyTemplates)
            {
                id = 0;
            }
        }
        var idMesh = GameObject.Find("Id" + bodyPart);

        if (idMesh != null)
        {
            idMesh.GetComponent <TMPro.TextMeshPro>().text = (id + 1).ToString();
        }
        var customPart = "";

        if (bodyPart.Contains("Arm") || bodyPart.Contains("Hand"))
        {
            customPart = "Front";
        }
        var tmpRace = "Human";
        var path    = "Sprites/" + tmpRace + "/" + tmpRace + customGender + customPart + bodyPart + "_" + id;

        spriteRenderer.sprite = Helper.GetSpriteFromSpriteSheet(path);
        // SKIN COLOR //
        if (bodyPart.Contains("Skin"))
        {
            for (int i = 0; i < _skinContainer.transform.childCount; ++i)
            {
                var child = _skinContainer.transform.GetChild(i);
                if (child.name.Contains("Naked"))
                {
                    var childSpriteRenderer = child.GetComponent <SpriteRenderer>();
                    var skinPath            = "Sprites/" + tmpRace + "/" + childSpriteRenderer.sprite.name.Substring(0, childSpriteRenderer.sprite.name.Length - 1) + id;
                    childSpriteRenderer.sprite = Helper.GetSpriteFromSpriteSheet(skinPath);
                }
            }
            return;
        }
        // BODY PART //
        if (customPart == "")
        {
            _skinContainer.transform.Find(bodyPart).GetComponent <SpriteRenderer>().sprite = Helper.GetSpriteFromSpriteSheet(path);
        }
        else
        {
            _skinContainer.transform.Find(customPart + bodyPart).GetComponent <SpriteRenderer>().sprite = Helper.GetSpriteFromSpriteSheet(path);
            customPart = "Back";
            _skinContainer.transform.Find(customPart + bodyPart).GetComponent <SpriteRenderer>().sprite = Helper.GetSpriteFromSpriteSheet("Sprites/" + tmpRace + "/" + tmpRace + customGender + customPart + bodyPart + "_" + id);
        }
    }
Exemple #48
0
    public void loadCharacterFromTextFile(string fileName)
    {
        //	TextAsset text = Resources.Load<TextAsset>("Saves/" + fileName);
        //	string data = text.text;
        string data = Saves.getCharactersString(fileName);

        string[]            components     = data.Split(new char[] { ';' });
        int                 curr           = 0;
        string              firstName      = components[curr++];
        string              lastName       = components[curr++];
        int                 sex            = int.Parse(components[curr++]);
        CharacterSex        sexC           = (sex == 0 ? CharacterSex.Male : (sex == 1 ? CharacterSex.Female : CharacterSex.Other));
        int                 race           = int.Parse(components[curr++]);
        CharacterRace       raceC          = CharacterRace.getRace(race == 0 ? RaceName.Berrind : (race == 1 ? RaceName.Ashpian : RaceName.Rorrul));
        int                 background     = int.Parse(components[curr++]);
        CharacterBackground backgroundC    = (background == 0 ? (race == 0 ? CharacterBackground.FallenNoble : (race == 1 ? CharacterBackground.Commoner : CharacterBackground.Servant)) : (race == 0 ? CharacterBackground.WhiteGem : (race == 1 ? CharacterBackground.Immigrant : CharacterBackground.Unknown)));
        int                 age            = int.Parse(components[curr++]);
        int                 height         = int.Parse(components[curr++]);
        int                 weight         = int.Parse(components[curr++]);
        int                 class1         = int.Parse(components[curr++]);
        ClassName           className      = (class1 == 0 ? ClassName.ExSoldier : (class1 == 1 ? ClassName.Engineer : (class1 == 2 ? ClassName.Investigator : (class1 == 3 ? ClassName.Researcher : ClassName.Orator))));
        int                 sturdy         = int.Parse(components[curr++]);
        int                 perception     = int.Parse(components[curr++]);
        int                 technique      = int.Parse(components[curr++]);
        int                 wellVersed     = int.Parse(components[curr++]);
        int                 athletics      = int.Parse(components[curr++]);
        int                 melee          = int.Parse(components[curr++]);
        int                 ranged         = int.Parse(components[curr++]);
        int                 stealth        = int.Parse(components[curr++]);
        int                 mechanical     = int.Parse(components[curr++]);
        int                 medicinal      = int.Parse(components[curr++]);
        int                 historical     = int.Parse(components[curr++]);
        int                 political      = int.Parse(components[curr++]);
        Color               characterColor = new Color(int.Parse(components[curr++]) / 255.0f, int.Parse(components[curr++]) / 255.0f, int.Parse(components[curr++]) / 255.0f);

        Debug.Log(characterColor.r + " " + characterColor.g + " " + characterColor.b);
        Color headColor      = new Color(int.Parse(components[curr++]) / 255.0f, int.Parse(components[curr++]) / 255.0f, int.Parse(components[curr++]) / 255.0f);
        Color primaryColor   = new Color(int.Parse(components[curr++]) / 255.0f, int.Parse(components[curr++]) / 255.0f, int.Parse(components[curr++]) / 255.0f);
        Color secondaryColor = new Color(int.Parse(components[curr++]) / 255.0f, int.Parse(components[curr++]) / 255.0f, int.Parse(components[curr++]) / 255.0f);
        int   hairStyle      = 0;
        int   level          = 1;
        int   experience     = 0;

        if (curr < components.Length - 1)
        {
            hairStyle = int.Parse(components[curr++]);
        }
        if (curr < components.Length - 1)
        {
            level = int.Parse(components[curr++]);
        }
        if (curr < components.Length - 1)
        {
            experience = int.Parse(components[curr++]);
        }
        int money       = 0;
        int health      = 100000;
        int composure   = 100000;
        int numFeatures = 0;
        int numItems    = 0;
        int focus       = 0;

        if (curr < components.Length - 1)
        {
            money = int.Parse(components[curr++]);
        }
        if (curr < components.Length - 1)
        {
            health = int.Parse(components[curr++]);
        }
        if (curr < components.Length - 1)
        {
            composure = int.Parse(components[curr++]);
        }
        if (curr < components.Length - 1)
        {
            numFeatures = int.Parse(components[curr++]);
        }
        int[] features = new int[numFeatures];
        for (int n = 0; n < numFeatures; n++)
        {
            if (curr < components.Length - 1)
            {
                features[n] = int.Parse(components[curr++]);
            }
        }
        if (curr < components.Length - 1)
        {
            focus = int.Parse(components[curr++]);
        }
        if (curr < components.Length - 1)
        {
            numItems = int.Parse(components[curr++]);
        }
        personalInfo = new PersonalInformation(new CharacterName(firstName, lastName), sexC,
                                               raceC, backgroundC, new CharacterAge(age), new CharacterHeight(height),
                                               new CharacterWeight(weight), new CharacterHairStyle(hairStyle));
        characterProgress = new CharacterProgress(CharacterClass.getClass(className));
        abilityScores     = new AbilityScores(sturdy, perception, technique, wellVersed);
        combatScores      = new CombatScores(abilityScores, personalInfo, characterProgress);
        skillScores       = new SkillScores(combatScores, characterProgress);
        CharacterColors characterColors = new CharacterColors(characterColor, headColor, primaryColor, secondaryColor);

        characterSheet = new CharacterSheet(abilityScores, personalInfo, characterProgress, combatScores, skillScores, characterColors, this, characterLoadout);
        skillScores.incrementScore(Skill.Athletics, athletics);
        skillScores.incrementScore(Skill.Melee, melee);
        skillScores.incrementScore(Skill.Ranged, ranged);
        skillScores.incrementScore(Skill.Stealth, stealth);
        skillScores.incrementScore(Skill.Mechanical, mechanical);
        skillScores.incrementScore(Skill.Medicinal, medicinal);
        skillScores.incrementScore(Skill.Historical, historical);
        skillScores.incrementScore(Skill.Political, political);
        characterProgress.setLevel(level);
        characterProgress.setExperience(experience);
        characterSheet.inventory.purse.receiveMoney(money);
        combatScores.setHealth(health);
        combatScores.setComposure(composure);
        characterProgress.getCharacterClass().chosenFeatures = features;
        characterProgress.setWeaponFocus(focus);
        Inventory inv = characterSheet.inventory;

        for (int n = 0; n < numItems; n++)
        {
            int      slot     = int.Parse(components[curr++]);
            ItemCode code     = (ItemCode)int.Parse(components[curr++]);
            string   itemData = components[curr++];
            Item     i        = Item.deserializeItem(code, itemData);
            if (slot < 100)
            {
                if (inv.inventory[slot].item != null)
                {
                    if (inv.itemCanStackWith(inv.inventory[slot].item, i))
                    {
                        inv.inventory[slot].item.addToStack(i);
                    }
                }
                else if (inv.canInsertItemInSlot(i, Inventory.getSlotForIndex(slot)))
                {
                    inv.insertItemInSlot(i, Inventory.getSlotForIndex(slot));
                }
            }
            else
            {
                characterSheet.characterLoadout.setItemInSlot(getArmorSlot(slot), i);
            }
            //Inventory stuff
        }
        //Right Weapon = 100;
        //Left Weapon = 110;
        //Head = 120;
        //Shoulder = 130;
        //Chest = 140;
        //Legs = 150;
        //Boots = 160;
        //Gloves = 170;
        if (curr < components.Length - 1)
        {
            characterProgress.setFavoredRace(int.Parse(components[curr++]));
        }
    }
Exemple #49
0
 private void CacheRelevantItems(CalculationsBase model, Character character, bool ignoreFilters = false)
 {
     List<Item> itemList = new List<Item>(AllItems).FindAll(new Predicate<Item>(
         delegate(Item item)
         {
             return model.IsItemRelevant(item) // Model Relevance
                 && item.FitsFaction(character.Race) // Faction Relevance
                 && (ignoreFilters || ItemFilter.IsItemRelevant(model, item)) // Filters Relevance
                 && character.ItemMatchesiLvlCheck(item)  // iLvl check from UI Filter (non-tree)
                 && character.ItemMatchesBindCheck(item)  // Bind check from UI Filter (non-tree)
                 && character.ItemMatchesProfCheck(item)  // Prof check from UI Filter (non-tree)
                 && character.ItemMatchesDropCheck(item); // Drop check from UI Filter (non-tree)
         }));
     cachedRelevantItems = itemList.ToArray();
     List<Optimizer.SuffixItem> suffixItemList = new List<Optimizer.SuffixItem>();
     foreach (var item in cachedRelevantItems)
     {
         if (item.AllowedRandomSuffixes == null || item.AllowedRandomSuffixes.Count == 0)
         {
             suffixItemList.Add(new Optimizer.SuffixItem() { Item = item, RandomSuffixId = 0 });
         }
         else
         {
             foreach (var suffix in item.AllowedRandomSuffixes)
             {
                 suffixItemList.Add(new Optimizer.SuffixItem() { Item = item, RandomSuffixId = suffix });
             }
         }
     }
     cachedRelevantSuffixItems = suffixItemList.ToArray();
     lastModel = model;
     lastRace = character.Race;
 }
Exemple #50
0
        public void Load(string id)
        {
            MongoUtils.MongoData.ConnectToDatabase();
            MongoDatabase characterDB = MongoUtils.MongoData.GetDatabase("Characters");
            MongoCollection characterCollection = characterDB.GetCollection<BsonDocument>("PlayerCharacter");
            IMongoQuery query = Query.EQ("_id", ObjectId.Parse(id));
            BsonDocument found = characterCollection.FindOneAs<BsonDocument>(query);

            ID = found["_id"].AsObjectId.ToString();
            FirstName = found["FirstName"].AsString.CamelCaseWord();
            LastName = found["LastName"].AsString.CamelCaseWord();
            _class = (CharacterClass)Enum.Parse(typeof(CharacterClass), found["Class"].AsString.CamelCaseWord());
            _race = (CharacterRace)Enum.Parse(typeof(CharacterRace), found["Race"].AsString.CamelCaseWord());
            _gender = (Genders)Enum.Parse(typeof(Genders), found["Gender"].AsString.CamelCaseWord());
            _skinType = (SkinType)Enum.Parse(typeof(SkinType), found["SkinType"].AsString.CamelCaseWord());
            _skinColor = (SkinColors)Enum.Parse(typeof(SkinColors), found["SkinColor"].AsString.CamelCaseWord());
            _skinType = (SkinType)Enum.Parse(typeof(SkinType), found["SkinType"].AsString.CamelCaseWord());
            _hairColor = (HairColors)Enum.Parse(typeof(HairColors), found["HairColor"].AsString.CamelCaseWord());
            _eyeColor = (EyeColors)Enum.Parse(typeof(EyeColors), found["EyeColor"].AsString.CamelCaseWord());
            Height = found["Height"].AsDouble;
            Weight = found["Weight"].AsDouble;
            _stanceState = (CharacterStanceState)Enum.Parse(typeof(CharacterStanceState), found["StanceState"].AsString.CamelCaseWord());
            _actionState = (CharacterActionState)Enum.Parse(typeof(CharacterActionState), found["ActionState"].AsString.CamelCaseWord());
            Description = found["Description"].AsString;
            Location = found["Location"].AsString;
            Password = found["Password"].AsString;
            IsNPC = found["IsNPC"].AsBoolean;
            Experience = found["Experience"].AsInt64;
            NextLevelExperience = found["NextLevelExperience"].AsInt64;
            Level = found["Level"].AsInt32;
            Leveled = found["Leveled"].AsBoolean;
            PointsToSpend = found["PointsToSpend"].AsInt32;
            MainHand = found["MainHand"].AsString != "" ? found["MainHand"].AsString : null;
            Title = found.Contains("Title") ? found["Title"].AsString : "";
            KillerID = found.Contains("KillerID") ? found["KillerID"].AsString : "";

            BsonArray playerAttributes = found["Attributes"].AsBsonArray;
            BsonArray inventoryList = found["Inventory"].AsBsonArray;
            BsonArray equipmentList = found["Equipment"].AsBsonArray;
            BsonArray bonusesList = found["Bonuses"].AsBsonArray;

            if (playerAttributes != null) {
                foreach (BsonDocument attrib in playerAttributes) {

                    if (!this.Attributes.ContainsKey(attrib["Name"].ToString())) {
                        Attribute tempAttrib = new Attribute();
                        tempAttrib.Name = attrib["Name"].ToString();
                        tempAttrib.Value = attrib["Value"].AsDouble;
                        tempAttrib.Max = attrib["Max"].AsDouble ;
                        tempAttrib.RegenRate = attrib["RegenRate"].AsDouble;
                        tempAttrib.Rank = attrib["Rank"].AsInt32;

                        this.Attributes.Add(tempAttrib.Name, tempAttrib);
                    }
                    else {
                        this.Attributes[attrib["Name"].ToString()].Max = attrib["Max"].AsDouble;
                        this.Attributes[attrib["Name"].ToString()].Value = attrib["Value"].AsDouble;
                        this.Attributes[attrib["Name"].ToString()].RegenRate = attrib["RegenRate"].AsDouble;
                        this.Attributes[attrib["Name"].ToString()].Rank = attrib["Rank"].AsInt32;
                    }
                }
            }

            if (inventoryList.Count > 0) {
                foreach (BsonDocument item in inventoryList) {
                    Items.Iitem fullItem = Items.Items.GetByID(item["_id"].AsObjectId.ToString());
                    if (!Inventory.inventory.Contains(fullItem)) {
                        Inventory.AddItemToInventory(fullItem);
                    }
                }
            }

            if (equipmentList.Count > 0) {
                foreach (BsonDocument item in equipmentList) {
                    Items.Iitem fullItem = Items.Items.GetByID(item["_id"].AsObjectId.ToString());
                    if (!Equipment.equipped.ContainsKey(fullItem.WornOn)) {
                        Equipment.EquipItem(fullItem, this.Inventory);
                    }
                }
            }

            if (bonusesList.Count > 0) {
                Bonuses.LoadFromBson(bonusesList);
            }
        }
Exemple #51
0
        public void loadFromInfo()
        {
            CharacterRace  race      = (CharacterRace)(m_characterInfo["RaceId"] as long?);
            CharacterClass charClass = (CharacterClass)(m_characterInfo["ClassId"] as long?);

            // it might be possible to get this from the Locale field, but I'd need data from the other regions
            CharacterRegion charRegion = CharacterRegion.US;

            m_character = new Character(m_sName, m_sRealm,
                                        charRegion,
                                        race,
                                        new BossOptions(),
                                        getGearStringBySlot(m_characterInfo, "Head", false),
                                        getGearStringBySlot(m_characterInfo, "Neck", false),
                                        getGearStringBySlot(m_characterInfo, "Shoulder", false),
                                        getGearStringBySlot(m_characterInfo, "Back", false),
                                        getGearStringBySlot(m_characterInfo, "Chest", false),
                                        getGearStringBySlot(m_characterInfo, "Shirt", false),
                                        getGearStringBySlot(m_characterInfo, "Tabard", false),
                                        getGearStringBySlot(m_characterInfo, "Wrist", false),
                                        getGearStringBySlot(m_characterInfo, "Hands", false),
                                        getGearStringBySlot(m_characterInfo, "Waist", false),
                                        getGearStringBySlot(m_characterInfo, "Legs", false),
                                        getGearStringBySlot(m_characterInfo, "Feet", false),
                                        getGearStringBySlot(m_characterInfo, "Finger0", false),
                                        getGearStringBySlot(m_characterInfo, "Finger1", false),
                                        getGearStringBySlot(m_characterInfo, "Trinket0", false),
                                        getGearStringBySlot(m_characterInfo, "Trinket1", false),
                                        getGearStringBySlot(m_characterInfo, "MainHand", false),
                                        getGearStringBySlot(m_characterInfo, "SecondaryHand", false),
                                        getGearStringBySlot(m_characterInfo, "Ranged", false),
                                        getGearStringBySlot(m_characterInfo, "Ammo", false),
                                        null // Not sure what projectile bag is called

                                             /*null, //TODO: Find ExtraWristSocket
                                              * null, //TODO: Find ExtraHandsSocket
                                              * null, //TODO: Find ExtraWaistSocket
                                              * getEnchantBySlot(characterInfo, "Head"),
                                              * getEnchantBySlot(characterInfo, "Shoulder"),
                                              * getEnchantBySlot(characterInfo, "Back"),
                                              * getEnchantBySlot(characterInfo, "Chest"),
                                              * getEnchantBySlot(characterInfo, "Wrist"),
                                              * getEnchantBySlot(characterInfo, "Hands"),
                                              * getEnchantBySlot(characterInfo, "Legs"),
                                              * getEnchantBySlot(characterInfo, "Feet"),
                                              * getEnchantBySlot(characterInfo, "Finger0"),
                                              * getEnchantBySlot(characterInfo, "Finger1"),
                                              * getEnchantBySlot(characterInfo, "MainHand"),
                                              * getEnchantBySlot(characterInfo, "SecondaryHand"),
                                              * getEnchantBySlot(characterInfo, "Ranged")*/
                                        );

            // set the character class
            Character.Class = charClass;

            // only try and load the talents if they actually have them
            if (m_iLevel >= 10)
            {
                // create an empty talent tree
                switch (charClass)
                {
                case CharacterClass.Warrior: m_character.WarriorTalents = new WarriorTalents(); break;

                case CharacterClass.Paladin: m_character.PaladinTalents = new PaladinTalents(); break;

                case CharacterClass.Hunter: m_character.HunterTalents = new HunterTalents(); break;

                case CharacterClass.Rogue: m_character.RogueTalents = new RogueTalents(); break;

                case CharacterClass.Priest: m_character.PriestTalents = new PriestTalents(); break;

                case CharacterClass.Shaman: m_character.ShamanTalents = new ShamanTalents(); break;

                case CharacterClass.Mage: m_character.MageTalents = new MageTalents(); break;

                case CharacterClass.Warlock: m_character.WarlockTalents = new WarlockTalents(); break;

                case CharacterClass.Druid: m_character.DruidTalents = new DruidTalents(); break;

                case CharacterClass.DeathKnight: m_character.DeathKnightTalents = new DeathKnightTalents(); break;

                default: break;
                }

                // load up the talents
                setTalentsFromTree(m_characterInfo);
            }

            // Populate available items
            // Note that some of these items cannot be enchanted
            // But they should correctly return ".0" for their enchants.
            List <string> asOptimizableItems = new List <string>();

            addEquippedItemForOptimization(asOptimizableItems, m_characterInfo, "Head");
            addEquippedItemForOptimization(asOptimizableItems, m_characterInfo, "Neck");
            addEquippedItemForOptimization(asOptimizableItems, m_characterInfo, "Shoulder");
            addEquippedItemForOptimization(asOptimizableItems, m_characterInfo, "Back");
            addEquippedItemForOptimization(asOptimizableItems, m_characterInfo, "Chest");
            addEquippedItemForOptimization(asOptimizableItems, m_characterInfo, "Shirt");
            addEquippedItemForOptimization(asOptimizableItems, m_characterInfo, "Tabard");
            addEquippedItemForOptimization(asOptimizableItems, m_characterInfo, "Wrist");
            addEquippedItemForOptimization(asOptimizableItems, m_characterInfo, "Hands");
            addEquippedItemForOptimization(asOptimizableItems, m_characterInfo, "Waist");
            addEquippedItemForOptimization(asOptimizableItems, m_characterInfo, "Legs");
            addEquippedItemForOptimization(asOptimizableItems, m_characterInfo, "Feet");
            addEquippedItemForOptimization(asOptimizableItems, m_characterInfo, "Finger0");
            addEquippedItemForOptimization(asOptimizableItems, m_characterInfo, "Finger1");
            addEquippedItemForOptimization(asOptimizableItems, m_characterInfo, "Trinket0");
            addEquippedItemForOptimization(asOptimizableItems, m_characterInfo, "Trinket1");
            addEquippedItemForOptimization(asOptimizableItems, m_characterInfo, "MainHand");
            addEquippedItemForOptimization(asOptimizableItems, m_characterInfo, "SecondaryHand");
            addEquippedItemForOptimization(asOptimizableItems, m_characterInfo, "Ranged");
            addEquippedItemForOptimization(asOptimizableItems, m_characterInfo, "Ammo");

            addPossessionsForOptimization(asOptimizableItems, m_characterInfo);

            m_character.AvailableItems = asOptimizableItems;
        }
Exemple #52
0
		public Character(CharacterRace race, CharacterClass characterClass, Genders gender, Languages language, SkinColors skinColor, SkinType skinType, HairColors hairColor, EyeColors eyeColor, BodyBuild build) {
			Class = characterClass;
			Race = race;
			Gender = gender;
            SkinColor = skinColor;
            SkinType = skinType;
            HairColor = hairColor;
            EyeColor = eyeColor;
            Build = build;

			_koCount = new Tuple<int, DateTime>(0, DateTime.Now);
			_actionState = CharacterActionState.None;
			_stanceState = CharacterStanceState.Standing;
            
            _primaryLanguage = language;
            KnownLanguages = new HashSet<Languages>();
            KnownLanguages.Add(_primaryLanguage);

			FirstName = "";
			LastName = "";
			Description = "";
			Age = 17;   //Do we want an age? And are we going to advance it every in game year?
			Weight = 180.0d; //pounds or kilos?
			Height = 70.0d;  //inches or centimeters?
			Location = "A1000";
			InCombat = false;
			LastCombatTime = DateTime.MinValue.ToUniversalTime();
            IsNPC = false;
            Leveled = false;
            MainHand = "WIELD_RIGHT";
            NextLevelExperience = 300;
            Level = 1;
            Experience = 0;
            PointsToSpend = 0;

            Inventory = new Inventory();
			Equipment = new Equipment();
			Bonuses = new Dictionary<BonusTypes, Bonus>();
            StatBonus = new StatBonuses();
			StatBonus.Bonuses = Bonuses;

			Inventory.playerID = Id;
			Equipment.playerID = Id;

			Attributes = new List<Attribute>();

			Attributes.Add(new Attribute(150, "Hitpoints", 150, 0.1, 1));
			Attributes.Add(new Attribute(10, "Dexterity", 5, 0, 1));
			Attributes.Add(new Attribute(10, "Strength", 5, 0, 1));
			Attributes.Add(new Attribute(10, "Intelligence", 5, 0, 1));
			Attributes.Add( new Attribute(10, "Endurance", 5, 0, 1));
			Attributes.Add(new Attribute(10, "Charisma", 5, 0, 1));

			SubAttributes = new Dictionary<string, double>();

			SubAttributes.Add("Agility", 1);
			SubAttributes.Add("Toughness", 1);
			SubAttributes.Add("Cunning", 1);
			SubAttributes.Add("Wisdom", 1);
			SubAttributes.Add("Leadership", 1);
		}
        protected void AssertStatCorrect(Func <Stats, float> property, float expected, CharacterRace race)
        {
            _character.Race = race;

            AssertStatCorrect(property, expected);
        }
Exemple #54
0
 /// <inheritdoc />
 public CharacterScreenData([NotNull] ObjectGuid characterGuid, [NotNull] string characterName, CharacterRace race, CharacterClass @class, CharacterGender gender, [NotNull] byte[] unknownBytesOne, byte characterLevel, [NotNull] TempLocationStructure location, uint guildId, uint characterFlags)
 {
     CharacterGuid   = characterGuid ?? throw new ArgumentNullException(nameof(characterGuid));
     CharacterName   = characterName ?? throw new ArgumentNullException(nameof(characterName));
     Race            = race;
     Class           = @class;
     Gender          = gender;
     UnknownBytesOne = unknownBytesOne ?? throw new ArgumentNullException(nameof(unknownBytesOne));
     CharacterLevel  = characterLevel;
     Location        = location ?? throw new ArgumentNullException(nameof(location));
     GuildId         = guildId;
     CharacterFlags  = characterFlags;
 }