X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fvehicles%2Fvehicle%2Fbumblebee.qc;h=c340d947035617492da6d224bbede286baf8e7be;hb=69eda62d02bc02ff50547bad514af3f7ce487413;hp=d3f802791eb578c3d6a6c26a26096f95bbde3cda;hpb=cabba6eeb71f3ca612aa30bb8c7dad9cbc9c0d52;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/vehicles/vehicle/bumblebee.qc b/qcsrc/common/vehicles/vehicle/bumblebee.qc index d3f802791..c340d9470 100644 --- a/qcsrc/common/vehicles/vehicle/bumblebee.qc +++ b/qcsrc/common/vehicles/vehicle/bumblebee.qc @@ -1,7 +1,5 @@ #include "bumblebee.qh" -#ifdef IMPLEMENTATION - const float BRG_SETUP = 2; const float BRG_START = 4; const float BRG_END = 8; @@ -235,7 +233,7 @@ void bumblebee_gunner_exit(entity this, int _exitflag) player.PlayerPhysplug = func_null; player.view_ofs = STAT(PL_VIEW_OFS, player); player.event_damage = PlayerDamage; - player.hud = HUD_NORMAL; + STAT(HUD, player) = HUD_NORMAL; player.teleportable = TELEPORT_NORMAL; for(int slot = 0; slot < MAX_WEAPONSLOTS; ++slot) { @@ -300,7 +298,7 @@ bool bumblebee_gunner_enter(entity this, entity player) set_movetype(player, MOVETYPE_NOCLIP); player.event_damage = func_null; player.view_ofs = '0 0 0'; - player.hud = gunner.hud; + STAT(HUD, player) = STAT(HUD, gunner); player.teleportable = false; player.PlayerPhysplug = gunner.PlayerPhysplug; player.vehicle_ammo1 = vehic.vehicle_ammo1; @@ -334,7 +332,7 @@ bool bumblebee_gunner_enter(entity this, entity player) WriteAngle(MSG_ONE, 0); // roll } - CSQCVehicleSetup(player, player.hud); + CSQCVehicleSetup(player, STAT(HUD, player)); MUTATOR_CALLHOOK(VehicleEnter, player, gunner); @@ -540,42 +538,33 @@ bool bumblebee_pilot_frame(entity this, float dt) { if(autocvar_g_vehicle_bumblebee_raygun) { - Damage(trace_ent, vehic, this, autocvar_g_vehicle_bumblebee_raygun_dps * PHYS_INPUT_FRAMETIME, DEATH_GENERIC.m_id, trace_endpos, v_forward * autocvar_g_vehicle_bumblebee_raygun_fps * PHYS_INPUT_FRAMETIME); + Damage(trace_ent, vehic, this, autocvar_g_vehicle_bumblebee_raygun_dps * PHYS_INPUT_FRAMETIME, DEATH_GENERIC.m_id, DMG_NOWEP, trace_endpos, v_forward * autocvar_g_vehicle_bumblebee_raygun_fps * PHYS_INPUT_FRAMETIME); vehic.vehicle_energy -= autocvar_g_vehicle_bumblebee_raygun_aps * PHYS_INPUT_FRAMETIME; } else { if(!IS_DEAD(trace_ent)) + { if((teamplay && trace_ent.team == this.team) || !teamplay) { + if(autocvar_g_vehicle_bumblebee_healgun_hps) + { + float hplimit = ((IS_PLAYER(trace_ent)) ? autocvar_g_vehicle_bumblebee_healgun_hmax : RESOURCE_LIMIT_NONE); + Heal(trace_ent, this, autocvar_g_vehicle_bumblebee_healgun_hps * dt, hplimit); + } if(IS_VEHICLE(trace_ent)) { if(autocvar_g_vehicle_bumblebee_healgun_sps && trace_ent.vehicle_health <= trace_ent.max_health) trace_ent.vehicle_shield = min(trace_ent.vehicle_shield + autocvar_g_vehicle_bumblebee_healgun_sps * dt, trace_ent.tur_head.max_health); - - if(autocvar_g_vehicle_bumblebee_healgun_hps) - trace_ent.vehicle_health = min(trace_ent.vehicle_health + autocvar_g_vehicle_bumblebee_healgun_hps * dt, trace_ent.max_health); } else if(IS_CLIENT(trace_ent)) { - if(trace_ent.health <= autocvar_g_vehicle_bumblebee_healgun_hmax && autocvar_g_vehicle_bumblebee_healgun_hps) - trace_ent.health = min(trace_ent.health + autocvar_g_vehicle_bumblebee_healgun_hps * dt, autocvar_g_vehicle_bumblebee_healgun_hmax); - - if(trace_ent.armorvalue <= autocvar_g_vehicle_bumblebee_healgun_amax && autocvar_g_vehicle_bumblebee_healgun_aps) - trace_ent.armorvalue = min(trace_ent.armorvalue + autocvar_g_vehicle_bumblebee_healgun_aps * dt, autocvar_g_vehicle_bumblebee_healgun_amax); - - trace_ent.health = min(trace_ent.health + autocvar_g_vehicle_bumblebee_healgun_hps * dt, autocvar_g_vehicle_bumblebee_healgun_hmax); - } - else if(IS_TURRET(trace_ent)) - { - if(trace_ent.health <= trace_ent.max_health && autocvar_g_vehicle_bumblebee_healgun_hps) - trace_ent.health = min(trace_ent.health + autocvar_g_vehicle_bumblebee_healgun_hps * dt, trace_ent.max_health); - //else ..hmmm what? ammo? - - trace_ent.SendFlags |= TNSF_STATUS; + if(GetResourceAmount(trace_ent, RESOURCE_ARMOR) <= autocvar_g_vehicle_bumblebee_healgun_amax && autocvar_g_vehicle_bumblebee_healgun_aps) + GiveResourceWithLimit(trace_ent, RESOURCE_ARMOR, autocvar_g_vehicle_bumblebee_healgun_aps * dt, autocvar_g_vehicle_bumblebee_healgun_amax); } } + } } } @@ -678,7 +667,7 @@ void bumblebee_blowup(entity this) autocvar_g_vehicle_bumblebee_blowup_edgedamage, autocvar_g_vehicle_bumblebee_blowup_radius, this, NULL, autocvar_g_vehicle_bumblebee_blowup_forceintensity, - DEATH_VH_BUMB_DEATH.m_id, NULL); + DEATH_VH_BUMB_DEATH.m_id, DMG_NOWEP, NULL); sound(this, CH_SHOTS, SND_ROCKET_IMPACT, VOL_BASE, ATTEN_NORM); Send_Effect(EFFECT_EXPLOSION_BIG, (this.origin + '0 0 100') + (randomvec() * 80), '0 0 0', 1); @@ -805,7 +794,7 @@ METHOD(Bumblebee, vr_death, void(Bumblebee thisveh, entity instance)) Send_Effect(EFFECT_EXPLOSION_MEDIUM, findbetterlocation(instance.origin, 16), '0 0 0', 1); - instance.health = 0; + SetResourceAmountExplicit(instance, RESOURCE_HEALTH, 0); instance.event_damage = func_null; instance.solid = SOLID_NOT; instance.takedamage = DAMAGE_NO; @@ -968,4 +957,3 @@ METHOD(Bumblebee, vr_setup, void(Bumblebee thisveh, entity instance)) } #endif -#endif