HammerAddons icon indicating copy to clipboard operation
HammerAddons copied to clipboard

[TF2] Numerous FGD Tweaks

Open Kestrelguy opened this issue 3 years ago • 4 comments

Had to recreate my custom FGD after a recent TF2 update, which meant going through Hammer Addons's FGD. here's a buncha minor things I spotted (and stuff that got changed after recent updates):

  • [ ] tf_logic_cp_timer has a teamnum keyvalue now so it "works for team RED"

  • [x] func_nobuild now has a keyvalue to allow it to destroy buildings when it turns on

  • [ ] tf_generic_bomb has a PassActivator KV now

  • [ ] tf_zombie now has an OnDeath output

  • [x] all entities with models now have SetModel, SetPlaybackRate, and SetCycle inputs

  • [ ] point_hurt now has a KV allowing it to bypass übercharge

  • [ ] func_dustcloud can cause crashes in multiplayer and probably shouldn't be here

  • [ ] no point in having item_sodacan

  • [ ] why is ai_goal_injured_follow here? it isn't even functional in EP1.

  • [ ] since TF2 uses NextBots, there's no point in the NPCHintGroup or NPCSquadName KVs on npc_maker

  • [ ] no point in any of the ai_ entities since TF2 doesn't use NPCs

  • [ ] is there any point to globals in TF2?

  • [ ] env_blood, env_screeneffect, env_zoom, point_message, and color_correction_volume don't work in TF2

  • [x] env_soundscape is erroneously listed as having a "Disabled" input, but even "Disable" is unnecessary because it inherits EnableDisable

  • [ ] func_nav_avoidance_obstacle and point_viewcontrol_multiplayer are L4D entities

  • [ ] info_overlay can save itself some KVs by inheriting FadeDistance

  • [ ] info_powerup_spawn and item_powerup_crit/uber/rune define fademin/maxdistance helpers despite not having such KVs

  • [x] shouldn't hightower_teleport_vortex's SetModelScale input be a float? and shouldn't its SetAdvantageTeam input be an integer?

  • [ ] point_push, base_boss, and point_velocitysensor can save themselves some inputs & a KV by inheriting EnableDisable

  • [ ] _Breakable, func_physbox: no apparent point in the physcannon flags/outputs

  • [ ] func_ladder, info_ladder_dismount, and func_usableladder don't work in TF2; presumably not func_ladderendpoint either

  • [x] does hammer_notes get removed by the postcompiler?

  • [ ] BaseNPCMaker defines a "startdisabled" keyvalue and Enable/Disable inputs despite already including EnableDisable; it could also include Toggle to ignore the Toggle input

  • [ ] does func_tankmortar even work in TF2? if not, there's no point in having it or BaseTank.

  • [ ] SystemLevelChoice only affects post-L4D stuff

  • [ ] Breakable can inherit DamageFilter and have the Enable/DisableDamageForces inputs, so BreakableBrush and BreakableProp don't need to

  • [ ] BreakableProp doesn't need OnTakeDamage because Breakable already has it

  • [ ] MasterEnt probably isn't necessary, being a legacy thing

  • [ ] health KV and first spawnflag of doors are apparently deprecated

  • [ ] Locked/Unlocked Sentence KVs of doors are for HL:S only

  • [ ] Button might as well include BaseEntityVisBrush so its children don't have to

  • [ ] does func_combine_ball_spawner even work in TF2? if not, there's no point in having it or CombineBallSpawners.

  • [ ] TF2 uses nextbots; no point in the Node entities or info_radial_link_controller

  • [ ] NavCost can just inherit EnableDisable and Toggle

  • [ ] the renderfx KV of RenderEffects lists both 22 and 24 as "Spotlight FX;" the latter is actually "Fade Wider Pulse"

  • [ ] renderfx 23 is listed twice, once as "Cull by distance" and once as the ragdoll hack

  • [ ] EnableDraw and DisableDraw were added in Portal 2

  • [ ] SetSkin is only used by SetModel and cycler, which also uses SetModel

  • [ ] TriggerOnce can use EnableDisable and Toggle to save itself a KV and some inputs

  • [ ] I cannot find anything on boss_alpha ~~or spark_shower~~. are you sure they exist? edit: spark_shower does appear to exist

  • [ ] TF2 doesn't use scenes, so comp_choreo_sceneset, logic_choreographed_scene, and logic_scene_list_manager are unnecessary

  • [ ] comp_prop_cable can use FadeDistance to save itself some KVs

  • [ ] comp_precache_model can use SetModel to not need any KVs of its own

  • [ ] comp_vactube_spline is unnecessary in TF2 (and the whole vactube system, really)

  • [ ] env_beverage is unnecessary, being a legacy entity to begin with

  • [ ] BaseLight, env_bubbles, env_smokestack, env_speaker, func_occluder, light_dynamic, light_environment, logic_branch, logic_relay, point_anglesensor, point_hurt, point_proximity_sensor can use Toggle to save an input

  • [ ] BaseEntityPoint can inherit Angles to save it a KV

  • [ ] env_dustpuff, spark_shower, and light_environment don't need Angles because they inherit BaseEntityPoint

  • [ ] Ember type KV on env_embers does nothing in code

  • [ ] env_explosion doesn't need the whole list of ignorable classes since only players exist in TF2

  • [ ] env_fire doesn't work in TF2, and by extension env_firesource and env_firesensor are unnecessary

  • [ ] env_microphone presets 51–54 are identical to 50 and serve no purpose

  • [ ] the firesprite and smokesprite KVs of env_smoketrail are unused in code

  • [ ] env_wind has helpers defined for "windradius" and "windradiusinner" KVs, but the KVs themselves aren't given

  • [ ] is the portalversion KV of func_areaportal even necessary?

  • [x] func_clip_vphysics doesn't need the empty spawnflags KV

  • [ ] func_dustcloud, func_precipitation can cause crashes and other problems in multiplayer games like TF2

  • [ ] func_nav_blocker lacks the teamToBlock KV, and it doesn't look like starting disabled does anything (still blocks nav)

  • [ ] func_proprespawnzone is disabled in code

  • [ ] vehicles don't work in TF2, so func_vehicleclip is unnecessary (along with all vehicle entities)

  • [ ] game_intro_viewpoint apparently doesn't work properly

  • [ ] game_round_win can use TeamNum to save itself some KVs

  • [ ] wiki says game_weapon_manager has a SetMaxPieces input

  • [ ] is there anything that can generate rotor wash in TF2? I think env_rotorshooter is pointless.

  • [ ] gibshooter is obsoleted by env_shooter; combined with the above, this means env_shooter is the only use for gibshooterbase, so it can subsume those properties

  • [ ] should halloween_fortune_teller's red_teleport and blue_teleport KVs be target_destinations instead of strings?

  • [ ] halloween_zapper can inherit EnableDisable

  • [x] point_camera doesn't function in TF2, rendering it, info_camera_link, and func_monitor useless

  • [ ] I'm fairly sure info_intermission is unnecessary when info_observer_point exists

  • [ ] I don't think level-change entities like info_landmark, trigger_transition, or trigger_changelevel are useful in TF2

  • [x] info_lighting_relative is obsolete with the introduction of LightingOrigin

  • [ ] no reason to have info_teleport_destination when info_target exists

  • [x] keyframe_track and move_track don't work (replaced with path_track)

  • [ ] BaseLight can inherit BaseEntityPoint so its children don't have to

  • [ ] autosaving isn't a thing in TF2, so logic_active_autosave, logic_autosave, trigger_autosave, trigger_togglesave, and player_loadsaved have no point (also the former's Disable input says it enables the entity)

  • [ ] logic_auto reads globals that do nothing in TF2; also doesn't need OnLoadGame 'cuz TF2 doesn't save games

  • [ ] logic_timer defines Enable and Disable inputs despite already including EnableDisable; can also inherit Toggle to save an input

  • [x] multisource is superseded by the entirety of the I/O system

  • [ ] bonus maps aren't a thing in TF2, and I don't think point_bonusmaps_accessor is, either

  • [ ] test_traceline explicitly has no reason to exist

  • [ ] tf_logic_boss_battle and tf_logic_raid are for a nonexistent gamemode

  • [ ] tf_logic_robot_destruction's max_robots KV should be an integer

  • [ ] newunit KV of worldspawn is useless because there's no such thing as saving a game in TF2

  • [x] env_shooter's massoverride KV is explicitly stated to be episodic only; no point in having it here

  • [ ] keyframe_rope can nom RopeKeyFrame, and then move_rope can inherit from it

  • [x] comp_prop_rope can inherit all its KVs from comp_prop_cable; same for their _dynamic variants

  • [x] entity_sign typos "Invasion" as "Invaison"

  • [x] the description of info_target should use "e.g.," not "i.e."

  • [ ] func_achievement is hardcoded and useless to mappers

  • [ ] func_brush defines a Toggle input despite already including Toggle. its excludednpc KV also says you can specify single entities in Episodic, but this isn't an Episodic game.

  • [ ] trigger_ignite_arrows and trigger_impact already inherit origin KVs from BaseEntityBrush, thus not needing to inherit directly from the Origin class

  • [ ] trigger_push only has SetPushSpeed in L4D2; also, its "Affects Ladders" spawnflag is supposedly HL2-only (and ladders don't work in TF2 anyway)

  • [ ] trigger_serverragdoll is Episodic according to the wiki

  • [ ] trigger_teleport defines spawnflags already defined by TriggerOnce

  • [ ] func_trackchange doesn't have a Trigger input, only func_trackautochange does

  • [x] phys_magnet's "Coast jeep pickup hack" flag only works on prop_vehicle_jeep, which is only in Half-Life games

  • [ ] TF2 doesn't use NPCs with squads, so npc_enemyfinder is useless

  • [ ] prop_physics doesn't need any of the ignition inputs, as BasePropPhysics already has those

  • [ ] func_pushable already inherits from func_breakable, so the only spawnflag it needs to define is 128 "Breakable"

  • [ ] func_water doesn't even work in Source

  • [ ] BaseTank doesn't need the FindNPC inputs or OnXController outputs I recognize this is a lot. there are probably reasons for some of these, but just in case, I'm listing all the things that stick out to me.

Kestrelguy avatar Oct 13 '22 01:10 Kestrelguy

This is a nice list of specific things to tweak, thanks! In regards to the many obsolete/not very useful entities, I've been aiming to accurately define what actually exists in all games, not just what is particularly useful. I'd then add tags to exclude those things afterwards for most people.

TeamSpen210 avatar Oct 13 '22 02:10 TeamSpen210

spark_shower definitely exists; haven't checked boss_alpha in tf2 yet though

Adrthegamedev avatar Oct 23 '22 15:10 Adrthegamedev

https://www.teamfortress.com/post.php?id=166703

  • haha I lied func_monitor works now
  • [ ] VScript implemented
  • [ ] point_worldtext, logic_eventlistener, and skybox_swapper added
  • so yeah they kinda just dropped the biggest update in TF2 mapping history since they released TF2 Hammer

Kestrelguy avatar Dec 02 '22 00:12 Kestrelguy

  • Things are right now present if they do exist in the game, even if they're legacy or otherwise not too useful. At some point I need to add a toggle to strip things that are indeed useless or legacy, if you're OK with them showing up as unknown.
  • hammer_notes does get auto-deleted.
  • func_nav_avoidance_obstacle does appear to exist in earlier games than L4D.

TeamSpen210 avatar Jan 08 '23 05:01 TeamSpen210