Exemple #1
0
    private void LaunchAbilityPosition()
    {
        Vector3    spawnPos      = Vector3.zero;
        GameObject projectileObj = null;

        switch (m_ability.AbilityBase.SkillShotType)
        {
        case ESkillShotType.FrontSkill:
            spawnPos = m_attacker.GetTransformPosition(m_ability.AbilityBase.LaunchPos).transform.position;
            break;

        case ESkillShotType.FloorSkill:
            if (m_ability.AbilityBase.LaunchPos == EEntityTransform.Floor)
            {
                spawnPos = Utils.Vector2ToVector3(m_targetPos);
            }
            else
            {
                spawnPos = m_attacker.GetTransformPosition(m_ability.AbilityBase.LaunchPos).transform.position;
            }
            break;

        default:
            break;
        }
        projectileObj = SpawnManager.instance.InstantiatePool(m_ability.AbilityBase.ProjectileIdentifier, spawnPos, m_attacker.GetTransformPosition(m_ability.AbilityBase.LaunchPos).transform.rotation);
        AbilityComponent projectile = projectileObj.GetComponent <AbilityComponent>();

        projectile.Initialize(m_attacker, Utils.Vector2ToVector3(m_targetPos), m_ability, m_attacker.EntityAbilities.ServerAbilityHit);
        int projectileInstanceID = projectile.gameObject.GetInstanceID();

        projectile.ServerInstanceId = m_ability.AbilityBase.ProjectileIdentifier + "_" + projectileInstanceID;
        m_attacker.EntityAbilities.CacheActiveAbility(projectile);
        m_attacker.EntityAbilities.RpcSpawnPositionProjectile(m_attacker.transform.rotation, m_ability.AbilityBase.ProjectileIdentifier, projectile.ServerInstanceId, projectile.Ability.AbilityBase.Identifier, Utils.Vector2ToVector3(m_targetPos), NetworkTime.Instance.ServerStep());
    }
Exemple #2
0
    public override void Run()
    {
        m_attacker.transform.rotation = m_entityRotation;
        AbilityBase abilityBase = AbilityManager.instance.GetAbilityBase(m_abilityIdentifier);
        Ability     ability     = m_attacker.EntityAbilities.GetAbility(abilityBase.AttackType);

        EntityTransform  launchPos        = m_attacker.GetTransformPosition(abilityBase.LaunchPos);
        GameObject       projectileObj    = SpawnManager.instance.InstantiatePool(m_projectileIdentifier + "Client", launchPos.transform.position, launchPos.transform.rotation);
        AbilityComponent abilityComponent = projectileObj.GetComponent <AbilityComponent>();

        abilityComponent.ServerInstanceId = m_instanceId;
        abilityComponent.Initialize(m_attacker, m_targetPos, ability);
        m_attacker.EntityAbilities.CacheActiveAbility(abilityComponent);
    }
Exemple #3
0
    private void LaunchAbilityTarget()
    {
        switch (m_ability.AbilityBase.Processor)
        {
        case AbilityProcessorType.DamageImpact:
            foreach (MobaEntity entity in m_targets)
            {
                new DamageProcess(m_attacker, entity, m_ability);
                if (m_ability.AbilityBase.ImpactParticleIdentifier != "")
                {
                    EntityTransform impactTarget = entity.GetTransformPosition(m_ability.AbilityBase.LaunchPos);
                    SpawnManager.instance.InstantiatePool(m_ability.AbilityBase.ImpactParticleIdentifier, impactTarget.transform.position, impactTarget.transform.rotation);
                    entity.EntityAbilities.RpcSpawnImpactParticle(m_ability.AbilityBase.ImpactParticleIdentifier, (int)EEntityTransform.Center);
                }
            }
            break;

        case AbilityProcessorType.LaunchAbility:
            foreach (MobaEntity targetEntity in m_targets)
            {
                EntityTransform  spawnPos      = m_attacker.GetTransformPosition(m_ability.AbilityBase.LaunchPos);
                GameObject       projectileObj = SpawnManager.instance.InstantiatePool(m_ability.AbilityBase.ProjectileIdentifier, spawnPos.transform.position, spawnPos.transform.rotation);
                AbilityComponent projectile    = projectileObj.GetComponent <AbilityComponent>();
                projectile.Initialize(m_attacker, targetEntity, m_ability, m_attacker.EntityAbilities.ServerAbilityHit);
                int projectileInstanceID = projectile.gameObject.GetInstanceID();
                projectile.ServerInstanceId = m_ability.AbilityBase.ProjectileIdentifier + "_" + projectileInstanceID;
                m_attacker.EntityAbilities.CacheActiveAbility(projectile);
                m_attacker.EntityAbilities.RpcSpawnTargetProjectile(m_attacker.transform.rotation, m_ability.AbilityBase.ProjectileIdentifier, projectile.ServerInstanceId, projectile.Ability.AbilityBase.Identifier, targetEntity.InstanceId, NetworkTime.Instance.ServerStep());
            }
            break;

        case AbilityProcessorType.CastSideEffectsOnly:
            foreach (MobaEntity targetEntity in m_targets)
            {
                targetEntity.EntityAbilities.ApplyAbilityEffects(m_ability, m_attacker);
            }
            break;

        default:
            break;
        }
    }