X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fweapons%2Fw_blaster.qc;h=8b1b6ba984dc17bd278bcbad6a14f185ce5a051e;hb=845401fd312c66c059aaee1772ac5d79555ab4fc;hp=a3f2fbab839e4016642c4e0a03ba44dfd64d1f25;hpb=b38e2bae0a50554f26bf5af1fbd0e70b97cc0c71;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/weapons/w_blaster.qc b/qcsrc/common/weapons/w_blaster.qc index a3f2fbab8..8b1b6ba98 100644 --- a/qcsrc/common/weapons/w_blaster.qc +++ b/qcsrc/common/weapons/w_blaster.qc @@ -22,6 +22,7 @@ REGISTER_WEAPON( w_cvar(id, sn, BOTH, delay) \ w_cvar(id, sn, BOTH, edgedamage) \ w_cvar(id, sn, BOTH, force) \ + w_cvar(id, sn, BOTH, force_zscale) \ w_cvar(id, sn, BOTH, lifetime) \ w_cvar(id, sn, BOTH, radius) \ w_cvar(id, sn, BOTH, refire) \ @@ -46,10 +47,10 @@ BLASTER_SETTINGS(WEP_ADD_CVAR, WEP_ADD_PROP) #endif #else #ifdef SVQC -void spawnfunc_weapon_blaster() { weapon_defaultspawnfunc(WEP_BLASTER); } -void spawnfunc_weapon_laser() { spawnfunc_weapon_blaster(); } +void spawnfunc_weapon_blaster(void) { weapon_defaultspawnfunc(WEP_BLASTER); } +void spawnfunc_weapon_laser(void) { spawnfunc_weapon_blaster(); } -void W_Blaster_Touch() +void W_Blaster_Touch(void) { PROJECTILE_TOUCH; @@ -71,15 +72,16 @@ void W_Blaster_Touch() remove(self); } -void W_Blaster_Think() +void W_Blaster_Think(void) { self.movetype = MOVETYPE_FLY; self.think = SUB_Remove; self.nextthink = time + self.blaster_lifetime; - CSQCProjectile(self, TRUE, PROJECTILE_BLASTER, TRUE); + CSQCProjectile(self, true, PROJECTILE_BLASTER, true); } void W_Blaster_Attack( + float atk_deathtype, float atk_shotangle, float atk_damage, float atk_edgedamage, @@ -92,13 +94,13 @@ void W_Blaster_Attack( { vector s_forward = v_forward * cos(atk_shotangle * DEG2RAD) + v_up * sin(atk_shotangle * DEG2RAD); - W_SetupShot_Dir(self, s_forward, FALSE, 3, "weapons/lasergun_fire.wav", CH_WEAPON_B, atk_damage); + W_SetupShot_Dir(self, s_forward, false, 3, "weapons/lasergun_fire.wav", CH_WEAPON_B, atk_damage); pointparticles(particleeffectnum("laser_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); entity missile = spawn(); missile.owner = missile.realowner = self; missile.classname = "blasterbolt"; - missile.bot_dodge = TRUE; + missile.bot_dodge = true; missile.bot_dodgerating = atk_damage; PROJECTILE_MAKETRIGGER(missile); @@ -119,18 +121,18 @@ void W_Blaster_Attack( 0, 0, atk_spread, - FALSE + false ); - + missile.angles = vectoangles(missile.velocity); - + //missile.glow_color = 250; // 244, 250 //missile.glow_size = 120; missile.touch = W_Blaster_Touch; missile.flags = FL_PROJECTILE; missile.missile_flags = MIF_SPLASH; - missile.projectiledeathtype = WEP_BLASTER; + missile.projectiledeathtype = atk_deathtype; missile.think = W_Blaster_Think; missile.nextthink = time + atk_delay; @@ -154,14 +156,14 @@ float W_Blaster(float request) if(WEP_CVAR(blaster, secondary)) { if((random() * (WEP_CVAR_PRI(blaster, damage) + WEP_CVAR_SEC(blaster, damage))) > WEP_CVAR_PRI(blaster, damage)) - { self.BUTTON_ATCK2 = bot_aim(WEP_CVAR_SEC(blaster, speed), 0, WEP_CVAR_SEC(blaster, lifetime), FALSE); } + { self.BUTTON_ATCK2 = bot_aim(WEP_CVAR_SEC(blaster, speed), 0, WEP_CVAR_SEC(blaster, lifetime), false); } else - { self.BUTTON_ATCK = bot_aim(WEP_CVAR_PRI(blaster, speed), 0, WEP_CVAR_PRI(blaster, lifetime), FALSE); } + { self.BUTTON_ATCK = bot_aim(WEP_CVAR_PRI(blaster, speed), 0, WEP_CVAR_PRI(blaster, lifetime), false); } } else - { self.BUTTON_ATCK = bot_aim(WEP_CVAR_PRI(blaster, speed), 0, WEP_CVAR_PRI(blaster, lifetime), FALSE); } + { self.BUTTON_ATCK = bot_aim(WEP_CVAR_PRI(blaster, speed), 0, WEP_CVAR_PRI(blaster, lifetime), false); } - return TRUE; + return true; } case WR_THINK: @@ -171,6 +173,7 @@ float W_Blaster(float request) if(weapon_prepareattack(0, WEP_CVAR_PRI(blaster, refire))) { W_Blaster_Attack( + WEP_BLASTER, WEP_CVAR_PRI(blaster, shotangle), WEP_CVAR_PRI(blaster, damage), WEP_CVAR_PRI(blaster, edgedamage), @@ -200,6 +203,7 @@ float W_Blaster(float request) if(weapon_prepareattack(1, WEP_CVAR_SEC(blaster, refire))) { W_Blaster_Attack( + WEP_BLASTER | HITTYPE_SECONDARY, WEP_CVAR_SEC(blaster, shotangle), WEP_CVAR_SEC(blaster, damage), WEP_CVAR_SEC(blaster, edgedamage), @@ -217,7 +221,7 @@ float W_Blaster(float request) } } } - return TRUE; + return true; } case WR_INIT: @@ -227,25 +231,25 @@ float W_Blaster(float request) precache_model("models/weapons/h_laser.iqm"); precache_sound("weapons/lasergun_fire.wav"); BLASTER_SETTINGS(WEP_SKIP_CVAR, WEP_SET_PROP) - return TRUE; + return true; } case WR_SETUP: { self.ammo_field = ammo_none; - return TRUE; + return true; } case WR_CHECKAMMO1: case WR_CHECKAMMO2: { - return TRUE; // laser has infinite ammo + return true; // laser has infinite ammo } case WR_CONFIG: { BLASTER_SETTINGS(WEP_CONFIG_WRITE_CVARS, WEP_CONFIG_WRITE_PROPS) - return TRUE; + return true; } case WR_SUICIDEMESSAGE: @@ -258,7 +262,7 @@ float W_Blaster(float request) return WEAPON_BLASTER_MURDER; } } - return FALSE; + return false; } #endif #ifdef CSQC @@ -272,21 +276,21 @@ float W_Blaster(float request) org2 = w_org + w_backoff * 6; pointparticles(particleeffectnum("laser_impact"), org2, w_backoff * 1000, 1); if(!w_issilent) { sound(self, CH_SHOTS, "weapons/laserimpact.wav", VOL_BASE, ATTN_NORM); } - return TRUE; + return true; } case WR_INIT: { precache_sound("weapons/laserimpact.wav"); - return TRUE; + return true; } case WR_ZOOMRETICLE: { // no weapon specific image for this weapon - return FALSE; + return false; } } - return FALSE; + return false; } #endif #endif