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