Пример #1
0
        public void CheckSkillCooldown(int cooldown, int reduceCount)
        {
            var skills        = new Skills();
            var defaultAttack = GetDefaultAttackSkill();

            skills.Add(defaultAttack);

            const int skillId = 130005;

            _skillSheet.TryGetValue(skillId, out var skillRow);
            var skill = SkillFactory.Get(skillRow, 100, 100);

            skills.Add(skill);

            var selectedSkill = skills.Select(_random);

            Assert.NotNull(selectedSkill);
            Assert.Equal(skill, selectedSkill);

            skills.SetCooldown(skillId, cooldown);
            Assert.Equal(cooldown, skills.GetCooldown(skillId));

            for (var i = 0; i <= reduceCount; i++)
            {
                skills.ReduceCooldown();
            }

            selectedSkill = skills.Select(_random);
            Assert.NotNull(selectedSkill);
            Assert.Equal(cooldown - reduceCount > 0 ? defaultAttack : skill, selectedSkill);
        }
Пример #2
0
        public void ExecuteAnySkill()
        {
            var skills = new Skills();

            // add default attack
            var defaultAttack = GetDefaultAttackSkill();

            skills.Add(defaultAttack);

            // add skill A
            _skillSheet.TryGetValue(130005, out var rowA);
            var skillA = SkillFactory.Get(rowA, 100, 50);

            skills.Add(skillA);

            // add skill B
            _skillSheet.TryGetValue(140000, out var rowB);
            var skillB = SkillFactory.Get(rowB, 100, 50);

            skills.Add(skillB);

            // select skill
            var selectedSkill = skills.Select(_random);

            Assert.NotEqual(defaultAttack.SkillRow.Id, selectedSkill.SkillRow.Id);
        }
Пример #3
0
        public ArmorParis(SceneGame world) : base(world)
        {
            Name        = "Paris Armor";
            Description = "It corrodes on its own";

            ColorMatrix paris = ColorMatrix.TwoColor(new Color(27, 82, 65), new Color(118, 231, 200));

            Render = new CreaturePaperdollRender()
            {
                Head      = SpriteLoader.Instance.AddSprite("content/paperdoll_machine_head2"),
                Body      = SpriteLoader.Instance.AddSprite("content/paperdoll_machine_double"),
                HeadColor = paris,
                BodyColor = paris,
            };
            Mask.Add(Point.Zero);

            Effect.ApplyInnate(new EffectFamily(this, Family.Construct));
            Effect.ApplyInnate(new EffectFamily(this, Family.Bloodless));

            Effect.ApplyInnate(new EffectStat(this, Stat.HP, 400));
            Effect.ApplyInnate(new EffectStat(this, Stat.Attack, 5));

            Effect.ApplyInnate(new EffectTrait(this, Trait.Overclock, 1));

            Effect.ApplyInnate(new EffectStatPercent(this, Element.Acid.DamageRate, -0.5));

            Skills.Add(new SkillAcidVolley());
        }
Пример #4
0
        public ArmorSullen(SceneGame world) : base(world)
        {
            Name        = "Sullen Armor";
            Description = "It sinks on its own";

            ColorMatrix sullen = ColorMatrix.TwoColor(new Color(95, 104, 122), new Color(125, 174, 173));

            Render = new CreaturePaperdollRender()
            {
                Head      = SpriteLoader.Instance.AddSprite("content/paperdoll_machine_head3"),
                Body      = SpriteLoader.Instance.AddSprite("content/paperdoll_machine_double"),
                HeadColor = sullen,
                BodyColor = sullen,
            };
            Mask.Add(Point.Zero);

            Effect.ApplyInnate(new EffectFamily(this, Family.Construct));
            Effect.ApplyInnate(new EffectFamily(this, Family.Bloodless));

            Effect.ApplyInnate(new EffectStat(this, Stat.HP, 400));
            Effect.ApplyInnate(new EffectStat(this, Stat.Attack, 5));

            Effect.ApplyInnate(new EffectTrait(this, Trait.Overclock, 1));

            Effect.ApplyInnate(new EffectStatPercent(this, Element.Water.DamageRate, -0.5));

            Skills.Add(new SkillPoisonVolley());
        }
