示例#1
0
        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();
            }
        }
示例#2
0
        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);
        }
示例#3
0
 public void ReduceActionPoints(int points)
 {
     ManaMistMath.Clamp(ActionPoints -= points, 0, 100);
 }
示例#4
0
        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);
        }