software: https://github.com/0xd4d/dnSpy download: dnSpy-netcore-win64.zip file, open, c:\GOG Games\Cuphead\Cuphead_Data\Managed\Assembly-CSharp.dll damage +50% invulnerability time +50% p. sugar gives parry dash miss chalice jumps as high as the other characters cursed/divine relic each tier unlocks a new effect that works at 100% efficiency (Healer's Ring, Whetstone, Coffee, Smoke Dash, Hearts) Peashooter + Mega Blast: WeaponProperties LevelWeaponPeashot Basic *** public static readonly float damage = 4f; into public static readonly float damage = 6f; *** WeaponProperties LevelWeaponPeashot Ex *** public static readonly float damage = 8.334f; public static readonly float maxDamage = 25f; into public static readonly float damage = 11.112f; public static readonly float maxDamage = 37.5f; *** Chaser + Chaos Orbit: WeaponProperties LevelWeaponHoming Basic *** public static readonly float damage = 2.85f; into public static readonly float damage = 4.275f; *** WeaponProperties LevelWeaponHoming Ex *** public static readonly float damage = 7f; public static readonly float spread = 90f; public static readonly int bulletCount = 4; public static readonly float swirlDistance = 100f; into public static readonly float damage = 7f; public static readonly float spread = 60f; public static readonly int bulletCount = 6; public static readonly float swirlDistance = 200; *** Spread + Eight Way WeaponProperties LevelWeaponSpreadshot Basic ***(5 projectiles) public static readonly float damage = 1.24f; into public static readonly float damage = 1.86f; *** WeaponProperties LevelWeaponSpreadshot Ex *** public static readonly float damage = 4.3f; into public static readonly float damage = 6.45f; *** Lobber + Kablooey WeaponProperties LevelWeaponBouncer Basic *** public static readonly float bounceRatio = 1.3f; public static readonly float bounceSpeedDampening = 800f; public static readonly float damage = 11.6f; public static readonly int numBounces = 2; into public static readonly float bounceRatio = 1.4f; public static readonly float bounceSpeedDampening = 400f; public static readonly float damage = 17.4f; public static readonly int numBounces = 3; *** WeaponProperties LevelWeaponBouncer Ex *** public static readonly float damage = 28f; public static readonly float explodeDelay = 2f; into public static readonly float damage = 42f; public static readonly float explodeDelay = 3f; *** Roundabout + Jumbo Rebound WeaponProperties LevelWeaponBoomerang Basic *** public static readonly float damage = 8.5f; into public static readonly float damage = 12.75f; *** WeaponProperties LevelWeaponBoomerang Ex ***(8 hits, as long as you dodge it when it returns to you) public static readonly float speed = 1000f; public static readonly float damage = 5f; public static readonly float maxDamage = 35f; public static readonly float hitFreezeTime = 0.1f; into public static readonly float speed = 750f; public static readonly float damage = 7.5f; public static readonly float maxDamage = 52.5f; public static readonly float hitFreezeTime = 0.2f; *** Charge + Radial Barrage WeaponProperties LevelWeaponCharge Basic *** public static readonly float baseDamage = 6f; public static readonly float damageStateTwo = 20f; public static readonly float timeStateThree = 1f; public static readonly float damageStateThree = 46f; into public static readonly float baseDamage = 9f; public static readonly float damageStateTwo = 30f; public static readonly float timeStateThree = 0.5f; public static readonly float damageStateThree = 69f; *** WeaponProperties LevelWeaponCharge Ex *** public static readonly float damage = 26f; into public static readonly float damage = 39f; *** Super Art I Energy Beam WeaponProperties LevelSuperBeam ***(5 hits) public static readonly float damage = 14.5f; into public static readonly float damage = 21.75f; *** Super Art II Invincibility WeaponProperties LevelSuperInvincibility *** public static readonly float durationInvincible = 4.85f; public static readonly float durationFX = 4.55f; into public static readonly float durationInvincible = 7.275f; public static readonly float durationFX = 6.825f; *** Super Art III Giant Ghost (lock aim to move only the ghost, rb) WeaponProperties LevelSuperGhost *** public static readonly float initialSpeed = 700f; public static readonly float maxSpeed = 1250f; public static readonly float initialSpeedTime = 1.8f; public static readonly float maxSpeedTime = 3.8f; public static readonly float damage = 5.1f; public static readonly float turnaroundEaseMultiplier = 4f; into public static readonly float initialSpeed = 700f; public static readonly float maxSpeed = 0f; public static readonly float initialSpeedTime = 0.1f; public static readonly float maxSpeedTime = 5.5f; public static readonly float damage = 7.65f; public static readonly float turnaroundEaseMultiplier = 4f; *** Aeroplane Shrink Fire AbstractPlaneWeapon *** protected float shrunkDamageMultiplier = 0.5f; into protected float shrunkDamageMultiplier = 0.75f; *** Aeroplane Peashooter + Chomper Missile WeaponProperties PlaneWeaponPeashot Basic *** public static readonly float damage = 4f; into public static readonly float damage = 6f; *** WeaponProperties PlaneWeaponPeashot Ex *** public static readonly float damage = 15f; into public static readonly float damage = 22.5f; *** Aeroplane Mini-Bomb + Mirv WeaponProperties PlaneWeaponBomb Basic *** public static readonly float damage = 11.5f; into public static readonly float damage = 17.25f; *** WeaponProperties PlaneWeaponBomb Ex *** public static readonly float damage = 6f; into public static readonly float damage = 9f; *** Aeroplane Super Bomb Morph WeaponProperties PlaneSuperBomb *** public static readonly float damage = 38f; into public static readonly float damage = 57f; *** P. Sugar (adds parry dash) LevelPlayerMotor HandleDash *** if (base.player.stats.isChalice && !this.ChaliceDuckDashed) { this.ChaliceDashParry(); } into if (this.dashManager.IsDashing && base.player.stats.Loadout.charm == Charm.charm_parry_plus && !Level.IsChessBoss && !this.hardExitParry) { this.ForceParry(); this.hardExitParry = true; } if (base.player.stats.isChalice && !this.ChaliceDuckDashed) { this.ChaliceDashParry(); } *** ###fix recompile issue *** return this.transform.position + new Vector2(this.boxCollider.offset.x, this.Motor.GravityReversalMultiplier * this.boxCollider.offset.y); into return (Vector2)this.transform.position + new Vector2(this.boxCollider.offset.x, this.Motor.GravityReversalMultiplier * this.boxCollider.offset.y); *** Whetstone (your first parry move doubles as a damaging axe attack) WeaponProperties CharmParryAttack *** public static readonly float damage = 16f; into public static readonly float damage = 24f; *** Coffee (super meter continuously fills, in addition to what you earn, default is 1 card every 25s) WeaponProperties CharmSuperBuilder ***(change to 1 card every 12,5s) public static readonly float amount = 0.4f; into public static readonly float amount = 0.6f; *** DELICIOUS LAST COURSE DLC Improve Ms. Chalice Jumps LevelPlayerMotor Properties *** public float chaliceFirstJumpPower = -0.63f; public float chaliceSecondJumpPower = -0.55f; into public float chaliceFirstJumpPower = -0.755f; public float chaliceSecondJumpPower = -0.755f; *** ###fix recompile issue *** [DebuggerBrowsable(DebuggerBrowsableState.Never)] into //[DebuggerBrowsable(DebuggerBrowsableState.Never)] *** return this.transform.position + new Vector2(this.boxCollider.offset.x, this.Motor.GravityReversalMultiplier * this.boxCollider.offset.y); into return (Vector2)this.transform.position + new Vector2(this.boxCollider.offset.x, this.Motor.GravityReversalMultiplier * this.boxCollider.offset.y); *** Crackshot + P. Turret WeaponProperties LevelWeaponCrackshot Basic *** public static readonly float initialDamage = 10.56f; public static readonly float crackedDamage = 6.7f; into public static readonly float initialDamage = 15.84f; public static readonly float crackedDamage = 10.05f; *** WeaponProperties LevelWeaponCrackshot Ex *** public static readonly float bulletDamage = 3.5f; public static readonly float collideDamage = 12f; public static readonly int shotNumber = 5; public static readonly float shootDelay = 1f; public static readonly float parryBulletDamage = 14f; into (modded single bullet damage = unmodded single bullet damage * 1.5[extra_dmg] * 5[unmodded_shots] / 6[modded_shots]) public static readonly float bulletDamage = 4.375f; public static readonly float collideDamage = 18f; public static readonly int shotNumber = 6; public static readonly float shootDelay = 1f; public static readonly float parryBulletDamage = 21f; *** Converge + Electro-Bolt WeaponProperties LevelWeaponWideShot Basic *** public static readonly float damage = 2.67f; public static readonly float closingAngleSpeed = 1.1f; public static readonly float openingAngleSpeed = 1.8f; into public static readonly float damage = 4.005f; public static readonly float closingAngleSpeed = 0.55f; public static readonly float openingAngleSpeed = 1.8f; *** WeaponProperties LevelWeaponWideShot Ex *** public static readonly float exDamage = 21f; into public static readonly float exDamage = 31.5f; *** Twist-Up + Cyclone Spiral WeaponProperties LevelWeaponUpshot Basic *** public static readonly float damage = 2.33f; into public static readonly float damage = 3.495f; *** WeaponProperties LevelWeaponUpshot Ex *** public static readonly float minRotationSpeed = 375f; public static readonly float maxRotationSpeed = 185f; public static readonly float rotationRampTime = 1.8f; public static readonly float minRadiusSpeed = 195f; public static readonly float maxRadiusSpeed = 365f; public static readonly float radiusRampTime = 1.8f; public static readonly float damage = 8f; public static readonly float maxDamage = 37f; public static readonly float freezeTime = 0.1f; into public static readonly float minRotationSpeed = 74f; public static readonly float maxRotationSpeed = 150f; public static readonly float rotationRampTime = 1.8f; public static readonly float minRadiusSpeed = 146f; public static readonly float maxRadiusSpeed = 78f; public static readonly float radiusRampTime = 1.8f; public static readonly float damage = 12f; public static readonly float maxDamage = 55.5f; public static readonly float freezeTime = 0.2f; *** Super Art I Spiral Pillar (Miss Chalice) WeaponProperties LevelSuperChaliceVertBeam ***(5 hits) public static readonly float damage = 21.5f; into public static readonly float damage = 32.25f; *** Super Art II Shield Pal (Miss Chalice) WeaponProperties LevelSuperChaliceShield *** no change *** Super Art III Ghostly Barrage (Miss Chalice) WeaponProperties LevelSuperChaliceIII *** public static readonly float superDuration = 6.5f; into public static readonly float superDuration = 9.75f; *** Aeroplane Peashooter + Chomper Missile (Miss Chalice) WeaponProperties PlaneWeaponChaliceWay Basic *** public static readonly float damage = 3.65f; into public static readonly float damage = 5.475f; *** WeaponProperties PlaneWeaponChaliceWay Ex *** public static readonly float damageBeforeLaunch = 2.4f; public static readonly float damageAfterLaunch = 17f; into public static readonly float damageBeforeLaunch = 3.6f; public static readonly float damageAfterLaunch = 25.5f; *** Aeroplane Mini-Bomb + Mirv (Miss Chalice) WeaponProperties PlaneWeaponChaliceBomb Basic *** public static readonly float damage = 6.6f; public static readonly float damageExplosion = 2.5f; into public static readonly float damage = 9.9f; public static readonly float damageExplosion = 3.75f; *** WeaponProperties PlaneWeaponChaliceBomb Ex *** public static readonly float damage = 15.5f; into public static readonly float damage = 23.25f; *** Aeroplane Super Bomb Morph (Miss Chalice) WeaponProperties PlaneSuperChaliceSuperBomb *** public static readonly float damage = 25.5f; into public static readonly float damage = 38.25f; *** Cursed Relic (every 4 boss defeated, from a list of 34, the charm gains an improved form) ###fix recompile issue CharmCurse GetSmokeDashInterval *** return WeaponProperties.CharmCurse.smokeDashInterval[charmLevel]; into return WeaponProperties.CharmCurse.smokeDashInterval[charmLevel] - 1; *** ###fix recompile issue CharmCurse GetWhetstoneInterval *** return WeaponProperties.CharmCurse.whetstoneInterval[charmLevel]; into return WeaponProperties.CharmCurse.whetstoneInterval[charmLevel] - 1; *** WeaponProperties CharmCurse *** public static readonly int[] healthModifierValues = new int[] { -2, -2, -2, -2, 0 }; into public static readonly int[] healthModifierValues = new int[] { -2, -2, -2, -2, 0 }; ***(super meter build up) public static readonly float[] superMeterAmount = new float[] { 0f, 0.13f, 0.26f, 0.39f, 0.52f }; into public static readonly float[] superMeterAmount = new float[] { 0f, 0f, 0.60f, 0.60f, 0.60f }; *** public static readonly int[] smokeDashInterval = new int[] { 7, 4, 2, 1, 0 }; into public static readonly int[] smokeDashInterval = new int[] { 1000000, 1000000, 1000000, 1, 1 }; *** public static readonly int[] whetstoneInterval = new int[] { 7, 4, 2, 1, 0 }; into public static readonly int[] whetstoneInterval = new int[] { 1000000, 1, 1, 1, 1 }; *** public static readonly string[] healerInterval = new string[] { "3,3,4", "2,3,4", "1,3,4", "1,2,4", "1,2,3" }; into public static readonly string[] healerInterval = new string[] { "1,2,3", "1,2,3", "1,2,3", "1,2,3", "1,2,3" }; *** DISCARDED: max health 4 //3 PlayerStatsManager CalculateHealthMax *** this.HealthMax = 3; into this.HealthMax = 4; *** to compile remove these: (or add //) *** [global::System.Diagnostics.DebuggerBrowsable(global::System.Diagnostics.DebuggerBrowsableState.Never)] [global::System.Diagnostics.DebuggerBrowsable(global::System.Diagnostics.DebuggerBrowsableState.Never)] [global::System.Diagnostics.DebuggerBrowsable(global::System.Diagnostics.DebuggerBrowsableState.Never)] [global::System.Diagnostics.DebuggerBrowsable(global::System.Diagnostics.DebuggerBrowsableState.Never)] [global::System.Diagnostics.DebuggerBrowsable(global::System.Diagnostics.DebuggerBrowsableState.Never)] [global::System.Diagnostics.DebuggerBrowsable(global::System.Diagnostics.DebuggerBrowsableState.Never)] [global::System.Diagnostics.DebuggerBrowsable(global::System.Diagnostics.DebuggerBrowsableState.Never)] *** PlayerStatsManager TakeDamage ***(doesn't prevent ignoring extra health lost which should lower end level score, but it doesn't) if (this.Health < 3) into if (this.Health < 4) ***