the cutting room mirror

Unused Player Code

This is a sub-page of Pizza Tower/Unused Code.

This page or section needs more videos.
There's a whole lotta words or pictures here, but not enough videos. Please fix this.
Specifically: Videos showing off the unused moves/transformations should be added.

This needs some investigation.
Discuss ideas and findings on the talk page.
Specifically: Look for unused variables being used in early builds.

This article is a work in progress.
...Well, all the articles here are, in a way. But this one moreso, and the article may contain incomplete information and editor's notes.

Note: this page assumes that you're using UndertaleModTool Community Edition to view the game's files, as that version of the program gives player state enums proper names based off the ones from the Western v3 source code.

Unused Moves#

While in the final game the player's moveset didn't change too much from the iconic SAGE 2019 Demo, there were many moves that were added over the course of the game's development, many of which ended up being removed for one reason or another. The majority of these moves still have leftover code in the files, allowing them to be restored with some small modifications.

There are some moves that are missing code for activating them, requiring educated guesses for how they were supposed to be activated. When this is the case, the explanation for how to reactivate the move will include code to be copied and pasted into the game.

Mach 1 (Pre-Eggplant Version)#

At the beginning of October 2021, Mach 2 was made the default state instead of Mach 1. Mach 1 was re-added sometime before the Eggplant Build, but instead of being its own state it was added to the Mach 2 state, leaving the original state unused. The main differences are that the player cannot grab, roll, or start wallclimbing while in this state. The player accelerates at a speed of 0.075 instead of 0.1, and can turn in the air while jumping. Jumping uses the old Mach 1 jump sprites, one of which is unused. Just like in the used version of Mach 1, reaching a movespeed of 8 will make the player start running at Mach 2.

Noise Mach 2/3 Double Jump#

In the code for both the Mach 2 and Mach 3 states is code relating to an unused sprite called spr_playerN_skateboarddoublejump. The code in question loops the last 3 frames of the animation and sets the player's sprite back to the Mach 2, 3 or 4 sprite depending on their current speed while playing the sound effect for landing on the ground after a wall bounce. This code was all added in the Noise update, so it was probably for an early version of his new moveset. This move was likely removed due to the Noise Crusher essentially acting as an infinite jump, making the double jump obsolete in many cases.

This move can be reactivated by adding the following code to scr_player_mach2 and the "P" branch of scr_player_mach3's switch statement:

if (character == "P" && (!grounded) && key_jump && (!ispeppino) && sprite_index != spr_playerN_skateboarddoublejump)
{
    image_index = 0
    sprite_index = spr_playerN_skateboarddoublejump
    vsp = jumpspeed
    particle_set_scale((4 << 0), xscale, 1)
    create_particle(x, y, (4 << 0), 0)
}

"&& sprite_index != spr_playerN_skateboarddoublejump" must also be added to the end of the if statement that sets the player's sprite to spr_crazyrun in scr_player_mach3, as double jumping while at mach 4 is buggy otherwise.

Slide Fall#

If you fell off the ground while sliding, you were supposed to glide through the air until you hit a wall or landed on the ground. This move is still programmed to happen, but is immediately interrupted by the code for diving, rendering it unused. The level design is balanced to account for this move, as it was used for most of the game's development before being removed sometime between October 2022 and the game's release.

Removing "sprite_index == spr_crouchslip ||" from the if statement that makes the player dive in scr_player_tumble will re-enable this move.

Roll Dive#

Throughout most of the Rework - Eggplant era, diving was replaced by a move where Peppino would roll downwards and mach roll on the ground until the down key is let go. It would also function similarly to the slide fall, rolling through the air if you fell off the ground while mach rolling. Just like the slide fall, this move is still programmed to happen but is immediately interrupted by the code for diving. The game is also balanced to account for this move, as it was used from sometime around the Rework Build up until shortly before the Eggplant Build, at which point level design was mostly finalized. Interestingly, the move is programmed to instead dive normally specifically if you're at mach 3 while playing as the Vigilante.

Removing " || sprite_index == spr_machroll || sprite_index == spr_mach2jump || sprite_index == spr_backslide || sprite_index == spr_backslideland" from the code for making the player dive in scr_player_tumble will re-enable this move, though in order for it to fully function as intended the code for splatting against a wall in the air and the code for changing the player's sprite to the spr_backslide while they're rolling will also have to be removed.

Chainsaw#

