aboutsummaryrefslogtreecommitdiff
path: root/gamemode/npcsystem/bosses/base.lua
blob: 27f68d641866a71721078ba18f5edaa397dcef22 (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
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
*/