Released: June 6th, 2022
Includes all beta updates from 1.5.9 to 1.5.17.
Released: June 4th, 2022
- Changed additional role messages and features to be hidden or disabled when
ttt_hide_role
is enabled (Thanks Callum!) - Ported Steam chat filtering from base TTT
Released: May 29th, 2022
- Fixed an error that can occur when a player disconnects while respawning
- Fixed some players' roles being revealed to traitors the round after they are a detective
- Fixed error in the shop search when certain symbols were entered
- Fixed error opening the shop when
ttt_bem_allow_change
was disabled
- Added ability to configure maximum informant scanner distance
- Added total kills to the round summary score tab
- Changed traitor team to show question mark icons over their head and on the scoreboard when there is a glitch
- Which specific roles show as a question mark depends on the ttt_glitch_mode convar
- Ported "TTT: fix weapons disappearing during round reset" from base TTT
Released: May 21st, 2022
- Added new special traitor role: the informant
- Added information on the scoreboard when the clown is activated
- Added information on the scoreboard when the old man is activated
- Changed jester team to show question mark icons over their head and on the scoreboard instead of the jester icon
- Changed maps which send messages to specific vanilla roles to instead send those messages to the equivalent team
- Changed detective team to show question mark icons over their head and on the scoreboard instead of the detective icon if roles are hidden
- Changed hidden detective HUD text to make it clear that the role is unknown but others still know its a detective
- Updated detective tutorials to explain role hiding logic
- Added
plymeta:IsTargetIDOverridden
to determine whether the player is currently overriding a piece of Target ID information - Added ability for external roles to define their own
plymeta:IsTargetIDOverridden
- Added
plymeta:IsScoreboardInfoOverridden
to determine whether the player is currently overriding a piece of scoreboard information - Added ability for external roles to define their own
plymeta:IsScoreboardInfoOverridden
- Added
plymeta:IsTargetHighlighted
to determine whether the target is being highlighted per the player's role rules - Added ability for external roles to define their own
plymeta:IsTargetHighlighted
- Changed
ttt_game_text
entity to use the team-equivalent for existing role receivers (e.g. RECEIVE_TRAITOR now sends to the traitor team, not just the traitor role) - Added ability for
ttt_game_text
entity to set the receiver to be jesters (5), independents (6), or monsters (7)
Released: May 15th, 2022
- Added new special innocent role: the turncoat
- Added new special detective role: the sapper
- Added convar to control whether killer notification messages are enabled (enabled by default)
- Added
TTTDeathNotifyOverride
hook to allow developers to change what name and role shows in the death notification message - Added
plymeta:CanSeeC4
to determine whether the player can see the C4 radar icon like traitors - Added ability for external roles to define their own
plymeta:CanSeeC4
- Changed the
TTTC4Disarm
hook to allow changing the defusal result via the new return value
Released: May 6th, 2022
- Fixed binoculars showing while a player is dead if they died while their binoculars are out
- Increased head icon offset when a player's head is scaled up so the icon is visible on models with larger heads
- Changed the shop to only be openable if the player has buyable items (previously this behavior only happened when shop-for-all was enabled)
Released: April 23rd, 2022
- Added ability for mad scientist to respawn as a zombie when they die (disabled by default)
- Fixed zombie respawn notification getting trampled by the "medium can sense your spirit" notification
- Fixed minor grammatical problem in the zombie tutorial when the role is renamed
- Added
plymeta:IsZombifying()
to check whether a player is respawning as a zombie - Added
plymeta:RespawnAsZombie()
to allow respawning a player as a zombie
Released: April 16th, 2022
- Added ability for beggar to be on the independent team (disabled by default)
- Fixed bodysnatcher role popup and tutorial not showing the correct team when they are configured to be independent
- Added new
TTTRolePopupRoleStringOverride
hook to allow overriding the role string used when building the role start-of-round popup
Released: April 9th, 2022
- Added model for the detective binocular weapon
- Fixed rare case where a player could get the role weapons from their previous role in a new round
Released: April 3rd, 2022
- Fixed beggar converted to innocent still showing as a jester to traitors when ttt_beggar_reveal_innocent was set to "traitors"
- Changed head icon height calculation again to hopefully help more with model scaling
Released: March 22nd, 2022
Includes beta updates 1.5.6 and 1.5.7.
- Fixed roles without shops by default belonging to teams that normally get shops by default not having the "shop sync" convars created
- Fixed error using search in shop or role weapons config menu
- Fixed loot goblins being shown in traitor vision when it was enabled
Released: March 19th, 2022
- Added convars to control whether the assassin is allowed to kill the loot goblin, zombie, or vampire even if they aren't the target (enabled by default)
- Added ability for search in role shop and roleweapons config menu to search by item description as well
- Added ability for jester and swapper to have their max health reduced by a health station instead of being healed (enabled by default)
- Fixed beggar changed to traitor showing traitor highlighting when beggar reveal is disabled
- Fixed bodysnatcher changed to traitor showing traitor highlighting when bodysnatcher reveal is disabled
- Fixed scoreboard search icons not having tooltips due to them refreshing too often
- Fixed body armor icon showing when the info UI was not (e.g. when scoped in and when the main menu is open)
- Fixed glitch being revealed by assassin target information on the scoreboard when ttt_glitch_mode was not the default of 0
- Fixed casing on "A Drunk has remembered their role" message
- Fixed roleweapons config menu not applying search bar value when updating the same role as the one the search was used on
- Fixed tooltip on bomb station not updating if a player's role changed after it was placed
- Fixed role checks not starting for the role with the highest role ID
- Changed zombies to no longer be able to drown
- Changed the activated clown to be able to see other jesters so they don't kill them
- Changed the jester to win, like normal, if they are somehow to killed by other members of the jester team
- Changed the parasite cure to be available to all special detectives when the parasite is enabled
- Added new
plymeta:ShouldNotDrown
to determine if a player should drown - Added new
ROLE.shouldnotdrown
optional rule for external roles - Added
should_reduce
parameter toTTTPlayerUsedHealthStation
hook - Added ability for entities to use a function for their
TargetIDHint
value
Released: March 6th, 2022
- Added the ability for loot goblins to regenerate health under certain circumstances
- By default, the loot goblin will now regen health slowly while standing still
- Fixed players whose roles are changed to loot goblin not being granted the jump boost
- Fixed old man's view being stuck if their adrenaline rush activated while they were using a scoped weapon (Thanks Lillie!)
Released: February 28th, 2022
Includes all beta updates from 1.5.1 to 1.5.4.
Released: February 26th, 2022
- Added ability to control how often a revenger loses health after their lover is killed, if that is enabled
- Fixed body armor icon not going away once you died
- Fixed players converted to vampire not being unfrozen immediately
Released: February 23rd, 2022
- Added ability to hide weapon ammo display
- Added ability to hide a special detective's true role, showing "detective" everywhere instead
- This can be set to only hide the role for other players (e.g. the special detective can see their real role but others can't) or for everyone
- Fixed assassin target information not being cleared from the scoreboard if an assassin's role was changed
- Fixed parasite infection not being cured on a player if they resurrected the parasite and changed their role
- Fixed phantom haunting state not being cleared when their role was changed
- Added new
TTTTutorialRoleTextExtra
hook to allow addons to provide more text information for a role's tutorial page - Added new
TTTTutorialRolePageExtra
hook to allow addons to manipulate the tutorial page controls for a role - Added new
TTTRolesLoaded
hook which is called after all roles and role modifications and loaded - Added new
TTTRoleRegistered
hook which is called after an external role has been registered - Added the ability to load role modifications immediately after roles are initially loaded
- Added the ability to spread external role logic between client, server and shared files
- Added convars for default roles to ROLE_CONVARS table to allow for dynamic loading with ULX
Released: February 20th, 2022
- Added shield icon on the left of the health bar when a player has body armor equipped
- Added icons for speed and regeneration equipments to the body search dialog
- Added ability to control which parts of the corpse search window are visible to non-detectives (if ttt_detective_search_only is disabled)
- Fixed HL2 neurotoxin suit overlay showing when a player took poison damage
- Fixed veteran damage bonus getting removed if something assigned them the same role again
- Fixed players not always being able to look at a body that was already searched by a detective when ttt_detective_search_only is enabled
Released: February 12th, 2022
- Fixed a few cases where roles without items in their shop could open the shop when Shop For All was enabled
- Removed deprecated global
GenerateNewEventID
from the client realm. Use theTTTSyncEventIDs
hook instead - Removed deprecated global
GenerateNewWinID
from the client realm. Use theTTTSyncWinIDs
hook instead - Changed custom win and event tracking to be protected against file reloading, preventing errors while debugging
Released: February 9th, 2022
Includes all beta updates from 1.4.5 to 1.4.9.
- Fixed very minor bug with loadout items hook, making it consistent with normal shop usage
- Fixed vampire fang usage hint not showing
- Fixed roles without shop items being able to open the shop and to loot credits if Shop For All was enabled
- Fixed old man being invincible if adrenaline rush was disabled
- Fixed errors displaying radar points when there was a decoy being used
- Fixed roles added after the initial load not showing their role icon in the body search dialog
- Fixed some external role icons not working in the body search dialog
- Changed vampire unfreeze delay to be longer by default to help vampires with high pings
- Changed vampire fang usage hint to be translatable and to show that the primary fire button must be held to drain blood
- Renamed HUD namespace to CRHUD to avoid conflicts
Released: February 6th, 2022
- Fixed shop sync not working for custom equipment items for special detectives
- Fixed external detective roles not being able to be configured to disallow looting credits
Released: January 29th, 2022
- Changed loot goblin activation timer to be a random number of seconds within a configurable range
- Added new hooks for controlling who, when, and how many credits to award when players are killed
Released: January 23rd, 2022
- Added map name to scoreboard and round summary title
- Added "Find my role" button to the tutorial page
- Changed head icon placement to hopefully work better with scaled-up heads
- Fixed detective-like players (deputy, impersonator) not being promoted when the active detective team player's role is changed
- Fixed veteran buff state not being reset if their role was changed
- Fixed role logic not starting if someone's role was changed
Released: January 15th, 2022
- Changed role selection logic to shuffle the list of players to hopefully help the randomization
- Changed role vision logic to hopefully increase performance for traitors
- Fixed error caused by vampire fangs when trying to consume a body that didn't contain player information
- Fixed the "A loot goblin has been spotted!" message not updating when the role is renamed
- Added ability to pass a table of role data to the TTTScoringSecondaryWins hook to customize how secondary wins are displayed
- Reworked Event ID and Win ID generation to fix case where external roles could have their conditions conflict due to the client and server not generating IDs in the same order. This involved the following changes:
- BREAKING CHANGE - Deprecated
GenerateNewEventID
on the client and made it a no-op that prints an error message reminding the developer to update - BREAKING CHANGE - Deprecated
GenerateNewWinID
on the client and made it a no-op that prints an error message reminding the developer to update - Added TTTSyncEventIDs hook to allow developers to get generated Event IDs on the client after they have been synced
- Added TTTSyncWinIDs hook to allow developers to get generated Win IDs on the client after they have been synced
- BREAKING CHANGE - Deprecated
Released: January 8th, 2022
- Added the ability to show karma on the scoreboard as a percentage of the total
- Added the ability to re-add score and deaths columns to the scoreboard
- Added the ability to rearrange and disable the tabs in the round summary window
- Added more incompatible addons to the list
- Fixed assassin being penalized for killing the loot goblin
Released: December 30th, 2021
- Fixed old man's adrenaline rush ability being triggered by things that don't cause damage (Thanks for the idea Spaaz)
- Fixed error in disguiser UI caused by refactoring
Released: December 15th, 2021
Includes all beta updates from 1.4.1 to 1.4.2.
- Changed parasite cures (real and fake) to mention in the message that it's directed at traitors
- Fixed parasite's infection conflicting with the brain parasite weapon from the workshop
- Fixed voice chat UI error
Released: December 10th, 2021
- Added ability to allow spirits to see each other when there is a medium (enabled by default)
- Ported change from base TTT: "TTT uses new permissions.EnableVoiceChat"
- Changed large parts across most of the addon in an attempt to increase performance
- Fixed bodysnatcher killed event redefining existing event ID
- Fixed freeze in round summary when a player has multi-byte characters in their name
- Fixed round summary highlights player stats spacing
- Fixed killing a jester team member causing the team kill "awards" to show on the round summary highlight tab
- Fixed medium being told there was a medium when they died
- Fixed assassin not getting a new target when their target's role changes to one that is an invalid target
- Added parameter to
GenerateNewEventID
to allow roles to associate generated event IDs back to the role - Added warning message to
GenerateNewEventID
when role parameter is missing so developers know to update - Added parameter to
GenerateNewWinID
to allow roles to associate generated win IDs back to the role - Added warning message to
GenerateNewWinID
when role parameter is missing so developers know to update
NOTE: If the role parameter is not passed, we try to figure out the role that the generated ID belongs to but this is not promised to work. Developers should update to use the new parameter as soon as possible. Developers who are using these methods to generate IDs not linked to roles should pass ROLE_NONE
.
Released: December 4th, 2021
- Added ability to give the impersonator credits when they are activated (disabled by default)
- Added ability to configure a chance for a promoted impersonator to spawn instead of a detective (disabled by default)
- Added ability to remind players that there is a medium when they die (enabled by default)
- Changed old man to lose karma if they hurt or kill players when their adrenaline rush is not active
- Changed so innocents that hurt or kill the old man will lose karma
- Changed old man adrenaline rush logic so it shows what player ultimately killed them in chat rather than "You killed yourself"
- Changed old man adrenaline rush message to also show in the center of the screen to make it more obvious when it's happening
- Fixed loot goblin and old man not sharing a timelimit win with the innocents
- Fixed loot goblin and old man not sharing a win with each other (if they are both in the same round) on the round summary screen
- Changed TTTCanIdentifyCorpse and TTTCanSearchCorpse hooks to allow changing the corpse's stored role
- Fixed TTTWinCheckComplete not being called when the win type was WIN_TIMELIMIT
- Added new TTTScoringSecondaryWins hook to allow multiple roles to have secondary wins at the same time
- BREAKING CHANGE - Removed secondaryWinRole parameter from TTTScoringWinTitle hook
Released: November 15th, 2021
Includes all beta updates from 1.3.1 to 1.3.7.
Released: November 13th, 2021
- Fixed player tag overlapping role icon on the scoreboard
- Fixed error when bodysnatcher tried to snatch a deputy's body when the detective had been killed, preventing the bodysnatcher deputy from being promoted
- Fixed ttt_logic_role entity ROLE_ANY checks not working as expected
- Split API document into multiple files to make it easier to navigate and maintain
- Fixed ttt_kill_target_from_random and ttt_kill_target_from_player not working when the remove_body parameter was given
- Added ttt_damage_* commands which damage the target to aid in development and debugging
Released: November 6th, 2021
- Added ability to configure killer knife attack speed and damage
- Added ability for quack to buy an item which converts a health station into a bomb station (disabled by default)
- Added adjustable speed and stamina recovery boost to activated loot goblin
- Fixed some role round start popup message spacings
- Added TTTSprintStaminaRecovery hook to allow adjusting how fast a player's stamina is recovered
Released: October 26th, 2021
- Fixed roles without weapons assigned directly to them (like deputy) not being able to open their shops in certain circumstances
- Fixed loot goblin not counting as a "passive win" role for living checks
- Added TTTTargetIDPlayerBlockIcon and TTTTargetIDPlayerBlockInfo hooks to block target ID information more easily
Released: October 25th, 2021
- Changed addon incompatibility check to ignore disabled addons
- Fixed devices which change a player's role while resurrecting them not using the configured health and max health for the target role
- Fixed bodysnatching device not updating the owner's max health to match that of their new role
- Fixed loot goblin announcement timer not pausing if a goblin is killed and resurrected as a different role (by a hypnotist, for example)
- Fixed parasite whose role changes after they are killed not having their infection cleared from their target
- Moved role icons and sprites to their own folders
Released: October 24th, 2021
- Fixed deputy and impersonator not being promoted if they spawned in a round without a detective team role and ttt_deputy_impersonator_promote_any_death was enabled
- Fixed loot goblin jump height calculation to work for more size scales than just the default
Released: October 21st, 2021
- Added ability for an old man having an adrenaline rush to have target ID information (icon over the head, ring and text when you look at them) (enabled by default)
- Added ability to control whether the old man plays the rambling speech sound when they are having an adrenaline rush (enabled by default)
- Added ability to control whether the loot goblin plays its cackle and/or jingle sounds (enabled by default)
- Updated some of the loot goblin's text (tutorial, round start popup) to add clarity and fix minor errors
- Changed loot goblin to jump higher once they are activated to compensate for their smaller size
- Fixed error in the round after one with a loot goblin that didn't activate
- Fixed convar creation order causing error related to the ttt_drunk_can_be_ convars and ULX
Released: October 20th, 2021
- Added the loot goblin
- Added tutorial pages for all roles
- Added ability to allow the deputy to use their shop before activation (disabled by default)
- Added ability to delay a deputy's shop purchases until they are activated (disabled by default)
- Added ability to give a deputy some credits when they activate (disabled by default)
- Added ability for a clown to see and use traitor traps when they activate (disabled by default)
- Added ability to configure the amount of damage the killer's crowbar does (when bashing or throwing)
- Added ability to configure the amount of damage the old man's shotgun does
- Added ability to limit the number of times a beggar can respawn, if that is enabled (disabled by default)
- Added ability to have the bodysnatcher respawn if they are killed before they use their device (disabled by default)
- Added ability to use common jester notifications (message, sound, confetti) when the bodysnatcher is killed (disabled by default)
- Added ability to make the paramedic defib rebuyable if ttt_paramedic_device_shop is enabled (disabled by default)
- Added ability to make the hypnotist brainwashing device rebuyable if ttt_hypnotist_device_shop is enabled (disabled by default)
- Added ability to prevent the drunk and clown from being selected in the same round (disabled by default) (Thanks Matty!)
- Added ability to show loadout equipment in shops (disabled by default)
- Added ability to configure the amount of time the various role devices take to be used
- Bodysnatching Device
- Hypnotist's Brainwashing Device
- Mad Scientist's Zombificator
- Paramedic's Defibrillator
- Phantom Exorcism Device
- Doctor's Parasite Cure
- Quack's Fake Parasite Cure
- Changed vampire fang unfreeze logic to hopefully fix rare case where the target would stay frozen if the vampire was killed
- Updated Parasite Cures and Phantom Exorcism device to use renamed role strings
- Removed support for old version of role and shop convars, originally deprecated in v1.0.14
- Fixed teamkilling monster team members not having their karma reduced
- Fixed renaming jester, swapper, or beggar causing errors when trying to show killed notifications
- Fixed clown not winning the round when just them and the old man are left alive
- Fixed error using role colors on the client before the first round preparation phase
- Fixed "beggar converted to innocent" entry in the round summary Events tab using the "traitor" icon
- Fixed vampire eating a body not dropping bones
- Fixed special detectives (paladin, medium, tracker) not counting as detectives in the ttt_logic_role entity
- Fixed error when selecting weapon after respawning a parasite
- Added ability to define a role as on that wins passively (like the old man)
- Added parameter to
player.AreTeamsLiving
to ignore players who win passively (like the old man) - Added
player.TeamLivingCount
andplayer.LivingCount
to help tracking how many players are alive - Added
player.GetTeamPlayers
to get all the players belonging to a player - Added
player.ExecuteAgainstTeamPlayers
to execute a function against the players belonging to a role team - Added TTTWinCheckBlocks and TTTWinCheckComplete hooks to allow manipulating and reacting to the win type
- Added TTTHUDInfoPaint hook to add informational messages to a player's HUD (above their health bar)
- Added TTTPlayerAliveClientThink hook to handle the Think event for each currently living player on the client
- Added TTTRadarRender hook to handle custom radar entry rendering
- Added TTTPlayerDefibRoleChange hook to handle a player being resurrected as a different role
- Added TTTSpectatorShowHUD hook to handle showing a player a spectator HUD
- Added TTTSpectatorHUDKeyPress hook to handle the key press event for a player who should be viewing a spectator HUD
- Added
plymeta:Celebrate
to celebrate with sound and or confetti - Added
plymeta:ShouldShowSpectatorHUD
to determine whether a player should have a spectator HUD displayed - Added
HUD:PaintPowersHUD
method to render phantom-like spectator HUD in a generic way - Changed radar's
DrawTarget
method to be accessible in the RADAR namespace asRADAR:DrawTarget
- Changed HUD's
PaintBar
andShadowedText
methods to be accessible in the HUD namespace asHUD:PaintBar
andHUD:ShadowedText
respectively - Changed
JesterTeamKilledNotification
to be globally accessible - Renamed
SWEP.BoughtBuy
toSWEP.BoughtBy
- Removed deprecated global
ShouldHideJesters
. Useplymeta:ShouldHideJesters
instead
Released: October 5th, 2021
Includes all beta updates from 1.2.4 to 1.2.9.
Released: October 24th, 2021
- Added a check that prints incompatible addons to the console when the server starts
- Added CR_BETA flag to check whether the version being played is a beta or release version
Released: October 3rd, 2021
- Added ability for independents to see missing in action players on the scoreboard (disabled by default) (Thanks Matty!)
- Added ability for the killer to see missing in action players on the scoreboard (enabled by default) (Thanks Matty!)
- Added ability to control whether a vampire can loot credits (enabled by default)
- Added ability to control whether special detectives (all detective roles other than the original detective itself) get armor automatically for free (enabled by default)
Released: October 2nd, 2021
- Added ttt_roleweapons admin command which opens a configuration interface for the roleweapons shop configuration system
- Added new dynamic tutorial system using HTML and hook-generated pages per role
- Added ability to reward vampires with credits when they drain a living target using their fangs (disabled by default)
- Added ability to set a different amount of health overheal if a vampire drains a living target (disabled by default)
- Added ability to block rewarding vampires when they (or their allies) kill someone (disabled by default)
- Added ability to give the veteran credits when they are activated (disabled by default)
- Added ability to set the maximum number of players before "single jester or independent" is automatically disabled (disabled by default)
- Changed custom win events to show in the end-of-round summary's Events tab with an "unknown win event" message until the new TTTEventFinishText hooks are used
- Fixed vampire prime death effects still happening after the round has ended
- Fixed external roles with custom win conditions blocking jester wins
- Fixed tip about radio usage not using the correct key
- Fixed assassin being shown "No targets remaining" after already being told their current target was their final target
- This does allow players who are resurrected after the assassin is assigned their final target to slide under the radar
- Fixed roles with custom win conditions being able to block jester, clown, and old man wins as well as drunks remembering their role
- Fixed traitor vampires being able to drain glitches
- Fixed promoted deputies not being grouped with other detectives in assassin targeting logic
- Fixed independent vampire popup still having "{comrades}" placeholder
- Fixed a drunk who becomes a clown in the same round as another jester role showing in the same row on the round summary screen
- Fixed error when a vampire is killed after they release a target being drained but before that target gets unfrozen
- Added TTTBlockPlayerFootstepSound hook to block a player's footstep sound
- Added TTTKarmaGiveReward hook to block a player from receiving karma
- Added TTTKarmaShouldGivePenalty hook to determine whether a player should have their karma rewarded or penalized
- Added TTTPlayerSpawnForRound hook to react to when a player is spawned (or respawned)
- Added TTTEventFinishText and TTTEventFinishIconText hooks to add detail to the round finished event row for custom win conditions
- Added TTTPlayerRoleChanged hook to react to when a player's role changes
- Added TTTShouldPlayerSmoke hook to affect whether a player should smoke and how that should look
- Added TTTTutorialRolePage, TTTTutorialRoleText, and TTTTutorialRoleEnabled hooks for generating tutorial pages for an external role
- Added TTTRolePopupParams hook to allow roles add parameters to their start-of-round popup message translation
- Added
startingRole
andfinalRole
parameters to the TTTScoringSummaryRender hook - Added
plymeta:GetRoleTeam
to get the appropriateROLE_TEAM_*
enum value for the player - Added
plymeta:ShouldDelayAnnouncements
to determine whether announcements when a player is killed should be delayed for this player - Added
player.GetLivingRole
,player.IsRoleLiving
, andplayer.AreTeamsLiving
static methods - Added
player.GetRoleTeam
static method to get the appropriateROLE_TEAM_*
enum value for a role - Added ability for external roles to define their role selection predicate function
- Added ability for external roles to run specific logic when a player is initially assigned a role or when they steal a role from someone else
- Added
GetRoleTeamInfo
andGetRoleTeamName
global methods - Changed
OnPlayerHighlightEnabled
to be globally available so other roles can use the same highlighting logic - Changed all
EXTERNAL_ROLE_*
tables to be namedROLE_*
in preparation for role separation - Fixed returning false for the first parameter of TTTTargetIDPlayerRoleIcon not stopping the role icon from showing
Released: September 25th, 2021
- Fixed external roles with long names and custom win conditions having their win title cut off
- Fixed map wins being ignored when an external role with a custom win condition was in use
- Fixed generated win and event identifiers resetting if lua is refreshed
Released: September 25th, 2021
- Added ability to have a jester and an independent both spawn in the same round (disabled by default)
- Added ability for deputy/impersonator to be promoted when any detective dies, rather than all detectives (disabled by default)
- Added ability for deputy to spawn when there isn't a detective and be pre-promoted (disabled by default)
- Added ability for impersonator to spawn when there isn't a detective and be pre-promoted (disabled by default)
- Added ability to configure zombie conversion to be based on chance, separately for prime and thralls (disabled by default)
- Added ability for a paramedic's defib to convert all roles to a vanilla innocent (disabled by default)
- Added ability to add the hypnotist's device to their shop (disabled by default)
- Added ability to add the paramedic's defib to their shop (disabled by default, requires shop-for-all to be enabled)
- Added ability to control whether the hypnotist spawns with their device (enabled by default)
- Added ability to control whether the paramedic spawns with their defib (enabled by default)
- Added ability for hypnotist device to convert detective and deputies that appear as detective to impersonator (disabled by default)
- Added ability for traitor or quack to buy an exorcism device usable to remove a haunting phantom (disabled by default)
- Added configuration for whether assassin damage bonus applies to weapons bought from the shop (enabled by default)
- Added ability for bodysnatcher's role change to be hidden based on which team they joined (disabled by default)
- Added a shop icon for the bomb station
- Added new microphone volume tip from base TTT
- Changed beggar to not be able to use or see traitor chat (text or voice) when the beggar reveal mode is disabled for traitors
- Changed credit-lootable roles without a shop (like the trickster) to have starting credits convars
- Changed bodysnatcher to automatically be given any role weapons the body had on them when they died
- Changed bodysnatcher to inherit an assassin's target (or be given a new one) when they snatch an assassin's body
- Fixed zombies sometimes spawning in non-zombie rounds if they are on the traitor team
- Fixed beggar who converted to traitor and then was resurrected by a hypnotist not showing as a traitor when beggar reveal was disabled for traitors
- Fixed some buyable role weapons showing the "custom" icon in the shop
- Fixed resurrected players getting their full loadouts even if they've already used their one-use weapons (like the hypnotist brainwashing device)
- Fixed potential case where assassin's new target would get immediately cleared if a delay wasn't being used
- Added ability for external roles to define when they are "active", tying directly into the
plymeta:IsRoleActive
function - Added
plymeta:ShouldActLikeJester
to determine if a player should act like a jester (damage in, damage out, appearance, etc.) - Added ability for external roles to define if/when they should act like a jester, tying directly into the
plymeta:ShouldActLikeJester
function - Added
GenerateNewEventID
method for generating a unique ID for custom scoring events - Added
GenerateNewWinID
method for generating a unique ID for custom win conditions - Added TTTTargetIDPlayerHealth hook for controlling what text to show when rendering a player's health
- Added TTTTargetIDPlayerKarma hook for controlling what text to show when rendering a player's karma
- Added TTTTargetIDEntityHintLabel hook for controlling what text to show when rendering a player or entity's hint label
- Added TTTTargetIDPlayerHintText hook for controlling what text to show when rendering an entity's hint text
- Added TTTTargetIDPlayerName hook for controlling what text to show when rendering a player's name
- Added TTTTargetIDRagdollName hook for controlling what text to show when rendering a ragdoll's name
- Added
plymeta:ShouldRevealBeggar
to determine if a player should be able to tell that a target player is no longer a beggar (e.g. converted to an innocent or traitor) - Added
plymeta:ShouldRevealBodysnatcher
to determine if a player should be able to tell that a target player is no longer a bodysnatcher (e.g. has snatched a role from a dead body) - Added
was_bodysnatcher
property to TTTRadarPlayerRender hook'stgt
parameter - Changed the global
ShouldHideJesters
to be deprecated in favor ofplymeta:ShouldHideJesters
- Fixed returning false for either text value in TTTTargetIDPlayerText hook not actually stopping the original text from being used
- Fixed ttt_debug_preventwin not blocking when TTTCheckForWin returns a value or when the round time ends
- Fixed
plymeta:SoberDrunk
not calling PlayerLoadout hook when granting the player their new role loadout
Released: September 15th, 2021
- Added ability for the old man to enter an adrenaline rush and hold off death for 5 seconds (enabled by default)
- Added double barrel shotgun which is given to the old man when they enter an adrenaline rush (enabled by default)
Released: September 15th, 2021
- Added version number to the scoreboard and round summary title bar
- Added ability for the bodysnatcher to be on the independent team (disabled by default)
- Added ability for vampires to be on the independent team (disabled by default)
- Fixed jesters being marked in pink on a traitor's radar when ttt_jesters_visible_to_traitors was disabled
- Fixed beggars showing as their new role on a traitor's radar when ttt_beggar_reveal_traitor was not 1 or 2
- Fixed killer clowns showing on radar after they are activated if ttt_clown_hide_when_active is enabled
- Fixed error in the radar when ttt_glitch_mode was 2
- Fixed round ending when a swapper is killed by the last member of one of the teams but the attacker remains alive
- Added
ShouldHideJesters
global function to determine whether the given player should hide a jester player's role - Added ability for external roles to define:
- Starting credits
- Starting health
- Maximum health
- Extra translations
- Added TTTTargetIDPlayerRing hook which allows overriding whether the Target ID ring is shown and what color it should be shown as
- Added
nameLabel
parameter to TTTScoringSummaryRender hook, allowing you to override what is displayed for a player's name - Added TTTRadarPlayerRender hook which allows overriding whether a radar ping is shown and what color it should be shown as
- Added TTTSelectRoles*Options for each team to allow external roles to affect the available roles and their weights
- Added new table methods
table.IntersectedKeys
table.UnionedKeys
table.ExcludedKeys
table.LookupKeys
table.ToLookup
Released: September 12th, 2021
- Added ability to allow anyone to use binoculars to inspect bodies (disabled by default)
- Added ability to give the veteran a shop when they are activated (enabled by default)
- Added ability to delay giving shop weapons to the veteran until after they are activated (disabled by default)
- Added ability to set the vampire fangs to drain their target first rather than convert first (disabled by default)
- Fixed error trying to give a loadout equipment item as a weapon at the start of the round
- Fixed some equipment item states not being properly reset if they were part of a custom role loadout due to the loadout being added during the prep phase as well as during the active round
- Fixed translations in C4 UI not working sometimes
- Fixed a player who is turning into a zombie not stopping the round from ending
- Fixed medium ghosts creating shadows
- Adjusted medium ghost logic to hopefully fix another "floating kleiner" case
- Added
plymeta:GiveDelayedShopItems
to give a player their delayed shop items - Added
plymeta:IsRoleActive
to determine if a player's role feature is active - Added
plymeta:ShouldDelayShopPurchase
to determine if a player's shop purchases should be delayed - Added
DELAYED_SHOP_ROLES
lookup table for roles whose shop purchases can be delayed
Released: September 6th, 2021
- Fixed external roles not being able to give equipment items in their loadout
Released: September 5th, 2021
Includes all beta updates from 1.1.4 to 1.1.11.
Released: September 5th, 2021
- Fixed case where the medium ghosts would temporarily show up as floating kleiner models
Released: September 4th, 2021
- Added the option to set the amount of time it takes a vampire to drain a dead body to a different amount of time than if the target is alive (disabled by default)
- Added option to enable shop for all roles (disabled by default)
- Fixed vampires not being able to drain dead players
- Fixed traitors being able to see detective, special detective, and clown icons through walls
Released: September 2nd, 2021
- Added the option for the drunk to become any enabled role except for another drunk or the glitch (disabled by default)
- Added the option for the drunk to become the clown if the round would end before they sober up (disabled by default)
- Added the option to notify players when the drunk sobers up (disabled by default)
- Added the option for the paladin's damage reduction aura to protect themselves (disabled by default)
- Added the option for the paladin's healing aura to heal themselves (enabled by default)
- Added the option for the quack's fake parasite cure to kill uninfected users (disabled by default)
- Added a message that is displayed when a traitor picks up a parasite cure to distinguish if it is real or fake
- Changed the quack's fake parasite cure to display as a real parasite cure
- Fixed mad scientist's zombificator, bodysnatcher's bodysnatching device, and paramedic's defib being usable on fake bodies with odd side effects
- Fixed bodysnatcher's bodysnatching device showing and taking the corpse player's current role rather than the role on the corpse (relevant for fake bodies and things that resurrect without destroying the body)
- Fixed case where multiple vampires draining the same target would have the target unfreeze when any of the vampires quit draining
- Fixed assassin not being able to see which players are infected by a parasite on the scoreboard
- Fixed only assassin target or parasite infection showing on the scoreboard and target ID (when you look at a player) even if a player should see both
- Updated
GetTeamRoles
to take an optional lookup table of excluded roles - Changed TTTScoringWinTitle hook to allow dynamically setting a secondary win role (like the old man)
- Added new hooks to handle cases where a player would want to appear as a different role in-game
- TTTScoreboardPlayerRole - What role/color the player should show as on the scoreboard
- TTTScoreboardPlayerName - What name the player should have on the scoreboard (useful for adding things like the assassin's "(TARGET)")
- TTTTargetIDPlayerKillIcon - Whether the "KILL" icon should be shown over the target's head
- TTTTargetIDPlayerRoleIcon - What role icon and background color should be shown over the target's head
- TTTTargetIDPlayerText - What text and color to use for the Target ID (when you look at a player)
- Added
SWEP.ShopName
to weapon_tttbase to allow for weapons to have different names for when they are in the shop as opposed to when they are an entity in world
Released: August 26th, 2021
- Added ability for glitch to see and use traitor traps (disabled by default)
- Added ability for a phantom to lose their powers if their body is destroyed (disabled by default)
- Added ability to remove all detective roles' ability to loot credits from corpses (disabled by default)
- Added the option for the mediums' spirits to be colored similar to tracker footsteps (enabled by default)
- Changed round summary role tooltip to be translatable
- Changed some role features to give the player bonus points when used successfully (hypnotist, bodysnatcher, swapper, beggar)
- Fixed the detective's DNA scanner not being removed when they should have lost their role weapons
- Fixed external monster roles not naturally spawning
- Fixed credit message popping up for detectives when ttt_det_credits_traitordead was 0
- Fixed error opening the shop when checking whether a weapon is equipment and it is missing a core method
- Fixed round summary highlight tab not showing the correct number of traitors
- Fixed potential error in vampire fangs when the vampire lost their target
- Fixed paladin heal removing a player's overheal
- Fixed minor issue where a role could be set to not being a shop role but still have shop role convars created
- Fixed special traitors having orange radar pings when glitch mode was set to 2
- Fixed medium spirit positions updating infrequently
- Changed more aspects of role creation to be dynamic
- Adding icons to the download list
- Creation of ttt_force_{ROLENAME} commands
- Role selection logic
- Role default buyable equipment
- Added
GetRoleTeamColor
global client method for getting the color for a role team - Added ability to give a player bonus points via a scoring event if the sid64 and bonus properties are set
- Added ability for external roles to explicitly deny credit looting and traitor button usage via the
canlootcredits
andcanusetraitorbuttons
role table properties
Released: August 22nd, 2021
- Added the medium
- Added the ability to give clowns bonus health if they are healed when they are activated
- Added message to the clown if they are healed when they activate
- Added role name to mouseover for icons on the round summary
- Added monster support for external roles
- Changes bloody phantom killer footsteps to have priority over tracker footsteps
- Fixed beggar role being revealed on a traitor's scoreboard even if ttt_beggar_reveal_traitor was 0
- Added missing tracker sprites to resource download list
Released: August 21st, 2021
- Added the tracker
- Added missing force_paladin command
- Changed paladin default damage reduction to 30%
- Fixed special detectives using special innocent colors
- Fixed not being able to use weapons when ttt_weaponswitcher_stay was enabled and ttt_weaponswitcher_fast was disabled
- Fixed error when trying to calculate the height of some models
- Added
oldmanwins
parameter to TTTScoringWinTitle hook
Released: August 19th, 2021
- Fixed paladin not counting as an innocent
- Fixed external special detectives not counting as innocent
- Added TTTScoringSummaryRender client hook to change how players are displayed in the round summary
Released: August 18th, 2021
- Added special detectives
- Added the paladin
Released: August 18th, 2021
- Added ability to keep weapon switch menu open when a weapon is selected and fast weapon switching is disabled
- Changed weapon switcher to keep track of your last highlighted weapon slot and to automatically select the same one when it is refreshed
- Fixed an error in the round summary when a player's role was invalid
- Fixed innocent win console message saying "Innocents were defeated"
Released: August 16th, 2021
- Changed the slot number in the weapon switch GUI to still be centered for 2 digit slots
- Fixed jesters being visible via highlighting when ttt_jesters_visible_to_* was disabled
- Fixed error in round summary caused by a player being an in invalid role state
- Fixed weapon switch GUI not updating when you picked up a new weapon and ttt_weaponswitcher_stay was enabled
- Fixed weapon switch GUI closing when you dropped a weapon and ttt_weaponswitcher_stay was enabled
- Fixed weapon switch GUI closing when you tried to drop an undroppable weapon
- Fixed player not appearing on the round summary screen if they were idled to spectator last round and only un-spectated during this round's preparation phase
- Changed TTT_RoleChanged to use Int for role number
- Changed TTT_SpawnedPlayers to use Int for role number
Released: August 15th, 2021
- Fixed an error in round summary where an entry in the scores table did not have the 'role' property
- Fixed assassin target not showing in start of round role summary
Released: August 15th, 2021
Includes all beta updates from 1.0.2 to 1.0.15.
Released: August 15th, 2021
- Added "Buy random equipment" button to the shop
- Added mouseover tooltip to the "Toggle favorite" button in the shop
- Changed radio menu to default to the "n" key to avoid conflicting with the "drop ammo" key
- Changed vampire drain/convert to automatically abort if the target is converted to a vampire by someone else before you're done
- Changed the mad scientist's zombification device to have unlimited charges
- Fixed error in round summary when a player started the round as a role and ended as a spectator
- Fixed players not having their max health set correctly when being converted to a vampire
- Fixed players who were moved to spectator by some external addon not showing as spectator on the scoreboard
- Fixed buttons in shop being slightly misaligned
Released: August 14th, 2021
- Reverted traitor icon to a knife instead of a handgun
- Added TTTScoringWinTitle client hook for determining which text and color to use for the round summary screen
- Added TTTPrintResultMessage server hook for printing which team won as a message in the top-right corner
Released: August 13th, 2021
- Added ability for assassin to have their target highlighted by an aura visible through walls (disabled by default)
- Re-added mistakenly deleted brainwashing device
- Changed
Get{ROLE}Filter
functions to be dynamically assigned for each role - Added sanity checks for external role definitions
- Added missing things to resource download list
Released: August 12th, 2021
- Added missing convars ttt_single_phantom_parasite and ttt_single_paramedic_hypnotist
- Added additional replacement strings for role descriptions
Released: August 11th, 2021
- Added convar to prevent maps from ending the round
- Fixed team name in monsters round start popup
- Fixed only the first weapon added or excluded via roleweapons actually being added or excluded
- Added client-side command to reset the equipment cache
- Added ability to register convars with an external role for it to be picked up by ULX
- Changed
Get{ROLE}
,Is{ROLE}
andIsActive{ROLE}
functions to be dynamically assigned for each role
Released: August 10th, 2021
- Added new mad scientist role
- Added the ability for other mods to create their own simple roles
- Resized role name font for longer role names
Released: August 9th, 2021
- Added ability for parasite's infection to transfer to a new player if their killer is killed (disabled by default)
- There is also a new convar to determine whether the infection progress should be reset if the infection is transferred to a new player
- Added ability to respawn the parasite if their infected target kills themselves (disabled by default)
- Added glitch modes to allow glitches to function in rounds where there are 2 or more members of the traitor team but less than 2 regular traitors
- Added convars to prevent the paramedic and hypnotist, or the phantom and parasite from spawning together
- Added a fake parasite cure that does nothing except play the parasite cure sounds which is buyable for the quack
- Split beggar reveal convar in two to allow finer control over when the beggar is revealed and who they are revealed to
- Separated doctor modes into 2 separate roles
- The doctor now has a shop and can buy a health station or the parasite cure (based off doctor mode 0)
- The paramedic has a defibrillator that cannot be dropped or used by anyone else (based off doctor mode 1)
- The quack now has to buy the bomb station from a shop instead of spawning with it
- The quack can also buy a real health station and the parasite cure
- Changed parasite infection time to 45 seconds (down from 90)
- Fixed role weapons not being removed when a player is hypnotized
- Fixed multiple monsters spawning in one round
Released: August 7th, 2021
- Added convar to have the clown's shop purchases be held back until they are activated
- Added convar to drain a revenger's health down to a specified number when their lover has died
- Re-added Radio menu and added ability to choose which button to use via the F1 menu
- Updated the role string logic to handle more plural cases
- Updated more places to use customizable role strings
- Round summary events
- Round summary score table
- Round start role popups
- HUD messages for beggar and deputy/impersonator
- Role logic messages
- Equipment descriptions
- Tips
- Fixed role selection message not always using custom role strings
- Fixed win message for singular roles not being properly pluralized (e.g. "THE JESTER WIN" instead of "THE JESTER WINS")
- Fixed "AND THE OLD MAN WINS" round summary message missing
- Fixed the "Highlights" round summary tab message missing the winning role name
- Fixed revenger being mislabeled as "tevenger" in some messages
- Fixed body call messages not using correct custom role articles
- Fixed promoted deputy/impersonator not being able to pick up Visualizers
- Fixed detectives showing as deputy on the scoreboard if ttt_deputy_use_detective_icon is disabled
- Added ability for SWEP name, type, and description to use functions for formatting
Released: August 4th, 2021
- Added convars to control whether members of the jesters teams are visible to other teams (via the head icons, color/icon on the scoreboard, etc.)
- Added ability to give the veteran a health bonus (in addition to the heal) when they are activated
- Added ability to notify other remaining players when a veteran is activated
- Added convar to control what happens when a parasite cure is used on someone who is not infected
- Added ability for the clown to always have access to their shop via a new convar
- Added convars to rename roles
- Changed ttt_beggar_notify_sound and ttt_beggar_notify_confetti to be off by default to better match default beggar behaviour
- Changed end-of-round summary to automatically add a row if there are both independents and jesters in a round (via something like a Randomat event)
- Changed parasite cure to have a 3-second charge time to prevent it from being used as an instant-kill weapon
- Changed parasite cure to never be removed if shop randomization is enabled
- Fixed team player count calculations not always being accurate by truncating the "_pct" convars to 3 digits to work around floating point inaccuracy
- Fixed assassin not getting a target sometimes because they were treated as having a failed contract by default
- Fixed missing ttt_clown_shop_mode
- Fixed weapons added to detective or traitor via the roleweapons system not being buyable by roles using the shop mode convars
- Fixed old man not also winning when a map declares a winning team
- Fixed the glitch from being shown as a traitor to zombies if zombies are on the traitor team (Thanks Matty!)
- Added the ability for SWEPs to not be randomized out of the shop by setting "SWEP.BlockShopRandomization = true"
- Renamed ROLE_STRINGS to ROLE_STRINGS_RAW
Released: July 20th, 2021
- Fixed detective showing deputy icon when ttt_deputy_use_detective_icon is enabled
- Fixed scoreboard icons not obeying ttt_deputy_use_detective_icon and ttt_impersonator_use_detective_icon
- Fixed error trying to assign an assassin target preventing rounds from starting when there was an assassin
- Fixed potential error picking an assassin target when ttt_assassin_shop_roles_last was enabled
- Fixed "next"/"final" label sometimes being incorrect for an assassin getting their next target if ttt_assassin_shop_roles_last was enabled
Released: July 19th, 2021
- Added new trickster role
- Added settings to control whether the deputy/impersonator should use their own icons or the Detective icon over their head
- Added setting to have the old man have their health drained to a certain minimum value over time
- Added a message to a parasite victim when they are killed by the parasite coming back to life
- Added a message to a non-prime vampire when they are killed/reverted if the prime was killed
- Ported "TTT: add more validation to corpse commands" from base TTT
- Added new Assassin target priority convar (Thanks Matty!)
- Added new convar to heal the clown when they activate (Thanks Matty!)
- Changed revenger to receive a different message if their lover is killed when they are already dead
- Changed deputy/impersonator to not receive a message about their promotion if they are already dead
- Changed traitors to receive a slightly different message if their dead impersonator teammate has been promoted
- Changed the killer/phantom smoke to be viewable from further away
- Changed corpse identified message to also send for non-vanilla traitors to non-vanilla innocents
- Fixed vampire victims getting stuck frozen if the vampire is killed while draining their blood
- Fixed error caused by trying to set a player with no role's starting health
- Fixed monster team count check when zombie was on the independent team
- Fixed revenger losing karma when they killed their soulmate's killer if they were innocent
- Fixed parasite cure showing in deputy/impersonator shop but not being buyable
- Fixed beggar who converted to a traitor still showing the traitor icon over their head even when ttt_beggar_reveal_change was disabled
- Fixed swapper/bodysnatcher not being promoted when swapping roles with a promoted deputy/impersonator
- Fixed swapper/bodysnatcher not inheriting the revenger's lover when swapping roles with a revenger
- Fixed bodysnatcher not getting zombie/vampire prime status when a prime zombie/vampire swaps with them
- Fixed bodysnatcher not being promoted when they snatch the deputy/impersonator role and no detectives are left alive
- Fixed players who were moved to spectator for being AFK not showing as dead on the end-of-round summary screen
- Fixed killer/phantom smoke not always working when multiple players should be smoking at once
- Fixed monster team occurring more than it should due to calculating the number of players too late
- Added
plymeta:StripRoleWeapons
which removes all weapons with theWEAPON_CATEGORY_ROLE
from a player - Added
plymeta:MoveRoleState
which moves the role NW values from a player to a target - Added missing things to resource download list
- Changed TTTCanIdentifyCorpse hook "was_traitor" parameter to be true for any role on the traitor team rather than just the vanilla traitor
- Added ability for non-traitor roles to be configurably able to use traitor buttons
- Added ability for non-shop roles to be configurably able to see and loot credits
Released: July 11th, 2021
- Added new shop random position convar
- Added new convar to control how to handle weapons when a swapper is killed
- Changed the drunk so they lose karma for hurting/killing people before they sober up
- Fixed ttt_*_shop_mode convars
- Fixed "Kill" icon showing over jester players' heads when the client knows they are a Jester
- Fixed swapper not getting zombie/vampire prime status when a prime zombie/vampire swaps with them
Released: July 11th, 2021
- Added starting and max health convars to all roles
- Changed convars to use 'ttt_ROLENAME_*' formatting wherever possible
- NOTE: Old convars still work at this stage but may be removed later. Please update to the new convars now to avoid problems later
Released: July 11th, 2021
- Added ttt_clown_hide_when_active which hides the clown from player Target IDs when they are active
- Added ttt_clown_show_target_icon to show the KILL icon over targets when the clown is active
- Added convars for more zombie configurability
- Respawn health (defaults to 100)
- Prime Attack Damage (defaults to 65)
- Prime Attack Delay (defaults to 0.7)
- Prime Speed Bonus (defaults to 0.35)
- Thrall Attack Damage (defaults to 45)
- Thrall Attack Delay (defaults to 1.7)
- Thrall Speed Bonus (defaults to 0.15)
- Changed shop to not show "loadout" equipment items that you already own because you can't buy them and might not have known you were given them for free
- Changed killer's knife to not conflict with shop weapons
- Changed phantom smoke to be disabled by default
- Changed head icons to be based on player model size and scale so they have their icon in the right place
- Updated role sync documentation to hopefully make it clearer how it all works
- Fixed some client ConVars not saving
- Fixed equipment exclusion system accidentally excluding ALL equipment for a role
- Fixed target ID showing when a player is hidden using the prop disguiser
- Fixed improper team highlighting for zombie/vampire after they switched teams
- Fixed parasite cure being buyable when parasite is not enabled
- Fixed karma percentage on scoreboard not matching damage factor when max karma was greater than 1000
- Fixed potential errors by adding more nil protection in the vampire fangs
- Added
plymeta:CanUseShop
method which checksIsShopRole
and NWBools - Added TTTSprintStaminaPost hook which can be used to overwrite player stamina
- Added resource download commands to avoid missing textures
Released: June 30th, 2021
- Added an option to disable headshots
Released: June 30th, 2021
- Initial release with all classic roles