A move scrapped a couple months before the April 2021 build, the chainsaw was unique in that it used an ammo system and had its own input defined, key_chainsaw. If you had a gas can, you could press V to stop and rev up a chainsaw before dashing forward, killing enemies instantly, which was a property exclusive to the chainsaw, uppercutting and running at mach 3 during the time this move was used. Unfortunately its input has been disabled, and its sprites, ammo code, and activation code have been removed, but its main script is intact. This move can be seen in the December 2020 development update video and other footage from around the time.

Superjump Cancel (Eggplant Version)#

In the Eggplant Build, the superjump cancel functioned slightly different, as it was floatier, the player could move left and right, and hitting a wall would make the player bounce off. This version of the move is still left over fully functional in the punch state's code, as the final version of the superjump cancel is part of the Mach 3 state's code instead.

This move can be accessed simply by changing the line in scr_player_Sjump that sets the player's state to states.mach3 to set their state to states.punch instead.

Kung Fu#

In a few development streams from November 2021, Peppino's moveset was shown to replace his grab with kung fu moves. This was scrapped a mere month later, but the code still remains in the punch state's code.

Attack Dash#

Peppino dashes forwards using one of 3 random sprites, killing enemies instantly instead of grabbing them. Hitting a wall makes him bounce off. A couple still frames of the dash sprites were eventually reused for the rebound after hitting bosses.

Air Attack#

Peppino attacks using one of 3 random sprites, this time in the air. Hitting a wall makes him bounce off.

Pepperman Shoulder Bash#

Pepperman's shoulder bash move from when he was a playable character. In this state, he runs at a set speed instead of gradually building up speed. Turning in this state will not have him lose his speed.

Crouchslip Jump#

In early builds, particularly Beachandforest, you could jump while crouchslipping, though this move is basically the same as normally jumping. Some of its code and all the sprites are still in the game.

Unused Transformations#

Meteor Peppino#

A transformation left in the files ever since Early Test Build. To function properly the player's sprite must be set to spr_meteorpep_flying. When in this state, Peppino is sent backwards at an increasingly high speed until hitting a wall, which he bumps against for a second before falling. When hitting the wall the camera shakes and any enemies on screen bounce once.

Pizza Car#

file:PTpeppinopizzacar.gif

To function properly the player's sprite must be set to spr_player_pizzacar. When in this state the player can only move forward and jump. It was intended to be used after getting in a pizza box-like car dropped by the unused enemy Phil, and was mainly used during an old version of The Pig City's escape sequence in the Rework Build. Driving into Stupid Rats will destroy them, while driving into a wall will destroy the Pizza Car and return the player to normal.

Other Unused States#

states.debugstate#

A state that can be accessed by typing "noclip" into the debug console. As the name implies, it's a simple noclip state used during debugging, allowing the player to move freely through any collision, move faster by holding the dash button, and leave the state by pressing either the jump button or the grab button. Oddly, this state sets the player's animation speed to 1, when normally animation speed is 0.35.

states.runonball#

file:PTpeppinosliding.gif

A state previously seen unused in Early Test Build, where it was associated with the scrapped Level 5. When the player is set to this state, it no longer functions because obj_ball was removed in a later build.

states.facestomp#

file:PTpeppinofacestomp.gif

An older version of freefalling for a while in the air after jumping. This state was cut in favour of making freefalling part of the jump state.

states.skateboard#

The skateboard ability, as seen in the Early Test Build. In this state, the player will skate forwards, with the ability to jump. Landing on the ground after a jump will let the player be free from the skateboard, as they cannot get off it otherwise.

states.hookshot#

Pizza_Tower_spr-playerN-hookshot1.gif Pizza_Tower_spr-playerN-hookshot2.gif

In a very old version of Refrigerator-Refrigerador-Freezerator from early 2019, McPig had an idea of having Noise ride a washing machine. While riding said washing machine, he would have the ability to hook enemies and break metal blocks without going at Mach 3 speeds. spr-playerN-hookshot2, the bouncing sprite, is reused in World 5's laundry room secret. This state can still be accessed by mounting the washing machine object that can be found in the unused version of R-R-Freezerator.

states.highjump#

Ptpeppinohighjumpstart.gif Ptpeppinohighjumpintial.gif Ptpeppinohighjump.gif

Peppino's old high jump move, leftover from the Early Test Build. In this state, he would jump up higher than normal. If the down key was held and if the player was in midair, the player would go into a state where Peppino would prepare for a freefall.

Slope Deceleration#

