X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fvehicles%2Fspiderbot.qc;h=de12407f558d9347c561ef77e8339ca3b35536f9;hb=334f8247b82a5aba3fe56cbabd59f77bcf0e3d03;hp=de0fab17487b1ed606ae38e898a7fd2911e23357;hpb=b13fc205bcea1459cbb8c8a0c042ded0fae3d139;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/vehicles/spiderbot.qc b/qcsrc/server/vehicles/spiderbot.qc index de0fab174..de12407f5 100644 --- a/qcsrc/server/vehicles/spiderbot.qc +++ b/qcsrc/server/vehicles/spiderbot.qc @@ -210,7 +210,7 @@ void spiderbot_rocket_do() { vector v; - entity rocket; + entity rocket = world; if (self.wait != -10) { @@ -286,11 +286,18 @@ void spiderbot_rocket_do() DEATH_SBROCKET, PROJECTILE_SPIDERROCKET, autocvar_g_vehicle_spiderbot_rocket_health, FALSE, TRUE, self.owner); crosshair_trace(self.owner); + rocket.pos1 = trace_endpos + randomvec() * (0.75 * autocvar_g_vehicle_spiderbot_rocket_radius); rocket.pos1_z = trace_endpos_z; - traceline(v, v + '0 0 1' * MAX_SHOT_DISTANCE, MOVE_WORLDONLY, self); - rocket.velocity = spiberbot_calcartillery(v, rocket.pos1, (0.75 * vlen(v - trace_endpos))); + traceline(v, v + '0 0 1' * MAX_SHOT_DISTANCE, MOVE_WORLDONLY, self); + float h1 = 0.75 * vlen(v - trace_endpos); + + //v = trace_endpos; + traceline(v , rocket.pos1 + '0 0 1' * MAX_SHOT_DISTANCE, MOVE_WORLDONLY, self); + float h2 = 0.75 * vlen(rocket.pos1 - v); + + rocket.velocity = spiberbot_calcartillery(v, rocket.pos1, ((h1 < h2) ? h1 : h2)); rocket.movetype = MOVETYPE_TOSS; rocket.gravity = 1; //rocket.think = spiderbot_rocket_artillery; @@ -488,10 +495,10 @@ float spiderbot_frame() v_forward = normalize(v_forward); v += v_forward * 50; -//void fireBallisticBullet(vector start, vector dir, float spread, float pSpeed, float lifetime, float damage, float headshotbonus, float force, float dtype, float tracereffects, float gravityfactor, float bulletconstant) +//void fireBallisticBullet(vector start, vector dir, float spread, float pSpeed, float lifetime, float damage, float force, float dtype, float tracereffects, float gravityfactor, float bulletconstant) fireBallisticBullet(v, v_forward, autocvar_g_vehicle_spiderbot_minigun_spread, autocvar_g_vehicle_spiderbot_minigun_speed, - 5, autocvar_g_vehicle_spiderbot_minigun_damage, 0, autocvar_g_vehicle_spiderbot_minigun_force, DEATH_SBMINIGUN, 0, 1, autocvar_g_vehicle_spiderbot_minigun_bulletconstant); + 5, autocvar_g_vehicle_spiderbot_minigun_damage, autocvar_g_vehicle_spiderbot_minigun_force, DEATH_SBMINIGUN, 0, 1, autocvar_g_vehicle_spiderbot_minigun_bulletconstant); endFireBallisticBullet(); // fireBullet (v, v_forward, autocvar_g_vehicle_spiderbot_minigun_spread, autocvar_g_vehicle_spiderbot_minigun_damage, @@ -516,7 +523,7 @@ float spiderbot_frame() } } else - vehicles_regen(cnt, vehicle_ammo1, autocvar_g_vehicle_spiderbot_minigun_ammo_max, + vehicles_regen(spider.cnt, vehicle_ammo1, autocvar_g_vehicle_spiderbot_minigun_ammo_max, autocvar_g_vehicle_spiderbot_minigun_ammo_regen_pause, autocvar_g_vehicle_spiderbot_minigun_ammo_regen, frametime, FALSE); @@ -524,10 +531,10 @@ float spiderbot_frame() spiderbot_rocket_do(); if(self.vehicle_flags & VHF_SHIELDREGEN) - vehicles_regen(dmg_time, vehicle_shield, autocvar_g_vehicle_spiderbot_shield, autocvar_g_vehicle_spiderbot_shield_regen_pause, autocvar_g_vehicle_spiderbot_shield_regen, frametime, TRUE); + vehicles_regen(spider.dmg_time, vehicle_shield, autocvar_g_vehicle_spiderbot_shield, autocvar_g_vehicle_spiderbot_shield_regen_pause, autocvar_g_vehicle_spiderbot_shield_regen, frametime, TRUE); if(self.vehicle_flags & VHF_HEALTHREGEN) - vehicles_regen(dmg_time, vehicle_health, autocvar_g_vehicle_spiderbot_health, autocvar_g_vehicle_spiderbot_health_regen_pause, autocvar_g_vehicle_spiderbot_health_regen, frametime, FALSE); + vehicles_regen(spider.dmg_time, vehicle_health, autocvar_g_vehicle_spiderbot_health, autocvar_g_vehicle_spiderbot_health_regen_pause, autocvar_g_vehicle_spiderbot_health_regen, frametime, FALSE); player.BUTTON_ATCK = player.BUTTON_ATCK2 = 0; player.vehicle_ammo2 = spider.tur_head.frame; @@ -558,6 +565,7 @@ void spiderbot_think() void spiderbot_enter() { + self.vehicle_weapon2mode = SBRM_GUIDE; self.movetype = MOVETYPE_WALK; CSQCVehicleSetup(self.owner, 0); self.owner.vehicle_health = (self.vehicle_health / autocvar_g_vehicle_spiderbot_health) * 100; @@ -727,9 +735,9 @@ void spiderbot_blowup() void spiderbot_die() { self.health = 0; - self.event_damage = SUB_Null; + self.event_damage = func_null; self.takedamage = DAMAGE_NO; - self.touch = SUB_Null; + self.touch = func_null; self.cnt = 3.4 + time + random() * 2; self.think = spiderbot_blowup; self.nextthink = time; @@ -800,11 +808,12 @@ void spiderbot_spawn(float _f) self.movetype = MOVETYPE_WALK; self.solid = SOLID_SLIDEBOX; self.alpha = self.tur_head.alpha = self.gun1.alpha = self.gun2.alpha = 1; - self.tur_head.angles = '0 0 0'; + self.tur_head.angles = '0 0 0'; setorigin(self, self.pos1 + '0 0 128'); self.angles = self.pos2; self.vehicle_impact = spider_impact; + self.damageforcescale = 0.03; } void spawnfunc_vehicle_spiderbot() @@ -859,7 +868,8 @@ void spawnfunc_vehicle_spiderbot() spiderbot_enter, spiderbot_exit, spiderbot_die, spiderbot_think, FALSE, - autocvar_g_vehicle_spiderbot_health)) + autocvar_g_vehicle_spiderbot_health, + autocvar_g_vehicle_spiderbot_shield)) { remove(self); return;