Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
23 changes: 23 additions & 0 deletions RELEASE.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,28 @@
# Release Notes

## 2.3.6 (Beta)
**Released:**

### Additions
- Added completed task count to Taskmaster on the round summary screen
- Added radio sounds for Clown activate, Jester celebrate, Loot Goblin cackle, Old Man ramble, Vampire fade, and Zombie leap

### Changes
- Changed Taskmaster's "Stay Hidden" task to be a bit less lenient
- Updated Phantom tutorial to show the maximum number of respawns they have, if that setting is enabled
- Ported "TTT: Reduce Healing sound repetition count in Radio"
- Ported "TTT: Do not stack round start popups"
- There is no change in functionality, we just adjusted our implementation of this feature to match the base
- Ported "TTT: make Radio buttons a bit wider"

### Fixes
- Fixed spectators counting against the Taskmaster in the "Stay Hidden" task
- Fixed the Taskmaster's "Kill a Player After a 360" task
- Ported "TTT: Fixed font warnings (no visual changes)"

### Developer
- Added ability to use parameters when defining custom radio sound names

## 2.3.5 (Beta)
**Released: September 5th, 2025**

Expand Down
2 changes: 1 addition & 1 deletion gamemodes/terrortown/entities/entities/ttt_c4/cl_init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ end
vgui.Register("DisarmPanel", PANEL, "DPanel")

surface.CreateFont("C4Timer", {
font = "TabLarge",
font = "Tahoma",
size = 30,
weight = 750
})
Expand Down
2 changes: 1 addition & 1 deletion gamemodes/terrortown/entities/entities/ttt_c4/shared.lua
Original file line number Diff line number Diff line change
Expand Up @@ -605,7 +605,7 @@ end

