X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fvehicles%2Fvehicle%2Fraptor.qc;h=5424d1cdf5cd132479d44fdcf407efb2c8f0bfef;hb=63ab06764e6e0a20481ab406863eb7bca32cb669;hp=5dbd4f4ccb8adc8726f6022949e83348d1fe3305;hpb=d365412f17cdfe9f8cc49fbeb54f9a636352fab5;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/vehicles/vehicle/raptor.qc b/qcsrc/common/vehicles/vehicle/raptor.qc index 5dbd4f4cc..5424d1cdf 100644 --- a/qcsrc/common/vehicles/vehicle/raptor.qc +++ b/qcsrc/common/vehicles/vehicle/raptor.qc @@ -83,6 +83,8 @@ void raptor_land(entity this) void raptor_exit(entity this, int eject) { + entity player = this.owner; + this.tur_head.exteriormodeltoclient = NULL; if(!IS_DEAD(this)) @@ -91,7 +93,7 @@ void raptor_exit(entity this, int eject) this.nextthink = time; } - if(!this.owner) + if(!player) return; makevectors(this.angles); @@ -99,33 +101,33 @@ void raptor_exit(entity this, int eject) if(eject) { spot = this.origin + v_forward * 100 + '0 0 64'; - spot = vehicles_findgoodexit(this, spot); - setorigin(this.owner , spot); - this.owner.velocity = (v_up + v_forward * 0.25) * 750; - this.owner.oldvelocity = this.owner.velocity; + spot = vehicles_findgoodexit(this, player, spot); + setorigin(player, spot); + player.velocity = (v_up + v_forward * 0.25) * 750; + player.oldvelocity = player.velocity; } else { if(vdist(this.velocity, >, 2 * autocvar_sv_maxairspeed)) { - this.owner.velocity = normalize(this.velocity) * autocvar_sv_maxairspeed * 2; - this.owner.velocity_z += 200; + player.velocity = normalize(this.velocity) * autocvar_sv_maxairspeed * 2; + player.velocity_z += 200; spot = this.origin + v_forward * 32 + '0 0 64'; - spot = vehicles_findgoodexit(this, spot); + spot = vehicles_findgoodexit(this, player, spot); } else { - this.owner.velocity = this.velocity * 0.5; - this.owner.velocity_z += 10; + player.velocity = this.velocity * 0.5; + player.velocity_z += 10; spot = this.origin - v_forward * 200 + '0 0 64'; - spot = vehicles_findgoodexit(this, spot); + spot = vehicles_findgoodexit(this, player, spot); } - this.owner.oldvelocity = this.owner.velocity; - setorigin(this.owner , spot); + player.oldvelocity = player.velocity; + setorigin(player, spot); } - antilag_clear(this.owner, CS(this.owner)); this.owner = NULL; + antilag_clear(player, CS(player)); } bool raptor_frame(entity this, float dt) @@ -133,7 +135,7 @@ bool raptor_frame(entity this, float dt) entity vehic = this.vehicle; return = true; - if(gameover) + if(game_stopped) { vehic.solid = SOLID_NOT; vehic.takedamage = DAMAGE_NO; @@ -252,6 +254,7 @@ bool raptor_frame(entity this, float dt) vehic.velocity += df * dt; this.velocity = this.movement = vehic.velocity; setorigin(this, vehic.origin + '0 0 32'); + this.oldorigin = this.origin; // negate fall damage this.vehicle_weapon2mode = vehic.vehicle_weapon2mode; @@ -351,7 +354,7 @@ bool raptor_frame(entity this, float dt) /* ad = ad * 0.5; v_forward = vf * 0.5; - traceline(ad, ad + v_forward * MAX_SHOT_DISTANCE, MOVE_NORMAL, vehic); + traceline(ad, ad + v_forward * max_shot_distance, MOVE_NORMAL, vehic); UpdateAuxiliaryXhair(this, trace_endpos, '0 1 0', 0); */ @@ -459,10 +462,13 @@ bool raptor_takeoff(entity this, float dt) PHYS_INPUT_BUTTON_ATCK(this) = PHYS_INPUT_BUTTON_ATCK2(this) = PHYS_INPUT_BUTTON_CROUCH(this) = false; setorigin(this, vehic.origin + '0 0 32'); + this.oldorigin = this.origin; } else this.PlayerPhysplug = raptor_frame; + this.vehicle_weapon2mode = vehic.vehicle_weapon2mode; + if(vehic.vehicle_flags & VHF_SHIELDREGEN) vehicles_regen(vehic, vehic.dmg_time, vehicle_shield, autocvar_g_vehicle_raptor_shield, autocvar_g_vehicle_raptor_shield_regen_pause, autocvar_g_vehicle_raptor_shield_regen, dt, true); @@ -773,6 +779,9 @@ METHOD(Raptor, vr_crosshair, void(Raptor thisveh, entity player)) dropmark = spawn(); dropmark.owner = player; dropmark.gravity = 1; + dropmark.dphitcontentsmask = DPCONTENTS_SOLID; + dropmark.solid = SOLID_CORPSE; + set_movetype(dropmark, MOVETYPE_BOUNCE); } float reload2 = STAT(VEHICLESTAT_RELOAD2) * 0.01;