231 lines
6.2 KiB
Lua
231 lines
6.2 KiB
Lua
-- Shared, server-authoritative progression configuration.
|
|
-- Prices and rewards are only acted upon by sv_progression.lua. Clients receive
|
|
-- this file so the shop can render the same catalogue without duplicating it.
|
|
|
|
CustomCoopProgression = CustomCoopProgression or {}
|
|
local Progression = CustomCoopProgression
|
|
|
|
Progression.KillReward = 1
|
|
Progression.DeathCreditCost = 5
|
|
Progression.DefaultModelID = "kleiner"
|
|
Progression.DefaultWeaponID = "none"
|
|
|
|
Progression.Ranks = {
|
|
{ score = 0, name = "Newbie" },
|
|
{ score = 10, name = "Survivor" },
|
|
{ score = 50, name = "Hunter" },
|
|
{ score = 150, name = "Slayer" },
|
|
{ score = 500, name = "Veteran" },
|
|
{ score = 1500, name = "Exterminator" },
|
|
{ score = 5000, name = "Legend" }
|
|
}
|
|
|
|
Progression.Models = {
|
|
{
|
|
id = "kleiner",
|
|
name = "Dr. Kleiner",
|
|
model = "models/player/kleiner.mdl",
|
|
price = 0,
|
|
description = "The free default model."
|
|
},
|
|
{
|
|
id = "male_citizen",
|
|
name = "Male Citizen",
|
|
model = "models/player/group01/male_07.mdl",
|
|
price = 5,
|
|
description = "A survivor from City 17."
|
|
},
|
|
{
|
|
id = "female_citizen",
|
|
name = "Female Citizen",
|
|
model = "models/player/group01/female_04.mdl",
|
|
price = 5,
|
|
description = "A survivor from City 17."
|
|
},
|
|
{
|
|
id = "barney",
|
|
name = "Barney Calhoun",
|
|
model = "models/player/barney.mdl",
|
|
price = 10,
|
|
description = "Civil Protection's least loyal officer."
|
|
},
|
|
{
|
|
id = "alyx",
|
|
name = "Alyx Vance",
|
|
model = "models/player/alyx.mdl",
|
|
price = 15,
|
|
description = "Resistance fighter and engineer."
|
|
},
|
|
{
|
|
id = "monk",
|
|
name = "Father Grigori",
|
|
model = "models/player/monk.mdl",
|
|
price = 25,
|
|
description = "A familiar face from Ravenholm."
|
|
},
|
|
{
|
|
id = "combine",
|
|
name = "Combine Soldier",
|
|
model = "models/player/combine_soldier.mdl",
|
|
price = 50,
|
|
description = "Standard Combine infantry."
|
|
},
|
|
{
|
|
id = "combine_elite",
|
|
name = "Combine Elite",
|
|
model = "models/player/combine_super_soldier.mdl",
|
|
price = 100,
|
|
description = "An elite Overwatch soldier."
|
|
}
|
|
}
|
|
|
|
Progression.Weapons = {
|
|
{
|
|
id = "none",
|
|
name = "No Bonus Weapon",
|
|
weaponClass = "",
|
|
price = 0,
|
|
description = "Use only weapons supplied by the map."
|
|
},
|
|
{
|
|
id = "glock",
|
|
name = "Glock",
|
|
weaponClass = "coop_glock",
|
|
price = 15,
|
|
description = "A reliable permanent sidearm unlock."
|
|
},
|
|
{
|
|
id = "mp5",
|
|
name = "MP5",
|
|
weaponClass = "coop_mp5",
|
|
price = 40,
|
|
description = "A permanent compact SMG unlock."
|
|
},
|
|
{
|
|
id = "pumpshotgun",
|
|
name = "Pump Shotgun",
|
|
weaponClass = "coop_pumpshotgun",
|
|
price = 75,
|
|
description = "A permanent close-range weapon unlock."
|
|
},
|
|
{
|
|
id = "m4",
|
|
name = "M4",
|
|
weaponClass = "coop_m4",
|
|
price = 125,
|
|
description = "A permanent rifle unlock."
|
|
},
|
|
{
|
|
id = "nyan_gun",
|
|
name = "Nyan Gun",
|
|
weaponClass = "weapon_nyangun",
|
|
price = 1000,
|
|
description = "Rainbows, music and extremely colourful destruction."
|
|
},
|
|
{
|
|
id = "lightsaber",
|
|
name = "Lightsaber",
|
|
weaponClass = "weapon_lightsaber",
|
|
price = 1000,
|
|
description = "A permanent weapon from a galaxy far, far away."
|
|
},
|
|
{
|
|
id = "orbital_friendship_cannon",
|
|
name = "Orbital Friendship Cannon",
|
|
weaponClass = "orbital_friendship_cannon",
|
|
price = 5000,
|
|
description = "Deliver friendship from orbit."
|
|
},
|
|
{
|
|
id = "sexyness",
|
|
name = "Sexyness (2-bit)",
|
|
weaponClass = "pist_weagon",
|
|
price = 100000,
|
|
description = "The absurdly powerful Ultimate Admin Gun."
|
|
}
|
|
}
|
|
|
|
-- Only these combat NPC classes award points. Keeping an allow-list avoids
|
|
-- rewards for friendly citizens, scripted targets and manually invented entity
|
|
-- classes. Add a class here if a future coop map uses another real monster.
|
|
Progression.MonsterClasses = {
|
|
npc_advisor = true,
|
|
npc_antlion = true,
|
|
npc_antlionguard = true,
|
|
npc_antlion_worker = true,
|
|
npc_barnacle = true,
|
|
npc_clawscanner = true,
|
|
npc_combine_s = true,
|
|
npc_combinedropship = true,
|
|
npc_combinegunship = true,
|
|
npc_cscanner = true,
|
|
npc_fastzombie = true,
|
|
npc_fastzombie_torso = true,
|
|
npc_headcrab = true,
|
|
npc_headcrab_black = true,
|
|
npc_headcrab_fast = true,
|
|
npc_headcrab_poison = true,
|
|
npc_helicopter = true,
|
|
npc_hunter = true,
|
|
npc_manhack = true,
|
|
npc_metropolice = true,
|
|
npc_poisonzombie = true,
|
|
npc_rollermine = true,
|
|
npc_sniper = true,
|
|
npc_stalker = true,
|
|
npc_strider = true,
|
|
npc_turret_ceiling = true,
|
|
npc_turret_floor = true,
|
|
npc_turret_ground = true,
|
|
npc_vortigaunt = true,
|
|
npc_zombie = true,
|
|
npc_zombie_torso = true,
|
|
npc_zombine = true,
|
|
|
|
monster_alien_controller = true,
|
|
monster_alien_grunt = true,
|
|
monster_alien_slave = true,
|
|
monster_apache = true,
|
|
monster_barnacle = true,
|
|
monster_bigmomma = true,
|
|
monster_bullchicken = true,
|
|
monster_gargantua = true,
|
|
monster_headcrab = true,
|
|
monster_houndeye = true,
|
|
monster_human_assassin = true,
|
|
monster_human_grunt = true,
|
|
monster_ichthyosaur = true,
|
|
monster_leech = true,
|
|
monster_nihilanth = true,
|
|
monster_osprey = true,
|
|
monster_snark = true,
|
|
monster_tentacle = true,
|
|
monster_zombie = true
|
|
}
|
|
|
|
local function FindByID(items, id)
|
|
for _, item in ipairs(items) do
|
|
if item.id == id then return item end
|
|
end
|
|
end
|
|
|
|
function Progression.GetModel(id)
|
|
return FindByID(Progression.Models, id)
|
|
end
|
|
|
|
function Progression.GetWeapon(id)
|
|
return FindByID(Progression.Weapons, id)
|
|
end
|
|
|
|
function Progression.GetRank(score)
|
|
local result = Progression.Ranks[1].name
|
|
score = math.max(tonumber(score) or 0, 0)
|
|
|
|
for _, rank in ipairs(Progression.Ranks) do
|
|
if score < rank.score then break end
|
|
result = rank.name
|
|
end
|
|
|
|
return result
|
|
end
|