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()); } }
private void OnDestroy() { if (!isDead) { EffectEntity.PlayEffect(explodeEffectPrefab, TempTransform); } }
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()); } }
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); } } } }