X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fturrets%2Fsv_turrets.qc;h=83db075b422a7efe3f75dd1bab2a9220102d8060;hp=57bb008fcdb133516ec9e0ca0c1ebbdf57a54678;hb=53ae0010b81fef4c01ccea1ab46be6dcd1bfb81f;hpb=8e0690ba978a6a0c7287bc3cfa2873a05b15fc5f diff --git a/qcsrc/common/turrets/sv_turrets.qc b/qcsrc/common/turrets/sv_turrets.qc index 57bb008fc..83db075b4 100644 --- a/qcsrc/common/turrets/sv_turrets.qc +++ b/qcsrc/common/turrets/sv_turrets.qc @@ -1,3 +1,4 @@ +#include "sv_turrets.qh" #ifdef SVQC #include @@ -32,7 +33,7 @@ vector turret_aim_generic(entity this) if(this.aim_flags & TFL_AIM_ZPREDICT) if(!IS_ONGROUND(this.enemy)) - if(this.enemy.movetype == MOVETYPE_WALK || this.enemy.movetype == MOVETYPE_TOSS || this.enemy.movetype == MOVETYPE_BOUNCE) + if(this.enemy.move_movetype == MOVETYPE_WALK || this.enemy.move_movetype == MOVETYPE_TOSS || this.enemy.move_movetype == MOVETYPE_BOUNCE) { float vz; prep_z = pre_pos_z; @@ -193,8 +194,8 @@ void turret_die(entity this) { tur.tr_death(tur, this); - remove(this.tur_head); - remove(this); + delete(this.tur_head); + delete(this); } else { @@ -440,12 +441,12 @@ void turret_projectile_explode(entity this) #else RadiusDamage (this, this.realowner, this.owner.shot_dmg, 0, this.owner.shot_radius, this, NULL, this.owner.shot_force, this.totalfrags, NULL); #endif - remove(this); + delete(this); } -void turret_projectile_touch(entity this) +void turret_projectile_touch(entity this, entity toucher) { - PROJECTILE_TOUCH(this); + PROJECTILE_TOUCH(this, toucher); turret_projectile_explode(this); } @@ -474,9 +475,11 @@ entity turret_projectile(entity actor, Sound _snd, float _size, float _health, f setthink(proj, turret_projectile_explode); settouch(proj, turret_projectile_touch); proj.nextthink = time + 9; - proj.movetype = MOVETYPE_FLYMISSILE; + set_movetype(proj, MOVETYPE_FLYMISSILE); proj.velocity = normalize(actor.tur_shotdir_updated + randomvec() * actor.shot_spread) * actor.shot_speed; - proj.flags = FL_PROJECTILE; + proj.flags = FL_PROJECTILE; + IL_PUSH(g_projectiles, proj); + IL_PUSH(g_bot_dodge, proj); proj.enemy = actor.enemy; proj.totalfrags = _death; PROJECTILE_MAKETRIGGER(proj); @@ -824,7 +827,7 @@ float turret_validate_target(entity e_turret, entity e_target, float validate_fl */ #ifdef TURRET_DEBUG_TARGETSELECT - LOG_TRACE("Target:",e_target.netname," is a valid target for ",e_turret.netname,"\n"); + LOG_TRACE("Target:",e_target.netname," is a valid target for ",e_turret.netname); #endif return 1; @@ -1174,7 +1177,7 @@ void turret_think(entity this) */ void turret_use(entity this, entity actor, entity trigger) { - LOG_TRACE("Turret ",this.netname, " used by ", actor.classname, "\n"); + LOG_TRACE("Turret ",this.netname, " used by ", actor.classname); this.team = actor.team; @@ -1199,7 +1202,8 @@ void turrets_manager_think(entity this) if (autocvar_g_turrets_reloadcvars == 1) { - FOREACH_ENTITY(IS_TURRET(it), { + IL_EACH(g_turrets, true, + { load_unit_settings(it, true); Turret tur = get_turretinfo(it.m_id); tur.tr_think(tur, it); @@ -1220,13 +1224,13 @@ void turret_initparams(entity tur) tur.shot_force = bound(0.001, (TRY(tur.shot_force) : tur.shot_dmg * 0.5 + tur.shot_radius * 0.5 ), 5000); tur.shot_volly = bound(1, (TRY(tur.shot_volly) : 1 ), floor(tur.ammo_max / tur.shot_dmg)); tur.shot_volly_refire = bound(tur.shot_refire, (TRY(tur.shot_volly_refire) : tur.shot_refire * tur.shot_volly ), 60); - tur.target_range = bound(0, (TRY(tur.target_range) : tur.shot_speed * 0.5 ), MAX_SHOT_DISTANCE); - tur.target_range_min = bound(0, (TRY(tur.target_range_min) : tur.shot_radius * 2 ), MAX_SHOT_DISTANCE); - tur.target_range_optimal = bound(0, (TRY(tur.target_range_optimal) : tur.target_range * 0.5 ), MAX_SHOT_DISTANCE); + tur.target_range = bound(0, (TRY(tur.target_range) : tur.shot_speed * 0.5 ), max_shot_distance); + tur.target_range_min = bound(0, (TRY(tur.target_range_min) : tur.shot_radius * 2 ), max_shot_distance); + tur.target_range_optimal = bound(0, (TRY(tur.target_range_optimal) : tur.target_range * 0.5 ), max_shot_distance); tur.aim_maxrotate = bound(0, (TRY(tur.aim_maxrotate) : 90 ), 360); tur.aim_maxpitch = bound(0, (TRY(tur.aim_maxpitch) : 20 ), 90); tur.aim_speed = bound(0.1, (TRY(tur.aim_speed) : 36 ), 1000); - tur.aim_firetolerance_dist = bound(0.1, (TRY(tur.aim_firetolerance_dist) : 5 + (tur.shot_radius * 2) ), MAX_SHOT_DISTANCE); + tur.aim_firetolerance_dist = bound(0.1, (TRY(tur.aim_firetolerance_dist) : 5 + (tur.shot_radius * 2) ), max_shot_distance); tur.target_select_rangebias = bound(-10, (TRY(tur.target_select_rangebias) : 1 ), 10); tur.target_select_samebias = bound(-10, (TRY(tur.target_select_samebias) : 1 ), 10); tur.target_select_anglebias = bound(-10, (TRY(tur.target_select_anglebias) : 1 ), 10); @@ -1248,6 +1252,8 @@ bool turret_initialize(entity this, Turret tur) // if tur_head exists, we can assume this turret re-spawned if(!this.tur_head) { tur.tr_precache(tur); + IL_PUSH(g_turrets, this); + IL_PUSH(g_bot_targets, this); } entity e = find(NULL, classname, "turret_manager"); @@ -1264,7 +1270,7 @@ bool turret_initialize(entity this, Turret tur) this.netname = tur.netname; load_unit_settings(this, 0); - if(!this.team || !teamplay) { this.team = MAX_SHOT_DISTANCE; } + if(!this.team || !teamplay) { this.team = FLOAT_MAX; } if(!this.ticrate) { this.ticrate = ((this.turret_flags & TUR_FLAG_SUPPORT) ? 0.2 : 0.1); } if(!this.health) { this.health = 1000; } if(!this.shot_refire) { this.shot_refire = 1; } @@ -1329,7 +1335,7 @@ bool turret_initialize(entity this, Turret tur) this.ammo_recharge *= this.ticrate; this.solid = SOLID_BBOX; this.takedamage = DAMAGE_AIM; - this.movetype = MOVETYPE_NOCLIP; + set_movetype(this, MOVETYPE_NOCLIP); this.view_ofs = '0 0 0'; this.turret_firecheckfunc = turret_firecheck; this.event_damage = turret_damage; @@ -1349,7 +1355,7 @@ bool turret_initialize(entity this, Turret tur) this.tur_head.owner = this; this.tur_head.takedamage = DAMAGE_NO; this.tur_head.solid = SOLID_NOT; - this.tur_head.movetype = this.movetype; + set_movetype(this.tur_head, this.move_movetype); if(!this.tur_defend) if(this.target != "") @@ -1358,7 +1364,7 @@ bool turret_initialize(entity this, Turret tur) if (this.tur_defend == NULL) { this.target = ""; - LOG_TRACE("Turret has invalid defendpoint!\n"); + LOG_TRACE("Turret has invalid defendpoint!"); } }