Fix HMG
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / nades.qh
1 // use slots 70-100
2 const float PROJECTILE_NADE = 71;
3 const float PROJECTILE_NADE_BURN = 72;
4 const float PROJECTILE_NADE_NAPALM = 73;
5 const float PROJECTILE_NADE_NAPALM_BURN = 74;
6 const float PROJECTILE_NAPALM_FOUNTAIN = 75;
7 const float PROJECTILE_NADE_ICE = 76;
8 const float PROJECTILE_NADE_ICE_BURN = 77;
9 const float PROJECTILE_NADE_TRANSLOCATE = 78;
10 const float PROJECTILE_NADE_SPAWN = 79;
11 const float PROJECTILE_NADE_HEAL = 80;
12 const float PROJECTILE_NADE_HEAL_BURN = 81;
13 const float PROJECTILE_NADE_MONSTER = 82;
14 const float PROJECTILE_NADE_MONSTER_BURN = 83;
15
16 const float NADE_TYPE_NORMAL = 1;
17 const float NADE_TYPE_NAPALM = 2;
18 const float NADE_TYPE_ICE = 3;
19 const float NADE_TYPE_TRANSLOCATE = 4;
20 const float NADE_TYPE_SPAWN = 5;
21 const float NADE_TYPE_HEAL = 6;
22 const float NADE_TYPE_MONSTER = 7;
23
24 const float NADE_TYPE_LAST = 7; // a check to prevent using higher values & crashing
25
26 vector Nade_Color(float nadeid)
27 {
28         switch(nadeid)
29         {
30                 case NADE_TYPE_NORMAL: return '1 1 1';
31                 case NADE_TYPE_NAPALM: return '2 0.5 0';
32                 case NADE_TYPE_ICE: return '0 0.5 2';
33                 case NADE_TYPE_TRANSLOCATE: return '1 0.0625 1';
34                 case NADE_TYPE_SPAWN: return '1 0.9 0.06';
35         case NADE_TYPE_HEAL: return '1 0 0';
36                 case NADE_TYPE_MONSTER: return '1 0.5 0';
37         }
38
39         return '0 0 0';
40 }
41
42 float Nade_IDFromProjectile(float proj)
43 {
44         switch(proj)
45         {
46                 case PROJECTILE_NADE:
47                 case PROJECTILE_NADE_BURN: return NADE_TYPE_NORMAL;
48                 case PROJECTILE_NADE_NAPALM:
49                 case PROJECTILE_NADE_NAPALM_BURN: return NADE_TYPE_NAPALM;
50                 case PROJECTILE_NADE_ICE:
51                 case PROJECTILE_NADE_ICE_BURN: return NADE_TYPE_ICE;
52                 case PROJECTILE_NADE_TRANSLOCATE: return NADE_TYPE_TRANSLOCATE;
53                 case PROJECTILE_NADE_SPAWN: return NADE_TYPE_SPAWN;
54         case PROJECTILE_NADE_HEAL:
55         case PROJECTILE_NADE_HEAL_BURN: return NADE_TYPE_HEAL;
56                 case PROJECTILE_NADE_MONSTER:
57                 case PROJECTILE_NADE_MONSTER_BURN: return NADE_TYPE_MONSTER;
58         }
59
60         return 0;
61 }
62
63 float Nade_ProjectileFromID(float proj, float burn)
64 {
65         switch(proj)
66         {
67                 case NADE_TYPE_NORMAL: return (burn) ? PROJECTILE_NADE_BURN : PROJECTILE_NADE;
68                 case NADE_TYPE_NAPALM: return (burn) ? PROJECTILE_NADE_NAPALM_BURN : PROJECTILE_NADE_NAPALM;
69                 case NADE_TYPE_ICE: return (burn) ? PROJECTILE_NADE_ICE_BURN : PROJECTILE_NADE_ICE;
70                 case NADE_TYPE_TRANSLOCATE: return PROJECTILE_NADE_TRANSLOCATE;
71                 case NADE_TYPE_SPAWN: return PROJECTILE_NADE_SPAWN;
72         case NADE_TYPE_HEAL: return (burn) ? PROJECTILE_NADE_HEAL_BURN : PROJECTILE_NADE_HEAL;
73                 case NADE_TYPE_MONSTER: return (burn) ? PROJECTILE_NADE_MONSTER_BURN : PROJECTILE_NADE_MONSTER;
74         }
75
76         return 0;
77 }
78
79 string Nade_TrailEffect(float proj, float nade_team)
80 {
81         switch(proj)
82         {
83                 case PROJECTILE_NADE: return strcat("nade_", Static_Team_ColorName_Lower(nade_team));
84                 case PROJECTILE_NADE_BURN: return strcat("nade_", Static_Team_ColorName_Lower(nade_team), "_burn");
85                 case PROJECTILE_NADE_NAPALM: return "TR_ROCKET";
86                 case PROJECTILE_NADE_NAPALM_BURN: return "spiderbot_rocket_thrust";
87                 case PROJECTILE_NADE_ICE: return "TR_NEXUIZPLASMA";
88                 case PROJECTILE_NADE_ICE_BURN: return "wakizashi_rocket_thrust";
89                 case PROJECTILE_NADE_TRANSLOCATE: return "TR_CRYLINKPLASMA";
90                 case PROJECTILE_NADE_SPAWN: return "nade_yellow";
91         case PROJECTILE_NADE_HEAL: return "nade_red";
92         case PROJECTILE_NADE_HEAL_BURN: return "nade_red_burn";
93                 case PROJECTILE_NADE_MONSTER: return "nade_red";
94                 case PROJECTILE_NADE_MONSTER_BURN: return "nade_red_burn";
95         }
96         
97         return "";
98 }
99
100 #ifdef CSQC
101 // misc functions
102 void ent_healer();
103 #endif // CSQC