aboutsummaryrefslogtreecommitdiff
path: root/gamemode/init.lua
blob: 1515aaca0c222271613c8e0c71b282af46f981ae (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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
AddCSLuaFile( "cl_init.lua" )
AddCSLuaFile( "shared.lua" )

include( "shared.lua" )

hook.Remove("Initialize","LoadGearFox")

local models = {
	"models/player/Group03/female_01.mdl",
	"models/player/Group03/female_02.mdl",
	"models/player/Group03/female_03.mdl",
	"models/player/Group03/female_04.mdl",
	"models/player/Group03/male_01.mdl",
	"models/player/Group03/male_02.mdl",
	"models/player/Group03/male_03.mdl",
	"models/player/Group03/male_04.mdl",
	"models/player/Group03/male_05.mdl",
	"models/player/Group03/male_06.mdl",
	"models/player/Group03/male_07.mdl",
	"models/player/Group03/male_08.mdl",
	"models/player/Group03/male_09.mdl",
}

function GM:Initialize()
	resource.AddDir("sound/wintersurvival2")
	resource.AddDir("materials/wintersurvival2")
	resource.AddDir("materials/settlement")
	resource.AddDir("materials/mixerman3d")
	resource.AddDir("materials/lam")

	resource.AddDir("models/mixerman3d")

	resource.AddDir("materials/gearfox")
	resource.AddDir("materials/mawbase")
	resource.AddDir("models/gearfox")
	resource.AddDir("sound/mawbase")

	resource.AddDir("particles")

	resource.AddFile("models/weapons/w_archersword/w_archersword.mdl")
	resource.AddFile("materials/models/weapons/archersword.vmt")
end

function GM:PlayerAuthed(pl)
	pl:UpdateHumans()
	pl:UpdatePigeons()
	pl:UpdateRoundTimer()
end

function GM:PlayerInitialSpawn(pl)
	if (!self.CountDown and #player.GetAll() > 1) then self:StartCountDown() end
	pl:SetHuman(false)
end

function GM:PlayerSpawn(pl)
	pl:SetHeat(0)
	pl:SetHunger(0)
	pl:SetFatigue(0)
	pl:SetWater(0)

	if (pl:IsPigeon()) then
		pl:SetNoDraw(true)
		pl:SetNotSolid(true)
		pl:SetMoveType(MOVETYPE_NONE)

		pl:SpawnPigeon()
	else
		--hook.Call("PlayerSetModel",self,pl)

		pl:SetModel(Model(models[math.random(#models)]))
		pl:Give("hands")
		pl:SelectWeapon("hands")
	end
end

function GM:PlayerCanHearPlayersVoice()
	return true
end

function GM:Think()
end

local Up = Vector(0,0,20)

function GM:DoPlayerDeath( pl, attacker, dmginfo )
	if (!pl:IsPigeon()) then
		if (#player.GetAllHumans() > 1) then
			local a = ents.Create("ws_grave")
			a:SetPos(pl:GetPos()+Up)
			a:SetAngles(Angle(0,math.random(0,360),0))
			a:Spawn()
			a:Activate()
			a:AddItem("Meat",math.random(8,10))

			for k,v in pairs(pl:GetInventory()) do
				a:AddItem(v.Name,v.Quantity)
			end
		end

		pl:CreateRagdoll()
		pl:SetHuman(false)
		--pl:ResetKnownRecipes()
	end

end

function GM:PlayerDeathSound()
	return true
end

function GM:PlayerShouldTakeDamage( pl, inf )
	if (inf:IsPlayer() and pl:IsPlayer() and !pl:IsPigeon()) then
		if (self.CountDown > CurTime()-MAIN_PVPTIMER) then
			return false
		end
	end

	return true
end