• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

[General] Need a map optimizer that actually works

Status
Not open for further replies.
Level 12
Joined
Jun 12, 2010
Messages
413
Vexorian's map optimizer consistently fails to inline constants to which it attributed a hexadecimal value.

JASS:
globals
constant integer G=$E
endglobals

function xv takes integer i,integer Z returns nothing
local integer U=(LoadInteger(X,(((G))),(i)))
local integer w
if U==0 then
set U=l()
call SaveInteger(X,(((G))),(i),(U))
call SaveInteger(X,(U),(-1),(0))
set w=0
else
set w=(LoadInteger(X,(U),(-1)))+1
call SaveInteger(X,(U),(-1),(w))
endif
call SaveInteger(X,(((U))),(w),(Z))
endfunction

Are there any alternative optimizers that have constant inlining? (w3x2lni does not, and the Wurst optimizer seems to create a bunch of new unnecessary code variables, and does not support realvar events).

In this same script, the optimizer failed to remove unused functions. However, w3x2lni takes care of them. I just need good constant inlining :mad:

Thank you for your help!

JASS:
globals
//globals from GroupTools:
constant boolean LIBRARY_GroupTools=true
        // The highest collision size you're using in your map.
constant real GroupTools___MAX_COLLISION_SIZE= 197.
        // Data Variables
group array GroupTools___groups
group GroupTools___gT= null
integer GroupTools___gN= 0
boolean GroupTools___f= false
        // Global Group (Change it to CreateGroup() if you want)
group ENUM_GROUP= bj_lastCreatedGroup
//endglobals from GroupTools
//globals from StructureTileDefinition:
constant boolean LIBRARY_StructureTileDefinition=true
//endglobals from StructureTileDefinition
//globals from Table:
constant boolean LIBRARY_Table=true
integer Table___less= 0
integer Table___more= 8190
    //Configure it if you use more than 8190 "key" variables in your map (this will never happen though).
 
hashtable Table___ht= InitHashtable()
constant integer Table___sizeK=10
constant integer Table___listK=11
//endglobals from Table
//globals from TileDefinition:
constant boolean LIBRARY_TileDefinition=true
 
    // If you do not use these functions, setting this to false will spare you 2 global variables and an init function
    // Requires WorldBounds.
constant boolean TileDefinition___ENABLE_ID_FUNCTIONS= false

integer TileDefinition___WorldTilesX
integer TileDefinition___WorldTilesY
//endglobals from TileDefinition
//globals from ArgumentStack:
constant boolean LIBRARY_ArgumentStack=true
//endglobals from ArgumentStack
//globals from UserDefinedRects:
constant boolean LIBRARY_UserDefinedRects=true
hashtable UserDefinedRects___hashTable
weathereffect array UserDefinedRects___weatherEffects
constant integer UserDefinedRects___RECYCLE_KEY=12
integer array UserDefinedRects___instances
//endglobals from UserDefinedRects
    // Generated
rect gg_rct_test0= null
rect gg_rct_test1= null
trigger gg_trg_GroupTools= null
trigger gg_trg_UserDefinedRects= null
trigger gg_trg_UserDefinedRects_Addons= null
trigger gg_trg_RectEnvironment= null
trigger gg_trg_AutoRectEnvironment= null
trigger gg_trg_GLHS_Main= null
trigger gg_trg_GMUI_Main= null
trigger gg_trg_Lists= null
trigger gg_trg_AAAA= null
trigger gg_trg_Disable_Fog_of_War= null
trigger gg_trg_Table= null
trigger gg_trg_ConstTable= null
trigger gg_trg_Untitled_Trigger_004_Copy= null
trigger gg_trg_TileDefinition= null
trigger gg_trg_WorldBounds= null
trigger gg_trg_StructureTileDefinition= null
trigger gg_trg_Register_Test_Rects= null
trigger gg_trg_Untitled_Trigger_004= null
trigger gg_trg_Untitled_Trigger_001= null
trigger gg_trg_BoolExprEvaluator= null
unit gg_unit_Hpal_0003= null
trigger gg_trg_Evaluator= null
trigger gg_trg_Evaluator_Copy= null
trigger gg_trg_ArgumentStack= null
trigger gg_trg_ArgumentStack_Test= null

trigger l__library_init

//JASSHelper struct globals:
constant integer si__Table___dex=1
constant integer si__Table___handles=2
constant integer si__Table___agents=3
constant integer si__Table___reals=4
constant integer si__Table___booleans=5
constant integer si__Table___strings=6
constant integer si__Table___integers=7
constant integer si__Table___players=8
constant integer si__Table___widgets=9
constant integer si__Table___destructables=10
constant integer si__Table___items=11
constant integer si__Table___units=12
constant integer si__Table___abilitys=13
constant integer si__Table___timers=14
constant integer si__Table___triggers=15
constant integer si__Table___triggerconditions=16
constant integer si__Table___triggeractions=17
constant integer si__Table___events=18
constant integer si__Table___forces=19
constant integer si__Table___groups=20
constant integer si__Table___locations=21
constant integer si__Table___rects=22
constant integer si__Table___boolexprs=23
constant integer si__Table___sounds=24
constant integer si__Table___effects=25
constant integer si__Table___unitpools=26
constant integer si__Table___itempools=27
constant integer si__Table___quests=28
constant integer si__Table___questitems=29
constant integer si__Table___defeatconditions=30
constant integer si__Table___timerdialogs=31
constant integer si__Table___leaderboards=32
constant integer si__Table___multiboards=33
constant integer si__Table___multiboarditems=34
constant integer si__Table___trackables=35
constant integer si__Table___dialogs=36
constant integer si__Table___buttons=37
constant integer si__Table___texttags=38
constant integer si__Table___lightnings=39
constant integer si__Table___images=40
constant integer si__Table___ubersplats=41
constant integer si__Table___regions=42
constant integer si__Table___fogstates=43
constant integer si__Table___fogmodifiers=44
constant integer si__Table___hashtables=45
constant integer si__Table=46
constant integer si__TableArray=47
integer s__TableArray_tempTable
integer s__TableArray_tempEnd
constant integer si__HashTable=48
constant integer si__ArgumentStack___table=49
constant integer si__Args=50
constant integer s__Args_real_impl=13
constant integer s__Args_integer_impl=14
constant integer s__Args_boolean_impl=15
constant integer s__Args_string_impl=16
constant integer s__Args_player_impl=17
constant integer s__Args_widget_impl=18
constant integer s__Args_destructable_impl=19
constant integer s__Args_item_impl=20
constant integer s__Args_unit_impl=21
constant integer s__Args_ability_impl=22
constant integer s__Args_timer_impl=23
constant integer s__Args_trigger_impl=24
constant integer s__Args_triggercondition_impl=25
constant integer s__Args_event_impl=26
constant integer s__Args_force_impl=27
constant integer s__Args_group_impl=28
constant integer s__Args_location_impl=29
constant integer s__Args_rect_impl=30
constant integer s__Args_boolexpr_impl=31
constant integer s__Args_sound_impl=32
constant integer s__Args_effect_impl=33
constant integer s__Args_quest_impl=34
constant integer s__Args_questitem_impl=35
constant integer s__Args_defeatcondition_impl=36
constant integer s__Args_timerdialog_impl=37
constant integer s__Args_leaderboard_impl=38
constant integer s__Args_multiboard_impl=39
constant integer s__Args_multiboarditem_impl=40
constant integer s__Args_trackable_impl=41
constant integer s__Args_dialog_impl=42
constant integer s__Args_button_impl=43
constant integer s__Args_region_impl=44
constant integer s__Args_fogmodifier_impl=45
constant integer s__Args_hashtable_impl=46
constant integer s__Args_triggeraction_impl=47
constant integer s__Args_unitpool_impl=48
constant integer s__Args_itempool_impl=49
constant integer s__Args_texttag_impl=50
constant integer s__Args_lightning_impl=51
constant integer s__Args_image_impl=52
constant integer s__Args_ubersplat_impl=53
constant integer s__Args_fogstate_impl=54

endglobals


//library GroupTools:
 
 




 
    function GroupTools___AE takes nothing returns nothing
        if ( GroupTools___f ) then
            call GroupClear(GroupTools___gT)
            set GroupTools___f=false
        endif
        call GroupAddUnit(GroupTools___gT, GetEnumUnit())
    endfunction
 
    function GroupRefresh takes group g returns nothing
        set GroupTools___f=true
        set GroupTools___gT=g
        call ForGroup(GroupTools___gT, function GroupTools___AE)
        if ( GroupTools___f ) then
            call GroupClear(g)
        endif
    endfunction
 
    function NewGroup takes nothing returns group
        if 0 == GroupTools___gN then
            return CreateGroup()
        endif
        set GroupTools___gN=GroupTools___gN - 1
        return GroupTools___groups[GroupTools___gN]
    endfunction
 
    function ReleaseGroup takes group g returns nothing
        call GroupClear(g)
        set GroupTools___groups[GroupTools___gN]=g
        set GroupTools___gN=GroupTools___gN + 1
    endfunction
 
    function GroupUnitsInArea takes group whichGroup,real x,real y,real radius returns nothing
        local unit u
        call GroupEnumUnitsInRange(ENUM_GROUP, x, y, radius + GroupTools___MAX_COLLISION_SIZE, null)
        loop
            set u=FirstOfGroup(ENUM_GROUP)
            exitwhen null == u
            if IsUnitInRangeXY(u, x, y, radius) then
                call GroupAddUnit(whichGroup, u)
            endif
            call GroupRemoveUnit(ENUM_GROUP, u)
        endloop
    endfunction
 

//library GroupTools ends
//library StructureTileDefinition:
 
    function Get64TileCenterCoordinate takes real a returns real
        if ( a >= 0. ) then
            return R2I(( ( a ) / 64 ) + .5) * 64. - 32
        else
            return R2I(( ( a ) / 64 ) - .5) * 64. + 32
        endif
    endfunction
 
    function Get64TileMin takes real a returns real
        return Get64TileCenterCoordinate(a) - 32.
    endfunction
 
    function Get64TileMax takes real a returns real
        return Get64TileCenterCoordinate(a) + 32.
    endfunction
 
    function AreCoordinatesInSame64Tile takes real a,real b returns boolean
        return Get64TileCenterCoordinate(a) == Get64TileCenterCoordinate(b)
    endfunction
 
    function AreLocationsInSame64Tile takes real x1,real y1,real x2,real y2 returns boolean
        return AreCoordinatesInSame64Tile(x1 , x2) and AreCoordinatesInSame64Tile(y1 , y2)
    endfunction
 
 
 

//library StructureTileDefinition ends
//library Table:
 
 
    function s__Table___dex__get_size takes nothing returns integer
        return Table___sizeK
    endfunction
    function s__Table___dex__get_list takes nothing returns integer
        return Table___listK
    endfunction
 
    function s__Table___handles_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___handles_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
 
    function s__Table___agents__setindex takes integer this,integer key,agent value returns nothing
        call SaveAgentHandle(Table___ht, this, key, value)
    endfunction
 
 
 
