private void CreateManaComet() { Coordinate targetCoordinate = mapController.GetRandomCoordinate(); MapTile targetTile = mapController.GetMapTileAtCoordinate(targetCoordinate); if (targetTile.resource == Resource.NONE) { mapController.ModifyTileResource(targetTile, Resource.MANA, targetCoordinate); List <Coordinate> coordinates = targetCoordinate.GetNeighbors(); coordinates.Add(targetCoordinate); foreach (Coordinate coordinate in coordinates) { MapTile mapTile = mapController.GetMapTileAtCoordinate(coordinate); foreach (Entity entity in mapTile.entities) { entity.Hp = ManaMistMath.Clamp(entity.Hp - CometDamage, 0, entity.Hp); } } } else { CreateManaComet(); } }
public CombatResult Battle() { AttackAction attacker = attackingEntity.GetAction <AttackAction>(); AttackAction defender = defendingEntity.GetAction <AttackAction>(); if (WillHit(attacker, defender, distance)) { int damageModifier = WillCrit(attacker) ? 2 : 1; int damage = CalculateDamage(attacker, defendingEntity, damageModifier); defendingEntity.Hp -= ManaMistMath.Clamp(damage, 0, defendingEntity.Hp); Debug.Log(attackingEntity.name + " hit for " + damage); if (defendingEntity.Hp <= 0) { return(CombatResult.WIN); } } if (WillHit(defender, attacker, distance)) { int damageModifier = WillCrit(defender) ? 2 : 1; int damage = CalculateDamage(defender, attackingEntity, damageModifier); attackingEntity.Hp -= ManaMistMath.Clamp(damage, 0, attackingEntity.Hp); Debug.Log(defendingEntity.name + " hit for " + damage); if (attackingEntity.Hp <= 0) { return(CombatResult.LOSS); } } return(CombatResult.NONE); }
public void ReduceActionPoints(int points) { ManaMistMath.Clamp(ActionPoints -= points, 0, 100); }
public override void Execute(Player player, Entity entity, Coordinate targetCoordinate, Entity target) { base.Execute(player, entity, targetCoordinate, target); target.Hp = ManaMistMath.Clamp(target.Hp + healAmount, 0, target.MaxHp); }