JohnFister
Play ULTRAKILL as John Fister, Fister's bare-fists brawler: his body, third-person camera, full move set, effects and sounds. F7 toggles back to V1.
| Date uploaded | 2 days ago |
| Version | 1.0.8 |
| Download link | offmylawn-JohnFister-1.0.8.zip |
| Downloads | 34 |
| Dependency string | offmylawn-JohnFister-1.0.8 |
This mod requires the following mods to function
BepInEx-BepInExPack
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2305README
John Fister for ULTRAKILL
Play ULTRAKILL as John Fister, the bare-fists brawler from Fister. This BepInEx plugin replaces V1 with John's six-box body and outfit, a third-person camera, his movement and his full bare-fists move set, with the original effects and sounds. It runs Fister's own player simulation at 60 Hz (translated line by line and pinned to Fister's numbers by its acceptance tests), and maps its punches, launches and parries onto ULTRAKILL's enemies.
Requirements
- ULTRAKILL (Steam, current build).
- BepInEx 5 for Mono (BepInExPack 5.4.2305 from Thunderstore, the community standard). r2modman / Thunderstore Mod Manager installs it for you.
Install
- Mod manager (recommended): install "JohnFister" with r2modman or Thunderstore Mod Manager and start the game through it.
- Manual: install BepInExPack into the ULTRAKILL folder (
winhttp.dll,doorstop_config.iniandBepInEx\next toULTRAKILL.exe), run the game once, then copy this package'sJohnFister.dllandassetsfolder intoBepInEx\plugins\JohnFister\.
Turn it on and off
John Fister mode is on when a level starts. (Not in the new-player intro and tutorial, the menus or the credits: those need V1, and John comes back in the first level.) Press F7 to switch back to V1 and F7 again to be John. Switching back restores V1 completely: first-person camera, arms, weapons, weapon icons, dash/jump/slide, gravity and the stamina bar.
While John Fister is on:
- the camera is behind and above John, looking exactly along your aim (the game's own crosshair is the aim);
- V1's weapons, arms, hook and weapon icons are put away, and jump, dash, slide and slam do nothing;
- the stamina bar shows John's punch charge (three bars = full charge);
- two thin arcs around the crosshair show the parry (left, blue) and grab (right, yellow) cooldowns: each fills from the bottom as it recharges and flashes when the move is ready again; nothing is drawn while both are ready. (Fister itself only flashes the ready moment in these colours; the arcs are this port's addition);
- the camera never goes through walls or ceilings: it is pulled in front of anything behind John (and lowered under low ceilings), eases back out, and John turns see-through when it gets close to him. The screen centre is still the aim at any camera distance;
- your health bar is John's health (Fister's 200 HP is ULTRAKILL's 100; enemies hit as hard as usual).
Controls
John uses your own ULTRAKILL bindings (rebinding and gamepads carry over):
| Action | Binding | |
|---|---|---|
| Move | Movement keys (WASD) | |
| Aim | Mouse / right stick | The screen centre is the aim |
| Fist | Fire 1 (left mouse) | Tap for a quick jab. Hold to charge, release to punch |
| Parry | Fire 2 (right mouse) | Blocks a hit; reflects projectiles; heals you |
| Grab / throw / air tech | Punch key (F), or Fire 1 + Fire 2 together | |
| Toggle John Fister | F7 | Configurable |
| Pick up / place / throw items | Punch key (F) near a skull, key, torch... | Same key as grab: items in reach come first |
There is no jump, sprint key, block or stamina. Everything comes from the fist and the parry:
- Charged sprint: hold the fist until the arm flashes (1 s) and keep holding while you run.
- Parry jump: look at the ground and parry. This is how you climb ledges.
- Ground-punch hop: release a full charge while looking at your feet.
- Rocket punch: release a full charge while looking up.
- Uppercut: a strong punch while looking up at an enemy in front of you; an airborne enemy dies instantly.
- Air kick: your strongest hit (more damage and launch than a full punch). Release a full charge in the air while looking level or down. Hold the crosshair on an enemy for 3 s first to lock on (the aim line turns red); the kick then homes in. Kicking through an enemy projectile is a parry: it flies back at its shooter (heal, flash, style and the instant charge, as a parry) and John recoils off it.
- Dive bomb: release a full charge in the air while looking straight down. The landing shockwave launches everything around you.
- Critical fist: hold the charge for 7 s; the release is a dash punch with ten times the force. Do not hold it for 10 s: you self-destruct.
- Railing: tap the fist, then press it again within 0.35 s and hold while standing still (the aim line shows the direction). Release after 1 s or more to dash; the longer the charge, the faster. Hold parry for 1 s during the dash for a mega boost. Parry just before hitting a wall to reverse.
- Grab: a lunge that catches an enemy and throws it hard where you aim; a thrown body that hits other enemies knocks them over and damages them. Grab in the air and look straight down to piledrive. Throwable: Filth, Stray, Schism, Soldier, Stalker, Drone, Providence, Streetcleaner, Mannequin and rats (small Cancerous Rodent). Everything else (Virtue, Puppet, Swordsmachine, Cerberus, Hideous Mass, Malicious Face, Mindflayer, Gutterman, Guttertank, Ferryman, Turrets, Idols, Minotaur, bosses...) cannot be lifted: the grab lands as a stagger hit instead.
- Instant charge: after a full punch that lands, a parry, an air-kick or railing hit, a connecting dive, a ground-punch hop, a throw that hits someone, or a kill, John's punching arm flickers gold and the stamina bar is full: the next press is a full-charge punch at once (for 5 s).
- Parry: parry a projectile and it flies back at whoever fired it, whichever way you are facing. It is ULTRAKILL's own parry (double speed, parried-projectile damage, heal, flash, style); the projectile then homes on its shooter. If the shooter is already dead it goes to the nearest enemy in front of John, otherwise straight along your aim. Hitscan shots and beams are parried only where ULTRAKILL itself allows it. Parry a melee swing to throw the attacker back with a hard knockdown.
- Ragdoll: when John is knocked flying, parry just before hitting a wall to bounce off it, or press grab with a direction to air-tech out.
Items, switches and level progress
- Skulls, keys, soap, torches and other carriable items: aim at the item and press the Punch key (F) to pick it up (it appears in John's hand). Press F at an altar or socket to place it, or anywhere else to throw it (items the game itself cannot drop, like skulls, stay in hand until placed). This uses ULTRAKILL's own item code, so altars, skull doors and level scripts work as usual. With no item or socket in reach, F is Fister's grab.
- Weak walls and breakable props break on any punch; tougher ones need a charged punch.
- Parry targets (objects that react to V1's punch parry) react to John's parry.
- Doors open as usual (they need no input).
- End of level: when John drops into the final pit, the game's own ending (the fall, the results screen, Fire 1 to continue) runs with V1, and the next level starts as John again. Fire 1 also works as usual for the results screen, restarting after death, shop terminals and in-world buttons.
- Not covered in Fister mode: whiplash hook points, targets that only react to bullets (coins, shoot-only switches) and cannonball parries. Press F7 to switch to V1 for those, then F7 again.
How Fister fights in ULTRAKILL
- Punches hurt on contact (ULTRAKILL style), on top of Fister's own damage: a full-charge punch deals 5 at once, which kills or nearly kills the common husks; a tap jab chips (about 0.55) and shoves the enemy back about 3 u; the charge in between climbs steeply. Heavy enemies (Swordsmachine, Cerberus, Hideous Mass, Mindflayer, Gutterman...) lose at least 30% of their health to a full punch, bosses at least 10%; the critical fist (7 s charge) deals three times as much. Every connecting punch has ULTRAKILL's hit-stop and punch impact and earns style (JAB, PUNCH, HAYMAKER, CRITICAL PUNCH).
- Survivors are launched hard (a full punch sends them about 40 u/s, across a room), and take Fister's collision damage when they hit a wall, the floor or another enemy. A launched enemy flies by Fister's ragdoll rules and gets back up when it settles.
- Ragdolls: an enemy John launches, grabs or throws goes limp (its own ragdoll: the animation stops and the limbs flop), hangs limp while held, flies limp when thrown, lies where it lands, then gets back up at that spot and fights on. If it dies while limp, ULTRAKILL's own death ragdoll takes over. Ragdolling: Filth, Stray, Schism, Soldier, Streetcleaner. Enemies whose models have no ragdoll joints are launched and thrown the same way but fly as a rigid body: Stalker, Mannequin, Drone, Virtue, Providence and rats (Cancerous Rodent). (Enemies that cannot be launched at all take the stand-in below.) Weak enemies such as Filth usually die from a full punch, so you see the get-up mostly after lighter hits, grabs and throws.
- Enemies ULTRAKILL never knocks back (bosses, Swordsmachines, Hideous Masses, Malicious Faces, Guttermen and other anchored or teleporting enemies) take the punch's contact damage, are interrupted (staggered) and shoved a little. Kicks, dives and grabs on them land as an impact worth at most half a full punch.
- A full-strength punch on an enemy below 20% health is a finisher: it dies and flies.
- Kills go through the game's own damage, so they count for the style meter.
Settings
BepInEx\config\offmylawn.johnfister.cfg (created on first run; editable while the game is closed):
| Section | Setting | Default | |
|---|---|---|---|
| General | StartAsJohnFister | true | Start levels as John |
| General | ToggleKey | F7 | |
| Audio | Volume | 1.0 | John's sounds, on top of the game's SFX volume |
| Camera | ScreenShake | true | Fister's hit shake (the game's screen-shake setting also scales it) |
| Combat | PunchDamage | 5 | Contact damage of a full-charge punch (V1's feedbacker deals 1; a Filth has 0.5 HP) |
| Combat | JabDamageFraction | 0.08 | Share of it a tap deals (the charge climbs to 1 with its square) |
| Combat | HeavyPunchFraction | 0.3 | Heavy enemies: least share of their health a full punch takes |
| Combat | BossPunchFraction | 0.1 | Bosses: least share of their health a full punch takes |
| Combat | CriticalPunchMultiplier | 3 | Critical fist contact damage multiplier |
| Combat | AirKickDamage | 7.5 | Contact damage of an air kick (1.5x a full punch) |
| Combat | AirKickHeavyFraction | 0.45 | Heavy enemies: least share of their health an air kick takes |
| Combat | AirKickBossFraction | 0.15 | Bosses: least share of their health an air kick takes |
| Combat | AirKickLaunch | 0.6 | Air kick launch (x Fister's; never slower than a full punch's) |
| Combat | HitStop | true | ULTRAKILL's hit-stop, camera kick and punch impact on connecting punches |
| Combat | DamageScale | 0.15 | Collision damage: enemy health per Fister damage point (Fister's damage is for a 200 HP brawler) |
| Combat | LethalSelfMoves | true | Self-destruct, mega-boosted railing into a wall and parried dives kill John, as in Fister |
| Combat | WhiffKnockdowns | false | Fister's knockdown when an air kick hits a wall or a dive hits nobody |
| Combat | InstantChargeOnKill | true | Kills give the instant full charge (a port addition) |
| Combat | RagdollOnHit | true | Launched, grabbed and thrown enemies go limp and get back up (off: they fly rigid) |
| Room scale | (see below) | Per-move distance multipliers |
Room scale
Fister's arenas are open fields; ULTRAKILL's arena rooms are about 18-31 units across and 23-120 long, with 15-30 unit ceilings. The moves that throw John or an enemy far are scaled down to fit (the simulation itself is untouched; these multiply the distance each move covers):
| Move (setting) | Fister at body scale | Default here |
|---|---|---|
| Parry jump rise (ParryJumpLaunch 1.0) | 11.1 u | 11.1 u (clears ledges above V1's 9.7 u jump) |
| Parry jump forward (ParryJumpHorizontal 0.6) | 36 u | 23 u |
| Ground-punch hop (GroundPunchHopLaunch 0.85) | rise 8.8 u, 60 u | rise 6.4 u, 51 u |
| Rocket punch (RocketPunchTravel 0.6) | rise 55 u | rise 36 u |
| Air kick (AirKickTravel 0.45) | 122 u/s, 126 u | 55 u/s, 89 u |
| Dive (DiveTravel 0.7) | 48 u/s | 38 u/s |
| Railing (RailingTravel 0.5) | 102 u/s (2 s charge) to 283 u/s (10 s) | 51 to 142 u/s |
| Mega boost (MegaBoostTravel 0.75) | 225 u/s | 77 u/s |
| Railing wall bounce (RailingWallReverseLaunch 0.3) | 113 u/s | 34 u/s |
| Railing reversed with a parry (RailingParryReverseLaunch 0.5) | twice the approach speed | the approach speed |
| Ragdoll wall parry (WallParryLaunch 0.5) | rebound = impact speed | 50% (about 85% of 1.0.3's carry; below about 0.47 the landing slide no longer starts and the carry drops to about 2 u) |
| Mid-air surface parries (SurfaceParryLaunch 0.7) | 70% | |
| Parry timing (section "Parry timing": SurfaceParryBuffer 0.3, SurfaceParryLate 0.1) | press up to 0.16 s (in flight) / 0.25 s (ragdolled) before the contact | up to 0.3 s before; up to 0.1 s after for the in-flight floor and wall parry |
| Critical fist dash (CriticalDashTravel 0.7) | 70% | |
| Charged sprint (ChargedSprintTravel 1.0) | 31 u/s after 2 s | unchanged |
| Enemy launches (EnemyLaunch 0.9) | full punch 47 u/s | 42 u/s |
| Jab shove (JabShove 2.0) | twice Fister's stagger shove | |
| Throws (ThrowLaunch 1.0; ThrowGroundFriction 3.0; ThrowMaxTravel 40) | 32 u/s, 69 u in the open | 32 u/s, 45 u in the open (walls stop it sooner) |
For reference V1 walks at 16.5 u/s and jumps 9.7 u; John walks at 11.8 u/s and is V1's height, hat included.
Known gaps against the original
- Finishers kill and launch the enemy instead of playing Fister's finisher animations.
- No Fist Bump of Doom or railing clash (two-Fister moves), no instant-charge lightning drawn around the arm (the arm tint is), no landing-slide scuff marks and no railing burnout streaks.
- Fister's own crosshair is not drawn (ULTRAKILL's is already small).
- John's ragdoll is Fister's simulated six-box ragdoll; ULTRAKILL's death screen takes over when he dies.
- Platformer-mode sections (where the game swaps V1 for its third-person platformer character) use the game's character.
- Enemies that teleport or animate their own physics are never launched, only staggered (stand-in impact).
- No whiplash: hook points, bullet-only switches and cannonball parries need V1 (F7).
Credits
- John Fister, his moves, art and sounds: Fister by offmylawn (all rights held by Fister's owner, used with permission for John Fister ports).
- "Yeehaw" hat: Jerald McShmerald.
- Brawler badge: Jaegero.
- ULTRAKILL by Arsi "Hakita" Patala / New Blood Interactive. This is an unofficial fan mod.
- Built on BepInEx and Harmony.
License
Code: MIT (see LICENSE). Art, models and sounds: owned by Fister's owner, licensed for use in this mod only.
CHANGELOG
Changelog
1.1.1
- Fixed: live ragdolled enemies did not visibly turn orange in real levels. 1.1.0 shifted the enemy's own material colour, which barely shows on ULTRAKILL's dark-red enemies, in red levels, and with the game's emissive and colour-compression settings. Live launched, ragdolled and held enemies now get a pulsing orange glow drawn on top of them, independent of the game's shader settings; it goes away when they get up or die.
1.1.0
- Rebalanced: bosses and heavy enemies were far too easy. A full punch now deals 3.5 on contact (was 5), an air kick 7 (was 7.5). Bosses no longer lose a fixed share of their health per hit (was 10% per punch, 15% per kick); heavy enemies lose at least 10% to a punch and 15% to a kick (was 30% / 45%).
- New: air-kick chains. Each consecutive air-kick hit adds +1 damage (up to +5): a kick hit chains when John has not landed since the previous kick hit, or within 1.5 s of it.
- Fixed: bosses dying instantly. The finisher (below 20% health), the airborne uppercut kill, dive and piledriver kills and throw kills no longer apply to bosses or to enemies with more than 10 health; they deal a full punch's damage instead, and no single other hit (railing, dive, collision) deals more than two full punches to them.
- New: enemies John launches or ragdolls glow orange while they are alive, like a knocked-down player in Fister; the tint goes when they get up or die.
- New settings: AirKickChainBonus, AirKickChainWindow, AirKickChainMax, BossDamageScale, KillProtectHealth, LiveRagdollTint. Settings still at the old defaults move to the new ones.
1.0.9
- Fixed: lag during air kicks. Every physics tick of the kick searched the whole scene for projectiles to redirect (FindObjectsOfType), which costs more the bigger the level. Projectiles are now tracked as they spawn. The first air kick of a session also stalled a frame (34 ms, 4 MB) building the speed-line texture; all of John's textures, sounds, meshes and generated effect textures now load when he first appears. The per-tick target sweeps and the ragdoll update no longer allocate memory, and big enemies' colliders are looked up once.
1.0.8
- Air kicks hit harder than punches. A connecting air kick deals 7.5 on contact (1.5x a full punch, up to 1.5x more for a fast kick), heavy enemies lose at least 45% of their health and bosses at least 15%. It launches survivors at about 52 u/s (a full punch: 42), and has its own hit feel: ULTRAKILL's heavy hit, a longer hit-stop, a hard camera kick and an "AIR KICK" style bonus. The instant charge on a hit is kept. New settings: AirKickDamage, AirKickHeavyFraction, AirKickBossFraction, AirKickLaunch. Air kicks now also reach big bodies (Swordsmachine, Hideous Mass, Mindflayer, Gutterman).
- Fixed: a heavy blurry smear over the view in levels with heat haze (0-4, 0-5 and others). The heat-wave particles were seen from much closer than V1 ever sees them; while John's view renders they now stay small, so the shimmer remains and the smear is gone.
1.0.7
- Fixed: on a brand-new ULTRAKILL save the game starts in its intro and tutorial, and John took over V1 there (the boot-up calibration, then a tutorial that needs V1's jump, dash and slide). John now stays out of the intro, the tutorial, menus and the credits, and comes back in the first level.
- Safety: if John's body cannot be drawn, or switching modes fails, the mod switches back to V1, shows a short message on screen and writes the error to BepInEx/LogOutput.log, instead of leaving the player invisible. F7 tries again.
- Safety: a missing or moved assets folder is found anywhere under the plugin folder (logged), and every Harmony patch is applied on its own, so one failing patch does not disable the rest. The log names the assets folder at startup.
- F7 back to V1 also gives V1 his weapons when Fister mode started before the game handed them out.
1.0.6
- The post-parry brake is gone from every move (parry jump, surface parries, railing bounce, wall parry): speeds are set by the launch multipliers alone. The "Parry brake" settings are removed from the settings file.
- Wall and floor parries are easier to land. A parry pressed up to 0.3 s before hitting a wall or the floor still rebounds (Fister: 0.16 s in flight, 0.25 s ragdolled), and the in-flight floor and wall parry also accepts a press up to 0.1 s after the contact. New settings: Parry timing / SurfaceParryBuffer, SurfaceParryLate. The contact is detected two physics ticks ahead.
- The manifest's website link points to https://offmylawn.com.
1.0.5
- Fixed: wall parries lost their momentum almost at once (1.0.4's parry brake). The ragdoll wall parry is no longer braked; WallParryLaunch (0.5, about 85% of 1.0.3's carry) alone sets the rebound. Measured over 20 real-click attempts each: 1.0.3 parried 18/20, 1.0.4 17/20, 1.0.5 20/20. Mid-air surface parries are braked more gently (SurfaceParryLaunch 0.7, kept 0.1 s, decaying to 6 u/s).
- Each movement parry has its own brake settings in a new "Parry brake" section: ParryJump, SurfaceParry, WallParry and RailingBounce, each with Brake (on/off), BrakeHold, BrakeTime and BrakeDrift; ParryMaxSpeed is shared. 1.0.4's ParryBrakeTime and ParryDriftSpeed entries are gone.
- New: parry and grab cooldown arcs around the crosshair (left blue = parry, right yellow = grab; they fill as they recharge and flash when ready).
- New: camera collision. The third-person camera is pulled in front of walls and ceilings instead of clipping through them, its anchor drops under low ceilings, it eases back out, and John fades to see-through when it gets close.
- Fire 2 is no longer passed to the game while playing as John (only Fire 1 is, for the results screen, restarting and in-world buttons), so nothing in the game reacts to the parry button.
1.0.4
- Fixed: the results screen at the end of a level never continued, so the next level never loaded. Fister mode had switched off Fire 1, which is also the game's continue button. Fire 1 and Fire 2 now stay on (V1's guns stay put away), and the level's ending runs with V1; the next level starts as John. This also fixes clicking to restart after death and clicking shop terminals and in-world buttons.
- Punches are much stronger. They now deal ULTRAKILL-style damage on contact, on top of Fister's collision damage. A full punch deals 5 (kills Filth, Strays, Soldiers and Schisms outright); a tap chips about 0.55 and shoves the enemy about 3 u. Heavy enemies lose at least 30% of their health to a full punch, bosses at least 10%, and the critical fist deals 3x. Survivors are launched about 40 u/s (EnemyLaunch 0.5 -> 0.9), and collision damage is up (DamageScale 0.1 -> 0.15). Every connecting punch has ULTRAKILL's hit-stop and punch impact, and earns style points. New settings: PunchDamage, JabDamageFraction, HeavyPunchFraction, BossPunchFraction, CriticalPunchMultiplier, HitStop, JabShove.
- Ground, wall and floor parries, ragdoll wall parries and railing wall bounces no longer carry John across the room. Their horizontal speed is capped at 50 u/s (V1's dash) and decays within about 0.15 s; the parry jump's rise is unchanged. Railing reversed with a parry keeps its approach speed instead of doubling it. New settings: ParryMaxSpeed, ParryBrakeTime, ParryDriftSpeed, RailingParryReverseLaunch. New defaults: WallParryLaunch 0.5, SurfaceParryLaunch 0.6, RailingWallReverseLaunch 0.3.
- An existing settings file that still has the old defaults is moved to the new ones; values you changed are kept.
- Big enemies (Hideous Mass) can now be punched: their own body no longer blocks the punch's line check.
1.0.3
- Parried projectiles fly back at whoever fired them, whatever way John faces (ULTRAKILL's own parry: double speed, parried damage, heal, flash, style; then homing on the shooter). Shooter dead: the nearest enemy in front of John, else straight along the aim.
- An air kick through an enemy projectile counts as a parry: the projectile returns to its shooter, with the parry's heal, flash, style and instant charge, and the kick ends in a recoil.
- Enemies John launches, grabs or throws go limp (their own ragdoll), hang limp while held, fly limp when thrown, then get back up where they land and fight on. Dying while limp hands the body to the game's death ragdoll. Ragdolling: Filth, Stray, Schism, Soldier, Streetcleaner; Stalker, Mannequin, Drone, Virtue, Providence and rats have no ragdoll joints and still fly rigid. New setting: Combat / RagdollOnHit (default on).
- Readme: the throwable list no longer names Virtue and Puppet (the game marks Virtue as a big enemy and never knocks Puppets back, so grabbing them has always landed as a stagger hit).
1.0.2
- Instant charge (the next punch is a full charge at once; the stamina bar shows full) is now granted on every Fister source: a full-strength punch that lands, a parry, a surface parry, an air-kick hit, a railing hit, a dive or piledriver that connects, a ground-punch hop, and a thrown body that bowls into another enemy. New: any kill also grants it (Combat / InstantChargeOnKill, default on).
- Throws are violent again: Fister's full 27 F/s (about 32 u/s), with extra floor friction on the thrown body so it does not skid out of the arena (Room scale / ThrowGroundFriction).
- Only small and medium enemies can be grabbed and thrown; grabbing a heavy one, a boss or a stationary one lands as a stand-in hit.
1.0.1
- Fixed: level geometry popping out (skybox holes, missing rooms) in Fister mode. Occlusion culling ran from John's head instead of the third-person camera; the camera now renders from its real viewpoint while gameplay still aims at his head.
- New: the grab key (Punch / F) picks up, places and throws level items (skulls, keys, soap, torches) through the game's own item code; with nothing in reach it is still Fister's grab. The held item is shown in John's hand.
- New: John's parry triggers parry targets (ParryReceiver) the way V1's punch parry does.
- Changed: any punch, even a tap, breaks weak breakables (as V1's punch does).
- New setting: Room scale / ParryJumpHorizontal (parry jump forward distance, default 0.6).
1.0.0
- First release: John Fister's body and outfit, third-person camera, movement and full bare-fists move set, Fister's effects and sounds, launches and collision damage on ULTRAKILL's enemies, stand-in impacts for enemies that cannot be launched, parry mapped onto ULTRAKILL's projectile parry, per-move room-scale settings, F7 toggle back to V1.