Some states call a function called scr_player_addslopemomentum(), which is used to make the player speed up when running down slopes by an amount passed in as the function's first argument. However, the function actually requires a second argument too, which was supposed to be used to make the player slow down when running up slopes as seen in the Rework and Eggplant Builds. When slope deceleration was removed, all the variables/values passed into this second argument were left intact, and instead the code to decrease speed was removed from the function itself, leaving the second argument unused. The value passed into the second argument is typically 0.2, the same deceleration as in the Eggplant Build.

Unused Variables#

There are a fair number of variables in obj_player's create event that are either never used at all, only used by unused code, leftover from older builds, or are normally used but have no effect on the game due to changes in how other mechanics work. Note that some of these variables are meant for other objects, but are defined in obj_player's create event.

To do:
Add a detailed descriptions for some variables as they have placeholder text in them.

Variable

Default Value

Description

pepperman_accel

0.25

Acceleration while playing as Pepperman

pepperman_deccel

0.5

Decceleration while playing as Pepperman

pepperman_accel_air

0.15

Air Acceleration while playing as Pepperman

pepperman_deccel_air

0.25

Air Decceleration while playing as Pepperman

pepperman_maxhsp_normal

6

Max walking speed while playing as Pepperman

pepperman_jumpspeed

11

Jump speed while playing as Pepperman

pepperman_grabID

-4

Enemy held while playing as Pepperman

shoulderbash_mspeed_start

12

Initial speed when shoulder bashing as Pepperman

shoulderbash_mspeed_loop

10

Speed while shoulder bashing as Pepperman

goingupslope

false

set to false twice in scr_playerreset, but never set to true by anything

goingupslope

false

set to false twice in scr_playerreset, but never set to true by anything

slapcharge

0

Related to the slap move Peppino had in the 2018 builds.

slaphand

1

Related to the slap move Peppino had in the 2018 builds.

slapbuffer

8

Related to the slap move Peppino had in the 2018 builds.

slapflash

0

Related to the slap move Peppino had in the 2018 builds.

costumercutscenetimer

0

Used by a cutscene leftover from early 2019 where giving an alien some pizza ended the level.

heavy

false

Possibly related to the unused heavy variable used by enemies to make the player walk slower and jump higher when holding them?

lastroom_x

0

Only set by the unused object obj_snickchallengedoor when entering it

lastroom_y

0

Only set by the unused object obj_snickchallengedoor when entering it

lastTargetoor

"A"

Completely unused.

backupweapon

false

Probably a leftover from SAGE 2019-era builds, when the player had the ability to hold a backup shotgun.

spotlight

true

Used in the old co-op mode where both players could move at the same time. It determined which player to the camera, enemies, and many other objects should focus on or interact with. Still referenced by many objects.

pogospeed

2

The player's speed while using Pogo Noise's pogo stick.

pogocharge

100

The buildup to when the player is charged up on the pogo stick while playing as Pogo Noise.

pogochargeactive

false

Makes the player use the charged up sprites on the pogo stick while playing as Pogo Noise.

wallclingcooldown

10

The cooldown before the player can cling to a wall again while playing as Pogo Noise.

bombcharge

0

Probably related to Pogo Noise's ability to kick bombs in early 2020 builds.

flashflicker

false

Decides whether the player should flash while playing as Pogo Noise.

flashflickertime

0

The buildup to when the player should turn white while flashflicker is set to true while playing as Pogo Noise.

kickbomb

false

Probably related to Pogo Noise's ability to kick bombs in early 2020 builds.

doublejump

false

Set to true when the player double jumps as Pogo Noise, preventing them from jumping again until touching the ground.

pogospeedprev

false

Prevents the player from bouncing in the air while playing as Pogo Noise.

fightballadvantage

false

Probably for an earlier version of the fightball mechanic used in Swap Mode, as this variable is set when the players grab each other in the unused co-op mode from 2019-2021 but doesn't have any actual function while the fightball is active.

coopdelay

0

Acts as a delay for making the second player become visible after the first one comes out of a door in coop mode, though this is no longer how doors work with 2 players, making this variable useless.

pizzashield

false

Controls whether the player has a pizza shield, which are in the game's files but never normally used.

pizzashieldid

obj_null

When the player has a pizza shield, this variable stores the ID of which pizza shield object they're currently using.

freefallvsp

15

Set to 20 when the player's state isn't states.freefall, but is never used for anything.

lungeattackID

-4

Stores which lunge hitbox belongs to the player when in the unused arena mode.

lunge_hits

0

Stores how many hits the player has in the unused arena mode.

lunge_hit_buffer

0

Supposed to be a buffer for hitting enemies while in the unused arena mode, but the code to make the buffer go down is missing.

lunge_buffer

0

Set to 14 when the player's state is states.lungeattack, but the code to drain the buffer is missing.

