]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/common/nades.qh
Merge branch 'master' into sev/luma_revisions
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / nades.qh
1 #ifndef NADES_H
2 #define NADES_H
3
4 #include "teams.qh"
5
6 .float healer_lifetime;
7 .float healer_radius;
8
9 // use slots 70-100
10 const int PROJECTILE_NADE = 71;
11 const int PROJECTILE_NADE_BURN = 72;
12 const int PROJECTILE_NADE_NAPALM = 73;
13 const int PROJECTILE_NADE_NAPALM_BURN = 74;
14 const int PROJECTILE_NAPALM_FOUNTAIN = 75;
15 const int PROJECTILE_NADE_ICE = 76;
16 const int PROJECTILE_NADE_ICE_BURN = 77;
17 const int PROJECTILE_NADE_TRANSLOCATE = 78;
18 const int PROJECTILE_NADE_SPAWN = 79;
19 const int PROJECTILE_NADE_HEAL = 80;
20 const int PROJECTILE_NADE_HEAL_BURN = 81;
21 const int PROJECTILE_NADE_MONSTER = 82;
22 const int PROJECTILE_NADE_MONSTER_BURN = 83;
23
24 const int NADE_TYPE_NORMAL = 1;
25 const int NADE_TYPE_NAPALM = 2;
26 const int NADE_TYPE_ICE = 3;
27 const int NADE_TYPE_TRANSLOCATE = 4;
28 const int NADE_TYPE_SPAWN = 5;
29 const int NADE_TYPE_HEAL = 6;
30 const int NADE_TYPE_MONSTER = 7;
31
32 const int NADE_TYPE_LAST = 7; // a check to prevent using higher values & crashing
33
34 vector Nade_Color(int nadeid)
35 {
36         switch(nadeid)
37         {
38                 case NADE_TYPE_NORMAL: return '1 1 1';
39                 case NADE_TYPE_NAPALM: return '2 0.5 0';
40                 case NADE_TYPE_ICE: return '0 0.5 2';
41                 case NADE_TYPE_TRANSLOCATE: return '1 0 1';
42                 case NADE_TYPE_SPAWN: return '1 0.9 0';
43                 case NADE_TYPE_HEAL: return '1 0 0';
44                 case NADE_TYPE_MONSTER: return '0.25 0.75 0';
45         }
46
47         return '0 0 0';
48 }
49
50 string Nade_Icon(int nadeid)
51 {
52         switch(nadeid)
53         {
54                 case NADE_TYPE_NORMAL: return "nade_normal";
55                 case NADE_TYPE_NAPALM: return "nade_napalm";
56                 case NADE_TYPE_ICE: return "nade_ice";
57                 case NADE_TYPE_TRANSLOCATE: return "nade_translocate";
58                 case NADE_TYPE_SPAWN: return "nade_spawn";
59                 case NADE_TYPE_HEAL: return "nade_heal";
60                 case NADE_TYPE_MONSTER: return "nade_monster";
61         }
62
63         return "nade_normal";
64 }
65
66 int Nade_IDFromProjectile(float proj)
67 {
68         switch(proj)
69         {
70                 case PROJECTILE_NADE:
71                 case PROJECTILE_NADE_BURN: return NADE_TYPE_NORMAL;
72                 case PROJECTILE_NADE_NAPALM:
73                 case PROJECTILE_NADE_NAPALM_BURN: return NADE_TYPE_NAPALM;
74                 case PROJECTILE_NADE_ICE:
75                 case PROJECTILE_NADE_ICE_BURN: return NADE_TYPE_ICE;
76                 case PROJECTILE_NADE_TRANSLOCATE: return NADE_TYPE_TRANSLOCATE;
77                 case PROJECTILE_NADE_SPAWN: return NADE_TYPE_SPAWN;
78                 case PROJECTILE_NADE_HEAL:
79                 case PROJECTILE_NADE_HEAL_BURN: return NADE_TYPE_HEAL;
80                 case PROJECTILE_NADE_MONSTER:
81                 case PROJECTILE_NADE_MONSTER_BURN: return NADE_TYPE_MONSTER;
82         }
83
84         return 0;
85 }
86
87 int Nade_ProjectileFromID(int proj, bool burn)
88 {
89         switch(proj)
90         {
91                 case NADE_TYPE_NORMAL: return (burn) ? PROJECTILE_NADE_BURN : PROJECTILE_NADE;
92                 case NADE_TYPE_NAPALM: return (burn) ? PROJECTILE_NADE_NAPALM_BURN : PROJECTILE_NADE_NAPALM;
93                 case NADE_TYPE_ICE: return (burn) ? PROJECTILE_NADE_ICE_BURN : PROJECTILE_NADE_ICE;
94                 case NADE_TYPE_TRANSLOCATE: return PROJECTILE_NADE_TRANSLOCATE;
95                 case NADE_TYPE_SPAWN: return PROJECTILE_NADE_SPAWN;
96                 case NADE_TYPE_HEAL: return (burn) ? PROJECTILE_NADE_HEAL_BURN : PROJECTILE_NADE_HEAL;
97                 case NADE_TYPE_MONSTER: return (burn) ? PROJECTILE_NADE_MONSTER_BURN : PROJECTILE_NADE_MONSTER;
98         }
99
100         return 0;
101 }
102
103 string Nade_TrailEffect(float proj, float nade_team)
104 {
105         switch(proj)
106         {
107                 case PROJECTILE_NADE: return strcat("nade_", Static_Team_ColorName_Lower(nade_team));
108                 case PROJECTILE_NADE_BURN: return strcat("nade_", Static_Team_ColorName_Lower(nade_team), "_burn");
109                 case PROJECTILE_NADE_NAPALM: return "TR_ROCKET";
110                 case PROJECTILE_NADE_NAPALM_BURN: return "spiderbot_rocket_thrust";
111                 case PROJECTILE_NADE_ICE: return "TR_NEXUIZPLASMA";
112                 case PROJECTILE_NADE_ICE_BURN: return "wakizashi_rocket_thrust";
113                 case PROJECTILE_NADE_TRANSLOCATE: return "TR_CRYLINKPLASMA";
114                 case PROJECTILE_NADE_SPAWN: return "nade_yellow";
115                 case PROJECTILE_NADE_HEAL: return "nade_red";
116                 case PROJECTILE_NADE_HEAL_BURN: return "nade_red_burn";
117                 case PROJECTILE_NADE_MONSTER: return "nade_red";
118                 case PROJECTILE_NADE_MONSTER_BURN: return "nade_red_burn";
119         }
120
121         return "";
122 }
123
124 #ifdef SVQC
125 float healer_send(entity to, int sf);
126 #endif
127
128 #ifdef CSQC
129 // misc functions
130 void ent_healer();
131 #endif // CSQC
132 #endif