X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fvehicles%2Fvehicle%2Fracer.qc;h=b3cac72e5c8d8dddad0a0e72ae103ccf23d3fdf8;hb=b2108fdf144cd75a50be6fba1d68a642f41a1531;hp=eb9d6623a698848a507037c4bcb43aeadc5eee16;hpb=ab8141544c2cacf1e647072ea64749625cc13b00;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/vehicles/vehicle/racer.qc b/qcsrc/common/vehicles/vehicle/racer.qc index eb9d6623a..b3cac72e5 100644 --- a/qcsrc/common/vehicles/vehicle/racer.qc +++ b/qcsrc/common/vehicles/vehicle/racer.qc @@ -1,5 +1,7 @@ #include "racer.qh" +#ifdef GAMEQC + #ifdef SVQC #include @@ -77,26 +79,26 @@ vector autocvar_g_vehicle_racer_bouncepain = '200 0.15 150'; .float racer_watertime; -var vector racer_force_from_tag(entity this, string tag_name, float spring_length, float max_power); +var .vector(entity this, string tag_name, float spring_length, float max_power) racer_force_from_tag; -void racer_align4point(entity this, float _delta) +void racer_align4point(entity this, entity player, float _delta) { vector push_vector; float fl_push, fr_push, bl_push, br_push; - push_vector = racer_force_from_tag(this, "tag_engine_fr", autocvar_g_vehicle_racer_springlength, autocvar_g_vehicle_racer_hoverpower); + push_vector = this.racer_force_from_tag(this, "tag_engine_fr", autocvar_g_vehicle_racer_springlength, autocvar_g_vehicle_racer_hoverpower); fr_push = force_fromtag_normpower; //vehicles_sweap_collision(force_fromtag_origin, this.velocity, _delta, v_add, autocvar_g_vehicle_racer_collision_multiplier); - push_vector += racer_force_from_tag(this, "tag_engine_fl", autocvar_g_vehicle_racer_springlength, autocvar_g_vehicle_racer_hoverpower); + push_vector += this.racer_force_from_tag(this, "tag_engine_fl", autocvar_g_vehicle_racer_springlength, autocvar_g_vehicle_racer_hoverpower); fl_push = force_fromtag_normpower; //vehicles_sweap_collision(force_fromtag_origin, this.velocity, _delta, v_add, autocvar_g_vehicle_racer_collision_multiplier); - push_vector += racer_force_from_tag(this, "tag_engine_br", autocvar_g_vehicle_racer_springlength, autocvar_g_vehicle_racer_hoverpower); + push_vector += this.racer_force_from_tag(this, "tag_engine_br", autocvar_g_vehicle_racer_springlength, autocvar_g_vehicle_racer_hoverpower); br_push = force_fromtag_normpower; //vehicles_sweap_collision(force_fromtag_origin, this.velocity, _delta, v_add, autocvar_g_vehicle_racer_collision_multiplier); - push_vector += racer_force_from_tag(this, "tag_engine_bl", autocvar_g_vehicle_racer_springlength, autocvar_g_vehicle_racer_hoverpower); + push_vector += this.racer_force_from_tag(this, "tag_engine_bl", autocvar_g_vehicle_racer_springlength, autocvar_g_vehicle_racer_hoverpower); bl_push = force_fromtag_normpower; //vehicles_sweap_collision(force_fromtag_origin, this.velocity, _delta, v_add, autocvar_g_vehicle_racer_collision_multiplier); @@ -109,7 +111,7 @@ void racer_align4point(entity this, float _delta) { uforce = autocvar_g_vehicle_racer_water_upforcedamper; - if(PHYS_INPUT_BUTTON_CROUCH(this.owner) && time < this.air_finished) + if(PHYS_INPUT_BUTTON_CROUCH(player) && time < this.air_finished) this.velocity_z += 30; else this.velocity_z += 200; @@ -161,6 +163,8 @@ bool racer_frame(entity this, float dt) int cont = Mod_Q1BSP_SuperContentsFromNativeContents(pointcontents(vehic.origin)); if(!(cont & DPCONTENTS_WATER)) + vehic.air_finished = 0; + else if (!vehic.air_finished) vehic.air_finished = time + autocvar_g_vehicle_racer_water_time; if(IS_DEAD(vehic)) @@ -169,7 +173,7 @@ bool racer_frame(entity this, float dt) return; } - racer_align4point(vehic, dt); + racer_align4point(vehic, player, dt); PHYS_INPUT_BUTTON_ZOOM(player) = PHYS_INPUT_BUTTON_CROUCH(player) = false; @@ -287,19 +291,10 @@ bool racer_frame(entity this, float dt) Weapon wep1 = WEP_RACER; .entity weaponentity = weaponentities[0]; // TODO: unhardcode - if (!weaponLocked(player)) + if (!weaponLocked(player) && !weaponUseForbidden(player)) if (PHYS_INPUT_BUTTON_ATCK(player)) if (wep1.wr_checkammo1(wep1, vehic, weaponentity)) { - string tagname = (vehic.cnt) - ? (vehic.cnt = 0, "tag_fire1") - : (vehic.cnt = 1, "tag_fire2"); - vector org = gettaginfo(vehic, gettagindex(vehic, tagname)); - w_shotorg = org; - w_shotdir = v_forward; - // Fix z-aim (for chase mode) - crosshair_trace(player); - w_shotdir.z = normalize(trace_endpos - org).z * 0.5; wep1.wr_think(wep1, vehic, weaponentity, 1); } @@ -380,7 +375,9 @@ bool racer_frame(entity this, float dt) void racer_think(entity this) { - this.nextthink = time + autocvar_g_vehicle_racer_thinkrate; + float dt = autocvar_g_vehicle_racer_thinkrate; + + this.nextthink = time + dt; tracebox(this.origin, this.mins, this.maxs, this.origin - ('0 0 1' * autocvar_g_vehicle_racer_springlength), MOVE_NOMONSTERS, this); @@ -398,12 +395,12 @@ void racer_think(entity this) this.velocity_z += 200; } - this.velocity += df * autocvar_g_vehicle_racer_thinkrate; + this.velocity += df * dt; if(this.velocity_z > 0) - this.velocity_z *= 1 - forced * autocvar_g_vehicle_racer_thinkrate; + this.velocity_z *= 1 - forced * dt; - this.angles_x *= 1 - (autocvar_g_vehicle_racer_anglestabilizer * autocvar_g_vehicle_racer_thinkrate); - this.angles_z *= 1 - (autocvar_g_vehicle_racer_anglestabilizer * autocvar_g_vehicle_racer_thinkrate); + this.angles_x *= 1 - (autocvar_g_vehicle_racer_anglestabilizer * dt); + this.angles_z *= 1 - (autocvar_g_vehicle_racer_anglestabilizer * dt); CSQCMODEL_AUTOUPDATE(this); } @@ -483,7 +480,7 @@ void racer_blowup_think(entity this) if(time >= this.delay) racer_blowup(this); - CSQCMODEL_AUTOUPDATE(this); + //CSQCMODEL_AUTOUPDATE(this); } void racer_deadtouch(entity this, entity toucher) @@ -512,35 +509,23 @@ METHOD(Racer, vr_impact, void(Racer thisveh, entity instance)) METHOD(Racer, vr_enter, void(Racer thisveh, entity instance)) { -#ifdef SVQC set_movetype(instance, MOVETYPE_BOUNCE); +#ifdef SVQC instance.owner.vehicle_health = (GetResource(instance, RES_HEALTH) / autocvar_g_vehicle_racer_health) * 100; instance.owner.vehicle_shield = (instance.vehicle_shield / autocvar_g_vehicle_racer_shield) * 100; if(instance.owner.flagcarried) setorigin(instance.owner.flagcarried, '-190 0 96'); -#elif defined(CSQC) - set_movetype(instance, MOVETYPE_BOUNCE); #endif } METHOD(Racer, vr_spawn, void(Racer thisveh, entity instance)) { #ifdef SVQC - if(instance.scale != 0.5) - { - if(autocvar_g_vehicle_racer_hovertype != 0) - racer_force_from_tag = vehicles_force_fromtag_maglev; - else - racer_force_from_tag = vehicles_force_fromtag_hover; - - // FIXME: this be hakkz, fix the models insted (scale body, add tag_viewport to the hudmodel). - instance.scale = 0.5; - setattachment(instance.vehicle_hudmodel, instance, ""); - setattachment(instance.vehicle_viewport, instance, "tag_viewport"); - - instance.mass = 900; - } + if(autocvar_g_vehicle_racer_hovertype != 0) + instance.racer_force_from_tag = vehicles_force_fromtag_maglev; + else + instance.racer_force_from_tag = vehicles_force_fromtag_hover; setthink(instance, racer_think); instance.nextthink = time; @@ -550,7 +535,11 @@ METHOD(Racer, vr_spawn, void(Racer thisveh, entity instance)) set_movetype(instance, MOVETYPE_TOSS); instance.solid = SOLID_SLIDEBOX; instance.delay = time; - instance.scale = 0.5; + instance.scale = 0.5; // FIXME: this be hakkz, fix the models insted (scale body, add tag_viewport to the hudmodel). + instance.mass = 900; + + setattachment(instance.vehicle_hudmodel, instance, ""); + setattachment(instance.vehicle_viewport, instance, "tag_viewport"); instance.PlayerPhysplug = racer_frame; @@ -611,8 +600,7 @@ METHOD(Racer, vr_setup, void(Racer thisveh, entity instance)) instance.vehicle_exit = racer_exit; // we have no need to network energy - if(autocvar_g_vehicle_racer_energy) - if(autocvar_g_vehicle_racer_energy_regen) + if(autocvar_g_vehicle_racer_energy && autocvar_g_vehicle_racer_energy_regen) instance.vehicle_flags |= VHF_ENERGYREGEN; if(autocvar_g_vehicle_racer_shield) @@ -634,3 +622,5 @@ METHOD(Racer, vr_setup, void(Racer thisveh, entity instance)) AuxiliaryXhair[0].axh_image = vCROSS_LOCK; // Rocket #endif } + +#endif