]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/common/items/item/ammo.qh
Item Pickup panel
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / items / item / ammo.qh
1 #pragma once
2
3 #include "pickup.qh"
4 #include <common/items/all.qh>
5 #include <common/resources/resources.qh>
6 #ifdef SVQC
7     #include <common/resources/sv_resources.qh>
8     #include <server/items/items.qh>
9 #endif
10
11 #ifdef GAMEQC
12 .int spawnflags;
13 #endif
14
15 #ifdef SVQC
16 PROPERTY(float, g_pickup_ammo_anyway);
17 #endif
18
19 CLASS(Ammo, Pickup)
20 #ifdef SVQC
21     ATTRIB(Ammo, m_pickupevalfunc, float(entity player, entity item), ammo_pickupevalfunc);
22     ATTRIB(Ammo, m_respawntime, float(), GET(g_pickup_respawntime_ammo));
23     ATTRIB(Ammo, m_respawntimejitter, float(), GET(g_pickup_respawntimejitter_ammo));
24     ATTRIB(Ammo, m_pickupanyway, float(), GET(g_pickup_ammo_anyway));
25 #endif
26 ENDCLASS(Ammo)
27
28
29 // NOTE: ammo resource registration order should match ammo (as item) registration order
30 // see REGISTER_RESOURCE calls order
31
32 // ammo type #1: shells
33 #ifdef GAMEQC
34 MODEL(Shells_ITEM, Item_Model("a_shells.md3"));
35 #endif
36
37 #ifdef SVQC
38 PROPERTY(int, g_pickup_shells);
39 void ammo_shells_init(Pickup this, entity item)
40 {
41     if(!GetResource(item, RES_SHELLS))
42         SetResourceExplicit(item, RES_SHELLS, g_pickup_shells);
43 }
44 #endif
45
46 CLASS(Shells, Ammo)
47 ENDCLASS(Shells)
48
49 REGISTER_ITEM(Shells, Shells) {
50     this.m_canonical_spawnfunc = "item_shells";
51 #ifdef GAMEQC
52     this.spawnflags = ITEM_FLAG_NORMAL | ITEM_FLAG_RESOURCE;
53     this.m_model    = MDL_Shells_ITEM;
54 #endif
55     this.netname    = "shells";
56     this.m_name     = _("Shells");
57     this.m_icon     = "ammo_shells";
58 #ifdef SVQC
59     this.m_botvalue = 1000;
60     this.m_itemid   = IT_RESOURCE;
61     this.m_iteminit = ammo_shells_init;
62 #endif
63 }
64
65 SPAWNFUNC_ITEM(item_shells, ITEM_Shells)
66
67
68 // ammo type #2: bullets
69 #ifdef GAMEQC
70 MODEL(Bullets_ITEM, Item_Model("a_bullets.mdl"));
71 #endif
72
73 #ifdef SVQC
74 PROPERTY(int, g_pickup_nails);
75 void ammo_bullets_init(Pickup this, entity item)
76 {
77     if(!GetResource(item, RES_BULLETS))
78         SetResourceExplicit(item, RES_BULLETS, g_pickup_nails);
79 }
80 #endif
81
82 CLASS(Bullets, Ammo)
83 ENDCLASS(Bullets)
84
85 REGISTER_ITEM(Bullets, Bullets) {
86     this.m_canonical_spawnfunc = "item_bullets";
87 #ifdef GAMEQC
88     this.spawnflags = ITEM_FLAG_NORMAL | ITEM_FLAG_RESOURCE;
89     this.m_model    = MDL_Bullets_ITEM;
90 #endif
91     this.netname    = "bullets";
92     this.m_name     = _("Bullets");
93     this.m_icon     = "ammo_bullets";
94 #ifdef SVQC
95     this.m_botvalue = 1500;
96     this.m_itemid   = IT_RESOURCE;
97     this.m_iteminit = ammo_bullets_init;
98 #endif
99 }
100
101 SPAWNFUNC_ITEM(item_bullets, ITEM_Bullets)
102
103
104 // ammo type #3: rockets
105 #ifdef GAMEQC
106 MODEL(Rockets_ITEM, Item_Model("a_rockets.md3"));
107 #endif
108
109 #ifdef SVQC
110 PROPERTY(int, g_pickup_rockets);
111 void ammo_rockets_init(Pickup this, entity item)
112 {
113     if(!GetResource(item, RES_ROCKETS))
114         SetResourceExplicit(item, RES_ROCKETS, g_pickup_rockets);
115 }
116 #endif
117 REGISTER_ITEM(Rockets, Ammo) {
118     this.m_canonical_spawnfunc = "item_rockets";
119 #ifdef GAMEQC
120     this.spawnflags = ITEM_FLAG_NORMAL | ITEM_FLAG_RESOURCE;
121     this.m_model    = MDL_Rockets_ITEM;
122 #endif
123     this.netname    = "rockets";
124     this.m_name     = _("Rockets");
125     this.m_icon     = "ammo_rockets";
126 #ifdef SVQC
127     this.m_botvalue = 1500;
128     this.m_itemid   = IT_RESOURCE;
129     this.m_iteminit = ammo_rockets_init;
130 #endif
131 }
132
133 SPAWNFUNC_ITEM(item_rockets, ITEM_Rockets)
134
135
136 // ammo type #4: cells
137 #ifdef GAMEQC
138 MODEL(Cells_ITEM, Item_Model("a_cells.md3"));
139 #endif
140
141 #ifdef SVQC
142 PROPERTY(int, g_pickup_cells);
143 void ammo_cells_init(Pickup this, entity item)
144 {
145     if(!GetResource(item, RES_CELLS))
146         SetResourceExplicit(item, RES_CELLS, g_pickup_cells);
147 }
148 #endif
149 REGISTER_ITEM(Cells, Ammo) {
150     this.m_canonical_spawnfunc = "item_cells";
151 #ifdef GAMEQC
152     this.spawnflags = ITEM_FLAG_NORMAL | ITEM_FLAG_RESOURCE;
153     this.m_model    = MDL_Cells_ITEM;
154 #endif
155     this.netname    = "cells";
156     this.m_name     = _("Cells");
157     this.m_icon     = "ammo_cells";
158 #ifdef SVQC
159     this.m_botvalue = 1500;
160     this.m_itemid   = IT_RESOURCE;
161     this.m_iteminit = ammo_cells_init;
162 #endif
163 }
164
165 SPAWNFUNC_ITEM(item_cells, ITEM_Cells)
166
167
168 // ammo type #5: plasma
169 #ifdef GAMEQC
170 MODEL(Plasma_ITEM, Item_Model("a_cells.md3"));
171 #endif
172
173 #ifdef SVQC
174 PROPERTY(int, g_pickup_plasma);
175 void ammo_plasma_init(Pickup this, entity item)
176 {
177     if(!GetResource(item, RES_PLASMA))
178         SetResourceExplicit(item, RES_PLASMA, g_pickup_plasma);
179 }
180 #endif
181 REGISTER_ITEM(Plasma, Ammo) {
182     this.m_canonical_spawnfunc = "item_plasma";
183 #ifdef GAMEQC
184     this.spawnflags = ITEM_FLAG_NORMAL | ITEM_FLAG_RESOURCE;
185     this.m_model    = MDL_Plasma_ITEM;
186 #endif
187     this.netname    = "plasma";
188     this.m_name     = _("Plasma");
189     this.m_icon     = "ammo_plasma";
190 #ifdef SVQC
191     this.m_botvalue = 1500;
192     this.m_itemid   = IT_RESOURCE;
193     this.m_iteminit = ammo_plasma_init;
194 #endif
195 }
196
197 SPAWNFUNC_ITEM(item_plasma, ITEM_Plasma)