Пример #5
0
        public ArmorCrystal(SceneGame world) : base(world)
        {
            Name        = "Crystal Armor";
            Description = "It refracts on its own";

            ColorMatrix crystal = ColorMatrix.TwoColor(new Color(154, 121, 223), new Color(206, 255, 253));

            Render = new CreaturePaperdollRender()
            {
                Head      = SpriteLoader.Instance.AddSprite("content/paperdoll_machine_head4"),
                Body      = SpriteLoader.Instance.AddSprite("content/paperdoll_machine_double"),
                HeadColor = crystal,
                BodyColor = crystal,
            };
            Mask.Add(Point.Zero);

            Effect.ApplyInnate(new EffectFamily(this, Family.Construct));
            Effect.ApplyInnate(new EffectFamily(this, Family.Bloodless));

            Effect.ApplyInnate(new EffectStat(this, Stat.HP, 400));
            Effect.ApplyInnate(new EffectStat(this, Stat.Attack, 5));

            Effect.ApplyInnate(new EffectTrait(this, Trait.Overclock, 1));

            Effect.ApplyInnate(new EffectStatPercent(this, Element.Thunder.DamageRate, -0.5));

            Skills.Add(new SkillChainLightningVolley());
        }
Пример #6
0
 public MoQiang()
 {
     for (uint i = 2901; i <= 2906; i++)
     {
         Skills.Add(i, Skill.GetSkill(i));
     }
 }
Пример #7
0
 public AnSha()
 {
     for (uint i = 501; i <= 503; i++)
     {
         Skills.Add(i, Skill.GetSkill(i));
     }
 }
Пример #8
0
 public MoJian()
 {
     for (uint i = 901; i <= 906; i++)
     {
         Skills.Add(i, Skill.GetSkill(i));
     }
 }
Пример #9
0
 public SiLing()
 {
     for (uint i = 1301; i <= 1305; i++)
     {
         Skills.Add(i, Skill.GetSkill(i));
     }
 }
Пример #10
0
 public FengYin()
 {
     for (uint i = 401; i <= 408; i++)
     {
         Skills.Add(i, Skill.GetSkill(i));
     }
 }
Пример #11
0
 public DieWu()
 {
     for (uint i = 2401; i <= 2408; i++)
     {
         Skills.Add(i, Skill.GetSkill(i));
     }
 }
Пример #12
0
        public AbyssalTendrilTree(SceneGame world) : base(world)
        {
            Name        = "Abyssal Tendril Tree";
            Description = "Dread mummy";

            Render = new CreatureStaticRender()
            {
                Color  = ColorMatrix.Identity,
                Sprite = SpriteLoader.Instance.AddSprite("abyssal_tendril_tree"),
            };
            Mask.Add(new Point(0, 0));
            Mask.Add(new Point(0, 1));
            Mask.Add(new Point(1, 0));
            Mask.Add(new Point(1, 1));

            Effect.ApplyInnate(new EffectStat(this, Stat.HP, 950));
            Effect.ApplyInnate(new EffectStat(this, Stat.Attack, 50));

            Effect.ApplyInnate(new EffectFamily(this, Family.Plant));
            Effect.ApplyInnate(new EffectFamily(this, Family.Abyssal));

            Effect.ApplyInnate(new EffectTrait(this, Trait.BloodThroesAcid));
            Effect.ApplyInnate(new EffectTrait(this, Trait.DeathThroesTendril));
            Effect.ApplyInnate(new EffectMovementType(this, MovementType.Stationary, 10));

            Skills.Add(new SkillCreateTentacles());
            Skills.Add(new SkillGrabbingTentacle());
            Skills.Add(new SkillVenomBite());
            Skills.Add(new SkillLick());
        }
        private void Remove()
        {
            if (IsSkillChecked)
            {
                if (SelectedPlayerSkill != null)
                {
                    Skills.Add(SelectedPlayerSkill.Skill);
                    SkillPoints = SkillPoints + SelectedPlayerSkill.Skill.Cost;
                    PlayerSkills.Remove(SelectedPlayerSkill);
                    SelectedPlayerSkill = null;
                }
            }
            else
            {
                if (SelectedPlayerFeat != null)
                {
                    Feats.Add(SelectedPlayerFeat.Feat);
                    FeatPoints = FeatPoints + SelectedPlayerFeat.Feat.Cost;
                    PlayerFeats.Remove(SelectedPlayerFeat);
                    SelectedPlayerFeat = null;
                }
            }

            Refresh();
        }
Пример #14
0
 public MoGong()
 {
     for (uint i = 2601; i <= 2605; i++)
     {
         Skills.Add(i, Skill.GetSkill(i));
     }
 }
Пример #15
0
 public YuanSu()
 {
     for (uint i = 1101; i <= 1108; i++)
     {
         Skills.Add(i, Skill.GetSkill(i));
     }
 }
Пример #16
0
 public TianShi()
 {
     for (uint i = 701; i <= 706; i++)
     {
         Skills.Add(i, Skill.GetSkill(i));
     }
 }
Пример #17
0
 public ShengNv()
 {
     for (uint i = 601; i <= 605; i++)
     {
         Skills.Add(i, Skill.GetSkill(i));
     }
 }
