diff --git a/fgd/point/hot/hot_potato.fgd b/fgd/point/hot/hot_potato.fgd index fd26a026b..988287906 100644 --- a/fgd/point/hot/hot_potato.fgd +++ b/fgd/point/hot/hot_potato.fgd @@ -1,7 +1,18 @@ +@PointClass base(BasePropPhysics, SRCModel) + appliesto(P2) + studioprop() + line(255 255 0, targetname, spawnername) += hot_potato: "A glass futbol variant which explodes and can't be thrown. Spawning this from a hot_potato_spawner allows it to have a timer set." +[ + model[-srctools](studio) : "[H] Model" : "models/props/futbol.mdl" : "The model to display in Hammer. VScript must be used to set the in-game model." + model[+srctools](studio) : "[HA] Custom Model" : "models/props/futbol.mdl" : "The model to display in Hammer, and the custom model to use if Override Model is enabled." + skin(integer) : "Skin" : 0 : "Skin on the model to use." -@PointClass base(prop_glass_futbol, prop_exploding_futbol) - appliesto(P2) - studioprop("models/props/futbol.mdl") - line(255 255 0, targetname, spawnername) = hot_potato: "This uses the futbol model. It can be carried around, but on impact it explodes, similar to prop_exploding_futbols." - [ - ] + explodeontouch(boolean) : "Explode on touch" : 1 : "If the hot potato should explode when it touches something." + ShouldRespawn(boolean) : "Should respawn" : 1 : "If the hot potato should respawn at the specified spawner when destroyed. Not specifying a spawner is functionally identical to turning this off, but causes extra console spam." + spawnername(target_destination) : "Spawner Name" : : "Name of a hot_potato_spawner for this hot potato to respawn in once broken." + + // Inputs + input Explode(void) : "Explodes the hot potato." + input Dissolve(void) : "Fizzles the hot potato. Doesn't fire the OnFizzled output." +] diff --git a/fgd/point/hot/hot_potato_catcher.fgd b/fgd/point/hot/hot_potato_catcher.fgd index 439661cc4..85dcb2d5e 100644 --- a/fgd/point/hot/hot_potato_catcher.fgd +++ b/fgd/point/hot/hot_potato_catcher.fgd @@ -1,6 +1,6 @@ -@PointClass base(prop_glass_futbol_socket) +@PointClass base(hot_potato_socket) appliesto(P2) - studio("models/editor/axis_helper.mdl") = hot_potato_catcher: "Catches 'hot potatos' and fires an output." += hot_potato_catcher: "Invisible entity that holds 'hot potatos' and fires an output. Identical to hot_potato_socket, except it doesn't play any sounds when a hot potato is inserted." [ ] diff --git a/fgd/point/hot/hot_potato_socket.fgd b/fgd/point/hot/hot_potato_socket.fgd index d9f8443e4..de6a2d51f 100644 --- a/fgd/point/hot/hot_potato_socket.fgd +++ b/fgd/point/hot/hot_potato_socket.fgd @@ -1,6 +1,10 @@ - -@PointClass base(prop_glass_futbol_socket) +@PointClass base(BaseEntityPoint) appliesto(P2) - studio("models/editor/axis_helper.mdl") = hot_potato_socket: "Catches (bombs?) and fires an output." + studio("models/editor/angle_helper.mdl") += hot_potato_socket: "Invisible entity that holds 'hot potatos' and fires an output. When a hot potato comes close it will snap into place." [ + + // Outputs + output OnHotPotatoReleased(void) : "Player has taken the hot potato out of this socket." + output OnHotPotatoCaught(void) : "This socket has captured a hot potato." ] diff --git a/fgd/point/hot/hot_potato_spawner.fgd b/fgd/point/hot/hot_potato_spawner.fgd index 50c399ba5..c4653952b 100644 --- a/fgd/point/hot/hot_potato_spawner.fgd +++ b/fgd/point/hot/hot_potato_spawner.fgd @@ -1,6 +1,20 @@ - -@PointClass base(prop_glass_futbol_spawner) +@PointClass base(BaseEntityAnimating) appliesto(P2) - studioprop("models/props/futbol_dispenser.mdl") = hot_potato_spawner: "Catches 'hot potatos' and fires an output." + studioprop("models/props/futbol_dispenser.mdl") += hot_potato_spawner: "Spawns 'hot potatos'. Will re-create a hot potato when its created hot potato breaks." [ + startwithhotpotato(boolean) : "Start with Hot Potato" : 1 : "Set true if this spawner starts with a hot potato in it. " + + "Set to false if this spawner's hot potato will be manually placed in the map." + IsTimed(boolean) : "Is Timed" : 0 : "If enabled, the hot potatos created from this spawner will automatically explode after a set amount of time." + Timer(float) : "Timer" : "10" : "Length of the timer, in seconds." + TimerIndicatorName(target_destination) : "Timer Indicator Name" : : "Name of a prop_indicator_panel that should show the time remaining." + + // Inputs + input ForceSpawn(void) : "Spawns a new hot potato. Usually isn't necessary, because hot potatos respawn automatically if broken." + + // Outputs + output OnHotPotatoSpawned(void) : "Created a new hot potato." + output OnHotPotatoGrabbed(void) : "Player has taken the hot potato out of this spawner." + output OnHotPotatoCaught(void) : "Player has put the hot potato back into this spawner." + output OnHotPotatoReleased(void) : "Player has grabbed a hot potato from or put a hot potato back into this spawner." ] diff --git a/fgd/point/prop/prop_exploding_futbol.fgd b/fgd/point/prop/prop_exploding_futbol.fgd index dff36208e..af0bf44f4 100644 --- a/fgd/point/prop/prop_exploding_futbol.fgd +++ b/fgd/point/prop/prop_exploding_futbol.fgd @@ -1,4 +1,4 @@ -@PointClass base(BaseEntityPhysics, SRCModel) +@PointClass base(BasePropPhysics, SRCModel) appliesto(P2) studioprop() = prop_exploding_futbol: "The bombs used by Wheatley." @@ -8,9 +8,11 @@ skin(integer) : "Skin" : 0 : "Skin on the model to use." explodeontouch(boolean) : "Explode on touch" : 1 : "If the bomb should explode when it touches something." + // Keyvalues dump includes ShouldRespawn and SpawnerName keyvalues but they don't seem to work // Inputs input Explode(void) : "Explodes the bomb." + input Dissolve(void) : "Fizzles the bomb. Doesn't fire the OnFizzled output." @resources // Assumed [ diff --git a/fgd/point/prop/prop_glass_futbol.fgd b/fgd/point/prop/prop_glass_futbol.fgd index fca7fb374..1a249c8b1 100644 --- a/fgd/point/prop/prop_glass_futbol.fgd +++ b/fgd/point/prop/prop_glass_futbol.fgd @@ -1,13 +1,14 @@ @PointClass base(BasePropPhysics, SRCModel) appliesto(P2) studioprop() - line(255 255 0, targetname, spawnername) = prop_glass_futbol: "A fragile glass ball that the player can pick up and toss. On contact with surfaces it will shatter, and it can be put into holders to power them. It is affected by gel, but the shattering means this has little effect." + line(255 255 0, targetname, spawnername) += prop_glass_futbol: "A fragile glass ball that the player can pick up and toss. On contact with surfaces it will shatter, and it can be put into holders to power them. It is affected by gel, but the shattering means this has little effect." [ model[-srctools](studio) : "[H] Model" : "models/props/futbol.mdl" : "The model to display in Hammer. VScript must be used to set the in-game model." model[+srctools](studio) : "[HA] Custom Model" : "models/props/futbol.mdl" : "The model to display in Hammer, and the custom model to use if Override Model is enabled." skin(integer) : "Skin" : 0 : "Skin on the model to use." - spawnername(target_destination) : "Spawner Name" : : "Name of prop_glass_futbol_spawner for this futbol to respawn in once broken." + spawnername(target_destination) : "Spawner Name" : : "Name of a prop_glass_futbol_spawner for this futbol to respawn in once broken." diff --git a/fgd/point/prop/prop_glass_futbol_spawner.fgd b/fgd/point/prop/prop_glass_futbol_spawner.fgd index 0a0e29327..22e2932be 100644 --- a/fgd/point/prop/prop_glass_futbol_spawner.fgd +++ b/fgd/point/prop/prop_glass_futbol_spawner.fgd @@ -1,4 +1,4 @@ -@PointClass base(BaseEntityPoint) +@PointClass base(BaseEntityAnimating) appliesto(P2) studioprop("models/props/futbol_dispenser.mdl") = prop_glass_futbol_spawner: "Spawns futbols. Will re-create a futbol when its created futbol breaks." [ diff --git a/transforms/p2_custom_models.py b/transforms/p2_custom_models.py index 1d88e803f..6dec99178 100644 --- a/transforms/p2_custom_models.py +++ b/transforms/p2_custom_models.py @@ -19,12 +19,23 @@ "npc_personality_core", "prop_exploding_futbol", "prop_glass_futbol", + "hot_potato", # Not supported: # prop_testchamber_door - reverses animations # prop_tractor_beam - breaks animations # prop_linked_portal_door - breaks animations # prop_monster_box - swaps models dynamically + + # Not tested: + # prop_glass_futbol_spawner + # hot_potato_spawner + # prop_portal_stats_display + # prop_rocket_tripwire + # prop_telescopic_arm + # prop_scaled_cube (Sixense) + # prop_contraption_cube (Edu) + # prop_contraption_cube_button (Edu) ] @trans('Portal 2 Custom Models')