]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/common/nades.qh
Merge branch 'master' into Mario/vehicles
[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.0625 1';
42                 case NADE_TYPE_SPAWN: return '1 0.9 0.06';
43         case NADE_TYPE_HEAL: return '1 0 0';
44                 case NADE_TYPE_MONSTER: return '1 0.5 0';
45         }
46
47         return '0 0 0';
48 }
49
50 int Nade_IDFromProjectile(float proj)
51 {
52         switch(proj)
53         {
54                 case PROJECTILE_NADE:
55                 case PROJECTILE_NADE_BURN: return NADE_TYPE_NORMAL;
56                 case PROJECTILE_NADE_NAPALM:
57                 case PROJECTILE_NADE_NAPALM_BURN: return NADE_TYPE_NAPALM;
58                 case PROJECTILE_NADE_ICE:
59                 case PROJECTILE_NADE_ICE_BURN: return NADE_TYPE_ICE;
60                 case PROJECTILE_NADE_TRANSLOCATE: return NADE_TYPE_TRANSLOCATE;
61                 case PROJECTILE_NADE_SPAWN: return NADE_TYPE_SPAWN;
62         case PROJECTILE_NADE_HEAL:
63         case PROJECTILE_NADE_HEAL_BURN: return NADE_TYPE_HEAL;
64                 case PROJECTILE_NADE_MONSTER:
65                 case PROJECTILE_NADE_MONSTER_BURN: return NADE_TYPE_MONSTER;
66         }
67
68         return 0;
69 }
70
71 int Nade_ProjectileFromID(int proj, bool burn)
72 {
73         switch(proj)
74         {
75                 case NADE_TYPE_NORMAL: return (burn) ? PROJECTILE_NADE_BURN : PROJECTILE_NADE;
76                 case NADE_TYPE_NAPALM: return (burn) ? PROJECTILE_NADE_NAPALM_BURN : PROJECTILE_NADE_NAPALM;
77                 case NADE_TYPE_ICE: return (burn) ? PROJECTILE_NADE_ICE_BURN : PROJECTILE_NADE_ICE;
78                 case NADE_TYPE_TRANSLOCATE: return PROJECTILE_NADE_TRANSLOCATE;
79                 case NADE_TYPE_SPAWN: return PROJECTILE_NADE_SPAWN;
80         case NADE_TYPE_HEAL: return (burn) ? PROJECTILE_NADE_HEAL_BURN : PROJECTILE_NADE_HEAL;
81                 case NADE_TYPE_MONSTER: return (burn) ? PROJECTILE_NADE_MONSTER_BURN : PROJECTILE_NADE_MONSTER;
82         }
83
84         return 0;
85 }
86
87 string Nade_TrailEffect(float proj, float nade_team)
88 {
89         switch(proj)
90         {
91                 case PROJECTILE_NADE: return strcat("nade_", Static_Team_ColorName_Lower(nade_team));
92                 case PROJECTILE_NADE_BURN: return strcat("nade_", Static_Team_ColorName_Lower(nade_team), "_burn");
93                 case PROJECTILE_NADE_NAPALM: return "TR_ROCKET";
94                 case PROJECTILE_NADE_NAPALM_BURN: return "spiderbot_rocket_thrust";
95                 case PROJECTILE_NADE_ICE: return "TR_NEXUIZPLASMA";
96                 case PROJECTILE_NADE_ICE_BURN: return "wakizashi_rocket_thrust";
97                 case PROJECTILE_NADE_TRANSLOCATE: return "TR_CRYLINKPLASMA";
98                 case PROJECTILE_NADE_SPAWN: return "nade_yellow";
99         case PROJECTILE_NADE_HEAL: return "nade_red";
100         case PROJECTILE_NADE_HEAL_BURN: return "nade_red_burn";
101                 case PROJECTILE_NADE_MONSTER: return "nade_red";
102                 case PROJECTILE_NADE_MONSTER_BURN: return "nade_red_burn";
103         }
104
105         return "";
106 }
107
108 #ifdef SVQC
109 float healer_send(entity to, int sf);
110 #endif
111
112 #ifdef CSQC
113 // misc functions
114 void ent_healer();
115 #endif // CSQC
116 #endif