• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • ✅ Time to vote for the top 3 models! The POLL for Hive's 6th HD Modeling Contest: Mechanical is now open! 📅 Poll close on July 16, 2024! 🔗 Cast your vote now!
  • ✅ The POLL for Hive's Texturing Contest #33 is OPEN! Vote for the TOP 3 SKINS! 🔗Click here to cast your vote!

[JASS] Script runs and lags on start

Not open for further replies.
Level 12
Dec 2, 2016
I've got a few scripts that lag the game for some reason when they first run. I think this was caused by Blizzard patches.

This script which runs when a unit builds a "Time Tower" for the first time in game, it lags the game for like half a second. I've tested with older versions of the game that never had any of these issues and they also have similar lag spikes upon certain scripts running. Is there any way to fix this?
This script for example is one that lags the game upon running for the first time:

library timeTower requires libMisc, libSetup, unitClassification, bloodTower {

public boolean unitHas_timeTower[12];
public integer timeTower_time[12];
public unit timeTowers[12];

function OnTimy60() {

  integer i;
  timer t=GetExpiredTimer();
  //DisplayTextToForce(GetPlayersAll(), "Current test");
  for (0 <= i < 13) {
if (unitHas_timeTower[i-1] == true) {
   timeTower_time[i-1] = timeTower_time[i-1] + 1;
   // + add damage
       SetUnitAbilityLevelSwapped('A04R', (timeTowers[i-1]),timeTower_time[i-1]+1);
    //DisplayTextToForce(GetPlayersAll(), "Current time: " + I2S(timeTower_time[i-1]));


function onStarty() {
timer t=CreateTimer();
TimerStart(t, 15, true, function OnTimy60);
//TimerStart(CreateTimer(), 15, true, function OnTimy60);

function onCreation() {
unit u = GetTriggerUnit();

if (GetUnitTypeId(u) == 't00T') {
timeTowers[GetConvertedPlayerId(GetOwningPlayer(u))-1] = u;
timeTower_time[GetConvertedPlayerId(GetOwningPlayer(u))-1] = 0;
unitHas_timeTower[GetConvertedPlayerId(GetOwningPlayer(u))-1] = true;
UnitAddAbilityBJ( 'A04R', (timeTowers[GetConvertedPlayerId(GetOwningPlayer(u))-1]));
//DisplayTextToForce(GetPlayersAll(),"Has tower?: " + B2S(unitHas_timeTower[GetConvertedPlayerId(GetOwningPlayer(u))-1]));
 //DisplayTextToForce(GetPlayersAll(), "Tower: " + GetUnitName(timeTowers[GetConvertedPlayerId(GetOwningPlayer(u))-1]));

function onDeath() {
unit d = GetDyingUnit();
if (GetUnitTypeId(d) == 't00T') {
timeTower_time[GetConvertedPlayerId(GetOwningPlayer(d))-1] = 0;
unitHas_timeTower[GetConvertedPlayerId(GetOwningPlayer(d))-1] = false;
//DisplayTextToForce(GetPlayersAll(),"Has tower?: " + B2S(unitHas_timeTower[GetConvertedPlayerId(GetOwningPlayer(d))-1]));
// DisplayTextToForce(GetPlayersAll(), "Tower: " + GetUnitName(timeTowers[GetConvertedPlayerId(GetOwningPlayer(d))-1]));

private function onInit() {
  trigger trg = CreateTrigger();
  trigger creation = CreateTrigger();
  trigger death = CreateTrigger();
  TriggerRegisterAnyUnitEventBJ( creation, EVENT_PLAYER_UNIT_UPGRADE_FINISH );
  TriggerRegisterAnyUnitEventBJ( death, EVENT_PLAYER_UNIT_DEATH );
  TimerStart(CreateTimer(), 60, true, function OnTimy60);
  TriggerAddAction(creation, function onCreation);
  TriggerAddAction(death, function onDeath);

Not open for further replies.