Пример #18
0
        public Actor(ISceneParentRef parent, IPlayerParentRef owner, Guid?externalId, ITileParentRef tempTile, string visualization, string enemyVisualization, float?z, ActorNative native, RoleModelNative roleModelNative)
            : base(parent, owner, tempTile, z ?? native.DefaultZ, new DamageModel(), native)
        {
            this.varManager             = parent.VarManager;
            this.Visualization          = visualization ?? native.DefaultVisualization;
            this.EnemyVisualization     = enemyVisualization ?? native.DefaultEnemyVisualization;
            this.ExternalId             = externalId;
            this.native                 = native;
            this.SelfStrength           = roleModelNative.DefaultStrength;
            this.SelfWillpower          = roleModelNative.DefaultWillpower;
            this.SelfConstitution       = roleModelNative.DefaultConstitution;
            this.SelfSpeed              = roleModelNative.DefaultSpeed;
            this.SelfActionPointsIncome = roleModelNative.DefaultActionPointsIncome;
            this.DefaultArmor           = native.Armor.ToArray();
            this.Skills                 = new List <Skill>();
            foreach (SkillNative skill in roleModelNative.Skills)
            {
                Skills.Add(new Skill(this, skill, null, null, null, null, null, null));
            }

            this.AttackingSkill      = new Skill(this, roleModelNative.AttackingSkill, null, null, 0, null, null, null);
            this.BuffManager         = new BuffManager(this);
            this.InitiativePosition += 1f / this.Initiative;
            this.DamageModel.SetupRoleModel(this);
        }
Пример #19
0
        public override void Load()
        {
            Skills.Clear();
            for (var i = 0; i <= 12; i++)
            {
                Skills.Add((Class)i, new Dictionary <uint, Skill>());
            }
            Skills.Add(Class.Common, new Dictionary <uint, Skill>());
            Skills.Add(Class.None, new Dictionary <uint, Skill>());

            //var f = File.OpenText(FullPath);
            var lines = File.ReadAllLines(FullPath);

            foreach (var line in lines)
            {
                //var line = f.ReadLine();
                if (line == null)
                {
                    break;
                }
                var s  = line.Split('\t');
                var id = Convert.ToUInt32(s[0]);
                Enum.TryParse(s[3], out Class c);
                var name     = s[4];
                var detail   = s[6];
                var iconName = s[7];

                var sk = new Skill(id, c, name, "")
                {
                    IconName = iconName,
                    Detail   = detail.ToLowerInvariant()
                };
                Skills[c][id] = sk;
            }
        }
Пример #20
0
 public MaoXian()
 {
     for (uint i = 1201; i <= 1206; i++)
     {
         Skills.Add(i, Skill.GetSkill(i));
     }
 }
Пример #21
0
 public GongNv()
 {
     for (uint i = 301; i <= 305; i++)
     {
         Skills.Add(i, Skill.GetSkill(i));
     }
 }
Пример #22
0
 public ShengQiang()
 {
     for (uint i = 1001; i <= 1007; i++)
     {
         Skills.Add(i, Skill.GetSkill(i));
     }
 }
Пример #23
0
 public ShiRen()
 {
     for (uint i = 3101; i <= 3107; i++)
     {
         Skills.Add(i, Skill.GetSkill(i));
     }
 }
Пример #24
0
 public YongZhe()
 {
     for (uint i = 2101; i <= 2107; i++)
     {
         Skills.Add(i, Skill.GetSkill(i));
     }
 }
Пример #25
0
        public ArmorTenmoku(SceneGame world) : base(world)
        {
            Name        = "Tenmoku Armor";
            Description = "It glazes on its own";

            ColorMatrix tenmoku = ColorMatrix.TwoColor(new Color(89, 70, 55), new Color(114, 126, 141));

            Render = new CreaturePaperdollRender()
            {
                Head      = SpriteLoader.Instance.AddSprite("content/paperdoll_machine_head1"),
                Body      = SpriteLoader.Instance.AddSprite("content/paperdoll_machine_double"),
                HeadColor = tenmoku,
                BodyColor = tenmoku,
            };
            Mask.Add(Point.Zero);

            Effect.ApplyInnate(new EffectFamily(this, Family.Construct));
            Effect.ApplyInnate(new EffectFamily(this, Family.Bloodless));

            Effect.ApplyInnate(new EffectStat(this, Stat.HP, 400));
            Effect.ApplyInnate(new EffectStat(this, Stat.Attack, 5));

            Effect.ApplyInnate(new EffectTrait(this, Trait.Overclock, 1));

            Effect.ApplyInnate(new EffectStatPercent(this, Element.Earth.DamageRate, -0.5));

            Skills.Add(new SkillPetrolVolley());
            Skills.Add(new SkillOilBlast());
        }
