public override CombatResults CalculateResults(Stats.StatsPackage caster, Stats.StatsPackage target) { CombatResults results = DoesAttackHit(caster, target); if (!results.DidMiss && !results.DidAvoid) { int damage = (int)(caster.AttackPower.EffectiveValue * 0.8); if (DoesAttackCrit(caster)) { damage = ApplyCriticalDamage(damage, caster); results.DidCrit = true; } results.PureDamage = damage; results.AbsorbedDamage = CalculateAbsorption(results.PureDamage, target); results.AppliedDamage = results.PureDamage - results.AbsorbedDamage; results.ReflectedDamage = CalculateReflectedDamage(results.AppliedDamage, target); } int result = Engine.RNG.Next(0, 100); if (result <= 100) { if (!target.HasEffect("Basic DoT")) { target.ApplyEffect(new Effects.SimpleDot(target)); } } return(results); }
public override void CastAbilityGround(Stats.StatsPackage caster, int x0, int y0, int radius, Level level) { radius = 50; if (CanCastAbility(caster, x0, y0)) { ApplyAbilityCost(caster); for (int angle = 0; angle < 360; angle += 1) { for (int r = 0; r < radius; r++) { int x = (int)(x0 + 0.5 + r * Math.Cos(angle)); int y = (int)(y0 + 0.5 + r * Math.Sin(angle)); int result = Engine.RNG.Next(0, 250); if (level.GetEntity(x, y) == null && result <= 2 && !level.IsOutOfBounds(x, y)) { Bomb bomb = new Bomb(level, 20) { X = x, Y = y }; level.Entities.Add(bomb); } } } } }
public override CombatResults CalculateResults(Stats.StatsPackage caster, Stats.StatsPackage target) { return(new CombatResults() { Caster = caster, Target = target, UsedAbility = this }); }
public Entity_Impling(Entity owner, Level level) : base(level) { this.owner = owner; ownerPosition = new Point(owner.X, owner.Y); token = 'I'; ForegroundColor = Color4.Green; IsSolid = false; EntityType = EntityTypes.NPC; statsPackage = new Stats.StatsPackage(this) { UnitName = "Impling", AttackPower = 25, Health = 25, MaxHealth = 25, PhysicalHitChance = 100 }; statsPackage.AbilityList[0] = new Combat.Abilities.BasicAttack() { Range = 100 }; }
public override CombatResults CalculateResults(Stats.StatsPackage caster, Stats.StatsPackage target) { results = new CombatResults() { Caster = caster, Target = target, UsedAbility = this }; caster.ApplyEffect(new Effects.ShieldWall(caster)); return(results); }
public override CombatResults CalculateResults(Stats.StatsPackage caster, Stats.StatsPackage target) { if (!target.HasEffect(typeof(Effect_Weaken))) { target.ApplyEffect(new Effect_Weaken(target)); } return(new CombatResults() { Caster = caster, Target = target, UsedAbility = this }); }
public WinShrine(Level parent) : base(parent) { EntityType = EntityTypes.Other; token = 'Φ'; ForegroundColor = Color4.WhiteSmoke; isSolid = true; statsPackage = new Stats.StatsPackage(this) { IsImmune = true }; }
public override void CastAbilityGround(Stats.StatsPackage caster, int x, int y, int radius, Level level) { if (CanCastAbility(caster, x, y)) { ApplyAbilityCost(caster); Bomb bomb = new Bomb(level, 5) { X = x, Y = y }; level.Entities.Add(bomb); } }
public override CombatResults CalculateResults(Stats.StatsPackage caster, Stats.StatsPackage target) { Bomb bomb = new Bomb(target.ParentEntity.ParentLevel, 5) { X = target.ParentEntity.X, Y = target.ParentEntity.Y }; target.ParentEntity.ParentLevel.Entities.Add(bomb); return(new CombatResults() { UsedAbility = this, Caster = caster, Target = target }); }
public Ladder(Level parent, Level targetLevel, Point targetDestination) : base(parent) { this.targetLevel = targetLevel; this.targetDestination = targetDestination; token = TokenReference.LADDER_UP; ForegroundColor = Color4.Tan; isSolid = true; EntityType = EntityTypes.Ladder; statsPackage = new Stats.StatsPackage(this) { IsImmune = true }; }
public override CombatResults CalculateResults(Stats.StatsPackage caster, Stats.StatsPackage target) { CombatResults results = DoesAttackHit(caster, target); if (!results.DidMiss && !results.DidAvoid) { int damage = (int)caster.AttackPower.EffectiveValue; if (DoesAttackCrit(caster)) { damage = ApplyCriticalDamage(damage, caster); results.DidCrit = true; } results.PureDamage = damage; results.AbsorbedDamage = CalculateAbsorption(results.PureDamage, target); results.AppliedDamage = results.PureDamage - results.AbsorbedDamage; results.ReflectedDamage = CalculateReflectedDamage(results.AppliedDamage, target); } return(results); }
public override CombatResults CalculateResults(Stats.StatsPackage caster, Stats.StatsPackage target) { if (!target.HasEffect(typeof(Effect_Poison))) { target.ApplyEffect(new Effect_Poison()); } else { Effect_Poison poison = (Effect_Poison)target.GetEffect(typeof(Effect_Poison)); if (poison.stacks < 5) { poison.stacks++; poison.Duration = 10; } } return(new CombatResults() { Caster = caster, Target = target, UsedAbility = this }); }