finisher

false

getting tired of writing these good thing this page is wip so i can just leave a placeholder description

finisher_buffer

0

getting tired of writing these good thing this page is wip so i can just leave a placeholder description

finisher_hits

0

getting tired of writing these good thing this page is wip so i can just leave a placeholder description

uplaunch

false

getting tired of writing these good thing this page is wip so i can just leave a placeholder description

downlaunch

false

figuring out what the past few descriptions are for + elaborating on the other arena stuff is gonna be annoying cuz the code for it is only in the rework build

dash_doubletap

0

Supposed to be decreased if the variable is greater than 0, but it's never set to go above 0 by anything.

farmerpos

0

Used to determine which farmer the player is currently able to use in the Rework version of the unused Mansion level

knightmove

-1

Completely unused.

global.playerhealth

100

Health when playing as the Vigilante

global.temperature

0

Leftover from old versions of Refrigerator-Refrigerador-Freezerator that operated on a temperature system throughout the entire stage.

global.temperature_spd

0.01

The speed the temperature would move.

global.temp_thresholdnumber

5

The temperature threshold

global.use_temperature

false

The variable to control whether to actually use the temperature mechanic. Technically still used as it's set to true in freezer_lap, freezer_1, rm_testing and rm_testing2, though it no longer functions as most of the code for the temperature mechanic was removed.

global.pepanimatronic

false

Controls whether the unused object obj_pepanimatronicfollow follows the player. Still set to true in kidsparty_1, but is completely usless as the object has been deleted from the map.

global.heattime

0

The time before the unused Heat Meter from the April 2021-Eggplant Builds would start draining. Still set to 60 by many objects.

global.pizzacoin

0

Pizza coins were used as collectibles in some 2018-2019 builds, and this variable stored how many the player had.

global.hp

2

The old HP system originally from some early 2019 builds, then reworked to only be used in Gnome Forest while delivering pizza, but ultimately scrapped entirely.

global.gotshotgun

false

Completely unused.

global.showgnomelist

false

Controls whether to show the unused gnome list, a leftover from early versions of Gnome Forest.

global.snickchallenge

false

Controls whether Snick Challenge is active, a leftover from the SAGE 2019 Demo. Several objects will disappear if set to true.

global.shotgunammo

0

Leftover from very early builds where the shotgun had an ammo system.

global.monsterspeed

0

The current speed the Toppin Monsters were going while in other rooms in early versions of Don't Make a Sound.

global.monsterlives

3

The amount of times a player could get caught before being sent back to the beginning of the level in early versions of Don't Make a Sound.

global.giantkey

false

Set to true by obj_giantkey, an early version of the key dropped after beating a boss.

global.coop

false

The variable that controls if you're playing the unused co-op mode from 2019-2021.

global.baddiespeed

1

A variable that was originally part of enemies' move scripts to make them move faster depending on the Heat Meter's level, but was removed from those scripts in the Eggplant Build. This variable is still increased and decreased in the unused scripts scr_heatup and scr_heatdown. scr_enemy_rage still has the variable affect the move speed of enemies, but the script is unused.

global.baddiepowerup

false

Set to true in scr_heatup when the current heat level is 2, set to false in scr_heatdown when the current heat level is not 2.

global.baddierage

false

Set to true in scr_heatup when the current heat level is greater than or equal to 2, set to false in scr_heatdown when the current heat level is less than 2.

global.style

-1/0

The current amount of heat the player had when the Heat Meter was still used. For some reason, this variable is set twice, the first time to -1 and the second time to 0.

global.stylethreshold

0

This variable stored the current heat level.

global.pizzadelivery

false

A leftover from early versions of Gnome Forest. This variable is set by a cutscene in the unused room forest_4, where Gustavo gives you pizza to deliver to the the gnomes. Would have made the old pizza health bar appear in the top left of the screen, but that health bar was repurposed for the unused arena system, rendering this variable useless.

global.failcutscene

false

This variable controls whether Gustavo would attack you in the previously mentioned room forest_4, which would be a punishment for failing to deliver a pizza.

global.pizzasdelivered

0

This variable would count how many pizzas the player delivered in Gnome Forest.

global.bullet

0

A leftover from the April 2021 version of the pistol, when it was a move the player had at all times but required ammo.

global.fuel

3

A leftover from the scrapped chainsaw move that was used from sometime before December 2020 to shortly before the February 2021 playtest build. Just like the pistol, it required ammo to use.

global.ammorefill

0

Completely unused.

global.ammoalt

1

Completely unused.

