Skip to main content

Bounce Pads

Dynamic Entity (Backer)

entity {
	entityDef invasion_bouncepad_back_1 {
	inherit = "func/dynamic";
	class = "idDynamicEntity";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	networkReplicated = false;
	disableAIPooling = false;
	edit = {
		spawnPosition = { // Set the position roughly -0.2 (on the z axis) behind the emitter FX
			x = -11.11;
			y = -11.11;
			z = -11.11;
		}
		spawnOrientation = { // Backer should be laying on the ground
			mat = {
				mat[0] = {
					x = 0.707107;
					y = -0.707107;
					z = 0;
				}
				mat[1] = {
					x = 0.707107;
					y = 0.707107;
					z = 0;
				}
				mat[2] = {
					x = 0;
					y = 0;
					z = 1;
				}
			}
		}
		renderModelInfo = {
			model = "art/kit/hell/bridge/bridge_archPillar_a_divider.lwo";
			scale = { // Do not change the scale, it will break collision
				x = 0.66;
				y = 0.66;
				z = 0.5;
			}
		}
		clipModelInfo = {
			clipModelName = "art/kit/hell/bridge/bridge_archPillar_a_divider.lwo"; // Adds collision
		}
	}
}
}

Emitter FX (Slayer Team)

entity {
	layers {
		"game/pvp/slayer_team" // Only the Slayer can see this FX
	}
	entityDef invasion_bouncepad_fx_slayer_1 {
	inherit = "func/fx";
	class = "idEntityFx";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	networkReplicated = false;
	disableAIPooling = false;
	edit = {
		flags = {
			canBecomeDormant = true;
		}
		dormancy = {
			delay = 5;
			distance = 78.029007;
		}
		spawnPosition = { // Position should be identical to the FX on the demon team
			x = -11.11;
			y = -11.11;
			z = -11.11;
		}
		fxEffect = "gameplay/invasion/bounce_pad_slayer"; // Emitter is red
		spawnOrientation = { // Orientation should not be changed
			mat = {
				mat[0] = {
					x = 1;
					y = 0;
					z = 0;
				}
				mat[1] = {
					x = 0;
					y = 1;
					z = 0;
				}
				mat[2] = {
					x = 0;
					y = 0;
					z = 1;
				}
			}
		}
		renderModelInfo = {
			scale = {
				x = 1;
				y = 1;
				z = 1;
			}
		}
	}
}
}

Emitter FX (Demon Team)

entity {
	layers {
		"game/pvp/demon_team" // Only Demon Players can see this FX
	}
	entityDef invasion_bouncepad_fx_slayer_1 {
	inherit = "func/fx";
	class = "idEntityFx";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	networkReplicated = false;
	disableAIPooling = false;
	edit = {
		flags = {
			canBecomeDormant = true;
		}
		dormancy = {
			delay = 5;
			distance = 78.029007;
		}
		spawnPosition = { // Position should be identical to the FX on the slayer team
			x = -11.11;
			y = -11.11;
			z = -11.11;
		}
        automapPropertiesDecl = "invasion_bounce_demon";
		fxEffect = "gameplay/invasion/bounce_pad_demon"; // Emitter is purple
		spawnOrientation = { // Orientation should not be changed
			mat = {
				mat[0] = {
					x = 1;
					y = 0;
					z = 0;
				}
				mat[1] = {
					x = 0;
					y = 1;
					z = 0;
				}
				mat[2] = {
					x = 0;
					y = 0;
					z = 1;
				}
			}
		}
		renderModelInfo = {
			scale = {
				x = 1;
				y = 1;
				z = 1;
			}
		}
	}
}
}

Bouncepad

entity {
	entityDef invasion_bouncepad_from_1 {
	inherit = "trigger/bounce_pad";
	class = "idTrigger_BouncePad";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	networkReplicated = false;
	disableAIPooling = false;
	edit = {
		flags = {
			canBecomeDormant = true;
		}
		launchFX = "fx/bounce_pad/basic";
		spawnPosition = { // Position should be roughtly +1 (z axis) above the FX
			x = -11.11;
			y = -11.11;
			z = -11.11;
		}
		renderModelInfo = {
			model = NULL;
			scale = {
				x = 1;
				y = 1;
				z = 1;
			}
		}
		clipModelInfo = {
			clipModelName = "maps/game/sp/e1m3_cult/e1m3_cult/invasion_x_bouncepad_from_1";
			size = {
				x = 1.5;
				y = 1.5;
				z = 1;
			}
		}
		playerCanActivate = false; // Slayer cannot activate
		demonPlayerCanActivate = true; // Demon players can activate
		destination = "invasion_bouncepad_dest_1"; // Fly to this destination when activated
		launchSpeed = 32; // Speed demons will fly upwards
	}
}
}

Destination

entity {
	layers {
		"game/pvp/demon_team" // Only demon players can be launched
	}
	entityDef invasion_bouncepad_dest_1 {
	inherit = "info/bounce_destination";
	class = "idInfo_BounceDestination";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	networkReplicated = false;
	disableAIPooling = false;
	edit = {
		spawnPosition = { // Increase z axis position close to the destination
			x = -11.11;
			y = -11.11;
			z = -11.11;
		}
		spawnOrientation = { // Orientation does not matter
			mat = {
				mat[0] = {
					x = 1;
					y = 0;
					z = 0;
				}
				mat[1] = {
					x = 0;
					y = 1;
					z = 0;
				}
				mat[2] = {
					x = 0;
					y = 0;
					z = 1;
				}
			}
		}
		renderModelInfo = {
			scale = {
				x = 1;
				y = 1;
				z = 1;
			}
		}
	}
}
}