diff options
| author | Alexander Pickering <Alexander.Pickering@anondomain.site90.net> | 2016-03-28 22:02:52 -0400 |
|---|---|---|
| committer | Alexander Pickering <Alexander.Pickering@anondomain.site90.net> | 2016-03-28 22:02:52 -0400 |
| commit | c6d81a837ba5bb46246ca6703f539e69a18b8216 (patch) | |
| tree | 510bb8d0b15165dbf1737f9a860d19d7750734f2 /gamemode/npcsystem | |
| parent | fe897eaf8d8be4cfdc4e2c4e90ed5c775de0c291 (diff) | |
| download | wintersurvival2-c6d81a837ba5bb46246ca6703f539e69a18b8216.tar.gz wintersurvival2-c6d81a837ba5bb46246ca6703f539e69a18b8216.tar.bz2 wintersurvival2-c6d81a837ba5bb46246ca6703f539e69a18b8216.zip | |
More debugging to find what's glitching ai's
Diffstat (limited to 'gamemode/npcsystem')
| -rw-r--r-- | gamemode/npcsystem/bosses/base.lua | 83 | ||||
| -rw-r--r-- | gamemode/npcsystem/bosses/ent.lua | 0 | ||||
| -rw-r--r-- | gamemode/npcsystem/bosses/treeling.lua | 0 | ||||
| -rw-r--r-- | gamemode/npcsystem/npcs/antlion1.lua | 4 | ||||
| -rw-r--r-- | gamemode/npcsystem/npcs/antlion2.lua | 4 | ||||
| -rw-r--r-- | gamemode/npcsystem/npcs/zombie.lua | 4 | ||||
| -rw-r--r-- | gamemode/npcsystem/spawnbosses.lua | 42 |
7 files changed, 131 insertions, 6 deletions
diff --git a/gamemode/npcsystem/bosses/base.lua b/gamemode/npcsystem/bosses/base.lua new file mode 100644 index 0000000..27f68d6 --- /dev/null +++ b/gamemode/npcsystem/bosses/base.lua @@ -0,0 +1,83 @@ +NPC.Name = "Winter Survival 2 Base NPC" +NPC.Desc = "Why the hell did I write this? No one will read it anyways!!" +NPC.Class = "Other" --Ambient, Agressive, Boss +NPC.Model = "models/props_combine/breenlight.mdl" +NPC.Icon = Material("wintersurvival2/hud/ws1_icons/icon_rock") + +NPC.Social = "Pack" --Solo, Pack + +NPC.Stats = { + ["Vitality"] = 1, + ["Speed"] = 1, + ["AwareDist"] = 1, + ["Accel"] = 1, + ["Decel"] = 1, + ["Step"] = 1, --Step height + ["Hull"] = HULL_HUMAN +} + +--Some npc's like birds have diffent names for their idle sequence +NPC.IdleSequences = { + [0] = "Idle", +} + +--Drops should be formated as [index]={["item name"], percent_drop} where percent_drop is a number from 0 to 100 +NPC.Drops = nil + +--Attacks should be formated as [i]={function attackpriority() = function doattack()} +NPC.Attacks = nil + +--Attack priority is a fucntion that takes a player, and returns an int describing it's prority to attack (higher = more important) NPC will always attack the player with the highest priority +function NPC:AttackPriority(ply) + local dist = ply:GetPos():Distance(self:GetPos()) + return self.Stats["AwareDist"] - dist +end + +--A function that takes a position and returns true if this is an acceptable place to spawn +function NPC:SpawnLocations(pos) + return true +end + +--The entity that is this npc's current target, if it has one +NPC.Target = nil + +--All enemies that this NPC is aware of +NPC.AwareEnemies = nil + +--These are just here to tell the editors/develoeprs what functions are available.. dont un-comment them out, as this could affect all the items. +/* +--What to replace the ENT:BehaveAct with +function NPC:Act() +end + +--What to replace RunBehaviour with +function NPC:Behaviour() +end + +--what to replace BehaveUpdate with +function NPC:BehaveCycle(number seconds_since_last_update) +end + +--Called when the npc is spawned +function NPC:OnSpawn() +end + +--If we need to do more than just reduce health on dammage +function NPC:OnDammage(ammount) +end + +--If we need to do more than just drop items on death +function NPC:OnDeath() +end + +--A particular spell was cast on this npc by player +function NPC:OnSpell(spell, player) +end + +function NPC:OnFindEnemy(enemy) +end + +--Called when the npc is attacking anything with any attack +function NPC:OnAttack(target) +end +*/ diff --git a/gamemode/npcsystem/bosses/ent.lua b/gamemode/npcsystem/bosses/ent.lua new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/gamemode/npcsystem/bosses/ent.lua diff --git a/gamemode/npcsystem/bosses/treeling.lua b/gamemode/npcsystem/bosses/treeling.lua new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/gamemode/npcsystem/bosses/treeling.lua diff --git a/gamemode/npcsystem/npcs/antlion1.lua b/gamemode/npcsystem/npcs/antlion1.lua index 3e90e19..259f108 100644 --- a/gamemode/npcsystem/npcs/antlion1.lua +++ b/gamemode/npcsystem/npcs/antlion1.lua @@ -36,10 +36,10 @@ NPC.IdleSequences = { --Attacks should be formated as [i]={function (return int dammage) canattack(ply) = function doattack(ply)} --NPC will do the most dammage possible per attack local checkmele = function(self, ply) - if not self then + if self == nil then print("In antlion1, checkmele called with null self") end - if not ply then + if ply == nil then print("In antlion1, checkmele called with null ply") end if(ply:GetPos():Distance(self:GetPos()) < 100) then return 20 end diff --git a/gamemode/npcsystem/npcs/antlion2.lua b/gamemode/npcsystem/npcs/antlion2.lua index 28154cc..6c16c72 100644 --- a/gamemode/npcsystem/npcs/antlion2.lua +++ b/gamemode/npcsystem/npcs/antlion2.lua @@ -36,10 +36,10 @@ NPC.IdleSequences = { --Attacks should be formated as [i]={function (return int dammage) canattack(ply) = function doattack(ply)} --NPC will do the most dammage possible per attack local checkmele = function(self, ply) - if not self then + if self == nil then print("In antlion2, checkmele called with null self") end - if not ply then + if ply == nil then print("In antlion2, checkmele called with null ply") end if(ply:GetPos():Distance(self:GetPos()) < 100) then return 20 end diff --git a/gamemode/npcsystem/npcs/zombie.lua b/gamemode/npcsystem/npcs/zombie.lua index e62b833..1075e9d 100644 --- a/gamemode/npcsystem/npcs/zombie.lua +++ b/gamemode/npcsystem/npcs/zombie.lua @@ -37,10 +37,10 @@ NPC.IdleSequences = { --Attacks should be formated as [i]={function (return int dammage) canattack(ply) = function doattack(ply)}
--NPC will do the most dammage possible per attack
local checkmele = function(self, ply)
- if not self then
+ if self == nil then
print("In zombie, checkmele called with null self")
end
- if not ply then
+ if ply == nil then
print("In zombie, checkmele called with null ply")
end
if(ply:GetPos():Distance(self:GetPos()) < 100) then return 20 end
diff --git a/gamemode/npcsystem/spawnbosses.lua b/gamemode/npcsystem/spawnbosses.lua new file mode 100644 index 0000000..bcd29ac --- /dev/null +++ b/gamemode/npcsystem/spawnbosses.lua @@ -0,0 +1,42 @@ +--Spawn bosses I guess? +local Folder = GM.Folder:gsub("gamemodes/","").."/gamemode/npcsystem/bosses" +local insert = table.insert + +function GM:LoadNPCS() + print("NPC's loaded") + local Items = file.Find(Folder.."/*.lua","LUA") + local BaseItem = {} + + GAMEMODE.Npcs = {} + + NPC = {} + + AddCSLuaFile(Folder.."/base.lua") + include(Folder.."/base.lua") + + BaseItem = table.Copy(NPC) + + for k,v in pairs(Items) do + if (v != "base.lua") then + AddCSLuaFile(Folder.."/"..v) + include(Folder.."/"..v) + + insert(GAMEMODE.Npcs,NPC) + + NPC = table.Copy(BaseItem) + + end + end +end + +hook.Add("Initialize","Loadnpcs",function() + GAMEMODE:LoadNPCS() +end) + +function GetNpcByName(name) + for k,v in pairs( GAMEMODE.Npcs ) do + if (v.Name == name) then return v end + end + + return nil +end |
