// Token: 0x0600107D RID: 4221
    public void UpdateDashing()
    {
        PlatformMovement platformMovement = this.m_sein.PlatformBehaviour.PlatformMovement;

        UI.Cameras.Current.ChaseTarget.CameraSpeedMultiplier.x = Mathf.Clamp01(this.m_stateCurrentTime / this.DashTime);
        float velocity = this.DashSpeedOverTime.Evaluate(this.m_stateCurrentTime);

        velocity *= 1.0f + .2f * RandomizerBonus.Velocity();
        if ((RandomizerBonus.GravitySuit() && Characters.Sein.Abilities.Swimming.IsSwimming))
        {
            Vector2 newSpeed = new Vector2(velocity, 0f);
            platformMovement.LocalSpeed = newSpeed.Rotate(this.m_sein.Abilities.Swimming.SwimAngle);
        }
        else
        {
            platformMovement.LocalSpeedX = (float)((!this.m_faceLeft) ? 1 : -1) * velocity;
        }
        this.m_sein.FaceLeft = this.m_faceLeft;
        if (this.AgainstWall())
        {
            platformMovement.LocalSpeed = Vector2.zero;
        }
        this.SpriteRotation = Mathf.Lerp(this.SpriteRotation, this.m_sein.PlatformBehaviour.PlatformMovement.GroundAngle, 0.2f);
        if (this.m_sein.IsOnGround)
        {
            if (Core.Input.Horizontal > 0f && this.m_faceLeft)
            {
                this.StopDashing();
            }
            if (Core.Input.Horizontal < 0f && !this.m_faceLeft)
            {
                this.StopDashing();
            }
        }
        if (this.m_stateCurrentTime > this.DashTime)
        {
            if (platformMovement.IsOnGround && Core.Input.Horizontal == 0f)
            {
                platformMovement.LocalSpeedX = 0f;
            }
            this.ChangeState(SeinDashAttack.State.Normal);
        }
        if (Core.Input.Jump.OnPressed || Core.Input.Glide.OnPressed)
        {
            platformMovement.LocalSpeedX = ((!this.m_faceLeft) ? this.OffGroundSpeed : (-this.OffGroundSpeed));
            this.m_sein.PlatformBehaviour.AirNoDeceleration.NoDeceleration = this.m_allowNoDecelerationForThisDash;
            this.m_stopAnimation = true;
            this.ChangeState(SeinDashAttack.State.Normal);
            this.m_timeWhenDashJumpHappened = Time.time;
        }
        if (this.RaycastTest() && this.m_isOnGround)
        {
            this.StickOntoGround();
            return;
        }
        this.m_isOnGround = false;
    }
    // Token: 0x0600107F RID: 4223
    public void UpdateChargeDashing()
    {
        PlatformMovement platformMovement = this.m_sein.PlatformBehaviour.PlatformMovement;

        this.AttackNearbyEnemies();
        this.m_sein.Mortality.DamageReciever.MakeInvincibleToEnemies(1f);
        float velocity = this.ChargeDashSpeedOverTime.Evaluate(this.m_stateCurrentTime);

        velocity *= 1.0f + .2f * RandomizerBonus.Velocity();
        if (this.m_chargeDashAtTarget)
        {
            platformMovement.LocalSpeed = this.m_chargeDashDirection * velocity;
        }
        else
        {
            platformMovement.LocalSpeedX = (float)((!this.m_faceLeft) ? 1 : -1) * velocity;
        }
        if (this.m_hasHitAttackable)
        {
            platformMovement.LocalSpeed *= 0.33f;
        }
        this.m_sein.FaceLeft = this.m_faceLeft;
        this.SpriteRotation  = Mathf.Lerp(this.SpriteRotation, this.m_sein.PlatformBehaviour.PlatformMovement.GroundAngle, 0.3f);
        if (this.AgainstWall())
        {
            platformMovement.LocalSpeed = Vector2.zero;
        }
        if (this.m_sein.IsOnGround)
        {
            if (Core.Input.Horizontal > 0f && this.m_faceLeft)
            {
                this.StopDashing();
            }
            if (Core.Input.Horizontal < 0f && !this.m_faceLeft)
            {
                this.StopDashing();
            }
        }
        if (this.m_stateCurrentTime > this.ChargeDashTime)
        {
            this.ChangeState(SeinDashAttack.State.Normal);
        }
        if (Core.Input.Jump.OnPressed || Core.Input.Glide.OnPressed)
        {
            platformMovement.LocalSpeedX = ((!this.m_faceLeft) ? this.OffGroundSpeed : (-this.OffGroundSpeed));
            this.m_sein.PlatformBehaviour.AirNoDeceleration.NoDeceleration = true;
            this.m_stopAnimation = true;
            this.ChangeState(SeinDashAttack.State.Normal);
        }
        if (this.RaycastTest() && this.m_isOnGround && !this.m_chargeDashAtTarget)
        {
            this.StickOntoGround();
            return;
        }
        this.m_isOnGround = false;
    }
    // Token: 0x06000FA9 RID: 4009 RVA: 0x0005F470 File Offset: 0x0005D670
    public void JumpOffTarget(float angle)
    {
        if (GameController.Instance)
        {
            GameController.Instance.ResumeGameplay();
        }
        Vector2 vector  = Quaternion.Euler(0f, 0f, angle) * Vector2.up;
        Vector2 vector2 = vector * (this.BashVelocity + this.BashVelocity * .10f * RandomizerBonus.Velocity());

        this.PlatformMovement.WorldSpeed      = vector2;
        this.AirNoDeceleration.NoDeceleration = true;
        this.Sein.ResetAirLimits();
        this.m_frictionTimeRemaining = this.FrictionDuration;
        this.ApplyFrictionToSpeed.SpeedToSlowDown = this.PlatformMovement.LocalSpeed;
        this.MovePlayerToTargetAndCreateEffect();
        Component  component  = this.Target as Component;
        Vector3    position   = (!InstantiateUtility.IsDestroyed(component)) ? component.transform.position : this.Sein.Position;
        GameObject gameObject = (GameObject)InstantiateUtility.Instantiate(this.BashOffFx);

        gameObject.transform.position = position;
        Vector3 localScale = gameObject.transform.localScale;

        localScale.x = vector2.magnitude * 0.1f;
        gameObject.transform.localScale    = localScale;
        gameObject.transform.localRotation = Quaternion.Euler(0f, 0f, MoonMath.Angle.AngleFromVector(vector));
        if (this.BashReleaseEffect)
        {
            ((GameObject)InstantiateUtility.Instantiate(this.BashReleaseEffect)).transform.position = position;
        }
        SeinBashAttack.OnBashAttackEvent(vector2);
        this.m_timeRemainingTillNextBash = this.DelayTillNextBash;
        CharacterAnimationSystem.CharacterAnimationState characterAnimationState = this.Sein.PlatformBehaviour.Visuals.Animation.Play(this.BashJumpAnimation, 10, new Func <bool>(this.ShouldBashJumpAnimationKeepPlaying));
        characterAnimationState.OnStartPlaying = new Action(this.OnAnimationStart);
        characterAnimationState.OnStopPlaying  = new Action(this.OnAnimationEnd);
        this.Sein.PlatformBehaviour.Visuals.SpriteMirror.FaceLeft = (vector2.x > 0f);
        if (this.Sein.Abilities.Swimming)
        {
            this.Sein.Abilities.Swimming.OnBash(angle);
        }
    }
    // Token: 0x06001242 RID: 4674 RVA: 0x00069768 File Offset: 0x00067968
    public void UpdateJumpingState()
    {
        float adjustedDrag = this.HorizontalDrag - this.HorizontalDrag * .10f * RandomizerBonus.Velocity();

        this.PlatformMovement.LocalSpeedX = this.PlatformMovement.LocalSpeedX * (1f - adjustedDrag);
        this.PlatformMovement.LocalSpeedY = this.PlatformMovement.LocalSpeedY * (1f - adjustedDrag);
        if (this.m_stateCurrentTime > (this.AntiGravityDuration + this.AntiGravityDuration * .10f * RandomizerBonus.Velocity()))
        {
            this.ChangeState(SeinWallChargeJump.State.Normal);
            return;
        }
        this.m_sein.PlatformBehaviour.Visuals.SpriteRotater.CenterAngle = this.m_angleDirection;
        this.m_sein.PlatformBehaviour.Visuals.SpriteRotater.UpdateRotation();
        for (int i = 0; i < Targets.Attackables.Count; i++)
        {
            IAttackable attackable = Targets.Attackables[i];
            if (!this.m_attackablesIgnore.Contains(attackable))
            {
                if (attackable.CanBeStomped())
                {
                    Vector3 vector    = attackable.Position - this.m_sein.PlatformBehaviour.PlatformMovement.Position;
                    float   magnitude = vector.magnitude;
                    if (magnitude < 4f && Vector2.Dot(vector.normalized, this.PlatformMovement.LocalSpeed.normalized) > 0f)
                    {
                        this.m_attackablesIgnore.Add(attackable);
                        Damage damage = new Damage((float)this.Damage, this.PlatformMovement.WorldSpeed.normalized * 3f, this.m_sein.Position, DamageType.Stomp, base.gameObject);
                        damage.DealToComponents(((Component)attackable).gameObject);
                        if (this.ExplosionEffect)
                        {
                            InstantiateUtility.Instantiate(this.ExplosionEffect, Vector3.Lerp(base.transform.position, attackable.Position, 0.5f), Quaternion.identity);
                        }
                        break;
                    }
                }
            }
        }
    }
    // Token: 0x0600124B RID: 4683 RVA: 0x00069BA4 File Offset: 0x00067DA4
    public void PerformChargeJump()
    {
        float chargedJumpStrength = this.ChargedJumpStrength + this.ChargedJumpStrength * 0.08f * (float)(RandomizerBonus.Velocity() + RandomizerBonus.Jumpgrades());

        this.PlatformMovement.LocalSpeedX = chargedJumpStrength * this.Arrow.transform.right.x;
        this.PlatformMovement.LocalSpeedY = chargedJumpStrength * this.Arrow.transform.right.y;
        Vector2 normalized = this.m_sein.PlatformBehaviour.PlatformMovement.LocalSpeed.normalized;

        this.m_angleDirection = Mathf.Atan2(normalized.y, Mathf.Abs(normalized.x)) * 57.29578f * (float)((normalized.x >= 0f) ? 1 : -1);
        Sound.Play(this.JumpSound.GetSound(null), this.m_sein.PlatformBehaviour.PlatformMovement.Position, null);
        this.m_sein.Mortality.DamageReciever.MakeInvincibleToEnemies(this.AntiGravityDuration);
        this.ChangeState(SeinWallChargeJump.State.Jumping);
        this.m_sein.FaceLeft = (this.PlatformMovement.LocalSpeedX < 0f);
        CharacterAnimationSystem.CharacterAnimationState characterAnimationState = this.m_sein.PlatformBehaviour.Visuals.Animation.Play(this.JumpAnimation, 10, new Func <bool>(this.ShouldChargeJumpAnimationKeepPlaying));
        characterAnimationState.OnStartPlaying = new Action(this.OnAnimationStart);
        characterAnimationState.OnStopPlaying  = new Action(this.OnAnimationEnd);
        this.m_sein.PlatformBehaviour.Visuals.SpriteRotater.BeginTiltUpDownInAir(1.5f);
        if (this.m_sein.Abilities.Glide)
        {
            this.m_sein.Abilities.Glide.NeedsRightTriggerReleased = true;
        }
        JumpFlipPlatform.OnSeinChargeJumpEvent();
        this.m_sein.Abilities.ChargeJumpCharging.EndCharge();
    }
