From: Jakob MG Date: Tue, 21 Jun 2011 17:29:46 +0000 (+0200) Subject: Merge remote branch 'origin/master' into tzork/turrets-csqc X-Git-Tag: xonotic-v0.5.0~199^2^2~8 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=add5162c2c034ff0e9eda824d3bf2b82e627be6c;p=xonotic%2Fxonotic-data.pk3dir.git Merge remote branch 'origin/master' into tzork/turrets-csqc Conflicts: qcsrc/client/Main.qc qcsrc/client/damage.qc qcsrc/qc-client.cbp --- add5162c2c034ff0e9eda824d3bf2b82e627be6c diff --cc qcsrc/client/Main.qc index c15d9c5a2,4e54f811c..fb9a1bb74 --- a/qcsrc/client/Main.qc +++ b/qcsrc/client/Main.qc @@@ -139,7 -139,8 +139,9 @@@ void CSQC_Init(void GibSplash_Precache(); Casings_Precache(); DamageInfo_Precache(); + Vehicles_Precache(); + turrets_precache(); + if(autocvar_cl_announcer != cl_announcer_prev) { Announcer_Precache(); if(cl_announcer_prev) @@@ -985,7 -986,7 +987,8 @@@ void(float bIsNewEntity) CSQC_Ent_Updat case ENT_CLIENT_LGBEAM: Ent_ReadHook(bIsNewEntity, ENT_CLIENT_LGBEAM); break; case ENT_CLIENT_GAUNTLET: Ent_ReadHook(bIsNewEntity, ENT_CLIENT_GAUNTLET); break; case ENT_CLIENT_ACCURACY: Ent_ReadAccuracy(); break; + case ENT_CLIENT_AUXILIARYXHAIR: Net_AuXair2(bIsNewEntity); break; + case ENT_CLIENT_TURRET: ent_turret(); break; default: //error(strcat(_("unknown entity type in CSQC_Ent_Update: %d\n"), self.enttype)); error(sprintf(_("Unknown entity type in CSQC_Ent_Update (enttype: %d, edict: %d, classname: %s)\n"), self.enttype, num_for_edict(self), self.classname)); diff --cc qcsrc/client/damage.qc index 7c750db74,cd338553a..6ff989e4a --- a/qcsrc/client/damage.qc +++ b/qcsrc/client/damage.qc @@@ -70,72 -70,78 +70,145 @@@ void Ent_DamageInfo(float isNew self = oldself; + if(DEATH_ISVEHICLE(w_deathtype)) + { + traceline(w_org - normalize(force) * 16, w_org + normalize(force) * 16, MOVE_NOMONSTERS, world); + if(trace_plane_normal != '0 0 0') + w_backoff = trace_plane_normal; + else + w_backoff = -1 * normalize(w_org - (w_org + normalize(force) * 16)); + + setorigin(self, w_org + w_backoff * 2); // for sound() calls + + switch(w_deathtype) + { + case DEATH_VHCRUSH: + break; + + case DEATH_SBMINIGUN: + string _snd; + _snd = strcat("weapons/ric", ftos(1 + rint(random() * 2)), ".waw"); + sound(self, CHAN_PROJECTILE, _snd, VOL_BASE, ATTN_NORM); + pointparticles(particleeffectnum("spiderbot_minigun_impact"), self.origin, w_backoff * 1000, 1); + break; + case DEATH_SBROCKET: + sound(self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM); + pointparticles(particleeffectnum("spiderbot_rocket_explode"), self.origin, w_backoff * 1000, 1); + break; + case DEATH_SBBLOWUP: + sound(self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_MIN); + pointparticles(particleeffectnum("explosion_big"), self.origin, w_backoff * 1000, 1); + break; + + case DEATH_WAKIGUN: + sound(self, CHAN_PROJECTILE, "weapons/laserimpact.wav", VOL_BASE, ATTN_NORM); + pointparticles(particleeffectnum("wakizashi_gun_impact"), self.origin, w_backoff * 1000, 1); + break; + case DEATH_WAKIROCKET: + sound(self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM); + pointparticles(particleeffectnum("wakizashi_rocket_explode"), self.origin, w_backoff * 1000, 1); + break; + case DEATH_WAKIBLOWUP: + sound(self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_MIN); + pointparticles(particleeffectnum("explosion_big"), self.origin, w_backoff * 1000, 1); + break; + + case DEATH_RAPTOR_CANNON: + sound(self, CHAN_PROJECTILE, "weapons/laserimpact.wav", VOL_BASE, ATTN_NORM); + pointparticles(particleeffectnum("raptor_cannon_impact"), self.origin, w_backoff * 1000, 1); + break; + case DEATH_RAPTOR_BOMB_SPLIT: + float i; + vector ang, vel; + for(i = 1; i < 4; ++i) + { + vel = normalize(w_org - (w_org + normalize(force) * 16)) + randomvec() * 128; + ang = vectoangles(vel); + RaptorCBShellfragToss(w_org, vel, ang + '0 0 1' * (120 * i)); + } + + + sound(self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM); + pointparticles(particleeffectnum("raptor_bomb_spread"), self.origin, w_backoff * 1000, 1); + break; + case DEATH_RAPTOR_BOMB: + sound(self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM); + pointparticles(particleeffectnum("raptor_bomb_impact"), self.origin, w_backoff * 1000, 1); + break; + case DEATH_RAPTOR_DEATH: + sound(self, CHAN_PROJECTILE, "weapons/laserimpact.wav", VOL_BASE, ATTN_MIN); + pointparticles(particleeffectnum("explosion_big"), self.origin, w_backoff * 1000, 1); + break; + } + } + ++ + if(DEATH_ISTURRET(w_deathtype)) + { + traceline(w_org - normalize(force) * 16, w_org + normalize(force) * 16, MOVE_NOMONSTERS, world); + if(trace_plane_normal != '0 0 0') + w_backoff = trace_plane_normal; + else + w_backoff = -1 * normalize(w_org - (w_org + normalize(force) * 16)); + + setorigin(self, w_org + w_backoff * 2); // for sound() calls + + switch(w_deathtype) + { + case DEATH_TURRET_EWHEEL: + sound(self, CHAN_PROJECTILE, "weapons/laserimpact.wav", VOL_BASE, ATTN_MIN); + pointparticles(particleeffectnum("electro_impact"), self.origin, w_backoff * 1000, 1); + break; + + case DEATH_TURRET_FLAC: + vector org2; + org2 = w_org + w_backoff * 6; + pointparticles(particleeffectnum("hagar_explode"), org2, '0 0 0', 1); + if (w_random<0.15) + sound(self, CHAN_PROJECTILE, "weapons/hagexp1.wav", VOL_BASE, ATTN_NORM); + else if (w_random<0.7) + sound(self, CHAN_PROJECTILE, "weapons/hagexp2.wav", VOL_BASE, ATTN_NORM); + else + sound(self, CHAN_PROJECTILE, "weapons/hagexp3.wav", VOL_BASE, ATTN_NORM); + + break; + + case DEATH_TURRET_MLRS: + case DEATH_TURRET_HK: + case DEATH_TURRET_WALKER_ROCKET: + case DEATH_TURRET_HELLION: + sound(self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_MIN); + pointparticles(particleeffectnum("rocket_explode"), self.origin, w_backoff * 1000, 1); + break; + + case DEATH_TURRET_MACHINEGUN: + case DEATH_TURRET_WALKER_GUN: + string _snd; + _snd = strcat("weapons/ric", ftos(1 + rint(random() * 2)), ".waw"); + sound(self, CHAN_PROJECTILE, _snd, VOL_BASE, ATTN_NORM); + pointparticles(particleeffectnum("machinegun_impact"), self.origin, w_backoff * 1000, 1); + break; + + case DEATH_TURRET_PLASMA: + sound(self, CHAN_PROJECTILE, "weapons/electro_impact.wav", VOL_BASE, ATTN_MIN); + pointparticles(particleeffectnum("electro_impact"), self.origin, w_backoff * 1000, 1); + break; + + case DEATH_TURRET_WALKER_MEELE: + sound(self, CHAN_PROJECTILE, "weapons/ric1.wav", VOL_BASE, ATTN_MIN); + pointparticles(particleeffectnum("TE_SPARK"), self.origin, w_backoff * 1000, 1); + break; + + case DEATH_TURRET_PHASER: + break; + + case DEATH_TURRET_TESLA: + te_smallflash(self.origin); + break; + + } + } + // TODO spawn particle effects and sounds based on w_deathtype if(!DEATH_ISSPECIAL(w_deathtype)) { diff --cc qcsrc/client/progs.src index 09c3bd1af,3fc65a672..0d024a941 --- a/qcsrc/client/progs.src +++ b/qcsrc/client/progs.src @@@ -30,10 -30,9 +30,11 @@@ prandom.q bgmscript.qh noise.qh teamplay.qh - +tturrets.qh +../server/tturrets/include/turrets_early.qh +../server/movelib.qc main.qh + vehicles/vehicles.qh sortlist.qc miscfunctions.qc diff --cc qcsrc/qc-client.cbp index 5ca67b7c3,a30c4c4f9..63e00e9e1 --- a/qcsrc/qc-client.cbp +++ b/qcsrc/qc-client.cbp @@@ -11,7 -11,7 +11,11 @@@ ++<<<<<<< HEAD + ++======= + ++>>>>>>> origin/master @@@ -45,12 -45,12 +49,21 @@@ ++<<<<<<< HEAD + + + + + + ++======= + + + + + + ++>>>>>>> origin/master @@@ -90,24 -85,15 +103,29 @@@ + + + ++<<<<<<< HEAD + + + + ++======= ++>>>>>>> origin/master + + + + + + diff --cc qcsrc/server/autocvars.qh index 606de1c3b,2a31300cc..f7075b9b2 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@@ -1009,74 -1009,7 +1009,12 @@@ float autocvar_g_turrets_unit_walker_st float autocvar_g_turrets_unit_walker_std_rocket_turnrate; float autocvar_g_turrets_unit_walker_std_rockets_range; float autocvar_g_turrets_unit_walker_std_rockets_range_min; +float autocvar_g_turrets_unit_walker_turn; +float autocvar_g_turrets_unit_walker_turn_walk; +float autocvar_g_turrets_unit_walker_turn_run; +float autocvar_g_turrets_unit_walker_turn_strafe; +float autocvar_g_turrets_unit_walker_turn_swim; float autocvar_g_use_ammunition; - float autocvar_g_vehicle_racer_afterburn_cost; - float autocvar_g_vehicle_racer_anglestabilizer; - float autocvar_g_vehicle_racer_downforce; - float autocvar_g_vehicle_racer_energy; - float autocvar_g_vehicle_racer_energy_usepause; - float autocvar_g_vehicle_racer_health; - float autocvar_g_vehicle_racer_laser_cost; - float autocvar_g_vehicle_racer_laser_damage; - float autocvar_g_vehicle_racer_laser_radius; - float autocvar_g_vehicle_racer_laser_refire; - float autocvar_g_vehicle_racer_laser_speed; - float autocvar_g_vehicle_racer_pitchspeed; - float autocvar_g_vehicle_racer_power_air; - float autocvar_g_vehicle_racer_power_min; - float autocvar_g_vehicle_racer_power_solid; - float autocvar_g_vehicle_racer_reload; - float autocvar_g_vehicle_racer_respawntime; - float autocvar_g_vehicle_racer_rocket_accel; - float autocvar_g_vehicle_racer_rocket_damage; - float autocvar_g_vehicle_racer_rocket_radius; - float autocvar_g_vehicle_racer_rocket_refire; - float autocvar_g_vehicle_racer_rocket_speed; - float autocvar_g_vehicle_racer_rocket_turnrate; - float autocvar_g_vehicle_racer_shield; - float autocvar_g_vehicle_racer_speed_afterburn; - float autocvar_g_vehicle_racer_speed_forward; - float autocvar_g_vehicle_racer_speed_strafe; - float autocvar_g_vehicle_racer_springlength; - float autocvar_g_vehicle_racer_turnroll; - float autocvar_g_vehicle_racer_turnspeed; - float autocvar_g_vehicle_raptor_reload; - float autocvar_g_vehicle_spiderbot_crush_dmg; - float autocvar_g_vehicle_spiderbot_crush_force; - float autocvar_g_vehicle_spiderbot_head_pitchlimit_down; - float autocvar_g_vehicle_spiderbot_head_pitchlimit_up; - float autocvar_g_vehicle_spiderbot_head_pitchspeed; - float autocvar_g_vehicle_spiderbot_head_turnlimit; - float autocvar_g_vehicle_spiderbot_head_turnspeed; - float autocvar_g_vehicle_spiderbot_health; - float autocvar_g_vehicle_spiderbot_minigun_cooldown; - float autocvar_g_vehicle_spiderbot_minigun_damage; - float autocvar_g_vehicle_spiderbot_minigun_heat; - float autocvar_g_vehicle_spiderbot_minigun_refire; - float autocvar_g_vehicle_spiderbot_minigun_spread; - float autocvar_g_vehicle_spiderbot_movement_inertia; - float autocvar_g_vehicle_spiderbot_respawntime; - float autocvar_g_vehicle_spiderbot_rocket_damage; - float autocvar_g_vehicle_spiderbot_rocket_edgedamage; - float autocvar_g_vehicle_spiderbot_rocket_force; - float autocvar_g_vehicle_spiderbot_rocket_health; - float autocvar_g_vehicle_spiderbot_rocket_lifetime; - float autocvar_g_vehicle_spiderbot_rocket_noise; - float autocvar_g_vehicle_spiderbot_rocket_radius; - float autocvar_g_vehicle_spiderbot_rocket_refire; - float autocvar_g_vehicle_spiderbot_rocket_reload; - float autocvar_g_vehicle_spiderbot_rocket_speed; - float autocvar_g_vehicle_spiderbot_rocket_turnrate; - float autocvar_g_vehicle_spiderbot_shield; - float autocvar_g_vehicle_spiderbot_speed_stop; - float autocvar_g_vehicle_spiderbot_speed_strafe; - float autocvar_g_vehicle_spiderbot_speed_walk; - float autocvar_g_vehicle_spiderbot_turnspeed; float autocvar_g_waypointeditor; float autocvar_g_waypoints_for_items; float autocvar_g_waypointsprite_deadlifetime;