From: Jakob MG Date: Sun, 19 Jun 2011 22:03:44 +0000 (+0200) Subject: pre-merge X-Git-Tag: xonotic-v0.5.0~199^2^2~12 X-Git-Url: https://de.git.xonotic.org/?a=commitdiff_plain;h=59adc8e29a54e29f5a50b599956c27949c1a0b77;p=xonotic%2Fxonotic-data.pk3dir.git pre-merge --- diff --git a/qcsrc/client/damage.qc b/qcsrc/client/damage.qc index f6e35ea6a..7c750db74 100644 --- a/qcsrc/client/damage.qc +++ b/qcsrc/client/damage.qc @@ -70,7 +70,6 @@ void Ent_DamageInfo(float isNew) self = oldself; - // TODO spawn particle effects and sounds based on w_deathtype if(DEATH_ISTURRET(w_deathtype)) { traceline(w_org - normalize(force) * 16, w_org + normalize(force) * 16, MOVE_NOMONSTERS, world); @@ -137,6 +136,7 @@ void Ent_DamageInfo(float isNew) } } + // TODO spawn particle effects and sounds based on w_deathtype if(!DEATH_ISSPECIAL(w_deathtype)) { float hitwep; diff --git a/qcsrc/client/tturrets.qc b/qcsrc/client/tturrets.qc index 2f09a2601..0202fe82a 100644 --- a/qcsrc/client/tturrets.qc +++ b/qcsrc/client/tturrets.qc @@ -155,7 +155,7 @@ void turret_draw() } -void turret_moving_draw() +void turret_walker_draw() { float dt; @@ -168,13 +168,38 @@ void turret_moving_draw() movelib_groundalign4point(300, 100, 0.25); setorigin(self, self.origin + self.velocity * dt); - if(self.turret_type == TID_WALKER) - setorigin(self.tur_head, gettaginfo(self, gettagindex(self, "tag_head"))); - else - setorigin(self.tur_head, self.origin); + setorigin(self.tur_head, gettaginfo(self, gettagindex(self, "tag_head"))); + + self.tur_head.angles += dt * self.tur_head.move_avelocity; + + self.angles_y = self.move_angles_y; + + if (self.health < 127) + if(random() < 0.25) + te_spark(self.origin + '0 0 40', randomvec() * 256 + '0 0 256', 16); +} + +void turret_ewheel_draw() +{ + float dt; + + dt = time - self.move_time; + self.move_time = time; + if(dt <= 0) + return; + + fixedmakevectors(self.angles); + movelib_groundalign4point(300, 100, 0.25); + + setorigin(self, self.origin + self.velocity * dt); + setorigin(self.tur_head, self.origin); self.tur_head.angles += dt * self.tur_head.move_avelocity; + // Simulate banking + self.angles_z -= self.angles_z * dt * 2; + self.angles_z = bound(-45, self.angles_z + ((self.move_angles_y - self.angles_y * -25) * dt), 45); + self.angles_y = self.move_angles_y; if (self.health < 127) @@ -218,8 +243,16 @@ void turret_construct() self.movetype = MOVETYPE_BOUNCE; self.move_movetype = MOVETYPE_BOUNCE; self.move_origin = self.origin; - self.move_time = time; - self.draw = turret_moving_draw; + self.move_time = time; + switch(self.turret_type) + { + case TID_EWHEEL: + self.draw = turret_ewheel_draw; + break; + case TID_WALKER: + self.draw = turret_walker_draw; + } + } } diff --git a/qcsrc/server/tturrets/system/system_main.qc b/qcsrc/server/tturrets/system/system_main.qc index 8662d51ed..73125cfe4 100644 --- a/qcsrc/server/tturrets/system/system_main.qc +++ b/qcsrc/server/tturrets/system/system_main.qc @@ -284,7 +284,9 @@ void turret_stdproc_track() self.tur_head.angles_y = anglemods(self.tur_head.angles_y); // Find the diffrence between where we currently aim and where we want to aim - move_angle = target_angle - (self.angles + self.tur_head.angles); + //move_angle = target_angle - (self.angles + self.tur_head.angles); + move_angle = AnglesTransform_ToAngles(AnglesTransform_LeftDivide(AnglesTransform_FromAngles(self.angles), AnglesTransform_FromAngles(target_angle))) - self.tur_head.angles; + move_angle = shortangle_vxy(move_angle,(self.angles + self.tur_head.angles)); switch(self.track_type) diff --git a/qcsrc/server/tturrets/units/unit_ewheel.qc b/qcsrc/server/tturrets/units/unit_ewheel.qc index 5e737c4ef..fb5007c57 100644 --- a/qcsrc/server/tturrets/units/unit_ewheel.qc +++ b/qcsrc/server/tturrets/units/unit_ewheel.qc @@ -4,19 +4,6 @@ #define ewheel_amin_bck_slow 3 #define ewheel_amin_bck_fast 4 -float ewheel_speed_fast; -float ewheel_speed_slow; -float ewheel_speed_slower; -float ewheel_speed_stop; - -void turret_ewheel_loadcvars() -{ - ewheel_speed_fast = autocvar_g_turrets_unit_ewheel_speed_fast; - ewheel_speed_slow = autocvar_g_turrets_unit_ewheel_speed_slow; - ewheel_speed_slower = autocvar_g_turrets_unit_ewheel_speed_slower; - ewheel_speed_stop = autocvar_g_turrets_unit_ewheel_speed_stop; -} - void turret_ewheel_projectile_explode() { #ifdef TURRET_DEBUG @@ -107,7 +94,7 @@ void ewheel_move_path() self.moveto = self.pathcurrent.origin; self.steerto = steerlib_attract2(self.moveto, 0.5, 500, 0.95); - movelib_move_simple(v_forward, ewheel_speed_fast, 0.4); + movelib_move_simple(v_forward, autocvar_g_turrets_unit_ewheel_speed_fast, 0.4); return; } @@ -129,29 +116,29 @@ void ewheel_move_enemy() if ( self.tur_head.spawnshieldtime < 1 ) { newframe = ewheel_amin_fwd_fast; - movelib_move_simple(v_forward, ewheel_speed_fast, 0.4); + movelib_move_simple(v_forward, autocvar_g_turrets_unit_ewheel_speed_fast, 0.4); } else if (self.tur_head.spawnshieldtime < 2) { newframe = ewheel_amin_fwd_slow; - movelib_move_simple(v_forward, ewheel_speed_slow, 0.4); + movelib_move_simple(v_forward, autocvar_g_turrets_unit_ewheel_speed_slow, 0.4); } else { newframe = ewheel_amin_fwd_slow; - movelib_move_simple(v_forward, ewheel_speed_slower, 0.4); + movelib_move_simple(v_forward, autocvar_g_turrets_unit_ewheel_speed_slower, 0.4); } } else if (self.tur_dist_enemy < self.target_range_optimal * 0.5) { newframe = ewheel_amin_bck_slow; - movelib_move_simple(v_forward * -1, ewheel_speed_slow, 0.4); + movelib_move_simple(v_forward * -1, autocvar_g_turrets_unit_ewheel_speed_slow, 0.4); } else { newframe = ewheel_amin_stop; - movelib_beak_simple(ewheel_speed_stop); + movelib_beak_simple(autocvar_g_turrets_unit_ewheel_speed_stop); } if(self.frame != newframe) @@ -173,43 +160,30 @@ void ewheel_move_idle() self.frame = 0; if (vlen(self.velocity)) - movelib_beak_simple(ewheel_speed_stop); + movelib_beak_simple(autocvar_g_turrets_unit_ewheel_speed_stop); } void ewheel_postthink() { float vz; - vector wish_angle,real_angle; - - /* - if(self.enemy) - dprint("enemy!\n"); - else - dprint("nothign =(!\n"); - */ + vector wish_angle, real_angle; vz = self.velocity_z; self.angles_x = anglemods(self.angles_x); self.angles_y = anglemods(self.angles_y); - //self.angles_x *= -1; fixedmakevectors(self.angles); - //self.angles_x *= -1; wish_angle = normalize(self.steerto); wish_angle = vectoangles(wish_angle); real_angle = wish_angle - self.angles; - real_angle = shortangle_vxy(real_angle,self.tur_head.angles); + real_angle = shortangle_vxy(real_angle, self.tur_head.angles); self.tur_head.spawnshieldtime = fabs(real_angle_y); - real_angle_y = bound(-self.tur_head.aim_speed,real_angle_y,self.tur_head.aim_speed); + real_angle_y = bound(-self.tur_head.aim_speed, real_angle_y, self.tur_head.aim_speed); self.angles_y = (self.angles_y + real_angle_y); - // Simulate banking - self.angles_z -= self.angles_z * frametime * 2; - self.angles_z = bound(-45,self.angles_z + ((real_angle_y * -25) * frametime),45); - if(self.enemy) ewheel_move_enemy(); else if(self.pathcurrent) @@ -229,7 +203,7 @@ void ewheel_respawnhook() entity e; // Respawn is called & first spawn to, to set team. need to make sure we do not move the initial spawn. - if(self.movetype != MOVETYPE_WALK) + if(self.movetype != MOVETYPE_WALK) return; self.velocity = '0 0 0'; @@ -260,8 +234,6 @@ void ewheel_diehook() { self.velocity = '0 0 0'; - //turret_trowgib2(self.origin, self.velocity + '0 0 400', '-0.6 -0.2 -02', self, 3 + time + random() * 2); - if (self.pathcurrent) pathlib_deletepath(self.pathcurrent.owner); @@ -272,7 +244,8 @@ void turret_ewheel_dinit() { entity e; - if (self.netname == "") self.netname = "eWheel Turret"; + if (self.netname == "") + self.netname = "eWheel Turret"; if (self.target != "") { @@ -352,12 +325,6 @@ void spawnfunc_turret_ewheel() precache_model ("models/turrets/ewheel-base2.md3"); precache_model ("models/turrets/ewheel-gun1.md3"); - precache_model ("models/pathlib/goodsquare.md3"); - precache_model ("models/pathlib/badsquare.md3"); - precache_model ("models/pathlib/square.md3"); - - turret_ewheel_loadcvars(); - self.think = turret_ewheel_dinit; self.nextthink = time + 0.5; }