X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fvehicles%2Fvehicle%2Fracer.qc;h=21069a94997a4fbf5e93a75c061ffcfeaad74081;hp=93ed6d31d531ac6b06baa424090d54718f8d2219;hb=332093fd038d8de235e44c351b94a893ca0c0831;hpb=76de60deecae125795551ba1a4576a265d7ae7de diff --git a/qcsrc/common/vehicles/vehicle/racer.qc b/qcsrc/common/vehicles/vehicle/racer.qc index 93ed6d31d..21069a949 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; @@ -169,7 +171,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 +289,10 @@ bool racer_frame(entity this, float dt) Weapon wep1 = WEP_RACER; .entity weaponentity = weaponentities[0]; // TODO: unhardcode - if (!forbidWeaponUse(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); } @@ -327,7 +320,7 @@ bool racer_frame(entity this, float dt) } } - if(!forbidWeaponUse(player)) + if(!weaponLocked(player)) if(time > vehic.delay) if(PHYS_INPUT_BUTTON_ATCK2(player)) { @@ -359,12 +352,12 @@ bool racer_frame(entity this, float dt) vehicles_regen(vehic, vehic.dmg_time, vehicle_shield, autocvar_g_vehicle_racer_shield, autocvar_g_vehicle_racer_shield_regen_pause, autocvar_g_vehicle_racer_shield_regen, dt, true); if(vehic.vehicle_flags & VHF_HEALTHREGEN) - vehicles_regen(vehic, vehic.dmg_time, vehicle_health, autocvar_g_vehicle_racer_health, autocvar_g_vehicle_racer_health_regen_pause, autocvar_g_vehicle_racer_health_regen, dt, false); + vehicles_regen_resource(vehic, vehic.dmg_time, vehicle_health, autocvar_g_vehicle_racer_health, autocvar_g_vehicle_racer_health_regen_pause, autocvar_g_vehicle_racer_health_regen, dt, false, RES_HEALTH); if(vehic.vehicle_flags & VHF_ENERGYREGEN) vehicles_regen(vehic, vehic.wait, vehicle_energy, autocvar_g_vehicle_racer_energy, autocvar_g_vehicle_racer_energy_regen_pause, autocvar_g_vehicle_racer_energy_regen, dt, false); - VEHICLE_UPDATE_PLAYER(player, vehic, health, racer); + VEHICLE_UPDATE_PLAYER_RESOURCE(player, vehic, health, racer, RES_HEALTH); VEHICLE_UPDATE_PLAYER(player, vehic, energy, racer); if(vehic.vehicle_flags & VHF_HASSHIELD) @@ -380,7 +373,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 +393,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 +478,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,52 +507,44 @@ 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); - instance.owner.vehicle_health = (instance.vehicle_health / autocvar_g_vehicle_racer_health) * 100; +#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; - instance.vehicle_health = autocvar_g_vehicle_racer_health; + SetResourceExplicit(instance, RES_HEALTH, autocvar_g_vehicle_racer_health); instance.vehicle_shield = autocvar_g_vehicle_racer_shield; 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; instance.bouncefactor = autocvar_g_vehicle_racer_bouncefactor; instance.bouncestop = autocvar_g_vehicle_racer_bouncestop; instance.damageforcescale = 0.5; - instance.vehicle_health = autocvar_g_vehicle_racer_health; + SetResourceExplicit(instance, RES_HEALTH, autocvar_g_vehicle_racer_health); instance.vehicle_shield = autocvar_g_vehicle_racer_shield; #endif } @@ -566,7 +553,7 @@ METHOD(Racer, vr_death, void(Racer thisveh, entity instance)) { #ifdef SVQC setSendEntity(instance, func_null); // stop networking this racer (for now) - instance.health = 0; + SetResourceExplicit(instance, RES_HEALTH, 0); instance.event_damage = func_null; instance.solid = SOLID_CORPSE; instance.takedamage = DAMAGE_NO; @@ -611,8 +598,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) @@ -625,12 +611,14 @@ METHOD(Racer, vr_setup, void(Racer thisveh, entity instance)) instance.vehicle_flags |= VHF_HEALTHREGEN; instance.respawntime = autocvar_g_vehicle_racer_respawntime; - instance.vehicle_health = autocvar_g_vehicle_racer_health; + SetResourceExplicit(instance, RES_HEALTH, autocvar_g_vehicle_racer_health); instance.vehicle_shield = autocvar_g_vehicle_racer_shield; - instance.max_health = instance.vehicle_health; + instance.max_health = GetResource(instance, RES_HEALTH); #endif #ifdef CSQC AuxiliaryXhair[0].axh_image = vCROSS_LOCK; // Rocket #endif } + +#endif