X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fturrets%2Fturret%2Fflac.qc;h=1c9122f6733670c3841336c03a0693e760ace6d5;hp=aacefd16471b4897d6d49f90cc92f34c4c117ad4;hb=a8cc9eb71b0d0e44e9a968a9cf5554f6226cc838;hpb=129cf6ae83fa24855423c8edec3ad2cb072cb4cd diff --git a/qcsrc/common/turrets/turret/flac.qc b/qcsrc/common/turrets/turret/flac.qc index aacefd164..1c9122f67 100644 --- a/qcsrc/common/turrets/turret/flac.qc +++ b/qcsrc/common/turrets/turret/flac.qc @@ -1,104 +1,39 @@ -#ifndef TUR_FLAC_H -#define TUR_FLAC_H -REGISTER_TURRET( -/* TUR_##id */ FLAC, -/* function */ t_flac, -/* spawnflags */ TUR_FLAG_SPLASH | TUR_FLAG_FASTPROJ | TUR_FLAG_MISSILE, -/* mins,maxs */ '-32 -32 0', '32 32 64', -/* model */ "base.md3", -/* head_model */ "flac.md3", -/* netname */ "flac", -/* fullname */ _("FLAC Cannon") -); -#endif - -#ifdef IMPLEMENTATION -#ifdef SVQC -void turret_flac_projectile_think_explode() -{SELFPARAM(); - if(self.enemy != world) - if(vlen(self.origin - self.enemy.origin) < self.owner.shot_radius * 3) - setorigin(self,self.enemy.origin + randomvec() * self.owner.shot_radius); +#ifndef TURRET_FLAC_H +#define TURRET_FLAC_H + +#include "flac_weapon.qc" + +CLASS(Flac, Turret) +/* spawnflags */ ATTRIB(Flac, spawnflags, int, TUR_FLAG_SPLASH | TUR_FLAG_FASTPROJ | TUR_FLAG_MISSILE); +/* mins */ ATTRIB(Flac, mins, vector, '-32 -32 0'); +/* maxs */ ATTRIB(Flac, maxs, vector, '32 32 64'); +/* modelname */ ATTRIB(Flac, mdl, string, "base.md3"); +/* model */ ATTRIB(Flac, model, string, strzone(strcat("models/turrets/", this.mdl))); +/* head_model */ ATTRIB(Flac, head_model, string, strzone(strcat("models/turrets/", "flac.md3"))); +/* netname */ ATTRIB(Flac, netname, string, "flac"); +/* fullname */ ATTRIB(Flac, turret_name, string, _("FLAC Cannon")); + ATTRIB(Flac, m_weapon, Weapon, WEP_FLAC); +ENDCLASS(Flac) +REGISTER_TURRET(FLAC, NEW(Flac)); -#ifdef TURRET_DEBUG - float d; - d = RadiusDamage (self, self.owner, self.owner.shot_dmg, self.owner.shot_dmg, self.owner.shot_radius, self, world, self.owner.shot_force, self.totalfrags, world); - self.owner.tur_dbg_dmg_t_h = self.owner.tur_dbg_dmg_t_h + d; - self.owner.tur_dbg_dmg_t_f = self.owner.tur_dbg_dmg_t_f + self.owner.shot_dmg; -#else - RadiusDamage (self, self.realowner, self.owner.shot_dmg, self.owner.shot_dmg, self.owner.shot_radius, self, world, self.owner.shot_force, self.totalfrags, world); #endif - remove(self); -} - -void spawnfunc_turret_flac() { SELFPARAM(); if(!turret_initialize(TUR_FLAC.m_id)) remove(self); } - -float t_flac(float req) -{SELFPARAM(); - switch(req) - { - case TR_ATTACK: - { - entity proj; - - turret_tag_fire_update(); - proj = turret_projectile(SND(HAGAR_FIRE), 5, 0, DEATH_TURRET_FLAC, PROJECTILE_HAGAR, TRUE, TRUE); - Send_Effect(EFFECT_BLASTER_MUZZLEFLASH, self.tur_shotorg, self.tur_shotdir_updated * 1000, 1); - proj.think = turret_flac_projectile_think_explode; - proj.nextthink = time + self.tur_impacttime + (random() * 0.01 - random() * 0.01); - proj.missile_flags = MIF_SPLASH | MIF_PROXY; - - self.tur_head.frame = self.tur_head.frame + 1; - if (self.tur_head.frame >= 4) - self.tur_head.frame = 0; +#ifdef IMPLEMENTATION - return true; - } - case TR_THINK: - { - return true; - } - case TR_DEATH: - { - return true; - } - case TR_SETUP: - { - self.ammo_flags = TFL_AMMO_ROCKETS | TFL_AMMO_RECHARGE; - self.aim_flags = TFL_AIM_LEAD | TFL_AIM_SHOTTIMECOMPENSATE; - self.damage_flags |= TFL_DMG_HEADSHAKE; - self.target_select_flags |= TFL_TARGETSELECT_NOTURRETS | TFL_TARGETSELECT_MISSILESONLY; +#include "flac_weapon.qc" - return true; - } - case TR_PRECACHE: - { - return true; - } - } +#ifdef SVQC - return true; -} +spawnfunc(turret_flac) { if (!turret_initialize(TUR_FLAC)) remove(self); } -#endif // SVQC -#ifdef CSQC -float t_flac(float req) +METHOD(Flac, tr_setup, void(Flac this, entity it)) { - switch(req) - { - case TR_SETUP: - { - return true; - } - case TR_PRECACHE: - { - return true; - } - } - - return true; + it.ammo_flags = TFL_AMMO_ROCKETS | TFL_AMMO_RECHARGE; + it.aim_flags = TFL_AIM_LEAD | TFL_AIM_SHOTTIMECOMPENSATE; + it.damage_flags |= TFL_DMG_HEADSHAKE; + it.target_select_flags |= TFL_TARGETSELECT_NOTURRETS | TFL_TARGETSELECT_MISSILESONLY; } -#endif // CSQC -#endif // REGISTER_TURRET +#endif + +#endif