Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
117 commits
Select commit Hold shift + click to select a range
a447786
Copied taskmaster progress to current dev branch
NoxxFlame Aug 12, 2025
c3183fe
Added the ability for tasks that require specific features to block o…
NoxxFlame Aug 12, 2025
b84a3a3
Added 'Kill Nearby Player' and 'Kill Faraway Player' tasks
NoxxFlame Aug 13, 2025
d4a31d7
Added new conversion constant
Malivil Aug 13, 2025
5efb1d2
Cleanup
Malivil Aug 13, 2025
2107739
Luacheck fixes
Malivil Aug 13, 2025
b1fc57c
Added Stay Near Target task (without progress bar)
Malivil Aug 13, 2025
76fa64a
Added progress bar to Stay Near Target task
Malivil Aug 14, 2025
21b242c
Changed progress bar to fill rather than drain
Malivil Aug 14, 2025
4fcdedb
Cleanup
Malivil Aug 14, 2025
6ca9794
Changed task features to use constants
Malivil Aug 14, 2025
50d96ad
Disallow 0 for Stay Near Target convars
Malivil Aug 14, 2025
d698f31
Added 'Kill a Player From Behind' task
NoxxFlame Aug 14, 2025
a66db08
Added Crouch Near Body task
Malivil Aug 14, 2025
a8295a8
Merge remote-tracking branch 'origin/taskmaster' into taskmaster
NoxxFlame Aug 14, 2025
f1942b4
Added 'Kill an Airbourne Player' and 'Kill a Player While Midair' task
NoxxFlame Aug 14, 2025
c35dc60
Added `TTTDetectiveCalledToBody` hook which is called when a player c…
Malivil Aug 14, 2025
7e16191
Added Call Detective to Body task
Malivil Aug 14, 2025
504ef06
Added Pick Up Shop Item task
Malivil Aug 14, 2025
acf1447
Added Jump task
Malivil Aug 14, 2025
6c61a8f
Added Jump times convar to ULX
Malivil Aug 14, 2025
60b3d5f
Added Crouch task
Malivil Aug 14, 2025
600c488
Prefix task property names to ensure uniqueness
Malivil Aug 14, 2025
7a530a2
Added Fire Bullets task
Malivil Aug 14, 2025
81a0b48
Added Do Damage task
Malivil Aug 14, 2025
736481c
Removed test tasks
Malivil Aug 14, 2025
0d38608
Fixed Stay Near Target not handling the case where the target died
Malivil Aug 14, 2025
eb13a33
Fixed Stay Near Target task not handling target player disconnect
Malivil Aug 14, 2025
be296f8
Added Chat task
Malivil Aug 14, 2025
043bbcb
Added Health Under task
Malivil Aug 14, 2025
4bde7ad
Cleanup
Malivil Aug 14, 2025
5ab34b2
Added Holstered task
Malivil Aug 14, 2025
0b55bad
Fixed Holstered convar description
Malivil Aug 14, 2025
4add9c4
Added Crowbar task
Malivil Aug 14, 2025
dc628b5
Added Pick Up Weapons task
Malivil Aug 14, 2025
49dc4c3
Added Stand on Player task
Malivil Aug 14, 2025
a0b9803
Added Carry Corpse task
Malivil Aug 14, 2025
9a3b217
Changed `SYNC` methods to not clear values that are already `nil`
Malivil Aug 15, 2025
56eb3e8
Fixed some Taskmaster tasks being doable while dead
Malivil Aug 15, 2025
55ef53b
Added Stay Higher and Stay Lower tasks
Malivil Aug 15, 2025
c07323b
Added Damage Everyone task
Malivil Aug 15, 2025
420e615
Update names for consistency
Malivil Aug 15, 2025
c52e97c
More consistency
Malivil Aug 15, 2025
de8a77e
Cleanup
Malivil Aug 15, 2025
f4c7f46
Added "Stay in Area" task
Malivil Aug 15, 2025
568c136
Added Stay Away task
Malivil Aug 15, 2025
25eb6e7
Fixed Stay Near Target not cleaning up enough
Malivil Aug 15, 2025
299401c
Minor cleanup
Malivil Aug 15, 2025
b36ffad
Added Get Player Killed task
Malivil Aug 15, 2025
39a4427
Cleanup
Malivil Aug 15, 2025
a10cbaf
Added Get Player to Kill task
Malivil Aug 15, 2025
dcc5c15
Standardize
Malivil Aug 15, 2025
e833bff
Standardize more
Malivil Aug 15, 2025
7d7eb9e
Added Look at Player task
Malivil Aug 15, 2025
387cfdd
Changed Look at Player to work more like the Informant scan
Malivil Aug 15, 2025
5d76a23
Cleanup
Malivil Aug 15, 2025
db44664
Fixed comment
Malivil Aug 15, 2025
e95f5a1
Added Stay Hidden task
Malivil Aug 15, 2025
78b51ea
Added Take Damage task
Malivil Aug 15, 2025
cd1ffce
Added ability for tasks to be marked as not blocking the round from e…
Malivil Aug 15, 2025
bedc045
Added 'Kill Target' task
NoxxFlame Aug 17, 2025
39c7e9a
Added 'Kill Kill a Player With a Pistol' task
NoxxFlame Aug 17, 2025
1e0449c
Added 'Kill a Player While Aiming' task
NoxxFlame Aug 17, 2025
984f08f
Added 'Kill a Player With Your Last Bullet' task
NoxxFlame Aug 17, 2025
360e391
Added 'Kill a Player With a Crowbar' task
NoxxFlame Aug 17, 2025
2fe2830
Added 'Kill a Player With a Headshot' task
NoxxFlame Aug 17, 2025
4168b20
Added 'Kill a Player Who Attacked First' task
NoxxFlame Aug 17, 2025
04e0130
Added 'Kill a Player in One Hit' task
NoxxFlame Aug 17, 2025
5b22865
Added 'Get a Double Kill' task
NoxxFlame Aug 17, 2025
8b980be
Added 'Kill a Player After a 360' task and fixed progress bar colour …
NoxxFlame Aug 17, 2025
4a3a749
Added 'Kill a Player With a Specific Weapon' task (almost)
NoxxFlame Aug 17, 2025
40c5b16
Misc changes
NoxxFlame Aug 17, 2025
6f7be99
Cleanup
Malivil Aug 17, 2025
0d2ecc0
Luacheck fixes
Malivil Aug 17, 2025
128d863
Revert wrong luacheck fix
Malivil Aug 17, 2025
89052ec
Try a different fork of gluacheck
Malivil Aug 17, 2025
ae6aa98
Try the right rockspec
Malivil Aug 17, 2025
4a69303
Change to the actual right rockspec
Malivil Aug 17, 2025
bbebdca
I'll get this right eventually
Malivil Aug 17, 2025
6b78427
Fixed paths
Malivil Aug 17, 2025
2539bf9
Fixed another path
Malivil Aug 17, 2025
c25e078
Fixed load error
Malivil Aug 17, 2025
3f42e69
Change to my updated luacheck fork for better continue support
Malivil Aug 17, 2025
d57b23f
Revert overzealous luacheck changes
Malivil Aug 17, 2025
4773037
Fixed wrong variable usage
Malivil Aug 17, 2025
3b55777
Fixed error
Malivil Aug 17, 2025
042a94e
Added line pointing to the area in the Stay in Area task
Malivil Aug 17, 2025
51fee1f
Fixed descriptions being cut off in the reroll list if they were too …
Malivil Aug 17, 2025
77a33d1
Cleanup
Malivil Aug 18, 2025
e77d4ab
Fixed error rerolling when there are no available tasks remaining
Malivil Aug 18, 2025
d1c86e9
Added Task.Initialize optional method
Malivil Aug 18, 2025
c519767
Cleanup
Malivil Aug 18, 2025
62fa5db
Added tutorial, popup, and cheatsheet text
Malivil Aug 18, 2025
ce2320f
Changed Taskmaster to see jesters and MIA in case they need to kill e…
Malivil Aug 18, 2025
b6860f7
Expanded Taskmaster tutorial
Malivil Aug 18, 2025
ef75c38
Standardize naming on PascalCase
Malivil Aug 18, 2025
3c3876f
Fixed missing changes
Malivil Aug 18, 2025
b932682
Rework logic for events that complete on round end to fix winning if …
Malivil Aug 18, 2025
8647eb5
Changed taskmaster to allow rerolled tasks to show back up in future …
Malivil Aug 18, 2025
71699f0
Fixed error in Damage Everyone task when a non-player is shot
Malivil Aug 18, 2025
cc417f0
Implemented IsRoleAbilityDisabled logic
Malivil Aug 18, 2025
f547125
Added missing convars to ULX
Malivil Aug 20, 2025
307ae78
Added description and ranges to some auto-generated convars
Malivil Aug 20, 2025
ab362a0
Added markdown docs
Malivil Aug 20, 2025
84a4597
Added cr4ttt_role_cvars script
Malivil Aug 20, 2025
37bedfd
Fixed global bleed
Malivil Aug 20, 2025
d103ec7
Added support for non-numeric dropdowns to HTML docs generator
Malivil Aug 20, 2025
1d7000e
Added taskmaster HTML docs
Malivil Aug 20, 2025
2cc6e14
Error prevention and cleanup
Malivil Aug 20, 2025
c4848e5
Change create HTML tutorial to link to HTML convars page
Malivil Aug 24, 2025
2c0d786
Added task complete messages
Malivil Aug 24, 2025
44bf3b6
Mixed duplicate hook name
NoxxFlame Aug 25, 2025
685b186
Added task complete sounds and reworked reroll logic to account for e…
NoxxFlame Aug 25, 2025
9558803
Small fix
NoxxFlame Aug 25, 2025
fb35f6e
Fixed broken doc header
Malivil Aug 25, 2025
09a281b
Added Taskmaster to release notes
Malivil Aug 25, 2025
0da2100
Merge branch 'dev' into taskmaster
Malivil Aug 28, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .luacheckrc
Original file line number Diff line number Diff line change
Expand Up @@ -897,6 +897,7 @@ globals = {
"EVENT_VINDICATORFAIL",
"EVENT_VINDICATORSUCCESS",
"EVENT_ZOMBIFIED",
"FEET_PER_METER",
"GLITCH_CHAT_NONE",
"GLITCH_CHAT_BLOCK_ALWAYS",
"GLITCH_CHAT_BLOCK_WHILE_ALIVE",
Expand Down Expand Up @@ -1052,6 +1053,10 @@ globals = {
"SPECIAL_DETECTIVE_HIDE_NONE",
"SPONGE_ALL_PLAYERS",
"SPONGE_ATTACKER_AND_VICTIM",
"TASKMASTER_TF_TARGETID_PLAYERICON",
"TASKMASTER_TF_TARGETID_PLAYERTEXT",
"TASKMASTER_TF_PROGRESSBAR",
"TASKMASTER_TF_PARTICLERADIUS",
"TRACKRADAR",
"TRAITOR_BUTTON_ROLES",
"TRAITOR_ROLES",
Expand All @@ -1078,6 +1083,7 @@ globals = {
"WIN_PLAGUEMASTER",
"WIN_SHADOW",
"WIN_SPONGE",
"WIN_TASKMASTER",
"WIN_TIMELIMIT",
"WIN_TRAITOR",
"WIN_VAMPIRE",
Expand Down Expand Up @@ -1145,6 +1151,7 @@ globals = {
"ROLE_SPONGE",
"ROLE_SPY",
"ROLE_SWAPPER",
"ROLE_TASKMASTER",
"ROLE_TRACKER",
"ROLE_TRICKSTER",
"ROLE_TURNCOAT",
Expand Down Expand Up @@ -1213,6 +1220,7 @@ globals = {
"CRHUD",
"DEATHRADAR",
"SYNC",
"TASKMASTER",

-- TTTPAP Namespaces
"TTTPAP",
Expand Down
9 changes: 9 additions & 0 deletions API/HOOKS.md
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,15 @@ Called before the name and role of a player's killer is shown to the victim. Use
- *killerName* - The new killerName value to use or the original passed into the hook
- *role* - The new role value to use or the original passed into the hook. Use `ROLE_NONE` to hide the attacker's role from the victim

### TTTDetectiveCalledToBody(ply, owner, rag)
Called when a player calls a detective to a player ragdoll.\
*Realm:* Server\
*Added in:* 2.3.5\
*Parameters:*
- *ply* - The player who is calling for a detective
- *owner* - The player who owns the corpse the detective is being called to
- *rag* - The ragdoll representing the corpse being called to

### TTTDetectiveLikePromoted(ply)
Called when a detective-like (deputy, impersonator, etc.) player is promoted.\
*Realm:* Server\
Expand Down
88 changes: 87 additions & 1 deletion CONVARS.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ ttt_shadow_enabled 0 // Whether or not the Sha
ttt_arsonist_enabled 0 // Whether or not the Arsonist should spawn
ttt_hivemind_enabled 0 // Whether or not the Hive Mind should spawn
ttt_plaguemaster_enabled 0 // Whether or not the Plaguemaster should spawn
ttt_taskmaster_enabled 0 // Whether or not the Taskmaster should spawn

// Individual Role Spawn Weights
ttt_hypnotist_spawn_weight 1 // The weight assigned to spawning the Hypnotist
Expand Down Expand Up @@ -165,6 +166,7 @@ ttt_shadow_spawn_weight 1 // The weight assigned to
ttt_arsonist_spawn_weight 1 // The weight assigned to spawning the Arsonist
ttt_hivemind_spawn_weight 1 // The weight assigned to spawning the Hive Mind
ttt_plaguemaster_spawn_weight 1 // The weight assigned to spawning the Plaguemaster
ttt_taskmaster_spawn_weight 1 // The weight assigned to spawning the Taskmaster

// (Note: Each role is limited to one player per round.)

Expand Down Expand Up @@ -216,6 +218,7 @@ ttt_shadow_min_players 0 // The minimum number of
ttt_arsonist_min_players 0 // The minimum number of players required to spawn the Arsonist
ttt_hivemind_min_players 0 // The minimum number of players required to spawn the Hive Mind
ttt_plaguemaster_min_players 0 // The minimum number of players required to spawn the Plaguemaster
ttt_taskmaster_min_players 0 // The minimum number of players required to spawn the Taskmaster

// Grouped Role Spawn Settings
ttt_twins_enabled 0 // Whether or not the Twins should spawn
Expand Down Expand Up @@ -967,7 +970,88 @@ ttt_plaguemaster_dart_replace_timer 0 // How long (in seconds)
ttt_plaguemaster_body_search_mode 1 // Whether dead bodies reveal if they had the plague when searched. 0 - Don't show. 1 - Show if died from plague. 2 - Show if Infected with plague.
ttt_plaguemaster_can_see_jesters 0 // Whether jesters are revealed (via head icons, color/icon on the scoreboard, etc.) to the Plaguemaster
ttt_plaguemaster_update_scoreboard 1 // Whether the Plaguemaster shows dead players as missing in action


// Taskmaster
ttt_taskmaster_blocks_team_wins 1 // Whether the Taskmaster should block teams (innocent, traitor, monster) from winning if they are alive and haven't finished their tasks.
ttt_taskmaster_is_passive 0 // Whether the Taskmaster should count as a 'passive' role for roles that need to kill other players, allowing them to win while the Taskmaster is still alive (if 'ttt_taskmaster_wins_with_others' is enabled)
ttt_taskmaster_kill_tasks 1 // The number of kill tasks assigned to the Taskmaster
ttt_taskmaster_misc_tasks 2 // The number of miscellaneous tasks assigned to the Taskmaster
ttt_taskmaster_repeat_rerolls 1 // Whether the Taskmaster can be assigned tasks they previously rerolled away from
ttt_taskmaster_win_block_length 60 // How long (in seconds) the Taskmaster should block teams (innocent, traitor, monster) from winning for (if 'ttt_taskmaster_blocks_team_wins' is enabled). Set to 0 to block until time runs out
ttt_taskmaster_wins_with_others 1 // If the Taskmaster should be allowed to win alongside other teams/players

// Taskmaster tasks
ttt_taskmaster_calldetective_enabled 1 // Whether the 'Call a Detective to a Body' task should be enabled
ttt_taskmaster_carrycorpse_enabled 1 // Whether the 'Carry a Corpse for X Seconds' task should be enabled
ttt_taskmaster_carrycorpse_time 60 // The time (in seconds) a player must carry a player corpse to complete the 'Carry Corpse' task
ttt_taskmaster_chat_enabled 1 // Whether the 'Send X Messages' task should be enabled
ttt_taskmaster_chat_times 25 // The number of text messages a player must sent to complete the 'Send X Messages' task
ttt_taskmaster_completion_bonus 1 // How many credits the Taskmaster should get whenever they complete a task
ttt_taskmaster_crouch_enabled 1 // Whether the 'Crouch for X Seconds' task should be enabled
ttt_taskmaster_crouch_time 40 // The time (in seconds) a player must stay crouched to complete the 'Crouch' task
ttt_taskmaster_crouchnearbody_enabled 1 // Whether the 'Crouch Near a Body' task should be enabled
ttt_taskmaster_crouchnearbody_range 1 // The distance (in meters) away a player must stay within to count for the 'Crouch Near Body' task
ttt_taskmaster_crouchnearbody_time 20 // The time (in seconds) a player must stay near a body to count for the 'Crouch Near Body' task
ttt_taskmaster_crowbar_enabled 1 // Whether the 'Swing a Crowbar 50 Times' task should be enabled
ttt_taskmaster_crowbar_times 50 // The number of times a player must use their crowbar to complete the 'Swing Crowbar' task
ttt_taskmaster_damageeveryone_enabled 1 // Whether the 'Damage Everyone Else' task should be enabled
ttt_taskmaster_dodamage_amount 200 // The amount of damage a player must do to complete the 'Deal X Damage' task
ttt_taskmaster_dodamage_enabled 1 // Whether the 'Deal X Damage' task should be enabled
ttt_taskmaster_firebullets_enabled 1 // Whether the 'Fire X Bullets' task should be enabled
ttt_taskmaster_firebullets_times 100 // The jump of times a player must fire a bullet to complete the 'Fire X Bullets' task
ttt_taskmaster_getplayerkilled_enabled 1 // Whether the 'Get Target Killed' task should be enabled
ttt_taskmaster_getplayertokill_enabled 1 // Whether the 'Get Target to Kill' task should be enabled
ttt_taskmaster_healthunder_amount 15 // The amount of health a player must stay under to complete the 'Health Under' task
ttt_taskmaster_healthunder_enabled 1 // Whether the 'Survive Under X Health' task should be enabled
ttt_taskmaster_healthunder_time 60 // The time (in seconds) a player must stay under the target health to complete the 'Health Under' task
ttt_taskmaster_holstered_enabled 1 // Whether the 'Stay Holstered for X Seconds' task should be enabled
ttt_taskmaster_holstered_time 60 // The time (in seconds) a player must stay holstered to complete the 'Holstered' task
ttt_taskmaster_jump_enabled 1 // Whether the 'Jump x Times' task should be enabled
ttt_taskmaster_jump_times 100 // The jump of times a player must jump to complete the 'Jump X Times' task
ttt_taskmaster_kill360_enabled 1 // Whether the 'Kill a Player After a 360' task should be enabled
ttt_taskmaster_kill360_time 3 // The time (in seconds) a player has after completing a 360 to kill a player for the 'Kill a Player After a 360' task
ttt_taskmaster_killaiming_enabled 1 // Whether the 'Kill a Player While Aiming' task should be enabled
ttt_taskmaster_killairborne_enabled 1 // Whether the 'Kill an Airborne Player' task should be enabled
ttt_taskmaster_killbehind_enabled 1 // Whether the 'Kill a Player From Behind' task should be enabled
ttt_taskmaster_killbehind_view_angle 75 // The angle (in degrees) from a player's eye angle within which the Taskmaster is 'spotted' for the 'Kill a Player From Behind' task
ttt_taskmaster_killcrowbar_enabled 1 // Whether the 'Kill a Player With a Crowbar' task should be enabled
ttt_taskmaster_killdistant_enabled 1 // Whether the 'Kill a Distant Player' task should be enabled
ttt_taskmaster_killdistant_range 25 // The minimum distance (in meters) away a player can be to count for the 'Kill a Distant Player' task
ttt_taskmaster_killdouble_enabled 1 // Whether the 'Get a Double Kill' task should be enabled
ttt_taskmaster_killdouble_time 5 // The time (in seconds) the taskmaster has between kills to complete the 'Get a Double Kill' task
ttt_taskmaster_killheadshot_enabled 1 // Whether the 'Kill a Player With a Headshot' task should be enabled
ttt_taskmaster_killlastbullet_enabled 1 // Whether the 'Kill a Player With Your Last Bullet' task should be enabled
ttt_taskmaster_killmidair_enabled 1 // Whether the 'Kill a Player While Midair' task should be enabled
ttt_taskmaster_killnearby_enabled 1 // Whether the 'Kill a Nearby Player' task should be enabled
ttt_taskmaster_killnearby_range 5 // The maximum distance (in meters) away a player can be to count for the 'Kill a Nearby Player' task
ttt_taskmaster_killonehit_enabled 1 // Whether the 'Kill a Player in One Hit' task should be enabled
ttt_taskmaster_killpistol_enabled 1 // Whether the 'Kill a Player With a Pistol' task should be enabled
ttt_taskmaster_killretaliate_enabled 1 // Whether the 'Kill a Player That Attacked First' task should be enabled
ttt_taskmaster_killtarget_enabled 1 // Whether the 'Kill Target' task should be enabled
ttt_taskmaster_killweapon_enabled 1 // Whether the 'Kill a Player With a Specific Weapon' task should be enabled
ttt_taskmaster_lookatplayer_enabled 1 // Whether the 'Look at Target' task should be enabled
ttt_taskmaster_lookatplayer_time 30 // The time (in seconds) a player must look at their target to complete for the 'Look at Player' task
ttt_taskmaster_pickupshopitem_enabled 1 // Whether the 'Pick up a Shop Item' task should be enabled
ttt_taskmaster_standonplayer_enabled 1 // Whether the 'Stand on a Player for X Seconds' task should be enabled
ttt_taskmaster_standonplayer_time 15 // The time (in seconds) a player must stay stand on top of another player to complete the 'Stand On Player' task
ttt_taskmaster_stayhidden_enabled 1 // Whether the 'Stay Hidden for X Seconds' task should be enabled
ttt_taskmaster_stayhidden_time 30 // The time (in seconds) a player must hide to complete for the 'Stay Hidden' task
ttt_taskmaster_stayhigher_enabled 1 // Whether the 'Be Highest for X Seconds' task should be enabled
ttt_taskmaster_stayhigher_time 30 // The time (in seconds) a player must stay higher up to complete the 'Highest Player' task
ttt_taskmaster_stayinarea_enabled 1 // Whether the 'Stay in Area for X Seconds' task should be enabled
ttt_taskmaster_stayinarea_range 5 // The distance (in meters) away from the location that a player must stay within to count for the 'Stay in Area' task
ttt_taskmaster_stayinarea_time 30 // The time (in seconds) a player must stay inside the target area to count for the 'Stay in Area' task
ttt_taskmaster_staylower_enabled 1 // Whether the 'Be Lowest for X Seconds' task should be enabled
ttt_taskmaster_staylower_time 30 // The time (in seconds) a player must stay lower down to complete the 'Lowest Player' task
ttt_taskmaster_stayneartarget_enabled 1 // Whether the 'Stay Near Target' task should be enabled
ttt_taskmaster_stayneartarget_range 5 // The distance (in meters) away a player must stay within to count for the 'Stay Near Target' task
ttt_taskmaster_stayneartarget_time 30 // The time (in seconds) a player must stay near their target to count for the 'Stay Near Target' task
ttt_taskmaster_survive_enabled 1 // Whether the 'Survive' task should be enabled
ttt_taskmaster_takedamage_enabled 1 // Whether the 'Take Damage and Survive' task should be enabled
ttt_taskmaster_takedamage_time 60 // The time (in seconds) a player must survive without taking further damage to complete the 'Take Damage' task
ttt_taskmaster_weaponpickups_count 20 // The number of unique weapons a player must pick up to complete the 'Pick Up Weapons' task
ttt_taskmaster_weaponpickups_enabled 1 // Whether the 'Pick up X Weapons' task should be enabled

// ----------------------------------------

// GROUPED ROLE SETTINGS
Expand Down Expand Up @@ -1145,6 +1229,7 @@ ttt_shadow_starting_health 100 // The amount of health t
ttt_arsonist_starting_health 100 // The amount of health the Arsonist starts with
ttt_hivemind_starting_health 100 // The amount of health the Hive Mind starts with
ttt_plaguemaster_starting_health 100 // The amount of health the Plaguemaster starts with
ttt_taskmaster_starting_health 100 // The amount of health the Taskmaster starts with

// Individual Role Max Health. Set to 0 or -1 to use the game's default maximum health.
ttt_traitor_max_health 100 // The maximum amount of health a Traitor can have
Expand Down Expand Up @@ -1199,6 +1284,7 @@ ttt_shadow_max_health 100 // The maximum amount of
ttt_arsonist_max_health 100 // The maximum amount of health the Arsonist can have
ttt_hivemind_max_health 100 // The maximum amount of health the Hive Mind can have
ttt_plaguemaster_max_health 100 // The maximum amount of health the Plaguemaster can have
ttt_taskmaster_max_health 100 // The maximum amount of health the Taskmaster can have

// Round Time
ttt_roundtime_win_draw 0 // Whether a round that ends because the round time limit has passed counts as a draw. If it is not a draw, the traitor team loses
Expand Down
11 changes: 7 additions & 4 deletions RELEASE.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,16 @@
## 2.3.5 (Beta)
**Released:**

### Changes
- Updated weapon switch and pickup HUD elements to use the same logic for getting weapon names
- Fixes very rare cases where they would say different things

### Additions
- Added new independent role: Taskmaster
- Added ability to control whether the mercenary gets body armor as part of their loadout (defaults to `true`)
- Added ability to change vampire's fang drain overheal to overheal (default), increase max health, or do both
- Added ability to disable automatically confirming a players death when searching their body (disabled by default)

### Changes
- Updated weapon switch and pickup HUD elements to use the same logic for getting weapon names
- Fixes very rare cases where they would say different things

### Fixes
- Fixed illusionist not blocking traitor team voice chat
- Fixed promoted impersonator and deputy who are searched by a detective not always showing their true role on the scoreboard
Expand All @@ -20,6 +21,8 @@
- Added `state` parameter to `TTTTeamVoiceChatTargets` hook
- Added `table.GetFirstItemWithPropertyValue` static method
- Added `maxchange` parameter to `TTTVampireBodyEaten` hook
- Added `TTTDetectiveCalledToBody` hook which is called when a player calls a detective to a body
- Changed `SYNC` methods to not clear values that are already `nil`

## 2.3.4 (Beta)
**Released: August 9th, 2025**
Expand Down
13 changes: 13 additions & 0 deletions docs/api/hooks.html
Original file line number Diff line number Diff line change
Expand Up @@ -308,6 +308,19 @@ <h3><a id="tttdeathnotifyoverridevictim-inflictor-attacker-reason-killername-rol
<li><em>role</em> - The new role value to use or the original passed into the hook. Use <code>ROLE_NONE</code> to hide the attacker's role from the victim</li>
</ul>

<h3><a id="tttdetectivecalledtobodyply-owner-rag" href="#tttdetectivecalledtobodyply-owner-rag">TTTDetectiveCalledToBody(ply, owner, rag)</a> <span data-text="Beta Only" class="betaonly betaicon tooltip">&nbsp;</span></h3>
<p>
Called when a player calls a detective to a player ragdoll.<br>
<em>Realm:</em> Server<br>
<em>Added in:</em> 2.3.5<br>
<em>Parameters:</em>
</p>
<ul>
<li><em>ply</em> - The player who is calling for a detective</li>
<li><em>owner</em> - The player who owns the corpse the detective is being called to</li>
<li><em>rag</em> - The ragdoll representing the corpse being called to</li>
</ul>

<h3><a id="tttdetectivelikepromotedply" href="#tttdetectivelikepromotedply">TTTDetectiveLikePromoted(ply)</a></h3>
<p>
Called when a detective-like (deputy, impersonator, etc.) player is promoted.<br>
Expand Down
Loading
Loading