diff --git a/src/deh_tables.c b/src/deh_tables.c
index 48ce34931802b9c81a3954ff34a4fc2f0ff704ca..44b3870d5f16c12d93da24abac54200805161a2f 100644
--- a/src/deh_tables.c
+++ b/src/deh_tables.c
@@ -2913,6 +2913,69 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi
 	"S_BHORIZ7",
 	"S_BHORIZ8",
 
+	// Yellow Trampoline
+	"S_YELLOWTRAMPOLINE",
+	"S_YELLOWTRAMPOLINE2",
+	"S_YELLOWTRAMPOLINE3",
+	"S_YELLOWTRAMPOLINE4",
+	"S_YELLOWTRAMPOLINE5",
+
+	// Red Trampoline
+	"S_REDTRAMPOLINE",
+	"S_REDTRAMPOLINE2",
+	"S_REDTRAMPOLINE3",
+	"S_REDTRAMPOLINE4",
+	"S_REDTRAMPOLINE5",
+
+	// Blue Trampoline
+	"S_BLUETRAMPOLINE",
+	"S_BLUETRAMPOLINE2",
+	"S_BLUETRAMPOLINE3",
+	"S_BLUETRAMPOLINE4",
+	"S_BLUETRAMPOLINE5",
+
+	// Horizontal Yellow Trampoline
+	"S_HORIZYELLOWTRAMPOLINE",
+	"S_HORIZYELLOWTRAMPOLINE2",
+	"S_HORIZYELLOWTRAMPOLINE3",
+	"S_HORIZYELLOWTRAMPOLINE4",
+	"S_HORIZYELLOWTRAMPOLINE5",
+
+	// Horizontal Red Trampoline
+	"S_HORIZREDTRAMPOLINE",
+	"S_HORIZREDTRAMPOLINE2",
+	"S_HORIZREDTRAMPOLINE3",
+	"S_HORIZREDTRAMPOLINE4",
+	"S_HORIZREDTRAMPOLINE5",
+
+	// Horizontal Blue Trampoline
+	"S_HORIZBLUETRAMPOLINE",
+	"S_HORIZBLUETRAMPOLINE2",
+	"S_HORIZBLUETRAMPOLINE3",
+	"S_HORIZBLUETRAMPOLINE4",
+	"S_HORIZBLUETRAMPOLINE5",
+
+	// Diagonal Yellow Trampoline
+	"S_DIAGYELLOWTRAMPOLINE",
+	"S_DIAGYELLOWTRAMPOLINE2",
+	"S_DIAGYELLOWTRAMPOLINE3",
+	"S_DIAGYELLOWTRAMPOLINE4",
+	"S_DIAGYELLOWTRAMPOLINE5",
+
+	// Diagonal Red Trampoline
+	"S_DIAGREDTRAMPOLINE",
+	"S_DIAGREDTRAMPOLINE2",
+	"S_DIAGREDTRAMPOLINE3",
+	"S_DIAGREDTRAMPOLINE4",
+	"S_DIAGREDTRAMPOLINE5",
+
+	// Diagonal Blue Trampoline
+	"S_DIAGBLUETRAMPOLINE",
+	"S_DIAGBLUETRAMPOLINE2",
+	"S_DIAGBLUETRAMPOLINE3",
+	"S_DIAGBLUETRAMPOLINE4",
+	"S_DIAGBLUETRAMPOLINE5",
+
 	// Booster
 	"S_BOOSTERSOUND",
 	"S_YELLOWBOOSTERROLLER",
