コード例 #1
0
        public UnitEntity(string name, Vector3Int initialPosition, int maxHealth, int sight, bool isPlayerControlled, int movementSpeed, IWorld world, UnitEntityCombatData combatData)
        {
            //ID = id;
            Name     = name;
            Position = initialPosition;

            Level      = 0;
            Experience = 0;

            MaxHealth = maxHealth;
            Health    = maxHealth;
            IsAlive   = true;

            this.sight = sight;
            this.world = world;

            IsPlayerControlled = isPlayerControlled;

            movement  = new UnitEntityMovement(this, world, movementSpeed);
            combat    = new UnitEntityCombat(this, world, movement, combatData);
            inventory = new Inventory(100); //TODO: placeholder UnitEntity inventory weight

            // TODO: placeholder UnitEntity initialization
            inventory.AddItem(new Items.UtilityItems.UtilityItem("health_potion", "Health Potion", 1, 1, 1, "Potion", 1, 0, new Abilities.AbilityEffect[] {
                new Abilities.HealAbilityEffect(10)
            }, new Abilities.HexAbilityAOE(0), true, false));

            UpdateVision();
            world.UnitManager.AddUnit(this);
        }
コード例 #2
0
ファイル: UnitEntityCombat.cs プロジェクト: VictorWen/Colonia
        private int CalculatePhysicalDamage(float baseDamage, IUnitEntityCombat attacker, float combatModifier)
        {
            float reduction = Mathf.Max(0, combatModifier * (defence - attacker.Piercing));

            reduction *= (float)combatModifier * defence / (attacker.Piercing + 1);
            int damage = (int)(baseDamage - reduction);

            return(damage);
        }
コード例 #3
0
        public UnitEntityCombatGraphics(UnitEntityGraphics graphics)
        {
            this.world  = graphics.World;
            this.combat = graphics.Unit.Combat;
            this.config = graphics.Config;

            combat.OnAttack += OnAttack;

            ShownAttackables = new HashSet <Vector3Int>();
        }
コード例 #4
0
ファイル: UnitEntityCombat.cs プロジェクト: VictorWen/Colonia
        public void DealDamage(float baseDamage, IUnitEntityCombat attacker, bool isPhysicalDamage = true)
        {
            if (baseDamage < 0)
            {
                return;
            }

            float combatModifier = world.GetCombatModifierAt(Unit.Position);

            int damage;

            if (isPhysicalDamage)
            {
                damage = CalculatePhysicalDamage(baseDamage, attacker, combatModifier);
            }
            else
            {
                damage = CalculateMagicalDamage(baseDamage, combatModifier);
            }
            Unit.Damage(damage);
        }
コード例 #5
0
ファイル: UnitEntityCombat.cs プロジェクト: VictorWen/Colonia
 public bool IsEnemy(IUnitEntityCombat other)
 {
     return(other.Unit.IsPlayerControlled != Unit.IsPlayerControlled);
 }
コード例 #6
0
ファイル: UnitEntityDeath.cs プロジェクト: VictorWen/Colonia
 public UnitEntityDeath(IUnitEntityCombat combat)
 {
     //combat.OnDeath += OnDeath;
 }