]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/common/mutators/mutator/instagib/items.qh
Reorganise item code so that VM-specific code is in its correct directories and not...
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / mutators / mutator / instagib / items.qh
1 #pragma once
2
3 #include <common/items/_mod.qh>
4 #include <common/items/item/ammo.qh>
5 #include <common/items/item/powerup.qh>
6
7 float instagib_respawntime_ammo = 45;
8 float instagib_respawntimejitter_ammo = 0;
9 GETTER(float, instagib_respawntime_ammo)
10 GETTER(float, instagib_respawntimejitter_ammo)
11
12 #ifdef GAMEQC
13 MODEL(VaporizerCells_ITEM, Item_Model("a_cells.md3"));
14 SOUND(VaporizerCells, Item_Sound("itempickup"));
15 #endif
16
17 #ifdef SVQC
18 int autocvar_g_instagib_ammo_drop;
19 void ammo_vaporizercells_init(Pickup this, entity item)
20 {
21     if(!GetResource(item, RES_CELLS))
22         SetResourceExplicit(item, RES_CELLS, autocvar_g_instagib_ammo_drop);
23 }
24 #endif
25 REGISTER_ITEM(VaporizerCells, Ammo) {
26     this.m_canonical_spawnfunc = "item_vaporizer_cells";
27 #ifdef GAMEQC
28     this.spawnflags = ITEM_FLAG_MUTATORBLOCKED;
29     this.m_model                =   MDL_VaporizerCells_ITEM;
30     this.m_sound                =   SND_VaporizerCells;
31 #endif
32     this.netname                =   "vaporizer_cells";
33     this.m_name                 =   _("Vaporizer ammo");
34     this.m_icon                 =   "ammo_supercells";
35 #ifdef SVQC
36     this.m_botvalue             =   2000;
37     this.m_itemid               =   IT_RESOURCE;
38     this.m_respawntime          =   GET(instagib_respawntime_ammo);
39     this.m_respawntimejitter    =   GET(instagib_respawntimejitter_ammo);
40     this.m_iteminit             =   ammo_vaporizercells_init;
41 #endif
42 }
43
44 SPAWNFUNC_ITEM(item_vaporizer_cells, ITEM_VaporizerCells)
45 SPAWNFUNC_ITEM(item_minst_cells, ITEM_VaporizerCells)
46
47 #ifdef GAMEQC
48 MODEL(ExtraLife_ITEM, Item_Model("g_h100.md3"));
49 SOUND(ExtraLife, Item_Sound("megahealth"));
50 #endif
51
52 REGISTER_ITEM(ExtraLife, Powerup) {
53     this.m_canonical_spawnfunc = "item_extralife";
54 #ifdef GAMEQC
55         this.m_model                =   MDL_ExtraLife_ITEM;
56     this.m_sound                =   SND_ExtraLife;
57 #endif
58     this.netname                =   "extralife";
59     this.m_name                 =   _("Extra life");
60     this.m_icon                 =   "item_mega_health";
61     this.m_color                =   '1 0 0';
62     this.m_waypoint             =   _("Extra life");
63     this.m_waypointblink        =   2;
64 #ifdef SVQC
65     this.m_itemid               =   IT_RESOURCE;
66 #endif
67 }
68
69 SPAWNFUNC_ITEM(item_extralife, ITEM_ExtraLife)
70
71 #ifdef GAMEQC
72 MODEL(Invisibility_ITEM, Item_Model("g_strength.md3"));
73 SOUND(Invisibility, Item_Sound("powerup"));
74 #endif
75
76 #ifdef SVQC
77 /// \brief Initializes the invisibility powerup.
78 /// \param[in,out] item Item to initialize.
79 /// \return No return.
80 void powerup_invisibility_init(Pickup this, entity item);
81 #endif
82
83 REGISTER_ITEM(Invisibility, Powerup) {
84     this.m_canonical_spawnfunc = "item_invisibility";
85 #ifdef GAMEQC
86         this.spawnflags = ITEM_FLAG_MUTATORBLOCKED;
87     this.m_model            =   MDL_Invisibility_ITEM;
88     this.m_sound            =   SND_Invisibility;
89     this.m_glow             =   true;
90     this.m_respawnsound     =   SND_STRENGTH_RESPAWN;
91 #endif
92     this.netname            =   "invisibility";
93     this.m_name             =   _("Invisibility");
94     this.m_icon             =   "strength";
95     this.m_color            =   '0 0 1';
96     this.m_waypoint         =   _("Invisibility");
97     this.m_waypointblink    =   2;
98 #ifdef GAMEQC
99     this.m_itemid           =   IT_STRENGTH;
100 #endif
101 #ifdef SVQC
102     this.m_iteminit         =   powerup_invisibility_init;
103 #endif
104 }
105
106 SPAWNFUNC_ITEM(item_invisibility, ITEM_Invisibility)
107
108 #ifdef GAMEQC
109 MODEL(Speed_ITEM, Item_Model("g_invincible.md3"));
110 SOUND(Speed, Item_Sound("powerup_shield"));
111 #endif
112
113 #ifdef SVQC
114 /// \brief Initializes the speed powerup.
115 /// \param[in,out] item Item to initialize.
116 /// \return No return.
117 void powerup_speed_init(Pickup this, entity item);
118 #endif
119
120 REGISTER_ITEM(Speed, Powerup) {
121     this.m_canonical_spawnfunc = "item_speed";
122 #ifdef GAMEQC
123         this.spawnflags = ITEM_FLAG_MUTATORBLOCKED;
124     this.m_model            =   MDL_Speed_ITEM;
125     this.m_sound            =   SND_Speed;
126     this.m_glow             =   true;
127     this.m_respawnsound     =   SND_SHIELD_RESPAWN;
128 #endif
129     this.netname            =   "speed";
130     this.m_name             =   _("Speed");
131     this.m_icon             =   "shield";
132     this.m_color            =   '1 0 1';
133     this.m_waypoint         =   _("Speed");
134     this.m_waypointblink    =   2;
135 #ifdef GAMEQC
136     this.m_itemid           =   IT_INVINCIBLE;
137 #endif
138 #ifdef SVQC
139     this.m_iteminit         =   powerup_speed_init;
140 #endif
141 }
142
143 SPAWNFUNC_ITEM(item_speed, ITEM_Speed)