aboutsummaryrefslogtreecommitdiff
path: root/gamemode/shared/npcsystem/dummy.lua
blob: 869dd0e042051b0833043c818c26cbfa301f202e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
local NPC = {}
NPC.Name 			= "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

function NPC:OnDammage(ammount)
    print("A dummy was hit for",ammount:GetDamage(),"!")
end

--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.
/*
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
*/

ART.RegisterNPC(NPC)