- self.respawntime = max(-1, ((!self.respawntime) ? 60 : self.respawntime));
- self.shot_refire = bound(0.01, ((!self.shot_refire) ? 1 : self.shot_refire), 9999);
- self.shot_dmg = max(1, ((!self.shot_dmg) ? self.shot_refire * 50 : self.shot_dmg));
- self.shot_radius = max(1, ((!self.shot_radius) ? self.shot_dmg * 0.5 : self.shot_radius));
- self.shot_speed = max(1, ((!self.shot_speed) ? 2500 : self.shot_speed));
- self.shot_spread = bound(0.0001, ((!self.shot_spread) ? 0.0125 : self.shot_spread), 500);
- self.shot_force = bound(0.001, ((!self.shot_force) ? self.shot_dmg * 0.5 + self.shot_radius * 0.5 : self.shot_force), 5000);
- self.shot_volly = bound(1, ((!self.shot_volly) ? 1 : self.shot_volly), floor(self.ammo_max / self.shot_dmg));
- self.shot_volly_refire = bound(self.shot_refire, ((!self.shot_volly_refire) ? self.shot_refire * self.shot_volly : self.shot_volly_refire), 60);
- self.target_range = bound(0, ((!self.target_range) ? self.shot_speed * 0.5 : self.target_range), MAX_SHOT_DISTANCE);
- self.target_range_min = bound(0, ((!self.target_range_min) ? self.shot_radius * 2 : self.target_range_min), MAX_SHOT_DISTANCE);
- self.target_range_optimal = bound(0, ((!self.target_range_optimal) ? self.target_range * 0.5 : self.target_range_optimal), MAX_SHOT_DISTANCE);
- self.aim_maxrotate = bound(0, ((!self.aim_maxrotate) ? 90 : self.aim_maxrotate), 360);
- self.aim_maxpitch = bound(0, ((!self.aim_maxpitch) ? 20 : self.aim_maxpitch), 90);
- self.aim_speed = bound(0.1, ((!self.aim_speed) ? 36 : self.aim_speed), 1000);
- self.aim_firetolerance_dist = bound(0.1, ((!self.aim_firetolerance_dist) ? 5 + (self.shot_radius * 2) : self.aim_firetolerance_dist), MAX_SHOT_DISTANCE);
- self.target_select_rangebias = bound(-10, ((!self.target_select_rangebias) ? 1 : self.target_select_rangebias), 10);
- self.target_select_samebias = bound(-10, ((!self.target_select_samebias) ? 1 : self.target_select_samebias), 10);
- self.target_select_anglebias = bound(-10, ((!self.target_select_anglebias) ? 1 : self.target_select_anglebias), 10);
- self.target_select_missilebias = bound(-10, ((!self.target_select_missilebias) ? 1 : self.target_select_missilebias), 10);
- self.target_select_playerbias = bound(-10, ((!self.target_select_playerbias) ? 1 : self.target_select_playerbias), 10);
- self.ammo_max = max(self.shot_dmg, ((!self.ammo_max) ? self.shot_dmg * 10 : self.ammo_max));
- self.ammo_recharge = max(0, ((!self.ammo_recharge) ? self.shot_dmg * 0.5 : self.ammo_recharge));
-
- self.turret_flags = TUR_FLAG_ISTURRET | (tur.spawnflags);
-
- if(self.turret_flags & TUR_FLAG_SPLASH)
- self.aim_flags |= TFL_AIM_SPLASH;
-
- if(self.turret_flags & TUR_FLAG_MISSILE)
- self.target_select_flags |= TFL_TARGETSELECT_MISSILES;
-
- if(self.turret_flags & TUR_FLAG_PLAYER)
- self.target_select_flags |= TFL_TARGETSELECT_PLAYERS;
-
- if(self.spawnflags & TSL_NO_RESPAWN)
- self.damage_flags |= TFL_DMG_DEATH_NORESPAWN;
-
- if (self.turret_flags & TUR_FLAG_SUPPORT)
- self.turret_score_target = turret_targetscore_support;
+ turret_initparams(this);
+
+ this.turret_flags = TUR_FLAG_ISTURRET | (tur.spawnflags);
+
+ if(this.turret_flags & TUR_FLAG_SPLASH)
+ this.aim_flags |= TFL_AIM_SPLASH;
+
+ if(this.turret_flags & TUR_FLAG_MISSILE)
+ this.target_select_flags |= TFL_TARGETSELECT_MISSILES;
+
+ if(this.turret_flags & TUR_FLAG_PLAYER)
+ this.target_select_flags |= TFL_TARGETSELECT_PLAYERS;
+
+ if(this.spawnflags & TSL_NO_RESPAWN)
+ this.damage_flags |= TFL_DMG_DEATH_NORESPAWN;
+
+ if (this.turret_flags & TUR_FLAG_SUPPORT)
+ this.turret_score_target = turret_targetscore_support;