X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fturrets%2Fsv_turrets.qc;h=fec1e885f1e0cce7d1b5c3fac6ad2fdb48372336;hb=f842e5c9c443c2fea7a82762a6ba0f7b88938770;hp=49bd505eda0a1063571396da510df7c65729d45d;hpb=dd56fad16f10856522e381bbecdfb887f86b0f8e;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/turrets/sv_turrets.qc b/qcsrc/common/turrets/sv_turrets.qc index 49bd505ed..fec1e885f 100644 --- a/qcsrc/common/turrets/sv_turrets.qc +++ b/qcsrc/common/turrets/sv_turrets.qc @@ -1,5 +1,5 @@ #ifdef SVQC -#include "../../server/autocvars.qh" +#include // Generic aiming vector turret_aim_generic() @@ -31,7 +31,7 @@ vector turret_aim_generic() prep = pre_pos + (self.enemy.velocity * (impact_time + mintime)); if(self.aim_flags & TFL_AIM_ZPREDICT) - if(!(self.enemy.flags & FL_ONGROUND)) + if(!IS_ONGROUND(self.enemy)) if(self.enemy.movetype == MOVETYPE_WALK || self.enemy.movetype == MOVETYPE_TOSS || self.enemy.movetype == MOVETYPE_BOUNCE) { float vz; @@ -119,7 +119,7 @@ float turret_targetscore_generic(entity _turret, entity _target) (m_score * _turret.target_select_missilebias) + (p_score * _turret.target_select_playerbias); - if(_turret.target_range < vlen(_turret.tur_shotorg - real_origin(_target))) + if(vdist((_turret.tur_shotorg - real_origin(_target)), >, _turret.target_range)) { //dprint("Wtf?\n"); score *= 0.001; @@ -207,17 +207,17 @@ void turret_die() } } -void turret_damage (entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector vforce) -{SELFPARAM(); +void turret_damage(entity this, entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector vforce) +{ // Enough already! - if(self.deadflag == DEAD_DEAD) + if(this.deadflag == DEAD_DEAD) return; // Inactive turrets take no damage. (hm..) - if(!self.active) + if(!this.active) return; - if(SAME_TEAM(self, attacker)) + if(SAME_TEAM(this, attacker)) { if(autocvar_g_friendlyfire) damage = damage * autocvar_g_friendlyfire; @@ -225,30 +225,30 @@ void turret_damage (entity inflictor, entity attacker, float damage, int deathty return; } - self.health -= damage; + this.health -= damage; // thorw head slightly off aim when hit? - if (self.damage_flags & TFL_DMG_HEADSHAKE) + if (this.damage_flags & TFL_DMG_HEADSHAKE) { - self.tur_head.angles_x = self.tur_head.angles_x + (-0.5 + random()) * damage; - self.tur_head.angles_y = self.tur_head.angles_y + (-0.5 + random()) * damage; + this.tur_head.angles_x = this.tur_head.angles_x + (-0.5 + random()) * damage; + this.tur_head.angles_y = this.tur_head.angles_y + (-0.5 + random()) * damage; - self.SendFlags |= TNSF_ANG; + this.SendFlags |= TNSF_ANG; } - if (self.turret_flags & TUR_FLAG_MOVE) - self.velocity = self.velocity + vforce; + if (this.turret_flags & TUR_FLAG_MOVE) + this.velocity = this.velocity + vforce; - if (self.health <= 0) + if (this.health <= 0) { - self.event_damage = func_null; - self.tur_head.event_damage = func_null; - self.takedamage = DAMAGE_NO; - self.nextthink = time; - self.think = turret_die; + this.event_damage = func_null; + this.tur_head.event_damage = func_null; + this.takedamage = DAMAGE_NO; + this.nextthink = time; + this.think = turret_die; } - self.SendFlags |= TNSF_STATUS; + this.SendFlags |= TNSF_STATUS; } void() turret_think; @@ -302,7 +302,7 @@ void turrets_setframe(float _frame, float client_only) bool turret_send(entity this, entity to, float sf) { - WriteByte(MSG_ENTITY, ENT_CLIENT_TURRET); + WriteHeader(MSG_ENTITY, ENT_CLIENT_TURRET); WriteByte(MSG_ENTITY, sf); if(sf & TNSF_SETUP) { @@ -360,7 +360,7 @@ bool turret_send(entity this, entity to, float sf) return true; } -void load_unit_settings(entity ent, float is_reload) +void load_unit_settings(entity ent, bool is_reload) {SELFPARAM(); string unitname = ent.netname; string sbase; @@ -449,13 +449,13 @@ void turret_projectile_touch() turret_projectile_explode(); } -void turret_projectile_damage(entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector vforce) -{SELFPARAM(); - self.velocity += vforce; - self.health -= damage; - //self.realowner = attacker; // Dont change realowner, it does not make much sense for turrets - if(self.health <= 0) - W_PrepareExplosionByDamage(self.owner, turret_projectile_explode); +void turret_projectile_damage(entity this, entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector vforce) +{ + this.velocity += vforce; + this.health -= damage; + //this.realowner = attacker; // Dont change realowner, it does not make much sense for turrets + if(this.health <= 0) + WITH(entity, self, this, W_PrepareExplosionByDamage(this.owner, turret_projectile_explode)); } entity turret_projectile(string _snd, float _size, float _health, float _death, float _proj_type, float _cull, float _cli_anim) @@ -726,7 +726,7 @@ float turret_validate_target(entity e_turret, entity e_target, float validate_fl } else if (e_target.health <= 0) return -6; - else if(e_target.frozen > 0) + else if(STAT(FROZEN, e_target) > 0) return -6; // player @@ -735,7 +735,7 @@ float turret_validate_target(entity e_turret, entity e_target, float validate_fl if(!(validate_flags & TFL_TARGETSELECT_PLAYERS)) return -7; - if (e_target.deadflag != DEAD_NO) + if (IS_DEAD(e_target)) return -8; } @@ -816,7 +816,7 @@ float turret_validate_target(entity e_turret, entity e_target, float validate_fl traceline(e_turret.origin + '0 0 16', v_tmp, 0, e_turret); - if (e_turret.aim_firetolerance_dist < vlen(v_tmp - trace_endpos)) + if(vdist(v_tmp - trace_endpos, >, e_turret.aim_firetolerance_dist)) return -19; } @@ -923,7 +923,7 @@ float turret_firecheck() // Lack of zombies makes shooting dead things unnecessary :P if (self.firecheck_flags & TFL_FIRECHECK_DEAD) - if (self.enemy.deadflag != DEAD_NO) + if (IS_DEAD(self.enemy)) return 0; // Own ammo? @@ -994,7 +994,7 @@ void turret_fire() return; Turret info = get_turretinfo(self.m_id); - info.tr_attack(info); + info.tr_attack(info, self); self.attack_finished_single[0] = time + self.shot_refire; self.ammo -= self.shot_dmg; @@ -1108,7 +1108,7 @@ void turret_think() turret_fire(); Turret tur = get_turretinfo(self.m_id); - tur.tr_think(tur); + tur.tr_think(tur, self); return; } @@ -1147,7 +1147,7 @@ void turret_think() turret_track(); Turret tur = get_turretinfo(self.m_id); - tur.tr_think(tur); + tur.tr_think(tur, self); // And bail. return; @@ -1171,7 +1171,7 @@ void turret_think() } Turret tur = get_turretinfo(self.m_id); - tur.tr_think(tur); + tur.tr_think(tur, self); } /* @@ -1200,25 +1200,18 @@ void turret_link() } void turrets_manager_think() -{SELFPARAM(); - self.nextthink = time + 1; +{ + SELFPARAM(); + this.nextthink = time + 1; - entity e; if (autocvar_g_turrets_reloadcvars == 1) { - e = nextent(world); - while (e) - { - if (IS_TURRET(e)) - { - load_unit_settings(e,1); - Turret tur = get_turretinfo(self.m_id); - tur.tr_think(tur); - } - - e = nextent(e); - } - cvar_set("g_turrets_reloadcvars","0"); + FOREACH_ENTITY(IS_TURRET(it), { + load_unit_settings(it, true); + Turret tur = get_turretinfo(it.m_id); + tur.tr_think(tur, it); + }); + cvar_set("g_turrets_reloadcvars", "0"); } } @@ -1267,8 +1260,7 @@ float turret_initialize(Turret tur) entity e = find(world, classname, "turret_manager"); if(!e) { - e = spawn(); - e.classname = "turret_manager"; + e = new(turret_manager); e.think = turrets_manager_think; e.nextthink = time + 2; } @@ -1353,13 +1345,13 @@ float turret_initialize(Turret tur) self.nextthink = time + 1; self.nextthink += turret_count * sys_frametime; - self.tur_head = spawn(); + self.tur_head = new(turret_head); _setmodel(self.tur_head, tur.head_model); setsize(self.tur_head, '0 0 0', '0 0 0'); setorigin(self.tur_head, '0 0 0'); setattachment(self.tur_head, self, "tag_head"); - self.tur_head.netname = self.tur_head.classname = "turret_head"; + self.tur_head.netname = self.tur_head.classname; self.tur_head.team = self.team; self.tur_head.owner = self; self.tur_head.takedamage = DAMAGE_NO; @@ -1384,7 +1376,7 @@ float turret_initialize(Turret tur) #ifdef TURRET_DEBUG self.tur_debug_start = self.nextthink; - while (vlen(self.tur_debug_rvec) < 2) + while(vdist(self.tur_debug_rvec, <, 2)) self.tur_debug_rvec = randomvec() * 4; self.tur_debug_rvec_x = fabs(self.tur_debug_rvec_x);