Exemple #1
0
        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);
            }
        }
Exemple #2
0
 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);
     }
 }
Exemple #3
0
 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);
 }
Exemple #4
0
 public void Interact(IAttackSource attack)
 {
     if (!isServer)
     {
         return;
     }
     if (sAttackHit != null)
     {
         sAttackHit(attack.Type, attack.Properties);
     }
     sLastAttacker = attack.Owner;
 }
Exemple #5
0
        public override void Interact(IAttackSource attack)
        {
            if (isRedPotion)
            {
                return;
            }

            if ((attack.Properties & AttackProperty.LightBeam) != 0)
            {
                isRedPotion = true;
                RpcChangeToRed();
            }
        }
Exemple #6
0
 /// 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);
         }
     }
 }
Exemple #7
0
 void ItemTakeDamage(Item item, IAttackSource attack, int amount)
 {
     item.TakeDamage(amount);
     item.Interact(attack);
 }
Exemple #8
0
 public void Hit(GameObject obj, IAttackSource attack, GameObject attackingObject, int damage, float knockback)
 {
     Hit(obj, attack, attackingObject, damage, knockback, true);
 }
Exemple #9
0
 public void HitNoVelocityReset(GameObject obj, IAttackSource attack, GameObject attackingObject, int damage, float knockback)
 {
     Hit(obj, attack, attackingObject, damage, knockback, false);
 }
Exemple #10
0
 public void Hit(GameObject obj, IAttackSource attack, int damage)
 {
     Hit(obj, attack, null, damage, 0f, false);
 }
Exemple #11
0
 public virtual void Interact(IAttackSource attack)
 {
 }