コード例 #1
0
    // Token: 0x060019DD RID: 6621 RVA: 0x00016B71 File Offset: 0x00014D71
    public new void OnDestroy()
    {
        base.OnDestroy();
        EntityDamageReciever damageReciever = this.DamageReciever;

        damageReciever.OnModifyDamage = (EntityDamageReciever.ModifyDamageDelegate)Delegate.Remove(damageReciever.OnModifyDamage, new EntityDamageReciever.ModifyDamageDelegate(this.OnModifyDamage));
    }
コード例 #2
0
    // Token: 0x060019DC RID: 6620 RVA: 0x00016B41 File Offset: 0x00014D41
    public new void Awake()
    {
        base.Awake();
        EntityDamageReciever damageReciever = this.DamageReciever;

        damageReciever.OnModifyDamage = (EntityDamageReciever.ModifyDamageDelegate)Delegate.Combine(damageReciever.OnModifyDamage, new EntityDamageReciever.ModifyDamageDelegate(this.OnModifyDamage));
    }
コード例 #3
0
    // Token: 0x060017AC RID: 6060 RVA: 0x0007AAFC File Offset: 0x00078CFC
    public override void OnRecieveDamage(Damage damage)
    {
        bool terrain = (damage.Type == DamageType.Crush || damage.Type == DamageType.Spikes || damage.Type == DamageType.Lava || damage.Type == DamageType.Laser);

        if (this.Entity is Enemy && !(terrain || damage.Type == DamageType.Projectile || damage.Type == DamageType.Enemy))
        {
            RandomizerBonus.DamageDealt(Math.Max(Math.Min(this.Health / 4f, damage.Amount), 0f));
        }
        this.OnModifyDamage(damage);
        if (damage.Type == DamageType.Enemy)
        {
            return;
        }
        if (damage.Type == DamageType.Projectile)
        {
            damage.SetAmount(damage.Amount * 4f);
        }
        if (damage.Type == DamageType.Spikes || damage.Type == DamageType.Lava)
        {
            damage.SetAmount(1000f);
        }
        if (this.Entity.gameObject != base.gameObject)
        {
            damage.DealToComponents(this.Entity.gameObject);
        }
        base.OnRecieveDamage(damage);
        if (base.NoHealthLeft)
        {
            EntityDamageReciever.OnEntityDeathEvent(this.Entity);
            if (damage.Type == DamageType.Projectile && this.Entity is Enemy)
            {
                Projectile component = damage.Sender.GetComponent <Projectile>();
                if (component != null && component.HasBeenBashedByOri)
                {
                    AchievementsLogic.Instance.OnProjectileKilledEnemy();
                }
                if (component != null && !component.HasBeenBashedByOri)
                {
                    AchievementsLogic.Instance.OnEnemyKilledAnotherEnemy();
                }
            }
            if (terrain)
            {
                Type type = this.Entity.GetType();
                if (type != typeof(DropSlugEnemy) && type != typeof(KamikazeSootEnemy) && !base.gameObject.name.ToLower().Contains("wall"))
                {
                    AchievementsLogic.Instance.OnEnemyKilledItself();
                }
            }
            if (this.Entity is Enemy)
            {
                RandomizerStatsManager.OnKill(damage.Type);
                if (damage.Type == DamageType.ChargeFlame)
                {
                    if (Characters.Sein && Characters.Sein.Abilities.Dash)
                    {
                        if (Characters.Sein.Abilities.Dash.CurrentState == SeinDashAttack.State.ChargeDashing)
                        {
                            AchievementsLogic.Instance.OnChargeDashKilledEnemy();
                        }
                        else
                        {
                            AchievementsLogic.Instance.OnChargeFlameKilledEnemy();
                        }
                    }
                    else
                    {
                        AchievementsLogic.Instance.OnChargeFlameKilledEnemy();
                    }
                }
                else if ((damage.Type == DamageType.Stomp && damage.Force.y < 0f) || damage.Type == DamageType.StompBlast)
                {
                    AchievementsLogic.Instance.OnStompKilledEnemy();
                }
                else if (damage.Type == DamageType.SpiritFlameSplatter || damage.Type == DamageType.SpiritFlame)
                {
                    AchievementsLogic.Instance.OnSpiritFlameKilledEnemy();
                }
                else if (damage.Type == DamageType.Grenade)
                {
                    AchievementsLogic.Instance.OnGrenaedKilledEnemy();
                }
            }
            if (this.Entity is PetrifiedPlant)
            {
                Randomizer.getPickup(this.Entity.Position);
                RandomizerPlantManager.DestroyPlant(this.Entity.MoonGuid);
            }
        }
    }