]> de.git.xonotic.org Git - voretournament/voretournament.git/blob - data/qcsrc/server/tturrets/units/unit_fusionreactor.qc
Initial checkout of Vore Tournament 0.1.alpha.
[voretournament/voretournament.git] / data / qcsrc / server / tturrets / units / unit_fusionreactor.qc
1 void spawnfunc_turret_fusionreactor();\r
2 void turret_fusionreactor_dinit();\r
3 void turret_fusionreactor_fire();\r
4 \r
5 float turret_fusionreactor_firecheck()\r
6 {\r
7     if (self.enemy == world) return 0;\r
8     if not (self.enemy.ammo_flags & TFL_AMMO_RECIVE) return 0;\r
9     if not (self.enemy.ammo_flags & TFL_AMMO_ENERGY) return 0;\r
10     if (self.ammo < self.shot_dmg) return 0;\r
11     if (self.enemy.ammo >= self.enemy.ammo_max) return 0;\r
12     if (self.tur_dist_aimpos > self.target_range) return 0;\r
13     if (self.tur_dist_aimpos < self.target_range_min) return 0;\r
14 \r
15     return 1;\r
16 }\r
17 \r
18 void turret_fusionreactor_fire()\r
19 {\r
20     vector fl_org;\r
21 \r
22     self.enemy.ammo = min(self.enemy.ammo + self.shot_dmg,self.enemy.ammo_max);\r
23     fl_org = 0.5 * (self.enemy.absmin + self.enemy.absmax);\r
24     te_smallflash(fl_org);\r
25     //te_lightning1(world,self.origin,self.enemy.origin);\r
26 }\r
27 \r
28 void turret_fusionreactor_postthink()\r
29 {\r
30     float f;\r
31     f = self.ammo / self.ammo_max;\r
32     self.tur_head.avelocity = '0 250 0' * f;\r
33 }\r
34 \r
35 void turret_fusionreactor_respawnhook()\r
36 {\r
37     self.tur_head.avelocity = '0 50 0';\r
38 }\r
39 \r
40 void turret_fusionreactor_dinit()\r
41 {\r
42     if (self.netname == "")      self.netname     = "Fusionreactor";\r
43 \r
44     self.turrcaps_flags      = TFL_TURRCAPS_SUPPORT | TFL_TURRCAPS_AMMOSOURCE;\r
45     self.ammo_flags          = TFL_AMMO_ENERGY | TFL_AMMO_RECHARGE;\r
46     self.target_select_flags = TFL_TARGETSELECT_TEAMCHECK | TFL_TARGETSELECT_OWNTEAM | TFL_TARGETSELECT_RANGELIMTS;\r
47     self.firecheck_flags     = TFL_FIRECHECK_OWM_AMMO | TFL_FIRECHECK_OTHER_AMMO | TFL_FIRECHECK_DISTANCES | TFL_FIRECHECK_DEAD | TFL_FIRECHECK_WORLD;\r
48     self.shoot_flags         = TFL_SHOOT_HITALLVALID;\r
49     self.aim_flags           = TFL_AIM_NO;\r
50     self.track_flags         = TFL_TRACK_NO;\r
51     self.turret_respawnhook  = turret_fusionreactor_respawnhook;\r
52 \r
53     if (turret_stdproc_init("fusreac_std",0,"models/turrets/base.md3","models/turrets/reactor.md3") == 0)\r
54     {\r
55         remove(self);\r
56         return;\r
57     }\r
58     self.tur_head.scale = 0.75;\r
59     self.tur_head.avelocity = '0 50 0';\r
60     setsize(self,'-34 -34 0','34 34 90');\r
61 \r
62     self.turret_firecheckfunc   = turret_fusionreactor_firecheck;\r
63     self.turret_firefunc        = turret_fusionreactor_fire;\r
64     self.turret_postthink       = turret_fusionreactor_postthink;\r
65 }\r
66 \r
67 /*QUAKED turret_fusionreactor (0 .5 .8) ?\r
68 */\r
69 void spawnfunc_turret_fusionreactor()\r
70 {\r
71     precache_model ("models/turrets/reactor.md3");\r
72     precache_model ("models/turrets/base.md3");\r
73 \r
74     self.think = turret_fusionreactor_dinit;\r
75     self.nextthink = time + 0.5;\r
76 }\r