@@ -3744,6 +3807,16 @@ const char *const MOBJTYPE_LIST[] = {  // array length left dynamic for sanity t
 	"MT_REDHORIZ",
 	"MT_BLUEHORIZ",
 
+	"MT_YELLOWTRAMPOLINE",
+	"MT_REDTRAMPOLINE",
+	"MT_BLUETRAMPOLINE",
+	"MT_HORIZYELLOWTRAMPOLINE",
+	"MT_HORIZREDTRAMPOLINE",
+	"MT_HORIZBLUETRAMPOLINE",
+	"MT_DIAGYELLOWTRAMPOLINE",
+	"MT_DIAGREDTRAMPOLINE",
+	"MT_DIAGBLUETRAMPOLINE",
+
 	"MT_BOOSTERSEG",
 	"MT_BOOSTERROLLER",
 	"MT_YELLOWBOOSTER",
diff --git a/src/f_finale.c b/src/f_finale.c
index 1d6c1c00936b09b1064b88efe630134711382528..c6ca7877f62e5b14c22e8f1897741caaabefd1e7 100644
--- a/src/f_finale.c
+++ b/src/f_finale.c
@@ -1160,7 +1160,6 @@ static const char *credits[] = {
 	"Sally \"TehRealSalt\" Cochenour",
 	"Desmond \"Blade\" DesJardins",
 	"Sherman \"CoatRack\" DesJardins",
-	"\"Evertone\"", // summit showdown hehehehe
 	"Ben \"Mystic\" Geyer",
 	"Nathan \"Jazz\" Giroux",
 	"\"GomaTheMascar\"",
@@ -1171,6 +1170,7 @@ static const char *credits[] = {
 	"Mujamel \"MK\" Khan",
 	"\"Kaito Sinclaire\"",
 	"Alexander \"DrTapeworm\" Moench-Ford",
+	"\"orbitalviolet\"", // summit showdown hehehehe (aka Evertone)
 	"\"Radicalicious\"",
 	"\"Revan\"",
 	"Anna \"QueenDelta\" Sandlin",
diff --git a/src/hardware/hw_light.c b/src/hardware/hw_light.c
index e118fff5139c8ecabb093e6d0fc788d10c056790..2e6ad7db7b6bc0424e2b18c40de135799ffc942e 100644
--- a/src/hardware/hw_light.c
+++ b/src/hardware/hw_light.c
@@ -481,6 +481,15 @@ light_t *t_lspr[NUMSPRITES] =
 	&lspr[NOLIGHT],     // SPR_SSWY
 	&lspr[NOLIGHT],     // SPR_SSWR
 	&lspr[NOLIGHT],     // SPR_SSWB
+	&lspr[NOLIGHT],     // SPR_MPRY
+	&lspr[NOLIGHT],     // SPR_MPRR
+	&lspr[NOLIGHT],     // SPR_MPRB
+	&lspr[NOLIGHT],     // SPR_MSWY
+	&lspr[NOLIGHT],     // SPR_MSWR
+	&lspr[NOLIGHT],     // SPR_MSWB
+	&lspr[NOLIGHT],     // SPR_MDIY
+	&lspr[NOLIGHT],     // SPR_MDIR
+	&lspr[NOLIGHT],     // SPR_MDIB
 	&lspr[NOLIGHT],     // SPR_BSTY
 	&lspr[NOLIGHT],     // SPR_BSTR
 
diff --git a/src/info.c b/src/info.c
index 4dfb5bc064c1400768ccb7f22b4109a67750f7f9..7855b6157a6ce4d7d741f57a21b344c1f2df1b35 100644
--- a/src/info.c
+++ b/src/info.c
@@ -392,6 +392,15 @@ char sprnames[NUMSPRITES + 1][MAXSPRITENAME + 1] =
 	"SSWY", // Yellow Side Spring
 	"SSWR", // Red Side Spring
 	"SSWB", // Blue Side Spring
+	"MPRY", // Yellow trampoline
+	"MPRR", // Red trampoline
+	"MPRB", // Blue trampoline
+	"MSWY", // Yellow horizontal trampoline
+	"MSWR", // Red horizontal trampoline
+	"MSWB", // Blue horizontal trampoline
+	"MDIY", // Yellow diagonal trampoline
+	"MDIR", // Red diagonal trampoline
+	"MDIB", // Blue diagonal trampoline
 	"BSTY", // Yellow Booster
 	"BSTR", // Red Booster
 
@@ -3321,6 +3330,69 @@ state_t states[NUMSTATES] =
 	{SPR_SSWB, 2, 1, {NULL}, 0, 0, S_BHORIZ8, 0},   // S_BHORIZ7
 	{SPR_SSWB, 1, 1, {NULL}, 0, 0, S_BHORIZ1, 0},   // S_BHORIZ8
 
+	// Yellow trampoline
+	{SPR_MPRY, 0, -1, {NULL}, 0, 0, S_NULL, 0},    // S_YELLOWTRAMPOLINE
+	{SPR_MPRY, 4, 4, {A_Pain}, 0, 0, S_YELLOWTRAMPOLINE3, 0}, // S_YELLOWTRAMPOLINE2
+	{SPR_MPRY, 3, 1, {NULL}, 0, 0, S_YELLOWTRAMPOLINE4, 0},   // S_YELLOWTRAMPOLINE3
+	{SPR_MPRY, 2, 1, {NULL}, 0, 0, S_YELLOWTRAMPOLINE5, 0},   // S_YELLOWTRAMPOLINE4
+	{SPR_MPRY, 1, 1, {NULL}, 0, 0, S_YELLOWTRAMPOLINE, 0},   // S_YELLOWTRAMPOLINE5
+
+	// Red trampoline
+	{SPR_MPRR, 0, -1, {NULL}, 0, 0, S_NULL, 0},    // S_REDTRAMPOLINE
+	{SPR_MPRR, 4, 4, {A_Pain}, 0, 0, S_REDTRAMPOLINE3, 0}, // S_REDTRAMPOLINE2
+	{SPR_MPRR, 3, 1, {NULL}, 0, 0, S_REDTRAMPOLINE4, 0},   // S_REDTRAMPOLINE3
+	{SPR_MPRR, 2, 1, {NULL}, 0, 0, S_REDTRAMPOLINE5, 0},   // S_REDTRAMPOLINE4
+	{SPR_MPRR, 1, 1, {NULL}, 0, 0, S_REDTRAMPOLINE, 0},   // S_REDTRAMPOLINE5
+
+	// Blue trampoline
+	{SPR_MPRB, 0, -1, {NULL}, 0, 0, S_NULL, 0},    // S_BLUETRAMPOLINE
+	{SPR_MPRB, 4, 4, {A_Pain}, 0, 0, S_BLUETRAMPOLINE3, 0}, // S_BLUETRAMPOLINE2
+	{SPR_MPRB, 3, 1, {NULL}, 0, 0, S_BLUETRAMPOLINE4, 0},   // S_BLUETRAMPOLINE3
+	{SPR_MPRB, 2, 1, {NULL}, 0, 0, S_BLUETRAMPOLINE5, 0},   // S_BLUETRAMPOLINE4
+	{SPR_MPRB, 1, 1, {NULL}, 0, 0, S_BLUETRAMPOLINE, 0},   // S_BLUETRAMPOLINE5
+
+	// Yellow horizontal trampoline
+	{SPR_MSWY, 0, -1, {NULL}, 0, 0, S_NULL, 0},    // S_HORIZYELLOWTRAMPOLINE
+	{SPR_MSWY, 4, 4, {A_Pain}, 0, 0, S_HORIZYELLOWTRAMPOLINE3, 0}, // S_HORIZYELLOWTRAMPOLINE2
+	{SPR_MSWY, 3, 1, {NULL}, 0, 0, S_HORIZYELLOWTRAMPOLINE4, 0},   // S_HORIZYELLOWTRAMPOLINE3
+	{SPR_MSWY, 2, 1, {NULL}, 0, 0, S_HORIZYELLOWTRAMPOLINE5, 0},   // S_HORIZYELLOWTRAMPOLINE4
+	{SPR_MSWY, 1, 1, {NULL}, 0, 0, S_HORIZYELLOWTRAMPOLINE, 0},   // S_HORIZYELLOWTRAMPOLINE5
+
+	// Red horizontal trampoline
+	{SPR_MSWR, 0, -1, {NULL}, 0, 0, S_NULL, 0},    // S_HORIZREDTRAMPOLINE
+	{SPR_MSWR, 4, 4, {A_Pain}, 0, 0, S_HORIZREDTRAMPOLINE3, 0}, // S_HORIZREDTRAMPOLINE2
+	{SPR_MSWR, 3, 1, {NULL}, 0, 0, S_HORIZREDTRAMPOLINE4, 0},   // S_HORIZREDTRAMPOLINE3
+	{SPR_MSWR, 2, 1, {NULL}, 0, 0, S_HORIZREDTRAMPOLINE5, 0},   // S_HORIZREDTRAMPOLINE4
+	{SPR_MSWR, 1, 1, {NULL}, 0, 0, S_HORIZREDTRAMPOLINE, 0},   // S_HORIZREDTRAMPOLINE5
+
+	// Blue horizontal trampoline
+	{SPR_MSWB, 0, -1, {NULL}, 0, 0, S_NULL, 0},    // S_HORIZBLUETRAMPOLINE
+	{SPR_MSWB, 4, 4, {A_Pain}, 0, 0, S_HORIZBLUETRAMPOLINE3, 0}, // S_HORIZBLUETRAMPOLINE2
+	{SPR_MSWB, 3, 1, {NULL}, 0, 0, S_HORIZBLUETRAMPOLINE4, 0},   // S_HORIZBLUETRAMPOLINE3
+	{SPR_MSWB, 2, 1, {NULL}, 0, 0, S_HORIZBLUETRAMPOLINE5, 0},   // S_HORIZBLUETRAMPOLINE4
+	{SPR_MSWB, 1, 1, {NULL}, 0, 0, S_HORIZBLUETRAMPOLINE, 0},   // S_HORIZBLUETRAMPOLINE5
+	
+	// Yellow diagonal trampoline
+	{SPR_MDIY, 0, -1, {NULL}, 0, 0, S_NULL, 0},    // S_DIAGYELLOWTRAMPOLINE
+	{SPR_MDIY, 4, 4, {A_Pain}, 0, 0, S_DIAGYELLOWTRAMPOLINE3, 0}, // S_DIAGYELLOWTRAMPOLINE2
+	{SPR_MDIY, 3, 1, {NULL}, 0, 0, S_DIAGYELLOWTRAMPOLINE4, 0},   // S_DIAGYELLOWTRAMPOLINE3
+	{SPR_MDIY, 2, 1, {NULL}, 0, 0, S_DIAGYELLOWTRAMPOLINE5, 0},   // S_DIAGYELLOWTRAMPOLINE4
+	{SPR_MDIY, 1, 1, {NULL}, 0, 0, S_DIAGYELLOWTRAMPOLINE, 0},   // S_DIAGYELLOWTRAMPOLINE5
+
+	// Red diagonal trampoline
+	{SPR_MDIR, 0, -1, {NULL}, 0, 0, S_NULL, 0},    // S_DIAGREDTRAMPOLINE
+	{SPR_MDIR, 4, 4, {A_Pain}, 0, 0, S_DIAGREDTRAMPOLINE3, 0}, // S_DIAGREDTRAMPOLINE2
+	{SPR_MDIR, 3, 1, {NULL}, 0, 0, S_DIAGREDTRAMPOLINE4, 0},   // S_DIAGREDTRAMPOLINE3
+	{SPR_MDIR, 2, 1, {NULL}, 0, 0, S_DIAGREDTRAMPOLINE5, 0},   // S_DIAGREDTRAMPOLINE4
+	{SPR_MDIR, 1, 1, {NULL}, 0, 0, S_DIAGREDTRAMPOLINE, 0},   // S_DIAGREDTRAMPOLINE5
+
+	// Blue diagonal trampoline
+	{SPR_MDIB, 0, -1, {NULL}, 0, 0, S_NULL, 0},    // S_DIAGBLUETRAMPOLINE
+	{SPR_MDIB, 4, 4, {A_Pain}, 0, 0, S_DIAGBLUETRAMPOLINE3, 0}, // S_DIAGBLUETRAMPOLINE2
+	{SPR_MDIB, 3, 1, {NULL}, 0, 0, S_DIAGBLUETRAMPOLINE4, 0},   // S_DIAGBLUETRAMPOLINE3
+	{SPR_MDIB, 2, 1, {NULL}, 0, 0, S_DIAGBLUETRAMPOLINE5, 0},   // S_DIAGBLUETRAMPOLINE4
+	{SPR_MDIB, 1, 1, {NULL}, 0, 0, S_DIAGBLUETRAMPOLINE, 0},   // S_DIAGBLUETRAMPOLINE5
+
 	// Boosters
 	{SPR_NULL, 0, 1, {A_Pain}, 0, 0, S_INVISIBLE, 0}, // S_BOOSTERSOUND
 	{SPR_BSTY,                  FF_ANIMATE, -1, {NULL}, 2, 1, S_NULL, 0}, // S_YELLOWBOOSTERROLLER
@@ -7847,6 +7919,249 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
 		S_BHORIZ2       // raisestate
 	},
 
+	{           // MT_YELLOWTRAMPOLINE
+		1814,            // doomednum
+		S_YELLOWTRAMPOLINE, // spawnstate
+		1000,           // spawnhealth
+		S_NULL,         // seestate
+		sfx_None,       // seesound
+		0,              // reactiontime
+		sfx_None,       // attacksound
+		S_NULL,         // painstate
+		0,              // painchance
+		sfx_mariob,     // painsound
+		S_NULL,         // meleestate
+		S_NULL,         // missilestate
+		S_NULL,         // deathstate
+		S_NULL,         // xdeathstate
+		sfx_None,       // deathsound
+		0,              // speed
+		20*FRACUNIT,    // radius
+		16*FRACUNIT,    // height
+		0,              // display offset
+		20*FRACUNIT,    // mass
+		0,              // damage
+		sfx_None,       // activesound
+		MF_SOLID|MF_SPRING, // flags
+		S_YELLOWTRAMPOLINE2 // raisestate
+	},
+
+	{           // MT_REDTRAMPOLINE
+		1815,            // doomednum
+		S_REDTRAMPOLINE, // spawnstate
+		1000,           // spawnhealth
+		S_NULL,         // seestate
+		sfx_None,       // seesound
+		0,              // reactiontime
+		sfx_None,       // attacksound
+		S_NULL,         // painstate
+		0,              // painchance
+		sfx_mariob,     // painsound
+		S_NULL,         // meleestate
+		S_NULL,         // missilestate
+		S_NULL,         // deathstate
+		S_NULL,         // xdeathstate
+		sfx_None,       // deathsound
+		0,              // speed
+		20*FRACUNIT,    // radius
+		16*FRACUNIT,    // height
+		0,              // display offset
+		32*FRACUNIT,    // mass
+		0,              // damage
+		sfx_None,       // activesound
+		MF_SOLID|MF_SPRING, // flags
+		S_REDTRAMPOLINE2 // raisestate
+	},
+
+	{           // MT_BLUETRAMPOLINE
+		1813,            // doomednum
+		S_BLUETRAMPOLINE, // spawnstate
+		1000,           // spawnhealth
+		S_NULL,         // seestate
+		sfx_None,       // seesound
+		0,              // reactiontime
+		sfx_None,       // attacksound
+		S_NULL,         // painstate
+		0,              // painchance
+		sfx_mariob,     // painsound
+		S_NULL,         // meleestate
+		S_NULL,         // missilestate
+		S_NULL,         // deathstate
+		S_NULL,         // xdeathstate
+		sfx_None,       // deathsound
+		0,              // speed
+		20*FRACUNIT,    // radius
+		16*FRACUNIT,    // height
+		0,              // display offset
+		11*FRACUNIT,    // mass
+		0,              // damage
+		sfx_None,       // activesound
+		MF_SOLID|MF_SPRING, // flags
+		S_BLUETRAMPOLINE2 // raisestate
+	},
+
+	{           // MT_HORIZYELLOWTRAMPOLINE
+		1817,            // doomednum
+		S_HORIZYELLOWTRAMPOLINE, // spawnstate
+		1000,           // spawnhealth
+		S_NULL,         // seestate
+		sfx_None,       // seesound
+		0,              // reactiontime
+		sfx_None,       // attacksound
+		S_NULL,         // painstate
+		0,              // painchance
+		sfx_mariob,     // painsound
+		S_NULL,         // meleestate
+		S_NULL,         // missilestate
+		S_NULL,         // deathstate
+		S_NULL,         // xdeathstate
+		sfx_None,       // deathsound
+		0,              // speed
+		20*FRACUNIT,    // radius
+		16*FRACUNIT,    // height
+		0,              // display offset
+		0,    			// mass
+		36*FRACUNIT,    // damage
+		sfx_None,       // activesound
+		MF_SOLID|MF_SPRING, // flags
+		S_HORIZYELLOWTRAMPOLINE2 // raisestate
+	},
+
+	{           // MT_HORIZREDTRAMPOLINE
+		1818,            // doomednum
+		S_HORIZREDTRAMPOLINE, // spawnstate
+		1000,           // spawnhealth
+		S_NULL,         // seestate
+		sfx_None,       // seesound
+		0,              // reactiontime
+		sfx_None,       // attacksound
+		S_NULL,         // painstate
+		0,              // painchance
+		sfx_mariob,     // painsound
+		S_NULL,         // meleestate
+		S_NULL,         // missilestate
+		S_NULL,         // deathstate
+		S_NULL,         // xdeathstate
+		sfx_None,       // deathsound
+		0,              // speed
+		20*FRACUNIT,    // radius
+		16*FRACUNIT,    // height
+		0,              // display offset
+		0,			    // mass
+		72*FRACUNIT,    // damage
+		sfx_None,       // activesound
+		MF_SOLID|MF_SPRING, // flags
+		S_HORIZREDTRAMPOLINE2 // raisestate
+	},
+
+	{           // MT_HORIZBLUETRAMPOLINE
+		1816,            // doomednum
+		S_HORIZBLUETRAMPOLINE, // spawnstate
+		1000,           // spawnhealth
+		S_NULL,         // seestate
+		sfx_None,       // seesound
+		0,              // reactiontime
+		sfx_None,       // attacksound
+		S_NULL,         // painstate
+		0,              // painchance
+		sfx_mariob,     // painsound
+		S_NULL,         // meleestate
+		S_NULL,         // missilestate
+		S_NULL,         // deathstate
+		S_NULL,         // xdeathstate
+		sfx_None,       // deathsound
+		0,              // speed
+		20*FRACUNIT,    // radius
+		16*FRACUNIT,    // height
+		0,              // display offset
+		0,   			// mass
+		18*FRACUNIT,    // damage
+		sfx_None,       // activesound
+		MF_SOLID|MF_SPRING, // flags
+		S_HORIZBLUETRAMPOLINE2 // raisestate
+	},
+
+	{           // MT_DIAGYELLOWTRAMPOLINE
+		2551,           // doomednum
+		S_DIAGYELLOWTRAMPOLINE, // spawnstate
+		1000,           // spawnhealth
+		S_NULL,         // seestate
+		sfx_None,       // seesound
+		0,              // reactiontime
+		sfx_None,       // attacksound
+		S_NULL,         // painstate
+		0,              // painchance
+		sfx_mariob,     // painsound
+		S_NULL,         // meleestate
+		S_NULL,         // missilestate
+		S_NULL,         // deathstate
+		S_NULL,         // xdeathstate
+		sfx_None,       // deathsound
+		0,              // speed
+		20*FRACUNIT,    // radius
+		16*FRACUNIT,    // height
+		0,              // display offset
+		20*FRACUNIT,    // mass
+		20*FRACUNIT,    // damage
+		sfx_None,       // activesound
+		MF_SOLID|MF_SPRING, // flags
+		S_DIAGYELLOWTRAMPOLINE2 // raisestate
+	},
+
+	{           // MT_DIAGREDTRAMPOLINE
+		2552,           // doomednum
+		S_DIAGREDTRAMPOLINE, // spawnstate
+		1000,           // spawnhealth
+		S_NULL,         // seestate
+		sfx_None,       // seesound
+		0,              // reactiontime
+		sfx_None,       // attacksound
+		S_NULL,         // painstate
+		0,              // painchance
+		sfx_mariob,     // painsound
+		S_NULL,         // meleestate
+		S_NULL,         // missilestate
+		S_NULL,         // deathstate
+		S_NULL,         // xdeathstate
+		sfx_None,       // deathsound
+		0,              // speed
+		20*FRACUNIT,    // radius
+		16*FRACUNIT,    // height
+		0,              // display offset
+		32*FRACUNIT,    // mass
+		32*FRACUNIT,    // damage
+		sfx_None,       // activesound
+		MF_SOLID|MF_SPRING, // flags
+		S_DIAGREDTRAMPOLINE2 // raisestate
+	},
+
+	{           // MT_DIAGBLUETRAMPOLINE
+		2550,           // doomednum
+		S_DIAGBLUETRAMPOLINE, // spawnstate
+		1000,           // spawnhealth
+		S_NULL,         // seestate
+		sfx_None,       // seesound
+		0,              // reactiontime
+		sfx_None,       // attacksound
+		S_NULL,         // painstate
+		0,              // painchance
+		sfx_mariob,     // painsound
+		S_NULL,         // meleestate
+		S_NULL,         // missilestate
+		S_NULL,         // deathstate
+		S_NULL,         // xdeathstate
+		sfx_None,       // deathsound
+		0,              // speed
+		20*FRACUNIT,    // radius
+		16*FRACUNIT,    // height
+		0,              // display offset
+		11*FRACUNIT,    // mass
+		11*FRACUNIT,    // damage
+		sfx_None,       // activesound
+		MF_SOLID|MF_SPRING, // flags
+		S_DIAGBLUETRAMPOLINE2 // raisestate
+	},
+
 	{          // MT_BOOSTERSEG
 		-1,             // doomednum
 		S_INVISIBLE,    // spawnstate
diff --git a/src/info.h b/src/info.h
index be75e0024d0f0923bac56b7d2f3bbfe63238baf0..4552fb2eefe0b27637d33b738d43cb3325fbbbd4 100644
--- a/src/info.h
+++ b/src/info.h
@@ -943,6 +943,15 @@ typedef enum sprite
 	SPR_SSWY, // Yellow Side Spring
 	SPR_SSWR, // Red Side Spring
 	SPR_SSWB, // Blue Side Spring
+	SPR_MPRY, // Yellow trampoline
+	SPR_MPRR, // Red trampoline
+	SPR_MPRB, // Blue trampoline
+	SPR_MSWY, // Yellow horizontal trampoline
+	SPR_MSWR, // Red horizontal trampoline
+	SPR_MSWB, // Blue horizontal trampoline
+	SPR_MDIY, // Yellow diagonal trampoline
+	SPR_MDIR, // Red diagonal trampoline
+	SPR_MDIB, // Blue diagonal trampoline
 	SPR_BSTY, // Yellow Booster
 	SPR_BSTR, // Red Booster
 
@@ -3748,6 +3757,69 @@ typedef enum state
 	S_BHORIZ7,
 	S_BHORIZ8,
 
+	// Yellow Trampoline
+	S_YELLOWTRAMPOLINE,
+	S_YELLOWTRAMPOLINE2,
+	S_YELLOWTRAMPOLINE3,
+	S_YELLOWTRAMPOLINE4,
+	S_YELLOWTRAMPOLINE5,
+
+	// Red Trampoline
+	S_REDTRAMPOLINE,
+	S_REDTRAMPOLINE2,
+	S_REDTRAMPOLINE3,
+	S_REDTRAMPOLINE4,
+	S_REDTRAMPOLINE5,
+
+	// Blue Trampoline
+	S_BLUETRAMPOLINE,
+	S_BLUETRAMPOLINE2,
+	S_BLUETRAMPOLINE3,
+	S_BLUETRAMPOLINE4,
+	S_BLUETRAMPOLINE5,
+
+	// Horizontal Yellow Trampoline
+	S_HORIZYELLOWTRAMPOLINE,
+	S_HORIZYELLOWTRAMPOLINE2,
+	S_HORIZYELLOWTRAMPOLINE3,
+	S_HORIZYELLOWTRAMPOLINE4,
+	S_HORIZYELLOWTRAMPOLINE5,
+
+	// Horizontal Red Trampoline
+	S_HORIZREDTRAMPOLINE,
+	S_HORIZREDTRAMPOLINE2,
+	S_HORIZREDTRAMPOLINE3,
+	S_HORIZREDTRAMPOLINE4,
+	S_HORIZREDTRAMPOLINE5,
+
+	// Horizontal Blue Trampoline
+	S_HORIZBLUETRAMPOLINE,
+	S_HORIZBLUETRAMPOLINE2,
+	S_HORIZBLUETRAMPOLINE3,
+	S_HORIZBLUETRAMPOLINE4,
+	S_HORIZBLUETRAMPOLINE5,
+
+	// Diagonal Yellow Trampoline
+	S_DIAGYELLOWTRAMPOLINE,
+	S_DIAGYELLOWTRAMPOLINE2,
+	S_DIAGYELLOWTRAMPOLINE3,
+	S_DIAGYELLOWTRAMPOLINE4,
+	S_DIAGYELLOWTRAMPOLINE5,
+
+	// Diagonal Red Trampoline
+	S_DIAGREDTRAMPOLINE,
+	S_DIAGREDTRAMPOLINE2,
+	S_DIAGREDTRAMPOLINE3,
+	S_DIAGREDTRAMPOLINE4,
+	S_DIAGREDTRAMPOLINE5,
+
+	// Diagonal Blue Trampoline
+	S_DIAGBLUETRAMPOLINE,
+	S_DIAGBLUETRAMPOLINE2,
+	S_DIAGBLUETRAMPOLINE3,
+	S_DIAGBLUETRAMPOLINE4,
+	S_DIAGBLUETRAMPOLINE5,
+
 	// Booster
 	S_BOOSTERSOUND,
 	S_YELLOWBOOSTERROLLER,
@@ -4606,6 +4678,16 @@ typedef enum mobj_type
 	MT_REDHORIZ,
 	MT_BLUEHORIZ,
 
+	MT_YELLOWTRAMPOLINE,
+	MT_REDTRAMPOLINE,
+	MT_BLUETRAMPOLINE,
+	MT_HORIZYELLOWTRAMPOLINE,
+	MT_HORIZREDTRAMPOLINE,
+	MT_HORIZBLUETRAMPOLINE,
+	MT_DIAGYELLOWTRAMPOLINE,
+	MT_DIAGREDTRAMPOLINE,
+	MT_DIAGBLUETRAMPOLINE,
+
 	MT_BOOSTERSEG,
 	MT_BOOSTERROLLER,
 	MT_YELLOWBOOSTER,