]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/common/mutators/mutator/powerups/powerup/shield.qh
powerups: fix #2857 and move g_powerups cvar out of server/items/items.qc
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / mutators / mutator / powerups / powerup / shield.qh
1 #pragma once
2
3 #include <common/items/all.qh>
4 #include <common/mutators/mutator/powerups/powerups.qh>
5 #ifdef SVQC
6     // For FL_POWERUP
7     #include <common/constants.qh>
8     #include <server/items/items.qh>
9 #endif
10
11 #ifdef GAMEQC
12 MODEL(Shield_ITEM, Item_Model("g_invincible.md3"));
13 SOUND(Shield, Item_Sound("powerup_shield"));
14 #endif
15
16 #ifdef SVQC
17 bool autocvar_g_powerups_shield;
18 float autocvar_g_balance_powerup_invincible_takedamage;
19 float autocvar_g_balance_powerup_invincible_takeforce;
20 float autocvar_g_balance_powerup_invincible_time;
21 void powerup_shield_init(Pickup def, entity item)
22 {
23     if(!autocvar_g_powerups || !autocvar_g_powerups_shield)
24         def.spawnflags |= ITEM_FLAG_MUTATORBLOCKED;
25
26     if(!item.invincible_finished)
27         item.invincible_finished = (item.count) ? item.count : autocvar_g_balance_powerup_invincible_time;
28 }
29 #endif
30 REGISTER_ITEM(Shield, Powerup) {
31     this.m_canonical_spawnfunc = "item_shield";
32 #ifdef SVQC
33     this.m_iteminit         =   powerup_shield_init;
34 #endif
35 #ifdef GAMEQC
36     this.spawnflags         =   ITEM_FLAG_NORMAL;
37     this.m_itemid           =   IT_INVINCIBLE;
38     this.m_model            =   MDL_Shield_ITEM;
39     this.m_sound            =   SND_Shield;
40     this.m_glow             =   true;
41     this.m_respawnsound     =   SND_SHIELD_RESPAWN;
42 #endif
43     this.netname            =   "invincible";
44     this.m_name             =   _("Shield");
45     this.m_icon             =   "shield";
46     this.m_color            =   '1 0 1';
47     this.m_waypoint         =   _("Shield");
48     this.m_waypointblink    =   2;
49 }
50
51 SPAWNFUNC_ITEM(item_shield, ITEM_Shield)
52 SPAWNFUNC_ITEM(item_invincible, ITEM_Shield)
53
54 CLASS(Shield, Powerups)
55     ATTRIB(Shield, netname, string, "invincible"); // NOTE: referring to as invincible so that it matches the powerup item
56     ATTRIB(Shield, m_name, string, _("Shield"));
57     ATTRIB(Shield, m_icon, string, "shield");
58 ENDCLASS(Shield)
59 REGISTER_STATUSEFFECT(Shield, NEW(Shield));