// this script was compiled with wurst 1.8.1.0-jenkins-Wurst-1365 globals // integer PLAYER_NEUTRAL_PASSIVE=0 // integer PLAYER_NEUTRAL_AGGRESSIVE=0 // unitstate UNIT_STATE_MANA=null // playerevent EVENT_PLAYER_LEAVE=null // playerevent EVENT_PLAYER_END_CINEMATIC=null // playerunitevent EVENT_PLAYER_UNIT_ISSUED_ORDER=null // unitevent EVENT_UNIT_DAMAGED=null // playerevent EVENT_PLAYER_ARROW_LEFT_DOWN=null // playerevent EVENT_PLAYER_ARROW_LEFT_UP=null // playerevent EVENT_PLAYER_ARROW_RIGHT_DOWN=null // playerevent EVENT_PLAYER_ARROW_RIGHT_UP=null // playerevent EVENT_PLAYER_ARROW_DOWN_DOWN=null // playerevent EVENT_PLAYER_ARROW_DOWN_UP=null // playerevent EVENT_PLAYER_ARROW_UP_DOWN=null // playerevent EVENT_PLAYER_ARROW_UP_UP=null // playerevent EVENT_PLAYER_MOUSE_DOWN=null // playerevent EVENT_PLAYER_MOUSE_UP=null // playerevent EVENT_PLAYER_MOUSE_MOVE=null // playerunitevent EVENT_PLAYER_UNIT_SPELL_EFFECT=null // originframetype ORIGIN_FRAME_GAME_UI=null // originframetype ORIGIN_FRAME_WORLD_FRAME=null // integer bj_MAX_PLAYERS=0 // integer bj_MAX_PLAYER_SLOTS=0 // rect bj_mapInitialPlayableArea=null player Basics_DUMMY_PLAYER=null integer array BitSet_pows playerevent ClosureEvents_EVENT_PLAYER_CHAT_FILTER=null trigger ClosureEvents_unitTrig=null trigger ClosureEvents_leaveTrig=null trigger ClosureEvents_keyTrig=null integer array ClosureEvents_eventidToIndex integer ClosureEvents_eventTypeCounter=0 integer EventListener_castMap=0 integer array EventListener_castMapCasters integer array EventListener_generalListenersFirsts integer array EventListener_unitListenersFirsts boolean EventListener_useMouseEvents=false integer array ClosureForGroups_tempCallbacks integer ClosureForGroups_maxCount=0 integer ClosureForGroups_iterCount=0 integer ClosureTimers_x=0 string array Colors_hexs integer Colors_decs=0 integer Colors_COLOR_WHITE_red=0 integer Colors_COLOR_WHITE_green=0 integer Colors_COLOR_WHITE_blue=0 integer Colors_COLOR_WHITE_alpha=0 integer Colors_COLOR_BLACK_red=0 integer Colors_COLOR_BLACK_green=0 integer Colors_COLOR_BLACK_blue=0 integer Colors_COLOR_BLACK_alpha=0 integer Colors_COLOR_GOLD_red=0 integer Colors_COLOR_GOLD_green=0 integer Colors_COLOR_GOLD_blue=0 integer Colors_COLOR_GOLD_alpha=0 real DummyRecycler_ANGLE_DEGREE=0. integer array DummyRecycler_angleQueues hashtable ErrorHandling_HT=null framehandle Framehandle_GAME_UI=null real GameTimer_currentTime=0. hashtable HashList_ht=null hashtable HashList_occurences=null unit InstantDummyCaster_caster=null boolean MagicFunctions_compiletime=false rect MapBounds_playableMapRect=null rect MapBounds_boundRect=null region MapBounds_boundRegion=null real MapBounds_playableMin_x=0. real MapBounds_playableMin_y=0. real MapBounds_playableMax_x=0. real MapBounds_playableMax_y=0. real MapBounds_boundMin_x=0. real MapBounds_boundMin_y=0. real MapBounds_boundMax_x=0. real MapBounds_boundMax_y=0. trigger OnUnitEnterLeave_eventTrigger=null group OnUnitEnterLeave_preplacedUnits=null unit array OnUnitEnterLeave_tempUnits integer OnUnitEnterLeave_tempUnitsCount=0 player array Player_players player Player_localPlayer=null group Preloader_dumg=null unit Preloader_dum=null trigger array RegisterEvents_t integer RegisterEvents_onCastMap=0 string array StringUtils_c2s integer StringUtils_MAX_INDEX=0 hashtable Table_ht=null timer array TimerUtils_freeTimers integer TimerUtils_freeTimersCount=0 integer TimerUtils_timerData=0 integer TypeCasting_typecastdata=0 trigger UnitIndexer_onIndexTrigger=null trigger UnitIndexer_onDeindexTrigger=null unit array UnitIndexer_tempUnits integer UnitIndexer_tempUnitsCount=0 real Vectors_ZERO2_x=0. real Vectors_ZERO2_y=0. integer nullclosurebug_MAX_PLAYERS=0 integer nullclosurebug_commands=0 hashtable hashtable_compiletime=null hashtable hashtable_compiletime_181=null hashtable hashtable_compiletime_182=null hashtable hashtable_compiletime_183=null integer array CallbackSingle_nextFree integer CallbackSingle_firstFree=0 integer CallbackSingle_maxIndex=0 integer array CallbackSingle_typeId integer EventListener_firstFree=0 integer array EventListener_typeId integer array OnCastListener_nextFree integer OnCastListener_firstFree=0 integer OnCastListener_maxIndex=0 integer array OnCastListener_typeId integer array ForGroupCallback_nextFree integer ForGroupCallback_firstFree=0 integer ForGroupCallback_maxIndex=0 integer array ForGroupCallback_typeId integer Callback_firstFree=0 integer array Callback_typeId integer array DummyCaster_nextFree integer DummyCaster_firstFree=0 integer DummyCaster_maxIndex=0 integer array DummyCaster_typeId integer array HashList_typeId integer array Table_nextFree integer Table_firstFree=0 integer Table_maxIndex=0 integer array Table_typeId integer Comparator_firstFree=0 integer Comparator_maxIndex=0 integer array LLEntry_nextFree integer LLEntry_firstFree=0 integer LLEntry_maxIndex=0 integer array LLEntry_typeId integer array LLItrClosure_nextFree integer LLItrClosure_firstFree=0 integer LLItrClosure_maxIndex=0 integer array LLItrClosure_typeId integer array LinkedList_nextFree integer LinkedList_firstFree=0 integer LinkedList_maxIndex=0 integer array LinkedList_typeId integer array MapClosure_typeId integer array IdGenerator_nextFree integer IdGenerator_firstFree=0 integer IdGenerator_maxIndex=0 integer array OrderStringFactory_nextFree integer OrderStringFactory_firstFree=0 integer OrderStringFactory_maxIndex=0 integer array UnitIndex_nextFree integer UnitIndex_firstFree=0 integer UnitIndex_maxIndex=0 integer array UnitIndex_typeId integer array CommandHandler_nextFree integer CommandHandler_firstFree=0 integer CommandHandler_maxIndex=0 integer array CommandHandler_typeId integer array EventListener_eventId integer array EventListener_uid integer array EventListener_next integer array EventListener_prev integer array OnCastListener_next integer array OnCastListener_prev integer array OnCastListener_abilId unit array OnCastListener_eventUnit integer array cb timerdialog array dia timer array CallbackSingle_t integer array DummyCaster_castCount real array DummyCaster_delay player array DummyCaster_owner real array DummyCaster_origin_x real array DummyCaster_origin_y integer array this unit array dummy integer array id unit array u integer array HashList_size integer array HashMap_size integer array IterableMap_keys integer array result integer array LLEntry_elem integer array LLEntry_prev integer array LLEntry_next integer array LinkedList_dummy integer array LinkedList_size integer array output integer array itr unit array UnitIndex__unit unit array a unit array a_173 code ref_function_init_Abilities=null code ref_function_init_AbilityIds=null code ref_function_init_Real=null code ref_function_init_Integer=null code ref_function_init_BitSet=null code ref_function_init_String=null code ref_function_init_TargetsAllowed=null code ref_function_init_Angle=null code ref_function_init_Vectors=null code ref_function_init_Destructable=null code ref_function_init_Player=null code ref_function_init_Maths=null code ref_function_init_Printing=null code ref_function_init_MagicFunctions=null code ref_function_init_Basics=null code ref_function_init_GameTimer=null code ref_function_init_ErrorHandling=null code ref_function_init_Matrices=null code ref_function_init_Quaternion=null code ref_function_init_Table=null code ref_function_init_Playercolor=null code ref_function_init_Colors=null code ref_function_init_Framehandle=null code ref_function_init_Group=null code ref_function_init_Lightning=null code ref_function_init_WeatherEffects=null code ref_function_init_TypeCasting=null code ref_function_init_HashList=null code ref_function_init_EventHelper=null code ref_function_init_AbilityObjEditing=null code ref_function_init_AttachmentPoints=null code ref_function_init_BuffIds=null code ref_function_init_Buildings=null code ref_function_init_ClosureForGroups=null code ref_function_init_LinkedList=null code ref_function_init_ObjectIds=null code ref_function_init_TimerUtils=null code ref_function_init_ClosureTimers=null code ref_function_init_UnitIds=null code ref_function_init_MapBounds=null code ref_function_init_Preloader=null code ref_function_init_ObjectIdGenerator=null code ref_function_init_Icons=null code ref_function_init_ChannelAbilityPreset=null code ref_function_init_RegisterEvents=null code ref_function_init_Orders=null code ref_function_init_OnUnitEnterLeave=null code ref_function_init_UnitIndexer=null code ref_function_init_ClosureEvents=null code ref_function_init_Doodads=null code ref_function_init_DummyRecycler=null code ref_function_init_InstantDummyCaster=null code ref_function_init_ItemIds=null code ref_function_init_Objects=null code ref_function_init_Sounds=null code ref_function_init_Soundsets=null code ref_function_init_StringUtils=null code ref_function_init_Textures=null code ref_function_init_UI=null code ref_function_init_Units=null code ref_function_init_nullclosurebug=null code ref_function_code__onUnitIndex_ClosureEvents=null code ref_function_code__onUnitDeindex_ClosureEvents=null code ref_function_EventListener_generalEventCallback=null code ref_function_code__Filter_ClosureForGroups=null code ref_function_code__startPeriodic_GameTimer=null code ref_function_code__registerPlayerUnitEvent_RegisterEvents=null code ref_function_code__onEnter_UnitIndexer=null code ref_function_code__onLeave_UnitIndexer=null code ref_function_code__addAction_nullclosurebug=null code ref_function_code__addAction_nullTimer_ClosureEvents=null code ref_function_code__addAction_nullTimer_ClosureEvents_194=null code ref_function_code__addAction_nullTimer_ClosureEvents_195=null code ref_function_code__registerPlayerUnitEvent_nullTimer_ClosureEvents=null code ref_function_code__start_CallbackSingle_ClosureTimers=null code ref_function_code__Filter_registerEnterRegion_nullTimer_OnUnitEnterLeave=null code ref_function_code__registerPlayerUnitEvent_nullTimer_OnUnitEnterLeave=null code ref_function_code__ForGroup_nullTimer_OnUnitEnterLeave=null endglobals function Loglevel_getTag takes integer this_1 returns string local integer temp = this_1 if temp == 0 then return "|cffADADADtrace|r" elseif temp == 1 then return "|cff2685DCdebug|r" elseif temp == 2 then return "|cffFFCC00info|r" elseif temp == 3 then return "|cffF47E3Ewarning|r" else return "|cffFB2700error|r" endif endfunction function compileError takes string msg returns nothing endfunction function error takes string msg returns nothing local integer hash local string this_1 local hashtable this_2 local integer parentKey local integer childKey local hashtable this_3 local integer parentKey_1 local integer childKey_1 local string msg_1 local player showTo local integer loglvl local string msg_2 local string compositeMsg local hashtable this_4 local integer parentKey_2 local integer childKey_2 local integer value local real this_5 local hashtable this_6 local integer parentKey_3 local integer childKey_3 local boolean value_1 local hashtable this_7 local integer parentKey_4 local integer childKey_4 local hashtable this_8 local integer parentKey_5 local integer childKey_5 local string msg_3 local player showTo_1 local integer loglvl_1 local string msg_4 local string compositeMsg_1 local hashtable this_9 local integer parentKey_6 local integer childKey_6 local boolean value_2 local string msg_5 local player showTo_2 local integer loglvl_2 local string msg_6 local string compositeMsg_2 local hashtable this_10 local integer parentKey_7 local integer childKey_7 local boolean value_3 local hashtable this_11 local integer parentKey_8 local integer childKey_8 local integer value_4 local real this_12 local string msg_7 local player showTo_3 local integer loglvl_3 local string msg_8 local string compositeMsg_3 if MagicFunctions_compiletime then call compileError("ERROR: " + msg) else if not false then set this_1 = msg set hash = StringHash(this_1) set this_2 = ErrorHandling_HT set parentKey = -1 set childKey = hash if HaveSavedInteger(this_2, parentKey, childKey) then set this_3 = ErrorHandling_HT set parentKey_1 = -1 set childKey_1 = hash if LoadInteger(this_3, parentKey_1, childKey_1) + 60 < GameTimer_currentTime then set msg_1 = msg + "" set showTo = Player_localPlayer set loglvl = 4 set msg_2 = msg_1 if 2 <= loglvl then set compositeMsg = Loglevel_getTag(loglvl) + " - " + msg_2 call DisplayTimedTextToPlayer(showTo, 0., 0., 45., compositeMsg) endif set this_4 = ErrorHandling_HT set parentKey_2 = -1 set childKey_2 = hash set this_5 = GameTimer_currentTime set value = R2I(this_5) call SaveInteger(this_4, parentKey_2, childKey_2, value) set this_6 = ErrorHandling_HT set parentKey_3 = -1 set childKey_3 = hash set value_1 = false call SaveBoolean(this_6, parentKey_3, childKey_3, value_1) else set this_7 = ErrorHandling_HT set parentKey_4 = -1 set childKey_4 = hash if HaveSavedBoolean(this_7, parentKey_4, childKey_4) then set this_8 = ErrorHandling_HT set parentKey_5 = -1 set childKey_5 = hash if not LoadBoolean(this_8, parentKey_5, childKey_5) then set msg_3 = "|cffFF3A29Excessive repeating errors are being omitted" set showTo_1 = Player_localPlayer set loglvl_1 = 4 set msg_4 = msg_3 if 2 <= loglvl_1 then set compositeMsg_1 = Loglevel_getTag(loglvl_1) + " - " + msg_4 call DisplayTimedTextToPlayer(showTo_1, 0., 0., 45., compositeMsg_1) endif set this_9 = ErrorHandling_HT set parentKey_6 = -1 set childKey_6 = hash set value_2 = true call SaveBoolean(this_9, parentKey_6, childKey_6, value_2) endif else set msg_5 = "|cffFF3A29Excessive repeating errors are being omitted" set showTo_2 = Player_localPlayer set loglvl_2 = 4 set msg_6 = msg_5 if 2 <= loglvl_2 then set compositeMsg_2 = Loglevel_getTag(loglvl_2) + " - " + msg_6 call DisplayTimedTextToPlayer(showTo_2, 0., 0., 45., compositeMsg_2) endif set this_10 = ErrorHandling_HT set parentKey_7 = -1 set childKey_7 = hash set value_3 = true call SaveBoolean(this_10, parentKey_7, childKey_7, value_3) endif endif else set this_11 = ErrorHandling_HT set parentKey_8 = -1 set childKey_8 = hash set this_12 = GameTimer_currentTime set value_4 = R2I(this_12) call SaveInteger(this_11, parentKey_8, childKey_8, value_4) set msg_7 = "Message: " + msg + "" set showTo_3 = Player_localPlayer set loglvl_3 = 4 set msg_8 = msg_7 if 2 <= loglvl_3 then set compositeMsg_3 = Loglevel_getTag(loglvl_3) + " - " + msg_8 call DisplayTimedTextToPlayer(showTo_3, 0., 0., 45., compositeMsg_3) endif endif endif call I2S(1 / 0) endif endfunction function initCompiletimeState_0 takes nothing returns nothing set hashtable_compiletime_183 = InitHashtable() set hashtable_compiletime_182 = InitHashtable() set hashtable_compiletime_181 = InitHashtable() set hashtable_compiletime = InitHashtable() call SaveInteger(hashtable_compiletime_181, 1, -242600650, 0) call SaveInteger(hashtable_compiletime_181, 1, 1132341824, 1) call SaveInteger(hashtable_compiletime_181, 1, -647782241, 2) call SaveInteger(hashtable_compiletime_181, 1, -854572045, 3) call SaveInteger(hashtable_compiletime_181, 1, -680649701, 4) call SaveInteger(hashtable_compiletime_181, 1, -943650483, 5) call SaveInteger(hashtable_compiletime_181, 1, -671760605, 6) call SaveInteger(hashtable_compiletime_181, 1, 349230650, 7) call SaveInteger(hashtable_compiletime_181, 1, -1894922563, 8) call SaveInteger(hashtable_compiletime_181, 1, -1474492777, 9) call SaveInteger(hashtable_compiletime_181, 1, -1587459251, 10) call SaveInteger(hashtable_compiletime_181, 1, -1676716706, 11) call SaveInteger(hashtable_compiletime_181, 1, -1559655710, 12) call SaveInteger(hashtable_compiletime_181, 1, -1663695754, 13) call SaveInteger(hashtable_compiletime_181, 1, 597637742, 14) call SaveInteger(hashtable_compiletime_181, 1, 789744696, 15) call SaveStr(hashtable_compiletime_181, 2, 0, "") call SaveStr(hashtable_compiletime_181, 2, 1804483594, "air") call SaveStr(hashtable_compiletime_181, 2, -1221441622, "debris") call SaveStr(hashtable_compiletime_181, 2, -681966791, "ground") call SaveStr(hashtable_compiletime_181, 2, -1912775212, "invulnerable") call SaveStr(hashtable_compiletime_181, 2, 392811314, "item") call SaveStr(hashtable_compiletime_181, 2, 124309475, "structure") call SaveStr(hashtable_compiletime_181, 2, -543400682, "vulnerable") call SaveStr(hashtable_compiletime_181, 2, -85648186, "ward") call SaveStr(hashtable_compiletime_181, 2, -612826229, "Avul") call SaveStr(hashtable_compiletime_181, 2, 1282521876, "Aloc") call SaveStr(hashtable_compiletime_181, 2, -263269125, "AM03") call SaveStr(hashtable_compiletime_181, 2, 512215473, "Agho") endfunction function registerPlayerUnitEvent takes playerunitevent p, code filter, code condition, code action returns nothing local handle this_1 = p local integer hid = GetHandleId(this_1) local integer k local filterfunc cond_result local trigger temp local player temp_1 local playerunitevent temp_2 local trigger this_2 local player whichPlayer local playerunitevent whichPlayerUnitEvent local boolexpr filter_1 local trigger this_3 local boolexpr condition_1 local trigger this_4 local code actionFunc if RegisterEvents_t[hid] == null then set RegisterEvents_t[hid] = CreateTrigger() set k = bj_MAX_PLAYER_SLOTS - 1 loop exitwhen k < 0 set temp = RegisterEvents_t[hid] set temp_1 = Player_players[k] set temp_2 = p if filter != null then set cond_result = Filter(filter) else set cond_result = null endif set this_2 = temp set whichPlayer = temp_1 set whichPlayerUnitEvent = temp_2 set filter_1 = cond_result call TriggerRegisterPlayerUnitEvent(this_2, whichPlayer, whichPlayerUnitEvent, filter_1) set k = k - 1 endloop endif if condition != null then set this_3 = RegisterEvents_t[hid] set condition_1 = Filter(condition) call TriggerAddCondition(this_3, condition_1) endif if action != null then set this_4 = RegisterEvents_t[hid] set actionFunc = action call TriggerAddAction(this_4, actionFunc) endif endfunction function registerEventId takes eventid evnt returns integer local handle this_1 = evnt local integer eventId = GetHandleId(this_1) local integer i local integer temp local trigger receiver local trigger receiver_1 local trigger receiver_2 local eventid this_2 local integer eventId_1 local handle this_3 local playerunitevent p local code c local eventid this_4 local integer eventId_2 local handle this_5 local eventid this_6 local integer eventId_3 local handle this_7 local integer this_8 local eventid this_9 local integer eventId_4 local handle this_10 local trigger this_11 local player whichPlayer local playerevent whichPlayerEvent local trigger this_12 local player whichPlayer_1 local playerevent whichPlayerEvent_1 local trigger this_13 local player whichPlayer_2 local playerevent whichPlayerEvent_2 local boolean andLeft local boolean andLeft_1 set ClosureEvents_eventTypeCounter = ClosureEvents_eventTypeCounter + 1 set ClosureEvents_eventidToIndex[eventId] = ClosureEvents_eventTypeCounter set this_2 = evnt set this_3 = this_2 set eventId_1 = GetHandleId(this_3) if (eventId_1 >= 18 and eventId_1 <= 51) or (eventId_1 >= 269 and eventId_1 <= 277) or eventId_1 == 315 or eventId_1 == 308 then set p = ConvertPlayerUnitEvent(eventId) set c = ref_function_EventListener_generalEventCallback call registerPlayerUnitEvent(p, null, c, null) else if evnt != EVENT_UNIT_DAMAGED and evnt != EVENT_PLAYER_LEAVE and evnt != ClosureEvents_EVENT_PLAYER_CHAT_FILTER then set this_4 = evnt set this_5 = this_4 set eventId_2 = GetHandleId(this_5) set andLeft = not ((eventId_2 >= 261 and eventId_2 <= 268) or eventId_2 == 17) else set andLeft = false endif if andLeft then set this_6 = evnt set this_7 = this_6 set eventId_3 = GetHandleId(this_7) set andLeft_1 = not (eventId_3 >= 305 and eventId_3 <= 307) else set andLeft_1 = false endif if andLeft_1 then set this_8 = eventId call error("registering handleid: " + I2S(this_8) + " non-playerunitevent. Except EVENT_UNIT_DAMAGED and EVENT_PLAYER_LEAVE these are not supported right now.") endif endif set this_9 = evnt set this_10 = this_9 set eventId_4 = GetHandleId(this_10) if eventId_4 >= 305 and eventId_4 <= 307 and ( not EventListener_useMouseEvents) then set EventListener_useMouseEvents = true set i = 0 set temp = bj_MAX_PLAYERS - 1 loop exitwhen i > temp set receiver = ClosureEvents_keyTrig set this_11 = receiver set whichPlayer = Player_players[i] set whichPlayerEvent = EVENT_PLAYER_MOUSE_UP call TriggerRegisterPlayerEvent(this_11, whichPlayer, whichPlayerEvent) set receiver_1 = receiver set this_12 = receiver_1 set whichPlayer_1 = Player_players[i] set whichPlayerEvent_1 = EVENT_PLAYER_MOUSE_DOWN call TriggerRegisterPlayerEvent(this_12, whichPlayer_1, whichPlayerEvent_1) set receiver_2 = receiver_1 set this_13 = receiver_2 set whichPlayer_2 = Player_players[i] set whichPlayerEvent_2 = EVENT_PLAYER_MOUSE_MOVE call TriggerRegisterPlayerEvent(this_13, whichPlayer_2, whichPlayerEvent_2) set i = i + 1 endloop endif return ClosureEvents_eventTypeCounter endfunction function EventListener_generalEventCallback takes nothing returns nothing local unit trigUnit = GetTriggerUnit() local eventid this_1 = GetTriggerEventId() local handle this_2 = this_1 local integer id_2 = ClosureEvents_eventidToIndex[GetHandleId(this_2)] local integer id_1 local integer listener local integer nextListener local integer listener_1 local integer nextListener_1 local unit this_3 local unit this_4 local unit this_5 local unit this_6 local unit this_7 local unit this_8 local boolean andLeft if id_2 == 0 then set id_2 = registerEventId(this_1) endif set id_1 = id_2 if trigUnit != null and true then set this_3 = trigUnit set this_4 = this_3 set andLeft = GetUnitUserData(this_4) > 0 else set andLeft = false endif if andLeft then set this_5 = trigUnit set this_6 = this_5 if EventListener_unitListenersFirsts[GetUnitUserData(this_6)] != 0 then set this_7 = trigUnit set this_8 = this_7 set listener = EventListener_unitListenersFirsts[GetUnitUserData(this_8)] loop exitwhen not (listener != 0) set nextListener = EventListener_next[listener] if EventListener_eventId[listener] == id_1 then endif set listener = nextListener endloop endif endif if EventListener_generalListenersFirsts[id_1] != 0 then set listener_1 = EventListener_generalListenersFirsts[id_1] loop exitwhen not (listener_1 != 0) set nextListener_1 = EventListener_next[listener_1] set listener_1 = nextListener_1 endloop endif endfunction function new_LLEntry takes integer elem, integer prev, integer next returns integer local integer this_1 local integer this_2 local integer this_3 local integer elem_1 local integer prev_1 local integer next_1 if LLEntry_firstFree == 0 then if LLEntry_maxIndex < 32768 then set LLEntry_maxIndex = LLEntry_maxIndex + 1 set this_2 = LLEntry_maxIndex set LLEntry_typeId[this_2] = 721 else call error("Out of memory: Could not create LLEntry.") set this_2 = 0 endif else set LLEntry_firstFree = LLEntry_firstFree - 1 set this_2 = LLEntry_nextFree[LLEntry_firstFree] set LLEntry_typeId[this_2] = 721 endif set this_1 = this_2 set this_3 = this_1 set elem_1 = elem set prev_1 = prev set next_1 = next set LLEntry_elem[this_3] = elem_1 set LLEntry_prev[this_3] = prev_1 set LLEntry_next[this_3] = next_1 return this_1 endfunction function dispatch_LinkedList_LinkedList_LinkedList_add_1 takes integer this_1, integer elems_0 returns nothing local integer this_2 local integer elems_0_1 local integer entry if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.add") else call error("Called LinkedList.add on invalid object.") endif endif set this_2 = this_1 set elems_0_1 = elems_0 set entry = new_LLEntry(elems_0_1, LLEntry_prev[LinkedList_dummy[this_2]], LinkedList_dummy[this_2]) set LLEntry_next[LLEntry_prev[LinkedList_dummy[this_2]]] = entry set LLEntry_prev[LinkedList_dummy[this_2]] = entry set LinkedList_size[this_2] = LinkedList_size[this_2] + 1 endfunction function dispatch_ForGroupCallback_ClosureForGroups_ForGroupCallback_callback takes integer this_1, unit u_1 returns nothing local integer this_2 local unit u_2 local unit object local handle this_3 local unit u_3 local unit this_4 local integer temp if ForGroupCallback_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling ForGroupCallback.callback") else call error("Called ForGroupCallback.callback on invalid object.") endif endif if ForGroupCallback_typeId[this_1] <= 667 then set this_2 = this_1 set u_2 = u_1 set temp = result[this_2] set object = u_2 set this_3 = object call dispatch_LinkedList_LinkedList_LinkedList_add_1(temp, GetHandleId(this_3)) else set u_3 = u_1 set this_4 = u_3 call RemoveUnit(this_4) endif endfunction function code__Filter_ClosureForGroups takes nothing returns nothing local unit filter = GetFilterUnit() if ClosureForGroups_iterCount < ClosureForGroups_maxCount then call dispatch_ForGroupCallback_ClosureForGroups_ForGroupCallback_callback(ClosureForGroups_tempCallbacks[0 - 1], filter) endif set ClosureForGroups_iterCount = ClosureForGroups_iterCount + 1 endfunction function prepareUnit takes unit u_1 returns nothing local unit receiver = u_1 local unit this_1 = receiver local integer abil = 1095577649 local unit receiver_1 local unit this_2 local integer abil_1 local boolean flag local unit u_2 local trigger this_3 call UnitAddAbility(this_1, abil) set receiver_1 = receiver set this_2 = receiver_1 set abil_1 = 1095577649 set flag = true call UnitMakeAbilityPermanent(this_2, flag, abil_1) set u_2 = u_1 set OnUnitEnterLeave_tempUnits[OnUnitEnterLeave_tempUnitsCount] = u_2 set OnUnitEnterLeave_tempUnitsCount = OnUnitEnterLeave_tempUnitsCount + 1 set this_3 = OnUnitEnterLeave_eventTrigger call TriggerEvaluate(this_3) set OnUnitEnterLeave_tempUnitsCount = OnUnitEnterLeave_tempUnitsCount - 1 endfunction function code__Filter_registerEnterRegion_nullTimer_OnUnitEnterLeave takes nothing returns nothing call prepareUnit(GetFilterUnit()) endfunction function code__ForGroup_nullTimer_OnUnitEnterLeave takes nothing returns nothing call prepareUnit(GetEnumUnit()) endfunction function code__addAction_nullTimer_ClosureEvents takes nothing returns nothing call EventListener_generalEventCallback() endfunction function code__addAction_nullTimer_ClosureEvents_142 takes nothing returns nothing call EventListener_generalEventCallback() endfunction function code__addAction_nullTimer_ClosureEvents_143 takes nothing returns nothing call EventListener_generalEventCallback() endfunction function dispatch_Table_Table_Table_loadString takes integer this_1, integer parentKey returns string local string Table_Table_loadString_result local integer this_2 local integer parentKey_1 local hashtable this_3 local integer parentKey_2 local integer childKey if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Table.loadString") else call error("Called Table.loadString on invalid object.") endif endif set this_2 = this_1 set parentKey_1 = parentKey set this_3 = Table_ht set parentKey_2 = this_2 set childKey = parentKey_1 set Table_Table_loadString_result = LoadStr(this_3, parentKey_2, childKey) return Table_Table_loadString_result endfunction function dispatch_Table_Table_Table_hasString takes integer this_1, integer parentKey returns boolean local boolean Table_Table_hasString_result local integer this_2 local integer parentKey_1 local hashtable this_3 local integer parentKey_2 local integer childKey if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Table.hasString") else call error("Called Table.hasString on invalid object.") endif endif set this_2 = this_1 set parentKey_1 = parentKey set this_3 = Table_ht set parentKey_2 = this_2 set childKey = parentKey_1 set Table_Table_hasString_result = HaveSavedString(this_3, parentKey_2, childKey) return Table_Table_hasString_result endfunction function dispatch_Table_Table_Table_saveString takes integer this_1, integer parentKey, string value returns nothing local integer this_2 local integer parentKey_1 local string value_1 local hashtable this_3 local integer parentKey_2 local integer childKey local string value_2 if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Table.saveString") else call error("Called Table.saveString on invalid object.") endif endif set this_2 = this_1 set parentKey_1 = parentKey set value_1 = value set this_3 = Table_ht set parentKey_2 = this_2 set childKey = parentKey_1 set value_2 = value_1 call SaveStr(this_3, parentKey_2, childKey, value_2) endfunction function stringToIndex takes string s returns integer local string this_1 = s local integer hash = StringHash(this_1) loop exitwhen not true if dispatch_Table_Table_Table_hasString(TypeCasting_typecastdata, hash) then if dispatch_Table_Table_Table_loadString(TypeCasting_typecastdata, hash) == s then exitwhen true endif else call dispatch_Table_Table_Table_saveString(TypeCasting_typecastdata, hash, s) exitwhen true endif set hash = hash + 1 endloop return hash endfunction function run_wrapper takes integer this_1, integer t returns integer local integer t_1 = t local integer this_2 = t_1 local integer value = this_2 local string result_1 = "" local integer remainingValue = value local integer byteno = 0 local integer charValue local string this_3 local integer index loop exitwhen byteno > 3 set charValue = ModuloInteger(remainingValue, 256) set remainingValue = remainingValue / 256 set this_3 = ".................................!.#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[.]^_`abcdefghijklmnopqrstuvwxyz{|}~................................................................................................................................." set index = charValue set result_1 = SubString(this_3, index, index + 1) + result_1 set byteno = byteno + 1 endloop return stringToIndex(result_1) endfunction function dispatch_LLItrClosure_LinkedList_LLItrClosure_run takes integer this_1, integer t returns nothing local integer this_2 local integer t_1 local integer this_3 local integer t_2 local integer LinkedList_MapClosure_run_result local integer t_3 local string i local string msg local integer index local string str local integer temp if LLItrClosure_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LLItrClosure.run") else call error("Called LLItrClosure.run on invalid object.") endif endif if LLItrClosure_typeId[this_1] <= 724 then set this_2 = this_1 set t_1 = t set temp = output[this_2] set this_3 = itr[this_2] set t_2 = t_1 if MapClosure_typeId[this_3] == 0 then if this_3 == 0 then call error("Nullpointer exception when calling MapClosure.run") else call error("Called MapClosure.run on invalid object.") endif endif set LinkedList_MapClosure_run_result = run_wrapper(this_3, t_2) call dispatch_LinkedList_LinkedList_LinkedList_add_1(temp, LinkedList_MapClosure_run_result) else set t_3 = t set index = t_3 set str = dispatch_Table_Table_Table_loadString(TypeCasting_typecastdata, index) set i = str set msg = i call DisplayTimedTextToPlayer(Player_localPlayer, 0., 0., 45., msg) endif endfunction function dispatch_LLItrClosure_destroyLLItrClosure takes integer this_1 returns nothing local integer this_2 local integer obj if LLItrClosure_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LLItrClosure.LLItrClosure") else call error("Called LLItrClosure.LLItrClosure on invalid object.") endif endif set this_2 = this_1 set obj = this_2 if LLItrClosure_typeId[obj] == 0 then call error("Double free: object of type LLItrClosure") else set LLItrClosure_nextFree[LLItrClosure_firstFree] = obj set LLItrClosure_firstFree = LLItrClosure_firstFree + 1 set LLItrClosure_typeId[obj] = 0 endif endfunction function dispatch_LinkedList_LinkedList_LinkedList_forEach takes integer this_1, integer itr_1 returns integer local integer LinkedList_LinkedList_forEach_result local integer this_2 local integer itr_2 local integer r if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.forEach") else call error("Called LinkedList.forEach on invalid object.") endif endif set this_2 = this_1 set itr_2 = itr_1 set r = LLEntry_next[LinkedList_dummy[this_2]] loop exitwhen not (r != LinkedList_dummy[this_2]) call dispatch_LLItrClosure_LinkedList_LLItrClosure_run(itr_2, LLEntry_elem[r]) set r = LLEntry_next[r] endloop call dispatch_LLItrClosure_destroyLLItrClosure(itr_2) set LinkedList_LinkedList_forEach_result = this_2 return LinkedList_LinkedList_forEach_result endfunction function run_registerCommandAll_nullclosurebug takes integer this_1, player triggerPlayer, integer args returns nothing local player this_3 = triggerPlayer local integer this_2 = GetPlayerId(this_3) local string msg = "player " + I2S(this_2) local integer clVar local integer temp local integer this_4 call DisplayTimedTextToPlayer(Player_localPlayer, 0., 0., 45., msg) set temp = args if LLItrClosure_firstFree == 0 then if LLItrClosure_maxIndex < 32768 then set LLItrClosure_maxIndex = LLItrClosure_maxIndex + 1 set this_4 = LLItrClosure_maxIndex set LLItrClosure_typeId[this_4] = 725 else call error("Out of memory: Could not create LLItrClosure_forEach_registerCommandAll_nullclosurebug.") set this_4 = 0 endif else set LLItrClosure_firstFree = LLItrClosure_firstFree - 1 set this_4 = LLItrClosure_nextFree[LLItrClosure_firstFree] set LLItrClosure_typeId[this_4] = 725 endif set clVar = this_4 call dispatch_LinkedList_LinkedList_LinkedList_forEach(temp, clVar) endfunction function InstantDummyCaster_finish takes integer id_1 returns nothing local unit this_1 = InstantDummyCaster_caster local player p = Basics_DUMMY_PLAYER local boolean changeColor = false local unit this_2 local integer abil local unit this_3 local real pos_x local real pos_y local real tuple_temp local real tuple_temp_1 call SetUnitOwner(this_1, p, changeColor) set this_2 = InstantDummyCaster_caster set abil = id_1 call UnitRemoveAbility(this_2, abil) set this_3 = InstantDummyCaster_caster set tuple_temp = MapBounds_boundMax_x set tuple_temp_1 = MapBounds_boundMax_y set pos_x = tuple_temp set pos_y = tuple_temp_1 call SetUnitPosition(this_3, pos_x, pos_y) endfunction function unit_setXYZ takes unit this_1, real pos_x, real pos_y, real pos_z returns nothing local unit receiver = this_1 local unit this_2 = receiver local real x = pos_x local unit receiver_1 local unit receiver_2 local unit this_3 local real y local unit this_4 local real height local real rate call SetUnitX(this_2, x) set receiver_1 = receiver set this_3 = receiver_1 set y = pos_y call SetUnitY(this_3, y) set receiver_2 = receiver_1 set this_4 = receiver_2 set height = pos_z set rate = 0. call SetUnitFlyHeight(this_4, height, rate) endfunction function InstantDummyCaster_prepare takes player owner, integer id_1, integer lvl, real pos_x, real pos_y, real pos_z returns nothing local unit receiver = InstantDummyCaster_caster local unit this_1 = receiver local integer abil = id_1 local unit receiver_1 local unit this_2 local real wval local unit this_3 local unitstate state local real value local real this_x local real this_y local real x local real y local unit this_4 local integer abilId local integer lvl_1 local unit this_5 local player p local boolean changeColor local real tuple_temp local real tuple_temp_1 call UnitAddAbility(this_1, abil) set receiver_1 = receiver set this_2 = receiver_1 set wval = 1000000. set this_3 = this_2 set state = UNIT_STATE_MANA set value = wval call SetUnitState(this_3, state, value) set tuple_temp = pos_x set tuple_temp_1 = pos_y set this_x = tuple_temp set this_y = tuple_temp_1 set x = this_x set y = this_y if x > MapBounds_boundMin_x and x < MapBounds_boundMax_x and y > MapBounds_boundMin_y and y < MapBounds_boundMax_y then call unit_setXYZ(InstantDummyCaster_caster, pos_x, pos_y, pos_z) endif if lvl > 1 then set this_4 = InstantDummyCaster_caster set abilId = id_1 set lvl_1 = lvl call SetUnitAbilityLevel(this_4, abilId, lvl_1) endif if owner != null then set this_5 = InstantDummyCaster_caster set p = owner set changeColor = false call SetUnitOwner(this_5, p, changeColor) endif endfunction function InstantDummyCaster_castImmediate takes player owner, integer abilityId, integer lvl, integer orderId, real pos_x, real pos_y, real pos_z returns boolean local boolean success local unit this_1 local integer id_1 call InstantDummyCaster_prepare(owner, abilityId, lvl, pos_x, pos_y, pos_z) set this_1 = InstantDummyCaster_caster set id_1 = orderId set success = IssueImmediateOrderById(this_1, id_1) call InstantDummyCaster_finish(abilityId) return success endfunction function run_registerCommandAll_nullclosurebug_276 takes integer this_1, player triggerPlayer, integer arguments returns nothing local unit this_2 = a[this_1] local player owner = GetOwningPlayer(this_2) local integer abilityId = 1095267427 local integer lvl = 1 local string order = "thunderclap" local unit this_3 = a[this_1] local unit this_4 = this_3 local real temp = GetUnitX(this_4) local unit this_5 = this_3 local real tuple_temp = temp local real tuple_temp_1 = GetUnitY(this_5) local real pos_x = tuple_temp local real pos_y = tuple_temp_1 local player temp_1 = owner local integer temp_2 = abilityId local integer temp_3 = lvl local integer temp_4 = OrderId(order) local real tuple_temp_2 = pos_x local real tuple_temp_3 = pos_y local real this_x = tuple_temp_2 local real this_y = tuple_temp_3 call InstantDummyCaster_castImmediate(temp_1, temp_2, temp_3, temp_4, this_x, this_y, 0.) endfunction function run_registerCommandAll_nullclosurebug_277 takes integer this_1, player triggerPlayer, integer arguments returns nothing local unit this_2 = a_173[this_1] local string msg = GetUnitName(this_2) local group units local group receiver local unit u_1 local group from local group this_3 local player p local boolexpr filter local group this_4 local group this_5 local unit iterUnit local unit this_6 local player p_1 local boolean changeColor call DisplayTimedTextToPlayer(Player_localPlayer, 0., 0., 45., msg) set receiver = CreateGroup() set this_3 = receiver set p = triggerPlayer set filter = null call GroupEnumUnitsSelected(this_3, p, filter) set units = receiver set from = units loop set this_4 = from exitwhen not (FirstOfGroup(this_4) != null) set this_5 = from set iterUnit = FirstOfGroup(this_5) call GroupRemoveUnit(this_5, iterUnit) set u_1 = iterUnit set this_6 = u_1 set p_1 = Player_players[1] set changeColor = true call SetUnitOwner(this_6, p_1, changeColor) endloop endfunction function dispatch_CommandHandler_nullclosurebug_CommandHandler_run takes integer this_1, player triggerPlayer, integer arguments returns nothing if CommandHandler_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling CommandHandler.run") else call error("Called CommandHandler.run on invalid object.") endif endif if CommandHandler_typeId[this_1] <= 654 then if CommandHandler_typeId[this_1] <= 653 then call run_registerCommandAll_nullclosurebug(this_1, triggerPlayer, arguments) else call run_registerCommandAll_nullclosurebug_276(this_1, triggerPlayer, arguments) endif else call run_registerCommandAll_nullclosurebug_277(this_1, triggerPlayer, arguments) endif endfunction function dispatch_LinkedList_LinkedList_LinkedList_getEntry takes integer this_1, integer index returns integer local integer LinkedList_LinkedList_getEntry_result local integer this_2 local integer index_1 local integer entry local integer i local integer temp if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.getEntry") else call error("Called LinkedList.getEntry on invalid object.") endif endif set this_2 = this_1 set index_1 = index set entry = LinkedList_dummy[this_2] set i = 0 set temp = index_1 loop exitwhen i > temp set entry = LLEntry_next[entry] set i = i + 1 endloop set LinkedList_LinkedList_getEntry_result = entry return LinkedList_LinkedList_getEntry_result endfunction function dispatch_Table_Table_Table_hasInt takes integer this_1, integer parentKey returns boolean local boolean Table_Table_hasInt_result local integer this_2 local integer parentKey_1 local hashtable this_3 local integer parentKey_2 local integer childKey if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Table.hasInt") else call error("Called Table.hasInt on invalid object.") endif endif set this_2 = this_1 set parentKey_1 = parentKey set this_3 = Table_ht set parentKey_2 = this_2 set childKey = parentKey_1 set Table_Table_hasInt_result = HaveSavedInteger(this_3, parentKey_2, childKey) return Table_Table_hasInt_result endfunction function dispatch_Table_Table_Table_loadInt takes integer this_1, integer parentKey returns integer local integer Table_Table_loadInt_result local integer this_2 local integer parentKey_1 local hashtable this_3 local integer parentKey_2 local integer childKey if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Table.loadInt") else call error("Called Table.loadInt on invalid object.") endif endif set this_2 = this_1 set parentKey_1 = parentKey set this_3 = Table_ht set parentKey_2 = this_2 set childKey = parentKey_1 set Table_Table_loadInt_result = LoadInteger(this_3, parentKey_2, childKey) return Table_Table_loadInt_result endfunction function new_LinkedList takes nothing returns integer local integer this_1 local integer this_2 local integer this_3 local integer this_4 if LinkedList_firstFree == 0 then if LinkedList_maxIndex < 32768 then set LinkedList_maxIndex = LinkedList_maxIndex + 1 set this_2 = LinkedList_maxIndex set LinkedList_typeId[this_2] = 726 else call error("Out of memory: Could not create LinkedList.") set this_2 = 0 endif else set LinkedList_firstFree = LinkedList_firstFree - 1 set this_2 = LinkedList_nextFree[LinkedList_firstFree] set LinkedList_typeId[this_2] = 726 endif set this_1 = this_2 set this_3 = this_1 set this_4 = this_3 set LinkedList_dummy[this_4] = new_LLEntry(0, 0, 0) set LinkedList_size[this_4] = 0 set LLEntry_next[LinkedList_dummy[this_3]] = LinkedList_dummy[this_3] set LLEntry_prev[LinkedList_dummy[this_3]] = LinkedList_dummy[this_3] return this_1 endfunction function string_indexOf takes string this_1, string s returns integer local integer i = 0 local string this_2 = this_1 local integer temp_1 = StringLength(this_2) local string this_3 = s local integer temp = temp_1 - StringLength(this_3) local string this_4 local integer start local integer stop local string this_5 local integer temp_2 loop exitwhen i > temp set this_4 = this_1 set start = i set temp_2 = i set this_5 = s set stop = temp_2 + StringLength(this_5) if SubString(this_4, start, stop) == s then return i endif set i = i + 1 endloop return -1 endfunction function string_split takes string this_1, string splitBy returns integer local integer list = new_LinkedList() local string this_2 = splitBy local integer offset = StringLength(this_2) local string str = this_1 local integer splitIndex local string first local string second local string this_3 local integer start local integer stop local string this_4 local integer start_1 local integer stop_1 local string this_5 loop exitwhen not true set splitIndex = string_indexOf(str, splitBy) if splitIndex == -1 then call dispatch_LinkedList_LinkedList_LinkedList_add_1(list, stringToIndex(str)) exitwhen true endif set this_3 = str set start = 0 set stop = splitIndex set first = SubString(this_3, start, stop) set this_4 = str set start_1 = splitIndex + offset set this_5 = str set stop_1 = StringLength(this_5) set second = SubString(this_4, start_1, stop_1) call dispatch_LinkedList_LinkedList_LinkedList_add_1(list, stringToIndex(first)) set str = second endloop return list endfunction function code__addAction_nullclosurebug takes nothing returns nothing local player triggerPlayer = GetTriggerPlayer() local integer this_1 = nullclosurebug_commands local player object = triggerPlayer local player this_3 = object local integer key = GetPlayerId(this_3) local integer playerCommands local integer tokens local string command local integer HashMap_HashMap_get_result local integer this_2 local integer key_1 local string this_4 local integer start local string this_5 local integer index local string str local integer this_6 local integer index_1 local integer LinkedList_LinkedList_get_result local integer this_7 local integer index_2 local integer this_8 local integer key_2 local boolean HashMap_HashMap_has_result local integer this_9 local integer key_3 local integer this_10 local integer key_4 local integer HashMap_HashMap_get_result_1 local integer this_11 local integer key_5 local string temp local integer temp_1 if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashMap.get") else call error("Called HashMap.get on invalid object.") endif endif set this_2 = this_1 set key_1 = key set HashMap_HashMap_get_result = dispatch_Table_Table_Table_loadInt(this_2, key_1) set playerCommands = HashMap_HashMap_get_result set this_4 = GetEventPlayerChatString() set start = 1 set temp = this_4 set temp_1 = start set this_5 = this_4 set tokens = string_split(SubString(temp, temp_1, StringLength(this_5)), " ") set this_6 = tokens set index_1 = 0 if LinkedList_typeId[this_6] == 0 then if this_6 == 0 then call error("Nullpointer exception when calling LinkedList.get") else call error("Called LinkedList.get on invalid object.") endif endif set this_7 = this_6 set index_2 = index_1 set LinkedList_LinkedList_get_result = LLEntry_elem[dispatch_LinkedList_LinkedList_LinkedList_getEntry(this_7, index_2)] set index = LinkedList_LinkedList_get_result set str = dispatch_Table_Table_Table_loadString(TypeCasting_typecastdata, index) set command = str set this_8 = playerCommands set key_2 = stringToIndex(command) if Table_typeId[this_8] == 0 then if this_8 == 0 then call error("Nullpointer exception when calling HashMap.has") else call error("Called HashMap.has on invalid object.") endif endif set this_9 = this_8 set key_3 = key_2 set HashMap_HashMap_has_result = dispatch_Table_Table_Table_hasInt(this_9, key_3) if HashMap_HashMap_has_result then set this_10 = playerCommands set key_4 = stringToIndex(command) if Table_typeId[this_10] == 0 then if this_10 == 0 then call error("Nullpointer exception when calling HashMap.get") else call error("Called HashMap.get on invalid object.") endif endif set this_11 = this_10 set key_5 = key_4 set HashMap_HashMap_get_result_1 = dispatch_Table_Table_Table_loadInt(this_11, key_5) call dispatch_CommandHandler_nullclosurebug_CommandHandler_run(HashMap_HashMap_get_result_1, triggerPlayer, tokens) endif endfunction function construct_UnitIndex takes integer this_1, unit whichUnit returns nothing local unit this_2 local integer data local unit u_1 local trigger this_3 set UnitIndex__unit[this_1] = whichUnit set this_2 = UnitIndex__unit[this_1] set data = this_1 call SetUnitUserData(this_2, data) set u_1 = whichUnit set UnitIndexer_tempUnits[UnitIndexer_tempUnitsCount] = u_1 set UnitIndexer_tempUnitsCount = UnitIndexer_tempUnitsCount + 1 set this_3 = UnitIndexer_onIndexTrigger call TriggerEvaluate(this_3) set UnitIndexer_tempUnitsCount = UnitIndexer_tempUnitsCount - 1 endfunction function new_UnitIndex takes unit whichUnit returns integer local integer this_1 local integer this_2 if UnitIndex_firstFree == 0 then if UnitIndex_maxIndex < 32768 then set UnitIndex_maxIndex = UnitIndex_maxIndex + 1 set this_2 = UnitIndex_maxIndex set UnitIndex_typeId[this_2] = 774 else call error("Out of memory: Could not create UnitIndex.") set this_2 = 0 endif else set UnitIndex_firstFree = UnitIndex_firstFree - 1 set this_2 = UnitIndex_nextFree[UnitIndex_firstFree] set UnitIndex_typeId[this_2] = 774 endif set this_1 = this_2 call construct_UnitIndex(this_1, whichUnit) return this_1 endfunction function code__onEnter_UnitIndexer takes nothing returns nothing local unit this_1 local integer instance local unit this_2 if true then set this_1 = OnUnitEnterLeave_tempUnits[OnUnitEnterLeave_tempUnitsCount - 1] set this_2 = this_1 set instance = GetUnitUserData(this_2) if instance == 0 then set instance = new_UnitIndex(this_1) endif endif endfunction function UnitIndex_onDestroy takes integer this_1 returns nothing local unit u_1 = UnitIndex__unit[this_1] local trigger this_2 local unit this_3 local integer data set UnitIndexer_tempUnits[UnitIndexer_tempUnitsCount] = u_1 set UnitIndexer_tempUnitsCount = UnitIndexer_tempUnitsCount + 1 set this_2 = UnitIndexer_onDeindexTrigger call TriggerEvaluate(this_2) set UnitIndexer_tempUnitsCount = UnitIndexer_tempUnitsCount - 1 set this_3 = UnitIndex__unit[this_1] set data = 0 call SetUnitUserData(this_3, data) endfunction function dispatch_UnitIndex_destroyUnitIndex takes integer this_1 returns nothing local integer this_2 local integer obj if UnitIndex_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling UnitIndex.UnitIndex") else call error("Called UnitIndex.UnitIndex on invalid object.") endif endif set this_2 = this_1 call UnitIndex_onDestroy(this_2) set obj = this_2 if UnitIndex_typeId[obj] == 0 then call error("Double free: object of type UnitIndex") else set UnitIndex_nextFree[UnitIndex_firstFree] = obj set UnitIndex_firstFree = UnitIndex_firstFree + 1 set UnitIndex_typeId[obj] = 0 endif endfunction function unit_deindex takes unit this_1 returns boolean local unit this_2 = this_1 local unit this_3 local integer instance local unit this_4 if GetUnitUserData(this_2) == 0 then return false else set this_3 = this_1 set this_4 = this_3 set instance = GetUnitUserData(this_4) if instance == 0 then set instance = new_UnitIndex(this_3) endif call dispatch_UnitIndex_destroyUnitIndex(instance) return true endif endfunction function code__onLeave_UnitIndexer takes nothing returns nothing if true then call unit_deindex(OnUnitEnterLeave_tempUnits[OnUnitEnterLeave_tempUnitsCount - 1]) endif endfunction function dispatch_Table_Table_Table_saveInt takes integer this_1, integer parentKey, integer value returns nothing local integer this_2 local integer parentKey_1 local integer value_1 local hashtable this_3 local integer parentKey_2 local integer childKey local integer value_2 if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Table.saveInt") else call error("Called Table.saveInt on invalid object.") endif endif set this_2 = this_1 set parentKey_1 = parentKey set value_1 = value set this_3 = Table_ht set parentKey_2 = this_2 set childKey = parentKey_1 set value_2 = value_1 call SaveInteger(this_3, parentKey_2, childKey, value_2) endfunction function HashMap_put takes integer this_1, integer key, integer value returns nothing local integer this_2 = this_1 local integer key_1 = key local boolean HashMap_HashMap_has_result local integer this_3 local integer key_2 if Table_typeId[this_2] == 0 then if this_2 == 0 then call error("Nullpointer exception when calling HashMap.has") else call error("Called HashMap.has on invalid object.") endif endif set this_3 = this_2 set key_2 = key_1 set HashMap_HashMap_has_result = dispatch_Table_Table_Table_hasInt(this_3, key_2) if not HashMap_HashMap_has_result then set HashMap_size[this_1] = HashMap_size[this_1] + 1 endif call dispatch_Table_Table_Table_saveInt(this_1, key, value) endfunction function dispatch_HashList_HashList_HashList_count takes integer this_1, integer elem returns integer local integer HashList_HashList_count_result local integer this_2 local integer elem_1 local hashtable this_3 local integer parentKey local integer childKey if HashList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashList.count") else call error("Called HashList.count on invalid object.") endif endif set this_2 = this_1 set elem_1 = elem set this_3 = HashList_occurences set parentKey = this_2 set childKey = elem_1 set HashList_HashList_count_result = LoadInteger(this_3, parentKey, childKey) return HashList_HashList_count_result endfunction function dispatch_HashList_HashList_HashList_incrOccurences takes integer this_1, integer elem returns nothing local integer this_2 local integer elem_1 local hashtable this_3 local integer parentKey local integer childKey local integer value if HashList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashList.incrOccurences") else call error("Called HashList.incrOccurences on invalid object.") endif endif set this_2 = this_1 set elem_1 = elem set this_3 = HashList_occurences set parentKey = this_2 set childKey = elem_1 set value = dispatch_HashList_HashList_HashList_count(this_2, elem_1) + 1 call SaveInteger(this_3, parentKey, childKey, value) endfunction function dispatch_HashList_HashList_HashList_add_1 takes integer this_1, integer elems_0 returns nothing local integer this_2 local integer elems_0_1 local hashtable this_3 local integer parentKey local integer childKey local integer value if HashList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashList.add") else call error("Called HashList.add on invalid object.") endif endif set this_2 = this_1 set elems_0_1 = elems_0 set this_3 = HashList_ht set parentKey = this_2 set childKey = HashList_size[this_2] set value = elems_0_1 call SaveInteger(this_3, parentKey, childKey, value) call dispatch_HashList_HashList_HashList_incrOccurences(this_2, elems_0_1) set HashList_size[this_2] = HashList_size[this_2] + 1 endfunction function dispatch_IterableMap_HashMap_IterableMap_hasKey takes integer this_1, integer key returns boolean local boolean HashMap_IterableMap_hasKey_result local integer this_2 local integer key_1 local integer this_3 local integer elem local boolean HashList_HashList_has_result local integer this_4 local integer elem_1 if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling IterableMap.hasKey") else call error("Called IterableMap.hasKey on invalid object.") endif endif set this_2 = this_1 set key_1 = key set this_3 = IterableMap_keys[this_2] set elem = key_1 if HashList_typeId[this_3] == 0 then if this_3 == 0 then call error("Nullpointer exception when calling HashList.has") else call error("Called HashList.has on invalid object.") endif endif set this_4 = this_3 set elem_1 = elem set HashList_HashList_has_result = dispatch_HashList_HashList_HashList_count(this_4, elem_1) > 0 set HashMap_IterableMap_hasKey_result = HashList_HashList_has_result return HashMap_IterableMap_hasKey_result endfunction function dispatch_HashMap_HashMap_HashMap_put takes integer this_1, integer key, integer value returns nothing local integer this_2 local integer key_1 local integer value_1 if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashMap.put") else call error("Called HashMap.put on invalid object.") endif endif if Table_typeId[this_1] <= 765 then call HashMap_put(this_1, key, value) else set this_2 = this_1 set key_1 = key set value_1 = value call HashMap_put(this_2, key_1, value_1) if not dispatch_IterableMap_HashMap_IterableMap_hasKey(this_2, key_1) then call dispatch_HashList_HashList_HashList_add_1(IterableMap_keys[this_2], key_1) endif endif endfunction function HashMap_remove takes integer this_1, integer key returns nothing local integer this_2 = this_1 local integer key_1 = key local boolean HashMap_HashMap_has_result local integer this_3 local integer key_2 local integer this_4 local integer parentKey local integer this_5 local integer parentKey_1 if Table_typeId[this_2] == 0 then if this_2 == 0 then call error("Nullpointer exception when calling HashMap.has") else call error("Called HashMap.has on invalid object.") endif endif set this_3 = this_2 set key_2 = key_1 set HashMap_HashMap_has_result = dispatch_Table_Table_Table_hasInt(this_3, key_2) if HashMap_HashMap_has_result then set HashMap_size[this_1] = HashMap_size[this_1] - 1 endif set this_4 = this_1 set parentKey = key if Table_typeId[this_4] == 0 then if this_4 == 0 then call error("Nullpointer exception when calling Table.removeInt") else call error("Called Table.removeInt on invalid object.") endif endif set this_5 = this_4 set parentKey_1 = parentKey call RemoveSavedInteger(Table_ht, this_5, parentKey_1) endfunction function dispatch_HashList_HashList_HashList_decrOccurences takes integer this_1, integer elem returns nothing local integer this_2 local integer elem_1 local hashtable this_3 local integer parentKey local integer childKey local integer value if HashList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashList.decrOccurences") else call error("Called HashList.decrOccurences on invalid object.") endif endif set this_2 = this_1 set elem_1 = elem set this_3 = HashList_occurences set parentKey = this_2 set childKey = elem_1 set value = dispatch_HashList_HashList_HashList_count(this_2, elem_1) - 1 call SaveInteger(this_3, parentKey, childKey, value) endfunction function HashList_removeAt takes integer this_1, integer index returns integer local integer temp_1 = this_1 local hashtable this_2 = HashList_ht local integer parentKey = this_1 local integer childKey = index local integer tmp local integer i local integer temp local hashtable this_3 local integer parentKey_1 local integer childKey_1 local hashtable this_4 local integer parentKey_2 local integer childKey_2 local integer value local hashtable this_5 local integer parentKey_3 local integer childKey_3 call dispatch_HashList_HashList_HashList_decrOccurences(temp_1, LoadInteger(this_2, parentKey, childKey)) set this_3 = HashList_ht set parentKey_1 = this_1 set childKey_1 = index set tmp = LoadInteger(this_3, parentKey_1, childKey_1) set i = index set temp = HashList_size[this_1] loop exitwhen i > temp set this_4 = HashList_ht set parentKey_2 = this_1 set childKey_2 = i set this_5 = HashList_ht set parentKey_3 = this_1 set childKey_3 = i + 1 set value = LoadInteger(this_5, parentKey_3, childKey_3) call SaveInteger(this_4, parentKey_2, childKey_2, value) set i = i + 1 endloop set HashList_size[this_1] = HashList_size[this_1] - 1 return tmp endfunction function HashList_remove takes integer this_1, integer t returns boolean local boolean result_1 = false local integer i = 0 local integer temp = HashList_size[this_1] - 1 local hashtable this_2 local integer parentKey local integer childKey local integer this_3 local integer index local integer temp_1 loop exitwhen i > temp set temp_1 = t set this_2 = HashList_ht set parentKey = this_1 set childKey = i if temp_1 == LoadInteger(this_2, parentKey, childKey) then set result_1 = true set this_3 = this_1 set index = i if HashList_typeId[this_3] == 0 then if this_3 == 0 then call error("Nullpointer exception when calling HashList.removeAt") else call error("Called HashList.removeAt on invalid object.") endif endif call HashList_removeAt(this_3, index) exitwhen true endif set i = i + 1 endloop return result_1 endfunction function IterableMap_remove takes integer this_1, integer key returns nothing local integer this_2 local integer t call HashMap_remove(this_1, key) if dispatch_IterableMap_HashMap_IterableMap_hasKey(this_1, key) then set this_2 = IterableMap_keys[this_1] set t = key if HashList_typeId[this_2] == 0 then if this_2 == 0 then call error("Nullpointer exception when calling HashList.remove") else call error("Called HashList.remove on invalid object.") endif endif call HashList_remove(this_2, t) endif endfunction function dispatch_HashMap_HashMap_HashMap_remove takes integer this_1, integer key returns nothing if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashMap.remove") else call error("Called HashMap.remove on invalid object.") endif endif if Table_typeId[this_1] <= 765 then call HashMap_remove(this_1, key) else call IterableMap_remove(this_1, key) endif endfunction function OnCastListener_onDestroy takes integer this_1 returns nothing local integer index local integer listener local integer listener_1 local unit this_2 local unit this_3 local integer this_4 local integer key local integer HashMap_HashMap_get_result local integer this_5 local integer key_1 if OnCastListener_eventUnit[this_1] != null then set this_2 = OnCastListener_eventUnit[this_1] set this_3 = this_2 set index = GetUnitUserData(this_3) set listener = EventListener_castMapCasters[index] if listener == this_1 then if OnCastListener_next[this_1] != 0 then set EventListener_castMapCasters[index] = OnCastListener_next[this_1] else set EventListener_castMapCasters[index] = 0 endif elseif OnCastListener_prev[this_1] != 0 then set OnCastListener_next[OnCastListener_prev[this_1]] = OnCastListener_next[this_1] endif else set this_4 = EventListener_castMap set key = OnCastListener_abilId[this_1] if Table_typeId[this_4] == 0 then if this_4 == 0 then call error("Nullpointer exception when calling HashMap.get") else call error("Called HashMap.get on invalid object.") endif endif set this_5 = this_4 set key_1 = key set HashMap_HashMap_get_result = dispatch_Table_Table_Table_loadInt(this_5, key_1) set listener_1 = HashMap_HashMap_get_result if listener_1 == this_1 then if OnCastListener_next[this_1] != 0 then call dispatch_HashMap_HashMap_HashMap_put(EventListener_castMap, OnCastListener_abilId[this_1], OnCastListener_next[this_1]) else call dispatch_HashMap_HashMap_HashMap_remove(EventListener_castMap, OnCastListener_abilId[this_1]) endif elseif OnCastListener_prev[this_1] != 0 then set OnCastListener_next[OnCastListener_prev[this_1]] = OnCastListener_next[this_1] endif endif set OnCastListener_prev[OnCastListener_next[this_1]] = OnCastListener_prev[this_1] set OnCastListener_next[this_1] = 0 set OnCastListener_prev[this_1] = 0 endfunction function dispatch_OnCastListener_destroyOnCastListener takes integer this_1 returns nothing local integer this_2 local integer obj if OnCastListener_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling OnCastListener.OnCastListener") else call error("Called OnCastListener.OnCastListener on invalid object.") endif endif set this_2 = this_1 call OnCastListener_onDestroy(this_2) set obj = this_2 if OnCastListener_typeId[obj] == 0 then call error("Double free: object of type OnCastListener") else set OnCastListener_nextFree[OnCastListener_firstFree] = obj set OnCastListener_firstFree = OnCastListener_firstFree + 1 set OnCastListener_typeId[obj] = 0 endif endfunction function destroyEventListener takes integer this_1 returns nothing local integer this_2 = this_1 local integer listener local integer listener_1 local integer obj if EventListener_uid[this_2] < 0 then set listener = EventListener_generalListenersFirsts[EventListener_eventId[this_2]] if listener == this_2 then set EventListener_generalListenersFirsts[EventListener_eventId[this_2]] = EventListener_next[this_2] elseif EventListener_prev[this_2] != 0 then set EventListener_next[EventListener_prev[this_2]] = EventListener_next[this_2] endif else set listener_1 = EventListener_unitListenersFirsts[EventListener_uid[this_2]] if listener_1 == this_2 then set EventListener_unitListenersFirsts[EventListener_uid[this_2]] = EventListener_next[this_2] elseif EventListener_prev[this_2] != 0 then set EventListener_next[EventListener_prev[this_2]] = EventListener_next[this_2] endif endif if EventListener_next[this_2] != 0 then set EventListener_prev[EventListener_next[this_2]] = EventListener_prev[this_2] endif set EventListener_next[this_2] = 0 set EventListener_prev[this_2] = 0 set obj = this_1 if EventListener_typeId[obj] == 0 then call error("Double free: object of type EventListener") else set EventListener_firstFree = EventListener_firstFree + 1 set EventListener_typeId[obj] = 0 endif endfunction function unregisterEvents takes integer id_1 returns nothing local integer listener local integer t local string msg local player showTo local integer loglvl local string msg_1 local string compositeMsg local integer this_1 local integer this_2 if id_1 > 0 then if EventListener_unitListenersFirsts[id_1] != 0 then set this_1 = id_1 set msg = "unregister unit has listeners. startid: " + I2S(this_1) set showTo = Player_localPlayer set loglvl = 0 set msg_1 = msg if 2 <= loglvl then set compositeMsg = Loglevel_getTag(loglvl) + " - " + msg_1 call DisplayTimedTextToPlayer(showTo, 0., 0., 45., compositeMsg) endif set listener = EventListener_unitListenersFirsts[id_1] set EventListener_unitListenersFirsts[id_1] = 0 loop exitwhen not (listener != 0) set t = listener set listener = EventListener_next[listener] set this_2 = t if EventListener_typeId[this_2] == 0 then if this_2 == 0 then call error("Nullpointer exception when calling EventListener.EventListener") else call error("Called EventListener.EventListener on invalid object.") endif endif call destroyEventListener(this_2) endloop endif endif endfunction function unregisterEventsForUnit takes unit u_1 returns nothing local integer index local integer listener local integer t local unit this_1 local unit this_2 if true then set this_1 = u_1 set this_2 = this_1 set index = GetUnitUserData(this_2) call unregisterEvents(index) if EventListener_castMapCasters[index] != 0 then set listener = EventListener_castMapCasters[index] set EventListener_castMapCasters[index] = 0 loop exitwhen not (listener != 0) set t = listener set listener = OnCastListener_next[listener] call dispatch_OnCastListener_destroyOnCastListener(t) endloop endif endif endfunction function code__onUnitDeindex_ClosureEvents takes nothing returns nothing call unregisterEventsForUnit(UnitIndexer_tempUnits[UnitIndexer_tempUnitsCount - 1]) endfunction function code__onUnitIndex_ClosureEvents takes nothing returns nothing local unit u_1 = UnitIndexer_tempUnits[UnitIndexer_tempUnitsCount - 1] local trigger this_1 local unit whichUnit local unitevent whichEvent if true then set this_1 = ClosureEvents_unitTrig set whichUnit = u_1 set whichEvent = EVENT_UNIT_DAMAGED call TriggerRegisterUnitEvent(this_1, whichUnit, whichEvent) endif endfunction function triggerFromIndex takes integer index returns trigger local integer this_1 = TypeCasting_typecastdata local integer parentKey = 0 local fogstate value = ConvertFogState(index) local integer this_2 local integer parentKey_1 local fogstate value_1 local hashtable this_3 local integer parentKey_2 local integer childKey local fogstate value_2 local integer this_4 local integer parentKey_3 local trigger Table_Table_loadTrigger_result local integer this_5 local integer parentKey_4 local hashtable this_6 local integer parentKey_5 local integer childKey_1 if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Table.saveFogState") else call error("Called Table.saveFogState on invalid object.") endif endif set this_2 = this_1 set parentKey_1 = parentKey set value_1 = value set this_3 = Table_ht set parentKey_2 = this_2 set childKey = parentKey_1 set value_2 = value_1 call SaveFogStateHandle(this_3, parentKey_2, childKey, value_2) set this_4 = TypeCasting_typecastdata set parentKey_3 = 0 if Table_typeId[this_4] == 0 then if this_4 == 0 then call error("Nullpointer exception when calling Table.loadTrigger") else call error("Called Table.loadTrigger on invalid object.") endif endif set this_5 = this_4 set parentKey_4 = parentKey_3 set this_6 = Table_ht set parentKey_5 = this_5 set childKey_1 = parentKey_4 set Table_Table_loadTrigger_result = LoadTriggerHandle(this_6, parentKey_5, childKey_1) return Table_Table_loadTrigger_result endfunction function code__registerPlayerUnitEvent_RegisterEvents takes nothing returns boolean local integer this_2 = RegisterEvents_onCastMap local integer key = GetSpellAbilityId() local trigger this_1 local integer HashMap_HashMap_get_result local integer this_3 local integer key_1 if Table_typeId[this_2] == 0 then if this_2 == 0 then call error("Nullpointer exception when calling HashMap.get") else call error("Called HashMap.get on invalid object.") endif endif set this_3 = this_2 set key_1 = key set HashMap_HashMap_get_result = dispatch_Table_Table_Table_loadInt(this_3, key_1) set this_1 = triggerFromIndex(HashMap_HashMap_get_result) return TriggerEvaluate(this_1) endfunction function CallbackSingle_start takes integer this_1, timer whichTimer, real time returns nothing local timer receiver = whichTimer local timer this_2 = receiver local integer data = this_1 local integer temp = TimerUtils_timerData local timer this_3 = this_2 local timer receiver_1 local timer this_4 local real time_1 local code timerCallBack call dispatch_Table_Table_Table_saveInt(temp, GetHandleId(this_3), data) set receiver_1 = receiver set this_4 = receiver_1 set time_1 = time set timerCallBack = ref_function_code__start_CallbackSingle_ClosureTimers call TimerStart(this_4, time_1, false, timerCallBack) set CallbackSingle_t[this_1] = receiver_1 endfunction function getTimer takes nothing returns timer local timer receiver local timer this_1 local integer data local timer this_2 local timer this_3 local integer data_1 local timer this_4 local integer temp local integer temp_1 if TimerUtils_freeTimersCount > 0 then set TimerUtils_freeTimersCount = TimerUtils_freeTimersCount - 1 set this_1 = TimerUtils_freeTimers[TimerUtils_freeTimersCount] set data = 0 set temp = TimerUtils_timerData set this_2 = this_1 call dispatch_Table_Table_Table_saveInt(temp, GetHandleId(this_2), data) return TimerUtils_freeTimers[TimerUtils_freeTimersCount] else set receiver = CreateTimer() set this_3 = receiver set data_1 = 0 set temp_1 = TimerUtils_timerData set this_4 = this_3 call dispatch_Table_Table_Table_saveInt(temp_1, GetHandleId(this_4), data_1) return receiver endif endfunction function doAfter takes real timeToWait, integer cb_1 returns integer local timer this_1 = getTimer() local real timeToWait_1 = timeToWait local integer cb_2 = cb_1 local integer this_2 = cb_2 local timer whichTimer = this_1 local real time = timeToWait_1 if CallbackSingle_typeId[this_2] == 0 then if this_2 == 0 then call error("Nullpointer exception when calling CallbackSingle.start") else call error("Called CallbackSingle.start on invalid object.") endif endif call CallbackSingle_start(this_2, whichTimer, time) return cb_2 endfunction function DummyCaster_finish takes integer this_1, unit dummy_1, integer id_1 returns nothing local integer clVar local real temp local integer this_2 set DummyCaster_castCount[this_1] = DummyCaster_castCount[this_1] + 1 set temp = DummyCaster_delay[this_1] if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < 32768 then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_2 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_2] = 647 else call error("Out of memory: Could not create CallbackSingle_doAfter_DummyCaster_DummyCaster.") set this_2 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_2 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_2] = 647 endif set clVar = this_2 set this[clVar] = this_1 set dummy[clVar] = dummy_1 set id[clVar] = id_1 call doAfter(temp, clVar) endfunction function createDummy takes real pos_x, real pos_y, real facing_radians returns unit local player p = Basics_DUMMY_PLAYER local integer unitId = 2016423985 local real tuple_temp = pos_x local real tuple_temp_1 = pos_y local real pos_x_1 = tuple_temp local real pos_y_1 = tuple_temp_1 local real tuple_temp_2 = facing_radians local real facing_radians_1 = tuple_temp_2 local player temp = p local integer temp_1 = unitId local real temp_2 = pos_x_1 local real temp_3 = pos_y_1 local real tuple_temp_3 = facing_radians_1 local real this_radians = tuple_temp_3 local unit u_1 = CreateUnit(temp, temp_1, temp_2, temp_3, this_radians * 57.295779513) local unit receiver = u_1 local unit this_1 = receiver local integer abil = 1097691750 local unit receiver_1 local unit receiver_2 local unit receiver_3 local unit receiver_4 local unit receiver_5 local unit this_2 local integer abil_1 local unit this_3 local integer abil_2 local unit this_4 local integer abil_3 local unit this_5 local real pos_x_2 local real pos_y_2 local unit receiver_6 local unit receiver_7 local unit this_6 local real x local unit this_7 local real y local unit this_8 local real a_radians local real this_radians_1 local unit temp_4 local real tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 local real tuple_temp_7 call UnitAddAbility(this_1, abil) set receiver_1 = receiver set this_2 = receiver_1 set abil_1 = 1097691750 call UnitRemoveAbility(this_2, abil_1) set receiver_2 = receiver_1 set this_3 = receiver_2 set abil_2 = 1095577650 call UnitAddAbility(this_3, abil_2) set receiver_3 = receiver_2 set this_4 = receiver_3 set abil_3 = 1095577650 call UnitRemoveAbility(this_4, abil_3) set receiver_4 = receiver_3 set this_5 = receiver_4 set tuple_temp_4 = pos_x set tuple_temp_5 = pos_y set pos_x_2 = tuple_temp_4 set pos_y_2 = tuple_temp_5 set receiver_6 = this_5 set this_6 = receiver_6 set x = pos_x_2 call SetUnitX(this_6, x) set receiver_7 = receiver_6 set this_7 = receiver_7 set y = pos_y_2 call SetUnitY(this_7, y) set receiver_5 = receiver_4 set this_8 = receiver_5 set tuple_temp_6 = facing_radians set a_radians = tuple_temp_6 set temp_4 = this_8 set tuple_temp_7 = a_radians set this_radians_1 = tuple_temp_7 call SetUnitFacing(temp_4, this_radians_1 * 57.295779513) return u_1 endfunction function dispatch_LLEntry_destroyLLEntry takes integer this_1 returns nothing local integer this_2 local integer obj if LLEntry_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LLEntry.LLEntry") else call error("Called LLEntry.LLEntry on invalid object.") endif endif set this_2 = this_1 set obj = this_2 if LLEntry_typeId[obj] == 0 then call error("Double free: object of type LLEntry") else set LLEntry_nextFree[LLEntry_firstFree] = obj set LLEntry_firstFree = LLEntry_firstFree + 1 set LLEntry_typeId[obj] = 0 endif endfunction function dispatch_LinkedList_LinkedList_LinkedList_removeEntry takes integer this_1, integer entry returns nothing local integer this_2 local integer entry_1 if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.removeEntry") else call error("Called LinkedList.removeEntry on invalid object.") endif endif set this_2 = this_1 set entry_1 = entry set LLEntry_next[LLEntry_prev[entry_1]] = LLEntry_next[entry_1] set LLEntry_prev[LLEntry_next[entry_1]] = LLEntry_prev[entry_1] call dispatch_LLEntry_destroyLLEntry(entry_1) set LinkedList_size[this_2] = LinkedList_size[this_2] - 1 endfunction function dispatch_LinkedList_LinkedList_LinkedList_dequeue takes integer this_1 returns integer local integer LinkedList_LinkedList_dequeue_result local integer this_2 local integer top local integer result_1 if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.dequeue") else call error("Called LinkedList.dequeue on invalid object.") endif endif set this_2 = this_1 set top = LLEntry_next[LinkedList_dummy[this_2]] set result_1 = 0 if top != LinkedList_dummy[this_2] then set result_1 = LLEntry_elem[top] call dispatch_LinkedList_LinkedList_LinkedList_removeEntry(this_2, top) endif set LinkedList_LinkedList_dequeue_result = result_1 return LinkedList_LinkedList_dequeue_result endfunction function unitFromIndex takes integer index returns unit local integer this_1 = TypeCasting_typecastdata local integer parentKey = 0 local fogstate value = ConvertFogState(index) local integer this_2 local integer parentKey_1 local fogstate value_1 local hashtable this_3 local integer parentKey_2 local integer childKey local fogstate value_2 local integer this_4 local integer parentKey_3 local unit Table_Table_loadUnit_result local integer this_5 local integer parentKey_4 local hashtable this_6 local integer parentKey_5 local integer childKey_1 if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Table.saveFogState") else call error("Called Table.saveFogState on invalid object.") endif endif set this_2 = this_1 set parentKey_1 = parentKey set value_1 = value set this_3 = Table_ht set parentKey_2 = this_2 set childKey = parentKey_1 set value_2 = value_1 call SaveFogStateHandle(this_3, parentKey_2, childKey, value_2) set this_4 = TypeCasting_typecastdata set parentKey_3 = 0 if Table_typeId[this_4] == 0 then if this_4 == 0 then call error("Nullpointer exception when calling Table.loadUnit") else call error("Called Table.loadUnit on invalid object.") endif endif set this_5 = this_4 set parentKey_4 = parentKey_3 set this_6 = Table_ht set parentKey_5 = this_5 set childKey_1 = parentKey_4 set Table_Table_loadUnit_result = LoadUnitHandle(this_6, parentKey_5, childKey_1) return Table_Table_loadUnit_result endfunction function DummyRecycler_get takes real pos_x, real pos_y, real a_radians returns unit local real tuple_temp = a_radians local real this_radians = tuple_temp local real this_1 = ModuloReal(this_radians * 57.295779513, 360.) / DummyRecycler_ANGLE_DEGREE local integer angleIndex local unit receiver local unit receiver_1 local integer cond_result local real this_2 local real this_3 local integer this_4 local integer LinkedList_LinkedList_size_result local integer this_5 local unit this_6 local real pos_x_1 local real pos_y_1 local unit receiver_2 local unit receiver_3 local unit this_7 local real x local unit this_8 local real y local unit this_9 local real tuple_temp_1 local real tuple_temp_2 if this_1 > 0. then set this_2 = this_1 + .5 set cond_result = R2I(this_2) else set this_3 = this_1 - .5 set cond_result = R2I(this_3) endif set angleIndex = ModuloInteger(cond_result, 8) set this_4 = DummyRecycler_angleQueues[angleIndex] if LinkedList_typeId[this_4] == 0 then if this_4 == 0 then call error("Nullpointer exception when calling LinkedList.size") else call error("Called LinkedList.size on invalid object.") endif endif set this_5 = this_4 set LinkedList_LinkedList_size_result = LinkedList_size[this_5] if LinkedList_LinkedList_size_result > 0 then set receiver = unitFromIndex(dispatch_LinkedList_LinkedList_LinkedList_dequeue(DummyRecycler_angleQueues[angleIndex])) set this_6 = receiver set tuple_temp_1 = pos_x set tuple_temp_2 = pos_y set pos_x_1 = tuple_temp_1 set pos_y_1 = tuple_temp_2 set receiver_2 = this_6 set this_7 = receiver_2 set x = pos_x_1 call SetUnitX(this_7, x) set receiver_3 = receiver_2 set this_8 = receiver_3 set y = pos_y_1 call SetUnitY(this_8, y) set receiver_1 = receiver set this_9 = receiver_1 call PauseUnit(this_9, false) return receiver_1 else return createDummy(pos_x, pos_y, a_radians) endif endfunction function DummyCaster_prepare takes integer this_1, integer id_1, integer lvl returns unit local unit dummy_1 = DummyRecycler_get(DummyCaster_origin_x[this_1], DummyCaster_origin_y[this_1], 0.) local real tuple_temp = DummyCaster_origin_x[this_1] local real tuple_temp_1 = DummyCaster_origin_y[this_1] local real this_x = tuple_temp local real this_y = tuple_temp_1 local real x = this_x local real y = this_y local unit receiver local unit receiver_1 local unit this_2 local real pos_x local real pos_y local unit receiver_2 local unit receiver_3 local unit this_3 local real x_1 local unit this_4 local real y_1 local unit this_5 local integer abil local unit this_6 local real wval local unit this_7 local unitstate state local real value local unit this_8 local integer abilId local integer lvl_1 local unit this_9 local player p local boolean changeColor local real tuple_temp_2 local real tuple_temp_3 if x > MapBounds_boundMin_x and x < MapBounds_boundMax_x and y > MapBounds_boundMin_y and y < MapBounds_boundMax_y then set this_2 = dummy_1 set tuple_temp_2 = DummyCaster_origin_x[this_1] set tuple_temp_3 = DummyCaster_origin_y[this_1] set pos_x = tuple_temp_2 set pos_y = tuple_temp_3 set receiver_2 = this_2 set this_3 = receiver_2 set x_1 = pos_x call SetUnitX(this_3, x_1) set receiver_3 = receiver_2 set this_4 = receiver_3 set y_1 = pos_y call SetUnitY(this_4, y_1) endif set receiver = dummy_1 set this_5 = receiver set abil = id_1 call UnitAddAbility(this_5, abil) set receiver_1 = receiver set this_6 = receiver_1 set wval = 1000000. set this_7 = this_6 set state = UNIT_STATE_MANA set value = wval call SetUnitState(this_7, state, value) if lvl > 1 then set this_8 = dummy_1 set abilId = id_1 set lvl_1 = lvl call SetUnitAbilityLevel(this_8, abilId, lvl_1) endif set this_9 = dummy_1 set p = DummyCaster_owner[this_1] set changeColor = false call SetUnitOwner(this_9, p, changeColor) return dummy_1 endfunction function DummyCaster_castPoint takes integer this_1, integer abilityId, integer lvl, integer orderId, real targetPos_x, real targetPos_y returns unit local integer this_2 = this_1 local integer id_1 = abilityId local integer lvl_1 = lvl local unit dummy_1 local boolean success local unit DummyCaster_DummyCaster_prepare_result local unit this_3 local real a_radians local real this_radians local real this_x local real this_y local real v_x local real v_y local real this_4 local unit this_5 local unit this_6 local unit this_7 local unit this_8 local integer id_2 local real target_x local real target_y local integer this_9 local unit dummy_2 local integer id_3 local real temp local unit temp_1 local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 local real tuple_temp_7 if DummyCaster_typeId[this_2] == 0 then if this_2 == 0 then call error("Nullpointer exception when calling DummyCaster.prepare") else call error("Called DummyCaster.prepare on invalid object.") endif endif set DummyCaster_DummyCaster_prepare_result = DummyCaster_prepare(this_2, id_1, lvl_1) set dummy_1 = DummyCaster_DummyCaster_prepare_result set this_3 = dummy_1 set this_5 = dummy_1 set this_6 = this_5 set temp = GetUnitX(this_6) set this_7 = this_5 set tuple_temp = temp set tuple_temp_1 = GetUnitY(this_7) set this_x = tuple_temp set this_y = tuple_temp_1 set tuple_temp_2 = targetPos_x set tuple_temp_3 = targetPos_y set v_x = tuple_temp_2 set v_y = tuple_temp_3 set this_4 = Atan2(v_y - this_y, v_x - this_x) set tuple_temp_4 = this_4 set a_radians = tuple_temp_4 set temp_1 = this_3 set tuple_temp_5 = a_radians set this_radians = tuple_temp_5 call SetUnitFacing(temp_1, this_radians * 57.295779513) set this_8 = dummy_1 set id_2 = orderId set tuple_temp_6 = targetPos_x set tuple_temp_7 = targetPos_y set target_x = tuple_temp_6 set target_y = tuple_temp_7 set success = IssuePointOrderById(this_8, id_2, target_x, target_y) set this_9 = this_1 set dummy_2 = dummy_1 set id_3 = abilityId if DummyCaster_typeId[this_9] == 0 then if this_9 == 0 then call error("Nullpointer exception when calling DummyCaster.finish") else call error("Called DummyCaster.finish on invalid object.") endif endif call DummyCaster_finish(this_9, dummy_2, id_3) if not success then set dummy_1 = null endif return dummy_1 endfunction function new_DummyCaster takes nothing returns integer local integer this_1 local integer this_2 local integer this_3 local integer this_4 local real tuple_temp local real tuple_temp_1 if DummyCaster_firstFree == 0 then if DummyCaster_maxIndex < 32768 then set DummyCaster_maxIndex = DummyCaster_maxIndex + 1 set this_2 = DummyCaster_maxIndex set DummyCaster_typeId[this_2] = 660 else call error("Out of memory: Could not create DummyCaster.") set this_2 = 0 endif else set DummyCaster_firstFree = DummyCaster_firstFree - 1 set this_2 = DummyCaster_nextFree[DummyCaster_firstFree] set DummyCaster_typeId[this_2] = 660 endif set this_1 = this_2 set this_3 = this_1 set this_4 = this_3 set DummyCaster_castCount[this_4] = 0 set DummyCaster_delay[this_4] = 5.0 set DummyCaster_owner[this_4] = Basics_DUMMY_PLAYER set tuple_temp = Vectors_ZERO2_x set tuple_temp_1 = Vectors_ZERO2_y set DummyCaster_origin_x[this_4] = tuple_temp set DummyCaster_origin_y[this_4] = tuple_temp_1 return this_1 endfunction function fireEx_onPointCast_nullclosurebug takes integer this_1, unit caster, real target_x, real target_y returns nothing local string msg = "Spell has been casted" local integer receiver local integer receiver_1 local integer receiver_2 local integer receiver_3 local integer this_2 local real delay local integer this_3 local real delay_1 local integer this_4 local player owner local integer this_5 local player owner_1 local unit this_6 local integer this_7 local real pos_x local real pos_y local integer this_8 local real pos_x_1 local real pos_y_1 local real this_x local real this_y local real v_x local real v_y local unit this_9 local unit this_10 local unit this_11 local integer this_12 local integer abilityId local integer lvl local integer orderId local real targetPos_x local real targetPos_y local real temp local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 local real tuple_temp_7 local real tuple_temp_8 local real tuple_temp_9 local real tuple_temp_10 local real tuple_temp_11 call DisplayTimedTextToPlayer(Player_localPlayer, 0., 0., 45., msg) set receiver = new_DummyCaster() set this_2 = receiver set delay = 3. if DummyCaster_typeId[this_2] == 0 then if this_2 == 0 then call error("Nullpointer exception when calling DummyCaster.delay") else call error("Called DummyCaster.delay on invalid object.") endif endif set this_3 = this_2 set delay_1 = delay set DummyCaster_delay[this_3] = delay_1 set receiver_1 = receiver set this_4 = receiver_1 set this_6 = caster set owner = GetOwningPlayer(this_6) if DummyCaster_typeId[this_4] == 0 then if this_4 == 0 then call error("Nullpointer exception when calling DummyCaster.owner") else call error("Called DummyCaster.owner on invalid object.") endif endif set this_5 = this_4 set owner_1 = owner set DummyCaster_owner[this_5] = owner_1 set receiver_2 = receiver_1 set this_7 = receiver_2 set this_9 = caster set this_10 = this_9 set temp = GetUnitX(this_10) set this_11 = this_9 set tuple_temp = temp set tuple_temp_1 = GetUnitY(this_11) set this_x = tuple_temp set this_y = tuple_temp_1 set tuple_temp_2 = 100. set tuple_temp_3 = 0. set v_x = tuple_temp_2 set v_y = tuple_temp_3 set tuple_temp_4 = this_x + v_x set tuple_temp_5 = this_y + v_y set pos_x = tuple_temp_4 set pos_y = tuple_temp_5 if DummyCaster_typeId[this_7] == 0 then if this_7 == 0 then call error("Nullpointer exception when calling DummyCaster.origin") else call error("Called DummyCaster.origin on invalid object.") endif endif set this_8 = this_7 set tuple_temp_6 = pos_x set tuple_temp_7 = pos_y set pos_x_1 = tuple_temp_6 set pos_y_1 = tuple_temp_7 set tuple_temp_8 = pos_x_1 set tuple_temp_9 = pos_y_1 set DummyCaster_origin_x[this_8] = tuple_temp_8 set DummyCaster_origin_y[this_8] = tuple_temp_9 set receiver_3 = receiver_2 set this_12 = receiver_3 set abilityId = 1095262842 set lvl = 1 set orderId = 852089 set tuple_temp_10 = target_x set tuple_temp_11 = target_y set targetPos_x = tuple_temp_10 set targetPos_y = tuple_temp_11 if DummyCaster_typeId[this_12] == 0 then if this_12 == 0 then call error("Nullpointer exception when calling DummyCaster.castPoint") else call error("Called DummyCaster.castPoint on invalid object.") endif endif call DummyCaster_castPoint(this_12, abilityId, lvl, orderId, targetPos_x, targetPos_y) endfunction function OnPointCast_fire takes integer this_1, unit caster returns nothing local integer this_2 = this_1 local unit caster_1 = caster local real tuple_temp = GetSpellTargetX() local real tuple_temp_1 = GetSpellTargetY() local real target_x = tuple_temp local real target_y = tuple_temp_1 if OnCastListener_typeId[this_2] == 0 then if this_2 == 0 then call error("Nullpointer exception when calling OnPointCast.fireEx") else call error("Called OnPointCast.fireEx on invalid object.") endif endif call fireEx_onPointCast_nullclosurebug(this_2, caster_1, target_x, target_y) endfunction function dispatch_OnCastListener_ClosureEvents_OnCastListener_fire takes integer this_1, unit caster returns nothing if OnCastListener_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling OnCastListener.fire") else call error("Called OnCastListener.fire on invalid object.") endif endif if OnCastListener_typeId[this_1] <= 737 then if OnCastListener_typeId[this_1] <= 735 then call GetSpellAbilityId() else call OnPointCast_fire(this_1, caster) endif else call GetSpellTargetUnit() endif endfunction function EventListener_onSpellEffect takes nothing returns nothing local unit trigUnit = GetTriggerUnit() local integer abilId = GetSpellAbilityId() local unit this_1 = trigUnit local unit this_2 = this_1 local integer index = GetUnitUserData(this_2) local integer listener local integer nextListener local integer listener_1 local integer nextListener_1 local integer this_3 local integer key local boolean HashMap_HashMap_has_result local integer this_4 local integer key_1 local integer this_5 local integer key_2 local integer HashMap_HashMap_get_result local integer this_6 local integer key_3 if EventListener_castMapCasters[index] != 0 then set listener = EventListener_castMapCasters[index] loop exitwhen not (listener != 0) set nextListener = OnCastListener_next[listener] if OnCastListener_abilId[listener] == -1 or OnCastListener_abilId[listener] == abilId then call dispatch_OnCastListener_ClosureEvents_OnCastListener_fire(listener, GetSpellAbilityUnit()) endif set listener = nextListener endloop endif set this_3 = EventListener_castMap set key = abilId if Table_typeId[this_3] == 0 then if this_3 == 0 then call error("Nullpointer exception when calling HashMap.has") else call error("Called HashMap.has on invalid object.") endif endif set this_4 = this_3 set key_1 = key set HashMap_HashMap_has_result = dispatch_Table_Table_Table_hasInt(this_4, key_1) if HashMap_HashMap_has_result then set this_5 = EventListener_castMap set key_2 = abilId if Table_typeId[this_5] == 0 then if this_5 == 0 then call error("Nullpointer exception when calling HashMap.get") else call error("Called HashMap.get on invalid object.") endif endif set this_6 = this_5 set key_3 = key_2 set HashMap_HashMap_get_result = dispatch_Table_Table_Table_loadInt(this_6, key_3) set listener_1 = HashMap_HashMap_get_result loop exitwhen not (listener_1 != 0) set nextListener_1 = OnCastListener_next[listener_1] if OnCastListener_eventUnit[listener_1] == null or OnCastListener_eventUnit[listener_1] == trigUnit then call dispatch_OnCastListener_ClosureEvents_OnCastListener_fire(listener_1, GetSpellAbilityUnit()) endif set listener_1 = nextListener_1 endloop endif endfunction function code__registerPlayerUnitEvent_nullTimer_ClosureEvents takes nothing returns nothing call EventListener_onSpellEffect() endfunction function code__registerPlayerUnitEvent_nullTimer_OnUnitEnterLeave takes nothing returns nothing local unit leavingUnit = GetTriggerUnit() local unit this_1 = leavingUnit local integer id_1 = 1095577649 local unit u_1 local trigger this_2 if GetUnitAbilityLevel(this_1, id_1) == 0 and GetIssuedOrderId() == 852056 then set u_1 = leavingUnit set OnUnitEnterLeave_tempUnits[OnUnitEnterLeave_tempUnitsCount] = u_1 set OnUnitEnterLeave_tempUnitsCount = OnUnitEnterLeave_tempUnitsCount + 1 set this_2 = OnUnitEnterLeave_eventTrigger call TriggerExecute(this_2) set OnUnitEnterLeave_tempUnitsCount = OnUnitEnterLeave_tempUnitsCount - 1 endif endfunction function code__startPeriodic_GameTimer takes nothing returns nothing set GameTimer_currentTime = GameTimer_currentTime + 0.030 endfunction function DummyRecycler_recycle takes unit u_1 returns nothing local integer smallestQueue = 0 local integer i = 1 local integer temp = 8 - 1 local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local unit receiver_4 local unit receiver_5 local integer this_1 local integer LinkedList_LinkedList_size_result local integer this_2 local integer this_3 local integer LinkedList_LinkedList_size_result_1 local integer this_4 local integer this_5 local integer LinkedList_LinkedList_size_result_2 local integer this_6 local unit this_7 local integer this_8 local integer elem local integer this_9 local integer elem_1 local unit object local handle this_10 local unit this_11 local real pos_x local real pos_y local unit receiver_6 local unit receiver_7 local unit this_12 local real x local unit this_13 local real y local real this_x local real this_y local real v_x local real v_y local unit this_14 local unit this_15 local real a_radians local real this_radians local real this_16 local unit this_17 local real scale local unit this_18 local integer col_red local integer col_green local integer col_blue local integer col_alpha local unit this_19 local player p local boolean changeColor local integer temp_1 local unit temp_2 local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 local real tuple_temp_7 local integer tuple_temp_8 local integer tuple_temp_9 local integer tuple_temp_10 local integer tuple_temp_11 loop exitwhen i > temp set this_1 = DummyRecycler_angleQueues[smallestQueue] if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.size") else call error("Called LinkedList.size on invalid object.") endif endif set this_2 = this_1 set LinkedList_LinkedList_size_result = LinkedList_size[this_2] set temp_1 = LinkedList_LinkedList_size_result set this_3 = DummyRecycler_angleQueues[i] if LinkedList_typeId[this_3] == 0 then if this_3 == 0 then call error("Nullpointer exception when calling LinkedList.size") else call error("Called LinkedList.size on invalid object.") endif endif set this_4 = this_3 set LinkedList_LinkedList_size_result_1 = LinkedList_size[this_4] if temp_1 > LinkedList_LinkedList_size_result_1 then set smallestQueue = i endif set i = i + 1 endloop set this_5 = DummyRecycler_angleQueues[smallestQueue] if LinkedList_typeId[this_5] == 0 then if this_5 == 0 then call error("Nullpointer exception when calling LinkedList.size") else call error("Called LinkedList.size on invalid object.") endif endif set this_6 = this_5 set LinkedList_LinkedList_size_result_2 = LinkedList_size[this_6] if LinkedList_LinkedList_size_result_2 >= 6 then set this_7 = u_1 call RemoveUnit(this_7) else set this_8 = DummyRecycler_angleQueues[smallestQueue] set object = u_1 set this_10 = object set elem = GetHandleId(this_10) if LinkedList_typeId[this_8] == 0 then if this_8 == 0 then call error("Nullpointer exception when calling LinkedList.enqueue") else call error("Called LinkedList.enqueue on invalid object.") endif endif set this_9 = this_8 set elem_1 = elem call dispatch_LinkedList_LinkedList_LinkedList_add_1(this_9, elem_1) set receiver = u_1 set this_11 = receiver set tuple_temp = MapBounds_boundMax_x set tuple_temp_1 = MapBounds_boundMax_y set this_x = tuple_temp set this_y = tuple_temp_1 set tuple_temp_2 = 16. set tuple_temp_3 = 16. set v_x = tuple_temp_2 set v_y = tuple_temp_3 set tuple_temp_4 = this_x - v_x set tuple_temp_5 = this_y - v_y set pos_x = tuple_temp_4 set pos_y = tuple_temp_5 set receiver_6 = this_11 set this_12 = receiver_6 set x = pos_x call SetUnitX(this_12, x) set receiver_7 = receiver_6 set this_13 = receiver_7 set y = pos_y call SetUnitY(this_13, y) set receiver_1 = receiver set this_14 = receiver_1 call PauseUnit(this_14, true) set receiver_2 = receiver_1 set this_15 = receiver_2 set this_16 = smallestQueue * DummyRecycler_ANGLE_DEGREE set tuple_temp_6 = this_16 * 0.017453293 set a_radians = tuple_temp_6 set temp_2 = this_15 set tuple_temp_7 = a_radians set this_radians = tuple_temp_7 call SetUnitFacing(temp_2, this_radians * 57.295779513) set receiver_3 = receiver_2 set this_17 = receiver_3 set scale = 1. call SetUnitScale(this_17, scale, scale, scale) set receiver_4 = receiver_3 set this_18 = receiver_4 set tuple_temp_8 = Colors_COLOR_WHITE_red set tuple_temp_9 = Colors_COLOR_WHITE_green set tuple_temp_10 = Colors_COLOR_WHITE_blue set tuple_temp_11 = Colors_COLOR_WHITE_alpha set col_red = tuple_temp_8 set col_green = tuple_temp_9 set col_blue = tuple_temp_10 set col_alpha = tuple_temp_11 call SetUnitVertexColor(this_18, col_red, col_green, col_blue, col_alpha) set receiver_5 = receiver_4 set this_19 = receiver_5 set p = Basics_DUMMY_PLAYER set changeColor = true call SetUnitOwner(this_19, p, changeColor) endif endfunction function dispatch_Callback_destroyCallback takes integer this_1 returns nothing local integer this_2 local integer obj if Callback_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Callback.Callback") else call error("Called Callback.Callback on invalid object.") endif endif set this_2 = this_1 set obj = this_2 if Callback_typeId[obj] == 0 then call error("Double free: object of type Callback") else set Callback_firstFree = Callback_firstFree + 1 set Callback_typeId[obj] = 0 endif endfunction function call_doAfter_ClosureTimers takes integer this_1 returns nothing local timerdialog this_2 call dispatch_Callback_destroyCallback(cb[this_1]) set this_2 = dia[this_1] call DestroyTimerDialog(this_2) endfunction function call_nullTimer_ClosureEvents takes integer this_1 returns nothing local trigger this_2 = ClosureEvents_unitTrig local code actionFunc = ref_function_code__addAction_nullTimer_ClosureEvents local integer i local integer temp local trigger receiver local trigger receiver_1 local trigger receiver_2 local trigger receiver_3 local trigger receiver_4 local trigger receiver_5 local trigger receiver_6 local trigger receiver_7 local trigger receiver_8 local trigger receiver_9 local trigger this_3 local code actionFunc_1 local trigger this_4 local code actionFunc_2 local trigger this_5 local player whichPlayer local playerevent whichPlayerEvent local trigger this_6 local player whichPlayer_1 local playerevent whichPlayerEvent_1 local trigger this_7 local player whichPlayer_2 local playerevent whichPlayerEvent_2 local trigger this_8 local player whichPlayer_3 local playerevent whichPlayerEvent_3 local trigger this_9 local player whichPlayer_4 local playerevent whichPlayerEvent_4 local trigger this_10 local player whichPlayer_5 local playerevent whichPlayerEvent_5 local trigger this_11 local player whichPlayer_6 local playerevent whichPlayerEvent_6 local trigger this_12 local player whichPlayer_7 local playerevent whichPlayerEvent_7 local trigger this_13 local player whichPlayer_8 local playerevent whichPlayerEvent_8 local trigger this_14 local player whichPlayer_9 local playerevent whichPlayerEvent_9 local trigger this_15 local player whichPlayer_10 local string chatMessageToDetect local boolean exactMatchOnly call TriggerAddAction(this_2, actionFunc) set this_3 = ClosureEvents_leaveTrig set actionFunc_1 = ref_function_code__addAction_nullTimer_ClosureEvents_194 call TriggerAddAction(this_3, actionFunc_1) set this_4 = ClosureEvents_keyTrig set actionFunc_2 = ref_function_code__addAction_nullTimer_ClosureEvents_195 call TriggerAddAction(this_4, actionFunc_2) set i = 0 set temp = bj_MAX_PLAYERS - 1 loop exitwhen i > temp set this_5 = ClosureEvents_leaveTrig set whichPlayer = Player_players[i] set whichPlayerEvent = EVENT_PLAYER_LEAVE call TriggerRegisterPlayerEvent(this_5, whichPlayer, whichPlayerEvent) set receiver = ClosureEvents_keyTrig set this_6 = receiver set whichPlayer_1 = Player_players[i] set whichPlayerEvent_1 = EVENT_PLAYER_ARROW_DOWN_DOWN call TriggerRegisterPlayerEvent(this_6, whichPlayer_1, whichPlayerEvent_1) set receiver_1 = receiver set this_7 = receiver_1 set whichPlayer_2 = Player_players[i] set whichPlayerEvent_2 = EVENT_PLAYER_ARROW_DOWN_UP call TriggerRegisterPlayerEvent(this_7, whichPlayer_2, whichPlayerEvent_2) set receiver_2 = receiver_1 set this_8 = receiver_2 set whichPlayer_3 = Player_players[i] set whichPlayerEvent_3 = EVENT_PLAYER_ARROW_UP_DOWN call TriggerRegisterPlayerEvent(this_8, whichPlayer_3, whichPlayerEvent_3) set receiver_3 = receiver_2 set this_9 = receiver_3 set whichPlayer_4 = Player_players[i] set whichPlayerEvent_4 = EVENT_PLAYER_ARROW_UP_UP call TriggerRegisterPlayerEvent(this_9, whichPlayer_4, whichPlayerEvent_4) set receiver_4 = receiver_3 set this_10 = receiver_4 set whichPlayer_5 = Player_players[i] set whichPlayerEvent_5 = EVENT_PLAYER_ARROW_LEFT_DOWN call TriggerRegisterPlayerEvent(this_10, whichPlayer_5, whichPlayerEvent_5) set receiver_5 = receiver_4 set this_11 = receiver_5 set whichPlayer_6 = Player_players[i] set whichPlayerEvent_6 = EVENT_PLAYER_ARROW_LEFT_UP call TriggerRegisterPlayerEvent(this_11, whichPlayer_6, whichPlayerEvent_6) set receiver_6 = receiver_5 set this_12 = receiver_6 set whichPlayer_7 = Player_players[i] set whichPlayerEvent_7 = EVENT_PLAYER_ARROW_RIGHT_DOWN call TriggerRegisterPlayerEvent(this_12, whichPlayer_7, whichPlayerEvent_7) set receiver_7 = receiver_6 set this_13 = receiver_7 set whichPlayer_8 = Player_players[i] set whichPlayerEvent_8 = EVENT_PLAYER_ARROW_RIGHT_UP call TriggerRegisterPlayerEvent(this_13, whichPlayer_8, whichPlayerEvent_8) set receiver_8 = receiver_7 set this_14 = receiver_8 set whichPlayer_9 = Player_players[i] set whichPlayerEvent_9 = EVENT_PLAYER_END_CINEMATIC call TriggerRegisterPlayerEvent(this_14, whichPlayer_9, whichPlayerEvent_9) set receiver_9 = receiver_8 set this_15 = receiver_9 set whichPlayer_10 = Player_players[i] set chatMessageToDetect = "" set exactMatchOnly = false call TriggerRegisterPlayerChatEvent(this_15, whichPlayer_10, chatMessageToDetect, exactMatchOnly) set i = i + 1 endloop call registerPlayerUnitEvent(EVENT_PLAYER_UNIT_SPELL_EFFECT, null, ref_function_code__registerPlayerUnitEvent_nullTimer_ClosureEvents, null) endfunction function call_nullTimer_OnUnitEnterLeave takes integer this_1 returns nothing local trigger receiver = CreateTrigger() local trigger this_2 = receiver local region whichRegion = MapBounds_boundRegion local boolexpr filter = Filter(ref_function_code__Filter_registerEnterRegion_nullTimer_OnUnitEnterLeave) local group receiver_1 local group receiver_2 local playerunitevent p local code c local group this_3 local rect rec local group this_4 local rect rec_1 local boolexpr filter_1 local group this_5 local group this_6 call TriggerRegisterEnterRegion(this_2, whichRegion, filter) set p = EVENT_PLAYER_UNIT_ISSUED_ORDER set c = ref_function_code__registerPlayerUnitEvent_nullTimer_OnUnitEnterLeave call registerPlayerUnitEvent(p, null, c, null) set this_3 = OnUnitEnterLeave_preplacedUnits set rec = MapBounds_boundRect set this_4 = this_3 set rec_1 = rec set filter_1 = null call GroupEnumUnitsInRect(this_4, rec_1, filter_1) call ForGroup(OnUnitEnterLeave_preplacedUnits, ref_function_code__ForGroup_nullTimer_OnUnitEnterLeave) set receiver_1 = OnUnitEnterLeave_preplacedUnits set this_5 = receiver_1 call GroupClear(this_5) set receiver_2 = receiver_1 set this_6 = receiver_2 call DestroyGroup(this_6) endfunction function dispatch_DummyCaster_DummyCaster_DummyCaster_recycleDummy takes integer this_1, unit dummy_1, integer id_1 returns nothing local unit dummy_2 local integer id_2 local unit receiver local unit this_2 local integer abil if DummyCaster_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling DummyCaster.recycleDummy") else call error("Called DummyCaster.recycleDummy on invalid object.") endif endif set dummy_2 = dummy_1 set id_2 = id_1 set receiver = dummy_2 set this_2 = receiver set abil = id_2 call UnitRemoveAbility(this_2, abil) call DummyRecycler_recycle(dummy_2) endfunction function dispatch_DummyCaster_destroyDummyCaster takes integer this_1 returns nothing local integer this_2 local integer obj if DummyCaster_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling DummyCaster.DummyCaster") else call error("Called DummyCaster.DummyCaster on invalid object.") endif endif set this_2 = this_1 set obj = this_2 if DummyCaster_typeId[obj] == 0 then call error("Double free: object of type DummyCaster") else set DummyCaster_nextFree[DummyCaster_firstFree] = obj set DummyCaster_firstFree = DummyCaster_firstFree + 1 set DummyCaster_typeId[obj] = 0 endif endfunction function dispatch_ForGroupCallback_destroyForGroupCallback takes integer this_1 returns nothing local integer this_2 local integer obj if ForGroupCallback_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling ForGroupCallback.ForGroupCallback") else call error("Called ForGroupCallback.ForGroupCallback on invalid object.") endif endif set this_2 = this_1 set obj = this_2 if ForGroupCallback_typeId[obj] == 0 then call error("Double free: object of type ForGroupCallback") else set ForGroupCallback_nextFree[ForGroupCallback_firstFree] = obj set ForGroupCallback_firstFree = ForGroupCallback_firstFree + 1 set ForGroupCallback_typeId[obj] = 0 endif endfunction function group_forEachFrom takes group this_1, integer cb_1 returns nothing local group from = this_1 local unit u_1 local group this_2 local group this_3 local unit iterUnit loop set this_2 = from exitwhen not (FirstOfGroup(this_2) != null) set this_3 = from set iterUnit = FirstOfGroup(this_3) call GroupRemoveUnit(this_3, iterUnit) set u_1 = iterUnit call dispatch_ForGroupCallback_ClosureForGroups_ForGroupCallback_callback(cb_1, u_1) endloop call dispatch_ForGroupCallback_destroyForGroupCallback(cb_1) endfunction function finishPreload takes nothing returns nothing local unit this_1 = Preloader_dum local integer clVar local group temp local integer this_2 local group this_3 call RemoveUnit(this_1) set temp = Preloader_dumg if ForGroupCallback_firstFree == 0 then if ForGroupCallback_maxIndex < 32768 then set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1 set this_2 = ForGroupCallback_maxIndex set ForGroupCallback_typeId[this_2] = 668 else call error("Out of memory: Could not create ForGroupCallback_forEachFrom_Preloader.") set this_2 = 0 endif else set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1 set this_2 = ForGroupCallback_nextFree[ForGroupCallback_firstFree] set ForGroupCallback_typeId[this_2] = 668 endif set clVar = this_2 call group_forEachFrom(temp, clVar) set this_3 = Preloader_dumg call DestroyGroup(this_3) set Preloader_dumg = null endfunction function testFail takes string msg returns nothing endfunction function dispatch_CallbackSingle_ClosureTimers_CallbackSingle_call takes integer this_1 returns nothing local integer this_2 local integer expected local integer this_3 local integer this_4 local integer this_5 local integer this_6 local string temp if CallbackSingle_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling CallbackSingle.call") else call error("Called CallbackSingle.call on invalid object.") endif endif if CallbackSingle_typeId[this_1] <= 647 then if CallbackSingle_typeId[this_1] <= 645 then if CallbackSingle_typeId[this_1] <= 644 then if CallbackSingle_typeId[this_1] <= 643 then call call_doAfter_ClosureTimers(this_1) else set ClosureTimers_x = ClosureTimers_x + 50 endif else set ClosureTimers_x = ClosureTimers_x * 2 endif elseif CallbackSingle_typeId[this_1] <= 646 then set ClosureTimers_x = ClosureTimers_x / 2 set this_2 = ClosureTimers_x set expected = 250 if this_2 != expected then set this_3 = expected set temp = "Expected <" + I2S(this_3) + ">, Actual <" set this_4 = this_2 call testFail(temp + I2S(this_4) + ">") endif else set this_5 = this_1 call dispatch_DummyCaster_DummyCaster_DummyCaster_recycleDummy(this[this_5], dummy[this_5], id[this_5]) set DummyCaster_castCount[this[this_5]] = DummyCaster_castCount[this[this_5]] - 1 if DummyCaster_castCount[this[this_5]] == 0 then call dispatch_DummyCaster_destroyDummyCaster(this[this_5]) endif endif elseif CallbackSingle_typeId[this_1] <= 649 then if CallbackSingle_typeId[this_1] <= 648 then set this_6 = this_1 call DummyRecycler_recycle(u[this_6]) else call call_nullTimer_ClosureEvents(this_1) endif elseif CallbackSingle_typeId[this_1] <= 650 then call call_nullTimer_OnUnitEnterLeave(this_1) else call finishPreload() endif endfunction function timer_release takes timer this_1 returns nothing local timer this_2 local timer this_3 local timer this_4 local integer data local timer this_5 local timer this_6 local integer temp local integer temp_1 if this_1 == null then call error("Trying to release a null timer") return endif set this_2 = this_1 set temp = TimerUtils_timerData set this_3 = this_2 if dispatch_Table_Table_Table_loadInt(temp, GetHandleId(this_3)) == 679645218 then call error("ReleaseTimer: Double free!") return endif set this_4 = this_1 set data = 679645218 set temp_1 = TimerUtils_timerData set this_5 = this_4 call dispatch_Table_Table_Table_saveInt(temp_1, GetHandleId(this_5), data) set this_6 = this_1 call PauseTimer(this_6) set TimerUtils_freeTimers[TimerUtils_freeTimersCount] = this_1 set TimerUtils_freeTimersCount = TimerUtils_freeTimersCount + 1 endfunction function dispatch_CallbackSingle_destroyCallbackSingle takes integer this_1 returns nothing local integer this_2 local integer this_3 local integer obj if CallbackSingle_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling CallbackSingle.CallbackSingle") else call error("Called CallbackSingle.CallbackSingle on invalid object.") endif endif set this_2 = this_1 set this_3 = this_2 call timer_release(CallbackSingle_t[this_3]) set obj = this_2 if CallbackSingle_typeId[obj] == 0 then call error("Double free: object of type CallbackSingle") else set CallbackSingle_nextFree[CallbackSingle_firstFree] = obj set CallbackSingle_firstFree = CallbackSingle_firstFree + 1 set CallbackSingle_typeId[obj] = 0 endif endfunction function CallbackSingle_staticCallback takes nothing returns nothing local timer t = GetExpiredTimer() local timer this_1 = t local integer temp = TimerUtils_timerData local timer this_2 = this_1 local integer cb_1 = dispatch_Table_Table_Table_loadInt(temp, GetHandleId(this_2)) call dispatch_CallbackSingle_ClosureTimers_CallbackSingle_call(cb_1) call dispatch_CallbackSingle_destroyCallbackSingle(cb_1) endfunction function code__start_CallbackSingle_ClosureTimers takes nothing returns nothing call CallbackSingle_staticCallback() endfunction function init_Abilities takes nothing returns boolean return true endfunction function init_AbilityIds takes nothing returns boolean return true endfunction function init_AbilityObjEditing takes nothing returns boolean return true endfunction function init_Angle takes nothing returns boolean return true endfunction function init_AttachmentPoints takes nothing returns boolean return true endfunction function init_Basics takes nothing returns boolean set Basics_DUMMY_PLAYER = Player_players[PLAYER_NEUTRAL_PASSIVE] return true endfunction function initPows takes nothing returns nothing local integer allPows local integer i local integer temp local integer i_1 local integer temp_1 local integer this_1 local integer other local integer this_2 local integer other_1 set BitSet_pows[0] = 1 set allPows = 1 set i = 1 set temp = 32 - 1 loop exitwhen i > temp set BitSet_pows[i] = BitSet_pows[i - 1] * 2 set this_1 = allPows set other = BitSet_pows[i] set allPows = BlzBitOr(this_1, other) set i = i + 1 endloop set i_1 = 0 set temp_1 = 32 - 1 loop exitwhen i_1 > temp_1 set this_2 = allPows set other_1 = BitSet_pows[i_1] call BlzBitXor(this_2, other_1) set i_1 = i_1 + 1 endloop endfunction function init_BitSet takes nothing returns boolean call initPows() return true endfunction function init_BuffIds takes nothing returns boolean return true endfunction function init_Buildings takes nothing returns boolean return true endfunction function new_OrderStringFactory takes nothing returns integer local integer this_1 local integer this_2 if OrderStringFactory_firstFree == 0 then if OrderStringFactory_maxIndex < 32768 then set OrderStringFactory_maxIndex = OrderStringFactory_maxIndex + 1 set this_2 = OrderStringFactory_maxIndex else call error("Out of memory: Could not create OrderStringFactory.") set this_2 = 0 endif else set OrderStringFactory_firstFree = OrderStringFactory_firstFree - 1 set this_2 = OrderStringFactory_nextFree[OrderStringFactory_firstFree] endif set this_1 = this_2 return this_1 endfunction function init_ChannelAbilityPreset takes nothing returns boolean call new_OrderStringFactory() return true endfunction function new_HashMap takes nothing returns integer local integer this_1 local integer this_2 local integer this_3 local integer this_4 if Table_firstFree == 0 then if Table_maxIndex < 32768 then set Table_maxIndex = Table_maxIndex + 1 set this_2 = Table_maxIndex set Table_typeId[this_2] = 765 else call error("Out of memory: Could not create HashMap.") set this_2 = 0 endif else set Table_firstFree = Table_firstFree - 1 set this_2 = Table_nextFree[Table_firstFree] set Table_typeId[this_2] = 765 endif set this_1 = this_2 set this_3 = this_1 set this_4 = this_3 set HashMap_size[this_4] = 0 return this_1 endfunction function init_ClosureEvents takes nothing returns boolean local integer clVar local code func local trigger this_1 local boolexpr condition local code func_1 local trigger this_2 local boolexpr condition_1 local integer this_3 local integer cb_1 local real timeToWait local integer cb_2 local timer this_4 local real timeToWait_1 local integer cb_3 local integer this_5 local timer whichTimer local real time set ClosureEvents_EVENT_PLAYER_CHAT_FILTER = ConvertPlayerEvent(96) set EventListener_castMap = new_HashMap() set ClosureEvents_unitTrig = CreateTrigger() set ClosureEvents_leaveTrig = CreateTrigger() set ClosureEvents_keyTrig = CreateTrigger() set func = ref_function_code__onUnitIndex_ClosureEvents set this_1 = UnitIndexer_onIndexTrigger set condition = Condition(func) call TriggerAddCondition(this_1, condition) set func_1 = ref_function_code__onUnitDeindex_ClosureEvents set this_2 = UnitIndexer_onDeindexTrigger set condition_1 = Condition(func_1) call TriggerAddCondition(this_2, condition_1) if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < 32768 then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_3 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_3] = 649 else call error("Out of memory: Could not create CallbackSingle_nullTimer_ClosureEvents.") set this_3 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_3 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_3] = 649 endif set clVar = this_3 set cb_1 = clVar set timeToWait = 0. set cb_2 = cb_1 set this_4 = getTimer() set timeToWait_1 = timeToWait set cb_3 = cb_2 set this_5 = cb_3 set whichTimer = this_4 set time = timeToWait_1 if CallbackSingle_typeId[this_5] == 0 then if this_5 == 0 then call error("Nullpointer exception when calling CallbackSingle.start") else call error("Called CallbackSingle.start on invalid object.") endif endif call CallbackSingle_start(this_5, whichTimer, time) return true endfunction function init_ClosureForGroups takes nothing returns boolean call CreateGroup() set ClosureForGroups_maxCount = 2147483647 call Filter(ref_function_code__Filter_ClosureForGroups) call Rect(0., 0., 0., 0.) return true endfunction function init_ClosureTimers takes nothing returns boolean set ClosureTimers_x = 200 return true endfunction function new_Table takes nothing returns integer local integer this_1 local integer this_2 if Table_firstFree == 0 then if Table_maxIndex < 32768 then set Table_maxIndex = Table_maxIndex + 1 set this_2 = Table_maxIndex set Table_typeId[this_2] = 764 else call error("Out of memory: Could not create Table.") set this_2 = 0 endif else set Table_firstFree = Table_firstFree - 1 set this_2 = Table_nextFree[Table_firstFree] set Table_typeId[this_2] = 764 endif set this_1 = this_2 return this_1 endfunction function init_Colors takes nothing returns boolean local integer this_red local integer this_green local integer this_blue local integer this_alpha local integer number local integer firstpart local integer secondpart local integer number_1 local integer firstpart_1 local integer secondpart_1 local integer number_2 local integer firstpart_2 local integer number_3 local integer this_red_1 local integer this_green_1 local integer this_blue_1 local integer this_alpha_1 local integer number_4 local integer firstpart_3 local integer secondpart_2 local integer number_5 local integer firstpart_4 local integer secondpart_3 local integer number_6 local integer firstpart_5 local integer number_7 local integer this_red_2 local integer this_green_2 local integer this_blue_2 local integer this_alpha_2 local integer number_8 local integer firstpart_6 local integer secondpart_4 local integer number_9 local integer firstpart_7 local integer secondpart_5 local integer number_10 local integer firstpart_8 local integer number_11 local integer i local string this_1 local string temp local string temp_1 local string temp_2 local integer temp_3 local integer tuple_temp local integer tuple_temp_1 local integer tuple_temp_2 local integer tuple_temp_3 local integer tuple_temp_4 local integer tuple_temp_5 local integer tuple_temp_6 local integer tuple_temp_7 local integer tuple_temp_8 local integer tuple_temp_9 local integer tuple_temp_10 local integer tuple_temp_11 local integer tuple_temp_12 local integer tuple_temp_13 local integer tuple_temp_14 local integer tuple_temp_15 local integer tuple_temp_16 local integer tuple_temp_17 local integer tuple_temp_18 local integer tuple_temp_19 local integer tuple_temp_20 local integer tuple_temp_21 local integer tuple_temp_22 local integer tuple_temp_23 set Colors_hexs[0] = "0" set Colors_hexs[1] = "1" set Colors_hexs[2] = "2" set Colors_hexs[3] = "3" set Colors_hexs[4] = "4" set Colors_hexs[5] = "5" set Colors_hexs[6] = "6" set Colors_hexs[7] = "7" set Colors_hexs[8] = "8" set Colors_hexs[9] = "9" set Colors_hexs[10] = "A" set Colors_hexs[11] = "B" set Colors_hexs[12] = "C" set Colors_hexs[13] = "D" set Colors_hexs[14] = "E" set Colors_hexs[15] = "F" set Colors_decs = new_Table() set tuple_temp = 255 set tuple_temp_1 = 255 set tuple_temp_2 = 255 set tuple_temp_3 = 255 set Colors_COLOR_WHITE_red = tuple_temp set Colors_COLOR_WHITE_green = tuple_temp_1 set Colors_COLOR_WHITE_blue = tuple_temp_2 set Colors_COLOR_WHITE_alpha = tuple_temp_3 set tuple_temp_4 = 0 set tuple_temp_5 = 0 set tuple_temp_6 = 0 set tuple_temp_7 = 0 set Colors_COLOR_BLACK_red = tuple_temp_4 set Colors_COLOR_BLACK_green = tuple_temp_5 set Colors_COLOR_BLACK_blue = tuple_temp_6 set Colors_COLOR_BLACK_alpha = tuple_temp_7 set tuple_temp_8 = 255 set tuple_temp_9 = 204 set tuple_temp_10 = 0 set tuple_temp_11 = 255 set Colors_COLOR_GOLD_red = tuple_temp_8 set Colors_COLOR_GOLD_green = tuple_temp_9 set Colors_COLOR_GOLD_blue = tuple_temp_10 set Colors_COLOR_GOLD_alpha = tuple_temp_11 set tuple_temp_12 = Colors_COLOR_WHITE_red set tuple_temp_13 = Colors_COLOR_WHITE_green set tuple_temp_14 = Colors_COLOR_WHITE_blue set tuple_temp_15 = Colors_COLOR_WHITE_alpha set this_red = tuple_temp_12 set this_green = tuple_temp_13 set this_blue = tuple_temp_14 set this_alpha = tuple_temp_15 set number = this_alpha set firstpart = number / 16 set secondpart = number - firstpart * 16 set temp = "|c" + Colors_hexs[firstpart] + Colors_hexs[secondpart] set number_1 = this_red set firstpart_1 = number_1 / 16 set secondpart_1 = number_1 - firstpart_1 * 16 set number_2 = this_green set firstpart_2 = number_2 / 16 set number_3 = this_blue set tuple_temp_16 = Colors_COLOR_BLACK_red set tuple_temp_17 = Colors_COLOR_BLACK_green set tuple_temp_18 = Colors_COLOR_BLACK_blue set tuple_temp_19 = Colors_COLOR_BLACK_alpha set this_red_1 = tuple_temp_16 set this_green_1 = tuple_temp_17 set this_blue_1 = tuple_temp_18 set this_alpha_1 = tuple_temp_19 set number_4 = this_alpha_1 set firstpart_3 = number_4 / 16 set secondpart_2 = number_4 - firstpart_3 * 16 set temp_1 = "|c" + Colors_hexs[firstpart_3] + Colors_hexs[secondpart_2] set number_5 = this_red_1 set firstpart_4 = number_5 / 16 set secondpart_3 = number_5 - firstpart_4 * 16 set number_6 = this_green_1 set firstpart_5 = number_6 / 16 set number_7 = this_blue_1 set tuple_temp_20 = Colors_COLOR_GOLD_red set tuple_temp_21 = Colors_COLOR_GOLD_green set tuple_temp_22 = Colors_COLOR_GOLD_blue set tuple_temp_23 = Colors_COLOR_GOLD_alpha set this_red_2 = tuple_temp_20 set this_green_2 = tuple_temp_21 set this_blue_2 = tuple_temp_22 set this_alpha_2 = tuple_temp_23 set number_8 = this_alpha_2 set firstpart_6 = number_8 / 16 set secondpart_4 = number_8 - firstpart_6 * 16 set temp_2 = "|c" + Colors_hexs[firstpart_6] + Colors_hexs[secondpart_4] set number_9 = this_red_2 set firstpart_7 = number_9 / 16 set secondpart_5 = number_9 - firstpart_7 * 16 set number_10 = this_green_2 set firstpart_8 = number_10 / 16 set number_11 = this_blue_2 set i = 0 loop exitwhen i > 15 set temp_3 = Colors_decs set this_1 = Colors_hexs[i] call dispatch_Table_Table_Table_saveInt(temp_3, StringHash(this_1), i) set i = i + 1 endloop return true endfunction function init_Destructable takes nothing returns boolean return true endfunction function init_Doodads takes nothing returns boolean return true endfunction function init_DummyRecycler takes nothing returns boolean local integer i local integer temp local real facing_radians local integer j local integer temp_1 local unit dummy_1 local real r local real this_1 local real this_x local real this_y local real v_x local real v_y local integer this_2 local integer elem local integer this_3 local integer elem_1 local unit object local handle this_4 local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 set DummyRecycler_ANGLE_DEGREE = 360 * 1. / 8 set r = 1. set this_1 = r * 1000. call R2I(this_1) set i = 0 set temp = 8 - 1 loop exitwhen i > temp set DummyRecycler_angleQueues[i] = new_LinkedList() set tuple_temp = i * DummyRecycler_ANGLE_DEGREE set facing_radians = tuple_temp set j = 0 set temp_1 = 6 - 1 loop exitwhen j > temp_1 set tuple_temp_1 = MapBounds_boundMax_x set tuple_temp_2 = MapBounds_boundMax_y set this_x = tuple_temp_1 set this_y = tuple_temp_2 set tuple_temp_3 = 16. set tuple_temp_4 = 16. set v_x = tuple_temp_3 set v_y = tuple_temp_4 set dummy_1 = createDummy(this_x - v_x, this_y - v_y, facing_radians) set this_2 = DummyRecycler_angleQueues[i] set object = dummy_1 set this_4 = object set elem = GetHandleId(this_4) if LinkedList_typeId[this_2] == 0 then if this_2 == 0 then call error("Nullpointer exception when calling LinkedList.enqueue") else call error("Called LinkedList.enqueue on invalid object.") endif endif set this_3 = this_2 set elem_1 = elem call dispatch_LinkedList_LinkedList_LinkedList_add_1(this_3, elem_1) set j = j + 1 endloop set i = i + 1 endloop return true endfunction function init_ErrorHandling takes nothing returns boolean set ErrorHandling_HT = hashtable_compiletime return true endfunction function init_EventHelper takes nothing returns boolean call new_HashMap() call new_HashMap() call new_Table() return true endfunction function verifyFrameNameLength takes string name returns boolean local string this_1 = name local integer this_2 if StringLength(this_1) > 560 then set this_2 = 560 call error("Trying to address frame with exceeding maximum frame name length (" + I2S(this_2) + ") for: " + name) return false endif return true endfunction function init_Framehandle takes nothing returns boolean local framehandle receiver local string typeName local string name local framehandle owner local string inherits local integer createContext local framehandle this_1 local real width local real height set Framehandle_GAME_UI = BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0) call BlzGetOriginFrame(ORIGIN_FRAME_WORLD_FRAME, 0) set typeName = "FRAME" set name = "SetMousePositionCage" set owner = Framehandle_GAME_UI set inherits = null set createContext = 0 call verifyFrameNameLength(name) set receiver = BlzCreateFrameByType(typeName, name, owner, inherits, createContext) set this_1 = receiver set width = 0.0001 set height = 0.0001 call BlzFrameSetSize(this_1, width, height) return true endfunction function init_GameTimer takes nothing returns boolean local timer receiver = CreateTimer() local timer this_1 = receiver local real time = 100000. local code timerCallBack = null local timer this_2 local real time_1 local code timerCallBack_1 call TimerStart(this_1, time, false, timerCallBack) set this_2 = CreateTimer() set time_1 = 0.030 set timerCallBack_1 = ref_function_code__startPeriodic_GameTimer call TimerStart(this_2, time_1, true, timerCallBack_1) return true endfunction function init_Group takes nothing returns boolean call CreateGroup() return true endfunction function init_HashList takes nothing returns boolean set HashList_ht = hashtable_compiletime_182 set HashList_occurences = hashtable_compiletime_183 return true endfunction function init_Icons takes nothing returns boolean return true endfunction function init_InstantDummyCaster takes nothing returns boolean local player p = Basics_DUMMY_PLAYER local integer unitId = 2016423986 local real tuple_temp = MapBounds_boundMax_x local real tuple_temp_1 = MapBounds_boundMax_y local real pos_x = tuple_temp local real pos_y = tuple_temp_1 local real tuple_temp_2 = 0. local real facing_radians = tuple_temp_2 local player temp = p local integer temp_1 = unitId local real temp_2 = pos_x local real temp_3 = pos_y local real tuple_temp_3 = facing_radians local real this_radians = tuple_temp_3 local unit receiver = CreateUnit(temp, temp_1, temp_2, temp_3, this_radians * 57.295779513) local unit this_1 = receiver local boolean value = false local unit receiver_1 local unit receiver_2 local unit receiver_3 local unit receiver_4 local unit this_2 local integer abil local unit this_3 local integer abil_1 local unit this_4 local integer abil_2 local unit this_5 local integer abil_3 call SetUnitPathing(this_1, value) set receiver_1 = receiver set this_2 = receiver_1 set abil = 1097691750 call UnitAddAbility(this_2, abil) set receiver_2 = receiver_1 set this_3 = receiver_2 set abil_1 = 1097691750 call UnitRemoveAbility(this_3, abil_1) set receiver_3 = receiver_2 set this_4 = receiver_3 set abil_2 = 1095577652 call UnitAddAbility(this_4, abil_2) set receiver_4 = receiver_3 set this_5 = receiver_4 set abil_3 = 1095577652 call UnitRemoveAbility(this_5, abil_3) set InstantDummyCaster_caster = receiver_4 return true endfunction function init_Integer takes nothing returns boolean return true endfunction function init_ItemIds takes nothing returns boolean return true endfunction function init_Lightning takes nothing returns boolean return true endfunction function init_LinkedList takes nothing returns boolean local real r local real this_1 if Comparator_firstFree == 0 then if Comparator_maxIndex < 32768 then set Comparator_maxIndex = Comparator_maxIndex + 1 else call error("Out of memory: Could not create Comparator_LinkedList.") endif else set Comparator_firstFree = Comparator_firstFree - 1 endif if Comparator_firstFree == 0 then if Comparator_maxIndex < 32768 then set Comparator_maxIndex = Comparator_maxIndex + 1 else call error("Out of memory: Could not create Comparator_LinkedList.") endif else set Comparator_firstFree = Comparator_firstFree - 1 endif set r = 0. set this_1 = r * 1000. call R2I(this_1) return true endfunction function init_MagicFunctions takes nothing returns boolean set MagicFunctions_compiletime = false return true endfunction function initMapBounds takes nothing returns nothing local rect cond_result local region receiver local rect cond_result_1 local region receiver_1 local region this_1 local rect rct local region this_2 local rect rct_1 local rect this_3 local rect this_4 local rect this_5 local rect this_6 local rect this_7 local rect this_8 local rect this_9 local rect this_10 local real this_x local real this_y local real v_x local real v_y local real this_x_1 local real this_y_1 local real v_x_1 local real v_y_1 local real temp local real temp_1 local real temp_2 local real temp_3 local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 local real tuple_temp_7 local real tuple_temp_8 local real tuple_temp_9 local real tuple_temp_10 local real tuple_temp_11 local real tuple_temp_12 local real tuple_temp_13 local real tuple_temp_14 local real tuple_temp_15 if MagicFunctions_compiletime then set cond_result = Rect(-1024., -1024., 1024., 1024.) else set cond_result = bj_mapInitialPlayableArea endif set MapBounds_playableMapRect = cond_result set receiver = CreateRegion() set this_1 = receiver set rct = MapBounds_playableMapRect call RegionAddRect(this_1, rct) if MagicFunctions_compiletime then set cond_result_1 = Rect(-1536., -1536., 1536., 1536.) else set cond_result_1 = GetWorldBounds() endif set MapBounds_boundRect = cond_result_1 set receiver_1 = CreateRegion() set this_2 = receiver_1 set rct_1 = MapBounds_boundRect call RegionAddRect(this_2, rct_1) set MapBounds_boundRegion = receiver_1 set this_3 = MapBounds_playableMapRect set temp = GetRectMinX(this_3) set this_4 = MapBounds_playableMapRect set tuple_temp = temp set tuple_temp_1 = GetRectMinY(this_4) set MapBounds_playableMin_x = tuple_temp set MapBounds_playableMin_y = tuple_temp_1 set this_5 = MapBounds_playableMapRect set temp_1 = GetRectMaxX(this_5) set this_6 = MapBounds_playableMapRect set tuple_temp_2 = temp_1 set tuple_temp_3 = GetRectMaxY(this_6) set MapBounds_playableMax_x = tuple_temp_2 set MapBounds_playableMax_y = tuple_temp_3 set this_7 = MapBounds_boundRect set temp_2 = GetRectMinX(this_7) set this_8 = MapBounds_boundRect set tuple_temp_4 = temp_2 set tuple_temp_5 = GetRectMinY(this_8) set MapBounds_boundMin_x = tuple_temp_4 set MapBounds_boundMin_y = tuple_temp_5 set this_9 = MapBounds_boundRect set temp_3 = GetRectMaxX(this_9) set this_10 = MapBounds_boundRect set tuple_temp_6 = temp_3 set tuple_temp_7 = GetRectMaxY(this_10) set MapBounds_boundMax_x = tuple_temp_6 set MapBounds_boundMax_y = tuple_temp_7 set tuple_temp_8 = MapBounds_playableMin_x set tuple_temp_9 = MapBounds_playableMin_y set this_x = tuple_temp_8 set this_y = tuple_temp_9 set tuple_temp_10 = MapBounds_playableMax_x set tuple_temp_11 = MapBounds_playableMax_y set v_x = tuple_temp_10 set v_y = tuple_temp_11 set tuple_temp_12 = MapBounds_boundMin_x set tuple_temp_13 = MapBounds_boundMin_y set this_x_1 = tuple_temp_12 set this_y_1 = tuple_temp_13 set tuple_temp_14 = MapBounds_boundMax_x set tuple_temp_15 = MapBounds_boundMax_y set v_x_1 = tuple_temp_14 set v_y_1 = tuple_temp_15 endfunction function init_MapBounds takes nothing returns boolean call initMapBounds() return true endfunction function init_Maths takes nothing returns boolean return true endfunction function init_Matrices takes nothing returns boolean return true endfunction function init_ObjectIdGenerator takes nothing returns boolean local integer this_1 local integer this_2 local integer this_3 local integer this_4 local integer this_5 local integer this_6 if IdGenerator_firstFree == 0 then if IdGenerator_maxIndex < 32768 then set IdGenerator_maxIndex = IdGenerator_maxIndex + 1 set this_1 = IdGenerator_maxIndex else call error("Out of memory: Could not create IdGenerator.") set this_1 = 0 endif else set IdGenerator_firstFree = IdGenerator_firstFree - 1 set this_1 = IdGenerator_nextFree[IdGenerator_firstFree] endif if IdGenerator_firstFree == 0 then if IdGenerator_maxIndex < 32768 then set IdGenerator_maxIndex = IdGenerator_maxIndex + 1 set this_2 = IdGenerator_maxIndex else call error("Out of memory: Could not create IdGenerator.") set this_2 = 0 endif else set IdGenerator_firstFree = IdGenerator_firstFree - 1 set this_2 = IdGenerator_nextFree[IdGenerator_firstFree] endif if IdGenerator_firstFree == 0 then if IdGenerator_maxIndex < 32768 then set IdGenerator_maxIndex = IdGenerator_maxIndex + 1 set this_3 = IdGenerator_maxIndex else call error("Out of memory: Could not create IdGenerator.") set this_3 = 0 endif else set IdGenerator_firstFree = IdGenerator_firstFree - 1 set this_3 = IdGenerator_nextFree[IdGenerator_firstFree] endif if IdGenerator_firstFree == 0 then if IdGenerator_maxIndex < 32768 then set IdGenerator_maxIndex = IdGenerator_maxIndex + 1 set this_4 = IdGenerator_maxIndex else call error("Out of memory: Could not create IdGenerator.") set this_4 = 0 endif else set IdGenerator_firstFree = IdGenerator_firstFree - 1 set this_4 = IdGenerator_nextFree[IdGenerator_firstFree] endif if IdGenerator_firstFree == 0 then if IdGenerator_maxIndex < 32768 then set IdGenerator_maxIndex = IdGenerator_maxIndex + 1 set this_5 = IdGenerator_maxIndex else call error("Out of memory: Could not create IdGenerator.") set this_5 = 0 endif else set IdGenerator_firstFree = IdGenerator_firstFree - 1 set this_5 = IdGenerator_nextFree[IdGenerator_firstFree] endif if IdGenerator_firstFree == 0 then if IdGenerator_maxIndex < 32768 then set IdGenerator_maxIndex = IdGenerator_maxIndex + 1 set this_6 = IdGenerator_maxIndex else call error("Out of memory: Could not create IdGenerator.") set this_6 = 0 endif else set IdGenerator_firstFree = IdGenerator_firstFree - 1 set this_6 = IdGenerator_nextFree[IdGenerator_firstFree] endif return true endfunction function init_ObjectIds takes nothing returns boolean return true endfunction function init_Objects takes nothing returns boolean return true endfunction function init_OnUnitEnterLeave takes nothing returns boolean local integer i local integer temp local integer clVar local player this_1 local integer abilityId local boolean avail local integer this_2 local integer cb_1 local real timeToWait local integer cb_2 local timer this_3 local real timeToWait_1 local integer cb_3 local integer this_4 local timer whichTimer local real time set OnUnitEnterLeave_eventTrigger = CreateTrigger() set OnUnitEnterLeave_preplacedUnits = CreateGroup() set i = 0 set temp = bj_MAX_PLAYER_SLOTS - 1 loop exitwhen i > temp set this_1 = Player_players[i] set abilityId = 1095577649 set avail = false call SetPlayerAbilityAvailable(this_1, abilityId, avail) set i = i + 1 endloop if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < 32768 then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_2 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_2] = 650 else call error("Out of memory: Could not create CallbackSingle_nullTimer_OnUnitEnterLeave.") set this_2 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_2 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_2] = 650 endif set clVar = this_2 set cb_1 = clVar set timeToWait = 0. set cb_2 = cb_1 set this_3 = getTimer() set timeToWait_1 = timeToWait set cb_3 = cb_2 set this_4 = cb_3 set whichTimer = this_3 set time = timeToWait_1 if CallbackSingle_typeId[this_4] == 0 then if this_4 == 0 then call error("Nullpointer exception when calling CallbackSingle.start") else call error("Called CallbackSingle.start on invalid object.") endif endif call CallbackSingle_start(this_4, whichTimer, time) return true endfunction function init_Orders takes nothing returns boolean return true endfunction function init_Player takes nothing returns boolean local integer i local integer temp set Player_localPlayer = GetLocalPlayer() set i = 0 set temp = bj_MAX_PLAYER_SLOTS - 1 loop exitwhen i > temp set Player_players[i] = Player(i) set i = i + 1 endloop return true endfunction function init_Playercolor takes nothing returns boolean call ConvertPlayerColor(24) call ConvertPlayerColor(25) call ConvertPlayerColor(26) call ConvertPlayerColor(27) return true endfunction function init_Preloader takes nothing returns boolean local integer clVar local player p local integer unitId local real pos_x local real pos_y local real facing_radians local real this_radians local unit this_1 local boolean flag local integer this_2 local integer cb_1 local real timeToWait local integer cb_2 local timer this_3 local real timeToWait_1 local integer cb_3 local integer this_4 local timer whichTimer local real time local player temp local integer temp_1 local real temp_2 local real temp_3 local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 set Preloader_dumg = CreateGroup() set p = Basics_DUMMY_PLAYER set unitId = 1970497636 set tuple_temp = MapBounds_playableMin_x set tuple_temp_1 = MapBounds_playableMin_y set pos_x = tuple_temp set pos_y = tuple_temp_1 set tuple_temp_2 = 0. set facing_radians = tuple_temp_2 set temp = p set temp_1 = unitId set temp_2 = pos_x set temp_3 = pos_y set tuple_temp_3 = facing_radians set this_radians = tuple_temp_3 set Preloader_dum = CreateUnit(temp, temp_1, temp_2, temp_3, this_radians * 57.295779513) set this_1 = Preloader_dum set flag = true call SetUnitInvulnerable(this_1, flag) if Preloader_dum == null then call error("DUMMY_UNITID not added correctly to the map.") endif if true then if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < 32768 then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_2 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_2] = 651 else call error("Out of memory: Could not create CallbackSingle_nullTimer_Preloader.") set this_2 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_2 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_2] = 651 endif set clVar = this_2 set cb_1 = clVar set timeToWait = 0. set cb_2 = cb_1 set this_3 = getTimer() set timeToWait_1 = timeToWait set cb_3 = cb_2 set this_4 = cb_3 set whichTimer = this_3 set time = timeToWait_1 if CallbackSingle_typeId[this_4] == 0 then if this_4 == 0 then call error("Nullpointer exception when calling CallbackSingle.start") else call error("Called CallbackSingle.start on invalid object.") endif endif call CallbackSingle_start(this_4, whichTimer, time) endif return true endfunction function init_Printing takes nothing returns boolean return true endfunction function init_Quaternion takes nothing returns boolean return true endfunction function init_Real takes nothing returns boolean return true endfunction function init_RegisterEvents takes nothing returns boolean local playerunitevent p local code c set RegisterEvents_onCastMap = new_HashMap() set p = EVENT_PLAYER_UNIT_SPELL_EFFECT set c = ref_function_code__registerPlayerUnitEvent_RegisterEvents call registerPlayerUnitEvent(p, null, c, null) return true endfunction function init_Sounds takes nothing returns boolean return true endfunction function init_Soundsets takes nothing returns boolean return true endfunction function init_String takes nothing returns boolean local string this_1 = "0123456789" local string this_2 call StringLength(this_1) set this_2 = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" call StringLength(this_2) return true endfunction function initialize takes nothing returns nothing local integer i local integer temp local string this_1 set StringUtils_c2s[0] = "" set StringUtils_c2s[1] = "" set StringUtils_c2s[2] = "" set StringUtils_c2s[3] = "" set StringUtils_c2s[4] = "" set StringUtils_c2s[5] = "" set StringUtils_c2s[6] = "" set StringUtils_c2s[7] = "" set StringUtils_c2s[8] = "" set StringUtils_c2s[9] = "\t" set StringUtils_c2s[10] = "\n" set StringUtils_c2s[11] = "" set StringUtils_c2s[12] = "" set StringUtils_c2s[13] = "\r" set StringUtils_c2s[14] = "" set StringUtils_c2s[15] = "" set StringUtils_c2s[16] = "" set StringUtils_c2s[17] = "" set StringUtils_c2s[18] = "" set StringUtils_c2s[19] = "" set StringUtils_c2s[20] = "" set StringUtils_c2s[21] = "" set StringUtils_c2s[22] = "" set StringUtils_c2s[23] = "" set StringUtils_c2s[24] = "" set StringUtils_c2s[25] = "" set StringUtils_c2s[26] = "" set StringUtils_c2s[27] = "" set StringUtils_c2s[28] = "" set StringUtils_c2s[29] = "" set StringUtils_c2s[30] = "" set StringUtils_c2s[31] = "" set StringUtils_c2s[32] = " " set StringUtils_c2s[33] = "!" set StringUtils_c2s[34] = "\"" set StringUtils_c2s[35] = "#" set StringUtils_c2s[36] = "$" set StringUtils_c2s[37] = "%" set StringUtils_c2s[38] = "&" set StringUtils_c2s[39] = "'" set StringUtils_c2s[40] = "(" set StringUtils_c2s[41] = ")" set StringUtils_c2s[42] = "*" set StringUtils_c2s[43] = "+" set StringUtils_c2s[44] = "," set StringUtils_c2s[45] = "-" set StringUtils_c2s[46] = "." set StringUtils_c2s[47] = "/" set StringUtils_c2s[48] = "0" set StringUtils_c2s[49] = "1" set StringUtils_c2s[50] = "2" set StringUtils_c2s[51] = "3" set StringUtils_c2s[52] = "4" set StringUtils_c2s[53] = "5" set StringUtils_c2s[54] = "6" set StringUtils_c2s[55] = "7" set StringUtils_c2s[56] = "8" set StringUtils_c2s[57] = "9" set StringUtils_c2s[58] = ":" set StringUtils_c2s[59] = ";" set StringUtils_c2s[60] = "<" set StringUtils_c2s[61] = "=" set StringUtils_c2s[62] = ">" set StringUtils_c2s[63] = "?" set StringUtils_c2s[64] = "@" set StringUtils_c2s[65] = "A" set StringUtils_c2s[66] = "B" set StringUtils_c2s[67] = "C" set StringUtils_c2s[68] = "D" set StringUtils_c2s[69] = "E" set StringUtils_c2s[70] = "F" set StringUtils_c2s[71] = "G" set StringUtils_c2s[72] = "H" set StringUtils_c2s[73] = "I" set StringUtils_c2s[74] = "J" set StringUtils_c2s[75] = "K" set StringUtils_c2s[76] = "L" set StringUtils_c2s[77] = "M" set StringUtils_c2s[78] = "N" set StringUtils_c2s[79] = "O" set StringUtils_c2s[80] = "P" set StringUtils_c2s[81] = "Q" set StringUtils_c2s[82] = "R" set StringUtils_c2s[83] = "S" set StringUtils_c2s[84] = "T" set StringUtils_c2s[85] = "U" set StringUtils_c2s[86] = "V" set StringUtils_c2s[87] = "W" set StringUtils_c2s[88] = "X" set StringUtils_c2s[89] = "Y" set StringUtils_c2s[90] = "Z" set StringUtils_c2s[91] = "[" set StringUtils_c2s[92] = "\\" set StringUtils_c2s[93] = "]" set StringUtils_c2s[94] = "^" set StringUtils_c2s[95] = "_" set StringUtils_c2s[96] = "`" set StringUtils_c2s[97] = "a" set StringUtils_c2s[98] = "b" set StringUtils_c2s[99] = "c" set StringUtils_c2s[100] = "d" set StringUtils_c2s[101] = "e" set StringUtils_c2s[102] = "f" set StringUtils_c2s[103] = "g" set StringUtils_c2s[104] = "h" set StringUtils_c2s[105] = "i" set StringUtils_c2s[106] = "j" set StringUtils_c2s[107] = "k" set StringUtils_c2s[108] = "l" set StringUtils_c2s[109] = "m" set StringUtils_c2s[110] = "n" set StringUtils_c2s[111] = "o" set StringUtils_c2s[112] = "p" set StringUtils_c2s[113] = "q" set StringUtils_c2s[114] = "r" set StringUtils_c2s[115] = "s" set StringUtils_c2s[116] = "t" set StringUtils_c2s[117] = "u" set StringUtils_c2s[118] = "v" set StringUtils_c2s[119] = "w" set StringUtils_c2s[120] = "x" set StringUtils_c2s[121] = "y" set StringUtils_c2s[122] = "z" set StringUtils_c2s[123] = "{" set StringUtils_c2s[124] = "|" set StringUtils_c2s[125] = "}" set StringUtils_c2s[126] = "~" set StringUtils_c2s[127] = "" set i = 0 set temp = StringUtils_MAX_INDEX loop exitwhen i > temp set this_1 = StringUtils_c2s[i] if StringCase(this_1, true) == StringUtils_c2s[i] then call StringHash(StringUtils_c2s[i]) endif set i = i + 1 endloop endfunction function init_StringUtils takes nothing returns boolean set StringUtils_MAX_INDEX = 126 + 1 call initialize() call stringToIndex("") return true endfunction function init_Table takes nothing returns boolean set Table_ht = hashtable_compiletime_181 return true endfunction function init_TargetsAllowed takes nothing returns boolean return true endfunction function init_Textures takes nothing returns boolean return true endfunction function init_TimerUtils takes nothing returns boolean set TimerUtils_timerData = new_Table() call new_HashMap() return true endfunction function init_TypeCasting takes nothing returns boolean local integer this_1 local integer parentKey local string value local integer this_2 local integer parentKey_1 local string value_1 local hashtable this_3 local integer parentKey_2 local integer childKey local string value_2 set TypeCasting_typecastdata = new_Table() set this_1 = TypeCasting_typecastdata set parentKey = 0 set value = "" if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Table.saveString") else call error("Called Table.saveString on invalid object.") endif endif set this_2 = this_1 set parentKey_1 = parentKey set value_1 = value set this_3 = Table_ht set parentKey_2 = this_2 set childKey = parentKey_1 set value_2 = value_1 call SaveStr(this_3, parentKey_2, childKey, value_2) return true endfunction function init_UI takes nothing returns boolean return true endfunction function init_UnitIds takes nothing returns boolean return true endfunction function init_UnitIndexer takes nothing returns boolean local code c local trigger this_1 local boolexpr condition local code c_1 local trigger this_2 local code actionFunc set UnitIndexer_onIndexTrigger = CreateTrigger() set UnitIndexer_onDeindexTrigger = CreateTrigger() set c = ref_function_code__onEnter_UnitIndexer set this_1 = OnUnitEnterLeave_eventTrigger set condition = Filter(c) call TriggerAddCondition(this_1, condition) set c_1 = ref_function_code__onLeave_UnitIndexer set this_2 = OnUnitEnterLeave_eventTrigger set actionFunc = c_1 call TriggerAddAction(this_2, actionFunc) return true endfunction function init_Units takes nothing returns boolean return true endfunction function init_Vectors takes nothing returns boolean local real tuple_temp = 0. local real tuple_temp_1 = 0. set Vectors_ZERO2_x = tuple_temp set Vectors_ZERO2_y = tuple_temp_1 call Location(0., 0.) return true endfunction function init_WeatherEffects takes nothing returns boolean return true endfunction function EventListener_addSpellInternal takes unit u_1, integer abilId, integer listener returns integer local integer index local unit this_1 local unit this_2 local integer this_3 local integer key local boolean HashMap_HashMap_has_result local integer this_4 local integer key_1 local integer this_5 local integer key_2 local integer HashMap_HashMap_get_result local integer this_6 local integer key_3 local integer this_7 local integer key_4 local integer HashMap_HashMap_get_result_1 local integer this_8 local integer key_5 set OnCastListener_abilId[listener] = abilId if u_1 != null then set OnCastListener_eventUnit[listener] = u_1 set this_1 = u_1 set this_2 = this_1 set index = GetUnitUserData(this_2) if EventListener_castMapCasters[index] != 0 then set OnCastListener_prev[EventListener_castMapCasters[index]] = listener set OnCastListener_next[listener] = EventListener_castMapCasters[index] endif set EventListener_castMapCasters[index] = listener else set this_3 = EventListener_castMap set key = abilId if Table_typeId[this_3] == 0 then if this_3 == 0 then call error("Nullpointer exception when calling HashMap.has") else call error("Called HashMap.has on invalid object.") endif endif set this_4 = this_3 set key_1 = key set HashMap_HashMap_has_result = dispatch_Table_Table_Table_hasInt(this_4, key_1) if HashMap_HashMap_has_result then set this_5 = EventListener_castMap set key_2 = abilId if Table_typeId[this_5] == 0 then if this_5 == 0 then call error("Nullpointer exception when calling HashMap.get") else call error("Called HashMap.get on invalid object.") endif endif set this_6 = this_5 set key_3 = key_2 set HashMap_HashMap_get_result = dispatch_Table_Table_Table_loadInt(this_6, key_3) set OnCastListener_prev[HashMap_HashMap_get_result] = listener set this_7 = EventListener_castMap set key_4 = abilId if Table_typeId[this_7] == 0 then if this_7 == 0 then call error("Nullpointer exception when calling HashMap.get") else call error("Called HashMap.get on invalid object.") endif endif set this_8 = this_7 set key_5 = key_4 set HashMap_HashMap_get_result_1 = dispatch_Table_Table_Table_loadInt(this_8, key_5) set OnCastListener_next[listener] = HashMap_HashMap_get_result_1 endif call dispatch_HashMap_HashMap_HashMap_put(EventListener_castMap, abilId, listener) endif return listener endfunction function registerCommand takes player thePlayer, string command, integer handler returns nothing local integer this_1 = nullclosurebug_commands local player object = thePlayer local player this_3 = object local integer key = GetPlayerId(this_3) local integer HashMap_HashMap_get_result local integer this_2 local integer key_1 if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashMap.get") else call error("Called HashMap.get on invalid object.") endif endif set this_2 = this_1 set key_1 = key set HashMap_HashMap_get_result = dispatch_Table_Table_Table_loadInt(this_2, key_1) call dispatch_HashMap_HashMap_HashMap_put(HashMap_HashMap_get_result, stringToIndex(command), handler) endfunction function init_nullclosurebug takes nothing returns boolean local trigger t local integer i local integer temp local integer clVar local unit a_1 local unit receiver local unit receiver_1 local integer clVar_1 local integer clVar_2 local integer clVar_3 local player object local player this_1 local trigger this_2 local player whichPlayer local string chatMessageToDetect local boolean exactMatchOnly local trigger this_3 local code actionFunc local integer this_4 local string command local integer handler local integer i_1 local integer temp_1 local player p local integer unitId local real pos_x local real pos_y local real facing_radians local real this_radians local player p_1 local integer unitId_1 local real pos_x_1 local real pos_y_1 local real facing_radians_1 local real this_radians_1 local unit this_5 local integer abil local unit this_6 local integer value local integer this_7 local string command_1 local integer handler_1 local integer i_2 local integer temp_2 local integer this_8 local string command_2 local integer handler_2 local integer i_3 local integer temp_3 local integer this_9 local integer this_10 local integer this_11 local integer this_12 local integer abilId local integer listener local integer temp_4 local player temp_5 local integer temp_6 local real temp_7 local real temp_8 local player temp_9 local integer temp_10 local real temp_11 local real temp_12 local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 local real tuple_temp_7 set nullclosurebug_MAX_PLAYERS = PLAYER_NEUTRAL_AGGRESSIVE - 1 set nullclosurebug_commands = new_HashMap() set t = CreateTrigger() set i = 0 set temp = nullclosurebug_MAX_PLAYERS loop exitwhen i > temp set temp_4 = nullclosurebug_commands set object = Player_players[i] set this_1 = object call dispatch_HashMap_HashMap_HashMap_put(temp_4, GetPlayerId(this_1), new_HashMap()) set this_2 = t set whichPlayer = Player_players[i] set chatMessageToDetect = "-" set exactMatchOnly = false call TriggerRegisterPlayerChatEvent(this_2, whichPlayer, chatMessageToDetect, exactMatchOnly) set i = i + 1 endloop set this_3 = t set actionFunc = ref_function_code__addAction_nullclosurebug call TriggerAddAction(this_3, actionFunc) if CommandHandler_firstFree == 0 then if CommandHandler_maxIndex < 32768 then set CommandHandler_maxIndex = CommandHandler_maxIndex + 1 set this_4 = CommandHandler_maxIndex set CommandHandler_typeId[this_4] = 653 else call error("Out of memory: Could not create CommandHandler_registerCommandAll_nullclosurebug.") set this_4 = 0 endif else set CommandHandler_firstFree = CommandHandler_firstFree - 1 set this_4 = CommandHandler_nextFree[CommandHandler_firstFree] set CommandHandler_typeId[this_4] = 653 endif set clVar = this_4 set command = "test-wurst-commands" set handler = clVar set i_1 = 0 set temp_1 = nullclosurebug_MAX_PLAYERS loop exitwhen i_1 > temp_1 call registerCommand(Player_players[i_1], command, handler) set i_1 = i_1 + 1 endloop set p = Player_players[0] set unitId = 1752591476 set tuple_temp = 0. set tuple_temp_1 = 0. set pos_x = tuple_temp set pos_y = tuple_temp_1 set tuple_temp_2 = 0. set facing_radians = tuple_temp_2 set temp_5 = p set temp_6 = unitId set temp_7 = pos_x set temp_8 = pos_y set tuple_temp_3 = facing_radians set this_radians = tuple_temp_3 call CreateUnit(temp_5, temp_6, temp_7, temp_8, this_radians * 57.295779513) set p_1 = Player_players[0] set unitId_1 = 1214344551 set tuple_temp_4 = 0. set tuple_temp_5 = 0. set pos_x_1 = tuple_temp_4 set pos_y_1 = tuple_temp_5 set tuple_temp_6 = 0. set facing_radians_1 = tuple_temp_6 set temp_9 = p_1 set temp_10 = unitId_1 set temp_11 = pos_x_1 set temp_12 = pos_y_1 set tuple_temp_7 = facing_radians_1 set this_radians_1 = tuple_temp_7 set receiver = CreateUnit(temp_9, temp_10, temp_11, temp_12, this_radians_1 * 57.295779513) set this_5 = receiver set abil = 1095267427 call UnitAddAbility(this_5, abil) set receiver_1 = receiver set this_6 = receiver_1 set value = 500 call SetHeroInt(this_6, value, true) set a_1 = receiver_1 if CommandHandler_firstFree == 0 then if CommandHandler_maxIndex < 32768 then set CommandHandler_maxIndex = CommandHandler_maxIndex + 1 set this_7 = CommandHandler_maxIndex set CommandHandler_typeId[this_7] = 654 else call error("Out of memory: Could not create CommandHandler_registerCommandAll_nullclosurebug.") set this_7 = 0 endif else set CommandHandler_firstFree = CommandHandler_firstFree - 1 set this_7 = CommandHandler_nextFree[CommandHandler_firstFree] set CommandHandler_typeId[this_7] = 654 endif set clVar_1 = this_7 set a[clVar_1] = a_1 set command_1 = "cast" set handler_1 = clVar_1 set i_2 = 0 set temp_2 = nullclosurebug_MAX_PLAYERS loop exitwhen i_2 > temp_2 call registerCommand(Player_players[i_2], command_1, handler_1) set i_2 = i_2 + 1 endloop if CommandHandler_firstFree == 0 then if CommandHandler_maxIndex < 32768 then set CommandHandler_maxIndex = CommandHandler_maxIndex + 1 set this_8 = CommandHandler_maxIndex set CommandHandler_typeId[this_8] = 655 else call error("Out of memory: Could not create CommandHandler_registerCommandAll_nullclosurebug.") set this_8 = 0 endif else set CommandHandler_firstFree = CommandHandler_firstFree - 1 set this_8 = CommandHandler_nextFree[CommandHandler_firstFree] set CommandHandler_typeId[this_8] = 655 endif set clVar_2 = this_8 set a_173[clVar_2] = a_1 set command_2 = "owner" set handler_2 = clVar_2 set i_3 = 0 set temp_3 = nullclosurebug_MAX_PLAYERS loop exitwhen i_3 > temp_3 call registerCommand(Player_players[i_3], command_2, handler_2) set i_3 = i_3 + 1 endloop if OnCastListener_firstFree == 0 then if OnCastListener_maxIndex < 32768 then set OnCastListener_maxIndex = OnCastListener_maxIndex + 1 set this_9 = OnCastListener_maxIndex set OnCastListener_typeId[this_9] = 737 else call error("Out of memory: Could not create OnPointCast_onPointCast_nullclosurebug.") set this_9 = 0 endif else set OnCastListener_firstFree = OnCastListener_firstFree - 1 set this_9 = OnCastListener_nextFree[OnCastListener_firstFree] set OnCastListener_typeId[this_9] = 737 endif set clVar_3 = this_9 set this_10 = clVar_3 set this_11 = this_10 set this_12 = this_11 set OnCastListener_next[this_12] = 0 set OnCastListener_prev[this_12] = 0 set OnCastListener_eventUnit[this_12] = null set abilId = 1095577654 set listener = clVar_3 call EventListener_addSpellInternal(null, abilId, listener) return true endfunction function initGlobals takes nothing returns nothing set ref_function_init_Abilities = function init_Abilities set ref_function_init_AbilityIds = function init_AbilityIds set ref_function_init_Real = function init_Real set ref_function_init_Integer = function init_Integer set ref_function_init_BitSet = function init_BitSet set ref_function_init_String = function init_String set ref_function_init_TargetsAllowed = function init_TargetsAllowed set ref_function_init_Angle = function init_Angle set ref_function_init_Vectors = function init_Vectors set ref_function_init_Destructable = function init_Destructable set ref_function_init_Player = function init_Player set ref_function_init_Maths = function init_Maths set ref_function_init_Printing = function init_Printing set ref_function_init_MagicFunctions = function init_MagicFunctions set ref_function_init_Basics = function init_Basics set ref_function_init_GameTimer = function init_GameTimer set ref_function_init_ErrorHandling = function init_ErrorHandling set ref_function_init_Matrices = function init_Matrices set ref_function_init_Quaternion = function init_Quaternion set ref_function_init_Table = function init_Table set ref_function_init_Playercolor = function init_Playercolor set ref_function_init_Colors = function init_Colors set ref_function_init_Framehandle = function init_Framehandle set ref_function_init_Group = function init_Group set ref_function_init_Lightning = function init_Lightning set ref_function_init_WeatherEffects = function init_WeatherEffects set ref_function_init_TypeCasting = function init_TypeCasting set ref_function_init_HashList = function init_HashList set ref_function_init_EventHelper = function init_EventHelper set ref_function_init_AbilityObjEditing = function init_AbilityObjEditing set ref_function_init_AttachmentPoints = function init_AttachmentPoints set ref_function_init_BuffIds = function init_BuffIds set ref_function_init_Buildings = function init_Buildings set ref_function_init_ClosureForGroups = function init_ClosureForGroups set ref_function_init_LinkedList = function init_LinkedList set ref_function_init_ObjectIds = function init_ObjectIds set ref_function_init_TimerUtils = function init_TimerUtils set ref_function_init_ClosureTimers = function init_ClosureTimers set ref_function_init_UnitIds = function init_UnitIds set ref_function_init_MapBounds = function init_MapBounds set ref_function_init_Preloader = function init_Preloader set ref_function_init_ObjectIdGenerator = function init_ObjectIdGenerator set ref_function_init_Icons = function init_Icons set ref_function_init_ChannelAbilityPreset = function init_ChannelAbilityPreset set ref_function_init_RegisterEvents = function init_RegisterEvents set ref_function_init_Orders = function init_Orders set ref_function_init_OnUnitEnterLeave = function init_OnUnitEnterLeave set ref_function_init_UnitIndexer = function init_UnitIndexer set ref_function_init_ClosureEvents = function init_ClosureEvents set ref_function_init_Doodads = function init_Doodads set ref_function_init_DummyRecycler = function init_DummyRecycler set ref_function_init_InstantDummyCaster = function init_InstantDummyCaster set ref_function_init_ItemIds = function init_ItemIds set ref_function_init_Objects = function init_Objects set ref_function_init_Sounds = function init_Sounds set ref_function_init_Soundsets = function init_Soundsets set ref_function_init_StringUtils = function init_StringUtils set ref_function_init_Textures = function init_Textures set ref_function_init_UI = function init_UI set ref_function_init_Units = function init_Units set ref_function_init_nullclosurebug = function init_nullclosurebug set ref_function_code__onUnitIndex_ClosureEvents = function code__onUnitIndex_ClosureEvents set ref_function_code__onUnitDeindex_ClosureEvents = function code__onUnitDeindex_ClosureEvents set ref_function_EventListener_generalEventCallback = function EventListener_generalEventCallback set ref_function_code__Filter_ClosureForGroups = function code__Filter_ClosureForGroups set ref_function_code__startPeriodic_GameTimer = function code__startPeriodic_GameTimer set ref_function_code__registerPlayerUnitEvent_RegisterEvents = function code__registerPlayerUnitEvent_RegisterEvents set ref_function_code__onEnter_UnitIndexer = function code__onEnter_UnitIndexer set ref_function_code__onLeave_UnitIndexer = function code__onLeave_UnitIndexer set ref_function_code__addAction_nullclosurebug = function code__addAction_nullclosurebug set ref_function_code__addAction_nullTimer_ClosureEvents = function code__addAction_nullTimer_ClosureEvents set ref_function_code__addAction_nullTimer_ClosureEvents_194 = function code__addAction_nullTimer_ClosureEvents_142 set ref_function_code__addAction_nullTimer_ClosureEvents_195 = function code__addAction_nullTimer_ClosureEvents_143 set ref_function_code__registerPlayerUnitEvent_nullTimer_ClosureEvents = function code__registerPlayerUnitEvent_nullTimer_ClosureEvents set ref_function_code__start_CallbackSingle_ClosureTimers = function code__start_CallbackSingle_ClosureTimers set ref_function_code__Filter_registerEnterRegion_nullTimer_OnUnitEnterLeave = function code__Filter_registerEnterRegion_nullTimer_OnUnitEnterLeave set ref_function_code__registerPlayerUnitEvent_nullTimer_OnUnitEnterLeave = function code__registerPlayerUnitEvent_nullTimer_OnUnitEnterLeave set ref_function_code__ForGroup_nullTimer_OnUnitEnterLeave = function code__ForGroup_nullTimer_OnUnitEnterLeave endfunction function main takes nothing returns nothing local trigger initTrig call initGlobals() call ExecuteFunc("initCompiletimeState_0") set initTrig = CreateTrigger() call TriggerAddCondition(initTrig, Condition(ref_function_init_Abilities)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Abilities.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_AbilityIds)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package AbilityIds.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Real)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Real.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Integer)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Integer.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_BitSet)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package BitSet.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_String)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package String.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_TargetsAllowed)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package TargetsAllowed.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Angle)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Angle.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Vectors)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Vectors.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Destructable)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Destructable.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Player)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Player.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Maths)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Maths.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Printing)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Printing.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_MagicFunctions)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package MagicFunctions.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Basics)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Basics.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_GameTimer)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package GameTimer.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_ErrorHandling)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package ErrorHandling.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Matrices)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Matrices.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Quaternion)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Quaternion.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Table)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Table.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Playercolor)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Playercolor.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Colors)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Colors.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Framehandle)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Framehandle.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Group)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Group.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Lightning)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Lightning.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_WeatherEffects)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package WeatherEffects.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_TypeCasting)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package TypeCasting.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_HashList)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package HashList.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_EventHelper)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package EventHelper.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_AbilityObjEditing)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package AbilityObjEditing.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_AttachmentPoints)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package AttachmentPoints.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_BuffIds)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package BuffIds.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Buildings)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Buildings.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_ClosureForGroups)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package ClosureForGroups.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_LinkedList)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package LinkedList.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_ObjectIds)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package ObjectIds.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_TimerUtils)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package TimerUtils.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_ClosureTimers)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package ClosureTimers.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_UnitIds)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package UnitIds.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_MapBounds)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package MapBounds.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Preloader)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Preloader.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_ObjectIdGenerator)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package ObjectIdGenerator.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Icons)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Icons.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_ChannelAbilityPreset)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package ChannelAbilityPreset.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_RegisterEvents)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package RegisterEvents.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Orders)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Orders.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_OnUnitEnterLeave)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package OnUnitEnterLeave.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_UnitIndexer)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package UnitIndexer.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_ClosureEvents)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package ClosureEvents.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Doodads)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Doodads.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_DummyRecycler)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package DummyRecycler.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_InstantDummyCaster)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package InstantDummyCaster.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_ItemIds)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package ItemIds.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Objects)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Objects.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Sounds)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Sounds.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Soundsets)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Soundsets.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_StringUtils)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package StringUtils.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Textures)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Textures.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_UI)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package UI.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Units)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Units.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_nullclosurebug)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package nullclosurebug.") endif call TriggerClearConditions(initTrig) call DestroyTrigger(initTrig) endfunction function config takes nothing returns nothing endfunction