Example #1
0
        // Perform shield bash skill
        public void performShieldBashSkill(int entityId, ShieldBashSkill shieldBashSkill)
        {
            FactionComponent factionComponent = EntityManager.getFactionComponent(entityId);
            PositionComponent positionComponent = EntityManager.getPositionComponent(entityId);
            List<int> affectedEntities = Helpers.findEntitiesWithinRange(positionComponent.position, 3f, factionComponent.hostileFaction, entityId);

            foreach (int affectedId in affectedEntities)
            {
                SystemManager.combatSystem.attack(shieldBashSkill, entityId, affectedId, 0, shieldBashSkill.attackDie, shieldBashSkill.damageDie);
                resetCooldown(entityId, SkillType.ShieldBash);
            }
        }
Example #2
0
        // Initialize shield bash skill
        private void initializeShieldBashSkill(int entityId, ShieldBashSkill shieldBashSkill)
        {
            Action<Skill, int, int> onHitOther = (skill, attackerId, defenderId) =>
            {
                // Skip if not shield bash skill
                if (skill.type != SkillType.ShieldBash)
                {
                    return;
                }

                // Skip if defender's dead
                if (!EntityManager.doesEntityExist(defenderId))
                {
                    return;
                }

                SystemManager.combatSystem.applyKnockback(attackerId, defenderId, shieldBashSkill.knockbackForce, shieldBashSkill.knockbackNormal);
            };

            EntityFactory.createProcSpell(entityId, onHitOther);
        }