global.stylelock

false

When set to true, it would have prevented the Heat Meter from draining naturally, instead only draining when the player got hit. This variable was set to true when getting Gerome in the April 2021 and Rework Builds.

global.attackstyle

0

Controls which attack style the player would use, the main attack style being 0, but having 3 others. Despite being checked by some code, the variable never changes from 0 and the other attack styles have been mostly dummied out.

global.pummeltest

true

Seems to be related to an unused move where the player could pummel enemies before killing them, though this is locked behind the attack style being set to 3, rendering this move variable unused.

global.kungfu

false

Meant for the unused arena system. When enabled, the player is given actual HP, and dying sends the player to the previous room.

global.graffiticount

0

A leftover from the Rework Build's version of The Pig City, where the player needed to find 20 spots to graffiti in order to progress. This variable held how many spot the player had graffitied.

global.graffitimax

20

The max amount of spots the player had to graffiti.

global.hasfarmer

array_create(3, false)

Creates an array of 3 with all values set to false. The values would be set to true as you got farmers in the Rework version of the unused Mansion level.

global.savedattackstyle

-4

Self explanatory.

global.throw_frame[obj_cheeserobot]

6

An entry in the throw_frame array for the unused Cheese Robot enemy.

global.throw_frame[obj_trash]

2

An entry in the throw_frame array for the Trash Pan, which doesn't throw anything in the final game but did through cheese balls in every build up to the Eggplant Build.

global.throw_frame[obj_invtrash]

2

An entry in the throw_frame array for the unused Invincible Trash Pan enemy.

global.throw_frame[obj_kentukylenny]

8

An entry in the throw_frame array for the unused Kentucky Lenny enemy.

global.throw_frame[obj_tank]

6

An entry in the throw_frame array for the original version of the Cardboard Tank enemy, which was replaced with a separate object called obj_bazookabaddie in the final game.

global.throw_frame[obj_thug_green]

9

An entry in the throw_frame array for the unused Green Shrimp Thug enemy.

global.throw_frame[obj_miniufo]

3

An entry in the throw_frame array for the unused U.F.Olive, a leftover from its original behaviour of dropping projectiles to harm or teleport the player.

global.throw_sprite[obj_cheeserobot]

spr_cheeserobot_attack

An entry in the throw_sprite array for the unused Cheese Robot enemy.

global.throw_sprite[obj_trash]

spr_trash_throw

An entry in the throw_sprite array for the Trash Pan, which doesn't throw anything in the final game but did through cheese balls in every build up to the Eggplant Build.

global.throw_sprite[obj_invtrash]

spr_invtrash_throw

An entry in the throw_sprite array for the unused Invincible Trash Pan enemy.

global.throw_sprite[obj_kentukylenny]

spr_kentukykenny_throw

An entry in the throw_sprite array for the unused Kentucky Lenny enemy.

global.throw_sprite[obj_tank]

spr_tank_shoot

An entry in the throw_sprite array for the original version of the Cardboard Tank enemy, which was replaced with a separate object called obj_bazookabaddie in the final game.

global.throw_sprite[obj_thug_green]

spr_shrimp_knife

An entry in the throw_sprite array for the unused Green Shrimp Thug enemy.

global.throw_sprite[obj_miniufo]

spr_ufolive_shoot

An entry in the throw_sprite array for the unused U.F.Olive, a leftover from its original behaviour of dropping projectiles to harm or teleport the player.

global.reset_timer[obj_cheeserobot]

200

An entry in the reset_timer array for the unused Cheese Robot enemy.

global.reset_timer[obj_trash]

100

An entry in the reset_timer array for the Trash Pan, which doesn't throw anything in the final game but did through cheese balls in every build up to the Eggplant Build.

global.reset_timer[obj_invtrash]

100

An entry in the reset_timer array for the unused Invincible Trash Pan enemy.

global.reset_timer[obj_kentukylenny]

200

An entry in the reset_timer array for the unused Kentucky Lenny enemy.

global.reset_timer[obj_tank]

100

An entry in the reset_timer array for the original version of the Cardboard Tank enemy, which was replaced with a separate object called obj_bazookabaddie in the final game.

global.reset_timer[obj_thug_green]

60

An entry in the reset_timer array for the unused Green Shrimp Thug enemy.

global.reset_timer[obj_miniufo]

100

An entry in the reset_timer array for the unused U.F.Olive, a leftover from its original behaviour of dropping projectiles to harm or teleport the player.

angle

0

A variable used in the Rework Build to change the player's angle on slopes, a feature that was removed in the final game.