public void TestExplosiveOnHero(FightItemKind fightItemKind) { var game = CreateGame(); var en = PlainEnemies.First(); en.AddFightItem(fightItemKind); en.AddFightItem(fightItemKind); var hero = game.GameManager.Hero; var beginHealth = hero.Stats.Health; var explosiveCocktail = en.GetFightItem(fightItemKind) as ProjectileFightItem; var dam = explosiveCocktail.Damage; PlaceCloseToHero(en); Assert.True(game.GameManager.ApplyAttackPolicy(en, hero, explosiveCocktail, null, (p) => { })); var lifeDiff = beginHealth - hero.Stats.Health; Assert.Greater(lifeDiff, 0); while (hero.LastingEffects.Any()) { GotoNextHeroTurn(); } beginHealth = hero.Stats.Health; Assert.True(en.SetLevel(5)); explosiveCocktail = en.GetFightItem(fightItemKind) as ProjectileFightItem; //Assert.Greater(explosiveCocktail.Damage, dam); Assert.True(game.GameManager.ApplyAttackPolicy(en, hero, explosiveCocktail, null, (p) => { })); var lifeDiff1 = beginHealth - hero.Stats.Health; Assert.Greater(lifeDiff1, lifeDiff); }
public ProjectileFightItem AddFightItem(FightItemKind kind) { fightItems[kind] = new ProjectileFightItem(kind, this) { Count = RandHelper.GetRandomInt(2) + 1 }; return(fightItems[kind] as ProjectileFightItem); }
public FightItem GetFightItem(FightItemKind kind) { if (fightItems.ContainsKey(kind) && fightItems[kind].Count > 0) { return(fightItems[kind]); } return(null); }
public static AbilityKind GetAbilityKind(FightItemKind fik) { if (fi2Ab.ContainsKey(fik)) { //var ab = ale.GetActiveAbility(fi2Ab[item.FightItemKind]); //if (ab != null) return(fi2Ab[fik]); } return(AbilityKind.Unset); }
private static ProjectileFightItem CreateFightItem(FightItemKind fik) { int max = 3; int add = 3; var fi = new ProjectileFightItem(fik, null) { }; if (fik == FightItemKind.PlainArrow || fik == FightItemKind.PlainBolt) { max = 6; } if (fik == FightItemKind.HunterTrap) { max = 1; add = 2; } fi.Count = RandHelper.GetRandomInt(max) + add; return(fi); }
public void TestBasicFightItemFactor(FightItemKind kind) { var game = CreateGame(true, 100); //take one which is active to make sure will have it's turn RevealAllEnemies(game); var enemy = PlainNormalEnemies.First(); PrepareEnemyToBeBeaten(enemy); var hero = game.GameManager.Hero; var fi = ActivateFightItem(kind, hero); var damage1 = fi.Damage; IncreaseAbility(hero, fi, 1); var damage2 = fi.Damage; Assert.Greater(damage2, damage1); Assert.Less(damage2 / damage1, 1.6f); }
public void TestBasicFightItem(FightItemKind kind) { var game = CreateGame(); //take one which is active to make sure will have it's turn RevealAllEnemies(game); var enemy = ChampionEnemies.Where(i => i.PowerKind == EnemyPowerKind.Champion).First(); Assert.True(enemy.Revealed && enemy.Alive); enemy.Stats.SetNominal(EntityStatKind.Health, 100); var enemyBeginHealth = enemy.Stats.Health; var hero = game.GameManager.Hero; var fi = ActivateFightItem(kind, hero); var damage1 = fi.Damage; Assert.Greater(damage1, 0); Assert.AreEqual(enemy.OnHitBy(fi), HitResult.Hit); var chempAfter1HitHealth = enemy.Stats.Health; Assert.Greater(enemyBeginHealth, chempAfter1HitHealth); var firstExplCoctailDamage = enemyBeginHealth - chempAfter1HitHealth; IncreaseAbility(hero, fi.AbilityKind); fi = ActivateFightItem(kind, hero); var damage2 = fi.Damage; Assert.Greater(damage2, damage1); enemy.OnHitBy(fi); GotoNextHeroTurn();//effect prolonged - make turn to see effect var chempAfter2HitHealth = enemy.Stats.Health; var secExplCoctailDamage = chempAfter1HitHealth - chempAfter2HitHealth; Assert.Greater(secExplCoctailDamage, firstExplCoctailDamage); }
public ProjectileFightItem SetActiveFightItem(FightItemKind kind) { this.ActiveFightItem = fightItems[kind]; return(this.ActiveFightItem as ProjectileFightItem); }
private float GetFightItemFactor(bool primary, int level, FightItemKind kind) { //HACK GameManager.Instance.Hero.Abilities //return GameManager.Instance.Hero.Abilities.GetFightItem(kind).GetFactor(primary, level); return(0); }
public FightItem(FightItemKind kind) { this.FightItemKind = kind; this.LootKind = LootKind.FightItem; }
public ProjectileFightItem(FightItemKind kind, LivingEntity caller = null) : base(kind) { Caller = caller; }
public void TestBasicFightItem(FightItemKind kind) { var game = CreateGame(true, 100); //take one which is active to make sure will have it's turn RevealAllEnemies(game); var enemy = PlainNormalEnemies.First(); Assert.True(enemy.Revealed && enemy.Alive); PrepareEnemyToBeBeaten(enemy); var enemyBeginHealth = enemy.Stats.Health; var hero = game.GameManager.Hero; var fi = ActivateFightItem(kind, hero); var damage1 = fi.Damage; if (kind != FightItemKind.WeightedNet) { Assert.Greater(damage1, 0); } //Assert.AreEqual(enemy.OnHitBy(fi), HitResult.Hit); Assert.True(UseFightItem(hero, enemy, hero.ActiveProjectileFightItem)); if (kind != FightItemKind.WeightedNet)//TODO test range? { var chempAfter1HitHealth = enemy.Stats.Health; Assert.Greater(enemyBeginHealth, chempAfter1HitHealth); var firstDamageWithAblity = enemyBeginHealth - chempAfter1HitHealth; IncreaseAbility(hero, fi); fi = ActivateFightItem(kind, hero); var damage2 = fi.Damage; Assert.Greater(damage2, damage1); //Assert.Less(damage2/damage1, 1.6f); GotoNextHeroTurn(); Assert.True(UseFightItem(hero, enemy, hero.ActiveProjectileFightItem)); //enemy.OnHitBy(fi); GotoNextHeroTurn();//effect prolonged - make turn to see effect var chempAfter2HitHealth = enemy.Stats.Health; var secondDamageWithAblity = chempAfter1HitHealth - chempAfter2HitHealth; Assert.Greater(secondDamageWithAblity, firstDamageWithAblity); } else { int counter = 0; while (true) { var le = enemy.GetFirstLastingEffect(Roguelike.Effects.EffectType.WebTrap); if (le == null) { break; } counter++; Assert.AreEqual(le.Description, "Web Trap"); Assert.NotNull(le); Assert.AreEqual(enemyBeginHealth, enemy.Stats.Health); GotoNextHeroTurn(); } Assert.Greater(counter, 1); } }
public IProjectile CreateProjectile(Vector2D pos, FightItemKind fik) { throw new System.NotImplementedException(); }