if CLIENT then
surface.CreateFont("C4ModelTimer", {
font = "Default",
font = "Tahoma",
size = 13,
weight = 0,
antialias = false
Expand Down
2 changes: 1 addition & 1 deletion gamemodes/terrortown/gamemode/cl_help.lua
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ local GetPTranslation = LANG.GetParamTranslation
local HookCall = hook.Call

surface.CreateFont("TutorialTitle", {
font = "Trebuchet MS",
font = "Tahoma",
size = 30,
weight = 900 })

Expand Down
12 changes: 6 additions & 6 deletions gamemodes/terrortown/gamemode/cl_hud.lua
Original file line number Diff line number Diff line change
Expand Up @@ -26,32 +26,32 @@ local hide_role = GetConVar("ttt_hide_role")

-- Fonts
surface.CreateFont("TraitorState", {
font = "Trebuchet24",
font = "Tahoma",
size = 28,
weight = 1000
})
surface.CreateFont("TraitorStateSmall", {
font = "Trebuchet24",
font = "Tahoma",
size = 24,
weight = 1000
})
surface.CreateFont("TimeLeft", {
font = "Trebuchet24",
font = "Tahoma",
size = 24,
weight = 800
})
surface.CreateFont("HealthAmmo", {
font = "Trebuchet24",
font = "Tahoma",
size = 24,
weight = 750
})
surface.CreateFont("UseHintCaption", {
font = "Trebuchet24",
font = "Tahoma",
size = 24,
weight = 750
})
surface.CreateFont("UseHint", {
font = "Trebuchet24",
font = "Tahoma",
size = 18,
weight = 750
})
Expand Down
2 changes: 1 addition & 1 deletion gamemodes/terrortown/gamemode/cl_init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ surface.CreateFont("TabLarge", {
weight = 700,
shadow = true, antialias = false })
surface.CreateFont("Trebuchet22", {
font = "Trebuchet MS",
font = "Tahoma",
size = 22,
weight = 900 })

Expand Down
37 changes: 15 additions & 22 deletions gamemodes/terrortown/gamemode/cl_popups.lua
Original file line number Diff line number Diff line change
Expand Up @@ -139,40 +139,29 @@ local function GetTextForLocalPlayer()
end
end

local popupframe = nil
local function RoundStartPopupClose()
if IsValid(popupframe) then
popupframe:Remove()
popupframe = nil
end
end

local startshowtime = CreateConVar("ttt_startpopup_duration", "17", FCVAR_ARCHIVE)
local roundStartFrame = nil
-- shows info about goal and fellow traitors (if any)
local function RoundStartPopup()
-- based on Derma_Message

-- close last round's if it's still there
RoundStartPopupClose()
timer.Remove("roundstartpopupclose")

if startshowtime:GetInt() <= 0 then return end

if not LocalPlayer() then return end

popupframe = vgui.Create("Panel")
popupframe:SetDrawOnTop(true)
popupframe:SetMouseInputEnabled(false)
popupframe:SetKeyboardInputEnabled(false)
local dframe = vgui.Create("Panel")
dframe:SetDrawOnTop(true)
dframe:SetMouseInputEnabled(false)
dframe:SetKeyboardInputEnabled(false)

local color = Color(0, 0, 0, 200)
popupframe.Paint = function(s)
dframe.Paint = function(s)
draw.RoundedBox(8, 0, 0, s:GetWide(), s:GetTall(), color)
end

local text = GetTextForLocalPlayer()

local dtext = vgui.Create("DLabel", popupframe)
local dtext = vgui.Create("DLabel", dframe)
dtext:SetFont("TabLarge")
dtext:SetText(text)
dtext:SizeToContents()
Expand All @@ -184,12 +173,16 @@ local function RoundStartPopup()

dtext:SetPos(m, m)

popupframe:SetSize(w + m * 2, h + m * 2)
popupframe:Center()
dframe:SetSize(w + m * 2, h + m * 2)
dframe:Center()

dframe:AlignBottom(10)

popupframe:AlignBottom(10)
-- Do not stack the messages when ttt_roundrestart is used
if IsValid(roundStartFrame) then roundStartFrame:Remove() end
roundStartFrame = dframe

timer.Create("roundstartpopupclose", startshowtime:GetInt(), 1, RoundStartPopupClose)
timer.Simple(startshowtime:GetInt(), function() if IsValid(dframe) then dframe:Remove() end end)
end
concommand.Add("ttt_cl_startpopup", RoundStartPopup)

Expand Down
13 changes: 11 additions & 2 deletions gamemodes/terrortown/gamemode/cl_radio.lua
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ local math = math
local vgui = vgui

local GetTranslation = LANG.GetTranslation
local GetPTranslation = LANG.GetParamTranslation
local TryTranslation = LANG.TryTranslation

TRADIO.SoundOrder = {
Expand All @@ -25,7 +26,7 @@ local function ButtonClickPlay(s) PlayRadioSound(s.snd) end
local columns = 4
local rows = 5

local bh, bw = 50, 100
local bh, bw = 50, 120
local m = 5

local function CreateSoundBoard(parent)
Expand All @@ -47,7 +48,15 @@ local function CreateSoundBoard(parent)
for ri, snd in ipairs(sorder) do
local but = grid:Add("DButton")
but:SetSize(bw, bh)
but:SetText(TryTranslation(TRADIO.Sounds[snd].name))

local name = TRADIO.Sounds[snd].name
local name_params = TRADIO.Sounds[snd].name_params
local translated = TryTranslation(name)
if name_params and name ~= translated then
translated = GetPTranslation(name, name_params)
end
but:SetText(translated)

but.snd = snd
but.DoClick = ButtonClickPlay
end
Expand Down
14 changes: 7 additions & 7 deletions gamemodes/terrortown/gamemode/cl_scoring.lua
Original file line number Diff line number Diff line change
Expand Up @@ -38,53 +38,53 @@ include("scoring_shd.lua")
local skull_icon = Material("HUD/killicons/default")

surface.CreateFont("WinHuge", {
font = "Trebuchet24",
font = "Tahoma",
size = 72,
weight = 1000,
shadow = true,
extended = true
})

surface.CreateFont("WinLarge", {
font = "Trebuchet24",
font = "Tahoma",
size = 48,
weight = 1000,
shadow = true,
extended = true
})

surface.CreateFont("WinMedium", {
font = "Trebuchet24",
font = "Tahoma",
size = 40,
weight = 1000,
shadow = true,
extended = true
})

surface.CreateFont("WinSmall", {
font = "Trebuchet24",
font = "Tahoma",
size = 32,
weight = 1000,
shadow = true,
extended = true
})

surface.CreateFont("WinTiny", {
font = "Trebuchet24",
font = "Tahoma",
size = 24,
weight = 1000,
shadow = true,
extended = true
})

surface.CreateFont("ScoreNicks", {
font = "Trebuchet24",
font = "Tahoma",
size = 32,
weight = 100
})

surface.CreateFont("IconText", {
font = "Trebuchet24",
font = "Tahoma",
size = 24,
weight = 100
})
Expand Down
2 changes: 1 addition & 1 deletion gamemodes/terrortown/gamemode/cl_targetid.lua
Original file line number Diff line number Diff line change
Expand Up @@ -388,7 +388,7 @@ end

---- Crosshair affairs

surface.CreateFont("TargetIDSmall2", { font = "TargetID",
surface.CreateFont("TargetIDSmall2", { font = "Tahoma",
size = 16,
weight = 1000 })

Expand Down
17 changes: 9 additions & 8 deletions gamemodes/terrortown/gamemode/radio_shd.lua
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ TRADIO = TRADIO or {}
-- or how the sound is played on the server:
--
-- name: The name of the sound shown in the T menu. Can be localized.
-- name_params: The parameters to use when localizing the name, if any.
-- sound: The sound to be played, or a table of sounds to pick from randomly.
-- serial: If true, play through the sound table in sequential order instead of randomly.
-- times: The number of times to repeat the sound. If set to a table, randomizes the number of times within the range {min, max}.
Expand Down Expand Up @@ -65,7 +66,7 @@ TRADIO.Sounds = {
name = "radio_button_heal",
sound = Sound("items/medshot4.wav"),
delay = 2,
times = {4, 8}
times = {3, 5}
},

-- Serial Sounds
Expand Down Expand Up @@ -104,53 +105,53 @@ TRADIO.Sounds = {
-- Gun Sounds
shotgun = {
name = "radio_button_shotgun",
sound = Sound( "Weapon_XM1014.Single" ),
sound = Sound("Weapon_XM1014.Single"),
delay = {0.8, 1.6},
times = {1, 3},
ampl = 90
},

pistol = {
name = "radio_button_pistol",
sound = Sound( "Weapon_FiveSeven.Single" ),
sound = Sound("Weapon_FiveSeven.Single"),
delay = {0.4, 0.8},
times = {2, 4},
ampl = 90
},

mac10 = {
name = "radio_button_mac10",
sound = Sound( "Weapon_mac10.Single" ),
sound = Sound("Weapon_mac10.Single"),
delay = 0.065,
times = {5, 10},
ampl = 90
},

deagle = {
name = "radio_button_deagle",
sound = Sound( "Weapon_Deagle.Single" ),
sound = Sound("Weapon_Deagle.Single"),
delay = {0.6, 1.2},
times = {1, 3},
ampl = 90
},

m16 = {
name = "radio_button_m16",
sound = Sound( "Weapon_M4A1.Single" ),
sound = Sound("Weapon_M4A1.Single"),
delay = 0.2,
times = {1, 5},
ampl = 90
},

rifle = {
name = "radio_button_rifle",
sound = Sound( "weapons/scout/scout_fire-1.wav" ),
sound = Sound("weapons/scout/scout_fire-1.wav"),
ampl = 80
},

huge = {
name = "radio_button_huge",
sound = Sound( "Weapon_m249.Single" ),
sound = Sound("Weapon_m249.Single"),
delay = 0.055,
times = {6, 12},
ampl = 90
Expand Down
3 changes: 3 additions & 0 deletions gamemodes/terrortown/gamemode/roles/clown/cl_clown.lua
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ hook.Add("Initialize", "Clown_Translations_Initialize", function()
LANG.AddToLanguage("english", "win_clown", "The {role} has murdered you all!")
LANG.AddToLanguage("english", "ev_win_clown", "The vicious {role} won the round!")

-- Radio
LANG.AddToLanguage("english", "radio_clo_activate", "{clown} Activate")

-- Cheat Sheet
LANG.AddToLanguage("english", "cheatsheet_desc_clown", "Pretends to be a Jester until someone is about to win, then they become an independent and must kill everyone else to win.")

Expand Down
14 changes: 13 additions & 1 deletion gamemodes/terrortown/gamemode/roles/clown/shared.lua
Original file line number Diff line number Diff line change
Expand Up @@ -100,4 +100,16 @@ ROLE_SHOULD_ACT_LIKE_JESTER[ROLE_CLOWN] = function(ply)
if ply:IsJesterTeam() or ply:IsRoleAbilityDisabled() then
return true
end
end
end

-- Initialize role features
hook.Add("TTTPrepareRound", "Clown_Shared_TTTPrepareRound", function()
-- Add radio sounds
if not TRADIO.Sounds.cloactivate and util.CanRoleSpawn(ROLE_CLOWN) then
TRADIO.AddNewSound("cloactivate", {
name = "radio_clo_activate",
name_params = { clown = ROLE_STRINGS[ROLE_CLOWN] },
sound = "clown.wav"
})
end
end)
3 changes: 3 additions & 0 deletions gamemodes/terrortown/gamemode/roles/jester/cl_jester.lua
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ hook.Add("Initialize", "Jester_Translations_Initialize", function()
-- Scoring
LANG.AddToLanguage("english", "score_jester_killedby", "Killed by")

-- Radio
LANG.AddToLanguage("english", "radio_jes_celebrate", "{jester} Celebrate")

-- Cheat Sheet
LANG.AddToLanguage("english", "cheatsheet_desc_jester", "Wins the round if they can get another player to kill them.")

Expand Down
Loading
Loading