Пример #26
0
 public void UpdateProperties()
 {
     RelationToMainHeroText = "";
     GovernorOfText         = "";
     Skills.Clear();
     Traits.Clear();
     UpdateLearningSkillSelection();
     foreach (SkillObject item in SkillObject.All)
     {
         Skills.Add(new EncyclopediaSkillVM(item, _hero.GetSkillValue(item)));
     }
     foreach (TraitObject heroTrait in CampaignUIHelper.GetHeroTraits())
     {
         if (_hero.GetTraitLevel(heroTrait) != 0)
         {
             Traits.Add(new EncyclopediaTraitItemVM(heroTrait, _hero));
         }
     }
     IsChild = _hero.IsChild;
     if (_hero != Hero.MainHero)
     {
         RelationToMainHeroText = CampaignUIHelper.GetHeroRelationToHeroText(_hero, Hero.MainHero).ToString();
     }
     if (_hero.GovernorOf != null)
     {
         GameTexts.SetVariable("SETTLEMENT_NAME", _hero.GovernorOf.Owner.Settlement.EncyclopediaLinkWithName);
         GovernorOfText = GameTexts.FindText("str_governor_of_label").ToString();
     }
     HeroModel = new HeroViewModel();
     HeroModel.FillFrom(_hero);
     Banner_9 = new ImageIdentifierVM(BannerCode.CreateFrom(_hero.ClanBanner), nineGrid: true);
 }
Пример #27
0
        public ArmorBone(SceneGame world) : base(world)
        {
            Name        = "Bone Armor";
            Description = "It rots on its own";

            ColorMatrix bone = ColorMatrix.TwoColor(new Color(98, 23, 23), new Color(163, 163, 163));

            Render = new CreaturePaperdollRender()
            {
                Head      = SpriteLoader.Instance.AddSprite("content/paperdoll_machine_head5"),
                Body      = SpriteLoader.Instance.AddSprite("content/paperdoll_machine_double"),
                HeadColor = bone,
                BodyColor = bone,
            };
            Mask.Add(Point.Zero);

            Effect.ApplyInnate(new EffectFamily(this, Family.Construct));
            Effect.ApplyInnate(new EffectFamily(this, Family.Bloodless));

            Effect.ApplyInnate(new EffectStat(this, Stat.HP, 400));
            Effect.ApplyInnate(new EffectStat(this, Stat.Attack, 5));

            Effect.ApplyInnate(new EffectTrait(this, Trait.Undead, 1));

            Effect.ApplyInnate(new EffectStatPercent(this, Element.Dark.DamageRate, -0.5));

            Skills.Add(new SkillBoneVolley());
        }
Пример #28
0
        public void LoadFromText(string heroString)
        {
            //Hitpoints;Skill;Skill...



            try
            {
                string[] parts = heroString.Split('-');
                Skill    skill = null;
                this.HitPoints = Convert.ToInt32(parts[0]);

                for (int i = 1; i < parts.Length; i++)
                {
                    skill = new Skill();
                    skill.LoadSkillFromText(parts[i]);
                    Skills.Add(skill);
                }
            }
            catch (Exception ex)
            {
                this.maxHitPoints = 0;
                this.HitPoints    = 50;
                Skills.Clear();
            }
        }
Пример #29
0
        public ArmorBrine(SceneGame world) : base(world)
        {
            Name        = "Brine Armor";
            Description = "It dehydrates on its own";

            ColorMatrix salt = ColorMatrix.TwoColor(new Color(131, 137, 158), new Color(255, 255, 255));

            Render = new CreaturePaperdollRender()
            {
                Head      = SpriteLoader.Instance.AddSprite("content/paperdoll_machine_head3"),
                Body      = SpriteLoader.Instance.AddSprite("content/paperdoll_machine_double"),
                HeadColor = salt,
                BodyColor = salt,
            };
            Mask.Add(Point.Zero);

            Effect.ApplyInnate(new EffectFamily(this, Family.Construct));
            Effect.ApplyInnate(new EffectFamily(this, Family.Bloodless));

            Effect.ApplyInnate(new EffectStat(this, Stat.HP, 400));
            Effect.ApplyInnate(new EffectStat(this, Stat.Attack, 5));

            Effect.ApplyInnate(new EffectTrait(this, Trait.Overclock, 1));

            Effect.ApplyInnate(new EffectStatPercent(this, Element.Water.DamageRate, -0.5));

            Skills.Add(new SkillSaltVolley());
        }
Пример #30
0
 public MoDao()
 {
     for (uint i = 801; i <= 804; i++)
     {
         Skills.Add(i, Skill.GetSkill(i));
     }
 }