//Run these textmacros to include the entire hashtable API as wrappers.
//Don't be intimidated by the number of macros - Vexorian's map optimizer is
//supposed to kill functions which inline (all of these functions inline).
//textmacro instance: NEW_ARRAY_BASIC("Real", "Real", "real")
    function s__Table___reals__getindex takes integer this,integer key returns real
        return LoadReal(Table___ht, this, key)
    endfunction
    function s__Table___reals__setindex takes integer this,integer key,real value returns nothing
        call SaveReal(Table___ht, this, key, value)
    endfunction
    function s__Table___reals_has takes integer this,integer key returns boolean
        return HaveSavedReal(Table___ht, this, key)
    endfunction
    function s__Table___reals_remove takes integer this,integer key returns nothing
        call RemoveSavedReal(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY_BASIC("Real", "Real", "real")
//textmacro instance: NEW_ARRAY_BASIC("Boolean", "Boolean", "boolean")
    function s__Table___booleans__getindex takes integer this,integer key returns boolean
        return LoadBoolean(Table___ht, this, key)
    endfunction
    function s__Table___booleans__setindex takes integer this,integer key,boolean value returns nothing
        call SaveBoolean(Table___ht, this, key, value)
    endfunction
    function s__Table___booleans_has takes integer this,integer key returns boolean
        return HaveSavedBoolean(Table___ht, this, key)
    endfunction
    function s__Table___booleans_remove takes integer this,integer key returns nothing
        call RemoveSavedBoolean(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY_BASIC("Boolean", "Boolean", "boolean")
//textmacro instance: NEW_ARRAY_BASIC("String", "Str", "string")
    function s__Table___strings__getindex takes integer this,integer key returns string
        return LoadStr(Table___ht, this, key)
    endfunction
    function s__Table___strings__setindex takes integer this,integer key,string value returns nothing
        call SaveStr(Table___ht, this, key, value)
    endfunction
    function s__Table___strings_has takes integer this,integer key returns boolean
        return HaveSavedString(Table___ht, this, key)
    endfunction
    function s__Table___strings_remove takes integer this,integer key returns nothing
        call RemoveSavedString(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY_BASIC("String", "Str", "string")
//New textmacro to allow table.integer[] syntax for compatibility with textmacros that might desire it.
//textmacro instance: NEW_ARRAY_BASIC("Integer", "Integer", "integer")
    function s__Table___integers__getindex takes integer this,integer key returns integer
        return LoadInteger(Table___ht, this, key)
    endfunction
    function s__Table___integers__setindex takes integer this,integer key,integer value returns nothing
        call SaveInteger(Table___ht, this, key, value)
    endfunction
    function s__Table___integers_has takes integer this,integer key returns boolean
        return HaveSavedInteger(Table___ht, this, key)
    endfunction
    function s__Table___integers_remove takes integer this,integer key returns nothing
        call RemoveSavedInteger(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY_BASIC("Integer", "Integer", "integer")
 
//textmacro instance: NEW_ARRAY("Player", "player")
    function s__Table___players__getindex takes integer this,integer key returns player
        return LoadPlayerHandle(Table___ht, this, key)
    endfunction
    function s__Table___players__setindex takes integer this,integer key,player value returns nothing
        call SavePlayerHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___players_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___players_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("Player", "player")
//textmacro instance: NEW_ARRAY("Widget", "widget")
    function s__Table___widgets__getindex takes integer this,integer key returns widget
        return LoadWidgetHandle(Table___ht, this, key)
    endfunction
    function s__Table___widgets__setindex takes integer this,integer key,widget value returns nothing
        call SaveWidgetHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___widgets_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___widgets_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("Widget", "widget")
//textmacro instance: NEW_ARRAY("Destructable", "destructable")
    function s__Table___destructables__getindex takes integer this,integer key returns destructable
        return LoadDestructableHandle(Table___ht, this, key)
    endfunction
    function s__Table___destructables__setindex takes integer this,integer key,destructable value returns nothing
        call SaveDestructableHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___destructables_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___destructables_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("Destructable", "destructable")
//textmacro instance: NEW_ARRAY("Item", "item")
    function s__Table___items__getindex takes integer this,integer key returns item
        return LoadItemHandle(Table___ht, this, key)
    endfunction
    function s__Table___items__setindex takes integer this,integer key,item value returns nothing
        call SaveItemHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___items_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___items_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("Item", "item")
//textmacro instance: NEW_ARRAY("Unit", "unit")
    function s__Table___units__getindex takes integer this,integer key returns unit
        return LoadUnitHandle(Table___ht, this, key)
    endfunction
    function s__Table___units__setindex takes integer this,integer key,unit value returns nothing
        call SaveUnitHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___units_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___units_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("Unit", "unit")
//textmacro instance: NEW_ARRAY("Ability", "ability")
    function s__Table___abilitys__getindex takes integer this,integer key returns ability
        return LoadAbilityHandle(Table___ht, this, key)
    endfunction
    function s__Table___abilitys__setindex takes integer this,integer key,ability value returns nothing
        call SaveAbilityHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___abilitys_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___abilitys_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("Ability", "ability")
//textmacro instance: NEW_ARRAY("Timer", "timer")
    function s__Table___timers__getindex takes integer this,integer key returns timer
        return LoadTimerHandle(Table___ht, this, key)
    endfunction
    function s__Table___timers__setindex takes integer this,integer key,timer value returns nothing
        call SaveTimerHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___timers_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___timers_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("Timer", "timer")
//textmacro instance: NEW_ARRAY("Trigger", "trigger")
    function s__Table___triggers__getindex takes integer this,integer key returns trigger
        return LoadTriggerHandle(Table___ht, this, key)
    endfunction
    function s__Table___triggers__setindex takes integer this,integer key,trigger value returns nothing
        call SaveTriggerHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___triggers_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___triggers_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("Trigger", "trigger")
//textmacro instance: NEW_ARRAY("TriggerCondition", "triggercondition")
    function s__Table___triggerconditions__getindex takes integer this,integer key returns triggercondition
        return LoadTriggerConditionHandle(Table___ht, this, key)
    endfunction
    function s__Table___triggerconditions__setindex takes integer this,integer key,triggercondition value returns nothing
        call SaveTriggerConditionHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___triggerconditions_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___triggerconditions_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("TriggerCondition", "triggercondition")
//textmacro instance: NEW_ARRAY("TriggerAction", "triggeraction")
    function s__Table___triggeractions__getindex takes integer this,integer key returns triggeraction
        return LoadTriggerActionHandle(Table___ht, this, key)
    endfunction
    function s__Table___triggeractions__setindex takes integer this,integer key,triggeraction value returns nothing
        call SaveTriggerActionHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___triggeractions_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___triggeractions_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("TriggerAction", "triggeraction")
//textmacro instance: NEW_ARRAY("TriggerEvent", "event")
    function s__Table___events__getindex takes integer this,integer key returns event
        return LoadTriggerEventHandle(Table___ht, this, key)
    endfunction
    function s__Table___events__setindex takes integer this,integer key,event value returns nothing
        call SaveTriggerEventHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___events_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___events_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("TriggerEvent", "event")
//textmacro instance: NEW_ARRAY("Force", "force")
    function s__Table___forces__getindex takes integer this,integer key returns force
        return LoadForceHandle(Table___ht, this, key)
    endfunction
    function s__Table___forces__setindex takes integer this,integer key,force value returns nothing
        call SaveForceHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___forces_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___forces_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("Force", "force")
//textmacro instance: NEW_ARRAY("Group", "group")
    function s__Table___groups__getindex takes integer this,integer key returns group
        return LoadGroupHandle(Table___ht, this, key)
    endfunction
    function s__Table___groups__setindex takes integer this,integer key,group value returns nothing
        call SaveGroupHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___groups_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___groups_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("Group", "group")
//textmacro instance: NEW_ARRAY("Location", "location")
    function s__Table___locations__getindex takes integer this,integer key returns location
        return LoadLocationHandle(Table___ht, this, key)
    endfunction
    function s__Table___locations__setindex takes integer this,integer key,location value returns nothing
        call SaveLocationHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___locations_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___locations_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("Location", "location")
//textmacro instance: NEW_ARRAY("Rect", "rect")
    function s__Table___rects__getindex takes integer this,integer key returns rect
        return LoadRectHandle(Table___ht, this, key)
    endfunction
    function s__Table___rects__setindex takes integer this,integer key,rect value returns nothing
        call SaveRectHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___rects_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___rects_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("Rect", "rect")
//textmacro instance: NEW_ARRAY("BooleanExpr", "boolexpr")
    function s__Table___boolexprs__getindex takes integer this,integer key returns boolexpr
        return LoadBooleanExprHandle(Table___ht, this, key)
    endfunction
    function s__Table___boolexprs__setindex takes integer this,integer key,boolexpr value returns nothing
        call SaveBooleanExprHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___boolexprs_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___boolexprs_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("BooleanExpr", "boolexpr")
//textmacro instance: NEW_ARRAY("Sound", "sound")
    function s__Table___sounds__getindex takes integer this,integer key returns sound
        return LoadSoundHandle(Table___ht, this, key)
    endfunction
    function s__Table___sounds__setindex takes integer this,integer key,sound value returns nothing
        call SaveSoundHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___sounds_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___sounds_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("Sound", "sound")
//textmacro instance: NEW_ARRAY("Effect", "effect")
    function s__Table___effects__getindex takes integer this,integer key returns effect
        return LoadEffectHandle(Table___ht, this, key)
    endfunction
    function s__Table___effects__setindex takes integer this,integer key,effect value returns nothing
        call SaveEffectHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___effects_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___effects_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("Effect", "effect")
//textmacro instance: NEW_ARRAY("UnitPool", "unitpool")
    function s__Table___unitpools__getindex takes integer this,integer key returns unitpool
        return LoadUnitPoolHandle(Table___ht, this, key)
    endfunction
    function s__Table___unitpools__setindex takes integer this,integer key,unitpool value returns nothing
        call SaveUnitPoolHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___unitpools_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___unitpools_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("UnitPool", "unitpool")
//textmacro instance: NEW_ARRAY("ItemPool", "itempool")
    function s__Table___itempools__getindex takes integer this,integer key returns itempool
        return LoadItemPoolHandle(Table___ht, this, key)
    endfunction
    function s__Table___itempools__setindex takes integer this,integer key,itempool value returns nothing
        call SaveItemPoolHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___itempools_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___itempools_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("ItemPool", "itempool")
//textmacro instance: NEW_ARRAY("Quest", "quest")
    function s__Table___quests__getindex takes integer this,integer key returns quest
        return LoadQuestHandle(Table___ht, this, key)
    endfunction
    function s__Table___quests__setindex takes integer this,integer key,quest value returns nothing
        call SaveQuestHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___quests_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___quests_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("Quest", "quest")
//textmacro instance: NEW_ARRAY("QuestItem", "questitem")
    function s__Table___questitems__getindex takes integer this,integer key returns questitem
        return LoadQuestItemHandle(Table___ht, this, key)
    endfunction
    function s__Table___questitems__setindex takes integer this,integer key,questitem value returns nothing
        call SaveQuestItemHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___questitems_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___questitems_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("QuestItem", "questitem")
//textmacro instance: NEW_ARRAY("DefeatCondition", "defeatcondition")
    function s__Table___defeatconditions__getindex takes integer this,integer key returns defeatcondition
        return LoadDefeatConditionHandle(Table___ht, this, key)
    endfunction
    function s__Table___defeatconditions__setindex takes integer this,integer key,defeatcondition value returns nothing
        call SaveDefeatConditionHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___defeatconditions_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___defeatconditions_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("DefeatCondition", "defeatcondition")
//textmacro instance: NEW_ARRAY("TimerDialog", "timerdialog")
    function s__Table___timerdialogs__getindex takes integer this,integer key returns timerdialog
        return LoadTimerDialogHandle(Table___ht, this, key)
    endfunction
    function s__Table___timerdialogs__setindex takes integer this,integer key,timerdialog value returns nothing
        call SaveTimerDialogHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___timerdialogs_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___timerdialogs_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("TimerDialog", "timerdialog")
//textmacro instance: NEW_ARRAY("Leaderboard", "leaderboard")
    function s__Table___leaderboards__getindex takes integer this,integer key returns leaderboard
        return LoadLeaderboardHandle(Table___ht, this, key)
    endfunction
    function s__Table___leaderboards__setindex takes integer this,integer key,leaderboard value returns nothing
        call SaveLeaderboardHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___leaderboards_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___leaderboards_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("Leaderboard", "leaderboard")
//textmacro instance: NEW_ARRAY("Multiboard", "multiboard")
    function s__Table___multiboards__getindex takes integer this,integer key returns multiboard
        return LoadMultiboardHandle(Table___ht, this, key)
    endfunction
    function s__Table___multiboards__setindex takes integer this,integer key,multiboard value returns nothing
        call SaveMultiboardHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___multiboards_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___multiboards_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("Multiboard", "multiboard")
//textmacro instance: NEW_ARRAY("MultiboardItem", "multiboarditem")
    function s__Table___multiboarditems__getindex takes integer this,integer key returns multiboarditem
        return LoadMultiboardItemHandle(Table___ht, this, key)
    endfunction
    function s__Table___multiboarditems__setindex takes integer this,integer key,multiboarditem value returns nothing
        call SaveMultiboardItemHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___multiboarditems_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___multiboarditems_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("MultiboardItem", "multiboarditem")
//textmacro instance: NEW_ARRAY("Trackable", "trackable")
    function s__Table___trackables__getindex takes integer this,integer key returns trackable
        return LoadTrackableHandle(Table___ht, this, key)
    endfunction
    function s__Table___trackables__setindex takes integer this,integer key,trackable value returns nothing
        call SaveTrackableHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___trackables_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___trackables_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("Trackable", "trackable")
//textmacro instance: NEW_ARRAY("Dialog", "dialog")
    function s__Table___dialogs__getindex takes integer this,integer key returns dialog
        return LoadDialogHandle(Table___ht, this, key)
    endfunction
    function s__Table___dialogs__setindex takes integer this,integer key,dialog value returns nothing
        call SaveDialogHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___dialogs_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___dialogs_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("Dialog", "dialog")
//textmacro instance: NEW_ARRAY("Button", "button")
    function s__Table___buttons__getindex takes integer this,integer key returns button
        return LoadButtonHandle(Table___ht, this, key)
    endfunction
    function s__Table___buttons__setindex takes integer this,integer key,button value returns nothing
        call SaveButtonHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___buttons_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___buttons_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("Button", "button")
//textmacro instance: NEW_ARRAY("TextTag", "texttag")
    function s__Table___texttags__getindex takes integer this,integer key returns texttag
        return LoadTextTagHandle(Table___ht, this, key)
    endfunction
    function s__Table___texttags__setindex takes integer this,integer key,texttag value returns nothing
        call SaveTextTagHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___texttags_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___texttags_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("TextTag", "texttag")
//textmacro instance: NEW_ARRAY("Lightning", "lightning")
    function s__Table___lightnings__getindex takes integer this,integer key returns lightning
        return LoadLightningHandle(Table___ht, this, key)
    endfunction
    function s__Table___lightnings__setindex takes integer this,integer key,lightning value returns nothing
        call SaveLightningHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___lightnings_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___lightnings_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("Lightning", "lightning")
//textmacro instance: NEW_ARRAY("Image", "image")
    function s__Table___images__getindex takes integer this,integer key returns image
        return LoadImageHandle(Table___ht, this, key)
    endfunction
    function s__Table___images__setindex takes integer this,integer key,image value returns nothing
        call SaveImageHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___images_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___images_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("Image", "image")
//textmacro instance: NEW_ARRAY("Ubersplat", "ubersplat")
    function s__Table___ubersplats__getindex takes integer this,integer key returns ubersplat
        return LoadUbersplatHandle(Table___ht, this, key)
    endfunction
    function s__Table___ubersplats__setindex takes integer this,integer key,ubersplat value returns nothing
        call SaveUbersplatHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___ubersplats_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___ubersplats_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("Ubersplat", "ubersplat")
//textmacro instance: NEW_ARRAY("Region", "region")
    function s__Table___regions__getindex takes integer this,integer key returns region
        return LoadRegionHandle(Table___ht, this, key)
    endfunction
    function s__Table___regions__setindex takes integer this,integer key,region value returns nothing
        call SaveRegionHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___regions_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___regions_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("Region", "region")
//textmacro instance: NEW_ARRAY("FogState", "fogstate")
    function s__Table___fogstates__getindex takes integer this,integer key returns fogstate
        return LoadFogStateHandle(Table___ht, this, key)
    endfunction
    function s__Table___fogstates__setindex takes integer this,integer key,fogstate value returns nothing
        call SaveFogStateHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___fogstates_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___fogstates_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("FogState", "fogstate")
//textmacro instance: NEW_ARRAY("FogModifier", "fogmodifier")
    function s__Table___fogmodifiers__getindex takes integer this,integer key returns fogmodifier
        return LoadFogModifierHandle(Table___ht, this, key)
    endfunction
    function s__Table___fogmodifiers__setindex takes integer this,integer key,fogmodifier value returns nothing
        call SaveFogModifierHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___fogmodifiers_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___fogmodifiers_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("FogModifier", "fogmodifier")
//textmacro instance: NEW_ARRAY("Hashtable", "hashtable")
    function s__Table___hashtables__getindex takes integer this,integer key returns hashtable
        return LoadHashtableHandle(Table___ht, this, key)
    endfunction
    function s__Table___hashtables__setindex takes integer this,integer key,hashtable value returns nothing
        call SaveHashtableHandle(Table___ht, this, key, value)
    endfunction
    function s__Table___hashtables_has takes integer this,integer key returns boolean
        return HaveSavedHandle(Table___ht, this, key)
    endfunction
    function s__Table___hashtables_remove takes integer this,integer key returns nothing
        call RemoveSavedHandle(Table___ht, this, key)
    endfunction
//end of: NEW_ARRAY("Hashtable", "hashtable")
 
 
    // Implement modules for intuitive syntax (tb.handle; tb.unit; etc.)
//Implemented from module Table___realm:
    function s__Table__get_real takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___integerm:
    function s__Table__get_integer takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___booleanm:
    function s__Table__get_boolean takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___stringm:
    function s__Table__get_string takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___playerm:
    function s__Table__get_player takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___widgetm:
    function s__Table__get_widget takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___destructablem:
    function s__Table__get_destructable takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___itemm:
    function s__Table__get_item takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___unitm:
    function s__Table__get_unit takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___abilitym:
    function s__Table__get_ability takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___timerm:
    function s__Table__get_timer takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___triggerm:
    function s__Table__get_trigger takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___triggerconditionm:
    function s__Table__get_triggercondition takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___triggeractionm:
    function s__Table__get_triggeraction takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___eventm:
    function s__Table__get_event takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___forcem:
    function s__Table__get_force takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___groupm:
    function s__Table__get_group takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___locationm:
    function s__Table__get_location takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___rectm:
    function s__Table__get_rect takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___boolexprm:
    function s__Table__get_boolexpr takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___soundm:
    function s__Table__get_sound takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___effectm:
    function s__Table__get_effect takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___unitpoolm:
    function s__Table__get_unitpool takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___itempoolm:
    function s__Table__get_itempool takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___questm:
    function s__Table__get_quest takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___questitemm:
    function s__Table__get_questitem takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___defeatconditionm:
    function s__Table__get_defeatcondition takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___timerdialogm:
    function s__Table__get_timerdialog takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___leaderboardm:
    function s__Table__get_leaderboard takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___multiboardm:
    function s__Table__get_multiboard takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___multiboarditemm:
    function s__Table__get_multiboarditem takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___trackablem:
    function s__Table__get_trackable takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___dialogm:
    function s__Table__get_dialog takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___buttonm:
    function s__Table__get_button takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___texttagm:
    function s__Table__get_texttag takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___lightningm:
    function s__Table__get_lightning takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___imagem:
    function s__Table__get_image takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___ubersplatm:
    function s__Table__get_ubersplat takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___regionm:
    function s__Table__get_region takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___fogstatem:
    function s__Table__get_fogstate takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___fogmodifierm:
    function s__Table__get_fogmodifier takes integer this returns integer
        return this
    endfunction
//Implemented from module Table___hashtablem:
    function s__Table__get_hashtable takes integer this returns integer
        return this
    endfunction
 
    function s__Table__get_handle takes integer this returns integer
        return this
    endfunction
 
    function s__Table__get_agent takes integer this returns integer
        return this
    endfunction
 
    //set this = tb[GetSpellAbilityId()]
    function s__Table__getindex takes integer this,integer key returns integer
        return LoadInteger(Table___ht, this, key) //return this.integer[key]
    endfunction
 
    //set tb[389034] = 8192
    function s__Table__setindex takes integer this,integer key,integer tb returns nothing
        call SaveInteger(Table___ht, this, key, tb) //set this.integer[key] = tb
    endfunction
 
    //set b = tb.has(2493223)
    function s__Table_has takes integer this,integer key returns boolean
        return HaveSavedInteger(Table___ht, this, key) //return this.integer.has(key)
    endfunction
 
    //call tb.remove(294080)
    function s__Table_remove takes integer this,integer key returns nothing
        call RemoveSavedInteger(Table___ht, this, key) //call this.integer.remove(key)
    endfunction
 
    //Remove all data from a Table instance
    function s__Table_flush takes integer this returns nothing
        call FlushChildHashtable(Table___ht, this)
    endfunction
 
    //local Table tb = Table.create()
    function s__Table_create takes nothing returns integer
        local integer this= (LoadInteger(Table___ht, ((Table___listK)), (0))) // INLINED!!
     
        if this == 0 then
            set this=Table___more + 1
            set Table___more=this
        else
            call SaveInteger(Table___ht, ((Table___listK)), (0), ( (LoadInteger(Table___ht, ((Table___listK)), (this))))) // INLINED!!
            call RemoveSavedInteger(Table___ht, ((Table___listK)), (this)) //Clear hashed memory // INLINED!!
        endif
     
        return this
    endfunction
 
    // Removes all data from a Table instance and recycles its index.
    //
    //     call tb.destroy()
    //
    function s__Table_destroy takes integer this returns nothing
     
        call FlushChildHashtable(Table___ht, (this)) // INLINED!!
     
        call SaveInteger(Table___ht, ((Table___listK)), (this), ( (LoadInteger(Table___ht, ((Table___listK)), (0))))) // INLINED!!
        call SaveInteger(Table___ht, ((Table___listK)), (0), ( this)) // INLINED!!
    endfunction
 
//ignored textmacro command: TABLE_BC_METHODS()
 
//ignored textmacro command: TABLE_BC_STRUCTS()
 
 
    //Returns a new TableArray to do your bidding. Simply use:
    //
    //    local TableArray ta = TableArray[array_size]
    //
    function s__TableArray__staticgetindex takes integer array_size returns integer
        local integer tb= (LoadInteger(Table___ht, ((Table___sizeK)), (array_size))) // INLINED!!
        local integer this= (LoadInteger(Table___ht, (tb), (0))) // INLINED!!
     
     
        if this == 0 then
            set this=Table___less - array_size
            set Table___less=this
        else
            call SaveInteger(Table___ht, (tb), (0), ( (LoadInteger(Table___ht, (tb), (this))))) //Set the last destroyed to the last-last destroyed // INLINED!!
            call RemoveSavedInteger(Table___ht, (tb), (this)) //Clear hashed memory // INLINED!!
        endif
     
        call SaveInteger(Table___ht, ((Table___sizeK)), (this), ( array_size)) //This remembers the array size // INLINED!!
        return this
    endfunction
 
    //Returns the size of the TableArray
    function s__TableArray__get_size takes integer this returns integer
        return (LoadInteger(Table___ht, ((Table___sizeK)), (this))) // INLINED!!
    endfunction
 
    //This magic method enables two-dimensional[array][syntax] for Tables,
    //similar to the two-dimensional utility provided by hashtables them-
    //selves.
    //
    //ta[integer a].unit[integer b] = unit u
    //ta[integer a][integer c] = integer d
    //
    //Inline-friendly when not running in debug mode
    //
    function s__TableArray__getindex takes integer this,integer key returns integer










        return this + key
    endfunction
 
    //Destroys a TableArray without flushing it; I assume you call .flush()
    //if you want it flushed too. This is a public method so that you don't
    //have to loop through all TableArray indices to flush them if you don't
    //need to (ie. if you were flushing all child-keys as you used them).
    //
    function s__TableArray_destroy takes integer this returns nothing
        local integer tb= (LoadInteger(Table___ht, ((Table___sizeK)), ((LoadInteger(Table___ht, ((Table___sizeK)), ((this))))))) // INLINED!!
     
     
        if tb == 0 then
            //Create a Table to index recycled instances with their array size
            set tb=s__Table_create()
            call SaveInteger(Table___ht, ((Table___sizeK)), ((LoadInteger(Table___ht, ((Table___sizeK)), ((this))))), ( tb)) // INLINED!!
        endif
     
        call RemoveSavedInteger(Table___ht, ((Table___sizeK)), (this)) //Clear the array size from hash memory // INLINED!!
     
        call SaveInteger(Table___ht, (tb), (this), ( (LoadInteger(Table___ht, (tb), (0))))) // INLINED!!
        call SaveInteger(Table___ht, (tb), (0), ( this)) // INLINED!!
    endfunction
 
 
    //Avoids hitting the op limit
    function s__TableArray_clean takes nothing returns nothing
        local integer tb= s__TableArray_tempTable
        local integer end= tb + 0x1000
        if end < s__TableArray_tempEnd then
            set s__TableArray_tempTable=end
            call ForForce(bj_FORCE_PLAYER[0], function s__TableArray_clean)
        else
            set end=s__TableArray_tempEnd
        endif
        loop
            call FlushChildHashtable(Table___ht, (tb)) // INLINED!!
            set tb=tb + 1
            exitwhen tb == end
        endloop
    endfunction
 
    //Flushes the TableArray and also destroys it. Doesn't get any more
    //similar to the FlushParentHashtable native than this.
    //
    function s__TableArray_flush takes integer this returns nothing
        set s__TableArray_tempTable=this
        set s__TableArray_tempEnd=this + (LoadInteger(Table___ht, ((Table___sizeK)), ((this)))) // INLINED!!
        call ForForce(bj_FORCE_PLAYER[0], function s__TableArray_clean)
        call s__TableArray_destroy(this)
    endfunction
 
 
//NEW: Added in Table 4.0. A fairly simple struct but allows you to do more
//than that which was previously possible.

    //Enables myHash[parentKey][childKey] syntax.
    //Basically, it creates a Table in the place of the parent key if
    //it didn't already get created earlier.
    function s__HashTable__getindex takes integer this,integer index returns integer
        local integer t= (LoadInteger(Table___ht, ((this)), (index))) // INLINED!!
        if t == 0 then
            set t=s__Table_create()
            call SaveInteger(Table___ht, ((this)), (index), ( t)) //whoops! Forgot that line. I'm out of practice! // INLINED!!
        endif
        return t
    endfunction

    //You need to call this on each parent key that you used if you
    //intend to destroy the HashTable or simply no longer need that key.
    function s__HashTable_remove takes integer this,integer index returns nothing
        local integer t= (LoadInteger(Table___ht, ((this)), (index))) // INLINED!!
        if t != 0 then
            call s__Table_destroy(t)
            call RemoveSavedInteger(Table___ht, ((this)), (index)) // INLINED!!
        endif
    endfunction
 
    //Added in version 4.1
    function s__HashTable_has takes integer this,integer index returns boolean
        return (HaveSavedInteger(Table___ht, ((this)), (index))) // INLINED!!
    endfunction
 
    //HashTables are just fancy Table indices.
    function s__HashTable_destroy takes integer this returns nothing
        call s__Table_destroy((this))
    endfunction
 
    //Like I said above...
    function s__HashTable_create takes nothing returns integer
        return s__Table_create()
    endfunction



//library Table ends
//library TileDefinition:
 
    function GetTileCenterCoordinate takes real a returns real
        if ( a >= 0. ) then
            return R2I(( a / 128 ) + .5) * 128.
        else
            return R2I(( a / 128 ) - .5) * 128.
        endif
    endfunction
 
    function AreCoordinatesInSameTile takes real a,real b returns boolean
        return GetTileCenterCoordinate(a) == GetTileCenterCoordinate(b)
    endfunction
 
    function AreLocationsInSameTile takes real x1,real y1,real x2,real y2 returns boolean
        return AreCoordinatesInSameTile(x1 , x2) and AreCoordinatesInSameTile(y1 , y2)
    endfunction
 
    function GetTileMin takes real a returns real
        return GetTileCenterCoordinate(a) - 64.
    endfunction
 
    function GetTileMax takes real a returns real
        return GetTileCenterCoordinate(a) + 64.
    endfunction
 







































 

//library TileDefinition ends
//library ArgumentStack:




//=============================
// Determine type of Table to be used (ConstTable if library is present)









//Implemented from module ArgumentStack___Dynmc:
        function s__ArgumentStack___table_type takes integer i returns integer
            return i
        endfunction


//=============================
// API Textmacros





//=============================
// Struct




    function s__Args_setHandle takes integer tab,integer i,handle h returns nothing
        local integer stack= (LoadInteger(Table___ht, (((tab))), (i))) // INLINED!!
        local integer current
        if stack == 0 then
            set stack=s__Table_create()
            call SaveInteger(Table___ht, (((tab))), (i), ( stack)) // INLINED!!
            call SaveInteger(Table___ht, (stack), (- 1), ( 0)) // INLINED!!
            set current=0
        else
            set current=(LoadInteger(Table___ht, (stack), (- 1))) + 1 // INLINED!!
            call SaveInteger(Table___ht, (stack), (- 1), ( current)) // INLINED!!
        endif
     
        call SaveFogStateHandle(Table___ht, (((stack))), (current), ( ConvertFogState(GetHandleId(h)))) // INLINED!!
    endfunction
 
    function s__Args_setAgent takes integer tab,integer i,agent a returns nothing
        local integer stack= (LoadInteger(Table___ht, (((tab))), (i))) // INLINED!!
        local integer current
        if stack == 0 then
            set stack=s__Table_create()
            call SaveInteger(Table___ht, (((tab))), (i), ( stack)) // INLINED!!
            call SaveInteger(Table___ht, (stack), (- 1), ( 0)) // INLINED!!
            set current=0
        else
            set current=(LoadInteger(Table___ht, (stack), (- 1))) + 1 // INLINED!!
            call SaveInteger(Table___ht, (stack), (- 1), ( current)) // INLINED!!
        endif
     
        call SaveAgentHandle(Table___ht, (((stack))), (current), ( a)) // INLINED!!
    endfunction
 
    function s__Args_freeHandle takes integer tab,integer i returns nothing
        local integer stack= (LoadInteger(Table___ht, (((tab))), (i))) // INLINED!!
        local integer current= (LoadInteger(Table___ht, (stack), (- 1))) // INLINED!!
        call RemoveSavedHandle(Table___ht, (((stack))), (current)) // INLINED!!
        call SaveInteger(Table___ht, (stack), (- 1), ( current - 1)) // INLINED!!
    endfunction


//textmacro instance: ArgumentStack_Field("real","Real")
function s__Args_setReal takes integer i,real value returns nothing
    local integer stack= (LoadInteger(Table___ht, (((s__Args_real_impl))), (i))) // INLINED!!
    local integer current
    if stack == 0 then
        set stack=s__Table_create()
        call SaveInteger(Table___ht, (((s__Args_real_impl))), (i), ( stack)) // INLINED!!
        call SaveInteger(Table___ht, (stack), (- 1), ( 0)) // INLINED!!
        set current=0
    else
        set current=(LoadInteger(Table___ht, (stack), (- 1))) + 1 // INLINED!!
        call SaveInteger(Table___ht, (stack), (- 1), ( current)) // INLINED!!
    endif
 
    call SaveReal(Table___ht, (((stack))), (current), (( value)*1.0)) // INLINED!!
endfunction
function s__Args_getReal takes integer i returns real
    return (LoadReal(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_real_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_real_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeReal takes integer i returns nothing
    local integer stack= (LoadInteger(Table___ht, (((s__Args_real_impl))), (i))) // INLINED!!
    local integer current= (LoadInteger(Table___ht, (stack), (- 1))) // INLINED!!
    call RemoveSavedReal(Table___ht, (((stack))), (current)) // INLINED!!
    call SaveInteger(Table___ht, (stack), (- 1), ( current - 1)) // INLINED!!
endfunction

// Methods that inline, for textmacros
function s__Args_realSet takes integer i,real value returns nothing
    call s__Args_setReal(i , value)
endfunction
function s__Args_realGet takes integer i returns real
    return s__Args_getReal(i)
endfunction
function s__Args_realFree takes integer i returns nothing
    call s__Args_freeReal(i)
endfunction

// Advanced methods
function s__Args_realGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_real_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_realDig takes integer i,integer depth returns real
    return (LoadReal(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_real_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_real_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_realDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_real_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_Field("real","Real")
//textmacro instance: ArgumentStack_Field("integer","Integer")
function s__Args_setInteger takes integer i,integer value returns nothing
    local integer stack= (LoadInteger(Table___ht, (((s__Args_integer_impl))), (i))) // INLINED!!
    local integer current
    if stack == 0 then
        set stack=s__Table_create()
        call SaveInteger(Table___ht, (((s__Args_integer_impl))), (i), ( stack)) // INLINED!!
        call SaveInteger(Table___ht, (stack), (- 1), ( 0)) // INLINED!!
        set current=0
    else
        set current=(LoadInteger(Table___ht, (stack), (- 1))) + 1 // INLINED!!
        call SaveInteger(Table___ht, (stack), (- 1), ( current)) // INLINED!!
    endif
 
    call SaveInteger(Table___ht, (((stack))), (current), ( value)) // INLINED!!
endfunction
function s__Args_getInteger takes integer i returns integer
    return (LoadInteger(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_integer_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_integer_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeInteger takes integer i returns nothing
    local integer stack= (LoadInteger(Table___ht, (((s__Args_integer_impl))), (i))) // INLINED!!
    local integer current= (LoadInteger(Table___ht, (stack), (- 1))) // INLINED!!
    call RemoveSavedInteger(Table___ht, (((stack))), (current)) // INLINED!!
    call SaveInteger(Table___ht, (stack), (- 1), ( current - 1)) // INLINED!!
endfunction

// Methods that inline, for textmacros
function s__Args_integerSet takes integer i,integer value returns nothing
    call s__Args_setInteger(i , value)
endfunction
function s__Args_integerGet takes integer i returns integer
    return s__Args_getInteger(i)
endfunction
function s__Args_integerFree takes integer i returns nothing
    call s__Args_freeInteger(i)
endfunction

// Advanced methods
function s__Args_integerGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_integer_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_integerDig takes integer i,integer depth returns integer
    return (LoadInteger(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_integer_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_integer_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_integerDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_integer_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_Field("integer","Integer")
//textmacro instance: ArgumentStack_Field("boolean","Boolean")
function s__Args_setBoolean takes integer i,boolean value returns nothing
    local integer stack= (LoadInteger(Table___ht, (((s__Args_boolean_impl))), (i))) // INLINED!!
    local integer current
    if stack == 0 then
        set stack=s__Table_create()
        call SaveInteger(Table___ht, (((s__Args_boolean_impl))), (i), ( stack)) // INLINED!!
        call SaveInteger(Table___ht, (stack), (- 1), ( 0)) // INLINED!!
        set current=0
    else
        set current=(LoadInteger(Table___ht, (stack), (- 1))) + 1 // INLINED!!
        call SaveInteger(Table___ht, (stack), (- 1), ( current)) // INLINED!!
    endif
 
    call SaveBoolean(Table___ht, (((stack))), (current), ( value)) // INLINED!!
endfunction
function s__Args_getBoolean takes integer i returns boolean
    return (LoadBoolean(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_boolean_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_boolean_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeBoolean takes integer i returns nothing
    local integer stack= (LoadInteger(Table___ht, (((s__Args_boolean_impl))), (i))) // INLINED!!
    local integer current= (LoadInteger(Table___ht, (stack), (- 1))) // INLINED!!
    call RemoveSavedBoolean(Table___ht, (((stack))), (current)) // INLINED!!
    call SaveInteger(Table___ht, (stack), (- 1), ( current - 1)) // INLINED!!
endfunction

// Methods that inline, for textmacros
function s__Args_booleanSet takes integer i,boolean value returns nothing
    call s__Args_setBoolean(i , value)
endfunction
function s__Args_booleanGet takes integer i returns boolean
    return s__Args_getBoolean(i)
endfunction
function s__Args_booleanFree takes integer i returns nothing
    call s__Args_freeBoolean(i)
endfunction

// Advanced methods
function s__Args_booleanGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_boolean_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_booleanDig takes integer i,integer depth returns boolean
    return (LoadBoolean(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_boolean_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_boolean_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_booleanDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_boolean_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_Field("boolean","Boolean")
//textmacro instance: ArgumentStack_Field("string","String")
function s__Args_setString takes integer i,string value returns nothing
    local integer stack= (LoadInteger(Table___ht, (((s__Args_string_impl))), (i))) // INLINED!!
    local integer current
    if stack == 0 then
        set stack=s__Table_create()
        call SaveInteger(Table___ht, (((s__Args_string_impl))), (i), ( stack)) // INLINED!!
        call SaveInteger(Table___ht, (stack), (- 1), ( 0)) // INLINED!!
        set current=0
    else
        set current=(LoadInteger(Table___ht, (stack), (- 1))) + 1 // INLINED!!
        call SaveInteger(Table___ht, (stack), (- 1), ( current)) // INLINED!!
    endif
 
    call SaveStr(Table___ht, (((stack))), (current), ( value)) // INLINED!!
endfunction
function s__Args_getString takes integer i returns string
    return (LoadStr(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_string_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_string_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeString takes integer i returns nothing
    local integer stack= (LoadInteger(Table___ht, (((s__Args_string_impl))), (i))) // INLINED!!
    local integer current= (LoadInteger(Table___ht, (stack), (- 1))) // INLINED!!
    call RemoveSavedString(Table___ht, (((stack))), (current)) // INLINED!!
    call SaveInteger(Table___ht, (stack), (- 1), ( current - 1)) // INLINED!!
endfunction

// Methods that inline, for textmacros
function s__Args_stringSet takes integer i,string value returns nothing
    call s__Args_setString(i , value)
endfunction
function s__Args_stringGet takes integer i returns string
    return s__Args_getString(i)
endfunction
function s__Args_stringFree takes integer i returns nothing
    call s__Args_freeString(i)
endfunction

// Advanced methods
function s__Args_stringGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_string_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_stringDig takes integer i,integer depth returns string
    return (LoadStr(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_string_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_string_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_stringDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_string_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_Field("string","String")
 
//textmacro instance: ArgumentStack_AgentField("player","Player")
function s__Args_setPlayer takes integer i,player value returns nothing
    call s__Args_setAgent(s__Args_player_impl , i , value)
endfunction
function s__Args_getPlayer takes integer i returns player
    return (LoadPlayerHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_player_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_player_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freePlayer takes integer i returns nothing
    call s__Args_freeHandle(s__Args_player_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_playerSet takes integer i,player value returns nothing
    call s__Args_setAgent(s__Args_player_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_playerGet takes integer i returns player
    return s__Args_getPlayer(i)
endfunction
function s__Args_playerFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_player_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_playerGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_player_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_playerDig takes integer i,integer depth returns player
    return (LoadPlayerHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_player_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_player_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_playerDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_player_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("player","Player")
//textmacro instance: ArgumentStack_AgentField("widget","Widget")
function s__Args_setWidget takes integer i,widget value returns nothing
    call s__Args_setAgent(s__Args_widget_impl , i , value)
endfunction
function s__Args_getWidget takes integer i returns widget
    return (LoadWidgetHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_widget_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_widget_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeWidget takes integer i returns nothing
    call s__Args_freeHandle(s__Args_widget_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_widgetSet takes integer i,widget value returns nothing
    call s__Args_setAgent(s__Args_widget_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_widgetGet takes integer i returns widget
    return s__Args_getWidget(i)
endfunction
function s__Args_widgetFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_widget_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_widgetGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_widget_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_widgetDig takes integer i,integer depth returns widget
    return (LoadWidgetHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_widget_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_widget_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_widgetDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_widget_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("widget","Widget")
//textmacro instance: ArgumentStack_AgentField("destructable","Destructable")
function s__Args_setDestructable takes integer i,destructable value returns nothing
    call s__Args_setAgent(s__Args_destructable_impl , i , value)
endfunction
function s__Args_getDestructable takes integer i returns destructable
    return (LoadDestructableHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_destructable_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_destructable_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeDestructable takes integer i returns nothing
    call s__Args_freeHandle(s__Args_destructable_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_destructableSet takes integer i,destructable value returns nothing
    call s__Args_setAgent(s__Args_destructable_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_destructableGet takes integer i returns destructable
    return s__Args_getDestructable(i)
endfunction
function s__Args_destructableFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_destructable_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_destructableGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_destructable_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_destructableDig takes integer i,integer depth returns destructable
    return (LoadDestructableHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_destructable_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_destructable_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_destructableDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_destructable_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("destructable","Destructable")
//textmacro instance: ArgumentStack_AgentField("item","Item")
function s__Args_setItem takes integer i,item value returns nothing
    call s__Args_setAgent(s__Args_item_impl , i , value)
endfunction
function s__Args_getItem takes integer i returns item
    return (LoadItemHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_item_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_item_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeItem takes integer i returns nothing
    call s__Args_freeHandle(s__Args_item_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_itemSet takes integer i,item value returns nothing
    call s__Args_setAgent(s__Args_item_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_itemGet takes integer i returns item
    return s__Args_getItem(i)
endfunction
function s__Args_itemFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_item_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_itemGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_item_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_itemDig takes integer i,integer depth returns item
    return (LoadItemHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_item_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_item_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_itemDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_item_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("item","Item")
//textmacro instance: ArgumentStack_AgentField("unit","Unit")
function s__Args_setUnit takes integer i,unit value returns nothing
    call s__Args_setAgent(s__Args_unit_impl , i , value)
endfunction
function s__Args_getUnit takes integer i returns unit
    return (LoadUnitHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_unit_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_unit_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeUnit takes integer i returns nothing
    call s__Args_freeHandle(s__Args_unit_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_unitSet takes integer i,unit value returns nothing
    call s__Args_setAgent(s__Args_unit_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_unitGet takes integer i returns unit
    return s__Args_getUnit(i)
endfunction
function s__Args_unitFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_unit_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_unitGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_unit_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_unitDig takes integer i,integer depth returns unit
    return (LoadUnitHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_unit_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_unit_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_unitDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_unit_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("unit","Unit")
//textmacro instance: ArgumentStack_AgentField("ability","Ability")
function s__Args_setAbility takes integer i,ability value returns nothing
    call s__Args_setAgent(s__Args_ability_impl , i , value)
endfunction
function s__Args_getAbility takes integer i returns ability
    return (LoadAbilityHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_ability_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_ability_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeAbility takes integer i returns nothing
    call s__Args_freeHandle(s__Args_ability_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_abilitySet takes integer i,ability value returns nothing
    call s__Args_setAgent(s__Args_ability_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_abilityGet takes integer i returns ability
    return s__Args_getAbility(i)
endfunction
function s__Args_abilityFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_ability_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_abilityGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_ability_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_abilityDig takes integer i,integer depth returns ability
    return (LoadAbilityHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_ability_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_ability_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_abilityDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_ability_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("ability","Ability")
//textmacro instance: ArgumentStack_AgentField("timer","Timer")
function s__Args_setTimer takes integer i,timer value returns nothing
    call s__Args_setAgent(s__Args_timer_impl , i , value)
endfunction
function s__Args_getTimer takes integer i returns timer
    return (LoadTimerHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_timer_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_timer_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeTimer takes integer i returns nothing
    call s__Args_freeHandle(s__Args_timer_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_timerSet takes integer i,timer value returns nothing
    call s__Args_setAgent(s__Args_timer_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_timerGet takes integer i returns timer
    return s__Args_getTimer(i)
endfunction
function s__Args_timerFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_timer_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_timerGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_timer_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_timerDig takes integer i,integer depth returns timer
    return (LoadTimerHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_timer_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_timer_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_timerDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_timer_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("timer","Timer")
//textmacro instance: ArgumentStack_AgentField("trigger","Trigger")
function s__Args_setTrigger takes integer i,trigger value returns nothing
    call s__Args_setAgent(s__Args_trigger_impl , i , value)
endfunction
function s__Args_getTrigger takes integer i returns trigger
    return (LoadTriggerHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_trigger_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_trigger_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeTrigger takes integer i returns nothing
    call s__Args_freeHandle(s__Args_trigger_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_triggerSet takes integer i,trigger value returns nothing
    call s__Args_setAgent(s__Args_trigger_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_triggerGet takes integer i returns trigger
    return s__Args_getTrigger(i)
endfunction
function s__Args_triggerFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_trigger_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_triggerGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_trigger_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_triggerDig takes integer i,integer depth returns trigger
    return (LoadTriggerHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_trigger_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_trigger_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_triggerDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_trigger_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("trigger","Trigger")
//textmacro instance: ArgumentStack_AgentField("triggercondition","Triggercondition")
function s__Args_setTriggercondition takes integer i,triggercondition value returns nothing
    call s__Args_setAgent(s__Args_triggercondition_impl , i , value)
endfunction
function s__Args_getTriggercondition takes integer i returns triggercondition
    return (LoadTriggerConditionHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_triggercondition_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_triggercondition_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeTriggercondition takes integer i returns nothing
    call s__Args_freeHandle(s__Args_triggercondition_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_triggerconditionSet takes integer i,triggercondition value returns nothing
    call s__Args_setAgent(s__Args_triggercondition_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_triggerconditionGet takes integer i returns triggercondition
    return s__Args_getTriggercondition(i)
endfunction
function s__Args_triggerconditionFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_triggercondition_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_triggerconditionGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_triggercondition_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_triggerconditionDig takes integer i,integer depth returns triggercondition
    return (LoadTriggerConditionHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_triggercondition_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_triggercondition_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_triggerconditionDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_triggercondition_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("triggercondition","Triggercondition")
//textmacro instance: ArgumentStack_AgentField("event","Event")
function s__Args_setEvent takes integer i,event value returns nothing
    call s__Args_setAgent(s__Args_event_impl , i , value)
endfunction
function s__Args_getEvent takes integer i returns event
    return (LoadTriggerEventHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_event_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_event_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeEvent takes integer i returns nothing
    call s__Args_freeHandle(s__Args_event_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_eventSet takes integer i,event value returns nothing
    call s__Args_setAgent(s__Args_event_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_eventGet takes integer i returns event
    return s__Args_getEvent(i)
endfunction
function s__Args_eventFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_event_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_eventGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_event_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_eventDig takes integer i,integer depth returns event
    return (LoadTriggerEventHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_event_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_event_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_eventDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_event_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("event","Event")
//textmacro instance: ArgumentStack_AgentField("force","Force")
function s__Args_setForce takes integer i,force value returns nothing
    call s__Args_setAgent(s__Args_force_impl , i , value)
endfunction
function s__Args_getForce takes integer i returns force
    return (LoadForceHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_force_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_force_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeForce takes integer i returns nothing
    call s__Args_freeHandle(s__Args_force_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_forceSet takes integer i,force value returns nothing
    call s__Args_setAgent(s__Args_force_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_forceGet takes integer i returns force
    return s__Args_getForce(i)
endfunction
function s__Args_forceFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_force_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_forceGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_force_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_forceDig takes integer i,integer depth returns force
    return (LoadForceHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_force_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_force_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_forceDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_force_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("force","Force")
//textmacro instance: ArgumentStack_AgentField("group","Group")
function s__Args_setGroup takes integer i,group value returns nothing
    call s__Args_setAgent(s__Args_group_impl , i , value)
endfunction
function s__Args_getGroup takes integer i returns group
    return (LoadGroupHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_group_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_group_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeGroup takes integer i returns nothing
    call s__Args_freeHandle(s__Args_group_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_groupSet takes integer i,group value returns nothing
    call s__Args_setAgent(s__Args_group_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_groupGet takes integer i returns group
    return s__Args_getGroup(i)
endfunction
function s__Args_groupFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_group_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_groupGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_group_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_groupDig takes integer i,integer depth returns group
    return (LoadGroupHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_group_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_group_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_groupDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_group_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("group","Group")
//textmacro instance: ArgumentStack_AgentField("location","Location")
function s__Args_setLocation takes integer i,location value returns nothing
    call s__Args_setAgent(s__Args_location_impl , i , value)
endfunction
function s__Args_getLocation takes integer i returns location
    return (LoadLocationHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_location_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_location_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeLocation takes integer i returns nothing
    call s__Args_freeHandle(s__Args_location_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_locationSet takes integer i,location value returns nothing
    call s__Args_setAgent(s__Args_location_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_locationGet takes integer i returns location
    return s__Args_getLocation(i)
endfunction
function s__Args_locationFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_location_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_locationGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_location_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_locationDig takes integer i,integer depth returns location
    return (LoadLocationHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_location_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_location_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_locationDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_location_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("location","Location")
//textmacro instance: ArgumentStack_AgentField("rect","Rect")
function s__Args_setRect takes integer i,rect value returns nothing
    call s__Args_setAgent(s__Args_rect_impl , i , value)
endfunction
function s__Args_getRect takes integer i returns rect
    return (LoadRectHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_rect_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_rect_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeRect takes integer i returns nothing
    call s__Args_freeHandle(s__Args_rect_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_rectSet takes integer i,rect value returns nothing
    call s__Args_setAgent(s__Args_rect_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_rectGet takes integer i returns rect
    return s__Args_getRect(i)
endfunction
function s__Args_rectFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_rect_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_rectGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_rect_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_rectDig takes integer i,integer depth returns rect
    return (LoadRectHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_rect_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_rect_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_rectDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_rect_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("rect","Rect")
//textmacro instance: ArgumentStack_AgentField("boolexpr","Boolexpr")
function s__Args_setBoolexpr takes integer i,boolexpr value returns nothing
    call s__Args_setAgent(s__Args_boolexpr_impl , i , value)
endfunction
function s__Args_getBoolexpr takes integer i returns boolexpr
    return (LoadBooleanExprHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_boolexpr_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_boolexpr_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeBoolexpr takes integer i returns nothing
    call s__Args_freeHandle(s__Args_boolexpr_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_boolexprSet takes integer i,boolexpr value returns nothing
    call s__Args_setAgent(s__Args_boolexpr_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_boolexprGet takes integer i returns boolexpr
    return s__Args_getBoolexpr(i)
endfunction
function s__Args_boolexprFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_boolexpr_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_boolexprGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_boolexpr_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_boolexprDig takes integer i,integer depth returns boolexpr
    return (LoadBooleanExprHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_boolexpr_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_boolexpr_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_boolexprDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_boolexpr_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("boolexpr","Boolexpr")
//textmacro instance: ArgumentStack_AgentField("sound","Sound")
function s__Args_setSound takes integer i,sound value returns nothing
    call s__Args_setAgent(s__Args_sound_impl , i , value)
endfunction
function s__Args_getSound takes integer i returns sound
    return (LoadSoundHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_sound_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_sound_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeSound takes integer i returns nothing
    call s__Args_freeHandle(s__Args_sound_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_soundSet takes integer i,sound value returns nothing
    call s__Args_setAgent(s__Args_sound_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_soundGet takes integer i returns sound
    return s__Args_getSound(i)
endfunction
function s__Args_soundFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_sound_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_soundGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_sound_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_soundDig takes integer i,integer depth returns sound
    return (LoadSoundHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_sound_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_sound_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_soundDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_sound_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("sound","Sound")
//textmacro instance: ArgumentStack_AgentField("effect","Effect")
function s__Args_setEffect takes integer i,effect value returns nothing
    call s__Args_setAgent(s__Args_effect_impl , i , value)
endfunction
function s__Args_getEffect takes integer i returns effect
    return (LoadEffectHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_effect_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_effect_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeEffect takes integer i returns nothing
    call s__Args_freeHandle(s__Args_effect_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_effectSet takes integer i,effect value returns nothing
    call s__Args_setAgent(s__Args_effect_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_effectGet takes integer i returns effect
    return s__Args_getEffect(i)
endfunction
function s__Args_effectFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_effect_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_effectGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_effect_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_effectDig takes integer i,integer depth returns effect
    return (LoadEffectHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_effect_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_effect_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_effectDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_effect_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("effect","Effect")
//textmacro instance: ArgumentStack_AgentField("quest","Quest")
function s__Args_setQuest takes integer i,quest value returns nothing
    call s__Args_setAgent(s__Args_quest_impl , i , value)
endfunction
function s__Args_getQuest takes integer i returns quest
    return (LoadQuestHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_quest_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_quest_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeQuest takes integer i returns nothing
    call s__Args_freeHandle(s__Args_quest_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_questSet takes integer i,quest value returns nothing
    call s__Args_setAgent(s__Args_quest_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_questGet takes integer i returns quest
    return s__Args_getQuest(i)
endfunction
function s__Args_questFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_quest_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_questGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_quest_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_questDig takes integer i,integer depth returns quest
    return (LoadQuestHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_quest_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_quest_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_questDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_quest_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("quest","Quest")
//textmacro instance: ArgumentStack_AgentField("questitem","Questitem")
function s__Args_setQuestitem takes integer i,questitem value returns nothing
    call s__Args_setAgent(s__Args_questitem_impl , i , value)
endfunction
function s__Args_getQuestitem takes integer i returns questitem
    return (LoadQuestItemHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_questitem_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_questitem_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeQuestitem takes integer i returns nothing
    call s__Args_freeHandle(s__Args_questitem_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_questitemSet takes integer i,questitem value returns nothing
    call s__Args_setAgent(s__Args_questitem_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_questitemGet takes integer i returns questitem
    return s__Args_getQuestitem(i)
endfunction
function s__Args_questitemFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_questitem_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_questitemGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_questitem_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_questitemDig takes integer i,integer depth returns questitem
    return (LoadQuestItemHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_questitem_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_questitem_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_questitemDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_questitem_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("questitem","Questitem")
//textmacro instance: ArgumentStack_AgentField("defeatcondition","Defeatcondition")
function s__Args_setDefeatcondition takes integer i,defeatcondition value returns nothing
    call s__Args_setAgent(s__Args_defeatcondition_impl , i , value)
endfunction
function s__Args_getDefeatcondition takes integer i returns defeatcondition
    return (LoadDefeatConditionHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_defeatcondition_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_defeatcondition_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeDefeatcondition takes integer i returns nothing
    call s__Args_freeHandle(s__Args_defeatcondition_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_defeatconditionSet takes integer i,defeatcondition value returns nothing
    call s__Args_setAgent(s__Args_defeatcondition_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_defeatconditionGet takes integer i returns defeatcondition
    return s__Args_getDefeatcondition(i)
endfunction
function s__Args_defeatconditionFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_defeatcondition_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_defeatconditionGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_defeatcondition_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_defeatconditionDig takes integer i,integer depth returns defeatcondition
    return (LoadDefeatConditionHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_defeatcondition_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_defeatcondition_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_defeatconditionDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_defeatcondition_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("defeatcondition","Defeatcondition")
//textmacro instance: ArgumentStack_AgentField("timerdialog","Timerdialog")
function s__Args_setTimerdialog takes integer i,timerdialog value returns nothing
    call s__Args_setAgent(s__Args_timerdialog_impl , i , value)
endfunction
function s__Args_getTimerdialog takes integer i returns timerdialog
    return (LoadTimerDialogHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_timerdialog_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_timerdialog_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeTimerdialog takes integer i returns nothing
    call s__Args_freeHandle(s__Args_timerdialog_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_timerdialogSet takes integer i,timerdialog value returns nothing
    call s__Args_setAgent(s__Args_timerdialog_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_timerdialogGet takes integer i returns timerdialog
    return s__Args_getTimerdialog(i)
endfunction
function s__Args_timerdialogFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_timerdialog_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_timerdialogGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_timerdialog_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_timerdialogDig takes integer i,integer depth returns timerdialog
    return (LoadTimerDialogHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_timerdialog_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_timerdialog_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_timerdialogDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_timerdialog_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("timerdialog","Timerdialog")
//textmacro instance: ArgumentStack_AgentField("leaderboard","Leaderboard")
function s__Args_setLeaderboard takes integer i,leaderboard value returns nothing
    call s__Args_setAgent(s__Args_leaderboard_impl , i , value)
endfunction
function s__Args_getLeaderboard takes integer i returns leaderboard
    return (LoadLeaderboardHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_leaderboard_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_leaderboard_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeLeaderboard takes integer i returns nothing
    call s__Args_freeHandle(s__Args_leaderboard_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_leaderboardSet takes integer i,leaderboard value returns nothing
    call s__Args_setAgent(s__Args_leaderboard_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_leaderboardGet takes integer i returns leaderboard
    return s__Args_getLeaderboard(i)
endfunction
function s__Args_leaderboardFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_leaderboard_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_leaderboardGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_leaderboard_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_leaderboardDig takes integer i,integer depth returns leaderboard
    return (LoadLeaderboardHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_leaderboard_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_leaderboard_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_leaderboardDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_leaderboard_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("leaderboard","Leaderboard")
//textmacro instance: ArgumentStack_AgentField("multiboard","Multiboard")
function s__Args_setMultiboard takes integer i,multiboard value returns nothing
    call s__Args_setAgent(s__Args_multiboard_impl , i , value)
endfunction
function s__Args_getMultiboard takes integer i returns multiboard
    return (LoadMultiboardHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_multiboard_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_multiboard_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeMultiboard takes integer i returns nothing
    call s__Args_freeHandle(s__Args_multiboard_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_multiboardSet takes integer i,multiboard value returns nothing
    call s__Args_setAgent(s__Args_multiboard_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_multiboardGet takes integer i returns multiboard
    return s__Args_getMultiboard(i)
endfunction
function s__Args_multiboardFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_multiboard_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_multiboardGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_multiboard_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_multiboardDig takes integer i,integer depth returns multiboard
    return (LoadMultiboardHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_multiboard_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_multiboard_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_multiboardDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_multiboard_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("multiboard","Multiboard")
//textmacro instance: ArgumentStack_AgentField("multiboarditem","Multiboarditem")
function s__Args_setMultiboarditem takes integer i,multiboarditem value returns nothing
    call s__Args_setAgent(s__Args_multiboarditem_impl , i , value)
endfunction
function s__Args_getMultiboarditem takes integer i returns multiboarditem
    return (LoadMultiboardItemHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_multiboarditem_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_multiboarditem_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeMultiboarditem takes integer i returns nothing
    call s__Args_freeHandle(s__Args_multiboarditem_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_multiboarditemSet takes integer i,multiboarditem value returns nothing
    call s__Args_setAgent(s__Args_multiboarditem_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_multiboarditemGet takes integer i returns multiboarditem
    return s__Args_getMultiboarditem(i)
endfunction
function s__Args_multiboarditemFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_multiboarditem_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_multiboarditemGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_multiboarditem_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_multiboarditemDig takes integer i,integer depth returns multiboarditem
    return (LoadMultiboardItemHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_multiboarditem_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_multiboarditem_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_multiboarditemDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_multiboarditem_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("multiboarditem","Multiboarditem")
//textmacro instance: ArgumentStack_AgentField("trackable","Trackable")
function s__Args_setTrackable takes integer i,trackable value returns nothing
    call s__Args_setAgent(s__Args_trackable_impl , i , value)
endfunction
function s__Args_getTrackable takes integer i returns trackable
    return (LoadTrackableHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_trackable_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_trackable_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeTrackable takes integer i returns nothing
    call s__Args_freeHandle(s__Args_trackable_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_trackableSet takes integer i,trackable value returns nothing
    call s__Args_setAgent(s__Args_trackable_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_trackableGet takes integer i returns trackable
    return s__Args_getTrackable(i)
endfunction
function s__Args_trackableFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_trackable_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_trackableGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_trackable_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_trackableDig takes integer i,integer depth returns trackable
    return (LoadTrackableHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_trackable_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_trackable_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_trackableDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_trackable_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("trackable","Trackable")
//textmacro instance: ArgumentStack_AgentField("dialog","Dialog")
function s__Args_setDialog takes integer i,dialog value returns nothing
    call s__Args_setAgent(s__Args_dialog_impl , i , value)
endfunction
function s__Args_getDialog takes integer i returns dialog
    return (LoadDialogHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_dialog_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_dialog_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeDialog takes integer i returns nothing
    call s__Args_freeHandle(s__Args_dialog_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_dialogSet takes integer i,dialog value returns nothing
    call s__Args_setAgent(s__Args_dialog_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_dialogGet takes integer i returns dialog
    return s__Args_getDialog(i)
endfunction
function s__Args_dialogFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_dialog_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_dialogGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_dialog_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_dialogDig takes integer i,integer depth returns dialog
    return (LoadDialogHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_dialog_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_dialog_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_dialogDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_dialog_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("dialog","Dialog")
//textmacro instance: ArgumentStack_AgentField("button","Button")
function s__Args_setButton takes integer i,button value returns nothing
    call s__Args_setAgent(s__Args_button_impl , i , value)
endfunction
function s__Args_getButton takes integer i returns button
    return (LoadButtonHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_button_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_button_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeButton takes integer i returns nothing
    call s__Args_freeHandle(s__Args_button_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_buttonSet takes integer i,button value returns nothing
    call s__Args_setAgent(s__Args_button_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_buttonGet takes integer i returns button
    return s__Args_getButton(i)
endfunction
function s__Args_buttonFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_button_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_buttonGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_button_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_buttonDig takes integer i,integer depth returns button
    return (LoadButtonHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_button_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_button_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_buttonDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_button_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("button","Button")
//textmacro instance: ArgumentStack_AgentField("region","Region")
function s__Args_setRegion takes integer i,region value returns nothing
    call s__Args_setAgent(s__Args_region_impl , i , value)
endfunction
function s__Args_getRegion takes integer i returns region
    return (LoadRegionHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_region_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_region_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeRegion takes integer i returns nothing
    call s__Args_freeHandle(s__Args_region_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_regionSet takes integer i,region value returns nothing
    call s__Args_setAgent(s__Args_region_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_regionGet takes integer i returns region
    return s__Args_getRegion(i)
endfunction
function s__Args_regionFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_region_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_regionGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_region_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_regionDig takes integer i,integer depth returns region
    return (LoadRegionHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_region_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_region_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_regionDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_region_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("region","Region")
//textmacro instance: ArgumentStack_AgentField("fogmodifier","Fogmodifier")
function s__Args_setFogmodifier takes integer i,fogmodifier value returns nothing
    call s__Args_setAgent(s__Args_fogmodifier_impl , i , value)
endfunction
function s__Args_getFogmodifier takes integer i returns fogmodifier
    return (LoadFogModifierHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_fogmodifier_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_fogmodifier_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeFogmodifier takes integer i returns nothing
    call s__Args_freeHandle(s__Args_fogmodifier_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_fogmodifierSet takes integer i,fogmodifier value returns nothing
    call s__Args_setAgent(s__Args_fogmodifier_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_fogmodifierGet takes integer i returns fogmodifier
    return s__Args_getFogmodifier(i)
endfunction
function s__Args_fogmodifierFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_fogmodifier_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_fogmodifierGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_fogmodifier_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_fogmodifierDig takes integer i,integer depth returns fogmodifier
    return (LoadFogModifierHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_fogmodifier_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_fogmodifier_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_fogmodifierDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_fogmodifier_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("fogmodifier","Fogmodifier")
//textmacro instance: ArgumentStack_AgentField("hashtable","Hashtable")
function s__Args_setHashtable takes integer i,hashtable value returns nothing
    call s__Args_setAgent(s__Args_hashtable_impl , i , value)
endfunction
function s__Args_getHashtable takes integer i returns hashtable
    return (LoadHashtableHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_hashtable_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_hashtable_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeHashtable takes integer i returns nothing
    call s__Args_freeHandle(s__Args_hashtable_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_hashtableSet takes integer i,hashtable value returns nothing
    call s__Args_setAgent(s__Args_hashtable_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_hashtableGet takes integer i returns hashtable
    return s__Args_getHashtable(i)
endfunction
function s__Args_hashtableFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_hashtable_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_hashtableGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_hashtable_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_hashtableDig takes integer i,integer depth returns hashtable
    return (LoadHashtableHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_hashtable_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_hashtable_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_hashtableDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_hashtable_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_AgentField("hashtable","Hashtable")
 
//textmacro instance: ArgumentStack_HandleField("triggeraction","Triggeraction")
function s__Args_setTriggeraction takes integer i,triggeraction value returns nothing
    call s__Args_setHandle(s__Args_triggeraction_impl , i , value)
endfunction
function s__Args_getTriggeraction takes integer i returns triggeraction
    return (LoadTriggerActionHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_triggeraction_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_triggeraction_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeTriggeraction takes integer i returns nothing
    call s__Args_freeHandle(s__Args_triggeraction_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_triggeractionSet takes integer i,triggeraction value returns nothing
    call s__Args_setHandle(s__Args_triggeraction_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_triggeractionGet takes integer i returns triggeraction
    return s__Args_getTriggeraction(i)
endfunction
function s__Args_triggeractionFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_triggeraction_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_triggeractionGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_triggeraction_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_triggeractionDig takes integer i,integer depth returns triggeraction
    return (LoadTriggerActionHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_triggeraction_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_triggeraction_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_triggeractionDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_triggeraction_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_HandleField("triggeraction","Triggeraction")
//textmacro instance: ArgumentStack_HandleField("unitpool","Unitpool")
function s__Args_setUnitpool takes integer i,unitpool value returns nothing
    call s__Args_setHandle(s__Args_unitpool_impl , i , value)
endfunction
function s__Args_getUnitpool takes integer i returns unitpool
    return (LoadUnitPoolHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_unitpool_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_unitpool_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeUnitpool takes integer i returns nothing
    call s__Args_freeHandle(s__Args_unitpool_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_unitpoolSet takes integer i,unitpool value returns nothing
    call s__Args_setHandle(s__Args_unitpool_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_unitpoolGet takes integer i returns unitpool
    return s__Args_getUnitpool(i)
endfunction
function s__Args_unitpoolFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_unitpool_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_unitpoolGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_unitpool_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_unitpoolDig takes integer i,integer depth returns unitpool
    return (LoadUnitPoolHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_unitpool_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_unitpool_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_unitpoolDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_unitpool_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_HandleField("unitpool","Unitpool")
//textmacro instance: ArgumentStack_HandleField("itempool","Itempool")
function s__Args_setItempool takes integer i,itempool value returns nothing
    call s__Args_setHandle(s__Args_itempool_impl , i , value)
endfunction
function s__Args_getItempool takes integer i returns itempool
    return (LoadItemPoolHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_itempool_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_itempool_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeItempool takes integer i returns nothing
    call s__Args_freeHandle(s__Args_itempool_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_itempoolSet takes integer i,itempool value returns nothing
    call s__Args_setHandle(s__Args_itempool_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_itempoolGet takes integer i returns itempool
    return s__Args_getItempool(i)
endfunction
function s__Args_itempoolFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_itempool_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_itempoolGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_itempool_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_itempoolDig takes integer i,integer depth returns itempool
    return (LoadItemPoolHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_itempool_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_itempool_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_itempoolDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_itempool_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_HandleField("itempool","Itempool")
//textmacro instance: ArgumentStack_HandleField("texttag","Texttag")
function s__Args_setTexttag takes integer i,texttag value returns nothing
    call s__Args_setHandle(s__Args_texttag_impl , i , value)
endfunction
function s__Args_getTexttag takes integer i returns texttag
    return (LoadTextTagHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_texttag_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_texttag_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeTexttag takes integer i returns nothing
    call s__Args_freeHandle(s__Args_texttag_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_texttagSet takes integer i,texttag value returns nothing
    call s__Args_setHandle(s__Args_texttag_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_texttagGet takes integer i returns texttag
    return s__Args_getTexttag(i)
endfunction
function s__Args_texttagFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_texttag_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_texttagGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_texttag_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_texttagDig takes integer i,integer depth returns texttag
    return (LoadTextTagHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_texttag_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_texttag_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_texttagDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_texttag_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_HandleField("texttag","Texttag")
//textmacro instance: ArgumentStack_HandleField("lightning","Lightning")
function s__Args_setLightning takes integer i,lightning value returns nothing
    call s__Args_setHandle(s__Args_lightning_impl , i , value)
endfunction
function s__Args_getLightning takes integer i returns lightning
    return (LoadLightningHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_lightning_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_lightning_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeLightning takes integer i returns nothing
    call s__Args_freeHandle(s__Args_lightning_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_lightningSet takes integer i,lightning value returns nothing
    call s__Args_setHandle(s__Args_lightning_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_lightningGet takes integer i returns lightning
    return s__Args_getLightning(i)
endfunction
function s__Args_lightningFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_lightning_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_lightningGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_lightning_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_lightningDig takes integer i,integer depth returns lightning
    return (LoadLightningHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_lightning_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_lightning_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_lightningDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_lightning_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_HandleField("lightning","Lightning")
//textmacro instance: ArgumentStack_HandleField("image","Image")
function s__Args_setImage takes integer i,image value returns nothing
    call s__Args_setHandle(s__Args_image_impl , i , value)
endfunction
function s__Args_getImage takes integer i returns image
    return (LoadImageHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_image_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_image_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeImage takes integer i returns nothing
    call s__Args_freeHandle(s__Args_image_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_imageSet takes integer i,image value returns nothing
    call s__Args_setHandle(s__Args_image_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_imageGet takes integer i returns image
    return s__Args_getImage(i)
endfunction
function s__Args_imageFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_image_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_imageGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_image_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_imageDig takes integer i,integer depth returns image
    return (LoadImageHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_image_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_image_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_imageDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_image_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_HandleField("image","Image")
//textmacro instance: ArgumentStack_HandleField("ubersplat","Ubersplat")
function s__Args_setUbersplat takes integer i,ubersplat value returns nothing
    call s__Args_setHandle(s__Args_ubersplat_impl , i , value)
endfunction
function s__Args_getUbersplat takes integer i returns ubersplat
    return (LoadUbersplatHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_ubersplat_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_ubersplat_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeUbersplat takes integer i returns nothing
    call s__Args_freeHandle(s__Args_ubersplat_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_ubersplatSet takes integer i,ubersplat value returns nothing
    call s__Args_setHandle(s__Args_ubersplat_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_ubersplatGet takes integer i returns ubersplat
    return s__Args_getUbersplat(i)
endfunction
function s__Args_ubersplatFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_ubersplat_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_ubersplatGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_ubersplat_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_ubersplatDig takes integer i,integer depth returns ubersplat
    return (LoadUbersplatHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_ubersplat_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_ubersplat_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_ubersplatDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_ubersplat_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_HandleField("ubersplat","Ubersplat")
//textmacro instance: ArgumentStack_HandleField("fogstate","Fogstate")
function s__Args_setFogstate takes integer i,fogstate value returns nothing
    call s__Args_setHandle(s__Args_fogstate_impl , i , value)
endfunction
function s__Args_getFogstate takes integer i returns fogstate
    return (LoadFogStateHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_fogstate_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_fogstate_impl))), (i)))), (- 1)))))) // INLINED!!
endfunction
function s__Args_freeFogstate takes integer i returns nothing
    call s__Args_freeHandle(s__Args_fogstate_impl , i)
endfunction

// Methods that inline, for textmacros
function s__Args_fogstateSet takes integer i,fogstate value returns nothing
    call s__Args_setHandle(s__Args_fogstate_impl , (i ) , ( value)) // INLINED!!
endfunction
function s__Args_fogstateGet takes integer i returns fogstate
    return s__Args_getFogstate(i)
endfunction
function s__Args_fogstateFree takes integer i returns nothing
    call s__Args_freeHandle(s__Args_fogstate_impl , (i)) // INLINED!!
endfunction

// Advanced methods
function s__Args_fogstateGetDepth takes integer i returns integer
    return (LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_fogstate_impl))), (i)))), (- 1))) + 1 // INLINED!!
endfunction

function s__Args_fogstateDig takes integer i,integer depth returns fogstate
    return (LoadFogStateHandle(Table___ht, ((((LoadInteger(Table___ht, (((s__Args_fogstate_impl))), (i)))))), ((LoadInteger(Table___ht, ((LoadInteger(Table___ht, (((s__Args_fogstate_impl))), (i)))), (- 1))) - depth))) // INLINED!!
endfunction

function s__Args_fogstateDestroyStack takes integer whichStack returns nothing
    call s__Table_destroy((LoadInteger(Table___ht, (((s__Args_fogstate_impl))), (whichStack)))) // INLINED!!
endfunction
//end of: ArgumentStack_HandleField("fogstate","Fogstate")
 
 


//library ArgumentStack ends
//library UserDefinedRects:
//////////////////////////////////////////////////////
//Guhun's User Defined Rect System v1.2.0







//=============================
//CONSTANTS THAT RETURN THE INTEGER ADDRESS OF A GUDR MEMBER IN THE HASHTABLE
constant function GUDR_RECT takes nothing returns integer
    return 0
endfunction

constant function GUDR_WEATHER_ID takes nothing returns integer
    return 5
endfunction

constant function GUDR_GROUP takes nothing returns integer
    return 6
endfunction

constant function GUDR_HIDE_BOOL takes nothing returns integer
    return 7
endfunction

constant function GUDR_WEATHER_TYPE takes nothing returns integer
    return 8
endfunction

//=============================
//FUNCTIONS THAT RETURN BOOLEANS
function GUDR_IsUnitIdGenerator takes integer unitHandle returns boolean
    return HaveSavedHandle(UserDefinedRects___hashTable, unitHandle, (0)) // INLINED!!
endfunction

function GUDR_IsUnitGenerator takes unit whichUnit returns boolean
    return (HaveSavedHandle(UserDefinedRects___hashTable, (GetHandleId(whichUnit)), (0))) // INLINED!!
endfunction

function GUDR_IsGeneratorIdHidden takes integer generatorId returns boolean
    return LoadBoolean(UserDefinedRects___hashTable, generatorId, (7)) // INLINED!!
endfunction

function GUDR_IsGeneratorHidden takes unit generator returns boolean
    return (LoadBoolean(UserDefinedRects___hashTable, (GetHandleId(generator)), (7))) // INLINED!!
endfunction

function GUDR_GeneratorIdHasGroup takes integer generatorId returns boolean
    return HaveSavedHandle(UserDefinedRects___hashTable, generatorId, (6)) // INLINED!!
endfunction

function GUDR_GeneratorHasGroup takes unit generator returns boolean
    return (HaveSavedHandle(UserDefinedRects___hashTable, (GetHandleId(generator)), (6))) // INLINED!!
endfunction

function GUDR_GeneratorIdHasWeather takes integer generatorId returns boolean
    return HaveSavedInteger(UserDefinedRects___hashTable, generatorId, (5)) // INLINED!!
endfunction

function GUDR_GeneratorHasWeather takes unit generator returns boolean
    return (HaveSavedInteger(UserDefinedRects___hashTable, (GetHandleId(generator)), (5))) // INLINED!!
endfunction
//=============================
//FUNCTIONS TO GET GUDR MEMBERS

//Handle Id as parameter
function GUDR_GetGeneratorIdRect takes integer generatorId returns rect
    return LoadRectHandle(UserDefinedRects___hashTable, generatorId, (0)) // INLINED!!
endfunction

function GUDR_GetGeneratorIdWeatherEffect takes integer generatorId returns weathereffect
    return UserDefinedRects___weatherEffects[LoadInteger(UserDefinedRects___hashTable, generatorId, (5))] // INLINED!!
endfunction

function GUDR_GetGeneratorIdGroup takes integer generatorId returns group
    return LoadGroupHandle(UserDefinedRects___hashTable, generatorId, (6)) // INLINED!!
endfunction

function GUDR_GetGeneratorIdWeatherType takes integer generatorId returns integer
    return LoadInteger(UserDefinedRects___hashTable, generatorId, (8)) // INLINED!!
endfunction

//Unit as parameter

function GUDR_GetGeneratorRect takes unit generator returns rect
    return (LoadRectHandle(UserDefinedRects___hashTable, (GetHandleId(generator)), (0))) // INLINED!!
endfunction

function GUDR_GetGeneratorWeatherEffect takes unit generator returns weathereffect
    return (UserDefinedRects___weatherEffects[LoadInteger(UserDefinedRects___hashTable, (GetHandleId(generator)), (5))]) // INLINED!!
endfunction

function GUDR_GetGeneratorGroup takes unit generator returns group
    return (LoadGroupHandle(UserDefinedRects___hashTable, (GetHandleId(generator)), (6))) // INLINED!!
endfunction

function GUDR_GetGeneratorWeatherType takes unit generator returns integer
    return (LoadInteger(UserDefinedRects___hashTable, (GetHandleId(generator)), (8))) // INLINED!!
endfunction

//=============================

function GUDR_SwapGroup_UnitsInsideUDR takes group whichGroup,boolean includeGenerator,boolexpr filter returns integer
    local integer genId
    local unit firstOfGroup
 
    set firstOfGroup=FirstOfGroup(whichGroup)
    set genId=GetHandleId(firstOfGroup)
 
    if HaveSavedHandle(UserDefinedRects___hashTable, genId, 0) then
        set bj_groupRandomCurrentPick=firstOfGroup
     
        call GroupClear(whichGroup)
        call GroupEnumUnitsInRect(whichGroup, LoadRectHandle(UserDefinedRects___hashTable, genId, 0), filter)
     
        if not includeGenerator then
            call GroupRemoveUnit(whichGroup, firstOfGroup)
        endif
    else
        set genId=0
    endif
 
    set firstOfGroup=null
    return genId
endfunction

//Returns the Handle Id of an active UDR generator selected by a player
//Additionally, the global bj_groupRandomCurrentPick will be set to the selected generator
function GUDR_PlayerGetSelectedGeneratorId takes player whichPlayer returns integer
    local unit firstOfGroup
    local integer unitId
    local group slctGrp= CreateGroup()
 
    call GroupEnumUnitsSelected(slctGrp, whichPlayer, null)
    set firstOfGroup=FirstOfGroup(slctGrp)
    set unitId=GetHandleId(firstOfGroup)
 
    call DestroyGroup(slctGrp)
    set slctGrp=null
 
    if HaveSavedHandle(UserDefinedRects___hashTable, unitId, 0) then
        set bj_groupRandomCurrentPick=firstOfGroup
        return unitId
    endif
 
    return 0
endfunction


function ChangeGUDRWeatherNew takes unit whichUnit,integer changeWeather,integer finalWeather returns integer
    local integer curWeather
    local integer unitId= GetHandleId(whichUnit)
    local integer weatherId
 
    if not (HaveSavedHandle(UserDefinedRects___hashTable, (unitId), (0))) then // INLINED!!
        return 0
    endif

    if finalWeather < 1 or finalWeather > 21 then
        set curWeather=LoadInteger(UserDefinedRects___hashTable, unitId, 8)
        set finalWeather=curWeather + changeWeather
    endif
     

    if finalWeather > 21 then
        loop
        exitwhen finalWeather <= 21
                set finalWeather=finalWeather - 21
        endloop
    elseif finalWeather < 1 then
        loop
        exitwhen finalWeather >= 1
                set finalWeather=finalWeather + 21
        endloop
    endif
 
    call SaveInteger(UserDefinedRects___hashTable, unitId, 8, finalWeather)
 
    // Update Weather, if it exists.
    set weatherId=LoadInteger(UserDefinedRects___hashTable, unitId, 5)
    if weatherId > 0 then
        call EnableWeatherEffect(UserDefinedRects___weatherEffects[weatherId], false) //BUG: If weather effect is not disabled before destruction, it's sound effect will remain
        call RemoveWeatherEffect(UserDefinedRects___weatherEffects[weatherId])
        set UserDefinedRects___weatherEffects[weatherId]=AddWeatherEffect((LoadRectHandle(UserDefinedRects___hashTable, (unitId), (0))), LoadInteger(UserDefinedRects___hashTable, 0, finalWeather)) // INLINED!!
        call EnableWeatherEffect(UserDefinedRects___weatherEffects[weatherId], true)
    endif
 
    return finalWeather
endfunction

function GroupGUDRFilter takes nothing returns boolean
    local unit filterUnit= GetFilterUnit()
    if HaveSavedHandle(UserDefinedRects___hashTable, GetHandleId(filterUnit), 0) or GetOwningPlayer(filterUnit) != LoadPlayerHandle(UserDefinedRects___hashTable, 0, 0) then
        return false
    endif
    call SetUnitPathing(filterUnit, false)
    set filterUnit=null
    return true
endfunction

function GroupGUDR takes unit whichUnit,boolean unlock returns boolean
    local integer unitId= GetHandleId(whichUnit)
    local group g
    local unit firstUnit
 
    if not (HaveSavedHandle(UserDefinedRects___hashTable, (unitId), (0))) then // INLINED!!
        return false
    endif
 
    set g=LoadGroupHandle(UserDefinedRects___hashTable, unitId, 6)
 
    //Save the GURD's owner in the Hashtable for use in the EnumFilter function
    call SavePlayerHandle(UserDefinedRects___hashTable, 0, 0, GetOwningPlayer(whichUnit))
    set firstUnit=FirstOfGroup(g)
 
    //This loop clears the group and restores pathing and unpauses
    loop
    exitwhen firstUnit == null
        if GetUnitTypeId(firstUnit) != 0 then
            call SetUnitPathing(firstUnit, true)
            call GroupRemoveUnit(g, firstUnit)
        else
            call GroupRefresh(g)
        endif
        set firstUnit=FirstOfGroup(g)
    endloop
 
    //We only want to add new units to the group if the user doesn't want to unlock it
    if not unlock then
        call GroupEnumUnitsInRect(g, LoadRectHandle(UserDefinedRects___hashTable, GetHandleId(whichUnit), 0), Condition(function GroupGUDRFilter))
    endif
 
    set g=null
    set firstUnit=null
    return true
endfunction


function CreateWeather takes unit whichUnit returns boolean
    local integer instance
    local integer genId= GetHandleId(whichUnit)
 
    if not (HaveSavedHandle(UserDefinedRects___hashTable, (genId), (0))) then // INLINED!!
        return false
    endif
 

        set instance=UserDefinedRects___instances[0]
        if UserDefinedRects___instances[UserDefinedRects___instances[0]] == 0 then
            set UserDefinedRects___instances[0]=UserDefinedRects___instances[0] + 1
        else
            set UserDefinedRects___instances[0]=UserDefinedRects___instances[UserDefinedRects___instances[0]]
            set UserDefinedRects___instances[instance]=0
        endif



 
    call SaveInteger(UserDefinedRects___hashTable, GetHandleId(whichUnit), 5, instance)
    set UserDefinedRects___weatherEffects[instance]=AddWeatherEffect((LoadRectHandle(UserDefinedRects___hashTable, (genId), (0))), LoadInteger(UserDefinedRects___hashTable, 0, LoadInteger(UserDefinedRects___hashTable, genId, 8))) // INLINED!!
    call EnableWeatherEffect(UserDefinedRects___weatherEffects[instance], true)
 
    return true
endfunction

function DestroyWeather takes unit whichUnit returns boolean
    local integer instance= LoadInteger(UserDefinedRects___hashTable, GetHandleId(whichUnit), 5)
 
    if instance < 1 then
        return false // False for effect not destroyed, unit did not have weather attached.
    endif
 
    call EnableWeatherEffect(UserDefinedRects___weatherEffects[instance], false) // BUG: If weather effect is not disabled before destruction, it's sound effect will remain
    call RemoveWeatherEffect(UserDefinedRects___weatherEffects[instance])
    call RemoveSavedInteger(UserDefinedRects___hashTable, GetHandleId(whichUnit), 5)
 
 

        set UserDefinedRects___instances[instance]=UserDefinedRects___instances[0]
        set UserDefinedRects___instances[0]=instance



 
    return true // True for effect destroyed.
endfunction

function ToggleGUDRVisibility takes unit whichUnit,boolean switch,boolean show returns boolean
    local real alpha
    local integer unitId= GetHandleId(whichUnit)
 
    if not (HaveSavedHandle(UserDefinedRects___hashTable, (unitId), (0))) then // INLINED!!
        return false
    endif
 
    if switch then //If user wants to switch the current value, change the value of show to opposite of current value
        set show=not LoadBoolean(UserDefinedRects___hashTable, unitId, 7)
    endif
 
    call SaveBoolean(UserDefinedRects___hashTable, unitId, 7, show) //Save current show/hide boolean
 
    //Convert Boolean to Real T/F = 1/0
    if show then
        set alpha=1 //Show > Alpha = 100%
    else
        set alpha=0 //Hide > Alpha = 0%
    endif
    //End of Conversion

    //After it has been decided if the GUDR should be shown or hidden, apply the choice
    call SetUnitVertexColor(whichUnit, 255, 255, 255, 255 * R2I(alpha))
    call SetLightningColor(LoadLightningHandle(UserDefinedRects___hashTable, unitId, 1), 1, 1, 1, alpha)
    call SetLightningColor(LoadLightningHandle(UserDefinedRects___hashTable, unitId, 2), 1, 1, 1, alpha)
    call SetLightningColor(LoadLightningHandle(UserDefinedRects___hashTable, unitId, 3), 1, 1, 1, alpha)
    call SetLightningColor(LoadLightningHandle(UserDefinedRects___hashTable, unitId, 4), 1, 1, 1, alpha)
    return true
endfunction

function MoveGUDR takes unit centerUnit,real offsetX,real offsetY,boolean expand returns boolean
    local integer unitId= GetHandleId(centerUnit)
    local real centerX= GetUnitX(centerUnit)
    local real centerY= GetUnitY(centerUnit)
    local rect userDefRect
    local integer weatherId
 
    local real minX
    local real maxX
    local real minY
    local real maxY
 
    if not (HaveSavedHandle(UserDefinedRects___hashTable, (unitId), (0))) then // INLINED!!
        return false
    endif
 
    set userDefRect=LoadRectHandle(UserDefinedRects___hashTable, unitId, 0)
 
    //If user wants to expand or contract the current region, Load the current value of its borders
    if expand then
        set offsetX=offsetX + GetRectMaxX(userDefRect) - GetRectCenterX(userDefRect)
        set offsetY=offsetY + GetRectMaxY(userDefRect) - GetRectCenterY(userDefRect)
    endif
 
    //Set the values of the borders based on the offsets
    set minX=centerX - offsetX
    set maxX=centerX + offsetX
    set minY=centerY - offsetY
    set maxY=centerY + offsetY
 
    //Update Lightnings
    call MoveLightning(LoadLightningHandle(UserDefinedRects___hashTable, unitId, 1), true, minX, maxY, maxX, maxY) //Top
    call MoveLightning(LoadLightningHandle(UserDefinedRects___hashTable, unitId, 2), true, minX, minY, maxX, minY) //Bottom
    call MoveLightning(LoadLightningHandle(UserDefinedRects___hashTable, unitId, 3), true, minX, minY, minX, maxY) //Left
    call MoveLightning(LoadLightningHandle(UserDefinedRects___hashTable, unitId, 4), true, maxX, minY, maxX, maxY) //Right
 
    //Update Rect



        call SetRect(userDefRect, minX, minY, maxX, maxY)

 
    // Update Weather Effect
    set weatherId=LoadInteger(UserDefinedRects___hashTable, unitId, 5)
    if weatherId > 0 then
        call EnableWeatherEffect(UserDefinedRects___weatherEffects[weatherId], false) //BUG: If weather effect is not disabled before destruction, it's sound effect will remain
        call RemoveWeatherEffect(UserDefinedRects___weatherEffects[weatherId])
        set UserDefinedRects___weatherEffects[weatherId]=AddWeatherEffect(userDefRect, LoadInteger(UserDefinedRects___hashTable, 0, LoadInteger(UserDefinedRects___hashTable, unitId, 8)))
        call EnableWeatherEffect(UserDefinedRects___weatherEffects[weatherId], true)
    endif
 
    set userDefRect=null
    return true
endfunction


function CreateGUDR takes unit centerUnit returns boolean
    local integer unitId= GetHandleId(centerUnit)
    local real centerX= GetUnitX(centerUnit)
    local real centerY= GetUnitY(centerUnit)
    local rect userDefRect
 



 
    if (HaveSavedHandle(UserDefinedRects___hashTable, (unitId), (0))) then // INLINED!!
        return false
    endif
 
    set userDefRect=Rect(centerX - 32, centerY - 32, centerX + 32, centerY + 32)
 






 
    call SaveRectHandle(UserDefinedRects___hashTable, unitId, 0, userDefRect)
    call SaveLightningHandle(UserDefinedRects___hashTable, unitId, 1, AddLightning("DRAM", true, centerX - 32, centerY + 32, centerX + 32, centerY + 32)) //TOP
    call SaveLightningHandle(UserDefinedRects___hashTable, unitId, 2, AddLightning("DRAM", true, centerX - 32, centerY - 32, centerX + 32, centerY - 32)) //BOTTOM
    call SaveLightningHandle(UserDefinedRects___hashTable, unitId, 3, AddLightning("DRAM", true, centerX - 32, centerY - 32, centerX - 32, centerY + 32)) //LEFT
    call SaveLightningHandle(UserDefinedRects___hashTable, unitId, 4, AddLightning("DRAM", true, centerX + 32, centerY - 32, centerX + 32, centerY + 32)) //RIGHT
    call SaveGroupHandle(UserDefinedRects___hashTable, unitId, 6, CreateGroup())
    call SaveBoolean(UserDefinedRects___hashTable, unitId, 7, true) //Save show/hide boolean as true, because nothing is being hidden
    call SaveInteger(UserDefinedRects___hashTable, unitId, 8, 1) //Save 1 as it is the value of 'RAhr'
 
    set userDefRect=null
    return true
endfunction

function DestroyGUDR takes unit centerUnit returns nothing
    local integer unitId= GetHandleId(centerUnit)
    local rect udr= LoadRectHandle(UserDefinedRects___hashTable, unitId, 0)
 
 










    call DestroyWeather(centerUnit)
    call GroupGUDR(centerUnit , true)
    call DestroyLightning(LoadLightningHandle(UserDefinedRects___hashTable, unitId, 1))
    call DestroyLightning(LoadLightningHandle(UserDefinedRects___hashTable, unitId, 2))
    call DestroyLightning(LoadLightningHandle(UserDefinedRects___hashTable, unitId, 3))
    call DestroyLightning(LoadLightningHandle(UserDefinedRects___hashTable, unitId, 4))
    call RemoveRect(udr)
    call DestroyGroup(LoadGroupHandle(UserDefinedRects___hashTable, unitId, 6))
 
    call FlushChildHashtable(UserDefinedRects___hashTable, unitId)

endfunction


function CreateDestroyGUDRWrapper takes unit whichUnit returns boolean
 
    if HaveSavedHandle(UserDefinedRects___hashTable, GetHandleId(whichUnit), 0) then
        call DestroyGUDR(whichUnit)
        return false
    else
        call CreateGUDR(whichUnit)
        return true
    endif
 
endfunction

function UserDefinedRects___Init_ForGroup takes nothing returns nothing
    call UnitRemoveAbility(GetEnumUnit(), 'Amov')
    call UnitRemoveAbility(GetEnumUnit(), 'Aatk')
endfunction

function UserDefinedRects___onInit takes nothing returns nothing
    local group udg_temp_group
    set udg_temp_group=GetUnitsOfTypeIdAll('udr0')
    // SET THE UNIT TYPE TO THE CORRECT ONE
    call ForGroupBJ(udg_temp_group, function UserDefinedRects___Init_ForGroup)
    call DestroyGroup(udg_temp_group)
    set udg_temp_group=null
    // DO NOT TOUCH ANYTHING BELOW THIS
    call InitHashtableBJ()
    set UserDefinedRects___hashTable=GetLastCreatedHashtableBJ()



        set UserDefinedRects___instances[0]=1

    call SaveInteger(UserDefinedRects___hashTable, 0, 1, 'RAhr')
    call SaveInteger(UserDefinedRects___hashTable, 0, 2, 'RAlr')
    call SaveInteger(UserDefinedRects___hashTable, 0, 3, 'MEds')
    call SaveInteger(UserDefinedRects___hashTable, 0, 4, 'FDbh')
    call SaveInteger(UserDefinedRects___hashTable, 0, 5, 'FDbl')
    call SaveInteger(UserDefinedRects___hashTable, 0, 6, 'FDgh')
    call SaveInteger(UserDefinedRects___hashTable, 0, 7, 'FDgl')
    call SaveInteger(UserDefinedRects___hashTable, 0, 8, 'FDrh')
    call SaveInteger(UserDefinedRects___hashTable, 0, 9, 'FDrl')
    call SaveInteger(UserDefinedRects___hashTable, 0, 10, 'FDwh')
    call SaveInteger(UserDefinedRects___hashTable, 0, 11, 'FDwl')
    call SaveInteger(UserDefinedRects___hashTable, 0, 12, 'RLhr')
    call SaveInteger(UserDefinedRects___hashTable, 0, 13, 'RLlr')
    call SaveInteger(UserDefinedRects___hashTable, 0, 14, 'SNbs')
    call SaveInteger(UserDefinedRects___hashTable, 0, 15, 'SNhs')
    call SaveInteger(UserDefinedRects___hashTable, 0, 16, 'SNls')
    call SaveInteger(UserDefinedRects___hashTable, 0, 17, 'WOcw')
    call SaveInteger(UserDefinedRects___hashTable, 0, 18, 'WOlw')
    call SaveInteger(UserDefinedRects___hashTable, 0, 19, 'LRaa')
    call SaveInteger(UserDefinedRects___hashTable, 0, 20, 'LRma')
    call SaveInteger(UserDefinedRects___hashTable, 0, 21, 'WNcw')
endfunction

//////////////////////////////////////////////////////
//END OF GUDR
//////////////////////////////////////////////////////

//library UserDefinedRects ends
//===========================================================================
//
// Just another Warcraft III map
//
//   Warcraft III map script
//   Generated by the Warcraft III World Editor
//   Date: Tue Apr  2 11:00:41 2019
//   Map Author: Unknown
//
//===========================================================================

//***************************************************************************
//*
//*  Global Variables
//*
//***************************************************************************


function InitGlobals takes nothing returns nothing
endfunction

//***************************************************************************
//*
//*  Unit Creation
//*
//***************************************************************************

//===========================================================================
function CreateBuildingsForPlayer0 takes nothing returns nothing
    local player p= Player(0)
    local unit u
    local integer unitID
    local trigger t
    local real life

    set u=CreateUnit(p, 'hhou', 192.0, - 1664.0, 270.000)
    set u=CreateUnit(p, 'hbar', - 256.0, - 1856.0, 270.000)
endfunction

//===========================================================================
function CreateUnitsForPlayer0 takes nothing returns nothing
    local player p= Player(0)
    local unit u
    local integer unitID
    local trigger t
    local real life

    set u=CreateUnit(p, 'Hpal', 2029.4, - 3106.2, 221.469)
    set u=CreateUnit(p, 'Hpal', - 2538.1, - 3066.8, 310.494)
    set u=CreateUnit(p, 'Hpal', 164.7, - 185.5, 345.366)
    set u=CreateUnit(p, 'udr0', - 477.5, 242.9, 348.460)
endfunction

//===========================================================================
function CreateUnitsForPlayer1 takes nothing returns nothing
    local player p= Player(1)
    local unit u
    local integer unitID
    local trigger t
    local real life

    set u=CreateUnit(p, 'udr0', 225.8, 288.1, 314.930)
endfunction

//===========================================================================
function CreatePlayerBuildings takes nothing returns nothing
    call CreateBuildingsForPlayer0()
endfunction

//===========================================================================
function CreatePlayerUnits takes nothing returns nothing
    call CreateUnitsForPlayer0()
    call CreateUnitsForPlayer1()
endfunction

//===========================================================================
function CreateAllUnits takes nothing returns nothing
    call CreateBuildingsForPlayer0() // INLINED!!
    call CreatePlayerUnits()
endfunction

//***************************************************************************
//*
//*  Regions
//*
//***************************************************************************

function CreateRegions takes nothing returns nothing
    local weathereffect we

    set gg_rct_test0=Rect(- 3232.0, - 3552.0, - 1792.0, - 2144.0)
    set gg_rct_test1=Rect(- 544.0, - 832.0, 896.0, 576.0)
endfunction

//***************************************************************************
//*
//*  Triggers
//*
//***************************************************************************

//===========================================================================
// Trigger: GroupTools
//===========================================================================

//===========================================================================
// Trigger: UserDefinedRects
//===========================================================================
//===========================================================================
// Trigger: Disable Fog of War
//===========================================================================
function Trig_Disable_Fog_of_War_Actions takes nothing returns nothing
    call FogEnableOff()
    call FogMaskEnableOff()
endfunction

//===========================================================================
function InitTrig_Disable_Fog_of_War takes nothing returns nothing
    set gg_trg_Disable_Fog_of_War=CreateTrigger()
    call TriggerAddAction(gg_trg_Disable_Fog_of_War, function Trig_Disable_Fog_of_War_Actions)
endfunction

//===========================================================================
// Trigger: Table
//===========================================================================
// Trigger: TileDefinition
//===========================================================================
// Trigger: StructureTileDefinition
//===========================================================================
// Trigger: ArgumentStack
//===========================================================================
// Trigger: ArgumentStack Test
//===========================================================================

// scope AAAA begins
//textmacro instance: ArgumentStack_Wrapper("EnumHero", "unit", "0")
function AAAA___SetEnumHero takes unit value returns nothing
    call s__Args_setAgent(s__Args_unit_impl , ((0 ) ) , ( ( value))) // INLINED!!
endfunction
function GetEnumHero takes nothing returns unit
    return (s__Args_getUnit((0))) // INLINED!!
endfunction
function AAAA___FreeEnumHero takes nothing returns nothing
    call s__Args_freeHandle(s__Args_unit_impl , ((0))) // INLINED!!
endfunction
//end of: ArgumentStack_Wrapper("EnumHero", "unit", "0")
//textmacro instance: ArgumentStack_Wrapper("EnumInt", "integer", "0")
function AAAA___SetEnumInt takes integer value returns nothing
    call s__Args_setInteger((0 ) , ( value)) // INLINED!!
endfunction
function GetEnumInt takes nothing returns integer
    return (s__Args_getInteger((0))) // INLINED!!
endfunction
function AAAA___FreeEnumInt takes nothing returns nothing
    call s__Args_freeInteger((0)) // INLINED!!
endfunction
//end of: ArgumentStack_Wrapper("EnumInt", "integer", "0")

function Trig_Untitled_Trigger_007_Actions takes nothing returns nothing
    call s__Args_setInteger((0 ) , ( (1))) // INLINED!!
    call BJDebugMsg(I2S((s__Args_getInteger((0))))) // INLINED!!
    call s__Args_setInteger((0 ) , ( (5))) // INLINED!!
 
    call s__Args_setAgent(s__Args_unit_impl , ((0 ) ) , ( ( (CreateUnit(Player(0), 'Hpal', 0, 0, 0))))) // INLINED!!
    call BJDebugMsg(GetHeroProperName((s__Args_getUnit((0))))) // INLINED!!
 
    call BJDebugMsg(I2S((s__Args_getInteger((0))))) // INLINED!!
 
    call s__Args_setAgent(s__Args_unit_impl , ((0 ) ) , ( ( (CreateUnit(Player(0), 'Hblm', 0, 0, 0))))) // INLINED!!
    call BJDebugMsg(GetHeroProperName((s__Args_getUnit((0))))) // INLINED!!
 
    call s__Args_freeHandle(s__Args_unit_impl , ((0))) // INLINED!!
    call BJDebugMsg(GetHeroProperName((s__Args_getUnit((0))))) // INLINED!!
 
    call s__Args_freeInteger((0)) // INLINED!!
    call BJDebugMsg(I2S((s__Args_getInteger((0))))) // INLINED!!
 
 
endfunction
// scope AAAA ends

//===========================================================================
function InitTrig_ArgumentStack_Test takes nothing returns nothing
    set gg_trg_ArgumentStack_Test=CreateTrigger()
    call TriggerAddAction(gg_trg_ArgumentStack_Test, function Trig_Untitled_Trigger_007_Actions)
endfunction

//===========================================================================
function InitCustomTriggers takes nothing returns nothing
    //Function not found: call InitTrig_GroupTools()
    //Function not found: call InitTrig_UserDefinedRects()
    call InitTrig_Disable_Fog_of_War()
    //Function not found: call InitTrig_Table()
    //Function not found: call InitTrig_TileDefinition()
    //Function not found: call InitTrig_StructureTileDefinition()
    //Function not found: call InitTrig_ArgumentStack()
    call InitTrig_ArgumentStack_Test()
endfunction

//===========================================================================
function RunInitializationTriggers takes nothing returns nothing
    call ConditionalTriggerExecute(gg_trg_Disable_Fog_of_War)
    call ConditionalTriggerExecute(gg_trg_ArgumentStack_Test)
endfunction

//***************************************************************************
//*
//*  Players
//*
//***************************************************************************

function InitCustomPlayerSlots takes nothing returns nothing

    // Player 0
    call SetPlayerStartLocation(Player(0), 0)
    call ForcePlayerStartLocation(Player(0), 0)
    call SetPlayerColor(Player(0), ConvertPlayerColor(0))
    call SetPlayerRacePreference(Player(0), RACE_PREF_HUMAN)
    call SetPlayerRaceSelectable(Player(0), false)
    call SetPlayerController(Player(0), MAP_CONTROL_USER)

    // Player 1
    call SetPlayerStartLocation(Player(1), 1)
    call ForcePlayerStartLocation(Player(1), 1)
    call SetPlayerColor(Player(1), ConvertPlayerColor(1))
    call SetPlayerRacePreference(Player(1), RACE_PREF_ORC)
    call SetPlayerRaceSelectable(Player(1), false)
    call SetPlayerController(Player(1), MAP_CONTROL_USER)

    // Player 2
    call SetPlayerStartLocation(Player(2), 2)
    call ForcePlayerStartLocation(Player(2), 2)
    call SetPlayerColor(Player(2), ConvertPlayerColor(2))
    call SetPlayerRacePreference(Player(2), RACE_PREF_UNDEAD)
    call SetPlayerRaceSelectable(Player(2), false)
    call SetPlayerController(Player(2), MAP_CONTROL_COMPUTER)

endfunction

function InitCustomTeams takes nothing returns nothing
    // Force: TRIGSTR_002
    call SetPlayerTeam(Player(0), 0)
    call SetPlayerState(Player(0), PLAYER_STATE_ALLIED_VICTORY, 1)
    call SetPlayerTeam(Player(1), 0)
    call SetPlayerState(Player(1), PLAYER_STATE_ALLIED_VICTORY, 1)
    call SetPlayerTeam(Player(2), 0)
    call SetPlayerState(Player(2), PLAYER_STATE_ALLIED_VICTORY, 1)

    //   Allied
    call SetPlayerAllianceStateAllyBJ(Player(0), Player(1), true)
    call SetPlayerAllianceStateAllyBJ(Player(0), Player(2), true)
    call SetPlayerAllianceStateAllyBJ(Player(1), Player(0), true)
    call SetPlayerAllianceStateAllyBJ(Player(1), Player(2), true)
    call SetPlayerAllianceStateAllyBJ(Player(2), Player(0), true)
    call SetPlayerAllianceStateAllyBJ(Player(2), Player(1), true)

    //   Shared Vision
    call SetPlayerAllianceStateVisionBJ(Player(0), Player(1), true)
    call SetPlayerAllianceStateVisionBJ(Player(0), Player(2), true)
    call SetPlayerAllianceStateVisionBJ(Player(1), Player(0), true)
    call SetPlayerAllianceStateVisionBJ(Player(1), Player(2), true)
    call SetPlayerAllianceStateVisionBJ(Player(2), Player(0), true)
    call SetPlayerAllianceStateVisionBJ(Player(2), Player(1), true)

    //   Shared Control
    call SetPlayerAllianceStateControlBJ(Player(0), Player(1), true)
    call SetPlayerAllianceStateControlBJ(Player(0), Player(2), true)
    call SetPlayerAllianceStateControlBJ(Player(1), Player(0), true)
    call SetPlayerAllianceStateControlBJ(Player(1), Player(2), true)
    call SetPlayerAllianceStateControlBJ(Player(2), Player(0), true)
    call SetPlayerAllianceStateControlBJ(Player(2), Player(1), true)

    //   Shared Advanced Control
    call SetPlayerAllianceStateFullControlBJ(Player(0), Player(1), true)
    call SetPlayerAllianceStateFullControlBJ(Player(0), Player(2), true)
    call SetPlayerAllianceStateFullControlBJ(Player(1), Player(0), true)
    call SetPlayerAllianceStateFullControlBJ(Player(1), Player(2), true)
    call SetPlayerAllianceStateFullControlBJ(Player(2), Player(0), true)
    call SetPlayerAllianceStateFullControlBJ(Player(2), Player(1), true)

endfunction

function InitAllyPriorities takes nothing returns nothing

    call SetStartLocPrioCount(0, 1)
    call SetStartLocPrio(0, 0, 1, MAP_LOC_PRIO_HIGH)

    call SetStartLocPrioCount(1, 1)
    call SetStartLocPrio(1, 0, 0, MAP_LOC_PRIO_HIGH)
endfunction

//***************************************************************************
//*
//*  Main Initialization
//*
//***************************************************************************

//===========================================================================
function main takes nothing returns nothing
    call SetCameraBounds(- 3328.0 + GetCameraMargin(CAMERA_MARGIN_LEFT), - 3584.0 + GetCameraMargin(CAMERA_MARGIN_BOTTOM), 3328.0 - GetCameraMargin(CAMERA_MARGIN_RIGHT), 3072.0 - GetCameraMargin(CAMERA_MARGIN_TOP), - 3328.0 + GetCameraMargin(CAMERA_MARGIN_LEFT), 3072.0 - GetCameraMargin(CAMERA_MARGIN_TOP), 3328.0 - GetCameraMargin(CAMERA_MARGIN_RIGHT), - 3584.0 + GetCameraMargin(CAMERA_MARGIN_BOTTOM))
    call SetDayNightModels("Environment\\DNC\\DNCLordaeron\\DNCLordaeronTerrain\\DNCLordaeronTerrain.mdl", "Environment\\DNC\\DNCLordaeron\\DNCLordaeronUnit\\DNCLordaeronUnit.mdl")
    call NewSoundEnvironment("Default")
    call SetAmbientDaySound("LordaeronSummerDay")
    call SetAmbientNightSound("LordaeronSummerNight")
    call SetMapMusic("Music", true, 0)
    call CreateRegions()
    call CreateAllUnits()
    call InitBlizzard()

call ExecuteFunc("jasshelper__initstructs516579250")
call ExecuteFunc("UserDefinedRects___onInit")

    call InitGlobals()
    call InitCustomTriggers()
    call RunInitializationTriggers()

endfunction

//***************************************************************************
//*
//*  Map Configuration
//*
//***************************************************************************

function config takes nothing returns nothing
    call SetMapName("Just another Warcraft III map")
    call SetMapDescription("Nondescript")
    call SetPlayers(3)
    call SetTeams(3)
    call SetGamePlacement(MAP_PLACEMENT_TEAMS_TOGETHER)

    call DefineStartLocation(0, 2368.0, - 2944.0)
    call DefineStartLocation(1, 1472.0, 192.0)
    call DefineStartLocation(2, 2816.0, 1600.0)

    // Player setup
    call InitCustomPlayerSlots()
    call InitCustomTeams()
    call InitAllyPriorities()
endfunction




//Struct method generated initializers/callers:

function jasshelper__initstructs516579250 takes nothing returns nothing



















































endfunction

JASS:
globals
group array v
group e=null
integer o=0
boolean r=false
integer E=8190
hashtable X=InitHashtable()
constant integer O=$A
constant integer R=$B
hashtable I
integer array N
rect B=null
rect c=null
trigger C=null
trigger d=null
integer D
integer f
constant integer G=$E
endglobals
function j takes nothing returns nothing
if(r)then
call GroupClear(e)
set r=false
endif
call GroupAddUnit(e,GetEnumUnit())
endfunction
function NewGroup takes nothing returns group
if 0==o then
return CreateGroup()
endif
set o=o-1
return v[o]
endfunction
function s__Table___dex__get_size takes nothing returns integer
return O
endfunction
function s__Table___dex__get_list takes nothing returns integer
return R
endfunction
function l takes nothing returns integer
local integer L=(LoadInteger(X,((R)),(0)))
if L==0 then
set L=E+1
set E=L
else
call SaveInteger(X,((R)),(0),((LoadInteger(X,((R)),(L)))))
call RemoveSavedInteger(X,((R)),(L))
endif
return L
endfunction
function P takes nothing returns nothing
local integer tb=D
local integer q=tb+4096
if q<f then
set D=q
call ForForce(bj_FORCE_PLAYER[0],function P)
else
set q=f
endif
loop
call FlushChildHashtable(X,(tb))
set tb=tb+1
exitwhen tb==q
endloop
endfunction
function s__HashTable_create takes nothing returns integer
return l()
endfunction
function W takes integer T,integer i,agent a returns nothing
local integer U=(LoadInteger(X,(((T))),(i)))
local integer w
if U==0 then
set U=l()
call SaveInteger(X,(((T))),(i),(U))
call SaveInteger(X,(U),(-1),(0))
set w=0
else
set w=(LoadInteger(X,(U),(-1)))+1
call SaveInteger(X,(U),(-1),(w))
endif
call SaveAgentHandle(X,(((U))),(w),(a))
endfunction
function Y takes integer T,integer i returns nothing
local integer U=(LoadInteger(X,(((T))),(i)))
local integer w=(LoadInteger(X,(U),(-1)))
call RemoveSavedHandle(X,(((U))),(w))
call SaveInteger(X,(U),(-1),(w-1))
endfunction
function xv takes integer i,integer Z returns nothing
local integer U=(LoadInteger(X,(((G))),(i)))
local integer w
if U==0 then
set U=l()
call SaveInteger(X,(((G))),(i),(U))
call SaveInteger(X,(U),(-1),(0))
set w=0
else
set w=(LoadInteger(X,(U),(-1)))+1
call SaveInteger(X,(U),(-1),(w))
endif
call SaveInteger(X,(((U))),(w),(Z))
endfunction
function ov takes integer i returns integer
return(LoadInteger(X,((((LoadInteger(X,(((G))),(i)))))),((LoadInteger(X,((LoadInteger(X,(((G))),(i)))),(-1))))))
endfunction
function rv takes integer i returns nothing
local integer U=(LoadInteger(X,(((G))),(i)))
local integer w=(LoadInteger(X,(U),(-1)))
call RemoveSavedInteger(X,(((U))),(w))
call SaveInteger(X,(U),(-1),(w-1))
endfunction
function Nv takes integer i returns unit
return(LoadUnitHandle(X,((((LoadInteger(X,(((21))),(i)))))),((LoadInteger(X,((LoadInteger(X,(((21))),(i)))),(-1))))))
endfunction
function Yv takes nothing returns boolean
local unit zv=GetFilterUnit()
if HaveSavedHandle(I,GetHandleId(zv),0)or GetOwningPlayer(zv)!=LoadPlayerHandle(I,0,0)then
return false
endif
call SetUnitPathing(zv,false)
set zv=null
return true
endfunction
function Ie takes nothing returns nothing
call UnitRemoveAbility(GetEnumUnit(),'Amov')
call UnitRemoveAbility(GetEnumUnit(),'Aatk')
endfunction
function Ae takes nothing returns nothing
local group Ne
set Ne=GetUnitsOfTypeIdAll('udr0')
call ForGroupBJ(Ne,function Ie)
call DestroyGroup(Ne)
set Ne=null
call InitHashtableBJ()
set I=GetLastCreatedHashtableBJ()
set N[0]=1
call SaveInteger(I,0,1,'RAhr')
call SaveInteger(I,0,2,'RAlr')
call SaveInteger(I,0,3,'MEds')
call SaveInteger(I,0,4,'FDbh')
call SaveInteger(I,0,5,'FDbl')
call SaveInteger(I,0,6,'FDgh')
call SaveInteger(I,0,7,'FDgl')
call SaveInteger(I,0,8,'FDrh')
call SaveInteger(I,0,9,'FDrl')
call SaveInteger(I,0,$A,'FDwh')
call SaveInteger(I,0,$B,'FDwl')
call SaveInteger(I,0,$C,'RLhr')
call SaveInteger(I,0,$D,'RLlr')
call SaveInteger(I,0,$E,'SNbs')
call SaveInteger(I,0,$F,'SNhs')
call SaveInteger(I,0,16,'SNls')
call SaveInteger(I,0,17,'WOcw')
call SaveInteger(I,0,18,'WOlw')
call SaveInteger(I,0,19,'LRaa')
call SaveInteger(I,0,20,'LRma')
call SaveInteger(I,0,21,'WNcw')
endfunction
function be takes nothing returns nothing
endfunction
function Be takes nothing returns nothing
local player p=Player(0)
local unit u
local integer unitID
local trigger t
local real life
set u=CreateUnit(p,'hhou',192.,-1664.,270.)
set u=CreateUnit(p,'hbar',-256.,-1856.,270.)
endfunction
function ce takes nothing returns nothing
local player p=Player(0)
local unit u
local integer unitID
local trigger t
local real life
set u=CreateUnit(p,'Hpal',2029.4,-3106.2,221.469)
set u=CreateUnit(p,'Hpal',-2538.1,-3066.8,310.494)
set u=CreateUnit(p,'Hpal',164.7,-185.5,345.366)
set u=CreateUnit(p,'udr0',-477.5,242.9,348.46)
endfunction
function Ce takes nothing returns nothing
local player p=Player(1)
local unit u
local integer unitID
local trigger t
local real life
set u=CreateUnit(p,'udr0',225.8,288.1,314.93)
endfunction
function CreatePlayerBuildings takes nothing returns nothing
call Be()
endfunction
function de takes nothing returns nothing
call ce()
call Ce()
endfunction
function De takes nothing returns nothing
call Be()
call de()
endfunction
function fe takes nothing returns nothing
local weathereffect we
set B=Rect(-3232.,-3552.,-1792.,-2144.)
set c=Rect(-544.,-832.,896.,576.)
endfunction
function Fe takes nothing returns nothing
call FogEnableOff()
call FogMaskEnableOff()
endfunction
function ge takes nothing returns nothing
set C=CreateTrigger()
call TriggerAddAction(C,function Fe)
endfunction
function GetEnumHero takes nothing returns unit
return(Nv((0)))
endfunction
function AAAA___FreeEnumHero takes nothing returns nothing
call Y(21,((0)))
endfunction
function GetEnumInt takes nothing returns integer
return(ov((0)))
endfunction
function AAAA___FreeEnumInt takes nothing returns nothing
call rv((0))
endfunction
function Ge takes nothing returns nothing
call xv((0),((1)))
call BJDebugMsg(I2S((ov((0)))))
call xv((0),((5)))
call W(21,((0)),(((CreateUnit(Player(0),'Hpal',0,0,0)))))
call BJDebugMsg(GetHeroProperName((Nv((0)))))
call BJDebugMsg(I2S((ov((0)))))
call W(21,((0)),(((CreateUnit(Player(0),'Hblm',0,0,0)))))
call BJDebugMsg(GetHeroProperName((Nv((0)))))
call Y(21,((0)))
call BJDebugMsg(GetHeroProperName((Nv((0)))))
call rv((0))
call BJDebugMsg(I2S((ov((0)))))
endfunction
function he takes nothing returns nothing
set d=CreateTrigger()
call TriggerAddAction(d,function Ge)
endfunction
function He takes nothing returns nothing
call ge()
call he()
endfunction
function je takes nothing returns nothing
call ConditionalTriggerExecute(C)
call ConditionalTriggerExecute(d)
endfunction
function Je takes nothing returns nothing
call SetPlayerStartLocation(Player(0),0)
call ForcePlayerStartLocation(Player(0),0)
call SetPlayerColor(Player(0),ConvertPlayerColor(0))
call SetPlayerRacePreference(Player(0),RACE_PREF_HUMAN)
call SetPlayerRaceSelectable(Player(0),false)
call SetPlayerController(Player(0),MAP_CONTROL_USER)
call SetPlayerStartLocation(Player(1),1)
call ForcePlayerStartLocation(Player(1),1)
call SetPlayerColor(Player(1),ConvertPlayerColor(1))
call SetPlayerRacePreference(Player(1),RACE_PREF_ORC)
call SetPlayerRaceSelectable(Player(1),false)
call SetPlayerController(Player(1),MAP_CONTROL_USER)
call SetPlayerStartLocation(Player(2),2)
call ForcePlayerStartLocation(Player(2),2)
call SetPlayerColor(Player(2),ConvertPlayerColor(2))
call SetPlayerRacePreference(Player(2),RACE_PREF_UNDEAD)
call SetPlayerRaceSelectable(Player(2),false)
call SetPlayerController(Player(2),MAP_CONTROL_COMPUTER)
endfunction
function InitCustomTeams takes nothing returns nothing
call SetPlayerTeam(Player(0),0)
call SetPlayerState(Player(0),PLAYER_STATE_ALLIED_VICTORY,1)
call SetPlayerTeam(Player(1),0)
call SetPlayerState(Player(1),PLAYER_STATE_ALLIED_VICTORY,1)
call SetPlayerTeam(Player(2),0)
call SetPlayerState(Player(2),PLAYER_STATE_ALLIED_VICTORY,1)
call SetPlayerAllianceStateAllyBJ(Player(0),Player(1),true)
call SetPlayerAllianceStateAllyBJ(Player(0),Player(2),true)
call SetPlayerAllianceStateAllyBJ(Player(1),Player(0),true)
call SetPlayerAllianceStateAllyBJ(Player(1),Player(2),true)
call SetPlayerAllianceStateAllyBJ(Player(2),Player(0),true)
call SetPlayerAllianceStateAllyBJ(Player(2),Player(1),true)
call SetPlayerAllianceStateVisionBJ(Player(0),Player(1),true)
call SetPlayerAllianceStateVisionBJ(Player(0),Player(2),true)
call SetPlayerAllianceStateVisionBJ(Player(1),Player(0),true)
call SetPlayerAllianceStateVisionBJ(Player(1),Player(2),true)
call SetPlayerAllianceStateVisionBJ(Player(2),Player(0),true)
call SetPlayerAllianceStateVisionBJ(Player(2),Player(1),true)
call SetPlayerAllianceStateControlBJ(Player(0),Player(1),true)
call SetPlayerAllianceStateControlBJ(Player(0),Player(2),true)
call SetPlayerAllianceStateControlBJ(Player(1),Player(0),true)
call SetPlayerAllianceStateControlBJ(Player(1),Player(2),true)
call SetPlayerAllianceStateControlBJ(Player(2),Player(0),true)
call SetPlayerAllianceStateControlBJ(Player(2),Player(1),true)
call SetPlayerAllianceStateFullControlBJ(Player(0),Player(1),true)
call SetPlayerAllianceStateFullControlBJ(Player(0),Player(2),true)
call SetPlayerAllianceStateFullControlBJ(Player(1),Player(0),true)
call SetPlayerAllianceStateFullControlBJ(Player(1),Player(2),true)
call SetPlayerAllianceStateFullControlBJ(Player(2),Player(0),true)
call SetPlayerAllianceStateFullControlBJ(Player(2),Player(1),true)
endfunction
function ke takes nothing returns nothing
call SetStartLocPrioCount(0,1)
call SetStartLocPrio(0,0,1,MAP_LOC_PRIO_HIGH)
call SetStartLocPrioCount(1,1)
call SetStartLocPrio(1,0,0,MAP_LOC_PRIO_HIGH)
endfunction
function main takes nothing returns nothing
call SetCameraBounds(-3328.+GetCameraMargin(CAMERA_MARGIN_LEFT),-3584.+GetCameraMargin(CAMERA_MARGIN_BOTTOM),3328.-GetCameraMargin(CAMERA_MARGIN_RIGHT),3072.-GetCameraMargin(CAMERA_MARGIN_TOP),-3328.+GetCameraMargin(CAMERA_MARGIN_LEFT),3072.-GetCameraMargin(CAMERA_MARGIN_TOP),3328.-GetCameraMargin(CAMERA_MARGIN_RIGHT),-3584.+GetCameraMargin(CAMERA_MARGIN_BOTTOM))
call SetDayNightModels("Environment\\DNC\\DNCLordaeron\\DNCLordaeronTerrain\\DNCLordaeronTerrain.mdl","Environment\\DNC\\DNCLordaeron\\DNCLordaeronUnit\\DNCLordaeronUnit.mdl")
call NewSoundEnvironment("Default")
call SetAmbientDaySound("LordaeronSummerDay")
call SetAmbientNightSound("LordaeronSummerNight")
call SetMapMusic("Music",true,0)
call fe()
call De()
call InitBlizzard()
call ExecuteFunc("Ke")
call ExecuteFunc("Ae")
call be()
call He()
call je()
endfunction
function config takes nothing returns nothing
call SetMapName("Just another Warcraft III map")
call SetMapDescription("Nondescript")
call SetPlayers(3)
call SetTeams(3)
call SetGamePlacement(MAP_PLACEMENT_TEAMS_TOGETHER)
call DefineStartLocation(0,2368.,-2944.)
call DefineStartLocation(1,1472.,192.)
call DefineStartLocation(2,2816.,1600.)
call Je()
call InitCustomTeams()
call ke()
endfunction
function Ke takes nothing returns nothing
endfunction
 
Level 12
Joined
Jun 12, 2010
Messages
413
You could make a ticket asking for a fix: wurstscript/WurstScript

I think the Wurst optimizer generates those variables because of how the language itself works (they probably use them to reference functions anywhere in the code, or something), so it's unlikely that this would be "fixed", since I don't think it's broken. Also, since TRVE is not allowed in Wurst, this kind of kills it as well T_T. The optimizer also disallows some variable/parameter names (like switch). I might be using the optimizer wrong, but I don't think it's intended for pure JASS code.



EDIT: I guess my will to work was more than my will to be patient. I wrote my own constant inliner here (if anyone wants to use it): A constant global variable inline (for types integer, real and boolean) for JASS2 scripts
 
Last edited:
  • Like
Reactions: ies
Status
Not open for further replies.
Top