3 Commits

Author SHA1 Message Date
32966fac0e for now 2025-08-09 19:13:16 +07:00
6333f2390b hybrid 2025-08-04 21:07:13 +07:00
a3cd160929 Hotfix: didn't work on workhop 2025-08-04 20:28:56 +07:00
2 changed files with 60 additions and 12 deletions

View File

@@ -16,8 +16,12 @@ If you want your enemies to be more human, this mod will change all hostile NPC
- Change the behavior of custom models NPCs from combine to citizen
- Allows hostile to attack with melee weapons
---
I'll make VJ version if i can
---
models used:
- Lenna https://steamcommunity.com/sharedfiles/filedetails/?id=3167885628
- Tomoko https://steamcommunity.com/sharedfiles/filedetails/?id=3133369749
Note: i couldn't find a mod similar to the one i made, so i don't know who made it first.

View File

@@ -1,17 +1,61 @@
local npcs = list.Get("NPC")
local citizenEnemy = npcs["npc_citizen_rebel_enemy"]
local originalListSet = list.Set
if citizenEnemy then
for class, npc in pairs(npcs) do
function list.Set(listType, class, npc)
if listType == "NPC" then
if npc["Class"] == "npc_combine_s" and npc["Category"] ~= "#spawnmenu.category.combine" then
npc["Class"] = citizenEnemy["Class"]
npc["KeyValues"] = {
Hostile = 1,
SquadName = "overwatch",
citizentype = 4
}
if !npc["KeyValues"] then
npc["KeyValues"] = {}
end
npc["KeyValues"]["SquadName"] = "m_EnemyRebel"
end
end
originalListSet(listType, class, npc)
end
list.Set("NPC", class, npc)
hook.Add("OnEntityCreated", "ForceReplaceCombine", function(ent)
timer.Simple(0, function()
if !SERVER then return end
if not IsValid(ent) then return end
if ent:GetClass() == "npc_citizen" then
end
if ent:GetKeyValues()["squadname"] == "m_EnemyRebel" then
local pos = ent:GetPos()
local ang = ent:GetAngles()
local mdl = ent:GetModel()
local weps = ent:GetWeapons()
local health = ent:GetMaxHealth()
local keyValues = ent:GetKeyValues()
ent:Remove()
local npc = ents.Create("npc_citizen")
if not IsValid(npc) then return end
for key, value in pairs(keyValues) do
npc:SetKeyValue(key, tostring(value))
-- if value ~= "" then
-- end
end
npc:SetHealth(health)
npc:SetMaxHealth(health)
npc:SetKeyValue("hostile", 1)
npc:SetKeyValue("squadname", "overwatch")
npc:SetKeyValue("citizentype", 4)
for _, wep in ipairs(weps) do
npc:Give(wep:GetClass())
end
npc:SetPos(pos)
npc:SetAngles(ang)
npc:SetModel(mdl)
npc:Spawn()
end
end)
end)