local n = nrequire("sh_npcsystem.lua") local NPC = {} NPC.Name = "Blocking Training Dummy" NPC.Desc = "A man made of straw. His dream is to have a brain." NPC.Class = "Ambient" --Ambient, Agressive, Boss NPC.Model = "models/headcrab.mdl" NPC.Stats = { ["Vitality"] = 100000, ["Speed"] = 400, ["AwareDist"] = 1000, ["Accel"] = 100, ["Decel"] = 200, ["Step"] = 20, --Step height ["Hull"] = HULL_TINY } --Some npc's like birds have diffent names for their idle sequences NPC.IdleSequences = { [0] = "lookaround", [1] = "Idle01", } --Drops should be formated as [index]={["item name"], percent_drop} where percent_drop is a number from 0 to 100 NPC.Drops = { } --Attacks should be formated as [i]={function attackpriority() = function doattack()} local checknothing = function(self,ply) return -1 end local donothing = function(self,ply) end NPC.Attacks = { [1] = {--run away from the player [checknothing] = donothing }, } --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. Nil otherwise NPC.Target = nil --All enemies that this NPC is aware of NPC.AwareEnemies = {} --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) if not ply then return 0 end return 1 end --What to replace the ENT:RunBehaviour with function NPC:Act(deltat) end --What to replace ENT:OnStuck with function NPC:Stuck() end local blockorder = { "forward", "right", "backward", "left" } local cursor = 0 function NPC:OnDammage(ammount) self.Blocking = blockorder[cursor + 1] cursor = (cursor + 1) % 4 print("A dummy was hit for",ammount:GetDamage(),"!") print("Blocking is now",self.Blocking) end --These are just here to tell the editors/develoeprs what functions are available. /* 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 */ n.RegisterNPC(NPC) --ART.RegisterNPC(NPC)