Beispiel #6
0
    // Token: 0x06000FFE RID: 4094 RVA: 0x00060A40 File Offset: 0x0005EC40
    public void PerformChargeJump()
    {
        float chargedJumpStrength = this.ChargedJumpStrength + this.ChargedJumpStrength * .10f * RandomizerBonus.Velocity();

        this.PlatformMovement.LocalSpeedY = chargedJumpStrength;
        this.OnJumpEvent(chargedJumpStrength);
        Sound.Play(this.JumpSound.GetSound(null), this.Sein.PlatformBehaviour.PlatformMovement.Position, null);
        this.UpwardsDeceleration.Deceleration = this.Deceleration;
        this.Sein.Mortality.DamageReciever.MakeInvincibleToEnemies(this.JumpDuration);
        this.ChangeState(SeinChargeJump.State.Jumping);
        this.Sein.PlatformBehaviour.Visuals.Animation.Play(this.JumpAnimation, 10, new Func <bool>(this.ShouldChargeJumpAnimationKeepPlaying));
        this.Sein.PlatformBehaviour.Visuals.SpriteRotater.BeginTiltLeftRightInAir(1.5f);
        if (this.Sein.PlatformBehaviour.JumpSustain)
        {
            this.Sein.PlatformBehaviour.JumpSustain.SetAmountOfSpeedToLose(this.PlatformMovement.LocalSpeedY, 1f);
        }
        this.Sein.Abilities.ChargeJumpCharging.EndCharge();
        JumpFlipPlatform.OnSeinChargeJumpEvent();
    }
 // Token: 0x06001228 RID: 4648 RVA: 0x000692D0 File Offset: 0x000674D0
 public void UpdateStompDownState()
 {
     if (Core.Input.Jump.OnPressed)
     {
         this.EndStomp();
         return;
     }
     if (this.Logic.CurrentStateTime > this.StompDownDuration && !Core.Input.Down.Pressed)
     {
         this.EndStomp();
         return;
     }
     this.PlatformMovement.LocalSpeed = new Vector2(0f, -(this.StompSpeed + this.StompSpeed * 0.2f * RandomizerBonus.Velocity()));
     this.Sein.Mortality.DamageReciever.MakeInvincibleToEnemies(0.2f);
     if (this.Sein.Controller.IsSwimming)
     {
         this.EndStomp();
     }
     for (int i = 0; i < Targets.Attackables.Count; i++)
     {
         IAttackable attackable = Targets.Attackables[i];
         if (!attackable.IsDead())
         {
             if (!InstantiateUtility.IsDestroyed(attackable as Component))
             {
                 if (attackable.IsStompBouncable())
                 {
                     Vector3 a = Characters.Sein.Position + Vector3.down;
                     if (Vector3.Distance(a, attackable.Position) < 1.5f && this.Logic.CurrentState == this.State.StompDown)
                     {
                         GameObject gameObject = ((Component)attackable).gameObject;
                         Damage     damage     = new Damage(this.StompDamage, Vector3.down * 3f, Characters.Sein.Position, DamageType.Stomp, base.gameObject);
                         damage.DealToComponents(gameObject);
                         if (attackable.IsDead())
                         {
                             return;
                         }
                         this.EndStomp();
                         this.PlatformMovement.LocalSpeedY = 17f;
                         this.Sein.PlatformBehaviour.UpwardsDeceleration.Deceleration = 20f;
                         this.Sein.Animation.Play(this.StompBounceAnimation, 111, null);
                         this.Sein.ResetAirLimits();
                         this.StompLandSound.Play();
                         this.DoBlastRadius(attackable);
                         this.DoStompBlastEffect();
                         return;
                     }
                 }
             }
         }
     }
 }
