This is a sub-page of Pizza Tower/Unused Code.
|
|
This page or section needs more videos. |
|
|
This needs some investigation. |
|
|
This article is a work in progress. |
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#
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#
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#
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#
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#
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: |
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. |