X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fweapons%2Fweapon%2Farc.qc;h=4a15cc6c7f1a90bc0af1fd2bfccd8cafda7db1d5;hp=a5815b7400f35e80068f2b579238fe1fc4160d64;hb=eb6fabc8b16e23fcf0704ecf97685dffa7387bb7;hpb=91a98939f9d6bb81888223e24ac18a748997cd5d diff --git a/qcsrc/common/weapons/weapon/arc.qc b/qcsrc/common/weapons/weapon/arc.qc index a5815b740..4a15cc6c7 100644 --- a/qcsrc/common/weapons/weapon/arc.qc +++ b/qcsrc/common/weapons/weapon/arc.qc @@ -1,19 +1,21 @@ #ifndef IMPLEMENTATION -REGISTER_WEAPON( -/* WEP_##id */ ARC, -/* function */ W_Arc, -/* ammotype */ ammo_cells, -/* impulse */ 3, -/* flags */ WEP_FLAG_NORMAL, -/* rating */ BOT_PICKUP_RATING_HIGH, -/* color */ '1 1 1', -/* modelname */ "arc", -/* model */ MDL_ARC_ITEM, -/* crosshair */ "gfx/crosshairhlac 0.7", -/* wepimg */ "weaponarc", -/* refname */ "arc", -/* wepname */ _("Arc") -); +CLASS(Arc, Weapon) +/* ammotype */ ATTRIB(Arc, ammo_field, .int, ammo_cells) +/* impulse */ ATTRIB(Arc, impulse, int, 3) +/* flags */ ATTRIB(Arc, spawnflags, int, WEP_FLAG_NORMAL); +/* rating */ ATTRIB(Arc, bot_pickupbasevalue, float, BOT_PICKUP_RATING_HIGH); +/* color */ ATTRIB(Arc, wpcolor, vector, '1 1 1'); +/* modelname */ ATTRIB(Arc, mdl, string, "arc"); +#ifndef MENUQC +/* model */ ATTRIB(Arc, m_model, Model, MDL_ARC_ITEM); +#endif +/* crosshair */ ATTRIB(Arc, w_crosshair, string, "gfx/crosshairhlac"); +/* crosshair */ ATTRIB(Arc, w_crosshair_size, float, 0.7); +/* wepimg */ ATTRIB(Arc, model2, string, "weaponarc"); +/* refname */ ATTRIB(Arc, netname, string, "arc"); +/* wepname */ ATTRIB(Arc, m_name, string, _("Arc")); +ENDCLASS(Arc) +REGISTER_WEAPON(ARC, NEW(Arc)); #define ARC_SETTINGS(w_cvar,w_prop) ARC_SETTINGS_LIST(w_cvar, w_prop, ARC, arc) #define ARC_SETTINGS_LIST(w_cvar,w_prop,id,sn) \ @@ -72,17 +74,17 @@ const int ARC_BT_BURST_HEAL = 0x12; const int ARC_BT_BURST_HIT = 0x13; const int ARC_BT_BURSTMASK = 0x10; -const int ARC_SF_SETTINGS = 1; -const int ARC_SF_START = 2; -const int ARC_SF_WANTDIR = 4; -const int ARC_SF_BEAMDIR = 8; -const int ARC_SF_BEAMTYPE = 16; -const int ARC_SF_LOCALMASK = 14; +const int ARC_SF_SETTINGS = BIT(0); +const int ARC_SF_START = BIT(1); +const int ARC_SF_WANTDIR = BIT(2); +const int ARC_SF_BEAMDIR = BIT(3); +const int ARC_SF_BEAMTYPE = BIT(4); +const int ARC_SF_LOCALMASK = ARC_SF_START | ARC_SF_WANTDIR | ARC_SF_BEAMDIR; #endif #ifdef SVQC ARC_SETTINGS(WEP_ADD_CVAR, WEP_ADD_PROP) .entity arc_beam; -.float arc_BUTTON_ATCK_prev; // for better animation control +.bool arc_BUTTON_ATCK_prev; // for better animation control .float beam_prev; .float beam_initialized; .float beam_bursting; @@ -90,19 +92,18 @@ ARC_SETTINGS(WEP_ADD_CVAR, WEP_ADD_PROP) .float beam_heat; // (beam) amount of heat produced .float arc_overheat; // (dropped arc/player) time during which it's too hot .float arc_cooldown; // (dropped arc/player) cooling speed -.float arc_heat_percent; // (player) arc heat in [0,1] (stat) +.float arc_heat_percent = _STAT(ARC_HEAT); .float arc_smoke_sound; #endif #ifdef CSQC -void Ent_ReadArcBeam(float isnew); .vector beam_color; .float beam_alpha; .float beam_thickness; -.float beam_traileffect; -.float beam_hiteffect; +.entity beam_traileffect; +.entity beam_hiteffect; .float beam_hitlight[4]; // 0: radius, 123: rgb -.float beam_muzzleeffect; +.entity beam_muzzleeffect; .float beam_muzzlelight[4]; // 0: radius, 123: rgb .string beam_image; @@ -126,11 +127,11 @@ vector Draw_ArcBeam_callback_last_bottom; // NOTE: in same coordinate system as #endif #ifdef IMPLEMENTATION #ifdef SVQC -void spawnfunc_weapon_arc(void) { weapon_defaultspawnfunc(WEP_ARC.m_id); } +spawnfunc(weapon_arc) { weapon_defaultspawnfunc(this, WEP_ARC); } -float W_Arc_Beam_Send(entity to, int sf) -{SELFPARAM(); - WriteByte(MSG_ENTITY, ENT_CLIENT_ARC_BEAM); +bool W_Arc_Beam_Send(entity this, entity to, int sf) +{ + WriteHeader(MSG_ENTITY, ENT_CLIENT_ARC_BEAM); // Truncate information when this beam is displayed to the owner client // - The owner client has no use for beam start position or directions, @@ -212,7 +213,7 @@ void Arc_Player_SetHeat(entity player) //dprint("Heat: ",ftos(player.arc_heat_percent*100),"%\n"); } -void W_Arc_Beam_Think(void) +void W_Arc_Beam_Think() {SELFPARAM(); if(self != self.owner.arc_beam) { @@ -265,7 +266,7 @@ void W_Arc_Beam_Think(void) if ( WEP_CVAR(arc, overheat_max) > 0 && self.beam_heat >= WEP_CVAR(arc, overheat_max) ) { - Send_Effect_("arc_overheat", + Send_Effect(EFFECT_ARC_OVERHEAT, self.beam_start, self.beam_wantdir, 1 ); sound(self, CH_WEAPON_A, SND_ARC_STOP, VOL_BASE, ATTN_NORM); } @@ -273,7 +274,8 @@ void W_Arc_Beam_Think(void) if(self == self.owner.arc_beam) { self.owner.arc_beam = world; } setself(self.owner); - if(!WEP_ACTION(WEP_ARC, WR_CHECKAMMO1) && !WEP_ACTION(WEP_ARC, WR_CHECKAMMO2)) + Weapon w = WEP_ARC; + if(!w.wr_checkammo1(w) && !w.wr_checkammo2(w)) if(!(self.items & IT_UNLIMITED_WEAPON_AMMO)) { // note: this doesn't force the switch @@ -581,8 +583,7 @@ void W_Arc_Beam(float burst) if(time - self.beam_prev > 1) sound(self, CH_WEAPON_A, SND_ARC_FIRE, VOL_BASE, ATTN_NORM); - entity beam = self.arc_beam = spawn(); - beam.classname = "W_Arc_Beam"; + entity beam = self.arc_beam = new(W_Arc_Beam); beam.solid = SOLID_NOT; beam.think = W_Arc_Beam_Think; beam.owner = self; @@ -604,10 +605,10 @@ void Arc_Smoke() if ( self.arc_overheat > time ) { if ( random() < self.arc_heat_percent ) - Send_Effect_("arc_smoke", smoke_origin, '0 0 0', 1 ); + Send_Effect(EFFECT_ARC_SMOKE, smoke_origin, '0 0 0', 1 ); if ( self.BUTTON_ATCK || self.BUTTON_ATCK2 ) { - Send_Effect_("arc_overheat_fire", smoke_origin, w_shotdir, 1 ); + Send_Effect(EFFECT_ARC_OVERHEAT_FIRE, smoke_origin, w_shotdir, 1 ); if ( !self.arc_smoke_sound ) { self.arc_smoke_sound = 1; @@ -620,7 +621,7 @@ void Arc_Smoke() { if ( random() < (self.arc_beam.beam_heat-WEP_CVAR(arc, overheat_min)) / ( WEP_CVAR(arc, overheat_max)-WEP_CVAR(arc, overheat_min) ) ) - Send_Effect_("arc_smoke", smoke_origin, '0 0 0', 1 ); + Send_Effect(EFFECT_ARC_SMOKE, smoke_origin, '0 0 0', 1 ); } if ( self.arc_smoke_sound && ( self.arc_overheat <= time || @@ -631,12 +632,9 @@ void Arc_Smoke() } } -bool W_Arc(entity thiswep, int req) -{SELFPARAM(); - switch(req) - { - case WR_AIM: + METHOD(Arc, wr_aim, void(entity thiswep)) { + SELFPARAM(); if(WEP_CVAR(arc, beam_botaimspeed)) { self.BUTTON_ATCK = bot_aim( @@ -655,66 +653,64 @@ bool W_Arc(entity thiswep, int req) false ); } - return true; } - case WR_THINK: + METHOD(Arc, wr_think, void(entity thiswep, entity actor, .entity weaponentity, int fire)) { - Arc_Player_SetHeat(self); + Arc_Player_SetHeat(actor); Arc_Smoke(); - if ( self.arc_overheat <= time ) - if(self.BUTTON_ATCK || self.BUTTON_ATCK2 || self.arc_beam.beam_bursting ) + if (time >= actor.arc_overheat) + if ((fire & 1) || (fire & 2) || actor.arc_beam.beam_bursting) { - if(self.arc_BUTTON_ATCK_prev) + if(actor.arc_BUTTON_ATCK_prev) { #if 0 - if(self.animstate_startframe == self.anim_shoot.x && self.animstate_numframes == self.anim_shoot.y) - weapon_thinkf(WFRAME_DONTCHANGE, autocvar_g_balance_arc_primary_animtime, w_ready); + if(actor.animstate_startframe == actor.anim_shoot.x && actor.animstate_numframes == actor.anim_shoot.y) + weapon_thinkf(actor, weaponentity, WFRAME_DONTCHANGE, autocvar_g_balance_arc_primary_animtime, w_ready); else #endif - weapon_thinkf(WFRAME_FIRE1, WEP_CVAR(arc, beam_animtime), w_ready); + weapon_thinkf(actor, weaponentity, WFRAME_DONTCHANGE, WEP_CVAR(arc, beam_animtime), w_ready); } - if((!self.arc_beam) || wasfreed(self.arc_beam)) + if((!actor.arc_beam) || wasfreed(actor.arc_beam)) { - if(weapon_prepareattack(!!self.BUTTON_ATCK2, 0)) + if(weapon_prepareattack(thiswep, actor, weaponentity, boolean(fire & 2), 0)) { - W_Arc_Beam(!!self.BUTTON_ATCK2); + W_Arc_Beam(boolean(fire & 2)); - if(!self.arc_BUTTON_ATCK_prev) + if(!actor.arc_BUTTON_ATCK_prev) { - weapon_thinkf(WFRAME_FIRE1, WEP_CVAR(arc, beam_animtime), w_ready); - self.arc_BUTTON_ATCK_prev = 1; + weapon_thinkf(actor, weaponentity, WFRAME_FIRE1, WEP_CVAR(arc, beam_animtime), w_ready); + actor.arc_BUTTON_ATCK_prev = true; } } } - return true; + return; } - if(self.arc_BUTTON_ATCK_prev != 0) + if(actor.arc_BUTTON_ATCK_prev) { - sound(self, CH_WEAPON_A, SND_ARC_STOP, VOL_BASE, ATTN_NORM); - weapon_thinkf(WFRAME_FIRE1, WEP_CVAR(arc, beam_animtime), w_ready); - ATTACK_FINISHED(self) = time + WEP_CVAR(arc, beam_refire) * W_WeaponRateFactor(); + sound(actor, CH_WEAPON_A, SND_ARC_STOP, VOL_BASE, ATTN_NORM); + weapon_thinkf(actor, weaponentity, WFRAME_FIRE1, WEP_CVAR(arc, beam_animtime), w_ready); + int slot = weaponslot(weaponentity); + ATTACK_FINISHED(actor, slot) = time + WEP_CVAR(arc, beam_refire) * W_WeaponRateFactor(); } - self.arc_BUTTON_ATCK_prev = 0; + actor.arc_BUTTON_ATCK_prev = false; #if 0 - if(self.BUTTON_ATCK2) - if(weapon_prepareattack(1, autocvar_g_balance_arc_secondary_refire)) + if(fire & 2) + if(weapon_prepareattack(thiswep, actor, weaponentity, true, autocvar_g_balance_arc_secondary_refire)) { W_Arc_Attack2(); - self.arc_count = autocvar_g_balance_arc_secondary_count; - weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_arc_secondary_animtime, w_arc_checkattack); - self.arc_secondarytime = time + autocvar_g_balance_arc_secondary_refire2 * W_WeaponRateFactor(); + actor.arc_count = autocvar_g_balance_arc_secondary_count; + weapon_thinkf(actor, weaponentity, WFRAME_FIRE2, autocvar_g_balance_arc_secondary_animtime, w_arc_checkattack); + actor.arc_secondarytime = time + autocvar_g_balance_arc_secondary_refire2 * W_WeaponRateFactor(); } #endif - - return true; } - case WR_INIT: + METHOD(Arc, wr_init, void(entity thiswep)) { if(!arc_shotorigin[0]) { @@ -724,47 +720,42 @@ bool W_Arc(entity thiswep, int req) arc_shotorigin[3] = shotorg_adjust_values(CL_Weapon_GetShotOrg(WEP_ARC.m_id), false, false, 4); } ARC_SETTINGS(WEP_SKIP_CVAR, WEP_SET_PROP); - return true; } - case WR_CHECKAMMO1: + METHOD(Arc, wr_checkammo1, bool(entity thiswep)) { + SELFPARAM(); return ((!WEP_CVAR(arc, beam_ammo)) || (self.WEP_AMMO(ARC) > 0)); } - case WR_CHECKAMMO2: + METHOD(Arc, wr_checkammo2, bool(entity thiswep)) { + SELFPARAM(); return WEP_CVAR(arc, overheat_max) > 0 && ((!WEP_CVAR(arc, burst_ammo)) || (self.WEP_AMMO(ARC) > 0)); } - case WR_CONFIG: + METHOD(Arc, wr_config, void(entity thiswep)) { ARC_SETTINGS(WEP_CONFIG_WRITE_CVARS, WEP_CONFIG_WRITE_PROPS); - return true; } - case WR_KILLMESSAGE: + METHOD(Arc, wr_killmessage, int(entity thiswep)) { return WEAPON_ARC_MURDER; } - case WR_DROP: + METHOD(Arc, wr_drop, void(entity thiswep)) { weapon_dropevent_item.arc_overheat = self.arc_overheat; weapon_dropevent_item.arc_cooldown = self.arc_cooldown; self.arc_overheat = 0; self.arc_cooldown = 0; - return true; } - case WR_PICKUP: + METHOD(Arc, wr_pickup, void(entity thiswep)) { - if ( !client_hasweapon(self, WEP_ARC.m_id, false, false) && + if ( !client_hasweapon(self, thiswep, false, false) && weapon_dropevent_item.arc_overheat > time ) { self.arc_overheat = weapon_dropevent_item.arc_overheat; self.arc_cooldown = weapon_dropevent_item.arc_cooldown; } - return true; } - } - return false; -} #endif #ifdef CSQC void Draw_ArcBeam_callback(vector start, vector hit, vector end) @@ -847,7 +838,7 @@ void Draw_ArcBeam_callback(vector start, vector hit, vector end) Draw_ArcBeam_callback_last_bottom = WarpZone_UnTransformOrigin(WarpZone_trace_transform, bottom); } -void Reset_ArcBeam(void) +void Reset_ArcBeam() { entity e; for (e = world; (e = findfloat(e, beam_usevieworigin, 1)); ) { @@ -858,15 +849,15 @@ void Reset_ArcBeam(void) } } -void Draw_ArcBeam(void) -{SELFPARAM(); +void Draw_ArcBeam(entity this) +{ float dt = time - self.move_time; self.move_time = time; if(dt <= 0) { return; } if(!self.beam_usevieworigin) { - InterpolateOrigin_Do(); + InterpolateOrigin_Do(self); } // origin = beam starting origin @@ -1151,24 +1142,20 @@ void Draw_ArcBeam(void) Draw_ArcBeam_callback_last_bottom = '0 0 0'; } -void Remove_ArcBeam(void) +void Remove_ArcBeam() {SELFPARAM(); remove(self.beam_muzzleentity); sound(self, CH_SHOTS_SINGLE, SND_Null, VOL_BASE, ATTEN_NORM); } -void Ent_ReadArcBeam(float isnew) -{SELFPARAM(); +NET_HANDLE(ENT_CLIENT_ARC_BEAM, bool isnew) +{ int sf = ReadByte(); entity flash; if(isnew) { - // calculate shot origin offset from gun alignment - int gunalign = autocvar_cl_gunalign; - if(gunalign != 1 && gunalign != 2 && gunalign != 4) - gunalign = 3; // default value - --gunalign; + int gunalign = W_GetGunAlignment(world); self.beam_shotorigin = arc_shotorigin[gunalign]; @@ -1221,7 +1208,7 @@ void Ent_ReadArcBeam(float isnew) // self.iflags = IFLAG_ORIGIN | IFLAG_ANGLES | IFLAG_V_ANGLE; // why doesn't this work? self.iflags = IFLAG_ORIGIN; - InterpolateOrigin_Undo(); + InterpolateOrigin_Undo(self); } if(sf & ARC_SF_START) // starting location @@ -1240,7 +1227,7 @@ void Ent_ReadArcBeam(float isnew) else { // use player origin so that third person display still works - self.origin = getplayerorigin(player_localnum) + ('0 0 1' * getstati(STAT_VIEWHEIGHT)); + self.origin = entcs_receiver(player_localnum).origin + ('0 0 1' * getstati(STAT_VIEWHEIGHT)); } } @@ -1270,18 +1257,18 @@ void Ent_ReadArcBeam(float isnew) self.beam_color = '1 1 1'; self.beam_alpha = 0.5; self.beam_thickness = 8; - self.beam_traileffect = particleeffectnum(EFFECT_ARC_BEAM); - self.beam_hiteffect = particleeffectnum(EFFECT_ARC_LIGHTNING); + self.beam_traileffect = (EFFECT_ARC_BEAM); + self.beam_hiteffect = (EFFECT_ARC_LIGHTNING); self.beam_hitlight[0] = 0; self.beam_hitlight[1] = 1; self.beam_hitlight[2] = 1; self.beam_hitlight[3] = 1; - self.beam_muzzleeffect = -1; //particleeffectnum(EFFECT_VORTEX_MUZZLEFLASH); + self.beam_muzzleeffect = NULL; //(EFFECT_VORTEX_MUZZLEFLASH); self.beam_muzzlelight[0] = 0; self.beam_muzzlelight[1] = 1; self.beam_muzzlelight[2] = 1; self.beam_muzzlelight[3] = 1; - if(self.beam_muzzleeffect >= 0) + if(self.beam_muzzleeffect) { setmodel(flash, MDL_ARC_MUZZLEFLASH); flash.alpha = self.beam_alpha; @@ -1295,19 +1282,19 @@ void Ent_ReadArcBeam(float isnew) self.beam_color = '1 1 1'; self.beam_alpha = 0.5; self.beam_thickness = 8; - self.beam_traileffect = particleeffectnum(EFFECT_ARC_BEAM); - self.beam_hiteffect = particleeffectnum(EFFECT_ARC_LIGHTNING); + self.beam_traileffect = (EFFECT_ARC_BEAM); + self.beam_hiteffect = (EFFECT_ARC_LIGHTNING); self.beam_hitlight[0] = 0; self.beam_hitlight[1] = 1; self.beam_hitlight[2] = 1; self.beam_hitlight[3] = 1; - self.beam_muzzleeffect = -1; // particleeffectnum(EFFECT_GRENADE_MUZZLEFLASH); + self.beam_muzzleeffect = NULL; // (EFFECT_GRENADE_MUZZLEFLASH); self.beam_muzzlelight[0] = 0; self.beam_muzzlelight[1] = 1; self.beam_muzzlelight[2] = 1; self.beam_muzzlelight[3] = 1; self.beam_image = "particles/lgbeam"; - if(self.beam_muzzleeffect >= 0) + if(self.beam_muzzleeffect) { setmodel(flash, MDL_ARC_MUZZLEFLASH); flash.alpha = self.beam_alpha; @@ -1321,19 +1308,19 @@ void Ent_ReadArcBeam(float isnew) self.beam_color = '1 1 1'; self.beam_alpha = 0.5; self.beam_thickness = 8; - self.beam_traileffect = particleeffectnum(EFFECT_ARC_BEAM_HEAL); - self.beam_hiteffect = particleeffectnum(EFFECT_ARC_BEAM_HEAL_IMPACT); + self.beam_traileffect = (EFFECT_ARC_BEAM_HEAL); + self.beam_hiteffect = (EFFECT_ARC_BEAM_HEAL_IMPACT); self.beam_hitlight[0] = 0; self.beam_hitlight[1] = 1; self.beam_hitlight[2] = 1; self.beam_hitlight[3] = 1; - self.beam_muzzleeffect = -1; //particleeffectnum(EFFECT_VORTEX_MUZZLEFLASH); + self.beam_muzzleeffect = NULL; //(EFFECT_VORTEX_MUZZLEFLASH); self.beam_muzzlelight[0] = 0; self.beam_muzzlelight[1] = 1; self.beam_muzzlelight[2] = 1; self.beam_muzzlelight[3] = 1; self.beam_image = "particles/lgbeam"; - if(self.beam_muzzleeffect >= 0) + if(self.beam_muzzleeffect) { setmodel(flash, MDL_ARC_MUZZLEFLASH); flash.alpha = self.beam_alpha; @@ -1347,19 +1334,19 @@ void Ent_ReadArcBeam(float isnew) self.beam_color = '1 1 1'; self.beam_alpha = 0.5; self.beam_thickness = 8; - self.beam_traileffect = particleeffectnum(EFFECT_ARC_BEAM); - self.beam_hiteffect = particleeffectnum(EFFECT_ARC_LIGHTNING); + self.beam_traileffect = (EFFECT_ARC_BEAM); + self.beam_hiteffect = (EFFECT_ARC_LIGHTNING); self.beam_hitlight[0] = 20; self.beam_hitlight[1] = 1; self.beam_hitlight[2] = 0; self.beam_hitlight[3] = 0; - self.beam_muzzleeffect = -1; //particleeffectnum(EFFECT_VORTEX_MUZZLEFLASH); + self.beam_muzzleeffect = NULL; //(EFFECT_VORTEX_MUZZLEFLASH); self.beam_muzzlelight[0] = 50; self.beam_muzzlelight[1] = 1; self.beam_muzzlelight[2] = 0; self.beam_muzzlelight[3] = 0; self.beam_image = "particles/lgbeam"; - if(self.beam_muzzleeffect >= 0) + if(self.beam_muzzleeffect) { setmodel(flash, MDL_ARC_MUZZLEFLASH); flash.alpha = self.beam_alpha; @@ -1373,19 +1360,19 @@ void Ent_ReadArcBeam(float isnew) self.beam_color = '1 1 1'; self.beam_alpha = 0.5; self.beam_thickness = 14; - self.beam_traileffect = particleeffectnum(EFFECT_ARC_BEAM); - self.beam_hiteffect = particleeffectnum(EFFECT_ARC_LIGHTNING); + self.beam_traileffect = (EFFECT_ARC_BEAM); + self.beam_hiteffect = (EFFECT_ARC_LIGHTNING); self.beam_hitlight[0] = 0; self.beam_hitlight[1] = 1; self.beam_hitlight[2] = 1; self.beam_hitlight[3] = 1; - self.beam_muzzleeffect = -1; //particleeffectnum(EFFECT_VORTEX_MUZZLEFLASH); + self.beam_muzzleeffect = NULL; //(EFFECT_VORTEX_MUZZLEFLASH); self.beam_muzzlelight[0] = 0; self.beam_muzzlelight[1] = 1; self.beam_muzzlelight[2] = 1; self.beam_muzzlelight[3] = 1; self.beam_image = "particles/lgbeam"; - if(self.beam_muzzleeffect >= 0) + if(self.beam_muzzleeffect) { setmodel(flash, MDL_ARC_MUZZLEFLASH); flash.alpha = self.beam_alpha; @@ -1399,19 +1386,19 @@ void Ent_ReadArcBeam(float isnew) self.beam_color = '1 1 1'; self.beam_alpha = 0.5; self.beam_thickness = 14; - self.beam_traileffect = particleeffectnum(EFFECT_ARC_BEAM); - self.beam_hiteffect = particleeffectnum(EFFECT_ARC_LIGHTNING); + self.beam_traileffect = (EFFECT_ARC_BEAM); + self.beam_hiteffect = (EFFECT_ARC_LIGHTNING); self.beam_hitlight[0] = 0; self.beam_hitlight[1] = 1; self.beam_hitlight[2] = 1; self.beam_hitlight[3] = 1; - self.beam_muzzleeffect = -1; //particleeffectnum(EFFECT_VORTEX_MUZZLEFLASH); + self.beam_muzzleeffect = NULL; //(EFFECT_VORTEX_MUZZLEFLASH); self.beam_muzzlelight[0] = 0; self.beam_muzzlelight[1] = 1; self.beam_muzzlelight[2] = 1; self.beam_muzzlelight[3] = 1; self.beam_image = "particles/lgbeam"; - if(self.beam_muzzleeffect >= 0) + if(self.beam_muzzleeffect) { setmodel(flash, MDL_ARC_MUZZLEFLASH); flash.alpha = self.beam_alpha; @@ -1425,19 +1412,19 @@ void Ent_ReadArcBeam(float isnew) self.beam_color = '1 1 1'; self.beam_alpha = 0.5; self.beam_thickness = 14; - self.beam_traileffect = particleeffectnum(EFFECT_ARC_BEAM_HEAL); - self.beam_hiteffect = particleeffectnum(EFFECT_ARC_BEAM_HEAL_IMPACT2); + self.beam_traileffect = (EFFECT_ARC_BEAM_HEAL); + self.beam_hiteffect = (EFFECT_ARC_BEAM_HEAL_IMPACT2); self.beam_hitlight[0] = 0; self.beam_hitlight[1] = 1; self.beam_hitlight[2] = 1; self.beam_hitlight[3] = 1; - self.beam_muzzleeffect = -1; //particleeffectnum(EFFECT_VORTEX_MUZZLEFLASH); + self.beam_muzzleeffect = NULL; //(EFFECT_VORTEX_MUZZLEFLASH); self.beam_muzzlelight[0] = 0; self.beam_muzzlelight[1] = 1; self.beam_muzzlelight[2] = 1; self.beam_muzzlelight[3] = 1; self.beam_image = "particles/lgbeam"; - if(self.beam_muzzleeffect >= 0) + if(self.beam_muzzleeffect) { setmodel(flash, MDL_ARC_MUZZLEFLASH); flash.alpha = self.beam_alpha; @@ -1451,19 +1438,19 @@ void Ent_ReadArcBeam(float isnew) self.beam_color = '1 1 1'; self.beam_alpha = 0.5; self.beam_thickness = 14; - self.beam_traileffect = particleeffectnum(EFFECT_ARC_BEAM); - self.beam_hiteffect = particleeffectnum(EFFECT_ARC_LIGHTNING); + self.beam_traileffect = (EFFECT_ARC_BEAM); + self.beam_hiteffect = (EFFECT_ARC_LIGHTNING); self.beam_hitlight[0] = 0; self.beam_hitlight[1] = 1; self.beam_hitlight[2] = 1; self.beam_hitlight[3] = 1; - self.beam_muzzleeffect = -1; //particleeffectnum(EFFECT_VORTEX_MUZZLEFLASH); + self.beam_muzzleeffect = NULL; //(EFFECT_VORTEX_MUZZLEFLASH); self.beam_muzzlelight[0] = 0; self.beam_muzzlelight[1] = 1; self.beam_muzzlelight[2] = 1; self.beam_muzzlelight[3] = 1; self.beam_image = "particles/lgbeam"; - if(self.beam_muzzleeffect >= 0) + if(self.beam_muzzleeffect) { setmodel(flash, MDL_ARC_MUZZLEFLASH); flash.alpha = self.beam_alpha; @@ -1479,19 +1466,19 @@ void Ent_ReadArcBeam(float isnew) self.beam_color = randomvec(); self.beam_alpha = 1; self.beam_thickness = 8; - self.beam_traileffect = false; - self.beam_hiteffect = false; + self.beam_traileffect = NULL; + self.beam_hiteffect = NULL; self.beam_hitlight[0] = 0; self.beam_hitlight[1] = 1; self.beam_hitlight[2] = 1; self.beam_hitlight[3] = 1; - self.beam_muzzleeffect = -1; //particleeffectnum(EFFECT_VORTEX_MUZZLEFLASH); + self.beam_muzzleeffect = NULL; //(EFFECT_VORTEX_MUZZLEFLASH); self.beam_muzzlelight[0] = 0; self.beam_muzzlelight[1] = 1; self.beam_muzzlelight[2] = 1; self.beam_muzzlelight[3] = 1; self.beam_image = "particles/lgbeam"; - if(self.beam_muzzleeffect >= 0) + if(self.beam_muzzleeffect) { setmodel(flash, MDL_ARC_MUZZLEFLASH); flash.alpha = self.beam_alpha; @@ -1505,30 +1492,10 @@ void Ent_ReadArcBeam(float isnew) if(!self.beam_usevieworigin) { - InterpolateOrigin_Note(); + InterpolateOrigin_Note(this); } + return true; } -bool W_Arc(entity thiswep, int req) -{SELFPARAM(); - switch(req) - { - case WR_IMPACTEFFECT: - { - // todo - return true; - } - case WR_INIT: - { - return true; - } - case WR_ZOOMRETICLE: - { - // no weapon specific image for this weapon - return false; - } - } - return false; -} #endif #endif