Beispiel #8
0
    // Token: 0x0600376D RID: 14189 RVA: 0x000E2764 File Offset: 0x000E0964
    public static void UpgradeID(int ID)
    {
        bool flag = ID < 0;

        if (flag)
        {
            ID = -ID;
        }
        if (RandomizerBonusSkill.BonusSkillNames.ContainsKey(ID))
        {
            RandomizerBonusSkill.FoundBonusSkill(ID);
            return;
        }
        if (ID >= 200 && ID < 260)
        {
            int     abilityId = (ID - 200) % 30;
            Ability ability   = abilities[abilityId];
            if (ID < 230)
            {
                ability.Found();
            }
            else
            {
                ability.Lost();
            }
            return;
        }
        switch (ID)
        {
        case 0:
            if (!flag)
            {
                Characters.Sein.Mortality.Health.SetAmount((float)(Characters.Sein.Mortality.Health.MaxHealth + 20));
                RandomizerSwitch.PickupMessage("Mega Health");
                return;
            }
            break;

        case 1:
            if (!flag)
            {
                Characters.Sein.Energy.SetCurrent(Characters.Sein.Energy.Max + 5f);
                RandomizerSwitch.PickupMessage("Mega Energy");
                return;
            }
            break;

        case 2:
            Randomizer.returnToStart();
            RandomizerSwitch.PickupMessage("Go Home!");
            return;

        case 20:
            break;

        case 6:
            if (!flag)
            {
                Characters.Sein.Inventory.IncRandomizerItem(ID, 1);
                RandomizerSwitch.PickupMessage("Attack Upgrade (" + RandomizerBonus.SpiritFlameLevel().ToString() + ")");
                return;
            }
            if (RandomizerBonus.SpiritFlameLevel() > 0)
            {
                Characters.Sein.Inventory.IncRandomizerItem(ID, -1);
                RandomizerSwitch.PickupMessage("Attack Upgrade (" + RandomizerBonus.SpiritFlameLevel().ToString() + ")");
                return;
            }
            break;

        case 8:
            RandomizerSwitch.PickupMessage("Explosion Power Upgrade");
            if (!RandomizerBonus.ExplosionPower())
            {
                Characters.Sein.Inventory.IncRandomizerItem(ID, 1);
                return;
            }
            break;

        case 9:
            if (!flag)
            {
                Characters.Sein.Inventory.IncRandomizerItem(ID, 1);
            }
            else if (Characters.Sein.Inventory.GetRandomizerItem(ID) > 0)
            {
                Characters.Sein.Inventory.IncRandomizerItem(ID, -1);
            }
            if (Characters.Sein.Inventory.GetRandomizerItem(ID) == 1)
            {
                RandomizerSwitch.PickupMessage("Spirit Light Efficiency");
            }
            else
            {
                RandomizerSwitch.PickupMessage("Spirit Light Efficiency (" + Characters.Sein.Inventory.GetRandomizerItem(ID).ToString() + ")");
            }
            break;

        case 10:
            RandomizerSwitch.PickupMessage("Extra Air Dash");
            if (!RandomizerBonus.DoubleAirDash())
            {
                Characters.Sein.Inventory.SetRandomizerItem(ID, 1);
                return;
            }
            break;

        case 11:
            RandomizerSwitch.PickupMessage("Charge Dash Efficiency");
            if (!RandomizerBonus.ChargeDashEfficiency())
            {
                Characters.Sein.Inventory.SetRandomizerItem(ID, 1);
                return;
            }
            break;

        case 12:
            if (!flag)
            {
                Characters.Sein.Inventory.IncRandomizerItem(ID, 1);
                if (RandomizerBonus.DoubleJumpUpgrades() == 1)
                {
                    RandomizerSwitch.PickupMessage("Extra Double Jump");
                    return;
                }
                RandomizerSwitch.PickupMessage("Extra Double Jump (" + RandomizerBonus.DoubleJumpUpgrades().ToString() + ")");
                return;
            }
            else if (RandomizerBonus.DoubleJumpUpgrades() > 0)
            {
                Characters.Sein.Inventory.IncRandomizerItem(ID, -1);
                if (RandomizerBonus.DoubleJumpUpgrades() == 1)
                {
                    RandomizerSwitch.PickupMessage("Extra Double Jump");
                    return;
                }
                RandomizerSwitch.PickupMessage("Extra Double Jump (" + RandomizerBonus.DoubleJumpUpgrades().ToString() + ")");
                return;
            }
            break;

        case 13:
            if (!flag)
            {
                Characters.Sein.Inventory.IncRandomizerItem(ID, 1);
                RandomizerSwitch.PickupMessage("Health Regeneration (" + RandomizerBonus.HealthRegeneration().ToString() + ")");
                return;
            }
            if (RandomizerBonus.HealthRegeneration() > 0)
            {
                Characters.Sein.Inventory.IncRandomizerItem(ID, -1);
                RandomizerSwitch.PickupMessage("Health Regeneration (" + RandomizerBonus.HealthRegeneration().ToString() + ")");
                return;
            }
            break;

        case 15:
            if (!flag)
            {
                Characters.Sein.Inventory.IncRandomizerItem(ID, 1);
                RandomizerSwitch.PickupMessage("Energy Regeneration (" + RandomizerBonus.EnergyRegeneration().ToString() + ")");
                return;
            }
            if (RandomizerBonus.EnergyRegeneration() > 0)
            {
                Characters.Sein.Inventory.IncRandomizerItem(ID, -1);
                RandomizerSwitch.PickupMessage("Energy Regeneration (" + RandomizerBonus.EnergyRegeneration().ToString() + ")");
                return;
            }
            break;

        case 17:
            if (flag)
            {
                if (RandomizerBonus.WaterVeinShards() > 0)
                {
                    Characters.Sein.Inventory.IncRandomizerItem(ID, -1);
                    RandomizerSwitch.PickupMessage("*Water Vein Shard (" + RandomizerBonus.WaterVeinShards().ToString() + "/3)*");
                }
            }
            else if (RandomizerBonus.WaterVeinShards() >= 3)
            {
                RandomizerSwitch.PickupMessage("*Water Vein Shard (extra)*");
            }
            else
            {
                Characters.Sein.Inventory.IncRandomizerItem(ID, 1);
                RandomizerSwitch.PickupMessage("*Water Vein Shard (" + RandomizerBonus.WaterVeinShards().ToString() + "/3)*", 300);
            }
            Keys.GinsoTree = (RandomizerBonus.WaterVeinShards() >= 3);
            if (Keys.GinsoTree)
            {
                RandomizerStatsManager.FoundEvent(0);
            }
            return;

        case 19:
            if (flag)
            {
                if (RandomizerBonus.GumonSealShards() > 0)
                {
                    Characters.Sein.Inventory.IncRandomizerItem(ID, -1);
                    RandomizerSwitch.PickupMessage("#Gumon Seal Shard (" + RandomizerBonus.GumonSealShards().ToString() + "/3)#");
                }
            }
            else if (RandomizerBonus.GumonSealShards() >= 3)
            {
                RandomizerSwitch.PickupMessage("#Gumon Seal Shard (extra)#");
            }
            else
            {
                Characters.Sein.Inventory.IncRandomizerItem(ID, 1);
                RandomizerSwitch.PickupMessage("#Gumon Seal Shard (" + RandomizerBonus.GumonSealShards().ToString() + "/3)#", 300);
            }
            Keys.ForlornRuins = (RandomizerBonus.GumonSealShards() >= 3);
            if (Keys.ForlornRuins)
            {
                RandomizerStatsManager.FoundEvent(2);
            }
            return;

        case 21:
            if (flag)
            {
                if (RandomizerBonus.SunstoneShards() > 0)
                {
                    Characters.Sein.Inventory.IncRandomizerItem(ID, -1);
                    RandomizerSwitch.PickupMessage("@Sunstone Shard (" + RandomizerBonus.SunstoneShards().ToString() + "/3)@");
                }
            }
            else if (RandomizerBonus.SunstoneShards() >= 3)
            {
                RandomizerSwitch.PickupMessage("@Sunstone Shard (extra)@");
            }
            else
            {
                Characters.Sein.Inventory.IncRandomizerItem(ID, 1);
                RandomizerSwitch.PickupMessage("@Sunstone Shard (" + RandomizerBonus.SunstoneShards().ToString() + "/3)@", 300);
            }
            Keys.MountHoru = (RandomizerBonus.SunstoneShards() >= 3);
            if (Keys.MountHoru)
            {
                RandomizerStatsManager.FoundEvent(4);
            }
            return;

        case 28:
            if (!flag)
            {
                Characters.Sein.Inventory.IncRandomizerItem(ID, 1);
            }
            else if (RandomizerBonus.WarmthFrags() > 0)
            {
                Characters.Sein.Inventory.IncRandomizerItem(ID, -1);
            }
            if (Randomizer.fragKeyFinish < RandomizerBonus.WarmthFrags())
            {
                RandomizerSwitch.PickupMessage("@Warmth Fragment (extra)@", 300);
                return;
            }
            RandomizerSwitch.PickupMessage(string.Concat(new object[] { "@Warmth Fragment (", RandomizerBonus.WarmthFrags().ToString(), "/", Randomizer.fragKeyFinish, ")@" }), 300);
            break;

        case 29:
            return;

        case 30:
            if (!flag)
            {
                Characters.Sein.Inventory.IncRandomizerItem(ID, 1);
                RandomizerSwitch.PickupMessage("Bleeding x" + RandomizerBonus.Bleeding().ToString());
                return;
            }
            if (RandomizerBonus.Bleeding() > 0)
            {
                Characters.Sein.Inventory.IncRandomizerItem(ID, -1);
                RandomizerSwitch.PickupMessage("Bleeding x" + RandomizerBonus.Bleeding().ToString());
                return;
            }
            break;

        case 31:
            if (!flag)
            {
                Characters.Sein.Inventory.IncRandomizerItem(ID, 1);
            }
            else if (RandomizerBonus.Lifesteal() > 0)
            {
                Characters.Sein.Inventory.IncRandomizerItem(ID, -1);
            }
            if (Lifesteal() == 1)
            {
                RandomizerSwitch.PickupMessage("Health Leech");
            }
            else
            {
                RandomizerSwitch.PickupMessage("Health Leech x" + RandomizerBonus.Lifesteal().ToString());
            }
            break;

        case 32:
            if (!flag)
            {
                Characters.Sein.Inventory.IncRandomizerItem(ID, 1);
            }
            else if (RandomizerBonus.Manavamp() > 0)
            {
                Characters.Sein.Inventory.IncRandomizerItem(ID, -1);
            }
            if (Manavamp() == 1)
            {
                RandomizerSwitch.PickupMessage("Energy Leech");
            }
            else
            {
                RandomizerSwitch.PickupMessage("Energy Leech x" + RandomizerBonus.Manavamp().ToString());
            }
            break;

        case 33:
            if (!flag)
            {
                int v = Characters.Sein.Inventory.IncRandomizerItem(ID, 1);
                RandomizerSwitch.PickupMessage("Skill Velocity Upgrade x" + v.ToString());
                if (Characters.Sein.Inventory.GetRandomizerItem(108) == 0)
                {
                    RandomizerBonusSkill.FoundBonusSkill(108);
                }
                return;
            }
            if (RandomizerBonus.Velocity() > 0)
            {
                int v = Characters.Sein.Inventory.IncRandomizerItem(ID, -1);
                RandomizerSwitch.PickupMessage("Skill Velocity Upgrade x" + v.ToString());
                return;
            }
            break;

        case 34:
            Characters.Sein.Inventory.SetRandomizerItem(34, 1);
            RandomizerSwitch.PickupMessage("Return to start disabled!");
            break;

        case 35:
            Characters.Sein.Inventory.SetRandomizerItem(34, 0);
            RandomizerSwitch.PickupMessage("Return to start enabled!");
            break;

        case 36:
            RandomizerSwitch.PickupMessage("Underwater Skill Usage");
            Characters.Sein.Inventory.SetRandomizerItem(36, 1);
            break;

        case 37:
            if (!flag)
            {
                int v = Characters.Sein.Inventory.IncRandomizerItem(ID, 1);
                RandomizerSwitch.PickupMessage("Jump Upgrade x" + v.ToString());
                if (Characters.Sein.Inventory.GetRandomizerItem(108) == 0)
                {
                    RandomizerBonusSkill.FoundBonusSkill(108);
                }
                return;
            }
            if (RandomizerBonus.Jumpgrades() > 0)
            {
                int v = Characters.Sein.Inventory.IncRandomizerItem(ID, -1);
                RandomizerSwitch.PickupMessage("Jump Upgrade x" + v.ToString());
                return;
            }
            break;

        case 40:
            if (!Characters.Sein || flag)
            {
                return;
            }
            RandomizerSwitch.PickupMessage("@Wall Jump Lost!!@", 240);
            Characters.Sein.PlayerAbilities.WallJump.HasAbility = false;
            Characters.Sein.Prefabs.EnsureRightPrefabsAreThereForAbilities();
            return;

        case 41:
            if (!Characters.Sein || flag)
            {
                return;
            }
            RandomizerSwitch.PickupMessage("@ChargeFlame Lost!!@", 240);
            Characters.Sein.PlayerAbilities.ChargeFlame.HasAbility = false;
            Characters.Sein.Prefabs.EnsureRightPrefabsAreThereForAbilities();
            return;

        case 42:
            if (!Characters.Sein || flag)
            {
                return;
            }
            RandomizerSwitch.PickupMessage("@DoubleJump Lost!!@", 240);
            Characters.Sein.PlayerAbilities.DoubleJump.HasAbility = false;
            Characters.Sein.Prefabs.EnsureRightPrefabsAreThereForAbilities();
            return;

        case 43:
            if (!Characters.Sein || flag)
            {
                return;
            }
            RandomizerSwitch.PickupMessage("@Bash Lost!!@", 240);
            Characters.Sein.PlayerAbilities.Bash.HasAbility = false;
            Characters.Sein.Prefabs.EnsureRightPrefabsAreThereForAbilities();
            return;

        case 44:
            if (!Characters.Sein || flag)
            {
                return;
            }
            RandomizerSwitch.PickupMessage("@Stomp Lost!!@", 240);
            Characters.Sein.PlayerAbilities.Stomp.HasAbility = false;
            Characters.Sein.Prefabs.EnsureRightPrefabsAreThereForAbilities();
            return;

        case 45:
            if (!Characters.Sein || flag)
            {
                return;
            }
            RandomizerSwitch.PickupMessage("@Glide Lost!!@", 240);
            Characters.Sein.PlayerAbilities.Glide.HasAbility = false;
            Characters.Sein.Prefabs.EnsureRightPrefabsAreThereForAbilities();
            return;

        case 46:
            if (!Characters.Sein || flag)
            {
                return;
            }
            RandomizerSwitch.PickupMessage("@Climb Lost!!@", 240);
            Characters.Sein.PlayerAbilities.Climb.HasAbility = false;
            Characters.Sein.Prefabs.EnsureRightPrefabsAreThereForAbilities();
            return;

        case 47:
            if (!Characters.Sein || flag)
            {
                return;
            }
            RandomizerSwitch.PickupMessage("@Charge Jump Lost!!@", 240);
            Characters.Sein.PlayerAbilities.ChargeJump.HasAbility = false;
            Characters.Sein.Prefabs.EnsureRightPrefabsAreThereForAbilities();
            return;

        case 48:
            if (!Characters.Sein || flag)
            {
                return;
            }
            RandomizerSwitch.PickupMessage("@Dash Lost!!@", 240);
            Characters.Sein.PlayerAbilities.Dash.HasAbility = false;
            Characters.Sein.Prefabs.EnsureRightPrefabsAreThereForAbilities();
            return;

        case 49:
            if (!Characters.Sein || flag)
            {
                return;
            }
            RandomizerSwitch.PickupMessage("@Grenade Lost!!@", 240);
            Characters.Sein.PlayerAbilities.Grenade.HasAbility = false;
            Characters.Sein.Prefabs.EnsureRightPrefabsAreThereForAbilities();
            return;

        case 81:
            if (Characters.Sein.Inventory.GetRandomizerItem(ID) > 0)
            {
                return;
            }
            Characters.Sein.Inventory.IncRandomizerItem(ID, 1);
            string s_color = "";
            string g_color = "";
            if (Characters.Sein.PlayerAbilities.HasAbility(AbilityType.Stomp))
            {
                s_color = "$";
            }
            if (Characters.Sein.PlayerAbilities.HasAbility(AbilityType.Grenade))
            {
                g_color = "$";
            }
            RandomizerSwitch.PickupMessage(s_color + "Stomp: " + Randomizer.StompZone + s_color + g_color + "    Grenade: " + Randomizer.GrenadeZone + g_color, 480);
            break;

        default:
            if (flag)
            {
                Characters.Sein.Inventory.IncRandomizerItem(ID, -1);
            }
            else
            {
                Characters.Sein.Inventory.IncRandomizerItem(ID, 1);
            }
            return;
        }
    }
    // Token: 0x06000FAB RID: 4011 RVA: 0x0005F690 File Offset: 0x0005D890
    public void AttackTarget()
    {
        Component component = this.Target as Component;

        if (!InstantiateUtility.IsDestroyed(component))
        {
            Vector2 force = -MoonMath.Angle.VectorFromAngle(this.m_bashAngle + 90f) * (4f + (float)RandomizerBonus.Velocity());
            new Damage(RandomizerBonusSkill.AbilityDamage((!this.Sein.PlayerAbilities.BashBuff.HasAbility) ? this.Damage : this.UpgradedDamage), force, Characters.Sein.Position, DamageType.Bash, base.gameObject).DealToComponents(component.gameObject);                 EntityTargetting component2 = component.gameObject.GetComponent <EntityTargetting>();
            if (component2 && component2.Entity is Enemy)
            {
                SeinBashAttack.OnBashEnemy(component2);
            }
            if (this.Sein.PlayerAbilities.BashBuff.HasAbility)
            {
                this.BeginBashThroughEnemies();
            }
        }
    }