/
Item_Armor.cs
97 lines (79 loc) · 1.98 KB
/
Item_Armor.cs
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
datablock AudioProfile(QuakeArmorShardSound)
{
fileName = "./sounds/ar1_pkup.wav";
description = AudioDefault3d;
preload = 1;
};
datablock AudioProfile(QuakeArmorLightSound)
{
fileName = "./sounds/ar2_pkup.wav";
description = AudioDefault3d;
preload = 1;
};
datablock AudioProfile(QuakeArmorHeavySound)
{
fileName = "./sounds/ar3_pkup.wav";
description = AudioDefault3d;
preload = 1;
};
datablock ItemData(QuakeArmorShardItem)
{
shapeFile = "./shapes/q3_armorshard.dts";
uiName = "Armor Shard";
quakeLightColor = "greenGray";
emap = 1;
mass = 1;
density = 0.2;
elasticity = 0.2;
friction = 0.6;
doColorShift = 1;
colorShiftColor = "0.3 0.6 0.5 1";
armorAmount = 5;
armorRespawn = 15;
armorSound = QuakeArmorShardSound;
};
datablock ItemData(QuakeArmorLightItem : QuakeArmorShardItem)
{
uiName = "Armor Light";
shapeFile = "./shapes/q3_armorfull.dts";
colorShiftColor = "0.8 0.8 0.2 1";
quakeLightColor = "yellow";
armorAmount = 50;
armorRespawn = 60;
armorSound = QuakeArmorLightSound;
};
datablock ItemData(QuakeArmorHeavyItem : QuakeArmorShardItem)
{
uiName = "Armor Heavy";
shapeFile = "./shapes/q3_armorfull.dts";
colorShiftColor = "0.8 0.2 0.2 1";
quakeLightColor = "red";
armorAmount = 100;
armorRespawn = 60;
armorSound = QuakeArmorHeavySound;
};
function QuakeArmorShardItem::onPickup(%this, %item, %obj)
{
if (isEventPending(%item.respawn) || %obj.armor >= 200)
{
return;
}
if (isObject(%this.armorSound))
{
serverPlay3D(%this.armorSound, %obj.getHackPosition());
}
%transform = %item.getTransform();
%item.setTransform("0 0 -1000");
%item.respawn = %item.schedule(%this.armorRespawn * 1000, setTransform, %transform);
%item.fadeOut();
%item.schedule(%this.armorRespawn * 1000, fadeIn);
%obj.addArmor(%this.armorAmount);
}
function QuakeArmorLightItem::onPickup(%this, %item, %obj)
{
QuakeArmorShardItem::onPickup(%this, %item, %obj);
}
function QuakeArmorHeavyItem::onPickup(%this, %item, %obj)
{
QuakeArmorShardItem::onPickup(%this, %item, %obj);
}