void TakeDamage(GameObject obj, IAttackSource attack, int amount) { var player = obj.GetComponent <Player>(); if (player == null) { var item = obj.GetComponent <Item>(); if (item != null) { ItemTakeDamage(item, attack, amount); } else { var projectile = obj.GetComponent <Projectile>(); if (projectile != null) { projectile.Interact(attack); } } } else { PlayerTakeDamage(player, attack, amount); } }
private void Hit(GameObject obj, IAttackSource attack, GameObject attackingObject, int damage, float knockback, bool resetVelocity) { if (damage != 0) { TakeDamage(obj, attack, damage); } if (!Mathf.Approximately(knockback, 0f)) { Knockback(attackingObject, obj, knockback, resetVelocity); } }
void PlayerTakeDamage(Player player, IAttackSource attack, int amount) { if (player.IsModifierEnabled(ModId.Invincible)) { return; } player.eDamage += amount; player.Hit(amount); player.Interact(attack); EventDamageChanged(player.eId, player.eDamage); stateChangeListener.DamageChanged(player.eId, player.eDamage); }
public void Interact(IAttackSource attack) { if (!isServer) { return; } if (sAttackHit != null) { sAttackHit(attack.Type, attack.Properties); } sLastAttacker = attack.Owner; }
public override void Interact(IAttackSource attack) { if (isRedPotion) { return; } if ((attack.Properties & AttackProperty.LightBeam) != 0) { isRedPotion = true; RpcChangeToRed(); } }
/// When the machine is hit while in the initial flying state, /// it becomes broken where it can be used as a throwable item. public override void Interact(IAttackSource attack) { if (state == State.Flying) { state = State.Broken; spriteRenderer.sprite = unmovingProp; GetComponent <Collider2D>().isTrigger = false; if (isServer) { var container = Instantiate(projectileItemContainerPrefab, transform.position, Quaternion.identity); container.GetComponent <ProjectileItemContainer>().projectile = gameObject; NetworkServer.Spawn(container); } } }
void ItemTakeDamage(Item item, IAttackSource attack, int amount) { item.TakeDamage(amount); item.Interact(attack); }
public void Hit(GameObject obj, IAttackSource attack, GameObject attackingObject, int damage, float knockback) { Hit(obj, attack, attackingObject, damage, knockback, true); }
public void HitNoVelocityReset(GameObject obj, IAttackSource attack, GameObject attackingObject, int damage, float knockback) { Hit(obj, attack, attackingObject, damage, knockback, false); }
public void Hit(GameObject obj, IAttackSource attack, int damage) { Hit(obj, attack, null, damage, 0f, false); }
public virtual void Interact(IAttackSource attack) { }