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); }
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); }
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()); }
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()); }
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()); }
public MoQiang() { for (uint i = 2901; i <= 2906; i++) { Skills.Add(i, Skill.GetSkill(i)); } }
public AnSha() { for (uint i = 501; i <= 503; i++) { Skills.Add(i, Skill.GetSkill(i)); } }
public MoJian() { for (uint i = 901; i <= 906; i++) { Skills.Add(i, Skill.GetSkill(i)); } }
public SiLing() { for (uint i = 1301; i <= 1305; i++) { Skills.Add(i, Skill.GetSkill(i)); } }
public FengYin() { for (uint i = 401; i <= 408; i++) { Skills.Add(i, Skill.GetSkill(i)); } }
public DieWu() { for (uint i = 2401; i <= 2408; i++) { Skills.Add(i, Skill.GetSkill(i)); } }
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(); }
public MoGong() { for (uint i = 2601; i <= 2605; i++) { Skills.Add(i, Skill.GetSkill(i)); } }
public YuanSu() { for (uint i = 1101; i <= 1108; i++) { Skills.Add(i, Skill.GetSkill(i)); } }
public TianShi() { for (uint i = 701; i <= 706; i++) { Skills.Add(i, Skill.GetSkill(i)); } }
public ShengNv() { for (uint i = 601; i <= 605; i++) { Skills.Add(i, Skill.GetSkill(i)); } }
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); }
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; } }
public MaoXian() { for (uint i = 1201; i <= 1206; i++) { Skills.Add(i, Skill.GetSkill(i)); } }
public GongNv() { for (uint i = 301; i <= 305; i++) { Skills.Add(i, Skill.GetSkill(i)); } }
public ShengQiang() { for (uint i = 1001; i <= 1007; i++) { Skills.Add(i, Skill.GetSkill(i)); } }
public ShiRen() { for (uint i = 3101; i <= 3107; i++) { Skills.Add(i, Skill.GetSkill(i)); } }
public YongZhe() { for (uint i = 2101; i <= 2107; i++) { Skills.Add(i, Skill.GetSkill(i)); } }
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()); }
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); }
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()); }
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(); } }
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()); }
public MoDao() { for (uint i = 801; i <= 804; i++) { Skills.Add(i, Skill.GetSkill(i)); } }