Ejemplo n.º 1
0
    private void OnTriggerEnter(Collider other)
    {
        if (isDead)
        {
            return;
        }

        var character = other.GetComponent <CharacterEntity>();

        if (character != null && character.Hp > 0)
        {
            isDead = true;
            EffectEntity.PlayEffect(powerUpEffect, character.effectTransform);
            if (isServer)
            {
                character.Hp    += Mathf.CeilToInt(hp * character.TotalHpRecoveryRate);
                character.Armor += Mathf.CeilToInt(armor * character.TotalArmorRecoveryRate);
                character.Exp   += Mathf.CeilToInt(exp * character.TotalExpRate);
            }
            if (character.isLocalPlayer && !(character is BotEntity))
            {
                foreach (var currency in currencies)
                {
                    MonetizationManager.Save.AddCurrency(currency.id, currency.amount);
                }
            }
            StartCoroutine(DestroyRoutine());
        }
    }
Ejemplo n.º 2
0
 private void OnDestroy()
 {
     if (!isDead)
     {
         EffectEntity.PlayEffect(explodeEffectPrefab, TempTransform);
     }
 }
Ejemplo n.º 3
0
    private void OnTriggerEnter(Collider other)
    {
        if (isDead)
        {
            return;
        }

        var character = other.GetComponent <CharacterEntity>();

        if (character != null && character.Hp > 0)
        {
            isDead = true;
            EffectEntity.PlayEffect(powerUpEffect, character.effectTransform);
            if (isServer)
            {
                character.Hp    += Mathf.CeilToInt(hp * character.TotalHpRecoveryRate);
                character.Armor += Mathf.CeilToInt(armor * character.TotalArmorRecoveryRate);
                character.Exp   += Mathf.CeilToInt(exp * character.TotalExpRate);
            }
            StartCoroutine(DestroyRoutine());
        }
    }
Ejemplo n.º 4
0
    public void RpcEffect(NetworkInstanceId triggerId, byte effectType)
    {
        GameObject triggerObject = isServer ? NetworkServer.FindLocalObject(triggerId) : ClientScene.FindLocalObject(triggerId);

        if (triggerObject != null)
        {
            if (effectType == RPC_EFFECT_DAMAGE_SPAWN || effectType == RPC_EFFECT_DAMAGE_HIT)
            {
                var attacker = triggerObject.GetComponent <CharacterEntity>();
                if (attacker != null &&
                    attacker.WeaponData != null &&
                    attacker.WeaponData.damagePrefab != null)
                {
                    var damagePrefab = attacker.WeaponData.damagePrefab;
                    switch (effectType)
                    {
                    case RPC_EFFECT_DAMAGE_SPAWN:
                        EffectEntity.PlayEffect(damagePrefab.spawnEffectPrefab, effectTransform);
                        break;

                    case RPC_EFFECT_DAMAGE_HIT:
                        EffectEntity.PlayEffect(damagePrefab.hitEffectPrefab, effectTransform);
                        break;
                    }
                }
            }
            else if (effectType == RPC_EFFECT_TRAP_HIT)
            {
                var trap = triggerObject.GetComponent <TrapEntity>();
                if (trap != null)
                {
                    EffectEntity.PlayEffect(trap.hitEffectPrefab, effectTransform);
                }
            }
        }
    }