From f1e99d19a5aa6e5fa61518366235e3da09689d0b Mon Sep 17 00:00:00 2001 From: Alexander Pickering Date: Sat, 2 Jan 2016 22:10:06 -0500 Subject: Ai overhual now working --- gamemode/npcsystem/npcs/base.lua | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'gamemode/npcsystem/npcs/base.lua') diff --git a/gamemode/npcsystem/npcs/base.lua b/gamemode/npcsystem/npcs/base.lua index 7afb4fe..670c476 100644 --- a/gamemode/npcsystem/npcs/base.lua +++ b/gamemode/npcsystem/npcs/base.lua @@ -6,14 +6,24 @@ NPC.Icon = Material("wintersurvival2/hud/ws1_icons/icon_rock") NPC.Social = "Pack" --Solo, Pack -NPC.Vitality = 0 -NPC.Speed = 0 +NPC.Stats = { + ["Vitality"] = 100, + ["Speed"] = 50, + ["AwareDist"] = 1000, +} + +--Some npc's like birds have diffent names for their idle sequence +NPC.IdleSequence = "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 should be formated as [i] = func tion(return int priority) attackpriority +NPC.AttackPriority = nil + --A function that takes a position and returns true if this is an acceptable place to spawn NPC.SpawnLocations = nil -- cgit v1.2.3-70-g09d2 From f11d53ab5eca356b2eadb0e75b7c1ae94870e033 Mon Sep 17 00:00:00 2001 From: Alexander Pickering Date: Sat, 2 Jan 2016 22:31:14 -0500 Subject: Fixed mixup between bird and zombie drops --- gamemode/npcsystem/npcs/base.lua | 10 +++++++--- gamemode/npcsystem/npcs/bird.lua | 21 +++++++++++---------- gamemode/npcsystem/npcs/zombie.lua | 10 +++++++--- 3 files changed, 25 insertions(+), 16 deletions(-) (limited to 'gamemode/npcsystem/npcs/base.lua') diff --git a/gamemode/npcsystem/npcs/base.lua b/gamemode/npcsystem/npcs/base.lua index 670c476..0e8ea53 100644 --- a/gamemode/npcsystem/npcs/base.lua +++ b/gamemode/npcsystem/npcs/base.lua @@ -7,9 +7,13 @@ NPC.Icon = Material("wintersurvival2/hud/ws1_icons/icon_rock") NPC.Social = "Pack" --Solo, Pack NPC.Stats = { - ["Vitality"] = 100, - ["Speed"] = 50, - ["AwareDist"] = 1000, + ["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 diff --git a/gamemode/npcsystem/npcs/bird.lua b/gamemode/npcsystem/npcs/bird.lua index 463b8bd..14eef6a 100644 --- a/gamemode/npcsystem/npcs/bird.lua +++ b/gamemode/npcsystem/npcs/bird.lua @@ -7,9 +7,13 @@ NPC.Icon = Material("wintersurvival2/hud/ws1_icons/icon_rock") NPC.Social = "Pack" --Solo, Pack NPC.Stats = { - ["Vitality"] = 10, - ["Speed"] = 50, - ["AwareDist"] = 800, + ["Vitality"] = 100, + ["Speed"] = 400, + ["AwareDist"] = 1000, + ["Accel"] = 200, + ["Decel"] = 200, + ["Step"] = 20, --Step height + ["Hull"] = HULL_TINY } --Some npc's like birds have diffent names for their idle sequences @@ -19,14 +23,11 @@ NPC.IdleSequences = { } --Drops should be formated as [index]={["item name"], percent_drop} where percent_drop is a number from 0 to 100 + NPC.Drops = { - [0] = {"Meat",100}, - [1] = {"Meat",100}, - [2] = {"Meat",100}, - [3] = {"Meat",100}, - [4] = {"Meat",80}, - [5] = {"Meat",40}, - [6] = {"Meat",10}, + [0] = {"Meat",100},--Birds will drop at least 1 meat, and have a 50% chance of dropping 2 + [1] = {"Meat",50}, + [2] = {"Feather",50}, } --Attacks should be formated as [i]={function attackpriority() = function doattack()} diff --git a/gamemode/npcsystem/npcs/zombie.lua b/gamemode/npcsystem/npcs/zombie.lua index a725a04..f07bd5a 100644 --- a/gamemode/npcsystem/npcs/zombie.lua +++ b/gamemode/npcsystem/npcs/zombie.lua @@ -18,9 +18,13 @@ NPC.Stats = { --Drops should be formated as [index]={["item name"], percent_drop} where percent_drop is a number from 0 to 100 NPC.Drops = { - [0] = {"Meat",100},--Birds will drop at least 1 meat, and have a 50% chance of dropping 2 - [1] = {"Meat",50}, - [2] = {"Feather",50}, + [0] = {"Meat",100}, + [1] = {"Meat",100}, + [2] = {"Meat",100}, + [3] = {"Meat",100}, + [4] = {"Meat",80}, + [5] = {"Meat",40}, + [6] = {"Meat",10}, } --Some npc's like birds have diffent names for their idle sequences -- cgit v1.2.3-70-g09d2 From 958ccc93f9339a232cc761f0842a85d14e2865b8 Mon Sep 17 00:00:00 2001 From: Alexander Pickering Date: Sat, 2 Jan 2016 22:35:29 -0500 Subject: Added more documentation on ai overhaul --- gamemode/npcsystem/npcs/base.lua | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'gamemode/npcsystem/npcs/base.lua') diff --git a/gamemode/npcsystem/npcs/base.lua b/gamemode/npcsystem/npcs/base.lua index 0e8ea53..880e4a5 100644 --- a/gamemode/npcsystem/npcs/base.lua +++ b/gamemode/npcsystem/npcs/base.lua @@ -17,7 +17,9 @@ NPC.Stats = { } --Some npc's like birds have diffent names for their idle sequence -NPC.IdleSequence = "Idle" +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 @@ -25,11 +27,16 @@ NPC.Drops = nil --Attacks should be formated as [i]={function attackpriority() = function doattack()} NPC.Attacks = nil ---Attack priority should be formated as [i] = func tion(return int priority) attackpriority -NPC.AttackPriority = 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 -NPC.SpawnLocations = nil +function NPC:SpawnLocations(pos) + return true +end --The entity that is this npc's current target, if it has one NPC.Target = nil -- cgit v1.2.3-70-g09d2