X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fvehicles%2Funit%2Fraptor.qc;h=b8cf0d2a558b1a6cde12ccce596a01487f536e9b;hb=09aa2385846362f77aa2da3f25a3a4d07f5ab1db;hp=e74d669f58897ecc57b287405c948ab4ab76b06a;hpb=198765425d8c346faa41b601cba98247ca2ddac2;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/vehicles/unit/raptor.qc b/qcsrc/common/vehicles/unit/raptor.qc index e74d669f5..b8cf0d2a5 100644 --- a/qcsrc/common/vehicles/unit/raptor.qc +++ b/qcsrc/common/vehicles/unit/raptor.qc @@ -13,13 +13,13 @@ REGISTER_VEHICLE( ); #else -const float RSM_FIRST = 1; -const float RSM_BOMB = 1; -const float RSM_FLARE = 2; -const float RSM_LAST = 2; +const int RSM_FIRST = 1; +const int RSM_BOMB = 1; +const int RSM_FLARE = 2; +const int RSM_LAST = 2; #ifdef SVQC -float autocvar_g_vehicle_raptor; +bool autocvar_g_vehicle_raptor; float autocvar_g_vehicle_raptor_respawntime; float autocvar_g_vehicle_raptor_takeofftime; @@ -99,7 +99,7 @@ void raptor_bomblet_boom() { RadiusDamage (self, self.realowner, autocvar_g_vehicle_raptor_bomblet_damage, autocvar_g_vehicle_raptor_bomblet_edgedamage, - autocvar_g_vehicle_raptor_bomblet_radius, world, + autocvar_g_vehicle_raptor_bomblet_radius, world, world, autocvar_g_vehicle_raptor_bomblet_force, DEATH_VH_RAPT_BOMB, world); remove(self); } @@ -147,7 +147,7 @@ void raptor_bomb_burst() bomblet.velocity = normalize(normalize(self.velocity) + (randomvec() * autocvar_g_vehicle_raptor_bomblet_spread)) * vlen(self.velocity); PROJECTILE_MAKETRIGGER(bomblet); - CSQCProjectile(bomblet, TRUE, PROJECTILE_RAPTORBOMBLET, TRUE); + CSQCProjectile(bomblet, true, PROJECTILE_RAPTORBOMBLET, true); } remove(self); @@ -182,8 +182,8 @@ void raptor_bombdrop() PROJECTILE_MAKETRIGGER(bomb_1); PROJECTILE_MAKETRIGGER(bomb_2); - CSQCProjectile(bomb_1, TRUE, PROJECTILE_RAPTORBOMB, TRUE); - CSQCProjectile(bomb_2, TRUE, PROJECTILE_RAPTORBOMB, TRUE); + CSQCProjectile(bomb_1, true, PROJECTILE_RAPTORBOMB, true); + CSQCProjectile(bomb_2, true, PROJECTILE_RAPTORBOMB, true); } @@ -192,7 +192,7 @@ void raptor_fire_cannon(entity gun, string tagname) vehicles_projectile("raptor_cannon_muzzleflash", "weapons/lasergun_fire.wav", gettaginfo(gun, gettagindex(gun, tagname)), normalize(v_forward + randomvec() * autocvar_g_vehicle_raptor_cannon_spread) * autocvar_g_vehicle_raptor_cannon_speed, autocvar_g_vehicle_raptor_cannon_damage, autocvar_g_vehicle_raptor_cannon_radius, autocvar_g_vehicle_raptor_cannon_force, 0, - DEATH_VH_RAPT_CANNON, PROJECTILE_RAPTORCANNON, 0, TRUE, TRUE, self.owner); + DEATH_VH_RAPT_CANNON, PROJECTILE_RAPTORCANNON, 0, true, true, self.owner); } void raptor_land() @@ -308,6 +308,7 @@ float raptor_frame() if(intermission_running) { self.vehicle.velocity = '0 0 0'; + self.vehicle.avelocity = '0 0 0'; return 1; } @@ -539,13 +540,13 @@ float raptor_frame() } if(self.vehicle_flags & VHF_SHIELDREGEN) - vehicles_regen(raptor.dmg_time, vehicle_shield, autocvar_g_vehicle_raptor_shield, autocvar_g_vehicle_raptor_shield_regen_pause, autocvar_g_vehicle_raptor_shield_regen, frametime, TRUE); + vehicles_regen(raptor.dmg_time, vehicle_shield, autocvar_g_vehicle_raptor_shield, autocvar_g_vehicle_raptor_shield_regen_pause, autocvar_g_vehicle_raptor_shield_regen, frametime, true); if(self.vehicle_flags & VHF_HEALTHREGEN) - vehicles_regen(raptor.dmg_time, vehicle_health, autocvar_g_vehicle_raptor_health, autocvar_g_vehicle_raptor_health_regen_pause, autocvar_g_vehicle_raptor_health_regen, frametime, FALSE); + vehicles_regen(raptor.dmg_time, vehicle_health, autocvar_g_vehicle_raptor_health, autocvar_g_vehicle_raptor_health_regen_pause, autocvar_g_vehicle_raptor_health_regen, frametime, false); if(self.vehicle_flags & VHF_ENERGYREGEN) - vehicles_regen(raptor.cnt, vehicle_energy, autocvar_g_vehicle_raptor_energy, autocvar_g_vehicle_raptor_energy_regen_pause, autocvar_g_vehicle_raptor_energy_regen, frametime, FALSE); + vehicles_regen(raptor.cnt, vehicle_energy, autocvar_g_vehicle_raptor_energy, autocvar_g_vehicle_raptor_energy_regen_pause, autocvar_g_vehicle_raptor_energy_regen, frametime, false); if(!forbidWeaponUse(player)) if(raptor.vehicle_weapon2mode == RSM_BOMB) @@ -659,13 +660,13 @@ float raptor_takeoff() player.PlayerPhysplug = raptor_frame; if(self.vehicle_flags & VHF_SHIELDREGEN) - vehicles_regen(raptor.dmg_time, vehicle_shield, autocvar_g_vehicle_raptor_shield, autocvar_g_vehicle_raptor_shield_regen_pause, autocvar_g_vehicle_raptor_shield_regen, frametime, TRUE); + vehicles_regen(raptor.dmg_time, vehicle_shield, autocvar_g_vehicle_raptor_shield, autocvar_g_vehicle_raptor_shield_regen_pause, autocvar_g_vehicle_raptor_shield_regen, frametime, true); if(self.vehicle_flags & VHF_HEALTHREGEN) - vehicles_regen(raptor.dmg_time, vehicle_health, autocvar_g_vehicle_raptor_health, autocvar_g_vehicle_raptor_health_regen_pause, autocvar_g_vehicle_raptor_health_regen, frametime, FALSE); + vehicles_regen(raptor.dmg_time, vehicle_health, autocvar_g_vehicle_raptor_health, autocvar_g_vehicle_raptor_health_regen_pause, autocvar_g_vehicle_raptor_health_regen, frametime, false); if(self.vehicle_flags & VHF_ENERGYREGEN) - vehicles_regen(raptor.cnt, vehicle_energy, autocvar_g_vehicle_raptor_energy, autocvar_g_vehicle_raptor_energy_regen_pause, autocvar_g_vehicle_raptor_energy_regen, frametime, FALSE); + vehicles_regen(raptor.cnt, vehicle_energy, autocvar_g_vehicle_raptor_energy, autocvar_g_vehicle_raptor_energy_regen_pause, autocvar_g_vehicle_raptor_energy_regen, frametime, false); raptor.bomb1.alpha = raptor.bomb2.alpha = (time - raptor.lip) / (raptor.delay - raptor.lip); @@ -685,7 +686,7 @@ void raptor_blowup() { self.deadflag = DEAD_DEAD; self.vehicle_exit(VHEF_NORMAL); - RadiusDamage (self, self.enemy, 250, 15, 250, world, 250, DEATH_VH_RAPT_DEATH, world); + RadiusDamage (self, self.enemy, 250, 15, 250, world, world, 250, DEATH_VH_RAPT_DEATH, world); self.alpha = -1; self.movetype = MOVETYPE_NONE; @@ -727,6 +728,17 @@ float raptor_impulse(float _imp) { switch(_imp) { + case 1: + case 230: + self.vehicle.vehicle_weapon2mode = RSM_BOMB; + CSQCVehicleSetup(self, 0); + return true; + case 2: + case 231: + self.vehicle.vehicle_weapon2mode = RSM_FLARE; + CSQCVehicleSetup(self, 0); + return true; + case 10: case 15: case 18: @@ -735,7 +747,8 @@ float raptor_impulse(float _imp) self.vehicle.vehicle_weapon2mode = RSM_FIRST; CSQCVehicleSetup(self, 0); - return TRUE; + return true; + case 11: case 12: case 16: case 19: @@ -744,7 +757,7 @@ float raptor_impulse(float _imp) self.vehicle.vehicle_weapon2mode = RSM_LAST; CSQCVehicleSetup(self, 0); - return TRUE; + return true; /* case 17: // toss gun, could be used to exit? @@ -753,13 +766,13 @@ float raptor_impulse(float _imp) break; */ } - return FALSE; + return false; } void spawnfunc_vehicle_raptor() { if(!autocvar_g_vehicle_raptor) { remove(self); return; } - if(!vehicle_initialize(VEH_RAPTOR, FALSE)) { remove(self); return; } + if(!vehicle_initialize(VEH_RAPTOR, false)) { remove(self); return; } } float v_raptor(float req) @@ -771,7 +784,7 @@ float v_raptor(float req) if(autocvar_g_vehicle_raptor_bouncepain) vehicles_impact(autocvar_g_vehicle_raptor_bouncepain_x, autocvar_g_vehicle_raptor_bouncepain_y, autocvar_g_vehicle_raptor_bouncepain_z); - return TRUE; + return true; } case VR_ENTER: { @@ -791,11 +804,11 @@ float v_raptor(float req) setorigin(self.owner.flagcarried, '-20 0 96'); CSQCVehicleSetup(self.owner, 0); - return TRUE; + return true; } case VR_THINK: { - return TRUE; + return true; } case VR_DEATH: { @@ -818,7 +831,7 @@ float v_raptor(float req) self.colormod = '-0.5 -0.5 -0.5'; self.touch = raptor_blowup; - return TRUE; + return true; } case VR_SPAWN: { @@ -910,7 +923,7 @@ float v_raptor(float req) self.damageforcescale = 0.25; self.vehicle_health = autocvar_g_vehicle_raptor_health; self.vehicle_shield = autocvar_g_vehicle_raptor_shield; - return TRUE; + return true; } case VR_SETUP: { @@ -932,7 +945,7 @@ float v_raptor(float req) self.vehicle_shield = autocvar_g_vehicle_raptor_shield; self.max_health = self.vehicle_health; - return TRUE; + return true; } case VR_PRECACHE: { @@ -947,11 +960,11 @@ float v_raptor(float req) precache_sound ("vehicles/raptor_speed.wav"); precache_sound ("vehicles/missile_alarm.wav"); - return TRUE; + return true; } } - return TRUE; + return true; } #endif // SVQC @@ -961,6 +974,50 @@ float v_raptor(float req) #define raptor_bomb "gfx/vehicles/raptor_bombs.tga" #define raptor_drop "gfx/vehicles/axh-dropcross.tga" +void RaptorCBShellfragDraw() +{ + if(wasfreed(self)) + return; + + Movetype_Physics_MatchTicrate(autocvar_cl_gibs_ticrate, autocvar_cl_gibs_sloppy); + self.move_avelocity += randomvec() * 15; + self.renderflags = 0; + + if(self.cnt < time) + self.alpha = bound(0, self.nextthink - time, 1); + + if(self.alpha < ALPHA_MIN_VISIBLE) + remove(self); +} + +void RaptorCBShellfragToss(vector _org, vector _vel, vector _ang) +{ + entity sfrag; + + sfrag = spawn(); + setmodel(sfrag, "models/vehicles/clusterbomb_fragment.md3"); + setorigin(sfrag, _org); + + sfrag.move_movetype = MOVETYPE_BOUNCE; + sfrag.gravity = 0.15; + sfrag.solid = SOLID_CORPSE; + + sfrag.draw = RaptorCBShellfragDraw; + + sfrag.move_origin = sfrag.origin = _org; + sfrag.move_velocity = _vel; + sfrag.move_avelocity = prandomvec() * vlen(sfrag.move_velocity); + sfrag.angles = self.move_angles = _ang; + + sfrag.move_time = time; + sfrag.damageforcescale = 4; + + sfrag.nextthink = time + 3; + sfrag.cnt = time + 2; + sfrag.alpha = 1; + sfrag.drawmask = MASK_NORMAL; +} + float v_raptor(float req) { switch(req) @@ -968,7 +1025,7 @@ float v_raptor(float req) case VR_HUD: { if(autocvar_r_letterbox) - return TRUE; + return true; vector picsize, hudloc = '0 0 0', pic2size, picloc; string raptor_xhair; @@ -1153,7 +1210,7 @@ float v_raptor(float req) drawpic('0.5 0 0' * (vid_conwidth - picsize_x) + '0 0.5 0' * (vid_conheight - picsize_y), raptor_xhair, picsize, '1 1 1', 1, DRAWFLAG_NORMAL); } - return TRUE; + return true; } case VR_SETUP: { @@ -1162,22 +1219,15 @@ float v_raptor(float req) AuxiliaryXhair[1].axh_image = "gfx/vehicles/axh-bracket.tga"; AuxiliaryXhair[1].axh_scale = 0.25; - return TRUE; + return true; } case VR_PRECACHE: { - precache_model ("models/vehicles/raptor.dpm"); - precache_model ("models/vehicles/raptor_gun.dpm"); - precache_model ("models/vehicles/spinner.dpm"); - precache_model ("models/vehicles/raptor_cockpit.dpm"); - precache_model ("models/vehicles/clusterbomb_folded.md3"); - precache_model ("models/vehicles/raptor_body.dpm"); - - return TRUE; + return true; } } - return TRUE; + return true; } #endif // CSQC