/// <summary> /// Recieve action eg damage fire, pierce or health /// </summary> /// <param name="action"></param> public EffectCore RecieveEffect(EffectCore effectCore) { EffectCore reciveEffect = new EffectCore(); reciveEffect.damage = Mathf.Max(0, effectCore.damage - armor); /*effect = action.life - (int)(action.life * Resist.life); * effect = + action.death - (int)(action.death * Resist.death); * effect = + action.fire - (int)(action.fire * Resist.fire); * effect = + action.electricity - (int)(action.electricity * Resist.electricity); * effect = + action.cold - (int)(action.cold * Resist.cold); * effect = + action.cutting - (int)(action.cutting * Resist.cutting); * effect = + action.crushing - (int)(action.crushing * Resist.crushing); * effect = + action.piercing - (int)(action.piercing * Resist.piercing); */ // healthCur -= (int)effect - (int)(effect * ResistEffect); healthCur -= reciveEffect.damage; if (healthCur < healthMin) { isDead = true; OnDied(); } Debug.Log(slugName + " recieve " + effectCore.damage + " apply " + reciveEffect.damage + ". Health " + healthCur); return(reciveEffect); }
public bool RecieveEffect(EffectCore core) { Debug.Log("self " + effect.m_EffectType.ToString() + " income " + core.m_EffectType.ToString()); if (effect.m_EffectType == core.m_EffectType) { switch (effect.m_EffectType) { case EffectType.White: SceneController.instance.WhiteCount += 1; break; case EffectType.Red: SceneController.instance.RedCount += 1; break; case EffectType.Green: SceneController.instance.GreenCount += 1; break; case EffectType.Black: SceneController.instance.BlackCount += 1; break; } Destroy(gameObject); } return(effect.m_EffectType != core.m_EffectType); }
void HitCollider(GameObject _gameobject) { var damagable = _gameobject.GetComponent <IDamagable>(); if (damagable != null) { EffectCore effect = new EffectCore(); effect.damage = (int)(core.GetDamage() * weaponController.m_DamageScale); var recievedDamage = damagable.RecieveEffect(effect); } }