e9da54c2f9
Too many changes to list.
468 lines
15 KiB
Lua
468 lines
15 KiB
Lua
local surface_PlaySound = surface.PlaySound
|
|
|
|
local DamageFloaters = CreateClientConVar("zs_damagefloaters", "1", true, false):GetBool()
|
|
cvars.AddChangeCallback("zs_damagefloaters", function(cvar, oldvalue, newvalue)
|
|
DamageFloaters = newvalue ~= "0"
|
|
end)
|
|
|
|
local M_Player = FindMetaTable("Player")
|
|
local P_Team = M_Player.Team
|
|
|
|
local function AltSelItemUpd()
|
|
local activeweapon = MySelf:GetActiveWeapon()
|
|
if not activeweapon or not activeweapon:IsValid() then return end
|
|
|
|
local actwclass = activeweapon:GetClass()
|
|
GAMEMODE.HumanMenuPanel.SelectedItemLabel:SetText(weapons.Get(actwclass).PrintName)
|
|
end
|
|
|
|
net.Receive("zs_legdamage", function(length)
|
|
MySelf.LegDamage = net.ReadFloat()
|
|
end)
|
|
|
|
net.Receive("zs_armdamage", function(length)
|
|
MySelf.ArmDamage = net.ReadFloat()
|
|
end)
|
|
|
|
net.Receive("zs_nextboss", function(length)
|
|
GAMEMODE.NextBossZombie = net.ReadEntity()
|
|
GAMEMODE.NextBossZombieClass = GAMEMODE.ZombieClasses[net.ReadUInt(8)].Name
|
|
end)
|
|
|
|
net.Receive("zs_zvols", function(length)
|
|
local volunteers = {}
|
|
local count = net.ReadUInt(8)
|
|
for i=1, count do
|
|
volunteers[i] = net.ReadEntity()
|
|
end
|
|
|
|
GAMEMODE.ZombieVolunteers = volunteers
|
|
end)
|
|
|
|
net.Receive("zs_dmg", function(length)
|
|
local damage = net.ReadUInt(16)
|
|
local pos = net.ReadVector()
|
|
|
|
if DamageFloaters then
|
|
local effectdata = EffectData()
|
|
effectdata:SetOrigin(pos)
|
|
effectdata:SetMagnitude(damage)
|
|
effectdata:SetScale(0)
|
|
util.Effect("damagenumber", effectdata)
|
|
end
|
|
end)
|
|
|
|
net.Receive("zs_dmg_prop", function(length)
|
|
local damage = net.ReadUInt(16)
|
|
local pos = net.ReadVector()
|
|
|
|
if DamageFloaters then
|
|
local effectdata = EffectData()
|
|
effectdata:SetOrigin(pos)
|
|
effectdata:SetMagnitude(damage)
|
|
effectdata:SetScale(1)
|
|
util.Effect("damagenumber", effectdata)
|
|
end
|
|
end)
|
|
|
|
net.Receive("zs_lifestats", function(length)
|
|
local barricadedamage = net.ReadUInt(16)
|
|
local humandamage = net.ReadUInt(16)
|
|
local brainseaten = net.ReadUInt(8)
|
|
|
|
GAMEMODE.LifeStatsEndTime = CurTime() + GAMEMODE.LifeStatsLifeTime
|
|
|
|
GAMEMODE.LifeStatsBarricadeDamage = barricadedamage
|
|
GAMEMODE.LifeStatsHumanDamage = humandamage
|
|
GAMEMODE.LifeStatsBrainsEaten = brainseaten
|
|
end)
|
|
|
|
net.Receive("zs_lifestatsbd", function(length)
|
|
local barricadedamage = net.ReadUInt(16)
|
|
|
|
GAMEMODE.LifeStatsEndTime = CurTime() + GAMEMODE.LifeStatsLifeTime
|
|
|
|
GAMEMODE.LifeStatsBarricadeDamage = barricadedamage
|
|
end)
|
|
|
|
net.Receive("zs_lifestatshd", function(length)
|
|
local humandamage = net.ReadUInt(16)
|
|
|
|
GAMEMODE.LifeStatsEndTime = CurTime() + GAMEMODE.LifeStatsLifeTime
|
|
|
|
GAMEMODE.LifeStatsHumanDamage = humandamage
|
|
end)
|
|
|
|
net.Receive("zs_lifestatsbe", function(length)
|
|
local brainseaten = net.ReadUInt(8)
|
|
|
|
GAMEMODE.LifeStatsEndTime = CurTime() + GAMEMODE.LifeStatsLifeTime
|
|
|
|
GAMEMODE.LifeStatsBrainsEaten = brainseaten
|
|
end)
|
|
|
|
net.Receive("zs_honmention", function(length)
|
|
local pl = net.ReadEntity()
|
|
local mentionid = net.ReadUInt(8)
|
|
local etc = net.ReadInt(32)
|
|
|
|
if pl:IsValid() then
|
|
gamemode.Call("AddHonorableMention", pl, mentionid, etc)
|
|
end
|
|
end)
|
|
|
|
net.Receive("zs_wavestart", function(length)
|
|
local wave = net.ReadInt(16)
|
|
local time = net.ReadFloat()
|
|
|
|
gamemode.Call("SetWave", wave)
|
|
gamemode.Call("SetWaveEnd", time)
|
|
|
|
if GAMEMODE.ZombieEscape then
|
|
GAMEMODE:CenterNotify(COLOR_RED, {font = "ZSHUDFont"}, translate.Get("escape_from_the_zombies"))
|
|
elseif wave == GAMEMODE:GetNumberOfWaves() then
|
|
GAMEMODE:CenterNotify({killicon = "default"}, {font = "ZSHUDFont"}, " ", COLOR_RED, translate.Get("final_wave"), {killicon = "default"})
|
|
GAMEMODE:CenterNotify(translate.Get("final_wave_sub"))
|
|
else
|
|
GAMEMODE:CenterNotify({killicon = "default"}, {font = "ZSHUDFont"}, " ", COLOR_RED, translate.Format("wave_x_has_begun", wave), {killicon = "default"})
|
|
|
|
if wave == 1 and GAMEMODE:GetUseSigils() then
|
|
GAMEMODE:CenterNotify(translate.Format("x_sigils_appeared", GAMEMODE.MaxSigils))
|
|
end
|
|
end
|
|
|
|
surface_PlaySound("ambient/creatures/town_zombie_call1.wav")
|
|
end)
|
|
|
|
net.Receive("zs_classunlock", function(length)
|
|
GAMEMODE:CenterNotify(COLOR_GREEN, translate.Format("x_unlocked", net.ReadString()))
|
|
end)
|
|
|
|
net.Receive("zs_waveend", function(length)
|
|
local wave = net.ReadInt(16)
|
|
local time = net.ReadFloat()
|
|
|
|
gamemode.Call("SetWaveStart", time)
|
|
|
|
if wave < GAMEMODE:GetNumberOfWaves() and wave > 0 then
|
|
GAMEMODE:CenterNotify(COLOR_RED, {font = "ZSHUDFont"}, translate.Format("wave_x_is_over", wave))
|
|
GAMEMODE:CenterNotify(translate.Get("wave_x_is_over_sub"))
|
|
|
|
if MySelf:IsValid() and P_Team(MySelf) == TEAM_HUMAN then
|
|
if MySelf:GetZSSPRemaining() > 0 then
|
|
GAMEMODE:CenterNotify(translate.Format("unspent_skill_points_press_x", input.LookupBinding("gm_showspare1") or "F3"))
|
|
end
|
|
|
|
if GAMEMODE.EndWavePointsBonus > 0 then
|
|
local pointsbonus = GAMEMODE.EndWavePointsBonus + (GAMEMODE:GetWave() - 1) * GAMEMODE.EndWavePointsBonusPerWave + (MySelf.EndWavePointsExtra or 0)
|
|
|
|
if not MySelf.Scourer then
|
|
GAMEMODE:CenterNotify(COLOR_CYAN, translate.Format("points_for_surviving", pointsbonus))
|
|
else
|
|
GAMEMODE:CenterNotify(COLOR_ORANGE, translate.Format("scrap_for_surviving", pointsbonus))
|
|
end
|
|
end
|
|
end
|
|
|
|
surface_PlaySound("ambient/atmosphere/cave_hit"..math.random(6)..".wav")
|
|
end
|
|
end)
|
|
|
|
net.Receive("zs_gamestate", function(length)
|
|
local wave = net.ReadInt(16)
|
|
local wavestart = net.ReadFloat()
|
|
local waveend = net.ReadFloat()
|
|
|
|
gamemode.Call("SetWave", wave)
|
|
gamemode.Call("SetWaveStart", wavestart)
|
|
gamemode.Call("SetWaveEnd", waveend)
|
|
end)
|
|
|
|
net.Receive("zs_boss_spawned", function(length)
|
|
local ent = net.ReadEntity()
|
|
local classindex = net.ReadUInt(8)
|
|
local classtbl = GAMEMODE.ZombieClasses[classindex]
|
|
local ki = {killicon = classtbl.SWEP}
|
|
local kid = {killicon = "default"}
|
|
|
|
if ent == MySelf and ent:IsValid() then
|
|
GAMEMODE:CenterNotify(ki, " ", COLOR_RED, translate.Format("you_are_x", translate.Get(classtbl.TranslationName)), ki)
|
|
elseif ent:IsValid() and P_Team(MySelf) == TEAM_UNDEAD then
|
|
GAMEMODE:CenterNotify(ki, " ", COLOR_RED, translate.Format("x_has_risen_as_y", ent:Name(), translate.Get(classtbl.TranslationName)), ki)
|
|
else
|
|
GAMEMODE:CenterNotify(kid, " ", COLOR_RED, translate.Get("x_has_risen"), kid)
|
|
end
|
|
|
|
if MySelf:IsValid() then
|
|
MySelf:EmitSound(string.format("npc/zombie_poison/pz_alert%d.wav", math.random(1, 2)), 0, math.random(95, 105))
|
|
end
|
|
end)
|
|
net.Receive("zs_boss_slain", function(length)
|
|
local ent = net.ReadEntity()
|
|
local classindex = net.ReadUInt(8)
|
|
local classtbl = GAMEMODE.ZombieClasses[classindex]
|
|
local ki = {killicon = classtbl.SWEP}
|
|
|
|
if ent:IsValid() then
|
|
GAMEMODE:CenterNotify(ki, " ", COLOR_YELLOW, translate.Format("x_has_been_slain_as_y", ent:Name(), translate.Get(classtbl.TranslationName)), ki)
|
|
end
|
|
|
|
if MySelf:IsValid() then
|
|
MySelf:EmitSound("ambient/atmosphere/cave_hit4.wav", 0, 150)
|
|
end
|
|
end)
|
|
|
|
net.Receive("zs_classunlockstate", function(length)
|
|
local clstr = net.ReadInt(8)
|
|
local class = GAMEMODE.ZombieClasses[clstr]
|
|
local unlocked = net.ReadBool()
|
|
|
|
class.Locked = not unlocked
|
|
class.Unlocked = unlocked
|
|
end)
|
|
|
|
net.Receive("zs_centernotify", function(length)
|
|
local tab = net.ReadTable()
|
|
|
|
GAMEMODE:CenterNotify(unpack(tab))
|
|
end)
|
|
|
|
net.Receive("zs_topnotify", function(length)
|
|
local tab = net.ReadTable()
|
|
|
|
GAMEMODE:TopNotify(unpack(tab))
|
|
end)
|
|
|
|
net.Receive("zs_survivor", function(length)
|
|
local ent = net.ReadEntity()
|
|
|
|
if ent:IsValidPlayer() then
|
|
GAMEMODE:TopNotify(ent, " ", translate.Get("has_survived"))
|
|
|
|
if ent == MySelf then
|
|
util.WhiteOut(3)
|
|
end
|
|
end
|
|
end)
|
|
|
|
net.Receive("zs_lasthuman", function(length)
|
|
local pl = net.ReadEntity()
|
|
|
|
gamemode.Call("LastHuman", pl)
|
|
end)
|
|
|
|
net.Receive("zs_gamemodecall", function(length)
|
|
gamemode.Call(net.ReadString())
|
|
end)
|
|
|
|
net.Receive("zs_lasthumanpos", function(length)
|
|
GAMEMODE.LastHumanPosition = net.ReadVector()
|
|
end)
|
|
|
|
net.Receive("zs_endround", function(length)
|
|
local winner = net.ReadUInt(8)
|
|
local nextmap = net.ReadString()
|
|
|
|
gamemode.Call("EndRound", winner, nextmap)
|
|
end)
|
|
|
|
net.Receive("zs_healother", function(length)
|
|
if net.ReadBool() then
|
|
gamemode.Call("HealedOtherPlayer", net.ReadEntity(), net.ReadFloat())
|
|
else
|
|
GAMEMODE:CenterNotify({killicon = "weapon_zs_medicalkit"}, " ", COLOR_GREEN, translate.Format("healed_x_for_y", net.ReadEntity():Name(), net.ReadFloat()))
|
|
end
|
|
end)
|
|
|
|
net.Receive("zs_repairobject", function(length)
|
|
gamemode.Call("RepairedObject", net.ReadEntity(), net.ReadFloat())
|
|
end)
|
|
|
|
net.Receive("zs_commission", function(length)
|
|
gamemode.Call("ReceivedCommission", net.ReadEntity(), net.ReadEntity(), net.ReadFloat())
|
|
end)
|
|
|
|
net.Receive("zs_sigilcorrupted", function(length)
|
|
local corrupted = net.ReadUInt(8)
|
|
|
|
LastSigilCorrupted = CurTime()
|
|
|
|
if MySelf:IsValid() then
|
|
local maxsigils = GAMEMODE:NumSigils()
|
|
local winddown = CreateSound(MySelf, "ambient/levels/labs/teleport_winddown1.wav")
|
|
winddown:PlayEx(1, 120)
|
|
|
|
timer.Simple(1.25, function()
|
|
MySelf:EmitSound("ambient/levels/labs/machine_stop1.wav", 75, 80)
|
|
MySelf:EmitSound("ambient/atmosphere/hole_hit5.wav", 75, 70)
|
|
end)
|
|
|
|
timer.Simple(1.5, function()
|
|
winddown:Stop()
|
|
MySelf:EmitSound("zombiesurvival/eyeflash.ogg", 75, 100)
|
|
end)
|
|
|
|
if corrupted == maxsigils then
|
|
GAMEMODE:CenterNotify({killicon = "default"}, {font = "ZSHUDFontSmall"}, COLOR_RED, translate.Get("sigil_corrupted_last"), {killicon = "default"})
|
|
else
|
|
GAMEMODE:CenterNotify(COLOR_RED, {font = "ZSHUDFontSmall"}, translate.Get("sigil_corrupted"))
|
|
--GAMEMODE:CenterNotify(COLOR_RED, translate.Format("sigil_corrupted_x_remain", maxsigils - corrupted))
|
|
end
|
|
end
|
|
end)
|
|
|
|
net.Receive("zs_sigiluncorrupted", function(length)
|
|
--local corrupted = net.ReadUInt(8)
|
|
|
|
LastSigilUncorrupted = CurTime()
|
|
|
|
if MySelf:IsValid() then
|
|
MySelf:EmitSound("ambient/levels/labs/teleport_preblast_suckin1.wav", 75, 180)
|
|
|
|
timer.Simple(1.25, function()
|
|
MySelf:EmitSound("ambient/machines/teleport1.wav", 75, 60, 0.3)
|
|
end)
|
|
GAMEMODE:CenterNotify(COLOR_GREEN, {font = "ZSHUDFontSmall"}, translate.Get("sigil_uncorrupted"))
|
|
end
|
|
end)
|
|
|
|
net.Receive("zs_ammopickup", function(length)
|
|
local amount = net.ReadUInt(16)
|
|
local ammotype = net.ReadString()
|
|
local ico = GAMEMODE.AmmoIcons[ammotype] or "weapon_zs_resupplybox"
|
|
|
|
ammotype = GAMEMODE.AmmoNames[ammotype] or ammotype
|
|
|
|
GAMEMODE:CenterNotify({killicon = ico}, " ", COLOR_GREEN, translate.Format("obtained_x_y_ammo", amount, ammotype))
|
|
end)
|
|
|
|
net.Receive("zs_ammogive", function(length)
|
|
local amount = net.ReadUInt(16)
|
|
local ammotype = net.ReadString()
|
|
local ent = net.ReadEntity()
|
|
|
|
if not ent:IsValidPlayer() then return end
|
|
local ico = GAMEMODE.AmmoIcons[ammotype] or "weapon_zs_resupplybox"
|
|
|
|
ammotype = GAMEMODE.AmmoNames[ammotype] or ammotype
|
|
|
|
GAMEMODE:CenterNotify({killicon = ico}, " ", COLOR_GREEN, translate.Format("gave_x_y_ammo_to_z", amount, ammotype, ent:Name()))
|
|
end)
|
|
|
|
net.Receive("zs_ammogiven", function(length)
|
|
local amount = net.ReadUInt(16)
|
|
local ammotype = net.ReadString()
|
|
local ent = net.ReadEntity()
|
|
|
|
if not ent:IsValidPlayer() then return end
|
|
local ico = GAMEMODE.AmmoIcons[ammotype] or "weapon_zs_resupplybox"
|
|
|
|
ammotype = GAMEMODE.AmmoNames[ammotype] or ammotype
|
|
|
|
GAMEMODE:CenterNotify({killicon = ico}, " ", COLOR_GREEN, translate.Format("obtained_x_y_ammo_from_z", amount, ammotype, ent:Name()))
|
|
end)
|
|
|
|
net.Receive("zs_deployablelost", function(length)
|
|
local deploy = net.ReadString()
|
|
local class = net.ReadString()
|
|
|
|
GAMEMODE:CenterNotify({killicon = class}, " ", COLOR_RED, translate.Format("deployable_lost", deploy))
|
|
end)
|
|
|
|
net.Receive("zs_deployableclaim", function(length)
|
|
local deploy = net.ReadString()
|
|
local class = net.ReadString()
|
|
|
|
GAMEMODE:CenterNotify({killicon = class}, " ", COLOR_LBLUE, translate.Format("deployable_claimed", deploy))
|
|
end)
|
|
|
|
net.Receive("zs_deployableout", function(length)
|
|
local deploy = net.ReadString()
|
|
local class = net.ReadString()
|
|
|
|
GAMEMODE:CenterNotify({killicon = class}, " ", COLOR_RED, translate.Format("ran_out_of_ammo", deploy))
|
|
end)
|
|
|
|
net.Receive("zs_trinketrecharged", function(length)
|
|
local trinket = net.ReadString()
|
|
MySelf:EmitSound("buttons/button3.wav", 75, 50)
|
|
|
|
GAMEMODE:CenterNotify({killicon = "weapon_zs_trinket"}, " ", COLOR_RORANGE, translate.Format("trinket_recharged", trinket))
|
|
end)
|
|
|
|
net.Receive("zs_trinketconsumed", function(length)
|
|
local trinket = net.ReadString()
|
|
MySelf:EmitSound("buttons/button3.wav", 75, 50)
|
|
|
|
GAMEMODE:CenterNotify({killicon = "weapon_zs_trinket"}, " ", COLOR_RORANGE, translate.Format("trinket_consumed", trinket))
|
|
end)
|
|
|
|
net.Receive("zs_invitem", function(length)
|
|
local invitemt = net.ReadString()
|
|
local inviname = GAMEMODE.ZSInventoryItemData[invitemt].PrintName
|
|
local category = GAMEMODE:GetInventoryItemType(invitemt)
|
|
|
|
surface.PlaySound("items/ammo_pickup.wav")
|
|
GAMEMODE:CenterNotify({killicon = category == INVCAT_TRINKETS and "weapon_zs_trinket" or "weapon_zs_craftables"}, " ", COLOR_RORANGE, translate.Format("obtained_a_inv", inviname))
|
|
end)
|
|
|
|
net.Receive("zs_invgiven", function(length)
|
|
local invitemt = net.ReadString()
|
|
local inviname = GAMEMODE.ZSInventoryItemData[invitemt].PrintName
|
|
local category = GAMEMODE:GetInventoryItemType(invitemt)
|
|
local ent = net.ReadEntity()
|
|
|
|
if not ent:IsValidPlayer() then return end
|
|
|
|
GAMEMODE:CenterNotify({killicon = category == INVCAT_TRINKETS and "weapon_zs_trinket" or "weapon_zs_craftables"}, " ", COLOR_RORANGE, translate.Format("obtained_inv_item_from_z", inviname, ent:Name()))
|
|
end)
|
|
|
|
net.Receive("zs_healby", function(length)
|
|
local amount = net.ReadFloat()
|
|
local ent = net.ReadEntity()
|
|
|
|
if not ent:IsValidPlayer() then return end
|
|
|
|
GAMEMODE:CenterNotify({killicon = "weapon_zs_medicalkit"}, " ", COLOR_GREEN, translate.Format("healed_x_by_y", ent:Name(), amount))
|
|
end)
|
|
|
|
net.Receive("zs_buffby", function(length)
|
|
local ent = net.ReadEntity()
|
|
local buff = net.ReadString()
|
|
|
|
if not ent:IsValidPlayer() then return end
|
|
|
|
GAMEMODE:CenterNotify({killicon = "weapon_zs_medicgun"}, " ", COLOR_GREEN, translate.Format("buffed_x_with_y", ent:Name(), buff))
|
|
end)
|
|
|
|
net.Receive("zs_buffwith", function(length)
|
|
local ent = net.ReadEntity()
|
|
local buff = net.ReadString()
|
|
|
|
if not ent:IsValidPlayer() then return end
|
|
|
|
GAMEMODE:CenterNotify({killicon = "weapon_zs_medicgun"}, " ", COLOR_GREEN, translate.Format("buffed_x_with_a_y", ent:Name(), buff))
|
|
end)
|
|
|
|
net.Receive("zs_nailremoved", function(length)
|
|
local ent = net.ReadEntity()
|
|
if not ent:IsValidPlayer() then return end
|
|
|
|
GAMEMODE:CenterNotify({killicon = "weapon_zs_hammer"}, " ", COLOR_RED, translate.Format("removed_your_nail", ent:Name()))
|
|
end)
|
|
|
|
net.Receive("zs_currentround", function(length)
|
|
GAMEMODE.CurrentRound = net.ReadUInt(6)
|
|
end)
|
|
|
|
net.Receive("zs_updatealtselwep", function(length)
|
|
if MySelf:Alive() and P_Team(MySelf) == TEAM_HUMAN and GAMEMODE.HumanMenuPanel and GAMEMODE.HumanMenuPanel:IsValid() and not GAMEMODE.InventoryMenu.SelInv then
|
|
timer.Simple(0.25, AltSelItemUpd)
|
|
end
|
|
end)
|
|
|
|
net.Receive("zs_nestbuilt", function(length)
|
|
if GAMEMODE.ZSpawnMenu and GAMEMODE.ZSpawnMenu:IsValid() then
|
|
GAMEMODE.ZSpawnMenu:RefreshContents()
|
|
end
|
|
end)
|