// this script was compiled with wurst 1.8.1.0-jenkins-Wurst-1365 globals // integer JASS_MAX_ARRAY_SIZE=0 // integer PLAYER_NEUTRAL_PASSIVE=0 // integer PLAYER_NEUTRAL_AGGRESSIVE=0 // playercolor PLAYER_COLOR_RED=null // playercolor PLAYER_COLOR_BLUE=null // playercolor PLAYER_COLOR_CYAN=null // playercolor PLAYER_COLOR_PURPLE=null // playercolor PLAYER_COLOR_YELLOW=null // playercolor PLAYER_COLOR_ORANGE=null // playercolor PLAYER_COLOR_GREEN=null // playercolor PLAYER_COLOR_PINK=null // playercolor PLAYER_COLOR_LIGHT_GRAY=null // playercolor PLAYER_COLOR_LIGHT_BLUE=null // playercolor PLAYER_COLOR_AQUA=null // playercolor PLAYER_COLOR_BROWN=null // playercolor PLAYER_COLOR_MAROON=null // playercolor PLAYER_COLOR_NAVY=null // playercolor PLAYER_COLOR_TURQUOISE=null // playercolor PLAYER_COLOR_VIOLET=null // playercolor PLAYER_COLOR_WHEAT=null // playercolor PLAYER_COLOR_PEACH=null // playercolor PLAYER_COLOR_MINT=null // playercolor PLAYER_COLOR_LAVENDER=null // playercolor PLAYER_COLOR_COAL=null // playercolor PLAYER_COLOR_SNOW=null // playercolor PLAYER_COLOR_EMERALD=null // playercolor PLAYER_COLOR_PEANUT=null // playergameresult PLAYER_GAME_RESULT_DEFEAT=null // alliancetype ALLIANCE_PASSIVE=null // alliancetype ALLIANCE_HELP_REQUEST=null // alliancetype ALLIANCE_HELP_RESPONSE=null // alliancetype ALLIANCE_SHARED_XP=null // alliancetype ALLIANCE_SHARED_SPELLS=null // alliancetype ALLIANCE_SHARED_VISION=null // version VERSION_REIGN_OF_CHAOS=null // attacktype ATTACK_TYPE_NORMAL=null // attacktype ATTACK_TYPE_CHAOS=null // damagetype DAMAGE_TYPE_UNKNOWN=null // damagetype DAMAGE_TYPE_UNIVERSAL=null // weapontype WEAPON_TYPE_WHOKNOWS=null // pathingtype PATHING_TYPE_WALKABILITY=null // animtype ANIM_TYPE_STAND=null // racepreference RACE_PREF_HUMAN=null // mapcontrol MAP_CONTROL_USER=null // mapcontrol MAP_CONTROL_RESCUABLE=null // placement MAP_PLACEMENT_TEAMS_TOGETHER=null // startlocprio MAP_LOC_PRIO_HIGH=null // playerslotstate PLAYER_SLOT_STATE_PLAYING=null // fgamestate GAME_STATE_TIME_OF_DAY=null // playerstate PLAYER_STATE_RESOURCE_GOLD=null // playerstate PLAYER_STATE_GIVES_BOUNTY=null // playerstate PLAYER_STATE_ALLIED_VICTORY=null // unitstate UNIT_STATE_LIFE=null // unitstate UNIT_STATE_MANA=null // playerevent EVENT_PLAYER_LEAVE=null // playerevent EVENT_PLAYER_END_CINEMATIC=null // playerunitevent EVENT_PLAYER_UNIT_ATTACKED=null // playerunitevent EVENT_PLAYER_UNIT_RESCUED=null // playerunitevent EVENT_PLAYER_UNIT_DEATH=null // playerunitevent EVENT_PLAYER_UNIT_CONSTRUCT_FINISH=null // playerunitevent EVENT_PLAYER_UNIT_UPGRADE_FINISH=null // playerunitevent EVENT_PLAYER_UNIT_ISSUED_ORDER=null // playerunitevent EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER=null // playerunitevent EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER=null // playerunitevent EVENT_PLAYER_HERO_SKILL=null // playerunitevent EVENT_PLAYER_UNIT_DROP_ITEM=null // playerunitevent EVENT_PLAYER_UNIT_PICKUP_ITEM=null // playerunitevent EVENT_PLAYER_UNIT_USE_ITEM=null // playerunitevent EVENT_PLAYER_UNIT_DAMAGED=null // playerunitevent EVENT_PLAYER_UNIT_DAMAGING=null // unitevent EVENT_UNIT_DAMAGED=null // playerevent EVENT_PLAYER_ARROW_LEFT_DOWN=null // playerevent EVENT_PLAYER_ARROW_LEFT_UP=null // playerevent EVENT_PLAYER_ARROW_RIGHT_DOWN=null // playerevent EVENT_PLAYER_ARROW_RIGHT_UP=null // playerevent EVENT_PLAYER_ARROW_DOWN_DOWN=null // playerevent EVENT_PLAYER_ARROW_DOWN_UP=null // playerevent EVENT_PLAYER_ARROW_UP_DOWN=null // playerevent EVENT_PLAYER_ARROW_UP_UP=null // playerevent EVENT_PLAYER_MOUSE_DOWN=null // playerevent EVENT_PLAYER_MOUSE_UP=null // playerevent EVENT_PLAYER_MOUSE_MOVE=null // playerunitevent EVENT_PLAYER_UNIT_SELL_ITEM=null // playerunitevent EVENT_PLAYER_UNIT_SPELL_CAST=null // playerunitevent EVENT_PLAYER_UNIT_SPELL_EFFECT=null // limitop LESS_THAN=null // limitop EQUAL=null // limitop GREATER_THAN_OR_EQUAL=null // unittype UNIT_TYPE_HERO=null // unittype UNIT_TYPE_STRUCTURE=null // unittype UNIT_TYPE_PEON=null // itemtype ITEM_TYPE_PERMANENT=null // itemtype ITEM_TYPE_CHARGED=null // itemtype ITEM_TYPE_ARTIFACT=null // camerafield CAMERA_FIELD_TARGET_DISTANCE=null // camerafield CAMERA_FIELD_FARZ=null // camerafield CAMERA_FIELD_ANGLE_OF_ATTACK=null // camerafield CAMERA_FIELD_FIELD_OF_VIEW=null // camerafield CAMERA_FIELD_ROLL=null // camerafield CAMERA_FIELD_ROTATION=null // camerafield CAMERA_FIELD_ZOFFSET=null // blendmode BLEND_MODE_BLEND=null // texmapflags TEXMAP_FLAG_NONE=null // fogstate FOG_OF_WAR_MASKED=null // fogstate FOG_OF_WAR_VISIBLE=null // integer CAMERA_MARGIN_LEFT=0 // integer CAMERA_MARGIN_RIGHT=0 // integer CAMERA_MARGIN_TOP=0 // integer CAMERA_MARGIN_BOTTOM=0 // originframetype ORIGIN_FRAME_GAME_UI=null // originframetype ORIGIN_FRAME_WORLD_FRAME=null // real bj_UNIT_FACING=0. // real bj_GAME_STARTED_THRESHOLD=0. // integer bj_MAX_INVENTORY=0 // integer bj_MAX_PLAYERS=0 // integer bj_PLAYER_NEUTRAL_VICTIM=0 // integer bj_MAX_PLAYER_SLOTS=0 // integer bj_MAX_SKELETONS=0 // integer bj_MAX_STOCK_ITEM_SLOTS=0 // integer bj_MAX_STOCK_UNIT_SLOTS=0 // integer bj_MAX_ITEM_LEVEL=0 // real bj_TOD_DAWN=0. // real bj_TOD_DUSK=0. // real bj_STOCK_RESTOCK_INITIAL_DELAY=0. // real bj_STOCK_RESTOCK_INTERVAL=0. // integer bj_STOCK_MAX_ITERATIONS=0 // real bj_RESCUE_PING_TIME=0. // integer bj_MAX_QUEUED_TRIGGERS=0 // real bj_QUEUED_TRIGGER_TIMEOUT=0. // integer bj_CINEFADETYPE_FADEIN=0 // integer bj_CINEFADETYPE_FADEOUT=0 // integer bj_CINEFADETYPE_FADEOUTIN=0 // real bj_CORPSE_MAX_DEATH_TIME=0. // force bj_FORCE_ALL_PLAYERS=null // rect bj_mapInitialPlayableArea=null // timer bj_gameStartedTimer=null // trigger bj_dncSoundsDay=null // trigger bj_dncSoundsNight=null // sound bj_dayAmbientSound=null // sound bj_nightAmbientSound=null // trigger bj_dncSoundsDawn=null // trigger bj_dncSoundsDusk=null // sound bj_dawnSound=null // sound bj_duskSound=null // boolean bj_useDawnDuskSounds=false // boolean bj_dncIsDaytime=false // sound bj_rescueSound=null // trigger bj_stockItemPurchased=null // timer bj_stockUpdateTimer=null // integer bj_stockPickedItemLevel=0 // itemtype bj_stockPickedItemType=null // trigger bj_rescueUnitBehavior=null // boolean bj_rescueChangeColorUnit=false // boolean bj_rescueChangeColorBldg=false // timer bj_cineFadeFinishTimer=null // timer bj_cineFadeContinueTimer=null // real bj_cineFadeContinueRed=0. // real bj_cineFadeContinueGreen=0. // real bj_cineFadeContinueBlue=0. // real bj_cineFadeContinueTrans=0. // real bj_cineFadeContinueDuration=0. // string bj_cineFadeContinueTex=null // integer bj_queuedExecTotal=0 // timer bj_queuedExecTimeoutTimer=null // trigger bj_queuedExecTimeout=null // integer bj_groupEnumTypeId=0 // player bj_groupEnumOwningPlayer=null // location bj_enumDestructableCenter=null // real bj_enumDestructableRadius=0. // group bj_suspendDecayFleshGroup=null // group bj_suspendDecayBoneGroup=null // timer bj_delayedSuspendDecayTimer=null // trigger bj_delayedSuspendDecayTrig=null // integer bj_livingPlayerUnitsTypeId=0 rect gg_rct_Choose=null rect gg_rct_Region_002=null rect gg_rct_Region_014=null rect gg_rct_Region_015=null rect gg_rct_Region_000=null rect gg_rct_Region_001=null rect gg_rct_Region_003=null rect gg_rct_Region_004=null rect gg_rct_Region_005=null rect gg_rct_Region_006=null rect gg_rct_Region_007=null rect gg_rct_Region_008=null rect gg_rct_Region_009=null rect gg_rct_Region_010=null rect gg_rct_Region_011=null rect gg_rct_Region_012=null rect gg_rct_Region_013=null rect gg_rct_Region_016=null rect gg_rct_Region_017=null rect gg_rct_Region_018=null rect gg_rct_Region_024=null rect gg_rct_Region_026=null rect gg_rct_Start=null rect gg_rct_Region_023=null rect gg_rct_coingamearea=null rect gg_rct_spaceygamearea=null rect gg_rct_coingamebounds=null rect gg_rct_spaceygamebounds=null rect gg_rct_slidegamearea=null rect gg_rct_slidegamebounds=null rect gg_rct_slidegamespawn=null rect gg_rct_Region_027=null rect gg_rct_agargamearea=null rect gg_rct_agargamefoodspawn=null rect gg_rct_agargamebounds=null camerasetup gg_cam_Camera_001=null camerasetup gg_cam_BuilderSetupCam=null camerasetup gg_cam_BuilderBuilderCam=null camerasetup gg_cam_BlackCam=null camerasetup gg_cam_StdCam=null camerasetup gg_cam_BuilderTilesCam=null camerasetup gg_cam_spaceycam=null sound gg_snd_ArrangedTeamInvitation=null trigger gg_trg_Untitled_Trigger_005=null unit gg_unit_revp_0002=null unit gg_unit_arca_0050=null unit gg_unit_airk_0149=null unit gg_unit_tele_0150=null unit gg_unit_dor2_0011=null unit gg_unit_sick_0014=null unit gg_unit_bisk_0018=null unit gg_unit_bisk_0020=null unit gg_unit_tele_0324=null unit gg_unit_tele_0323=null unit gg_unit_revp_0322=null unit gg_unit_unre_0118=null unit gg_unit_revp_0059=null unit gg_unit_tele_0061=null unit gg_unit_fnt2_0067=null unit gg_unit_glve_0160=null unit gg_unit_bsak_0080=null unit gg_unit_bsak_0081=null unit gg_unit_revp_0085=null unit gg_unit_dor2_0087=null unit gg_unit_glve_0159=null unit gg_unit_glve_0158=null unit gg_unit_glve_0156=null unit gg_unit_bsak_0104=null unit gg_unit_sgrk_0153=null unit gg_unit_jump_0152=null unit gg_unit_jump_0151=null unit gg_unit_ssak_0120=null unit gg_unit_ssak_0121=null unit gg_unit_ssak_0122=null unit gg_unit_ssak_0123=null unit gg_unit_ssak_0124=null unit gg_unit_ssak_0125=null unit gg_unit_bsak_0127=null unit gg_unit_bsak_0128=null unit gg_unit_bgrk_0145=null unit gg_unit_dor2_0136=null unit gg_unit_tele_0141=null unit gg_unit_sick_0012=null unit gg_unit_sick_0013=null unit gg_unit_bcik_0280=null unit gg_unit_scik_0278=null unit gg_unit_scik_0277=null unit gg_unit_scik_0276=null unit gg_unit_scik_0275=null unit gg_unit_scik_0274=null unit gg_unit_scik_0273=null unit gg_unit_scik_0272=null unit gg_unit_scik_0271=null unit gg_unit_scik_0270=null unit gg_unit_scik_0269=null unit gg_unit_scik_0268=null unit gg_unit_scik_0267=null unit gg_unit_bcik_0266=null unit gg_unit_scik_0263=null unit gg_unit_bcik_0262=null unit gg_unit_scik_0261=null unit gg_unit_scik_0260=null unit gg_unit_dims_0100=null unit gg_unit_uncr_0117=null unit gg_unit_wayp_0116=null unit gg_unit_tele_0234=null unit gg_unit_dor2_0023=null unit gg_unit_scik_0210=null unit gg_unit_scik_0211=null unit gg_unit_scik_0213=null unit gg_unit_scik_0214=null unit gg_unit_scik_0215=null unit gg_unit_scik_0216=null unit gg_unit_scik_0217=null unit gg_unit_scik_0218=null unit gg_unit_scik_0219=null unit gg_unit_bcik_0220=null unit gg_unit_scik_0221=null unit gg_unit_scik_0222=null unit gg_unit_bcik_0225=null unit gg_unit_revp_0226=null unit gg_unit_revp_0022=null unit gg_unit_sick_0036=null unit gg_unit_wayp_0114=null unit gg_unit_knck_0033=null unit gg_unit_knck_0034=null unit gg_unit_tele_0044=null unit gg_unit_sgrk_0038=null unit gg_unit_sgrk_0039=null unit gg_unit_fnt2_0065=null unit gg_unit_spnr_0162=null unit gg_unit_knck_0053=null unit gg_unit_knck_0054=null unit gg_unit_tele_0058=null unit gg_unit_tele_0063=null unit gg_unit_tele_0115=null unit gg_unit_tele_0143=null unit gg_unit_fnt2_0074=null unit gg_unit_wayp_0066=null unit gg_unit_wayp_0068=null unit gg_unit_wayp_0078=null unit gg_unit_wayp_0099=null unit gg_unit_wayp_0101=null unit gg_unit_wayp_0102=null unit gg_unit_exec_0076=null unit gg_unit_spnr_0129=null unit gg_unit_spnr_0130=null unit gg_unit_spnr_0147=null unit gg_unit_spnr_0157=null unit gg_unit_spnr_0161=null rect gg_rct_warlockgamearea=null rect gg_rct_warlockgamebounds=null string Abilities_aIamTarget=null string Abilities_ancestralSpiritCaster=null string Abilities_ancientProtectorMissile=null string Abilities_aneuCaster=null string Abilities_blinkCaster=null string Abilities_blinkTarget=null string Abilities_boltImpact=null string Abilities_charmTarget=null string Abilities_creepSleepTarget=null string Abilities_demolisherMissile=null string Abilities_dispelMagicTarget=null string Abilities_faerieDragonMissile=null string Abilities_fireBallMissile=null string Abilities_flameStrikeEmbers=null string Abilities_frostNovaTarget=null string Abilities_generalAuraTarget=null string Abilities_greenDragonMissile=null string Abilities_healTarget=null string Abilities_innerFireTarget=null string Abilities_makuraMissile=null string Abilities_manaBurnTarget=null string Abilities_manaFlareBoltImpact=null string Abilities_poisonStingTarget=null string Abilities_polyMorphTarget=null string Abilities_rockBoltMissile=null string Abilities_silenceTarget=null string Abilities_sleepTarget=null string Abilities_spellBreakerAttack=null string Abilities_spellShieldCaster=null string Abilities_vengeanceMissile=null string Abilities_warStompCaster=null integer AbilityIds_wander=0 integer AirPhysicsModule_MAX_MASS=0 real Angle_DEGTORAD=0. real Angle_RADTODEG=0. integer Arcanery_SILENCE_ID=0 integer Arcanery_SILENCE_BUFF_abilId=0 integer Arcanery_SILENCE_BUFF_buffId=0 integer Arcanery_SILENCE_MODE_ID=0 integer Arcanery_JUMP_MODE_ID=0 integer Arcanery_ORB_MODE_ID=0 integer Attackspeed_ATTACK_SPEED_RATE_POSITIVE_ID=0 integer Attackspeed_ATTACK_SPEED_RATE_NEGATIVE_ID=0 integer Attackspeed_ATTACK_SPEED_DUMMY_ID=0 integer Attackspeed_ATTACK_SPEED_INCREASE=0 integer Attackspeed_ATTACK_SPEED_DECREASE=0 string BaseObject_KEY_RALLY_X=null string BaseObject_KEY_RALLY_Y=null integer BasicSpells_BALL_SPELL_ID=0 integer BasicSpells_BALL_ITEM_ID=0 real Basics_ANIMATION_PERIOD=0. real Basics_MAX_COLLISION_SIZE=0. integer Basics_HEIGHT_ENABLER=0 integer Basics_LOCUST_ID=0 integer Basics_GHOST_INVIS_ID=0 integer Basics_GHOST_VIS_ID=0 player Basics_DUMMY_PLAYER=null integer BigNum_l_count=0 integer BigString_BIG_SUBSTRING_LEN=0 integer BigString_MAX_SUBSTRINGS=0 integer BitSet_BITSET_SIZE=0 integer array BitSet_pows integer array BitSet_reversePows integer Bomber_BOMBER_ID=0 integer Bomber_AUTOATTACK_ID=0 integer Bomber_ATTACK_ORDER=0 integer Bomber_ATTACK_GROUND_ORDER=0 integer Bomber_STOP_ORDER=0 integer Bomber_MOVE_ORDER=0 integer Bombertower_ATTACK_ORDER=0 integer Bombertower_ATTACK_GROUND_ORDER=0 integer Bombertower_STOP_ORDER=0 integer Booster_SPEED_UP_ID=0 integer Booster_SPEED_DOWN_ID=0 real Booster_EVENT_RADIUS=0. string Booster_BOOST_SPEED_KEY=null integer Boots_BOOTS_DUMMY_ID=0 integer BossDamager_DAMAGER_ID=0 integer BossDamager_DMG_INC_ID=0 integer BossDamager_DMG_DEC_ID=0 real BossDamager_EVENT_RADIUS=0. integer BossSpellTarget_SPELLTARGET_ID=0 integer BossSpellTarget_AOE_ID=0 integer BossSpellTarget_MISSILE_ID=0 integer BossSpellTarget_targets=0 real BossSpellTarget_MISSILE_RADIUS=0. real BossSpellTarget_MISSILE_SPEED=0. integer Boss_HP_UP_ID=0 integer Boss_HP_DOWN_ID=0 integer Boss_REAL_HP_BIG_ID=0 integer Boss_REAL_HP_SMALL_ID=0 integer Boss_AOE_SPELL_ID=0 integer Boss_MISSILE_SPELL_ID=0 integer Boss_REVIVE_ID=0 integer Boss_SUMMON_MINION_ID=0 integer Boss_MINION_SPAWN_SOUND=0 integer Boss_REVIVE_SOUND=0 real Buff_BUFF_ANIM_PERIOD=0. integer array Buff_buffMap integer Buff_LinkedListModule_first=0 integer Buff_LinkedListModule_last=0 integer Buff_LinkedListModule_size=0 integer BuilderConstants_TURN_ON_ID=0 integer BuilderConstants_TURN_OFF_ID=0 integer BuilderConstants_MAKE_UNIT_INVISIBLE_ID=0 integer BuilderConstants_MAKE_UNIT_VISIBLE_ID=0 integer BuilderConstants_REMOVE_OBJECT_ID=0 integer BuilderConstants_MODE_ESCAPERS_ID=0 integer BuilderConstants_MODE_KILLERS_ID=0 integer BuilderConstants_MODE_BOTH_ID=0 integer BuilderConstants_TELEPORTER_ID=0 integer BuilderConstants_WAYPOINT_ID=0 integer BuilderConstants_ARCANERY_ID=0 integer BuilderConstants_EXECUTER_ID=0 integer BuilderConstants_TC_BLOCKER_ID=0 integer BuilderConstants_UNIT_CREATOR_ID=0 integer BuilderConstants_UNIT_REMOVER_ID=0 integer BuilderConstants_REVIVE_POINT_ID=0 integer BuilderConstants_JUMPER_ID=0 integer BuilderConstants_TEXTER_ID=0 integer BuilderConstants_BOOSTER_ID=0 integer BuilderConstants_TRAP_ID=0 integer BuilderConstants_BOMB_TOWER_ID=0 integer BuilderConstants_CONGA_LINE_HEAD_ID=0 integer BuilderConstants_DOORDUMMY_ID=0 integer BuilderConstants_DOORORDER_ID=0 integer BuilderConstants_FOUNTAIN_BOTH_ID=0 integer BuilderConstants_FOUNTAIN_HEAL_ID=0 integer BuilderConstants_FOUNTAIN_CURE_ID=0 integer BuilderConstants_POWER_NODE_ID=0 integer BuilderConstants_SPINNER_ID=0 integer BuilderConstants_BUILD_TRACKS_ID=0 integer BuilderConstants_VORTEX_ID=0 integer BuilderConstants_PED_ID=0 integer BuilderConstants_VOLCANO_ID=0 integer BuilderConstants_HOR_WALL_ID=0 integer BuilderConstants_VER_WALL_ID=0 integer BuilderConstants_WALL_ID=0 integer BuilderConstants_TREE_DUMMY_ID=0 integer BuilderConstants_SOBS_DUMMY_ID=0 integer BuilderConstants_BOBS_DUMMY_ID=0 integer BuilderConstants_HOBS_DUMMY_ID=0 integer BuilderConstants_REMAINS_ID=0 integer BuilderConstants_FARM_ID=0 integer BuilderConstants_ICE_CRYSTAL_ID=0 integer BuilderConstants_OBELISK_ID=0 integer BuilderConstants_POISON_EGGS_ID=0 integer BuilderConstants_LANTERN_ID=0 integer BuilderConstants_MUSHROOM_ID=0 integer BuilderConstants_POST_LANTERN_ID=0 integer BuilderConstants_RUNE_ID=0 integer BuilderConstants_TORCH_ID=0 integer BuilderConstants_SUPERLIGHT_ID=0 integer BuilderConstants_SMALL_GRASS_KILLER_ID=0 integer BuilderConstants_SMALL_ICE_KILLER_ID=0 integer BuilderConstants_SMALL_CITADEL_KILLER_ID=0 integer BuilderConstants_SMALL_SAND_KILLER_ID=0 integer BuilderConstants_SMALL_SUNKEN_KILLER_ID=0 integer BuilderConstants_BIG_GRASS_KILLER_ID=0 integer BuilderConstants_BIG_ICE_KILLER_ID=0 integer BuilderConstants_BIG_CITADEL_KILLER_ID=0 integer BuilderConstants_BIG_SAND_KILLER_ID=0 integer BuilderConstants_BIG_SUNKEN_KILLER_ID=0 integer BuilderConstants_ESC_STRONG_ID=0 integer BuilderConstants_ESC_ICE_ID=0 integer BuilderConstants_ESC_FAST_ID=0 integer BuilderConstants_ESC_HOLY_ID=0 integer BuilderConstants_ESC_BLIND_ID=0 real BuilderConstants_hidden_x=0. real BuilderConstants_hidden_y=0. integer BuilderConstants_CONTROLLABLEICE=0 integer BuilderConstants_UNCONTROLLABLEICE=0 integer BuilderConstants_REVICE=0 integer BuilderConstants_LAVA=0 integer BuilderConstants_POISON=0 integer BuilderConstants_RUNES=0 integer BuilderConstants_MENU_2=0 integer BuilderConstants_MENU_3=0 integer BuilderConstants_MENU_BOSS=0 integer BuilderConstants_KEY_SPELL_ID=0 integer BuilderConstants_TOME_SPELL_ID=0 integer BuilderConstants_COIN_SPELL_ID=0 integer BuilderConstants_BOOTS_SPELL_ID=0 integer BuilderConstants_BM_BOSS_ID=0 integer BuilderConstants_BM_SPELLTARGET_ID=0 integer BuilderConstants_BM_DAMAGER_ID=0 integer BuilderConstants_BM_WEAPON_ID=0 integer BuilderConstants_TOME_ID=0 integer BuilderConstants_COIN_ID=0 integer BuilderConstants_BOOTS_ID=0 integer BuilderConstants_REGION_ADMIN_ID=0 integer array BuilderConstants_colorSpells integer Builder_BUILDER_CIRCLES_ID=0 integer Builder_MENU_CIRCLES_ID=0 integer Builder_MENU_OBJECTS_ID=0 integer Builder_MENU_ENVIROMENTALS_ID=0 integer Builder_MENU_DECORATIONS_ID=0 integer Builder_CHAOS_BUILDER_1=0 integer Builder_CHAOS_BUILDER_2=0 integer Builder_CHAOS_BUILDER_3=0 integer Builder_CHAOS_BUILDER_4=0 real Camerashakes_LOOP_PERIOD=0. real Camerashakes_SHAKE_REDUCE_FLAT=0. real Camerashakes_SHAKE_REDUCE_PERCENT=0. real Camerashakes_SHAKE_THRESHOLD=0. real Camerashakes_RICHTER_MAX=0. real Camerashakes_RICHTER_MIN=0. force Camerashakes_shakingPlayers=null real array Camerashakes_playerCurrentShake integer ChunkedString_DEFAULT_CHUNK_SIZE=0 playerevent ClosureEvents_EVENT_PLAYER_CHAT_FILTER=null trigger ClosureEvents_unitTrig=null trigger ClosureEvents_leaveTrig=null trigger ClosureEvents_keyTrig=null integer array ClosureEvents_eventidToIndex integer ClosureEvents_eventTypeCounter=0 integer EventListener_castMap=0 integer array EventListener_castMapCasters integer array EventListener_generalListenersFirsts integer array EventListener_unitListenersFirsts boolean EventListener_useMouseEvents=false boolean array ClosureEvents_config_fire group ClosureForGroups_DUMMY_GROUP=null integer array ClosureForGroups_tempCallbacks integer ClosureForGroups_tempCallbacksCount=0 integer ClosureForGroups_maxCount=0 integer ClosureForGroups_iterCount=0 filterfunc ClosureForGroups_filter=null integer ClosureTimers_x=0 integer Coin_COIN_DUMMY_ID=0 string array Colors_hexs integer Colors_decs=0 integer Colors_COLOR_WHITE_red=0 integer Colors_COLOR_WHITE_green=0 integer Colors_COLOR_WHITE_blue=0 integer Colors_COLOR_WHITE_alpha=0 integer Colors_COLOR_BLACK_red=0 integer Colors_COLOR_BLACK_green=0 integer Colors_COLOR_BLACK_blue=0 integer Colors_COLOR_BLACK_alpha=0 integer Colors_COLOR_GOLD_red=0 integer Colors_COLOR_GOLD_green=0 integer Colors_COLOR_GOLD_blue=0 integer Colors_COLOR_GOLD_alpha=0 integer Colors_MAX_PLAYER_COLORS=0 integer array Colors_PLAYER_COLORS_red integer array Colors_PLAYER_COLORS_green integer array Colors_PLAYER_COLORS_blue string array Colors_PLAYER_COLOR_NAMES integer CongaObjects_ADD_ID=0 integer CongaObjects_INC_ID=0 integer CongaObjects_DEC_ID=0 integer CongaObjects_CONGA_STRICT_ID=0 integer CongaObjects_CONGA_LOOSE_ID=0 integer CongaObjects_CONGA_CONFIG_ID=0 integer CustomBar_DEFAULT_BACKGROUND=0 integer CustomBar_DEFAULT_FOREGROUND=0 integer array CustomBar_bars integer CustomBar_count=0 timer CustomBar_animationTimer=null boolean DamageEvent_DETECT_NATIVE_ABILITIES=false integer DamageEvent_DAMAGE_ELEMENT_ATTACK=0 integer DamageEvent_nextDamageId=0 integer DamageEvent_nextDamageType=0 integer DamageEvent_nextDamageElement=0 boolean DamageEvent_abort=false integer array DamageEvent_firstListeners integer DamageEvent_maxPriority=0 integer array DamageEvent_firstUnreducedListeners integer DamageEvent_maxUnreducedPriority=0 integer DamageInstance_current=0 integer array DamageInstance_stack integer DamageInstance_count=0 multiboard DebugInfo_mb=null integer DebugInfo_rows=0 integer DebugInfo_columns=0 integer DebugInfo_seconds=0 integer DebugInfo_eventCallbacksPerSecond=0 integer DebugInfo_totalEventCallbacks=0 integer DebugInfo_allocationsPerSecond=0 integer DebugInfo_totalAllocations=0 boolean DebugInfo_isFirst=false integer Decoration_CHANGE_FACE_ID=0 integer Decoration_INC_SCALE=0 integer Decoration_DEC_SCALE=0 string Decoration_KEY_SCALE=null string Decoration_KEY_ANGLE=null string Doodads_shimmeringPortal=null integer Door_DOORPATH=0 integer Door_DOORPATH_O=0 integer Door_DOOROPEN_ABILITY_ID=0 integer Door_DOORTURN_ABILITY_ID=0 real Door_EVENT_RADIUS=0. integer array Door_KEY_COLOR_ID string Door_KEY_COLOR=null string Door_KEY_ROTATION=null integer DummyRecycler_DUMMY_UNIT_ID=0 integer DummyRecycler_ROOT_ENABLER=0 integer DummyRecycler_DIFFERENT_ANGLES=0 real DummyRecycler_ANGLE_DEGREE=0. integer DummyRecycler_SAVED_UNITS_PER_ANGLE=0 integer array DummyRecycler_angleQueues integer Encoder_maxHash=0 integer EntityManagement_activeItr=0 integer EntityManagement_buffItr=0 string Entity_KEY_X=null string Entity_KEY_Y=null string Entity_KEY_Z=null string Entity_KEY_TYPE=null real Entity_serializeOrigin_x=0. real Entity_serializeOrigin_y=0. real Entity_serializeOrigin_z=0. integer array Entity_entities integer Entity_DupletListModule_firstActive=0 integer Entity_DupletListModule_lastActive=0 integer Entity_DupletListModule_firstInactive=0 integer Entity_DupletListModule_lastInactive=0 integer Entity_DupletListModule_activeSize=0 integer Entity_DupletListModule_inactiveSize=0 integer ErrorHandling_MUTE_ERROR_DURATION=0 integer ErrorHandling_PRIMARY_ERROR_KEY=0 hashtable ErrorHandling_HT=null string ErrorHandling_lastError=null boolean ErrorHandling_suppressErrorMessages=false integer EscaperClasses_REINCARNATION_ID=0 integer EscaperClasses_PORTAL_CREATE_ID=0 integer EscaperClasses_SPEEDWAVE_ID=0 integer EscaperClasses_STAGNANCYSHIELD_ID=0 integer EscaperClasses_SLOWWAVE_ID=0 integer EscaperClasses_TEMP_REV_ID=0 integer EscaperClasses_INNER_STRENGTH_ID=0 integer EscaperClasses_FIRE_RESISTANCE=0 integer Portal_Sensor_sensorListeners=0 real EscaperKillers_COLL_SIZE_SK=0. real EscaperKillers_COLL_SIZE_BK=0. real EscaperKillers_COLL_SIZE_SRK=0. real EscaperKillers_COLL_SIZE_BRK=0. real EscaperKillers_COLL_SIZE_TANK=0. real EscaperKillers_COLL_SIZE_GLAIVE=0. real EscaperKillers_COLL_SIZE_AIR_Z=0. real EscaperKillers_COLL_SIZE_AIR_XY=0. real EscaperKillers_COLL_SIZE_FIRE=0. integer EscaperKillers_SMALL_RANDOM_KILLER_ID=0 integer EscaperKillers_BIG_RANDOM_KILLER_ID=0 integer EscaperKillers_GLAIVE_KILLER_ID=0 integer EscaperKillers_TANK_KILLER_ID=0 integer EscaperKillers_FIRE_KILLER_ID=0 integer EscaperKillers_AIR_KILLER_ID=0 integer EscaperObjects_HP_GAIN_50=0 integer EscaperObjects_HP_GAIN_75=0 integer EscaperObjects_HP_GAIN_100=0 integer EscaperObjects_TOMB_DUMMY_ID=0 integer EscaperSensorSetup_Sensor_sensorListeners=0 real Escaper_SLIDE_ADD=0. integer Escaper_ANK_ITEM_ID=0 integer Escaper_TELEPORT_ITEM_ID=0 integer Escaper_JUMP_SPELL=0 integer Escaper_ORB_SPELL=0 integer Escaper_JAUNT_SPELL=0 string Escaper_POISON_EFFECT=null string Escaper_LAVA_EFFECT=null integer Escaper_escapers=0 real Escaper_currentRevivepoint_x=0. real Escaper_currentRevivepoint_y=0. integer EventHelper_rectMap=0 integer EventHelper_regionMap=0 integer EventHelper_triggerData=0 force Execute_executeForce=null boolean array Execute_tempCallbacksSuccess integer array Execute_tempCallbacks integer Execute_tempCallbacksCount=0 integer Executer_LEVER_DUMMY_ID=0 integer Executer_PLATE_DUMMY_ID=0 real Executer_EVENT_RADIUS=0. integer Executer_ONESHOT_ABIL=0 integer Executer_REPEATING_ABIL=0 integer Executer_LEVER_ABIL=0 integer Executer_PRESSURE_ABIL=0 integer Executer_REACTIVATE_ABIL=0 integer Executer_TERRAIN_CHANGE_ABIL=0 integer Executer_TERRAIN_WALKABLE_ABIL=0 integer Executer_TERRAIN_UNWALKABLE_ABIL=0 integer Executer_TERRAIN_ICE_ABIL=0 integer Executer_TERRAIN_UNICE_ABIL=0 integer Executer_TERRAIN_REVICE_ABIL=0 integer Executer_TERRAIN_W_O_ABIL=0 integer Executer_TERRAIN_UW_O_ABIL=0 integer Executer_TERRAIN_I_O_ABIL=0 integer Executer_TERRAIN_UI_O_ABIL=0 integer Executer_TERRAIN_RI_O_ABIL=0 integer Executer_TERRAIN_INCREASE_H_ABIL=0 integer Executer_TERRAIN_INCREASE_V_ABIL=0 integer Executer_TERRAIN_DECREASE_H_ABIL=0 integer Executer_TERRAIN_DECREASE_V_ABIL=0 integer Executer_TERRAIN_BOOK_ABIL=0 integer Executer_TERRAIN_ANTIBOOK_ABIL=0 integer Executer_DOOR_OPEN_ABIL=0 integer Executer_DOOR_CLOSE_ABIL=0 integer Executer_DOOR_TOGGLE_ABIL=0 integer Executer_MOVE_UNIT_DIRECT_ABIL=0 integer Executer_MOVE_UNIT_PATROL_ABIL=0 integer Executer_MOVE_UNIT_STOP_ABIL=0 integer Executer_MOVE_UNIT_SELECT_ABIL=0 integer Executer_TRAIN_BOOK_ABIL=0 integer Executer_SPAWN_UNIT_ID=0 integer Executer_TRAIN_BK_ABIL=0 integer Executer_TRAIN_SK_ABIL=0 integer Executer_TRAIN_BRK_ABIL=0 integer Executer_TRAIN_SRK_ABIL=0 integer Executer_TRAIN_TANK_ABIL=0 integer Executer_TRAIN_GLAIVE_ABIL=0 integer Executer_TRAIN_POINTER_ABIL=0 integer Executer_TRAIN_KNOCK_ABIL=0 trigger Executer_executerUnitLeave=null trigger Executer_executerUnitEnter=null integer FText_recylcer=0 integer FText_LinkedListModule_first=0 integer FText_LinkedListModule_last=0 integer FText_LinkedListModule_size=0 real Faceless_KILL_RADIUS=0. integer Faceless_DIMENSION_SHIFTER_ID=0 integer Faceless_UP_VIS_ID=0 integer Faceless_DOWN_VIS_ID=0 integer Faceless_UP_INVIS_ID=0 integer Faceless_DOWN_INVIS_ID=0 integer FileIO_CHUNKS_PER_FILE=0 integer FileIO_FILE_IO_ABIL_ID=0 string FileIO_FILE_IO_ABIL_ID_STR=null string Fountain_EFFECT_ID=null framehandle Framehandle_GAME_UI=null real Framehandle_SCREEN_TOP_x=0. real Framehandle_SCREEN_TOP_y=0. real Framehandle_SCREEN_BOTTOM_x=0. real Framehandle_SCREEN_BOTTOM_y=0. integer Framehandle_BLZ_FRAMENAME_MAXLENGTH=0 boolean Frentity_DYNAMIC_Z=false boolean Frentity_KILL_ACTORS=false boolean Frentity_DISABLE_TEAMATTACK=false boolean Frentity_SHOW_SQUARE=false string GameConstants_MAP_VER=null player GameConstants_STAFF_PLAYER=null string array GameConstants_names string array GameConstants_tags integer array GameConstants_expBounds string array GameConstants_ranks integer GameStatus_gameStatus=0 timer GameTimer_gameTimer=null real GameTimer_currentTime=0. integer GlobalShop_GOODS_STORE_ID=0 integer GroupUtils_GROUP_NUMBER_LIMIT=0 integer GroupUtils_START_CREATE_GROUPS=0 integer GroupUtils_used=0 group array GroupUtils_stack integer GroupUtils_numStack=0 integer GroupUtils_numTotal=0 boolean GroupUtils_shownMaxError=false group Group_ENUM_GROUP=null group Group_iterGroup=null hashtable HashList_ht=null hashtable HashList_occurences=null hashtable HashSet_position=null integer array Heightmap_quads_id integer array Heightmap_quads_x integer array Heightmap_quads_y real array Heightmap_quads_botLeft_x real array Heightmap_quads_botLeft_y real array Heightmap_quads_z1 real array Heightmap_quads_z2 real array Heightmap_quads_z3 real array Heightmap_quads_z4 string Icons_bTNAnkh=null string Icons_bTNHuntress=null string Icons_bTNSelectHeroOn=null integer array InstantBuild_buildorders integer InstantDummyCaster_DUMMY_CASTER_UNIT_ID=0 integer InstantDummyCaster_DUMMY_ROOT_ABIL_ID=0 unit InstantDummyCaster_caster=null integer Integer_INT_MAX=0 integer Integer_INT_MIN=0 string JsonParser_numbermap=null string JsonParser_lettermap=null integer Json_JSON_SIGN_COMMA=0 integer Json_JSON_OPEN_ARRAY=0 integer Json_JSON_CLOSE_ARRAY=0 integer JukeBox_jukeBox=0 integer JukeBox_musics=0 integer Jumper_DECREASE_FORCE_ID=0 integer Jumper_INCREASE_FORCE_ID=0 integer Jumper_MODE_FORCED_ID=0 integer Jumper_MODE_UNFORCED_ID=0 string Jumper_EFFECT_STRING=null integer Jumper_SPECIAL_ID=0 integer Jumper_snd=0 boolean array KeyUtils_keyStatuses_up boolean array KeyUtils_keyStatuses_down boolean array KeyUtils_keyStatuses_left boolean array KeyUtils_keyStatuses_right integer KeyUtils_firstKeyListener=0 integer Key_KEY_DUMMY_ID=0 integer array Key_keyIds integer Key_DYN_ID=0 integer Key_STATIC_ID=0 integer Key_INFINITE_ID=0 string Key_KEY_COLOR=null integer Knockbacker_KNOCKBACKER_ID=0 integer Knockbacker_KNOCK_INC_ID=0 integer Knockbacker_KNOCK_DEC_ID=0 integer Knockbacker_DMG_INC_ID=0 integer Knockbacker_DMG_DEC_ID=0 integer LZW_maxDictSize=0 string LZW_DICT_INIT=null string LZW_ALLOWED_PLAYER_CHARS=null integer LZW_dictionary=0 integer LZW_dictSize=0 string LobbyTeleporter_EFFECT_STRING=null integer LobbyTeleporter_ESC_ID=0 real LobbyTeleporter_EVENT_RADIUS=0. real MGAgar_RIGHT_SPOT_x=0. real MGAgar_RIGHT_SPOT_y=0. integer MGAgar_map=0 real MGSlide_LEFT_SPOT_x=0. real MGSlide_LEFT_SPOT_y=0. real MGSlide_RIGHT_SPOT_x=0. real MGSlide_RIGHT_SPOT_y=0. real MGSpacey_ARENA_POS_x=0. real MGSpacey_ARENA_POS_y=0. integer MGSpacey_minigame=0 integer MGSpacey_SHIP_ID=0 integer MGSpacey_ships=0 integer MGSpacey_rocks=0 real MGWarlock_ARENA_POS_x=0. real MGWarlock_ARENA_POS_y=0. integer MGWarlock_minigame=0 integer MGWarlock_WARLOCK_ID=0 integer MGWarlock_FIREBALL_ID=0 integer MGWarlock_warlocks=0 boolean MagicFunctions_compiletime=false rect MapBounds_playableMapRect=null rect MapBounds_boundRect=null region MapBounds_boundRegion=null real MapBounds_playableMin_x=0. real MapBounds_playableMin_y=0. real MapBounds_playableMax_x=0. real MapBounds_playableMax_y=0. real MapBounds_boundMin_x=0. real MapBounds_boundMin_y=0. real MapBounds_boundMax_x=0. real MapBounds_boundMax_y=0. real Maths_PI=0. real Matrices_ZERO44_m00=0. real Matrices_ZERO44_m01=0. real Matrices_ZERO44_m02=0. real Matrices_ZERO44_m03=0. real Matrices_ZERO44_m10=0. real Matrices_ZERO44_m11=0. real Matrices_ZERO44_m12=0. real Matrices_ZERO44_m13=0. real Matrices_ZERO44_m20=0. real Matrices_ZERO44_m21=0. real Matrices_ZERO44_m22=0. real Matrices_ZERO44_m23=0. real Matrices_ZERO44_m30=0. real Matrices_ZERO44_m31=0. real Matrices_ZERO44_m32=0. real Matrices_ZERO44_m33=0. integer MinigameTeleporter_ESC_ID=0 integer MinigameTeleporter_MINI_TP=0 real MinigameTeleporter_EVENT_RADIUS=0. integer Minigame_minigames=0 integer Minigame_minigames_live=0 real Minigame_MAX_TIME=0. integer Minigame_BEGIN_SOUND=0 real Minion_COLL_SIZE_MINION=0. real Minion_ATTACK_DISTANCE=0. real Minion_ATTACK_RANGE=0. real Minion_ATTACK_DAMAGE=0. real Minion_FOLLOW_RANGE=0. integer MoveSpeed_INC_SPEED_ID=0 integer MoveSpeed_DEC_SPEED_ID=0 integer MultiboardClass_counter=0 string ObjectIds_CHARMAP=null integer ObjectTarget_OBJECT_TARGET_ID=0 string Objects_impaleTargetDust=null string Objects_questionMark1=null integer ObstacleObjects_SOBS_CITADEL_ID=0 integer ObstacleObjects_BOBS_CITADEL_ID=0 integer ObstacleObjects_HOBS_CITADEL_ID=0 integer ObstacleObjects_SOBS_ICE_ID=0 integer ObstacleObjects_BOBS_ICE_ID=0 integer ObstacleObjects_HOBS_ICE_ID=0 integer ObstacleObjects_SOBS_GRASS_ID=0 integer ObstacleObjects_BOBS_GRASS_ID=0 integer ObstacleObjects_HOBS_GRASS_ID=0 integer ObstacleObjects_SOBS_DESERT_ID=0 integer ObstacleObjects_BOBS_DESERT_ID=0 integer ObstacleObjects_HOBS_DESERT_ID=0 integer ObstacleObjects_SOBS_SUNKEN_ID=0 integer ObstacleObjects_BOBS_SUNKEN_ID=0 integer ObstacleObjects_HOBS_SUNKEN_ID=0 real Obstacle_EVENT_RADIUS_SMALL=0. real Obstacle_EVENT_RADIUS_BIG=0. real Obstacle_EVENT_RADIUS_HIGH=0. real Obstacle_EVENT_HEIGHT_HIGH=0. real Obstacle_EVENT_RADIUS_V=0. trigger OnUnitEnterLeave_eventTrigger=null group OnUnitEnterLeave_preplacedUnits=null unit array OnUnitEnterLeave_tempUnits integer OnUnitEnterLeave_tempUnitsCount=0 integer OnUnitEnterLeave_ABILITY_ID=0 integer OrderIds_patrol=0 integer OrderIds_soulburn=0 integer OrderIds_undefend=0 real PedestalObjects_AOE_PICK_RANGE=0. integer PedestalObjects_SELECT_SINGLE_ID=0 integer PedestalObjects_SELECT_AOE_ID=0 integer PedestalObjects_SELECT_AOE_TILE_ID=0 integer PedestalObjects_SELECT_TILE_ID=0 integer PedestalObjects_SAVE1_ID=0 integer PedestalObjects_SAVE2_ID=0 integer PedestalObjects_SAVE3_ID=0 integer PedestalObjects_SAVE4_ID=0 integer PedestalObjects_LOAD1_ID=0 integer PedestalObjects_LOAD2_ID=0 integer PedestalObjects_LOAD3_ID=0 integer PedestalObjects_LOAD4_ID=0 string MemoryAccessPedestal_ENTITIES_KEY=null string MemoryAccessPedestal_TILES_KEY=null integer array MemoryAccessPedestal_lastRef real PhysicsConstants_defaultGravity=0. integer array PickSystem_currentView real PickSystem_START_x=0. real PickSystem_START_y=0. real PickSystem_PICK_x=0. real PickSystem_PICK_y=0. real PickSystem_PICK_z=0. integer PickSystem_BLINK_ID=0 integer PickSystem_PICK_DUMMY_ID=0 integer PickSystem_PREV_ID=0 integer PickSystem_NEXT_ID=0 integer PickSystem_PICK_ID=0 boolean PickSystem_hastStartedYet=false integer EscaperDefinition_LinkedListModule_first=0 integer EscaperDefinition_LinkedListModule_last=0 integer EscaperDefinition_LinkedListModule_size=0 integer PlayerData_playerboard=0 integer array PlayerData_pData integer PlayerData_allPlayers=0 integer PlayerData_escaperPlayers=0 integer PlayerData_builderPlayers=0 integer PlayerData_questFailedSound=0 integer PlayerData_minutes=0 integer PlayerData_seconds=0 player array Player_players player Player_localPlayer=null playercolor Playercolor_PLAYER_COLOR_BLACK_AGGRESSIVE=null playercolor Playercolor_PLAYER_COLOR_UNKNOWN1=null playercolor Playercolor_PLAYER_COLOR_UNKNOWN2=null playercolor Playercolor_PLAYER_COLOR_BLACK_PASSIVE=null playercolor array Playercolor_LOOKUP integer Players_ALL_PLAYERS=0 integer Players_onLeaveListener=0 integer Pointer_POINTER_ID=0 real Pointer_POINTER_RADIUS=0. integer Pointer_INC_ID=0 integer Pointer_DEC_ID=0 integer Pointer_START_ID=0 integer Pointer_STOP_ID=0 string Powernode_EFFECT_STRING=null string Powernode_EFFECT_BOUNCE_STRING=null string Powernode_EFFECT_DIODE_STRING=null string Powernode_EFFECT_TETHER_BOTH_STRING=null string Powernode_EFFECT_TETHER_AIR_STRING=null string Powernode_EFFECT_ORB_STRING=null string Powernode_KILL_EFFECT=null real Powernode_ACTIVATION_DIST=0. integer Powernode_INCREASE_BOUNCE_ID=0 integer Powernode_DECREASE_BOUNCE_ID=0 integer Powernode_LINK_B_GROUND_ID=0 integer Powernode_LINK_B_AIR_ID=0 integer Powernode_LINK_B_BOTH_ID=0 integer Powernode_LINK_KILL_ID=0 integer Powernode_LINK_SPELLBOOK_ID=0 integer Powernode_LINK_DIODE_GROUND_ID=0 integer Powernode_LINK_ORB_ID=0 boolean Preloader_autoFinish=false group Preloader_dumg=null unit Preloader_dum=null real Printing_DEBUG_MSG_DURATION=0. integer Printing_config_DEBUG_LEVEL=0 real Quaternion_IDENTITYQ_x=0. real Quaternion_IDENTITYQ_y=0. real Quaternion_IDENTITYQ_z=0. real Quaternion_IDENTITYQ_w=0. real Quaternion_EPSILON=0. real Real_REAL_MAX=0. real Real_REAL_MIN=0. real RegionData_LOUNGE_x=0. real RegionData_LOUNGE_y=0. integer RegionData_regionMap=0 real RegionData_x=0. real RegionData_y=0. integer array RegionData_currentRegion integer array RegionData_regions integer RegionData_EMPTY_REGION=0 trigger array RegisterEvents_t integer RegisterEvents_onCastMap=0 real ReviveManager_TIMER_PERIOD=0. integer ReviveManager_waitForListener=0 integer ReviveManager_revMode=0 integer array ReviveManager_pods integer ReviveManager_waitForCount=0 integer RevivePointModifier_REV_MODIFIER_DUMMY_ID=0 integer RevivePointModifier_CREATE_REV_MOD_ID=0 integer RevivePointModifier_REMOVE_REV_MOD_ID=0 real Revivepoint_EVENT_RADIUS=0. integer Revivepoint_rescueSound=0 integer Revivepoint_currentRevive=0 boolean SafetyChecks_SAFETY_CHECKS_ENABLED=false boolean SaveLoadData_READ_FILES_IN_REPLAYS=false integer SerializeIds_JUMPER_INDEX=0 integer SerializeIds_REVIVE_INDEX=0 integer SerializeIds_TEXTER_INDEX=0 integer SerializeIds_BOMBTOWER_INDEX=0 integer SerializeIds_VORTEX_INDEX=0 integer SerializeIds_EXECUTER_INDEX=0 integer SerializeIds_BOOSTER_INDEX=0 integer SerializeIds_UNITREMOVER_INDEX=0 integer SerializeIds_WAYPOINT_INDEX=0 integer SerializeIds_TELEPORTER_INDEX=0 integer SerializeIds_DOOR_INDEX=0 integer SerializeIds_SMALLOBS_INDEX=0 integer SerializeIds_BIGOBS_INDEX=0 integer SerializeIds_TREE_INDEX=0 integer SerializeIds_SPINNER_INDEX=0 integer SerializeIds_UNITCREATOR_INDEX=0 integer SerializeIds_TRACKS_INDEX=0 integer SerializeIds_FOUNTAIN_INDEX=0 integer SerializeIds_POWERNODE_INDEX=0 integer SerializeIds_TRAP_INDEX=0 integer SerializeIds_CONGA_INDEX=0 integer SerializeIds_TBLOCKER_INDEX=0 integer SerializeIds_VOLCANO_INDEX=0 integer SerializeIds_WALL_INDEX=0 integer SerializeIds_HWALL_INDEX=0 integer SerializeIds_VWALL_INDEX=0 integer SerializeIds_ARCANERY_INDEX=0 integer SerializeIds_SMALLKILL_INDEX=0 integer SerializeIds_BIGKILL_INDEX=0 integer SerializeIds_BOMBER_INDEX=0 integer SerializeIds_KEY_INDEX=0 integer SerializeIds_BIGRANDKILL_INDEX=0 integer SerializeIds_SMALLRANDKILL_INDEX=0 integer SerializeIds_TANKKILL_INDEX=0 integer SerializeIds_GLAIVEKILL_INDEX=0 integer SerializeIds_AIRKILL_INDEX=0 integer SerializeIds_FIREKILL_INDEX=0 integer SerializeIds_FACELESS_INDEX=0 integer SerializeIds_KNOCKBACKER_INDEX=0 integer SerializeIds_POINTER_INDEX=0 integer SerializeIds_OBJ_TARGET_INDEX=0 integer SerializeIds_TC_INDEX=0 integer SerializeIds_HIGH_OBS_INDEX=0 integer SerializeIds_COIN_INDEX=0 integer SerializeIds_TOME_INDEX=0 integer SerializeIds_BOOTS_INDEX=0 integer SetupBox_SETUP_BOX_ID=0 integer SetupBox_EASY_ENABLE=0 integer SetupBox_EASY_DISABLE=0 integer SetupBox_ICEI_ID=0 integer SetupBox_ICED_ID=0 integer SetupBox_PI_ID=0 integer SetupBox_PD_ID=0 integer SetupBox_LI_ID=0 integer SetupBox_LD_ID=0 integer SetupBox_TURND_ID=0 integer SetupBox_TURNI_ID=0 integer SetupBox_ALLOW_ID=0 integer SetupBox_CLEAR_ID=0 integer SetupBox_BOSS_MODE_ID=0 integer SetupBox_JUMP_TOGGLE_ID=0 integer SetupBox_JUMP_SPELL_ID=0 integer SetupBox_FIRST_PAGE=0 integer SetupBox_SECOND_PAGE=0 integer SetupBox_INC_GRAVITY=0 integer SetupBox_DEC_GRAVITY=0 integer SetupBox_ABIL_WIZARD=0 integer SetupBox_ORB_TOGGLE_ID=0 integer SetupBox_ORB_SPELL_ID=0 integer SetupBox_CANCEL_TOGGLE_ID=0 integer SetupBox_CUT_ALLOW=0 integer SetupBox_CUT_DISABLE=0 real SetupBox_MAX_SLIDESPEED=0. real SetupBox_MAX_DOT_DMG=0. integer SetupBox_BOSS_SOUND=0 integer SetupObject_count=0 real array SetupObject_offsets_x real array SetupObject_offsets_y boolean SoundUtils_DEFAULT_SOUND_STOPS_ON_LEAVE_RANGE=false integer SoundUtils_DEFAULT_SOUND_FADE_IN_RATE=0 integer SoundUtils_DEFAULT_SOUND_FADE_OUT_RATE=0 string SoundUtils_DEFAULT_SOUND_EAX_SETTINGS=null integer SoundUtils_DEFAULT_SOUND_VOLUME=0 real SoundUtils_DEFAULT_SOUND_PITCH=0. integer SoundUtils_DEFAULT_SOUND_DURATION=0 integer SoundUtils_SOUND_CHANNEL=0 real SoundUtils_SOUND_MIN_DIST=0. real SoundUtils_SOUND_MAX_DIST=0. real SoundUtils_SOUND_DIST_CUT=0. string Sounds_arrangedTeamInvitation=null string Sounds_questFailed=null integer SpinnerObjects_SPIN_ADD_SINGLE_ID=0 integer SpinnerObjects_SPIN_ADD_GROUP_ID=0 integer SpinnerObjects_SPIN_INC_SPEED_ID=0 integer SpinnerObjects_SPIN_DEC_SPEED_ID=0 integer SpinnerObjects_SPIN_COS_INC_ID=0 integer SpinnerObjects_SPIN_COS_DEC_ID=0 integer SpinnerObjects_SPIN_SIN_INC_ID=0 integer SpinnerObjects_SPIN_SIN_DEC_ID=0 string array Squares_squares integer array Startmazes_startmazes integer Startmazes_currentMaze=0 integer Startmazes_svRev=0 string array StringUtils_c2s integer array StringUtils_s2c integer array StringUtils_width integer StringUtils_MAX_INDEX=0 integer StringUtils_DEFAULT_WIDTH=0 boolean String_ENABLE_MULTIBYTE_SUPPORT=false string String_charset=null string String_numberset=null string SyncSimple_DEFAULT_PREFIX=null string SyncSimple_LAST_CHUNK_PREFIX=null boolean SyncSimple_SYNC_IN_REPLAYS=false integer SyncSimple_syncQueue=0 hashtable Table_ht=null string Teleporter_EFFECT_STRING=null real Teleporter_EVENT_RADIUS=0. integer TerrainChanger_TERRAIN_CHANGER_ID=0 integer TerrainChanger_TERRAIN_O_WALKABLE_ID=0 integer TerrainChanger_TERRAIN_O_UNWALKABLE_ID=0 integer TerrainChanger_TERRAIN_O_ICE_ID=0 integer TerrainChanger_TERRAIN_O_UNICE_ID=0 integer TerrainChanger_TERRAIN_I_WALKABLE_ID=0 integer TerrainChanger_TERRAIN_I_UNWALKABLE_ID=0 integer TerrainChanger_TERRAIN_I_ICE_ID=0 integer TerrainChanger_TERRAIN_I_UNICE_ID=0 integer TerrainChanger_TERRAIN_INC_H_ID=0 integer TerrainChanger_TERRAIN_INC_V_ID=0 integer TerrainChanger_TERRAIN_DEC_H_ID=0 integer TerrainChanger_TERRAIN_DEC_V_ID=0 integer TerrainData_xCells=0 hashtable TerrainData_tileMap=null integer TerrainModder_WALKABLE_ID=0 integer TerrainModder_UNWALKABLE_ID=0 integer TerrainModder_SLIDEABLE_ICE_ID=0 integer TerrainModder_SLIDEABLE_UNC_ICE_ID=0 integer TerrainModder_ICE_ABILITY=0 integer TerrainModder_REVICE_ABILITY=0 integer array TerrainModder_UNWALKABLE_MOD_ABILITY_ID integer TerrainModder_BRUSH_1_IDLE_ABILITY=0 integer TerrainModder_BRUSH_1_ACTIVE_ABILITY=0 integer TerrainModder_BRUSH_3_IDLE_ABILITY=0 integer TerrainModder_BRUSH_3_ACTIVE_ABILITY=0 integer TerrainModder_BRUSH_5_IDLE_ABILITY=0 integer TerrainModder_BRUSH_5_ACTIVE_ABILITY=0 integer TerrainModder_BRUSH_CIRCLE_ID=0 integer TerrainModder_BRUSH_RECT_ID=0 real TerrainUtils_MAX_RANGE_SQ=0. integer TerrainUtils_DUMMY_ITEM_ID=0 item TerrainUtils_dummyItem=null rect TerrainUtils_itemSearchRect=null item array TerrainUtils_hiddenItems integer TerrainUtils_hiddenItemsCount=0 integer TerrainUtils_TILES_X=0 integer TerrainUtils_TILES_Y=0 real Texter_EVENT_RADIUS=0. string array Texter_stdcolors string Textures_black_mask=null timer array TimerUtils_freeTimers integer TimerUtils_freeTimersCount=0 integer TimerUtils_timerData=0 integer TimerUtils_HELD=0 integer Tome_TOME_DUMMY_ID=0 integer array Tracks_TRACKS integer Tracks_TRACKS_ID=0 integer Tracks_TRACKS_1_ID=0 integer Tracks_TRACKS_2_ID=0 integer Tracks_TRACKS_3_ID=0 integer Tracks_INC_ID=0 integer Tracks_DEC_ID=0 integer Tracks_LEFT_ID=0 integer Tracks_RIGHT_ID=0 integer Tracks_INCLENGTH_ID=0 integer Tracks_DECLENGTH_ID=0 integer Trap_DECREASE_DURATION_ID=0 integer Trap_INCREASE_DURATION_ID=0 integer Trap_DECREASE_INTERVAL_ID=0 integer Trap_INCREASE_INTERVAL_ID=0 integer Trap_DECREASE_VALUE_ID=0 integer Trap_INCREASE_VALUE_ID=0 integer Trap_POISON_ID=0 integer Trap_SHAKE_ID=0 integer Trap_SPEED_ID=0 integer Trap_INSTANT_KILL_ID=0 integer Trap_STUN_ID=0 integer Trap_KNOCKBACK_ID=0 integer Trap_KNOCKBACK_PULL_ID=0 integer Trap_KNOCKBACK_PUSH_ID=0 integer Trap_NEXT_EFFECT_ID=0 integer Trap_PREVIOUS_EFFECT_ID=0 integer Trap_START_ID=0 integer Trap_STOP_ID=0 real Trap_EVENT_RADIUS=0. integer Trap_SPECIAL_ID=0 integer Trap_STUN_BUFF=0 integer Trap_SPEED_BUFF_NEG=0 integer Trap_SPEED_BUFF_POS=0 integer Trap_SFX_COUNT=0 string array Trap_SFX_STRINGS integer Tree_TREE_ID=0 integer TypeCasting_typecastdata=0 real TypeCasting_R2I_PRECISION=0. string UI_confirmation=null string UI_goldCredit=null integer UnitIds_shade=0 trigger UnitIndexer_onIndexTrigger=null trigger UnitIndexer_onDeindexTrigger=null unit array UnitIndexer_tempUnits integer UnitIndexer_tempUnitsCount=0 integer UnitProducer_UNIT_PRODUCER_ID=0 integer UnitProducer_FIRST_PAGE=0 integer UnitProducer_SECOND_PAGE=0 integer UnitProducer_AIR_KILLER=0 integer UnitProducer_BIG_KILLER=0 integer UnitProducer_SMALL_KILLER=0 integer UnitProducer_BR_KILLER=0 integer UnitProducer_SR_KILLER=0 integer UnitProducer_TANK_KILLER=0 integer UnitProducer_OBJ_TARGET=0 integer UnitProducer_GLAIVE_KILLER=0 integer UnitProducer_T_CHANGER=0 integer UnitProducer_POINTER=0 integer UnitProducer_BOMBER=0 integer UnitProducer_KNOCKBACK=0 integer UnitProducer_FACELESS=0 integer UnitProducer_FIRE=0 integer Unitcreator_INCREASE_INTERVAL_ID=0 integer Unitcreator_DECREASE_INTERVAL_ID=0 integer Unitcreator_FIXED_ID=0 integer Unitcreator_RANDOM_ID=0 integer Unitcreator_UTYPE_TANK=0 integer Unitcreator_UTYPE_SK=0 integer Unitcreator_UTYPE_BK=0 integer Unitcreator_UTYPE_SRK=0 integer Unitcreator_UTYPE_BRK=0 integer Unitcreator_UTYPE_POINTER=0 integer Unitcreator_UTYPE_KNOCKER=0 integer Unitcreator_UTYPE_GLAIVE=0 string Unitcreator_KEY_SPAWN=null real Vectors_ZERO2_x=0. real Vectors_ZERO2_y=0. real Vectors_ZERO3_x=0. real Vectors_ZERO3_y=0. real Vectors_ZERO3_z=0. real Vectors_RIGHT_x=0. real Vectors_RIGHT_y=0. real Vectors_UP_x=0. real Vectors_UP_y=0. real Vectors_LEFT_x=0. real Vectors_LEFT_y=0. real Vectors_DOWN_x=0. real Vectors_DOWN_y=0. location Vectors_tempLoc=null integer Vortex_INC_GRAV_ID=0 integer Vortex_DEC_GRAV_ID=0 real Vortex_GRAV_RADIUS_BIG=0. real Vortex_GRAV_RADIUS_MEDIUM=0. real Vortex_GRAV_RADIUS_SMALL=0. integer Vortex_ZMODE_NONE=0 integer Vortex_ZMODE_CYLI=0 integer Vortex_ZMODE_HEMI=0 integer Vortex_SIZE_SMALL=0 integer Vortex_SIZE_MED=0 integer Vortex_SIZE_BIG=0 integer WaypointObjects_AND_CONNECTION_ID=0 integer WaypointObjects_CLEAR_CONNECTION_ID=0 integer WaypointObjects_DECREASE_DELAY_ID=0 integer WaypointObjects_INCREASE_DELAY_ID=0 integer WaypointObjects_NO_WISPS_ID=0 real Waypoint_INCREMENT=0. real Waypoint_EVENT_RADIUS=0. integer Weapon_ATTACK_MELEE=0 integer Weapon_ATTACK_RANGED=0 hashtable hashtable_compiletime=null hashtable hashtable_compiletime_2517=null hashtable hashtable_compiletime_2518=null hashtable hashtable_compiletime_2519=null hashtable hashtable_compiletime_2520=null integer array Serializable_nextFree integer Serializable_firstFree=0 integer Serializable_maxIndex=0 integer array Serializable_typeId integer array OnCastListener_nextFree integer OnCastListener_firstFree=0 integer OnCastListener_maxIndex=0 integer array OnCastListener_typeId integer array Buff_nextFree integer Buff_firstFree=0 integer Buff_maxIndex=0 integer array Buff_typeId integer array CallbackSingle_nextFree integer CallbackSingle_firstFree=0 integer CallbackSingle_maxIndex=0 integer array CallbackSingle_typeId integer array EventListener_nextFree integer EventListener_firstFree=0 integer EventListener_maxIndex=0 integer array EventListener_typeId integer array BigNum_nextFree integer BigNum_firstFree=0 integer BigNum_maxIndex=0 integer array BigNum_typeId integer array BigNum_l_nextFree integer BigNum_l_firstFree=0 integer BigNum_l_maxIndex=0 integer array BigNum_l_typeId integer array BigString_nextFree integer BigString_firstFree=0 integer BigString_maxIndex=0 integer array BigString_typeId integer array BigSubString_nextFree integer BigSubString_firstFree=0 integer BigSubString_maxIndex=0 integer array BigSubString_typeId integer array ForGroupCallback_nextFree integer ForGroupCallback_firstFree=0 integer ForGroupCallback_maxIndex=0 integer array ForGroupCallback_typeId integer array DamageListener_nextFree integer DamageListener_firstFree=0 integer DamageListener_maxIndex=0 integer array DamageListener_typeId integer array BackIterator_nextFree integer BackIterator_firstFree=0 integer BackIterator_maxIndex=0 integer array Iterator_nextFree_1043 integer Iterator_firstFree_1035=0 integer Iterator_maxIndex_1039=0 integer array Iterator_typeId_1047 integer array ChunkedString_nextFree integer ChunkedString_firstFree=0 integer ChunkedString_maxIndex=0 integer array ChunkedString_typeId integer array CallbackCounted_nextFree integer CallbackCounted_firstFree=0 integer CallbackCounted_maxIndex=0 integer array CallbackCounted_typeId integer Callback_firstFree=0 integer array Callback_typeId integer array CallbackPeriodic_nextFree integer CallbackPeriodic_firstFree=0 integer CallbackPeriodic_maxIndex=0 integer array CallbackPeriodic_typeId integer array CollisionShape_nextFree integer CollisionShape_firstFree=0 integer CollisionShape_maxIndex=0 integer array CollisionWorld_nextFree integer CollisionWorld_firstFree=0 integer CollisionWorld_maxIndex=0 integer array ConfigValue_nextFree integer ConfigValue_firstFree=0 integer ConfigValue_maxIndex=0 integer array ConfigValue_typeId integer array CongaSegment_nextFree integer CongaSegment_firstFree=0 integer CongaSegment_maxIndex=0 integer array CongaSegment_typeId integer array CustomBar_nextFree integer CustomBar_firstFree=0 integer CustomBar_maxIndex=0 integer array CustomBar_typeId integer array DamageElement_nextFree integer DamageElement_firstFree=0 integer DamageElement_maxIndex=0 integer array DamageInstance_nextFree integer DamageInstance_firstFree=0 integer DamageInstance_maxIndex=0 integer array DamageInstance_typeId integer array DummyDamage_nextFree integer DummyDamage_firstFree=0 integer DummyDamage_maxIndex=0 integer array DummyDamage_typeId integer array Encoder_nextFree integer Encoder_firstFree=0 integer Encoder_maxIndex=0 integer array Encoder_typeId integer array SeqCallback_nextFree integer SeqCallback_firstFree=0 integer SeqCallback_maxIndex=0 integer array SeqCallback_typeId integer array ForForceCallback_nextFree integer ForForceCallback_firstFree=0 integer ForForceCallback_maxIndex=0 integer array ForForceCallback_typeId integer array PayloadCallback_nextFree integer PayloadCallback_firstFree=0 integer PayloadCallback_maxIndex=0 integer array PayloadCallback_typeId integer array Iterator_nextFree integer Iterator_firstFree=0 integer Iterator_maxIndex=0 integer array Iterator_typeId integer array SensorListener_nextFree integer SensorListener_firstFree=0 integer SensorListener_maxIndex=0 integer array SensorListener_typeId integer array LinkedListPredicate_nextFree integer LinkedListPredicate_firstFree=0 integer LinkedListPredicate_maxIndex=0 integer array LinkedListPredicate_typeId integer array FText_nextFree integer FText_firstFree=0 integer FText_maxIndex=0 integer array FText_typeId integer array BackIterator_nextFree_79 integer BackIterator_firstFree_73=0 integer BackIterator_maxIndex_76=0 integer array Iterator_nextFree_1044 integer Iterator_firstFree_1036=0 integer Iterator_maxIndex_1040=0 integer array Iterator_typeId_1048 integer array File_nextFree integer File_firstFree=0 integer File_maxIndex=0 integer array File_typeId integer array Startmaze_nextFree integer Startmaze_firstFree=0 integer Startmaze_maxIndex=0 integer array Startmaze_typeId integer array Fx2_nextFree integer Fx2_firstFree=0 integer Fx2_maxIndex=0 integer array Fx2_typeId integer array Fx_nextFree integer Fx_firstFree=0 integer Fx_maxIndex=0 integer array Fx_typeId integer array GlobalShop_nextFree integer GlobalShop_firstFree=0 integer GlobalShop_maxIndex=0 integer array HLIterator_nextFree integer HLIterator_firstFree=0 integer HLIterator_maxIndex=0 integer array HLIterator_typeId integer array HLItrClosure_nextFree integer HLItrClosure_firstFree=0 integer HLItrClosure_maxIndex=0 integer array HLItrClosure_typeId integer array HashList_nextFree integer HashList_firstFree=0 integer HashList_maxIndex=0 integer array HashList_typeId integer array Table_nextFree integer Table_firstFree=0 integer Table_maxIndex=0 integer array Table_typeId integer array JsonParser_nextFree integer JsonParser_firstFree=0 integer JsonParser_maxIndex=0 integer array JsonParser_typeId integer array Json_nextFree integer Json_firstFree=0 integer Json_maxIndex=0 integer array Json_typeId integer array Property_nextFree integer Property_firstFree=0 integer Property_maxIndex=0 integer array Property_typeId integer array JukeBox_nextFree integer JukeBox_firstFree=0 integer JukeBox_maxIndex=0 integer array JukeBox_typeId integer array JukeRequest_nextFree integer JukeRequest_firstFree=0 integer JukeRequest_maxIndex=0 integer array JukeRequest_typeId integer array Music_nextFree integer Music_firstFree=0 integer Music_maxIndex=0 integer array Music_typeId integer array Goo_nextFree integer Goo_firstFree=0 integer Goo_maxIndex=0 integer array Goo_typeId integer array Comparator_nextFree integer Comparator_firstFree=0 integer Comparator_maxIndex=0 integer LLBackIterator_firstFree=0 integer array LLBackIterator_typeId integer array LLEntry_nextFree integer LLEntry_firstFree=0 integer LLEntry_maxIndex=0 integer array LLEntry_typeId integer array LLIterator_nextFree integer LLIterator_firstFree=0 integer LLIterator_maxIndex=0 integer array LLIterator_typeId integer array LLItrClosure_nextFree integer LLItrClosure_firstFree=0 integer LLItrClosure_maxIndex=0 integer array LLItrClosure_typeId integer array LinkedList_nextFree integer LinkedList_firstFree=0 integer LinkedList_maxIndex=0 integer array LinkedList_typeId integer array MapClosure_typeId integer array AgarData_nextFree integer AgarData_firstFree=0 integer AgarData_maxIndex=0 integer array Minigame_nextFree integer Minigame_firstFree=0 integer Minigame_maxIndex=0 integer array Minigame_typeId integer array ReviveListener_nextFree integer ReviveListener_firstFree=0 integer ReviveListener_maxIndex=0 integer array ReviveListener_typeId integer array Board_nextFree integer Board_firstFree=0 integer Board_maxIndex=0 integer array Board_typeId integer array IdGenerator_nextFree integer IdGenerator_firstFree=0 integer IdGenerator_maxIndex=0 integer array IdGenerator_typeId integer array OrderStringFactory_nextFree integer OrderStringFactory_firstFree=0 integer OrderStringFactory_maxIndex=0 integer array LoadListener_nextFree integer LoadListener_firstFree=0 integer LoadListener_maxIndex=0 integer array LoadListener_typeId integer array EscaperClsr_nextFree integer EscaperClsr_firstFree=0 integer EscaperClsr_maxIndex=0 integer array EscaperClsr_typeId integer array EscaperDefinition_nextFree integer EscaperDefinition_firstFree=0 integer EscaperDefinition_maxIndex=0 integer array EscaperDefinition_typeId integer array BackIterator_nextFree_80 integer BackIterator_firstFree_74=0 integer BackIterator_maxIndex_77=0 integer array Iterator_nextFree_1045 integer Iterator_firstFree_1037=0 integer Iterator_maxIndex_1041=0 integer array OnPlayerLeave_nextFree integer OnPlayerLeave_firstFree=0 integer OnPlayerLeave_maxIndex=0 integer array OnPlayerLeave_typeId integer array PlayerData_nextFree integer PlayerData_firstFree=0 integer PlayerData_maxIndex=0 integer array PlayerData_typeId integer array Link_nextFree integer Link_firstFree=0 integer Link_maxIndex=0 integer array Link_typeId integer OnEndListener_firstFree=0 integer array OnEndListener_typeId integer OnHitListener_firstFree=0 integer array OnHitListener_typeId integer array FogData_nextFree integer FogData_firstFree=0 integer FogData_maxIndex=0 integer array FogData_typeId integer array RegionData_nextFree integer RegionData_firstFree=0 integer RegionData_maxIndex=0 integer array RegionData_typeId integer array RevivePod_nextFree integer RevivePod_firstFree=0 integer RevivePod_maxIndex=0 integer array RevivePod_typeId integer array RevivePointModifier_nextFree integer RevivePointModifier_firstFree=0 integer RevivePointModifier_maxIndex=0 integer array RevivePointModifier_typeId integer array BufferSyncListener_nextFree integer BufferSyncListener_firstFree=0 integer BufferSyncListener_maxIndex=0 integer array BufferSyncListener_typeId integer array Delimiter_nextFree integer Delimiter_firstFree=0 integer Delimiter_maxIndex=0 integer Sim3DSound_firstFree=0 integer array Sim3DSound_typeId integer array SoundDefinition_nextFree integer SoundDefinition_firstFree=0 integer SoundDefinition_maxIndex=0 integer array SoundDefinition_typeId integer array SoundInstance_nextFree integer SoundInstance_firstFree=0 integer SoundInstance_maxIndex=0 integer array SoundInstance_typeId integer array SpinNode_nextFree integer SpinNode_firstFree=0 integer SpinNode_maxIndex=0 integer array SpinNode_typeId integer array StringIterator_nextFree integer StringIterator_firstFree=0 integer StringIterator_maxIndex=0 integer array StringIterator_typeId integer StringSyncListener_firstFree=0 integer array StringSyncListener_typeId integer BoolSyncListener_firstFree=0 integer array BoolSyncListener_typeId integer IntSyncListener_firstFree=0 integer array IntSyncListener_typeId integer RealSyncListener_firstFree=0 integer array RealSyncListener_typeId integer array SyncData_nextFree integer SyncData_firstFree=0 integer SyncData_maxIndex=0 integer array SyncData_typeId integer array TexterClsr_nextFree integer TexterClsr_firstFree=0 integer TexterClsr_maxIndex=0 integer array TexterClsr_typeId integer array UnitIndex_nextFree integer UnitIndex_firstFree=0 integer UnitIndex_maxIndex=0 integer array UnitIndex_typeId integer array InventoryIterator_nextFree integer InventoryIterator_firstFree=0 integer InventoryIterator_maxIndex=0 integer array InventoryIterator_typeId integer array WeaponListener_nextFree integer WeaponListener_firstFree=0 integer WeaponListener_maxIndex=0 integer array Reference_integer__nextFree integer Reference_integer__firstFree=0 integer Reference_integer__maxIndex=0 integer array Reference_integer__typeId integer array Arcanery_arcMode integer array Arcanery_expMode integer array Arcanery_currentEffect integer array this_2953 integer array SilenceBufff_arcanery real array SilenceBufff_distance integer array this_2963 integer array this_2964 integer array this_2965 real array pos_x real array pos_y effect array StaticBaseObject_noRally effect array StaticBaseObject_disFx boolean array StaticBaseObject_enabled real array StaticBaseObject_rallyPoint_x real array StaticBaseObject_rallyPoint_y real array StaticBaseObject_rallyPoint_z unit array StaticBaseObject_rallyUnit real array StaticBaseObject_rallyAngle_radians trigger array StaticBaseObject_inRangeTrig integer array this_2908 integer array BallProjectile_ballitem integer array BigNum_list integer array BigNum_base integer array BigNum_l_leaf integer array BigNum_l_next integer array BigString_length integer array BigString_startoffset integer array BigSubString_parent integer array BigSubString_next integer array BigSubString_start integer array BigSubString_length string array BigSubString_preinit unit array Bomber_setup boolean array Bomber_realorder integer array this_2975 integer array this_2976 integer array this_2970 integer array this_2971 integer array this_2972 integer array this_2973 integer array this_2974 unit array Bombertower_dummy boolean array Bombertower_skipOrder integer array obj integer array obj_2548 integer array this_2986 integer array this_2987 integer array this_2988 integer array this_2989 real array Boomerang_initialPos_x real array Boomerang_initialPos_y real array Boomerang_middleone_x real array Boomerang_middleone_y real array Boomerang_middletwo_x real array Boomerang_middletwo_y real array Boomerang_target_x real array Boomerang_target_y integer array Boomerang_caster integer array Booster_boostspeed real array BossDamager_damage unit array BossMissile_caster integer array SpellTarget_stype real array tpos_x real array tpos_y integer array this_2914 integer array this_2915 real array tpos_x_3018 real array tpos_y_3021 integer array this_2913 real array Boss_maxHp real array Boss_currentHP integer array Boss_hpBar integer array this_2912 unit array upg unit array Buff_target real array Buff_duration integer array Buff_buffData_abilId integer array Buff_buffData_buffId boolean array Buff_done integer array Buff_LinkedListModule_prev integer array Buff_LinkedListModule_next integer array Iterator_current_1031 integer array Builder_regionCount integer array this_2921 integer array this_2922 integer array this_2923 integer array this_2924 real array orderPos_x real array orderPos_y integer array orderId integer array ChunkedString_table integer array ChunkedString_chunkSize integer array ChunkedString_chunkCount integer array ChunkedString_readIndex string array ChunkedString_buffer integer array EventListener_eventId integer array EventListener_uid integer array EventListener_next integer array EventListener_prev integer array OnCastListener_next integer array OnCastListener_prev integer array OnCastListener_abilId unit array OnCastListener_eventUnit integer array cb timerdialog array dia integer array w_count integer array CallbackCounted_count integer array CallbackCounted_maxCount timer array CallbackCounted_t timer array CallbackPeriodic_t timer array CallbackSingle_t integer array pd_2571 real array ConfigValue_value real array ConfigValue_increment string array ConfigValue_valueName integer array CongaLineHead_firstSegment integer array CongaLineHead_cmode real array CongaLineHead_segLength integer array this_2990 integer array CongaSegment_next integer array CongaSegment_prev integer array CongaSegment_target integer array CongaSegment_head texttag array CustomBar_t integer array CustomBar_bg_color_red integer array CustomBar_bg_color_green integer array CustomBar_bg_color_blue integer array CustomBar_bg_color_alpha integer array CustomBar_fg_color_red integer array CustomBar_fg_color_green integer array CustomBar_fg_color_blue integer array CustomBar_fg_color_alpha real array CustomBar_position_x real array CustomBar_position_y real array CustomBar_position_z string array CustomBar_txt real array CustomBar_textsize integer array CustomBar_lockindex boolean array CustomBar_locked real array CustomBar_value integer array CustomBar_NUM_CHARS string array CustomBar_char string array CustomBar_ptext real array DamageInstance_amount boolean array DamageInstance_unreduced attacktype array DamageInstance_nativeAttackType damagetype array DamageInstance_nativeDamageType weapontype array DamageInstance_nativeWeaponType integer array DamageListener_next integer array Decoration_scale integer array Decoration_tid boolean array Decoration_hasBeenChanged integer array this_2969 integer array this_2968 unit array Door_pathing integer array Door_col boolean array Door_vertical boolean array Door_opened integer array this_2991 unit array DummyDamage_dummy widget array DummyDamage_target real array DummyDamage_amount boolean array DummyDamage_attack boolean array DummyDamage_ranged real array DummyDamage_origin_x real array DummyDamage_origin_y player array DummyDamage_attacker attacktype array DummyDamage_attackType damagetype array DummyDamage_damageType weapontype array DummyDamage_weaponType unit array u string array Encoder_charset integer array Encoder_base real array Encoder_digits integer array Encoder_bignum integer array Encoder_hash integer array Encoder_inputhash integer array Encoder_comparehash integer array w_cur integer array big integer array this_2888 integer array onFinish integer array w_cur_2188 integer array this_2889 integer array bs integer array w_i integer array onFinishString integer array this_2890 integer array this_2891 integer array this_2892 integer array bs_2275 integer array onFinish_2550 integer array this_2893 integer array this_2894 integer array this_2895 integer array this_2896 integer array bs_2276 integer array onFinish_2551 integer array this_2897 integer array onFinishLoad integer array this_2898 integer array this_2899 integer array this_2900 real array Entity_pos_x real array Entity_pos_y real array Entity_pos_z real array Entity_vel_x real array Entity_vel_y real array Entity_vel_z real array Entity_gravity real array Entity_radius real array Entity_radius2 real array Entity_speedFactor player array Entity_owner boolean array Entity_flying boolean array Entity_done boolean array Entity_sleeps integer array Entity_idleSeconds integer array Entity_DupletListModule_prev integer array Entity_DupletListModule_next boolean array Entity_DupletListModule_active integer array Iterator_current item array ItemEntity_actor unit array UnitEntity_actor integer array FastEscaper_portal real array Portal_destiny_x real array Portal_destiny_y integer array Portal_es integer array Portal_duration real array Portal_lerpy integer array Portal_targetFx trigger array Portal_Sensor_inRangeTrig unit array Portal_Sensor_actorRef integer array this_2938 boolean array StrongEscaper_invulnerable effect array StrongEscaper_shieldeffect real array StrongEscaper_shieldPos_x real array StrongEscaper_shieldPos_y real array StrongEscaper_shieldtimer integer array this_2939 real array EscaperSensorSetup_sensorHeight trigger array EscaperSensorSetup_Sensor_inRangeTrig unit array EscaperSensorSetup_Sensor_actorRef integer array this_2977 integer array this_2978 integer array this_2979 integer array this_2980 real array StaticEscaperSensorSetup_sensorHeight integer array Escaper_revmod boolean array Escaper_sliding boolean array Escaper_poisoned boolean array Escaper_onLava boolean array Escaper_camlock integer array Escaper_deaths effect array Escaper_lavaEffect effect array Escaper_poisonEffect real array Escaper_walkVel_x real array Escaper_walkVel_y real array Escaper_slideVelocity_x real array Escaper_slideVelocity_y real array Escaper_otherVel_x real array Escaper_otherVel_y integer array Escaper_threshold boolean array Escaper_alive boolean array Escaper_selectatrevive boolean array Escaper_camOnRevive boolean array Escaper_left unit array Escaper_revivetomb integer array Escaper_lastVal integer array Escaper_orb real array Escaper_PhysicsModule_terrainZ real array Escaper_PhysicsModule_surfaceFriction integer array this_2937 real array tpos_x_3019 real array tpos_y_3022 integer array this_2932 integer array this_2933 integer array this_2934 integer array this_2935 integer array this_2936 integer array OrbProjectile_e integer array OrbProjectile_rdata integer array condition integer array resetCount integer array action boolean array Executer_canKillerTrigger boolean array Executer_canEscaperTrigger rect array Executer_eventRect region array Executer_eventRegion integer array Executer_entitiesOnPlate integer array Executer_eventMode integer array Executer_actionMode boolean array Executer_ON integer array Executer_tiletype integer array Executer_nottiletype integer array Executer_verticalTileSize integer array Executer_horizontalTileSize unit array Executer_unitToMove integer array Executer_actionUnit string array Executer_moveOrderString boolean array Executer_disabled destructable array Executer_dummy integer array this_2955 integer array this_2954 texttag array FText_tt boolean array FText_permanent real array FText_timestamp integer array FText_cb integer array FText_LinkedListModule_prev integer array FText_LinkedListModule_next integer array this_2901 integer array Iterator_current_1032 boolean array Iterator_destroyOnClose integer array Faceless_visibleDur integer array Faceless_invisDur integer array Faceless_color_red integer array Faceless_color_green integer array Faceless_color_blue integer array Faceless_color_alpha real array Faceless_fadeDur integer array Faceless_mode real array Faceless_dur integer array this_2981 string array File_filename boolean array Fountain_cure integer array this_2992 integer array this_2993 integer array Fx2Entity_fx boolean array Fx2Entity_silent effect array Fx2_eff integer array Fx2_tint_red integer array Fx2_tint_green integer array Fx2_tint_blue integer array Fx2_tint_alpha integer array FxEntity_fx boolean array FxEntity_silent unit array Fx_dummy effect array Fx_fx string array Fx_sfxPath integer array Fx_col_red integer array Fx_col_green integer array Fx_col_blue integer array Fx_col_alpha integer array createNow integer array HLIterator_i integer array HLIterator_list integer array HashList_size integer array HashMap_size integer array IterableMap_keys boolean array IterableMap__destroyed integer array xRef integer array zMap integer array xRef_3153 integer array zMap_3157 integer array ItemEntityBridge_obj integer array ItemObject_setup integer array ItemObject_holder integer array JsonParser_bigInput integer array JsonParser_currentPosition integer array JsonParser_propStartPosition integer array JsonParser_squareBracketLvl integer array JsonParser_lastType string array JsonParser_currentToken integer array JsonParser_output integer array JsonParser_outputList integer array JsonParser_propName integer array JsonParser_propVal integer array this_2902 integer array finalCallback integer array this_2903 integer array callback integer array Json_properties integer array Json_plist integer array Property_name integer array Property_value integer array JukeBox_requests integer array JukeBox_randomQueue boolean array JukeBox_lastWasRequest integer array JukeBox_currentMusic integer array JukeBox_cb integer array this_2925 player array JukeRequest_juker integer array JukeRequest_music integer array Music_spellid string array Music_path real array Music_duration string array Music_name image array Goo_img real array Goo_pos_x real array Goo_pos_y integer array Jumper_goocounter integer array Jumper_mode integer array Jumper_permission integer array Jumper_jumpForce integer array this_2956 integer array Key_col boolean array Key_picked boolean array Key_followWalkable boolean array Key_infinite effect array Key_infiniteEff effect array Key_returnSfx integer array Key_effectMap boolean array Key_ignoreNextDrop integer array this_2967 integer array this_2966 integer array Knockbacker_kforce integer array Knockbacker_damage integer array this_2982 integer array this_2983 integer array itr integer array encoder integer array dictSize integer array intList integer array onFinish_2552 integer array onFinish_2553 integer array encoder_2345 integer array encoder_2346 integer array onFinish_2554 integer array encoder_2347 integer array onFinish_2555 integer array encoder_2348 integer array dictSize_2304 integer array positions integer array onFinish_2556 integer array inc integer array data integer array A integer array B integer array intList_2530 integer array onFinish_2557 integer array onFinish_2558 integer array output integer array onFinish_2559 integer array itr_2534 string array A_1 string array B_70 integer array output_2567 integer array onFinish_2560 integer array result integer array LLEntry_elem integer array LLEntry_prev integer array LLEntry_next integer array LLIterator_dummy integer array LLIterator_current integer array LLIterator_parent boolean array LLIterator_destroyOnClose integer array LinkedList_dummy integer array LinkedList_size integer array LinkedList_staticItr integer array LinkedList_staticBackItr integer array output_2568 integer array itr_2535 integer array predicate integer array LobbyTeleporter_ftext integer array LobbyTeleporter_currentPlus boolean array LobbyTeleporter_ready boolean array LobbyTeleporter_startmaze real array AgarData_size integer array MGAgar_cbs integer array MGAgar_rdata integer array MGAgar_flist integer array this_2941 integer array MGRandKill_chickenTimer integer array MGRandKill_bunnyTimer integer array MGRandKill_coinTimer real array MGRandKill_spawn_x real array MGRandKill_spawn_y integer array MGRandKill_fx integer array this_2942 integer array this_2943 integer array this_2944 integer array this_2945 integer array MGSlide_rdata boolean array MGSlide_goRight integer array MGSlide_bcount integer array MGSlide_cb integer array this_2946 integer array this_2947 integer array MGSpacey_listener integer array MGSpacey_klistener integer array ShipProjectile_ship integer array SpaceRock_level integer array SpaceRock_hp real array SpaceRock_radiusSq real array Spaceship_maxSpeed real array Spaceship_acc real array Spaceship_xyAngle_radians integer array Spaceship_projectiles integer array Spaceship_mounter integer array Spaceship_hp integer array Fireball_caster integer array this_2950 integer array MGWarlock_cb integer array this_2948 integer array Warlock_mounter integer array this_2949 integer array MinigameTeleporter_text integer array MinigameTeleporter_currentPlus boolean array MinigameTeleporter_inprogress timer array Minigame_tim timerdialog array Minigame_window integer array this_2951 integer array this_2952 integer array pd integer array Minion_target real array Minion_maxHp real array Minion_currentHP real array Minion_spawnPoint_x real array Minion_spawnPoint_y integer array Minion_hpBar integer array Minion_state integer array this_2916 effect array fearEffect integer array this_2917 integer array this_2918 integer array this_2919 integer array this_2920 multiboard array Board_board hashtable array Board_mbdata integer array IdGenerator_i1 integer array IdGenerator_i2 integer array IdGenerator_i3 integer array IdGenerator_i4 integer array MemoryAccessPedestal_tileMap integer array MemoryAccessPedestal_entities integer array MemoryAccessPedestal_tiles integer array MemoryAccessPedestal_effects integer array MemoryAccessPedestal_ttag integer array MemoryAccessPedestal_bs integer array MemoryAccessPedestal_parser integer array MemoryAccessPedestal_listparser integer array MemoryAccessPedestal_itr integer array MemoryAccessPedestal_tileString integer array MemoryAccessPedestal_entString integer array MemoryAccessPedestal_currentSlotId integer array this_3000 integer array slotId integer array pd_2570 integer array ref integer array ref_2610 integer array ref_2611 integer array ref_2612 integer array this_3001 integer array this_3002 integer array cb_2285 integer array this_3003 integer array this_3004 integer array itr_2536 integer array bs_2277 integer array this_3005 integer array td integer array td_2883 integer array this_3006 integer array cb1 integer array this_3007 integer array slotId_2878 integer array itr_2537 integer array this_3008 integer array itr_2538 integer array this_3009 integer array this_3010 integer array big_2202 integer array this_3011 boolean array AirPhysicsProjectile_AirPhysicsModule_affectedByGravity real array AirPhysicsProjectile_AirPhysicsModule_terrainZ real array AirPhysicsProjectile_AirPhysicsModule_surfaceFriction real array AirPhysicsProjectile_AirPhysicsModule_restitution real array AirPhysicsProjectile_AirPhysicsModule_mass integer array EscaperDefinition_nameTt string array EscaperDefinition_mbicon unit array EscaperDefinition_escaper integer array EscaperDefinition_cb integer array EscaperDefinition_LinkedListModule_prev integer array EscaperDefinition_LinkedListModule_next integer array Selector_pd integer array this_2940 player array PlayerData_p integer array PlayerData_id string array PlayerData_name string array PlayerData_mbname string array PlayerData_icon string array PlayerData_rank integer array PlayerData_role integer array PlayerData_title integer array PlayerData_escaper integer array PlayerData_builder integer array PlayerData_prod integer array PlayerData_XP effect array PlayerData_lvlfx effect array PlayerData_tagfx boolean array PlayerData_localFilesEnabled integer array PlayerData_lastExpGain real array PlayerData_zCam integer array PlayerData_revmod integer array PlayerData_selector real array angle_radians real array Pointer_turnspeed real array Pointer_angl_radians boolean array Pointer_turning integer array this_2984 integer array Link_next integer array Link_prev integer array Link_ltype integer array Link_parent integer array Link_target lightning array Link_sfx integer array Powernode_bounciness integer array Powernode_firstLink integer array this_2994 real array ShieldBuff_blockAmount real array Projectile_xyAngle_radians real array Projectile_startpos_x real array Projectile_startpos_y real array Projectile_startpos_z boolean array Projectile_timed boolean array Projectile_ranged boolean array Projectile_use3DDistance group array Projectile_hitGroup boolean array Projectile_isPointTarget real array Projectile_targetPoint_x real array Projectile_targetPoint_y real array Projectile_targetPoint_z boolean array Projectile_killZ real array Projectile_killBelowZ real array Projectile_acc real array Projectile_maxDist real array Projectile_time real array Projectile_maxTime integer array Projectile_target integer array Projectile_onHit integer array Projectile_onEnd integer array this real array xmax integer array ttype real array xmin fogmodifier array FogData_modifier fogstate array FogData_state boolean array FogData_visible rect array FogData_r player array FogData_p integer array RegionData_escapers integer array RegionData_permissions integer array RegionData_rtype rect array RegionData_theRect real array RegionData_slidespeed real array RegionData_poisonDmg real array RegionData_lavaDmg real array RegionData_turnSpeed real array RegionData_gravity boolean array RegionData_easyMode integer array RegionData_specialAbil boolean array RegionData_bossRegion boolean array RegionData_allowCut integer array RegionData_boss integer array RevivePod_owner real array RevivePod_time boolean array RevivePod_wait unit array RevivePointModifier_actor real array RevivePointModifier_pos_x real array RevivePointModifier_pos_y boolean array RevivePoint_reached integer array RevivePoint_startmaze integer array listener string array Delimiter_token integer array PayloadCallback_customData boolean array SeqCallback_done timer array SeqCallback_ref integer array SetupBox_rdata integer array this_2927 integer array this_2926 real array SetupObject_time boolean array SetupObject_enabled unit array SetupObject_setup integer array this_2909 integer array this_2910 integer array this_2911 unit array StaticSetupObject_setup trigger array StaticSetupObject_inRangeTrig integer array SoundDefinition_soundStack string array SoundDefinition_file integer array SoundDefinition_duration boolean array SoundDefinition_looping boolean array SoundDefinition_is3D boolean array SoundDefinition_stopOnLeaveRange integer array SoundDefinition_fadeIn integer array SoundDefinition_fadeOut string array SoundDefinition_eaxSetting integer array this_2904 integer array snd integer array this_2905 integer array snd_2880 integer array this_2906 integer array snd_2881 integer array this_2907 integer array instance real array SoundInstance_pos_x real array SoundInstance_pos_y real array SoundInstance_pos_z sound array SoundInstance_snd integer array SoundInstance_soundDef unit array SoundInstance_onUnit player array SoundInstance_p integer array SoundInstance_s3s integer array SpinNode_next integer array SpinNode_prev integer array SpinNode_obj real array SpinNode_angl real array SpinNode_dist integer array Spinner_firstNode integer array Spinner_spinSpeed integer array Spinner_cosFactor integer array Spinner_sinFactor boolean array Spinner_useSuperFormula integer array this_2997 integer array this_2995 integer array this_2996 boolean array Startmaze_inited integer array Startmaze_rdata string array StringIterator_s integer array StringIterator_currentpos integer array StringIterator_stringLen integer array listener_2540 integer array listener_2541 integer array listener_2542 integer array SyncData_slistener integer array SyncData_blistener player array SyncData_syncer string array SyncData_data integer array SyncData_buffer integer array SyncData_syncBuffer integer array Teleporter_mode boolean array TerrainBlocker_silent integer array TerrainChanger_sizeX integer array TerrainChanger_sizeY integer array TerrainChanger_currentTile_x integer array TerrainChanger_currentTile_y integer array TerrainChanger_innerTile integer array TerrainChanger_outerTile integer array this_2985 real array realPos_x real array realPos_y real array realPos_x_2593 real array realPos_y_2595 integer array TerrainModder_brushsize integer array TerrainModder_brushshape integer array TerrainModder_modification boolean array TerrainModder_legit integer array this_2928 integer array this_2929 integer array this_2930 integer array TextTagEntity_ftext real array TextTagEntity_dur integer array TextTagEntity_col_red integer array TextTagEntity_col_green integer array TextTagEntity_col_blue integer array TextTagEntity_col_alpha integer array cb_2284 integer array tokens integer array tokens_3016 integer array Texter_text boolean array Texter_hidden integer array Texter_col_red integer array Texter_col_green integer array Texter_col_blue integer array this_2957 integer array this_2958 integer array vw integer array TileData_xoff integer array TileData_yoff real array TileData_pos_x real array TileData_pos_y effect array TileData_fx player array TileData_owner integer array TileData_tile integer array Tracks_trackSpeed unit array Tracks_setup integer array Tracks_tsize real array Tracks_rct_min_x real array Tracks_rct_min_y real array Tracks_rct_max_x real array Tracks_rct_max_y real array Tracks_dir_x real array Tracks_dir_y integer array this_2998 integer array Trap_sfxid real array Trap_interval real array Trap_timerreal integer array Trap_a real array Trap_duration real array Trap_value boolean array Trap_pull integer array Trap_uptimes integer array Trap_goocounter integer array this_2960 integer array this_2959 destructable array Tree_dummy unit array UnitIndex__unit integer array this_2931 integer array InventoryIterator_count real array UnitCreator_interval real array UnitCreator_timerreal integer array UnitCreator_spawnUnitType integer array UnitCreator_delays integer array UnitCreator_tmode real array Vortex_vgravity integer array Vortex_zMode real array Vortex_radiusSq integer array Vortex_vortexFx integer array this_2999 integer array Wall_tId integer array Waypoint_delay boolean array Waypoint_wisps integer array Waypoint_linked boolean array Waypoint_ready integer array this_2961 real array rallyPos_x real array rallyPos_y real array rallyPos_z integer array entity real array rallyPos_x_2587 real array rallyPos_y_2589 real array rallyPos_z_2591 integer array this_2962 integer array e integer array e_2342 integer array e_2343 integer array Reference_val real real_asAngleDegrees_return_radians=0. real real_fromDeg_return_radians=0. real real_fromRad_return_radians=0. real real_asAngleRadians_return_radians=0. real angle_op_plus_return_radians=0. real angle_op_minus_return_radians=0. real angle_op_divReal_return_radians=0. real EventData_getSpellTargetPos_return_x=0. real EventData_getSpellTargetPos_return_y=0. integer bitset_set_return_val=0 integer bitset_reset_return_val=0 real BossDamager_posToGrid_return_x=0. real BossDamager_posToGrid_return_y=0. real vec2_op_minus_return_x=0. real vec2_op_minus_return_y=0. real vec2_norm_return_x=0. real vec2_norm_return_y=0. real calculateNormal_return_x=0. real calculateNormal_return_y=0. real real_op_mult_return_x=0. real real_op_mult_return_y=0. real vec2_op_mult_return_x=0. real vec2_op_mult_return_y=0. real reflectVelocity_return_x=0. real reflectVelocity_return_y=0. real vec2_withZ_return_x=0. real vec2_withZ_return_y=0. real vec2_withZ_return_z=0. real vec3_toVec2_return_x=0. real vec3_toVec2_return_y=0. real unit_getPos_return_x=0. real unit_getPos_return_y=0. integer playercolor_toColor_return_red=0 integer playercolor_toColor_return_green=0 integer playercolor_toColor_return_blue=0 integer colorA_withoutAlpha_return_red=0 integer colorA_withoutAlpha_return_green=0 integer colorA_withoutAlpha_return_blue=0 integer color_withAlpha_return_red=0 integer color_withAlpha_return_green=0 integer color_withAlpha_return_blue=0 integer color_withAlpha_return_alpha=0 integer makeColor_return_red=0 integer makeColor_return_green=0 integer makeColor_return_blue=0 integer makeColor_return_alpha=0 integer colorA_mix_return_red=0 integer colorA_mix_return_green=0 integer colorA_mix_return_blue=0 integer colorA_mix_return_alpha=0 real dispatch_UnitEntity_Entity_UnitEntity_getPos_return_x=0. real dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y=0. real dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z=0. real vec2_angleTo_return_radians=0. real calculateSegmentPos_return_x=0. real calculateSegmentPos_return_y=0. real vec2_toVec3_return_x=0. real vec2_toVec3_return_y=0. real vec2_toVec3_return_z=0. real quat_toEuler_return_x=0. real quat_toEuler_return_y=0. real quat_toEuler_return_z=0. real vec2_withHeightMap_return_x=0. real vec2_withHeightMap_return_y=0. real vec2_withHeightMap_return_z=0. real vec3_op_plus_return_x=0. real vec3_op_plus_return_y=0. real vec3_op_plus_return_z=0. real unit_getDynamicPos_return_x=0. real unit_getDynamicPos_return_y=0. real unit_getDynamicPos_return_z=0. real EventData_getOrderPos_return_x=0. real EventData_getOrderPos_return_y=0. real EventData_getAbilityTargetPos_return_x=0. real EventData_getAbilityTargetPos_return_y=0. integer EBRColor_toColor_return_red=0 integer EBRColor_toColor_return_green=0 integer EBRColor_toColor_return_blue=0 integer EBRColor_toColor_return_alpha=0 integer vec2_getQuad_return_id=0 integer vec2_getQuad_return_x=0 integer vec2_getQuad_return_y=0 real vec2_getQuad_return_botLeft_x=0. real vec2_getQuad_return_botLeft_y=0. real vec2_getQuad_return_z1=0. real vec2_getQuad_return_z2=0. real vec2_getQuad_return_z3=0. real vec2_getQuad_return_z4=0. real vec2_withHeightMap_return_x_3088=0. real vec2_withHeightMap_return_y_3090=0. real vec2_withHeightMap_return_z_3092=0. real widget_getPos_return_x=0. real widget_getPos_return_y=0. real vec2_bezier3_return_x=0. real vec2_bezier3_return_y=0. real vec2_lerp_return_x=0. real vec2_lerp_return_y=0. real item_getPos_return_x=0. real item_getPos_return_y=0. boolean player_getDownKeys_return_up=false boolean player_getDownKeys_return_down=false boolean player_getDownKeys_return_left=false boolean player_getDownKeys_return_right=false real vec2_op_plus_return_x=0. real vec2_op_plus_return_y=0. real getSlopeAngle_return_radians=0. real vec3_norm_return_x=0. real vec3_norm_return_y=0. real vec3_norm_return_z=0. real vec3_op_minus_return_x=0. real vec3_op_minus_return_y=0. real vec3_op_minus_return_z=0. real unit_getPos3Real_return_x=0. real unit_getPos3Real_return_y=0. real unit_getPos3Real_return_z=0. real vec3_op_mult_return_x=0. real vec3_op_mult_return_y=0. real vec3_op_mult_return_z=0. real vec3_toQuat_return_x=0. real vec3_toQuat_return_y=0. real vec3_toQuat_return_z=0. real vec3_toQuat_return_w=0. real angle_toQuat_return_x=0. real angle_toQuat_return_y=0. real angle_toQuat_return_z=0. real angle_toQuat_return_w=0. real rect_randomPoint_return_x=0. real rect_randomPoint_return_y=0. real rect_getCenter_return_x=0. real rect_getCenter_return_y=0. real dispatch_Entity_Entity_Entity_getPos_return_x=0. real dispatch_Entity_Entity_Entity_getPos_return_y=0. real dispatch_Entity_Entity_Entity_getPos_return_z=0. integer RegionType_getTypeSet_return_regionItemId=0 integer RegionType_getTypeSet_return_walkableId=0 integer RegionType_getTypeSet_return_unwalkableId=0 integer RegionType_getTypeSet_return_smallKillerId=0 integer RegionType_getTypeSet_return_bigKillerId=0 integer RegionType_getTypeSet_return_treeId=0 integer RegionType_getTypeSet_return_smallObstacleId=0 integer RegionType_getTypeSet_return_bigObstacleId=0 integer RegionType_getTypeSet_return_bossId=0 integer RegionType_getTypeSet_return_minionId=0 integer RegionType_getTypeSet_return_highObstacleId=0 integer dispatch_RegionData_RegionData_RegionData_getTypeSet_return_regionItemId=0 integer dispatch_RegionData_RegionData_RegionData_getTypeSet_return_walkableId=0 integer dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId=0 integer dispatch_RegionData_RegionData_RegionData_getTypeSet_return_smallKillerId=0 integer dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bigKillerId=0 integer dispatch_RegionData_RegionData_RegionData_getTypeSet_return_treeId=0 integer dispatch_RegionData_RegionData_RegionData_getTypeSet_return_smallObstacleId=0 integer dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bigObstacleId=0 integer dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bossId=0 integer dispatch_RegionData_RegionData_RegionData_getTypeSet_return_minionId=0 integer dispatch_RegionData_RegionData_RegionData_getTypeSet_return_highObstacleId=0 real dispatch_Escaper_Escaper_Escaper_getRealVel_return_x=0. real dispatch_Escaper_Escaper_Escaper_getRealVel_return_y=0. real dispatch_Escaper_Escaper_Escaper_getRealVel_return_z=0. real getOffset_return_x=0. real getOffset_return_y=0. real vec3_op_minus_return_x_3123=0. real vec3_op_minus_return_y_3125=0. real vec3_op_minus_return_z_3127=0. integer char_return_c=0 real dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_x=0. real dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_y=0. real dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_z=0. integer hashtable_loadTile_return_x=0 integer hashtable_loadTile_return_y=0 integer hashtable_loadTile_return_key=0 integer hashtable_loadTile_return_currentType=0 integer hashtable_loadTile_return_lastType=0 integer hashtable_loadTile_return_modifiers_val=0 integer vec2_getEBRTile_return_x=0 integer vec2_getEBRTile_return_y=0 integer vec2_getEBRTile_return_key=0 integer vec2_getEBRTile_return_currentType=0 integer vec2_getEBRTile_return_lastType=0 integer vec2_getEBRTile_return_modifiers_val=0 integer vec3_getEBRTile_return_x=0 integer vec3_getEBRTile_return_y=0 integer vec3_getEBRTile_return_key=0 integer vec3_getEBRTile_return_currentType=0 integer vec3_getEBRTile_return_lastType=0 integer vec3_getEBRTile_return_modifiers_val=0 integer getTile_return_x=0 integer getTile_return_y=0 integer getTile_return_key=0 integer getTile_return_currentType=0 integer getTile_return_lastType=0 integer getTile_return_modifiers_val=0 real vec2_add_return_x=0. real vec2_add_return_y=0. real real_op_mult_return_x_2601=0. real real_op_mult_return_y_2603=0. real real_op_mult_return_z=0. real vec2_getTerrainNormal_return_x=0. real vec2_getTerrainNormal_return_y=0. real vec2_getTerrainNormal_return_z=0. integer tile_return_id=0 real tile_toVec2_return_x=0. real tile_toVec2_return_y=0. integer getColorFromString_return_red=0 integer getColorFromString_return_green=0 integer getColorFromString_return_blue=0 real vec2_toTile_return_x=0. real vec2_toTile_return_y=0. real unit_getFacingAngle_return_radians=0. real vec2_withRealZ_return_x=0. real vec2_withRealZ_return_y=0. real vec2_withRealZ_return_z=0. real unit_getPos3Fly_return_x=0. real unit_getPos3Fly_return_y=0. real unit_getPos3Fly_return_z=0. real unit_getPos3Zero_return_x=0. real unit_getPos3Zero_return_y=0. real unit_getPos3Zero_return_z=0. real unit_getPos3with_return_x=0. real unit_getPos3with_return_y=0. real unit_getPos3with_return_z=0. real vec2_op_plus_return_x_3077=0. real vec2_op_plus_return_y_3079=0. real vec2_withTerrainZ_return_x=0. real vec2_withTerrainZ_return_y=0. real vec2_withTerrainZ_return_z=0. real angle_toVec_return_x=0. real angle_toVec_return_y=0. real vec2_polarOffset_return_x=0. real vec2_polarOffset_return_y=0. real vec3_op_plus_return_x_3132=0. real vec3_op_plus_return_y_3134=0. real vec3_op_plus_return_z_3136=0. real vec3_add_return_x=0. real vec3_add_return_y=0. real vec3_add_return_z=0. real vec3_setLength_return_x=0. real vec3_setLength_return_y=0. real vec3_setLength_return_z=0. real vec3_project_return_x=0. real vec3_project_return_y=0. real vec3_project_return_z=0. real vec3_angleTo2d_return_radians=0. real vec3_angleTo2d_return_radians_3106=0. real vec3_normalizedPointerTo_return_x=0. real vec3_normalizedPointerTo_return_y=0. real vec3_normalizedPointerTo_return_z=0. real vec3_moveTowards_return_x=0. real vec3_moveTowards_return_y=0. real vec3_moveTowards_return_z=0. real vec2_getAngle_return_radians=0. real StaticBaseObject_getRallyPoint_return_x=0. real StaticBaseObject_getRallyPoint_return_y=0. real StaticBaseObject_getRallyPoint_return_z=0. real StaticBaseObject_getRallyAngle_return_radians=0. real Entity_getPos_return_x=0. real Entity_getPos_return_y=0. real Entity_getPos_return_z=0. real Entity_getVel_return_x=0. real Entity_getVel_return_y=0. real Entity_getVel_return_z=0. real ItemEntity_getPos_return_x=0. real ItemEntity_getPos_return_y=0. real ItemEntity_getPos_return_z=0. real UnitEntity_getPos_return_x=0. real UnitEntity_getPos_return_y=0. real UnitEntity_getPos_return_z=0. integer dispatch_Fx_Fx_Fx_getColor_return_red=0 integer dispatch_Fx_Fx_Fx_getColor_return_green=0 integer dispatch_Fx_Fx_Fx_getColor_return_blue=0 integer dispatch_Fx_Fx_Fx_getColor_return_alpha=0 real Escaper_getRealVel_return_x=0. real Escaper_getRealVel_return_y=0. real Escaper_getRealVel_return_z=0. real dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle_return_radians=0. integer Fx_getColor_return_red=0 integer Fx_getColor_return_green=0 integer Fx_getColor_return_blue=0 integer Fx_getColor_return_alpha=0 real MGAgar_getStartPosition_return_x=0. real MGAgar_getStartPosition_return_y=0. real MGRandKill_getStartPosition_return_x=0. real MGRandKill_getStartPosition_return_y=0. real MGSlide_getStartPosition_return_x=0. real MGSlide_getStartPosition_return_y=0. real MGSpacey_getStartPosition_return_x=0. real MGSpacey_getStartPosition_return_y=0. real MGWarlock_getStartPosition_return_x=0. real MGWarlock_getStartPosition_return_y=0. real dispatch_Minigame_Minigame_Minigame_getStartPosition_return_x=0. real dispatch_Minigame_Minigame_Minigame_getStartPosition_return_y=0. real dispatch_Entity_Entity_Entity_getVel_return_x=0. real dispatch_Entity_Entity_Entity_getVel_return_y=0. real dispatch_Entity_Entity_Entity_getVel_return_z=0. real dispatch_Powernode_Powernode_Powernode_getBounceVec_return_x=0. real dispatch_Powernode_Powernode_Powernode_getBounceVec_return_y=0. real dispatch_Powernode_Powernode_Powernode_getBounceVec_return_z=0. real Powernode_getBounceVec_return_x=0. real Powernode_getBounceVec_return_y=0. real Powernode_getBounceVec_return_z=0. integer RegionData_getTypeSet_return_regionItemId=0 integer RegionData_getTypeSet_return_walkableId=0 integer RegionData_getTypeSet_return_unwalkableId=0 integer RegionData_getTypeSet_return_smallKillerId=0 integer RegionData_getTypeSet_return_bigKillerId=0 integer RegionData_getTypeSet_return_treeId=0 integer RegionData_getTypeSet_return_smallObstacleId=0 integer RegionData_getTypeSet_return_bigObstacleId=0 integer RegionData_getTypeSet_return_bossId=0 integer RegionData_getTypeSet_return_minionId=0 integer RegionData_getTypeSet_return_highObstacleId=0 string array BigString_substrings_0 string array BigString_substrings_1 string array BigString_substrings_2 string array BigString_substrings_3 string array BigString_substrings_4 string array BigString_substrings_5 string array BigString_substrings_6 string array BigString_substrings_7 string array BigString_substrings_8 string array BigString_substrings_9 string array BigString_substrings_10 string array BigString_substrings_11 string array BigString_substrings_12 string array BigString_substrings_13 string array BigString_substrings_14 string array BigString_substrings_15 string array BigString_substrings_16 string array BigString_substrings_17 string array BigString_substrings_18 string array BigString_substrings_19 string array BigString_substrings_20 string array BigString_substrings_21 string array BigString_substrings_22 string array BigString_substrings_23 string array BigString_substrings_24 integer array Jumper_goos_0 integer array Jumper_goos_1 integer array Jumper_goos_2 integer array Jumper_goos_3 integer array Jumper_goos_4 boolean array LobbyTeleporter_votes_0 boolean array LobbyTeleporter_votes_1 boolean array LobbyTeleporter_votes_2 boolean array LobbyTeleporter_votes_3 boolean array LobbyTeleporter_votes_4 boolean array LobbyTeleporter_votes_5 boolean array LobbyTeleporter_votes_6 boolean array LobbyTeleporter_votes_7 boolean array LobbyTeleporter_votes_8 boolean array LobbyTeleporter_votes_9 boolean array LobbyTeleporter_votes_10 boolean array LobbyTeleporter_votes_11 boolean array MinigameTeleporter_votes_0 boolean array MinigameTeleporter_votes_1 boolean array MinigameTeleporter_votes_2 boolean array MinigameTeleporter_votes_3 boolean array MinigameTeleporter_votes_4 boolean array MinigameTeleporter_votes_5 boolean array MinigameTeleporter_votes_6 boolean array MinigameTeleporter_votes_7 boolean array MinigameTeleporter_votes_8 boolean array MinigameTeleporter_votes_9 boolean array MinigameTeleporter_votes_10 boolean array MinigameTeleporter_votes_11 integer array PlayerData_tmods_0 integer array PlayerData_tmods_1 integer array PlayerData_tmods_2 integer array PlayerData_tmods_3 integer array RegionData_fmods_0 integer array RegionData_fmods_1 integer array RegionData_fmods_2 integer array RegionData_fmods_3 integer array RegionData_fmods_4 integer array RegionData_fmods_5 integer array RegionData_fmods_6 integer array RegionData_fmods_7 integer array RegionData_fmods_8 integer array RegionData_fmods_9 integer array RegionData_fmods_10 integer array RegionData_fmods_11 integer array Trap_goos_0 integer array Trap_goos_1 integer array Trap_goos_2 integer array Trap_goos_3 integer array Trap_goos_4 item array InventoryIterator_items_0 item array InventoryIterator_items_1 item array InventoryIterator_items_2 item array InventoryIterator_items_3 item array InventoryIterator_items_4 item array InventoryIterator_items_5 code ref_function_Trig_Untitled_Trigger_005_Actions=null code ref_function_init_Abilities=null code ref_function_init_AbilityIds=null code ref_function_init_Real=null code ref_function_init_Integer=null code ref_function_init_BitSet=null code ref_function_init_Angle=null code ref_function_init_Maths=null code ref_function_init_String=null code ref_function_init_TargetsAllowed=null code ref_function_init_Vectors=null code ref_function_init_Destructable=null code ref_function_init_Player=null code ref_function_init_Printing_config=null code ref_function_init_Printing=null code ref_function_init_MagicFunctions=null code ref_function_init_Basics=null code ref_function_init_GameTimer=null code ref_function_init_ErrorHandling=null code ref_function_init_Matrices=null code ref_function_init_Quaternion=null code ref_function_init_Table=null code ref_function_init_Playercolor=null code ref_function_init_Colors=null code ref_function_init_Framehandle=null code ref_function_init_Group=null code ref_function_init_Lightning=null code ref_function_init_WeatherEffects=null code ref_function_init_TypeCasting=null code ref_function_init_HashList=null code ref_function_init_EventHelper=null code ref_function_init_AbilityObjEditing=null code ref_function_init_TimerUtils=null code ref_function_init_RegisterEvents=null code ref_function_init_ClosureTimers=null code ref_function_init_ClosureForGroups=null code ref_function_init_LinkedList=null code ref_function_init_ObjectIds=null code ref_function_init_UnitIds=null code ref_function_init_MapBounds=null code ref_function_init_Preloader=null code ref_function_init_ObjectIdGenerator=null code ref_function_init_Orders=null code ref_function_init_OnUnitEnterLeave=null code ref_function_init_UnitIndexer=null code ref_function_init_ClosureEvents=null code ref_function_init_TerrainUtils=null code ref_function_init_PhysicsConstants=null code ref_function_init_StringUtils=null code ref_function_init_FText=null code ref_function_init_Frentity=null code ref_function_init_Execute=null code ref_function_init_Heightmap=null code ref_function_init_Entity_config=null code ref_function_init_Entity=null code ref_function_init_AirPhysicsModule=null code ref_function_init_BigString=null code ref_function_init_BigNum=null code ref_function_init_Encoder=null code ref_function_init_LZW=null code ref_function_init_Json=null code ref_function_init_SerializeIds=null code ref_function_init_BuilderConstants=null code ref_function_init_SetupObject=null code ref_function_init_Icons=null code ref_function_init_ChannelAbilityPreset=null code ref_function_init_BuffIds=null code ref_function_init_Buildings=null code ref_function_init_Doodads=null code ref_function_init_Environment=null code ref_function_init_ItemIds=null code ref_function_init_Objects=null code ref_function_init_Sounds=null code ref_function_init_Soundsets=null code ref_function_init_Textures=null code ref_function_init_UI=null code ref_function_init_Units=null code ref_function_init_AttachmentPoints=null code ref_function_init_BaseObject=null code ref_function_init_GameConstants=null code ref_function_init_TerrainData=null code ref_function_init_PhysicsEntity=null code ref_function_init_RevivePointModifier=null code ref_function_init_TerrainBlocker=null code ref_function_init_Fx2Entity=null code ref_function_init_GroupUtils=null code ref_function_init_Players=null code ref_function_init_JukeBox=null code ref_function_init_EscaperObjects=null code ref_function_init_Escaper=null code ref_function_init_InstantDummyCaster=null code ref_function_init_DummyRecycler=null code ref_function_init_DamageEvent=null code ref_function_init_Squares=null code ref_function_init_Buff=null code ref_function_init_Arcanery=null code ref_function_init_Attackspeed=null code ref_function_init_AudioTaunts=null code ref_function_init_BasicSpells=null code ref_function_init_Bomber=null code ref_function_init_Bombertower=null code ref_function_init_Booster=null code ref_function_init_Boots=null code ref_function_init_MultiboardClass=null code ref_function_init_Key=null code ref_function_init_Tome=null code ref_function_init_Coin=null code ref_function_init_Builder=null code ref_function_init_FxEntity=null code ref_function_init_EscaperSensor=null code ref_function_init_EscaperKillers=null code ref_function_init_ObjectTarget=null code ref_function_init_TerrainChanger=null code ref_function_init_Pointer=null code ref_function_init_Knockbacker=null code ref_function_init_Faceless=null code ref_function_init_UnitProducer=null code ref_function_init_EscaperClasses=null code ref_function_init_Simulate3dSound=null code ref_function_init_SoundUtils=null code ref_function_init_PickSystem=null code ref_function_init_PlayerData=null code ref_function_init_BossSpellTarget=null code ref_function_init_CustomBar=null code ref_function_init_Minion=null code ref_function_init_Boss=null code ref_function_init_BossDamager=null code ref_function_init_Camerashakes=null code ref_function_init_ChunkedString=null code ref_function_init_CodeGenerator=null code ref_function_init_Collision=null code ref_function_init_SetupBox=null code ref_function_init_ReviveManager=null code ref_function_init_Minigame=null code ref_function_init_KeyUtils=null code ref_function_init_MGSpacey=null code ref_function_init_Commands=null code ref_function_init_MoveSpeed=null code ref_function_init_CongaObjects=null code ref_function_init_DebugInfo=null code ref_function_init_Decoration=null code ref_function_init_Door=null code ref_function_init_EntityManagement=null code ref_function_init_TerrainModder=null code ref_function_init_Executer=null code ref_function_init_SafetyChecks=null code ref_function_init_FileIO=null code ref_function_init_Fountain=null code ref_function_init_Obstacle=null code ref_function_init_LobbyTeleporter=null code ref_function_init_MinigameTeleporter=null code ref_function_init_Startmazes=null code ref_function_init_GameInit=null code ref_function_init_GameStatus=null code ref_function_init_GlobalShop=null code ref_function_init_HashSet=null code ref_function_init_Revivepoint=null code ref_function_init_Vortex=null code ref_function_init_Powernode=null code ref_function_init_Tracks=null code ref_function_init_Jumper=null code ref_function_init_Teleporter=null code ref_function_init_WaypointObjects=null code ref_function_init_Waypoint=null code ref_function_init_SpinnerObjects=null code ref_function_init_Unitcreator=null code ref_function_init_Trap=null code ref_function_init_ObstacleObjects=null code ref_function_init_MGWarlock=null code ref_function_init_RegionData=null code ref_function_init_Tree=null code ref_function_init_Texter=null code ref_function_init_UnitRemover=null code ref_function_init_PedestalObjects=null code ref_function_init_JsonParser=null code ref_function_init_SyncSimple=null code ref_function_init_SaveLoadData=null code ref_function_init_Pedestal=null code ref_function_init_InstantBuild=null code ref_function_init_Invisible=null code ref_function_init_MGAgar=null code ref_function_init_MGRandKill=null code ref_function_init_MGSlide=null code ref_function_init_Questlog=null code ref_function_init_Remove=null code ref_function_init_Startmaze=null code ref_function_init_WeaponTypes=null code ref_function_init_Weapon=null code ref_function_onLoop=null code ref_function_loopPerPlayer=null code ref_function_code__onUnitIndex_ClosureEvents=null code ref_function_code__onUnitDeindex_ClosureEvents=null code ref_function_EventListener_generalEventCallback=null code ref_function_code__Filter_ClosureForGroups=null code ref_function_code__addAction_DebugInfo=null code ref_function_code__startPeriodic_DebugInfo=null code ref_function_updateActiveEntities=null code ref_function_updateBuffs=null code ref_function_updateInactiveEntities=null code ref_function_code__onUnitDeindex_EntityManagement=null code ref_function_correctRegion=null code ref_function_executeCurrentCallback=null code ref_function_code__startPeriodic_GameTimer=null code ref_function_code__addAction_RegionData=null code ref_function_code__registerPlayerUnitEvent_RegisterEvents=null code ref_function_code__startPeriodic_ReviveManager=null code ref_function_code__start_SeqWorker=null code ref_function_code__start_SeqWorker_2675=null code ref_function_code__registerPlayerUnitEvent_SetupBox=null code ref_function_code__Condition_Startmaze=null code ref_function_code__addAction_SyncSimple=null code ref_function_code__EnumItemsInRect_TerrainUtils=null code ref_function_code__onEnter_UnitIndexer=null code ref_function_code__onLeave_UnitIndexer=null code ref_function_Arcanery_onEnterEv=null code ref_function_code__Arcanery_Arcanery=null code ref_function_code__Arcanery_Arcanery_2635=null code ref_function_StaticBaseObject_isProper=null code ref_function_Bomber_orderSetup=null code ref_function_Booster_orderMove=null code ref_function_BossDamager_onInRange=null code ref_function_code__addAction_nullTimer_ClosureEvents=null code ref_function_code__addAction_nullTimer_ClosureEvents_2658=null code ref_function_code__addAction_nullTimer_ClosureEvents_2659=null code ref_function_code__registerPlayerUnitEvent_nullTimer_ClosureEvents=null code ref_function_CallbackCounted_staticCallback=null code ref_function_CallbackPeriodic_staticCallback=null code ref_function_code__start_CallbackSingle_ClosureTimers=null code ref_function_CustomBar_fadeOutCallback=null code ref_function_Door_keyopen=null code ref_function_code__addAction_Sensor_Portal_EscaperClasses=null code ref_function_code__addAction_Sensor_EscaperSensorSetup_EscaperSensor=null code ref_function_code__StaticEscaperSensorSetup_EscaperSensor=null code ref_function_code__StaticEscaperSensorSetup_EscaperSensor_2648=null code ref_function_code__Condition_addCondition_Executer_Executer=null code ref_function_code__Condition_addCondition_Executer_Executer_2638=null code ref_function_code__Executer_Executer=null code ref_function_code__Executer_Executer_2641=null code ref_function_Fountain_cure=null code ref_function_Jumper_onInRange=null code ref_function_LobbyTeleporter_checkVote=null code ref_function_code__Filter_GroupEnumUnitsInRect_MGRandKill_MGRandKill=null code ref_function_MinigameTeleporter_checkVote=null code ref_function_code__start_Minigame_Minigame=null code ref_function_code__Filter_registerEnterRegion_nullTimer_OnUnitEnterLeave=null code ref_function_code__registerPlayerUnitEvent_nullTimer_OnUnitEnterLeave=null code ref_function_code__ForGroup_nullTimer_OnUnitEnterLeave=null code ref_function_code__addAction_RegionData_RegionData=null code ref_function_RevivePoint_onReach=null code ref_function_code__Filter_GroupEnumUnitsInRect_Startmaze_Startmaze=null code ref_function_killD=null code ref_function_deleteKeys=null code ref_function_correctKeys=null code ref_function_Teleporter_teleport=null code ref_function_Texter_onStep=null code ref_function_Trap_onStep=null code ref_function_UnitRemover_removeUnit=null code ref_function_Waypoint_onInRange=null code ref_function_code__Waypoint_Waypoint=null code ref_function_code__Waypoint_Waypoint_2650=null boolean tempReturn_boolean=false integer tempReturn_integer=0 string tempReturn_string=null endglobals native UnitAlive takes unit id returns boolean function CreateAllItems takes nothing returns nothing call CreateItem(1227894840, 4867.9, - 6777.6) call CreateItem(1227894841, 3469.9, - 7039.9) call CreateItem(1227894841, - 2696.9, - 4345.6) call CreateItem(1227894841, - 3591.5, - 5889.7) call CreateItem(1227894841, - 1866.6, - 6296.8) call CreateItem(1227894841, - 4731.9, - 6904.0) call CreateItem(1227894841, 1549.5, - 5746.7) call CreateItem(1227894849, - 1202.3, - 6407.8) call CreateItem(1227894849, 755.2, - 5499.9) call CreateItem(1227894849, 4413.5, - 4294.3) call CreateItem(1227894849, 2181.3, - 6914.0) call CreateItem(1227894849, 4416.8, - 6159.0) call CreateItem(1227894849, - 3837.0, - 4998.9) call CreateItem(1227894849, - 3536.7, - 5886.7) call CreateItem(1227894849, - 3486.1, - 4977.5) call CreateItem(1227894849, - 1280.7, - 4227.1) call CreateItem(1227894849, 3824.7, - 6470.1) call CreateItem(1227894849, - 2662.9, - 6508.9) call CreateItem(1227894849, 2419.0, - 5207.0) call CreateItem(1227894858, 6735.7, - 7105.2) call CreateItem(1227895088, - 4180.2, - 5155.2) call CreateItem(1227895088, 3834.1, - 6388.5) call CreateItem(1227895088, 2587.9, - 7198.0) call CreateItem(1227895088, 3857.3, - 6610.9) call CreateItem(1227895088, 2393.1, - 5257.3) call CreateItem(1227895088, 2453.3, - 5252.1) call CreateItem(1227895088, - 147.9, - 3929.0) call CreateItem(1227895088, - 1302.0, - 4284.5) call CreateItem(1227895088, - 1245.9, - 4207.5) call CreateItem(1227895088, 3825.0, - 6017.5) call CreateItem(1227895088, - 4253.4, - 6511.4) call CreateItem(1227895088, - 2328.8, - 4286.8) call CreateItem(1227895088, - 3958.8, - 6266.4) call CreateItem(1227895088, - 1935.6, - 3928.7) call CreateItem(1227895088, - 1142.1, - 6392.7) call CreateItem(1227895088, 132.5, - 4618.8) call CreateItem(1227895088, 6710.3, - 7178.4) call CreateItem(1227895088, 4345.7, - 4779.4) call CreateItem(1227895088, 726.9, - 5479.6) call CreateItem(1227895088, 777.4, - 5551.7) call CreateItem(1227895088, - 3071.9, - 7039.2) call CreateItem(1227895088, - 3134.2, - 7044.2) call CreateItem(1227895088, 4734.6, - 6775.5) call CreateItem(1227895088, 4387.1, - 4166.0) call CreateItem(1227895088, 1533.9, - 5637.5) call CreateItem(1227895088, - 1272.9, - 6401.0) call CreateItem(1227895088, - 4218.0, - 5127.8) call CreateItem(1227895088, 4351.9, - 4737.4) call CreateItem(1227895088, 2551.1, - 7173.8) call CreateItem(1227895088, 2748.9, - 4658.5) call CreateItem(1227895088, - 1929.1, - 3851.7) call CreateItem(1227895088, - 2302.7, - 4229.0) call CreateItem(1227895088, - 147.8, - 4619.9) call CreateItem(1227895088, - 4211.2, - 6531.3) call CreateItem(1227895088, 1652.8, - 5772.4) call CreateItem(1227895088, 4964.5, - 6771.4) call CreateItem(1227895088, - 2535.3, - 5737.3) call CreateItem(1227895088, - 2558.1, - 5797.3) call CreateItem(1227895088, - 2400.4, - 5515.1) call CreateItem(1227895088, - 2477.1, - 5544.9) call CreateItem(1227895088, 150.1, - 4362.8) call CreateItem(1227895088, - 151.9, - 4331.0) endfunction function CreateNeutralPassive takes nothing returns nothing local player p = Player(PLAYER_NEUTRAL_PASSIVE) set gg_unit_sick_0012 = CreateUnit(p, 1936286571, 6982.1, - 4352.8, 214.330) set gg_unit_sick_0013 = CreateUnit(p, 1936286571, 5302.9, - 6244.3, 214.330) set gg_unit_sick_0014 = CreateUnit(p, 1936286571, 5150.6, - 6244.3, 214.330) set gg_unit_bisk_0018 = CreateUnit(p, 1651077995, 6687.5, - 6065.3, 151.979) set gg_unit_bisk_0020 = CreateUnit(p, 1651077995, 5711.5, - 5098.9, 232.972) set gg_unit_knck_0033 = CreateUnit(p, 1802396523, 6229.0, - 3870.0, 167.030) set gg_unit_knck_0034 = CreateUnit(p, 1802396523, 5101.7, - 4444.1, 106.560) set gg_unit_sick_0036 = CreateUnit(p, 1936286571, 4334.4, - 5872.7, 214.330) set gg_unit_sgrk_0038 = CreateUnit(p, 1936159339, - 124.0, - 4804.8, 271.648) set gg_unit_sgrk_0039 = CreateUnit(p, 1936159339, 118.5, - 4815.4, 269.562) set gg_unit_knck_0053 = CreateUnit(p, 1802396523, - 1842.6, - 6153.8, 106.560) set gg_unit_knck_0054 = CreateUnit(p, 1802396523, - 897.4, - 6648.0, 106.560) set gg_unit_bsak_0080 = CreateUnit(p, 1651728747, 1322.0, - 7034.5, 294.629) set gg_unit_bsak_0081 = CreateUnit(p, 1651728747, 2670.4, - 5776.1, 78.346) set gg_unit_dims_0100 = CreateUnit(p, 1684630899, - 186.0, - 6150.9, 213.890) set gg_unit_bsak_0104 = CreateUnit(p, 1651728747, 1653.8, - 7047.1, 258.461) set gg_unit_ssak_0120 = CreateUnit(p, 1936941419, 2936.1, - 5378.4, 11.701) set gg_unit_ssak_0121 = CreateUnit(p, 1936941419, 3192.2, - 4959.9, 37.530) set gg_unit_ssak_0122 = CreateUnit(p, 1936941419, 3888.3, - 4974.1, 20.248) set gg_unit_ssak_0123 = CreateUnit(p, 1936941419, 2816.7, - 6021.1, 345.267) set gg_unit_ssak_0124 = CreateUnit(p, 1936941419, 3820.3, - 6813.3, 11.701) set gg_unit_ssak_0125 = CreateUnit(p, 1936941419, 3074.3, - 6143.2, 11.701) set gg_unit_bsak_0127 = CreateUnit(p, 1651728747, 3682.5, - 6428.9, 15.293) set gg_unit_bsak_0128 = CreateUnit(p, 1651728747, 3599.9, - 6896.9, 221.118) set gg_unit_spnr_0129 = CreateUnit(p, 1936748146, - 2568.0, - 7165.5, 279.281) set gg_unit_spnr_0130 = CreateUnit(p, 1936748146, - 2812.7, - 6659.0, 9.635) set gg_unit_bgrk_0145 = CreateUnit(p, 1650946667, 622.4, - 4978.6, 177.990) set gg_unit_spnr_0147 = CreateUnit(p, 1936748146, - 3848.1, - 6833.3, 191.355) set gg_unit_airk_0149 = CreateUnit(p, 1634300523, - 1024.0, - 4331.4, 201.480) set gg_unit_sgrk_0153 = CreateUnit(p, 1936159339, - 276.7, - 5498.4, 356.673) set gg_unit_glve_0156 = CreateUnit(p, 1735161445, - 2298.9, - 7174.0, 305.445) set gg_unit_spnr_0157 = CreateUnit(p, 1936748146, - 3003.3, - 5331.1, 71.897) set gg_unit_glve_0158 = CreateUnit(p, 1735161445, - 2868.2, - 6868.9, 160.548) set gg_unit_glve_0159 = CreateUnit(p, 1735161445, - 2663.1, - 6633.9, 160.548) set gg_unit_glve_0160 = CreateUnit(p, 1735161445, - 2828.3, - 6698.8, 160.548) set gg_unit_spnr_0161 = CreateUnit(p, 1936748146, - 3149.6, - 4615.2, 187.202) set gg_unit_spnr_0162 = CreateUnit(p, 1936748146, - 2702.2, - 3967.0, 196.672) set gg_unit_scik_0210 = CreateUnit(p, 1935894891, - 4223.3, - 6896.7, 228.358) set gg_unit_scik_0211 = CreateUnit(p, 1935894891, - 4231.1, - 7047.3, 228.358) set gg_unit_scik_0213 = CreateUnit(p, 1935894891, - 2314.0, - 5244.7, 136.430) set gg_unit_scik_0214 = CreateUnit(p, 1935894891, - 2291.0, - 5374.2, 136.430) set gg_unit_scik_0215 = CreateUnit(p, 1935894891, - 3175.3, - 4461.5, 88.805) call SetUnitState(gg_unit_scik_0215, UNIT_STATE_MANA, 0.) set gg_unit_scik_0216 = CreateUnit(p, 1935894891, - 3278.2, - 4652.1, 176.970) call SetUnitState(gg_unit_scik_0216, UNIT_STATE_MANA, 0.) set gg_unit_scik_0217 = CreateUnit(p, 1935894891, - 2974.3, - 4709.1, 11.117) call SetUnitState(gg_unit_scik_0217, UNIT_STATE_MANA, 0.) set gg_unit_scik_0218 = CreateUnit(p, 1935894891, - 4730.5, - 6657.7, 228.358) set gg_unit_scik_0219 = CreateUnit(p, 1935894891, - 4227.5, - 7194.6, 228.358) set gg_unit_bcik_0220 = CreateUnit(p, 1650682219, - 2689.3, - 4154.3, 173.698) call SetUnitState(gg_unit_bcik_0220, UNIT_STATE_MANA, 0.) set gg_unit_scik_0221 = CreateUnit(p, 1935894891, - 4708.8, - 5117.0, 214.220) set gg_unit_scik_0222 = CreateUnit(p, 1935894891, - 4898.9, - 5499.6, 214.220) set gg_unit_bcik_0225 = CreateUnit(p, 1650682219, - 4128.7, - 4544.5, 117.546) set gg_unit_scik_0260 = CreateUnit(p, 1935894891, - 3855.1, - 6773.1, 275.361) set gg_unit_scik_0261 = CreateUnit(p, 1935894891, - 3893.9, - 6569.4, 93.847) set gg_unit_bcik_0262 = CreateUnit(p, 1650682219, - 3563.7, - 6527.4, 73.303) set gg_unit_scik_0263 = CreateUnit(p, 1935894891, - 3013.2, - 6283.2, 0.670) set gg_unit_bcik_0266 = CreateUnit(p, 1650682219, - 3701.0, - 7187.8, 49.209) set gg_unit_scik_0267 = CreateUnit(p, 1935894891, - 4409.7, - 6029.0, 114.569) set gg_unit_scik_0268 = CreateUnit(p, 1935894891, - 3473.7, - 5753.8, 315.779) set gg_unit_scik_0269 = CreateUnit(p, 1935894891, - 3790.4, - 5918.8, 128.445) set gg_unit_scik_0270 = CreateUnit(p, 1935894891, - 4418.6, - 6654.2, 228.358) set gg_unit_scik_0271 = CreateUnit(p, 1935894891, - 3062.3, - 5408.0, 41.036) call SetUnitState(gg_unit_scik_0271, UNIT_STATE_MANA, 0.) set gg_unit_scik_0272 = CreateUnit(p, 1935894891, - 2819.8, - 5516.3, 42.306) call SetUnitState(gg_unit_scik_0272, UNIT_STATE_MANA, 0.) set gg_unit_scik_0273 = CreateUnit(p, 1935894891, - 3194.4, - 5523.4, 44.570) call SetUnitState(gg_unit_scik_0273, UNIT_STATE_MANA, 0.) set gg_unit_scik_0274 = CreateUnit(p, 1935894891, - 3062.8, - 5320.3, 324.033) call SetUnitState(gg_unit_scik_0274, UNIT_STATE_MANA, 0.) set gg_unit_scik_0275 = CreateUnit(p, 1935894891, - 3254.9, - 5146.0, 319.182) call SetUnitState(gg_unit_scik_0275, UNIT_STATE_MANA, 0.) set gg_unit_scik_0276 = CreateUnit(p, 1935894891, - 2768.3, - 5579.5, 45.251) call SetUnitState(gg_unit_scik_0276, UNIT_STATE_MANA, 0.) set gg_unit_scik_0277 = CreateUnit(p, 1935894891, - 2935.2, - 5294.8, 224.828) call SetUnitState(gg_unit_scik_0277, UNIT_STATE_MANA, 0.) set gg_unit_scik_0278 = CreateUnit(p, 1935894891, - 2979.2, - 5329.6, 222.822) call SetUnitState(gg_unit_scik_0278, UNIT_STATE_MANA, 0.) set gg_unit_bcik_0280 = CreateUnit(p, 1650682219, - 3406.0, - 5248.3, 117.546) endfunction function CreateNeutralPassiveBuildings takes nothing returns nothing local player p = Player(PLAYER_NEUTRAL_PASSIVE) set gg_unit_revp_0002 = CreateUnit(p, 1919252080, 5632.0, - 6912.0, 270.000) call CreateUnit(p, 1651468643, 4608.0, - 6976.0, 270.000) call CreateUnit(p, 1651468643, 6528.0, - 7232.0, 270.000) call CreateUnit(p, 1651468643, 6016.0, - 5824.0, 270.000) call CreateUnit(p, 1936681315, 5184.0, - 7040.0, 270.000) call CreateUnit(p, 1936681315, 6144.0, - 5824.0, 270.000) call CreateUnit(p, 1936681315, 6528.0, - 5568.0, 270.000) call CreateUnit(p, 1936681315, 6656.0, - 6912.0, 270.000) set gg_unit_dor2_0011 = CreateUnit(p, 1685025330, 5440.0, - 5568.0, 270.000) call CreateUnit(p, 1936681315, 5376.0, - 4800.0, 270.000) call CreateUnit(p, 1651468643, 2304.0, - 4160.0, 270.000) call CreateUnit(p, 1651468643, 1536.0, - 3776.0, 270.000) call CreateUnit(p, 1936681315, 2240.0, - 3776.0, 270.000) call CreateUnit(p, 1651468643, 6592.0, - 7104.0, 270.000) set gg_unit_revp_0022 = CreateUnit(p, 1919252080, 512.0, - 6912.0, 270.000) set gg_unit_dor2_0023 = CreateUnit(p, 1685025330, 6336.0, - 6592.0, 270.000) call CreateUnit(p, 1685025330, 0.0, - 4736.0, 270.000) call CreateUnit(p, 1651468643, 5376.0, - 4608.0, 270.000) call CreateUnit(p, 1651468643, 5760.0, - 4864.0, 270.000) call CreateUnit(p, 1936679796, - 3776.0, - 6784.0, 270.000) call CreateUnit(p, 1936681315, 5760.0, - 4800.0, 270.000) call CreateUnit(p, 1651468643, 6016.0, - 4544.0, 270.000) call CreateUnit(p, 1936681315, 5760.0, - 4032.0, 270.000) call CreateUnit(p, 1936681315, 4992.0, - 4096.0, 270.000) call CreateUnit(p, 1651468643, 6656.0, - 3968.0, 270.000) call CreateUnit(p, 1936681315, 4608.0, - 5568.0, 270.000) call CreateUnit(p, 1936680818, 64.0, - 6080.0, 270.000) call CreateUnit(p, 1651468146, - 1408.0, - 6976.0, 270.000) call CreateUnit(p, 1936680818, - 1728.0, - 7104.0, 270.000) call CreateUnit(p, 1936680818, 128.0, - 7104.0, 270.000) set gg_unit_tele_0044 = CreateUnit(p, 1952803941, - 1280.0, - 3840.0, 270.000) call CreateUnit(p, 1936680818, - 640.0, - 4032.0, 270.000) call CreateUnit(p, 1936680818, - 768.0, - 3840.0, 270.000) call CreateUnit(p, 1936680818, 0.0, - 5760.0, 270.000) call CreateUnit(p, 1936680818, 256.0, - 5504.0, 270.000) call CreateUnit(p, 1651468146, - 1024.0, - 6400.0, 270.000) set gg_unit_arca_0050 = CreateUnit(p, 1634886497, 0.0, - 5056.0, 270.000) call CreateUnit(p, 1936680818, 192.0, - 4288.0, 270.000) call CreateUnit(p, 1936680818, 0.0, - 5248.0, 270.000) call CreateUnit(p, 1651468643, 2176.0, - 4160.0, 270.000) set gg_unit_revp_0059 = CreateUnit(p, 1919252080, 4864.0, - 4736.0, 270.000) set gg_unit_tele_0061 = CreateUnit(p, 1952803941, 4352.0, - 3968.0, 270.000) set gg_unit_fnt2_0065 = CreateUnit(p, 1718514738, 3456.0, - 3968.0, 270.000) set gg_unit_wayp_0066 = CreateUnit(p, 2002876784, 128.0, - 6016.0, 270.000) set gg_unit_fnt2_0067 = CreateUnit(p, 1718514738, 3456.0, - 7168.0, 270.000) set gg_unit_wayp_0068 = CreateUnit(p, 2002876784, 128.0, - 6144.0, 270.000) call CreateUnit(p, 1651468643, 2176.0, - 4544.0, 270.000) call CreateUnit(p, 1936681315, 1920.0, - 5248.0, 270.000) call CreateUnit(p, 1936681315, 1600.0, - 5056.0, 270.000) call CreateUnit(p, 1651468643, 1984.0, - 5824.0, 270.000) call CreateUnit(p, 1651468643, 1408.0, - 5568.0, 270.000) set gg_unit_fnt2_0074 = CreateUnit(p, 1718514738, 3328.0, - 5952.0, 270.000) call CreateUnit(p, 1848651864, 2304.0, - 5888.0, 270.000) set gg_unit_exec_0076 = CreateUnit(p, 1702389091, - 640.0, - 4608.0, 270.000) call CreateUnit(p, 1848651864, 3072.0, - 5696.0, 270.000) set gg_unit_wayp_0078 = CreateUnit(p, 2002876784, 0.0, - 6144.0, 270.000) call CreateUnit(p, 1848651864, 3712.0, - 6144.0, 270.000) call CreateUnit(p, 1848651864, 2432.0, - 5888.0, 270.000) call CreateUnit(p, 1848651864, 2304.0, - 6400.0, 270.000) call CreateUnit(p, 1848651864, 1984.0, - 6272.0, 270.000) set gg_unit_revp_0085 = CreateUnit(p, 1919252080, 3456.0, - 4160.0, 270.000) set gg_unit_dor2_0087 = CreateUnit(p, 1685025330, 2752.0, - 4288.0, 270.000) call CreateUnit(p, 1848651864, 3712.0, - 5248.0, 270.000) call CreateUnit(p, 1848651864, 3328.0, - 5504.0, 270.000) call CreateUnit(p, 1848651864, 3648.0, - 5504.0, 270.000) call CreateUnit(p, 1848651864, 2880.0, - 5440.0, 270.000) call CreateUnit(p, 1848651864, 1536.0, - 6848.0, 270.000) call CreateUnit(p, 1651468643, 6656.0, - 6976.0, 270.000) call CreateUnit(p, 1936681315, 6528.0, - 7168.0, 270.000) call CreateUnit(p, 1651468643, 5760.0, - 5312.0, 270.000) call CreateUnit(p, 1848651864, 2176.0, - 6080.0, 270.000) call CreateUnit(p, 1848651864, 2240.0, - 6144.0, 270.000) set gg_unit_wayp_0099 = CreateUnit(p, 2002876784, 0.0, - 6016.0, 270.000) set gg_unit_wayp_0101 = CreateUnit(p, 2002876784, - 896.0, - 4224.0, 270.000) set gg_unit_wayp_0102 = CreateUnit(p, 2002876784, - 896.0, - 3840.0, 270.000) call CreateUnit(p, 1936679796, - 4288.0, - 6592.0, 270.000) call CreateUnit(p, 1936679796, - 4352.0, - 6464.0, 270.000) call CreateUnit(p, 1936681315, 2048.0, - 4160.0, 270.000) call CreateUnit(p, 1848651864, 1408.0, - 4608.0, 270.000) call CreateUnit(p, 1848651864, 3392.0, - 5184.0, 270.000) call CreateUnit(p, 1848651864, 2432.0, - 6080.0, 270.000) set gg_unit_wayp_0114 = CreateUnit(p, 2002876784, - 512.0, - 3840.0, 270.000) set gg_unit_wayp_0116 = CreateUnit(p, 2002876784, - 320.0, - 4224.0, 270.000) set gg_unit_uncr_0117 = CreateUnit(p, 1970168690, - 320.0, - 4416.0, 270.000) set gg_unit_unre_0118 = CreateUnit(p, 1970172517, - 512.0, - 4096.0, 270.000) call CreateUnit(p, 1936680818, - 768.0, - 3776.0, 270.000) call CreateUnit(p, 1651468643, 1728.0, - 5120.0, 270.000) call CreateUnit(p, 1848651864, 2496.0, - 6144.0, 270.000) call CreateUnit(p, 1936680818, - 704.0, - 4352.0, 270.000) call CreateUnit(p, 1936680818, - 768.0, - 4416.0, 270.000) call CreateUnit(p, 1936680818, - 832.0, - 4352.0, 270.000) set gg_unit_dor2_0136 = CreateUnit(p, 1685025330, 2752.0, - 4416.0, 270.000) call CreateUnit(p, 1651468643, 2560.0, - 4096.0, 270.000) call CreateUnit(p, 1651468643, 2048.0, - 4160.0, 270.000) call CreateUnit(p, 1651468643, 1920.0, - 4224.0, 270.000) call CreateUnit(p, 1651468643, 1664.0, - 4480.0, 270.000) set gg_unit_tele_0141 = CreateUnit(p, 1952803941, 2432.0, - 6656.0, 270.000) call CreateUnit(p, 1936680818, - 896.0, - 4352.0, 270.000) call CreateUnit(p, 1919252080, 0.0, - 4480.0, 270.000) call CreateUnit(p, 1936680818, - 960.0, - 4416.0, 270.000) set gg_unit_tele_0150 = CreateUnit(p, 1952803941, - 6656.0, - 5760.0, 270.000) set gg_unit_jump_0151 = CreateUnit(p, 1786080624, 3328.0, - 6272.0, 270.000) set gg_unit_jump_0152 = CreateUnit(p, 1786080624, 3456.0, - 6528.0, 270.000) call CreateUnit(p, 1651468643, 2048.0, - 4480.0, 270.000) call CreateUnit(p, 1651468643, 1856.0, - 5184.0, 270.000) call CreateUnit(p, 1936679796, - 4288.0, - 6528.0, 270.000) call CreateUnit(p, 1936679796, - 4032.0, - 6656.0, 270.000) call CreateUnit(p, 1651467124, - 2752.0, - 6464.0, 270.000) call CreateUnit(p, 1936679796, - 3392.0, - 6912.0, 270.000) call CreateUnit(p, 1936679796, - 3584.0, - 6848.0, 270.000) call CreateUnit(p, 1936679796, - 3328.0, - 7040.0, 270.000) call CreateUnit(p, 1936679796, - 3520.0, - 7168.0, 270.000) call CreateUnit(p, 1936679796, - 3520.0, - 7040.0, 270.000) call CreateUnit(p, 1936679796, - 3328.0, - 7168.0, 270.000) call CreateUnit(p, 1685025330, - 2496.0, - 4864.0, 270.000) call CreateUnit(p, 1651468146, - 384.0, - 6592.0, 270.000) call CreateUnit(p, 1936680818, - 512.0, - 7104.0, 270.000) call CreateUnit(p, 1936680818, - 576.0, - 6784.0, 270.000) call CreateUnit(p, 1936680818, - 576.0, - 7040.0, 270.000) call CreateUnit(p, 1936679796, - 2496.0, - 4224.0, 270.000) call CreateUnit(p, 1936679796, - 2496.0, - 4288.0, 270.000) call CreateUnit(p, 1936679796, - 2624.0, - 4416.0, 270.000) call CreateUnit(p, 1936680818, - 704.0, - 3904.0, 270.000) call CreateUnit(p, 1936680818, - 704.0, - 3968.0, 270.000) call CreateUnit(p, 1752131442, - 1728.0, - 5888.0, 270.000) call CreateUnit(p, 1752131442, - 1600.0, - 5888.0, 270.000) call CreateUnit(p, 1752131442, - 1472.0, - 5952.0, 270.000) call CreateUnit(p, 1752131442, - 1344.0, - 5952.0, 270.000) call CreateUnit(p, 1752131442, - 1216.0, - 5888.0, 270.000) call CreateUnit(p, 1752131442, - 1088.0, - 5824.0, 270.000) call CreateUnit(p, 1752131442, - 960.0, - 5888.0, 270.000) call CreateUnit(p, 1752131442, - 832.0, - 5952.0, 270.000) call CreateUnit(p, 1752131442, 128.0, - 5632.0, 270.000) call CreateUnit(p, 1752131442, - 1856.0, - 5824.0, 270.000) call CreateUnit(p, 1752131442, - 1920.0, - 5760.0, 270.000) call CreateUnit(p, 1752131442, - 1280.0, - 4032.0, 270.000) call CreateUnit(p, 1936679796, - 3840.0, - 6080.0, 270.000) call CreateUnit(p, 1936680818, - 128.0, - 6336.0, 270.000) call CreateUnit(p, 1936679796, - 4096.0, - 4352.0, 270.000) call CreateUnit(p, 1936679796, - 4800.0, - 4096.0, 270.000) set gg_unit_revp_0226 = CreateUnit(p, 1919252080, - 2432.0, - 6144.0, 270.000) call CreateUnit(p, 1919252080, - 3264.0, - 6272.0, 270.000) call CreateUnit(p, 1919252080, - 2624.0, - 4672.0, 270.000) call CreateUnit(p, 1685025330, - 4736.0, - 4608.0, 270.000) set gg_unit_tele_0234 = CreateUnit(p, 1952803941, - 4736.0, - 5632.0, 270.000) call CreateUnit(p, 1651467124, - 4416.0, - 6144.0, 270.000) call CreateUnit(p, 1936679796, - 3648.0, - 6336.0, 270.000) call CreateUnit(p, 1936679796, - 4032.0, - 5504.0, 270.000) call CreateUnit(p, 1936679796, - 4096.0, - 5504.0, 270.000) call CreateUnit(p, 1936679796, - 4160.0, - 5568.0, 270.000) call CreateUnit(p, 1936679796, - 3456.0, - 4480.0, 270.000) call CreateUnit(p, 1936679796, - 3328.0, - 4288.0, 270.000) call CreateUnit(p, 1936679796, - 3136.0, - 3968.0, 270.000) call CreateUnit(p, 1936679796, - 4416.0, - 4416.0, 270.000) call CreateUnit(p, 1936679796, - 4288.0, - 4544.0, 270.000) call CreateUnit(p, 1936679796, - 2624.0, - 6976.0, 270.000) call CreateUnit(p, 1936679796, - 4352.0, - 6528.0, 270.000) call CreateUnit(p, 1936679796, - 4672.0, - 4992.0, 270.000) call CreateUnit(p, 1936679796, - 3456.0, - 5184.0, 270.000) call CreateUnit(p, 1936679796, - 3520.0, - 5184.0, 270.000) call CreateUnit(p, 1936679796, - 3584.0, - 5184.0, 270.000) call CreateUnit(p, 1936679796, - 2944.0, - 5824.0, 270.000) call CreateUnit(p, 1936680818, - 192.0, - 4288.0, 270.000) call CreateUnit(p, 1936679796, - 4608.0, - 6912.0, 270.000) call CreateUnit(p, 1936679796, - 4608.0, - 6976.0, 270.000) call CreateUnit(p, 1936679796, - 4608.0, - 7040.0, 270.000) call CreateUnit(p, 1685025330, - 4032.0, - 5824.0, 270.000) call CreateUnit(p, 1936679796, - 3840.0, - 6848.0, 270.000) call CreateUnit(p, 1651468643, 5056.0, - 6720.0, 270.000) call CreateUnit(p, 1936679796, - 3264.0, - 7104.0, 270.000) call CreateUnit(p, 1936679796, - 3456.0, - 6784.0, 270.000) call CreateUnit(p, 1936679796, - 2880.0, - 6976.0, 270.000) call CreateUnit(p, 1936679796, - 3968.0, - 6528.0, 270.000) call CreateUnit(p, 1936679796, - 3648.0, - 5568.0, 270.000) call CreateUnit(p, 1936679796, - 4160.0, - 6144.0, 270.000) call CreateUnit(p, 1936680818, - 1088.0, - 4288.0, 270.000) call CreateUnit(p, 1651468643, - 5760.0, - 6912.0, 270.000) call CreateUnit(p, 1651468643, - 6016.0, - 6912.0, 270.000) call CreateUnit(p, 1651468643, - 6016.0, - 6656.0, 270.000) call CreateUnit(p, 1651468643, 5952.0, - 6208.0, 270.000) call CreateUnit(p, 1651468643, - 6272.0, - 6912.0, 270.000) set gg_unit_revp_0322 = CreateUnit(p, 1919252080, - 6016.0, - 5760.0, 270.000) set gg_unit_tele_0323 = CreateUnit(p, 1952803941, - 5248.0, - 5632.0, 270.000) set gg_unit_tele_0324 = CreateUnit(p, 1952803941, - 5248.0, - 5888.0, 270.000) call CreateUnit(p, 1936679796, - 4608.0, - 6848.0, 270.000) call CreateUnit(p, 1651468643, - 6016.0, - 7168.0, 270.000) call CreateUnit(p, 1936681315, - 6528.0, - 6912.0, 270.000) call CreateUnit(p, 1936681315, 4288.0, - 6912.0, 270.000) call CreateUnit(p, 1936681315, - 6528.0, - 7104.0, 270.000) call CreateUnit(p, 1651468643, 704.0, 7232.0, 270.000) call CreateUnit(p, 1936681315, - 6400.0, - 6784.0, 270.000) call CreateUnit(p, 1651468643, 704.0, 7872.0, 270.000) call CreateUnit(p, 1651468643, - 1600.0, 7872.0, 270.000) call CreateUnit(p, 1651468643, - 1600.0, 7232.0, 270.000) call CreateUnit(p, 1651468643, - 448.0, 7872.0, 270.000) call CreateUnit(p, 1651468643, - 448.0, 7232.0, 270.000) call CreateUnit(p, 1651468643, 4672.0, - 6336.0, 270.000) call CreateUnit(p, 1651468643, 1600.0, - 4736.0, 270.000) call CreateUnit(p, 1936681315, 1600.0, - 4608.0, 270.000) call CreateUnit(p, 1651468643, 5056.0, - 6208.0, 270.000) call CreateUnit(p, 1936681315, 6464.0, - 6720.0, 270.000) call CreateUnit(p, 1936681315, 6400.0, - 6784.0, 270.000) call CreateUnit(p, 1936681315, 1920.0, - 4224.0, 270.000) call CreateUnit(p, 1936679796, - 3648.0, - 6272.0, 270.000) call CreateUnit(p, 1651468643, 6400.0, - 6848.0, 270.000) call CreateUnit(p, 1936681315, 6400.0, - 6976.0, 270.000) call CreateUnit(p, 1936681315, 6400.0, - 6912.0, 270.000) call CreateUnit(p, 1651468643, 6208.0, - 6272.0, 270.000) call CreateUnit(p, 1936681315, 6272.0, - 6272.0, 270.000) call CreateUnit(p, 1651468643, 6720.0, - 6016.0, 270.000) call CreateUnit(p, 1651468643, 6592.0, - 5440.0, 270.000) call CreateUnit(p, 1651468643, 4480.0, - 5632.0, 270.000) call CreateUnit(p, 1936681315, 5056.0, - 4992.0, 270.000) call CreateUnit(p, 1651468643, 5376.0, - 4736.0, 270.000) call CreateUnit(p, 1651468643, 5248.0, - 3840.0, 270.000) call CreateUnit(p, 1651468643, 1728.0, - 3968.0, 270.000) call CreateUnit(p, 1651468643, 1600.0, - 3904.0, 270.000) call CreateUnit(p, 1936681315, 1664.0, - 3968.0, 270.000) call CreateUnit(p, 1936681315, 1600.0, - 3840.0, 270.000) call CreateUnit(p, 1651468643, 1408.0, - 4416.0, 270.000) call CreateUnit(p, 1651468643, 2304.0, - 4864.0, 270.000) call CreateUnit(p, 1651468643, 1536.0, - 5504.0, 270.000) call CreateUnit(p, 1936681315, 1600.0, - 5568.0, 270.000) call CreateUnit(p, 1936681315, 1600.0, - 5504.0, 270.000) call CreateUnit(p, 1936681315, 1408.0, - 5504.0, 270.000) call CreateUnit(p, 1634886497, - 128.0, - 5120.0, 270.000) call CreateUnit(p, 1634886497, - 128.0, - 5248.0, 270.000) call CreateUnit(p, 1634886497, 128.0, - 5120.0, 270.000) call CreateUnit(p, 1634886497, 128.0, - 5248.0, 270.000) call CreateUnit(p, 1634886497, 0.0, - 4928.0, 270.000) call CreateUnit(p, 1936680818, - 128.0, - 6400.0, 270.000) call CreateUnit(p, 1936680818, - 128.0, - 6464.0, 270.000) call CreateUnit(p, 1651468146, 128.0, - 6464.0, 270.000) call CreateUnit(p, 1651468146, - 448.0, - 6272.0, 270.000) call CreateUnit(p, 1936680818, - 960.0, - 7168.0, 270.000) call CreateUnit(p, 1936680818, - 896.0, - 6848.0, 270.000) call CreateUnit(p, 1634886497, 256.0, - 4480.0, 270.000) call CreateUnit(p, 1634886497, 384.0, - 4480.0, 270.000) call CreateUnit(p, 1634886497, 512.0, - 4480.0, 270.000) call CreateUnit(p, 1634886497, 640.0, - 4480.0, 270.000) call CreateUnit(p, 1634886497, 768.0, - 4480.0, 270.000) call CreateUnit(p, 1936680818, 320.0, - 4352.0, 270.000) call CreateUnit(p, 1936680818, 384.0, - 4352.0, 270.000) call CreateUnit(p, 1936680818, 448.0, - 4352.0, 270.000) call CreateUnit(p, 1936680818, 512.0, - 4352.0, 270.000) call CreateUnit(p, 1936680818, 576.0, - 4352.0, 270.000) call CreateUnit(p, 1936680818, 320.0, - 4608.0, 270.000) call CreateUnit(p, 1936680818, 384.0, - 4544.0, 270.000) call CreateUnit(p, 1936680818, 448.0, - 4544.0, 270.000) call CreateUnit(p, 1936680818, 512.0, - 4544.0, 270.000) call CreateUnit(p, 1936680818, 576.0, - 4608.0, 270.000) call CreateUnit(p, 1752131442, 640.0, - 4352.0, 270.000) call CreateUnit(p, 1752131442, 768.0, - 4352.0, 270.000) call CreateUnit(p, 1752131442, 640.0, - 4608.0, 270.000) call CreateUnit(p, 1752131442, 640.0, - 4736.0, 270.000) call CreateUnit(p, 1752131442, 256.0, - 4608.0, 270.000) call CreateUnit(p, 1752131442, 256.0, - 4736.0, 270.000) call CreateUnit(p, 1752131442, 256.0, - 4352.0, 270.000) call CreateUnit(p, 1752131442, 256.0, - 4288.0, 270.000) call CreateUnit(p, 1752131442, 128.0, - 4224.0, 270.000) call CreateUnit(p, 1936680818, - 1280.0, - 5440.0, 270.000) call CreateUnit(p, 1936680818, - 1280.0, - 5568.0, 270.000) call CreateUnit(p, 1936680818, - 1216.0, - 5504.0, 270.000) call CreateUnit(p, 1936680818, - 1152.0, - 5632.0, 270.000) call CreateUnit(p, 1936680818, - 1152.0, - 5568.0, 270.000) call CreateUnit(p, 1936680818, - 1216.0, - 5696.0, 270.000) call CreateUnit(p, 1718514738, 2240.0, - 6528.0, 270.000) call CreateUnit(p, 1848651864, 2112.0, - 6336.0, 270.000) call CreateUnit(p, 1752131442, 384.0, - 5632.0, 270.000) call CreateUnit(p, 1752131442, - 128.0, - 5632.0, 270.000) call CreateUnit(p, 1936680818, 0.0, - 5184.0, 270.000) call CreateUnit(p, 1936679796, - 2816.0, - 6592.0, 270.000) call CreateUnit(p, 1936679796, - 2752.0, - 6464.0, 270.000) call CreateUnit(p, 1936679796, - 2560.0, - 6976.0, 270.000) call CreateUnit(p, 1936679796, - 2496.0, - 6976.0, 270.000) endfunction function CreateBuildingsForPlayer10 takes nothing returns nothing local player p = Player(10) set gg_unit_tele_0115 = CreateUnit(p, 1952803941, - 5888.0, - 5184.0, 270.000) endfunction function CreateBuildingsForPlayer11 takes nothing returns nothing local player p = Player(11) set gg_unit_tele_0143 = CreateUnit(p, 1952803941, - 5632.0, - 5184.0, 270.000) endfunction function CreateBuildingsForPlayer8 takes nothing returns nothing local player p = Player(8) set gg_unit_tele_0058 = CreateUnit(p, 1952803941, - 6400.0, - 5184.0, 270.000) endfunction function CreateBuildingsForPlayer9 takes nothing returns nothing local player p = Player(9) set gg_unit_tele_0063 = CreateUnit(p, 1952803941, - 6144.0, - 5184.0, 270.000) endfunction function CreatePlayerBuildings takes nothing returns nothing call CreateBuildingsForPlayer8() call CreateBuildingsForPlayer9() call CreateBuildingsForPlayer10() call CreateBuildingsForPlayer11() endfunction function CreatePlayerUnits takes nothing returns nothing endfunction function CreateAllUnits takes nothing returns nothing call CreateNeutralPassiveBuildings() call CreatePlayerBuildings() call CreateNeutralPassive() call CreatePlayerUnits() endfunction function CreateCameras takes nothing returns nothing set gg_cam_Camera_001 = CreateCameraSetup() call CameraSetupSetField(gg_cam_Camera_001, CAMERA_FIELD_ZOFFSET, 0.0, 0.0) call CameraSetupSetField(gg_cam_Camera_001, CAMERA_FIELD_ROTATION, 148.3, 0.0) call CameraSetupSetField(gg_cam_Camera_001, CAMERA_FIELD_ANGLE_OF_ATTACK, 345.7, 0.0) call CameraSetupSetField(gg_cam_Camera_001, CAMERA_FIELD_TARGET_DISTANCE, 991.7, 0.0) call CameraSetupSetField(gg_cam_Camera_001, CAMERA_FIELD_ROLL, 0.0, 0.0) call CameraSetupSetField(gg_cam_Camera_001, CAMERA_FIELD_FIELD_OF_VIEW, 70.0, 0.0) call CameraSetupSetField(gg_cam_Camera_001, CAMERA_FIELD_FARZ, 5000.0, 0.0) call CameraSetupSetDestPosition(gg_cam_Camera_001, - 6863.5, 6652.6, 0.0) set gg_cam_BuilderSetupCam = CreateCameraSetup() call CameraSetupSetField(gg_cam_BuilderSetupCam, CAMERA_FIELD_ZOFFSET, 0.0, 0.0) call CameraSetupSetField(gg_cam_BuilderSetupCam, CAMERA_FIELD_ROTATION, 89.8, 0.0) call CameraSetupSetField(gg_cam_BuilderSetupCam, CAMERA_FIELD_ANGLE_OF_ATTACK, 299.9, 0.0) call CameraSetupSetField(gg_cam_BuilderSetupCam, CAMERA_FIELD_TARGET_DISTANCE, 769.7, 0.0) call CameraSetupSetField(gg_cam_BuilderSetupCam, CAMERA_FIELD_ROLL, 0.0, 0.0) call CameraSetupSetField(gg_cam_BuilderSetupCam, CAMERA_FIELD_FIELD_OF_VIEW, 70.0, 0.0) call CameraSetupSetField(gg_cam_BuilderSetupCam, CAMERA_FIELD_FARZ, 8857.8, 0.0) call CameraSetupSetDestPosition(gg_cam_BuilderSetupCam, - 4265.2, 7548.9, 0.0) set gg_cam_BuilderBuilderCam = CreateCameraSetup() call CameraSetupSetField(gg_cam_BuilderBuilderCam, CAMERA_FIELD_ZOFFSET, 0.0, 0.0) call CameraSetupSetField(gg_cam_BuilderBuilderCam, CAMERA_FIELD_ROTATION, 89.8, 0.0) call CameraSetupSetField(gg_cam_BuilderBuilderCam, CAMERA_FIELD_ANGLE_OF_ATTACK, 299.9, 0.0) call CameraSetupSetField(gg_cam_BuilderBuilderCam, CAMERA_FIELD_TARGET_DISTANCE, 636.2, 0.0) call CameraSetupSetField(gg_cam_BuilderBuilderCam, CAMERA_FIELD_ROLL, 0.0, 0.0) call CameraSetupSetField(gg_cam_BuilderBuilderCam, CAMERA_FIELD_FIELD_OF_VIEW, 70.0, 0.0) call CameraSetupSetField(gg_cam_BuilderBuilderCam, CAMERA_FIELD_FARZ, 8857.8, 0.0) call CameraSetupSetDestPosition(gg_cam_BuilderBuilderCam, - 3466.2, 7555.0, 0.0) set gg_cam_BlackCam = CreateCameraSetup() call CameraSetupSetField(gg_cam_BlackCam, CAMERA_FIELD_ZOFFSET, 0.0, 0.0) call CameraSetupSetField(gg_cam_BlackCam, CAMERA_FIELD_ROTATION, 89.8, 0.0) call CameraSetupSetField(gg_cam_BlackCam, CAMERA_FIELD_ANGLE_OF_ATTACK, 269.3, 0.0) call CameraSetupSetField(gg_cam_BlackCam, CAMERA_FIELD_TARGET_DISTANCE, 699.8, 0.0) call CameraSetupSetField(gg_cam_BlackCam, CAMERA_FIELD_ROLL, 0.0, 0.0) call CameraSetupSetField(gg_cam_BlackCam, CAMERA_FIELD_FIELD_OF_VIEW, 20.0, 0.0) call CameraSetupSetField(gg_cam_BlackCam, CAMERA_FIELD_FARZ, 101.0, 0.0) call CameraSetupSetDestPosition(gg_cam_BlackCam, - 2996.0, 7450.1, 0.0) set gg_cam_StdCam = CreateCameraSetup() call CameraSetupSetField(gg_cam_StdCam, CAMERA_FIELD_ZOFFSET, 0.0, 0.0) call CameraSetupSetField(gg_cam_StdCam, CAMERA_FIELD_ROTATION, 90.0, 0.0) call CameraSetupSetField(gg_cam_StdCam, CAMERA_FIELD_ANGLE_OF_ATTACK, 304.0, 0.0) call CameraSetupSetField(gg_cam_StdCam, CAMERA_FIELD_TARGET_DISTANCE, 1650.0, 0.0) call CameraSetupSetField(gg_cam_StdCam, CAMERA_FIELD_ROLL, 0.0, 0.0) call CameraSetupSetField(gg_cam_StdCam, CAMERA_FIELD_FIELD_OF_VIEW, 70.0, 0.0) call CameraSetupSetField(gg_cam_StdCam, CAMERA_FIELD_FARZ, 5000.0, 0.0) call CameraSetupSetDestPosition(gg_cam_StdCam, - 5869.2, - 6100.0, 0.0) set gg_cam_BuilderTilesCam = CreateCameraSetup() call CameraSetupSetField(gg_cam_BuilderTilesCam, CAMERA_FIELD_ZOFFSET, 0.0, 0.0) call CameraSetupSetField(gg_cam_BuilderTilesCam, CAMERA_FIELD_ROTATION, 90.1, 0.0) call CameraSetupSetField(gg_cam_BuilderTilesCam, CAMERA_FIELD_ANGLE_OF_ATTACK, 271.5, 0.0) call CameraSetupSetField(gg_cam_BuilderTilesCam, CAMERA_FIELD_TARGET_DISTANCE, 1024.5, 0.0) call CameraSetupSetField(gg_cam_BuilderTilesCam, CAMERA_FIELD_ROLL, 0.0, 0.0) call CameraSetupSetField(gg_cam_BuilderTilesCam, CAMERA_FIELD_FIELD_OF_VIEW, 70.0, 0.0) call CameraSetupSetField(gg_cam_BuilderTilesCam, CAMERA_FIELD_FARZ, 5000.0, 0.0) call CameraSetupSetDestPosition(gg_cam_BuilderTilesCam, - 2631.2, 7473.1, 0.0) set gg_cam_spaceycam = CreateCameraSetup() call CameraSetupSetField(gg_cam_spaceycam, CAMERA_FIELD_ZOFFSET, 0.0, 0.0) call CameraSetupSetField(gg_cam_spaceycam, CAMERA_FIELD_ROTATION, 90.0, 0.0) call CameraSetupSetField(gg_cam_spaceycam, CAMERA_FIELD_ANGLE_OF_ATTACK, 272.3, 0.0) call CameraSetupSetField(gg_cam_spaceycam, CAMERA_FIELD_TARGET_DISTANCE, 1488.9, 0.0) call CameraSetupSetField(gg_cam_spaceycam, CAMERA_FIELD_ROLL, 0.0, 0.0) call CameraSetupSetField(gg_cam_spaceycam, CAMERA_FIELD_FIELD_OF_VIEW, 70.0, 0.0) call CameraSetupSetField(gg_cam_spaceycam, CAMERA_FIELD_FARZ, 10000.0, 0.0) call CameraSetupSetDestPosition(gg_cam_spaceycam, - 2844.3, 7562.2, 0.0) endfunction function CreateRegions takes nothing returns nothing local weathereffect we set gg_rct_Choose = Rect( - 7488.0, 5856.0, - 5856.0, 7488.0) set we = AddWeatherEffect(gg_rct_Choose, 1397647475) call EnableWeatherEffect(we, true) set gg_rct_Region_002 = Rect( - 6976.0, - 4960.0, - 5056.0, - 1856.0) set gg_rct_Region_014 = Rect(928.0, 5184.0, 4160.0, 7104.0) set gg_rct_Region_015 = Rect(4160.0, 5184.0, 6976.0, 7104.0) set gg_rct_Region_000 = Rect( - 2112.0, - 7328.0, 960.0, - 3648.0) set gg_rct_Region_001 = Rect( - 5056.0, - 7328.0, - 2112.0, - 3648.0) set gg_rct_Region_003 = Rect( - 5056.0, - 3648.0, - 2368.0, - 1856.0) set gg_rct_Region_004 = Rect( - 6976.0, - 1856.0, - 2368.0, 704.0) set gg_rct_Region_005 = Rect( - 2368.0, - 3648.0, - 832.0, 704.0) set gg_rct_Region_006 = Rect( - 832.0, - 3648.0, 1472.0, - 1472.0) set gg_rct_Region_007 = Rect(1472.0, - 3648.0, 4160.0, - 1472.0) set gg_rct_Region_008 = Rect(1472.0, - 1472.0, 4160.0, 704.0) set gg_rct_Region_009 = Rect( - 4288.0, 704.0, - 1216.0, 4416.0) set gg_rct_Region_010 = Rect( - 1216.0, 704.0, 4160.0, 2880.0) set gg_rct_Region_011 = Rect(4160.0, - 3648.0, 7040.0, 704.0) set gg_rct_Region_012 = Rect(4160.0, 704.0, 6976.0, 2880.0) set gg_rct_Region_013 = Rect( - 1216.0, 2880.0, 6976.0, 5184.0) set gg_rct_Region_016 = Rect( - 1216.0, 5184.0, 928.0, 7104.0) set gg_rct_Region_017 = Rect( - 6976.0, 704.0, - 4288.0, 4416.0) set gg_rct_Region_018 = Rect(960.0, - 7328.0, 4160.0, - 3648.0) set gg_rct_Region_024 = Rect(4160.0, - 7328.0, 7040.0, - 3648.0) set gg_rct_Region_026 = Rect( - 832.0, - 1472.0, 1472.0, 704.0) set gg_rct_Start = Rect( - 6976.0, - 7328.0, - 5056.0, - 4960.0) set gg_rct_Region_023 = Rect( - 8192.0, - 7680.0, 7648.0, 8192.0) set gg_rct_coingamearea = Rect( - 4928.0, 7104.0, - 3680.0, 8000.0) set gg_rct_spaceygamearea = Rect( - 3584.0, 7136.0, - 1952.0, 7936.0) set gg_rct_coingamebounds = Rect( - 4320.0, 7520.0, - 4288.0, 7552.0) set gg_rct_spaceygamebounds = Rect( - 2720.0, 7584.0, - 2688.0, 7616.0) set gg_rct_slidegamearea = Rect( - 1696.0, 7136.0, 800.0, 7936.0) set gg_rct_slidegamebounds = Rect( - 1024.0, 7520.0, 96.0, 7552.0) set gg_rct_slidegamespawn = Rect( - 1408.0, 7136.0, 544.0, 7936.0) set gg_rct_Region_027 = Rect( - 4928.0, 4416.0, - 1216.0, 7104.0) set gg_rct_agargamearea = Rect(960.0, 7136.0, 2624.0, 7936.0) set gg_rct_agargamefoodspawn = Rect(1088.0, 7232.0, 2464.0, 7808.0) set gg_rct_agargamebounds = Rect(1760.0, 7520.0, 1792.0, 7552.0) set gg_rct_warlockgamearea = Rect(2656.0, 7136.0, 3872.0, 7936.0) set gg_rct_warlockgamebounds = Rect(3264.0, 7488.0, 3296.0, 7520.0) endfunction function InitTrig_Untitled_Trigger_005 takes nothing returns nothing set gg_trg_Untitled_Trigger_005 = CreateTrigger() call TriggerAddAction(gg_trg_Untitled_Trigger_005, ref_function_Trig_Untitled_Trigger_005_Actions) endfunction function InitCustomTriggers takes nothing returns nothing call InitTrig_Untitled_Trigger_005() endfunction function InitGlobals takes nothing returns nothing endfunction function InitSounds takes nothing returns nothing set gg_snd_ArrangedTeamInvitation = CreateSound("Sound\\Interface\\ArrangedTeamInvitation.wav", false, false, false, 10, 10, "") call SetSoundParamsFromLabel(gg_snd_ArrangedTeamInvitation, "ArrangedTeamInvitation") endfunction function Loglevel_getTag takes integer this_1 returns string local integer temp = this_1 if temp == 0 then return "|cffADADADtrace|r" elseif temp == 1 then return "|cff2685DCdebug|r" elseif temp == 2 then return "|cffFFCC00info|r" elseif temp == 3 then return "|cffF47E3Ewarning|r" else return "|cffFB2700error|r" endif endfunction function printLog_3942 takes player showTo, integer loglvl, string msg returns nothing local string compositeMsg if Printing_config_DEBUG_LEVEL <= loglvl then set compositeMsg = Loglevel_getTag(loglvl) + " - " + msg call DisplayTimedTextToPlayer(showTo, 0., 0., Printing_DEBUG_MSG_DURATION, compositeMsg) endif endfunction function Log_error takes string msg returns nothing call printLog_3942(Player_localPlayer, 4, msg) endfunction function compileError takes string msg returns nothing endfunction function hashtable_hasBoolean takes hashtable this_1, integer parentKey, integer childKey returns boolean return HaveSavedBoolean(this_1, parentKey, childKey) endfunction function hashtable_hasInt takes hashtable this_1, integer parentKey, integer childKey returns boolean return HaveSavedInteger(this_1, parentKey, childKey) endfunction function hashtable_loadBoolean takes hashtable this_1, integer parentKey, integer childKey returns boolean return LoadBoolean(this_1, parentKey, childKey) endfunction function hashtable_loadInt takes hashtable this_1, integer parentKey, integer childKey returns integer return LoadInteger(this_1, parentKey, childKey) endfunction function hashtable_saveBoolean takes hashtable this_1, integer parentKey, integer childKey, boolean value returns nothing call SaveBoolean(this_1, parentKey, childKey, value) endfunction function hashtable_saveInt takes hashtable this_1, integer parentKey, integer childKey, integer value returns nothing call SaveInteger(this_1, parentKey, childKey, value) endfunction function real_toInt takes real this_1 returns integer return R2I(this_1) endfunction function string_getHash takes string this_1 returns integer return StringHash(this_1) endfunction function error takes string msg returns nothing local integer hash if MagicFunctions_compiletime then call compileError("ERROR: " + msg) else if not ErrorHandling_suppressErrorMessages then set hash = string_getHash(msg) if hashtable_hasInt(ErrorHandling_HT, ErrorHandling_PRIMARY_ERROR_KEY, hash) then if hashtable_loadInt(ErrorHandling_HT, ErrorHandling_PRIMARY_ERROR_KEY, hash) + ErrorHandling_MUTE_ERROR_DURATION < GameTimer_currentTime then call Log_error(msg + "") call hashtable_saveInt(ErrorHandling_HT, ErrorHandling_PRIMARY_ERROR_KEY, hash, real_toInt(GameTimer_currentTime)) call hashtable_saveBoolean(ErrorHandling_HT, ErrorHandling_PRIMARY_ERROR_KEY, hash, false) elseif hashtable_hasBoolean(ErrorHandling_HT, ErrorHandling_PRIMARY_ERROR_KEY, hash) then if not hashtable_loadBoolean(ErrorHandling_HT, ErrorHandling_PRIMARY_ERROR_KEY, hash) then call Log_error("|cffFF3A29Excessive repeating errors are being omitted") call hashtable_saveBoolean(ErrorHandling_HT, ErrorHandling_PRIMARY_ERROR_KEY, hash, true) endif else call Log_error("|cffFF3A29Excessive repeating errors are being omitted") call hashtable_saveBoolean(ErrorHandling_HT, ErrorHandling_PRIMARY_ERROR_KEY, hash, true) endif else call hashtable_saveInt(ErrorHandling_HT, ErrorHandling_PRIMARY_ERROR_KEY, hash, real_toInt(GameTimer_currentTime)) call Log_error("Message: " + msg + "") endif endif set ErrorHandling_lastError = msg call I2S(1 / 0) endif endfunction function initCompiletimeState_0 takes nothing returns nothing set hashtable_compiletime_2520 = InitHashtable() set hashtable_compiletime_2519 = InitHashtable() set hashtable_compiletime_2518 = InitHashtable() set hashtable_compiletime_2517 = InitHashtable() set hashtable_compiletime = InitHashtable() call SaveInteger(hashtable_compiletime_2519, 1, -242600650, 0) call SaveInteger(hashtable_compiletime_2519, 1, 1132341824, 1) call SaveInteger(hashtable_compiletime_2519, 1, -647782241, 2) call SaveInteger(hashtable_compiletime_2519, 1, -854572045, 3) call SaveInteger(hashtable_compiletime_2519, 1, -680649701, 4) call SaveInteger(hashtable_compiletime_2519, 1, -943650483, 5) call SaveInteger(hashtable_compiletime_2519, 1, -671760605, 6) call SaveInteger(hashtable_compiletime_2519, 1, 349230650, 7) call SaveInteger(hashtable_compiletime_2519, 1, -1894922563, 8) call SaveInteger(hashtable_compiletime_2519, 1, -1474492777, 9) call SaveInteger(hashtable_compiletime_2519, 1, -1587459251, 10) call SaveInteger(hashtable_compiletime_2519, 1, -1676716706, 11) call SaveInteger(hashtable_compiletime_2519, 1, -1559655710, 12) call SaveInteger(hashtable_compiletime_2519, 1, -1663695754, 13) call SaveInteger(hashtable_compiletime_2519, 1, 597637742, 14) call SaveInteger(hashtable_compiletime_2519, 1, 789744696, 15) call SaveStr(hashtable_compiletime_2519, 2, 0, "") call SaveInteger(hashtable_compiletime_2519, 7, 0, 0) call SaveInteger(hashtable_compiletime_2519, 7, 1, 0) call SaveInteger(hashtable_compiletime_2519, 7, 2, 0) call SaveInteger(hashtable_compiletime_2519, 7, 3, 0) call SaveInteger(hashtable_compiletime_2519, 7, 4, 0) call SaveInteger(hashtable_compiletime_2519, 7, 5, 0) call SaveInteger(hashtable_compiletime_2519, 7, 6, 0) call SaveInteger(hashtable_compiletime_2519, 7, 7, 0) call SaveInteger(hashtable_compiletime_2519, 7, 8, 0) call SaveInteger(hashtable_compiletime_2519, 7, 9, 0) call SaveInteger(hashtable_compiletime_2519, 7, 10, 0) call SaveInteger(hashtable_compiletime_2519, 7, 11, 0) call SaveInteger(hashtable_compiletime_2519, 7, 12, 0) call SaveInteger(hashtable_compiletime_2519, 7, 13, 0) call SaveInteger(hashtable_compiletime_2519, 7, 14, 0) call SaveInteger(hashtable_compiletime_2519, 7, 15, 0) call SaveInteger(hashtable_compiletime_2519, 7, 16, 0) call SaveInteger(hashtable_compiletime_2519, 7, 17, 0) call SaveInteger(hashtable_compiletime_2519, 7, 18, 0) call SaveInteger(hashtable_compiletime_2519, 7, 19, 0) call SaveInteger(hashtable_compiletime_2519, 7, 20, 0) call SaveInteger(hashtable_compiletime_2519, 7, 21, 0) call SaveInteger(hashtable_compiletime_2519, 7, 22, 0) call SaveInteger(hashtable_compiletime_2519, 7, 23, 0) call SaveInteger(hashtable_compiletime_2519, 7, 24, 0) call SaveInteger(hashtable_compiletime_2519, 7, 25, 0) call SaveInteger(hashtable_compiletime_2519, 7, 26, 0) call SaveInteger(hashtable_compiletime_2519, 7, 27, 0) call SaveInteger(hashtable_compiletime_2519, 7, 28, 0) call SaveInteger(hashtable_compiletime_2519, 7, 29, 0) call SaveInteger(hashtable_compiletime_2519, 7, 30, 0) call SaveInteger(hashtable_compiletime_2519, 7, 31, 0) call SaveInteger(hashtable_compiletime_2519, 7, 32, 0) call SaveInteger(hashtable_compiletime_2519, 7, 33, 0) call SaveInteger(hashtable_compiletime_2519, 7, 34, 0) call SaveInteger(hashtable_compiletime_2519, 7, 35, 0) call SaveInteger(hashtable_compiletime_2519, 7, 36, 0) call SaveInteger(hashtable_compiletime_2519, 7, 37, 0) call SaveInteger(hashtable_compiletime_2519, 7, 38, 0) call SaveInteger(hashtable_compiletime_2519, 7, 39, 0) call SaveInteger(hashtable_compiletime_2519, 7, 40, 0) call SaveInteger(hashtable_compiletime_2519, 7, 41, 0) call SaveInteger(hashtable_compiletime_2519, 7, 42, 0) call SaveInteger(hashtable_compiletime_2519, 7, 43, 0) call SaveInteger(hashtable_compiletime_2519, 7, 44, 0) call SaveInteger(hashtable_compiletime_2519, 7, 45, 0) call SaveInteger(hashtable_compiletime_2519, 7, 46, 0) call SaveInteger(hashtable_compiletime_2519, 7, 47, 0) call SaveInteger(hashtable_compiletime_2519, 7, 48, 0) call SaveInteger(hashtable_compiletime_2519, 7, 49, 0) call SaveInteger(hashtable_compiletime_2519, 7, 50, 0) call SaveInteger(hashtable_compiletime_2519, 7, 51, 0) call SaveInteger(hashtable_compiletime_2519, 7, 52, 0) call SaveInteger(hashtable_compiletime_2519, 7, 53, 0) call SaveInteger(hashtable_compiletime_2519, 7, 54, 0) call SaveInteger(hashtable_compiletime_2519, 7, 55, 0) call SaveInteger(hashtable_compiletime_2519, 7, 56, 0) call SaveInteger(hashtable_compiletime_2519, 7, 57, 0) call SaveInteger(hashtable_compiletime_2519, 7, 58, 0) call SaveInteger(hashtable_compiletime_2519, 7, 59, 0) call SaveInteger(hashtable_compiletime_2519, 7, 60, 0) call SaveInteger(hashtable_compiletime_2519, 7, 61, 0) call SaveInteger(hashtable_compiletime_2519, 7, 62, 0) call SaveInteger(hashtable_compiletime_2519, 7, 63, 0) call SaveStr(hashtable_compiletime_2519, 2, 1804483594, "air") call SaveStr(hashtable_compiletime_2519, 2, -1221441622, "debris") call SaveStr(hashtable_compiletime_2519, 2, -681966791, "ground") call SaveStr(hashtable_compiletime_2519, 2, -1912775212, "invulnerable") call SaveStr(hashtable_compiletime_2519, 2, 392811314, "item") call SaveStr(hashtable_compiletime_2519, 2, 124309475, "structure") call SaveStr(hashtable_compiletime_2519, 2, -543400682, "vulnerable") call SaveStr(hashtable_compiletime_2519, 2, -85648186, "ward") call SaveStr(hashtable_compiletime_2519, 2, -612826229, "Avul") call SaveStr(hashtable_compiletime_2519, 2, 1282521876, "Aloc") call SaveStr(hashtable_compiletime_2519, 2, -1169939221, "AM0i") call SaveStr(hashtable_compiletime_2519, 2, -772850843, "A01H") call SaveStr(hashtable_compiletime_2519, 2, -1497824038, "A01E") call SaveStr(hashtable_compiletime_2519, 2, -1194720164, "AM06") call SaveStr(hashtable_compiletime_2519, 2, 1344391533, "Aeth") call SaveStr(hashtable_compiletime_2519, 2, 1258890339, "I011") call SaveStr(hashtable_compiletime_2519, 2, 1295827329, "I00T") call SaveStr(hashtable_compiletime_2519, 2, 93268157, "I00Q") call SaveStr(hashtable_compiletime_2519, 2, -2090037533, "I00L") call SaveStr(hashtable_compiletime_2519, 2, -45159924, "I00P") call SaveStr(hashtable_compiletime_2519, 2, 350106804, "I00N") call SaveStr(hashtable_compiletime_2519, 2, 888273623, "I00D") call SaveStr(hashtable_compiletime_2519, 2, -1658272500, "I00G") call SaveStr(hashtable_compiletime_2519, 2, -1221664638, "I00H") call SaveStr(hashtable_compiletime_2519, 2, -780291422, "I00E") call SaveStr(hashtable_compiletime_2519, 2, 512215473, "Agho") call SaveStr(hashtable_compiletime_2519, 2, -369254983, "A077") call SaveStr(hashtable_compiletime_2519, 2, 1650982143, "A00H") call SaveStr(hashtable_compiletime_2519, 2, 697886914, "A078") call SaveStr(hashtable_compiletime_2519, 2, 634294822, "A079") call SaveStr(hashtable_compiletime_2519, 2, -1558492453, "A00M") call SaveStr(hashtable_compiletime_2519, 2, -1288628527, "A05R") call SaveStr(hashtable_compiletime_2519, 2, 291965116, "AM0j") call SaveStr(hashtable_compiletime_2519, 2, -353200626, "Awan") call SaveStr(hashtable_compiletime_2519, 2, -1565998585, "A08I") call SaveStr(hashtable_compiletime_2519, 2, 2105242099, "A01W") call SaveStr(hashtable_compiletime_2519, 2, 1892143652, "A00J") call SaveStr(hashtable_compiletime_2519, 2, -644213493, "AM04") call SaveStr(hashtable_compiletime_2519, 2, -1843883511, "AM1|") call SaveStr(hashtable_compiletime_2519, 2, 1866639999, "AM1}") call SaveStr(hashtable_compiletime_2519, 2, 1527925898, "AM1~") call SaveStr(hashtable_compiletime_2519, 2, 924503629, "AM1x") call SaveStr(hashtable_compiletime_2519, 2, -1581872253, "AM07") call SaveStr(hashtable_compiletime_2519, 2, -238183855, "ARal") call SaveStr(hashtable_compiletime_2519, 2, 526597858, "AM2m") call SaveStr(hashtable_compiletime_2519, 2, 880089072, "AM2o") call SaveStr(hashtable_compiletime_2519, 2, -707209618, "AM2n") call SaveStr(hashtable_compiletime_2519, 2, -1524852115, "AM2p") call SaveStr(hashtable_compiletime_2519, 2, 1005603231, "A031") call SaveStr(hashtable_compiletime_2519, 2, 1964544851, "A01F") call SaveStr(hashtable_compiletime_2519, 2, -1440657423, "A01G") call SaveStr(hashtable_compiletime_2519, 2, 297658214, "AM23") call SaveStr(hashtable_compiletime_2519, 2, -1234634056, "AM25") call SaveStr(hashtable_compiletime_2519, 2, -1470463957, "AM24") call SaveStr(hashtable_compiletime_2519, 2, -503825828, "AM2g") call SaveStr(hashtable_compiletime_2519, 2, -844489484, "AM02") call SaveStr(hashtable_compiletime_2519, 2, -514728743, "AM29") call SaveStr(hashtable_compiletime_2519, 2, -2139903503, "AM2a") call SaveStr(hashtable_compiletime_2519, 2, 1649525986, "AM2b") call SaveStr(hashtable_compiletime_2519, 2, 256373643, "AM2c") call SaveStr(hashtable_compiletime_2519, 2, 135684864, "AM2f") call SaveStr(hashtable_compiletime_2519, 2, 534882185, "AM28") call SaveStr(hashtable_compiletime_2519, 2, -1837158074, "AM2d") call SaveStr(hashtable_compiletime_2519, 2, 1132733691, "AM2e") call SaveStr(hashtable_compiletime_2519, 2, -263269125, "AM03") call SaveStr(hashtable_compiletime_2519, 2, 1664628870, "AM1i") call SaveStr(hashtable_compiletime_2519, 2, 1786733856, "AM1j") call SaveStr(hashtable_compiletime_2519, 2, 1528748507, "AM1l") call SaveStr(hashtable_compiletime_2519, 2, 218476168, "AM1m") call SaveStr(hashtable_compiletime_2519, 2, 1929857105, "AM1n") call SaveStr(hashtable_compiletime_2519, 2, 1537360851, "AM1k") call SaveStr(hashtable_compiletime_2519, 2, -67900494, "AM2k") call SaveStr(hashtable_compiletime_2519, 2, 456807374, "A066") call SaveStr(hashtable_compiletime_2519, 2, -2009107062, "A068") call SaveStr(hashtable_compiletime_2519, 2, 613790458, "A069") call SaveStr(hashtable_compiletime_2519, 2, 1020526311, "A067") call SaveStr(hashtable_compiletime_2519, 2, 1842946908, "AM19") call SaveStr(hashtable_compiletime_2519, 2, -913192684, "AM1a") call SaveStr(hashtable_compiletime_2519, 2, -637014793, "AM1b") call SaveStr(hashtable_compiletime_2519, 2, -1042083456, "AM1g") call SaveStr(hashtable_compiletime_2519, 2, 1778939548, "AM1h") call SaveStr(hashtable_compiletime_2519, 2, 1236068946, "AM1e") call SaveStr(hashtable_compiletime_2519, 2, -1621834777, "AM1f") call SaveStr(hashtable_compiletime_2519, 2, -1100019655, "AM1c") call SaveStr(hashtable_compiletime_2519, 2, 1942622032, "AM1d") call SaveStr(hashtable_compiletime_2519, 2, 344071233, "AM2!") call SaveStr(hashtable_compiletime_2519, 2, 833187919, "A04K") call SaveStr(hashtable_compiletime_2519, 2, -192331855, "A04J") call SaveStr(hashtable_compiletime_2519, 2, 820563124, "AM2|") call SaveStr(hashtable_compiletime_2519, 2, 1100604024, "AM3!") call SaveStr(hashtable_compiletime_2519, 2, -86170109, "AM2}") call SaveStr(hashtable_compiletime_2519, 2, 693602440, "AM2{") call SaveStr(hashtable_compiletime_2519, 2, 310242460, "AM2~") call SaveStr(hashtable_compiletime_2519, 2, 863115293, "AM2z") call SaveStr(hashtable_compiletime_2519, 2, 643962910, "A04S") call SaveStr(hashtable_compiletime_2519, 2, 1565411427, "A04T") call SaveStr(hashtable_compiletime_2519, 2, -1625416043, "A04L") call SaveStr(hashtable_compiletime_2519, 2, 491905205, "A04U") call SaveStr(hashtable_compiletime_2519, 2, 339344095, "A04H") call SaveStr(hashtable_compiletime_2519, 2, -1335094659, "A050") call SaveStr(hashtable_compiletime_2519, 2, 1638298493, "AM3b") call SaveStr(hashtable_compiletime_2519, 2, -2101390392, "AM37") call SaveStr(hashtable_compiletime_2519, 2, -1870641063, "AM3e") call SaveStr(hashtable_compiletime_2519, 2, 1069439989, "AM38") call SaveStr(hashtable_compiletime_2519, 2, -2118011759, "AM39") call SaveStr(hashtable_compiletime_2519, 2, 1884816878, "AM3a") call SaveStr(hashtable_compiletime_2519, 2, -1859630878, "AM3i") call SaveStr(hashtable_compiletime_2519, 2, 2025680314, "AM3h") call SaveStr(hashtable_compiletime_2519, 2, -1507824169, "AM3j") call SaveStr(hashtable_compiletime_2519, 2, 1377653509, "AM3k") call SaveStr(hashtable_compiletime_2519, 2, -49834058, "AM3l") call SaveStr(hashtable_compiletime_2519, 2, 1010225180, "AM3m") call SaveStr(hashtable_compiletime_2519, 2, -578043283, "AM3n") call SaveStr(hashtable_compiletime_2519, 2, -1446444796, "AM3o") call SaveStr(hashtable_compiletime_2519, 2, -1737968881, "AM16") call SaveStr(hashtable_compiletime_2519, 2, 94325311, "AM15") call SaveStr(hashtable_compiletime_2519, 2, 1789833636, "AM14") call SaveStr(hashtable_compiletime_2519, 2, 748258376, "AM13") call SaveStr(hashtable_compiletime_2519, 2, 1570799228, "AM12") call SaveStr(hashtable_compiletime_2519, 2, 621498812, "A029") call SaveStr(hashtable_compiletime_2519, 2, -619801316, "A08J") call SaveStr(hashtable_compiletime_2519, 2, 2033263624, "A03B") call SaveStr(hashtable_compiletime_2519, 2, -1448384611, "A03C") call SaveStr(hashtable_compiletime_2519, 2, -1817521397, "AM0n") call SaveStr(hashtable_compiletime_2519, 2, -984412248, "AM0o") call SaveStr(hashtable_compiletime_2519, 2, -1033093372, "AM0p") call SaveStr(hashtable_compiletime_2519, 2, -1839579616, "AM0q") call SaveStr(hashtable_compiletime_2519, 2, 1488853538, "bstr") call SaveStr(hashtable_compiletime_2519, 2, 167086091, "tele") call SaveStr(hashtable_compiletime_2519, 2, -1920712117, "jump") call SaveStr(hashtable_compiletime_2519, 2, 1834740118, "revp") call SaveStr(hashtable_compiletime_2519, 2, 677282690, "uncr") call SaveStr(hashtable_compiletime_2519, 2, -2117149798, "tcbl") call SaveStr(hashtable_compiletime_2519, 2, -495583602, "unre") call SaveStr(hashtable_compiletime_2519, 2, 103433443, "wayp") call SaveStr(hashtable_compiletime_2519, 2, 1599941458, "text") call SaveStr(hashtable_compiletime_2519, 2, -1751993404, "trap") call SaveStr(hashtable_compiletime_2519, 2, -1159692999, "exec") call SaveStr(hashtable_compiletime_2519, 2, 1097135779, "bmbt") call SaveStr(hashtable_compiletime_2519, 2, 943863536, "vrtx") call SaveStr(hashtable_compiletime_2519, 2, 581513006, "clhd") call SaveStr(hashtable_compiletime_2519, 2, -1727693848, "pwnd") call SaveStr(hashtable_compiletime_2519, 2, 771149923, "fnt1") call SaveStr(hashtable_compiletime_2519, 2, 1470805979, "trac") call SaveStr(hashtable_compiletime_2519, 2, -82616100, "spnr") call SaveStr(hashtable_compiletime_2519, 2, -612428038, "dor1") call SaveStr(hashtable_compiletime_2519, 2, 1911803610, "arca") call SaveStr(hashtable_compiletime_2519, 2, 1144624970, "x001") call SaveStr(hashtable_compiletime_2519, 2, -2169992, "volc") call SaveStr(hashtable_compiletime_2519, 2, -1717936368, "wall") call SaveStr(hashtable_compiletime_2519, 2, -1279189149, "vwal") call SaveStr(hashtable_compiletime_2519, 2, 1124533213, "hwal") call SaveStr(hashtable_compiletime_2519, 2, 338097942, "sobs") call SaveStr(hashtable_compiletime_2519, 2, -259361036, "bobs") call SaveStr(hashtable_compiletime_2519, 2, -149090181, "whyf") call SaveStr(hashtable_compiletime_2519, 2, -375264434, "tree") call SaveStr(hashtable_compiletime_2519, 2, 1706787410, "x002") call SaveStr(hashtable_compiletime_2519, 2, -539662199, "x003") call SaveStr(hashtable_compiletime_2519, 2, 980363664, "x004") call SaveStr(hashtable_compiletime_2519, 2, -1663463893, "x005") call SaveStr(hashtable_compiletime_2519, 2, 1166553680, "x006") call SaveStr(hashtable_compiletime_2519, 2, -629068231, "x007") call SaveStr(hashtable_compiletime_2519, 2, 2007189732, "x008") call SaveStr(hashtable_compiletime_2519, 2, 1665121710, "x009") call SaveStr(hashtable_compiletime_2519, 2, 1767621433, "x00a") call SaveStr(hashtable_compiletime_2519, 2, 1428759257, "x00b") call SaveStr(hashtable_compiletime_2519, 2, 1235592712, "x00c") call SaveStr(hashtable_compiletime_2519, 2, 1871587693, "A07U") call SaveStr(hashtable_compiletime_2519, 2, -704868420, "A07C") call SaveStr(hashtable_compiletime_2519, 2, -1427058972, "A05F") call SaveStr(hashtable_compiletime_2519, 2, 1105374383, "A05G") call SaveStr(hashtable_compiletime_2519, 2, 865735338, "A05H") call SaveStr(hashtable_compiletime_2519, 2, 670038494, "A05J") call SaveStr(hashtable_compiletime_2519, 2, 1513667590, "A05K") call SaveStr(hashtable_compiletime_2519, 2, -1224313603, "A05M") call SaveStr(hashtable_compiletime_2519, 2, -1734053487, "A07A") call SaveStr(hashtable_compiletime_2519, 2, -2019805900, "Afre") call SaveStr(hashtable_compiletime_2519, 2, -540326714, "AInv") call SaveStr(hashtable_compiletime_2519, 2, 164740461, "A08K") call SaveStr(hashtable_compiletime_2519, 2, 1146502594, "A00E") call SaveStr(hashtable_compiletime_2519, 2, 1294334697, "A02X") call SaveStr(hashtable_compiletime_2519, 2, 527716834, "A003") call SaveStr(hashtable_compiletime_2519, 2, -711918992, "A088") call SaveStr(hashtable_compiletime_2519, 2, 1666911357, "A06P") call SaveStr(hashtable_compiletime_2519, 2, -1044623057, "A08L") call SaveStr(hashtable_compiletime_2519, 2, -1927960237, "A008") call SaveStr(hashtable_compiletime_2519, 2, 1462452878, "A08Q") call SaveStr(hashtable_compiletime_2519, 2, 1315091114, "AM1w") call SaveStr(hashtable_compiletime_2519, 2, 960411499, "AM0d") call SaveStr(hashtable_compiletime_2519, 2, -1793228341, "A04Y") call SaveStr(hashtable_compiletime_2519, 2, 1353041593, "A04X") call SaveStr(hashtable_compiletime_2519, 2, -987963703, "A00C") call SaveStr(hashtable_compiletime_2519, 2, 1140568408, "A080") call SaveStr(hashtable_compiletime_2519, 2, -1170702542, "AM10") call SaveStr(hashtable_compiletime_2519, 2, 1391180112, "I012") call SaveStr(hashtable_compiletime_2519, 2, -1474399251, "I007") endfunction function initCompiletimeState takes nothing returns nothing call ExecuteFunc("initCompiletimeState_0") endfunction function alloc_SilenceBufff takes nothing returns integer local integer this_1 if Buff_firstFree == 0 then if Buff_maxIndex < JASS_MAX_ARRAY_SIZE then set Buff_maxIndex = Buff_maxIndex + 1 set this_1 = Buff_maxIndex set Buff_typeId[this_1] = 651 else call error("Out of memory: Could not create SilenceBufff.") set this_1 = 0 endif else set Buff_firstFree = Buff_firstFree - 1 set this_1 = Buff_nextFree[Buff_firstFree] set Buff_typeId[this_1] = 651 endif return this_1 endfunction function unit_removeAbility takes unit this_1, integer abil returns boolean return UnitRemoveAbility(this_1, abil) endfunction function unit_setOwner takes unit this_1, player p, boolean changeColor returns nothing call SetUnitOwner(this_1, p, changeColor) endfunction function unit_setPos takes unit this_1, real pos_x_1, real pos_y_1 returns nothing call SetUnitPosition(this_1, pos_x_1, pos_y_1) endfunction function InstantDummyCaster_finish takes integer id returns nothing call unit_setOwner(InstantDummyCaster_caster, Basics_DUMMY_PLAYER, false) call unit_removeAbility(InstantDummyCaster_caster, id) call unit_setPos(InstantDummyCaster_caster, MapBounds_boundMax_x, MapBounds_boundMax_y) endfunction function unit_addAbility takes unit this_1, integer abil returns boolean return UnitAddAbility(this_1, abil) endfunction function unit_setAbilityLevel takes unit this_1, integer abilId, integer lvl returns nothing call SetUnitAbilityLevel(this_1, abilId, lvl) endfunction function unit_setState takes unit this_1, unitstate state, real value returns nothing call SetUnitState(this_1, state, value) endfunction function unit_setMana takes unit this_1, real wval returns nothing call unit_setState(this_1, UNIT_STATE_MANA, wval) endfunction function unit_setFlyHeight takes unit this_1, real height, real rate returns nothing call SetUnitFlyHeight(this_1, height, rate) endfunction function unit_setX takes unit this_1, real x returns nothing call SetUnitX(this_1, x) endfunction function unit_setY takes unit this_1, real y returns nothing call SetUnitY(this_1, y) endfunction function unit_setXYZ takes unit this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing local unit receiver = this_1 local unit receiver_1 local unit receiver_2 call unit_setX(receiver, pos_x_1) set receiver_1 = receiver call unit_setY(receiver_1, pos_y_1) set receiver_2 = receiver_1 call unit_setFlyHeight(receiver_2, pos_z, 0.) endfunction function inBoundsXY takes real x, real y returns boolean return x > MapBounds_boundMin_x and x < MapBounds_boundMax_x and y > MapBounds_boundMin_y and y < MapBounds_boundMax_y endfunction function vec3_inBounds takes real this_x, real this_y, real this_z returns boolean return inBoundsXY(this_x, this_y) endfunction function InstantDummyCaster_prepare takes player owner, integer id, integer lvl, real pos_x_1, real pos_y_1, real pos_z returns nothing local unit receiver = InstantDummyCaster_caster local unit receiver_1 call unit_addAbility(receiver, id) set receiver_1 = receiver call unit_setMana(receiver_1, 1000000.) if vec3_inBounds(pos_x_1, pos_y_1, pos_z) then call unit_setXYZ(InstantDummyCaster_caster, pos_x_1, pos_y_1, pos_z) endif if lvl > 1 then call unit_setAbilityLevel(InstantDummyCaster_caster, id, lvl) endif if owner != null then call unit_setOwner(InstantDummyCaster_caster, owner, false) endif endfunction function unit_getX takes unit this_1 returns real return GetUnitX(this_1) endfunction function unit_getY takes unit this_1 returns real return GetUnitY(this_1) endfunction function unit_getPos takes unit this_1 returns real set unit_getPos_return_x = unit_getX(this_1) set unit_getPos_return_y = unit_getY(this_1) return unit_getPos_return_x endfunction function unit_issueTargetOrderById takes unit this_1, integer id, widget target returns boolean return IssueTargetOrderById(this_1, id, target) endfunction function angle_degrees takes real this_radians returns real return this_radians * Angle_RADTODEG endfunction function unit_setFacing takes unit this_1, real a_radians returns nothing call SetUnitFacing(this_1, angle_degrees(a_radians)) endfunction function real_asAngleRadians takes real this_1 returns real set real_asAngleRadians_return_radians = this_1 return real_asAngleRadians_return_radians endfunction function vec2_angleTo takes real this_x, real this_y, real v_x, real v_y returns real set vec2_angleTo_return_radians = real_asAngleRadians(Atan2(v_y - this_y, v_x - this_x)) return vec2_angleTo_return_radians endfunction function widget_getX takes widget this_1 returns real return GetWidgetX(this_1) endfunction function widget_getY takes widget this_1 returns real return GetWidgetY(this_1) endfunction function widget_getPos takes widget this_1 returns real set widget_getPos_return_x = widget_getX(this_1) set widget_getPos_return_y = widget_getY(this_1) return widget_getPos_return_x endfunction function InstantDummyCaster_castTarget takes player owner, integer abilityId, integer lvl, integer orderId_1, widget target, real casterPos_x, real casterPos_y, real casterPos_z returns boolean local boolean success call InstantDummyCaster_prepare(owner, abilityId, lvl, casterPos_x, casterPos_y, casterPos_z) call unit_setFacing(InstantDummyCaster_caster, vec2_angleTo(unit_getPos(InstantDummyCaster_caster), unit_getPos_return_y, widget_getPos(target), widget_getPos_return_y)) set success = unit_issueTargetOrderById(InstantDummyCaster_caster, orderId_1, target) call InstantDummyCaster_finish(abilityId) return success endfunction function vec2_toVec3 takes real this_x, real this_y returns real set vec2_toVec3_return_x = this_x set vec2_toVec3_return_y = this_y set vec2_toVec3_return_z = 0. return vec2_toVec3_return_x endfunction function InstantDummyCaster_castTarget_743 takes player owner, integer abilityId, integer lvl, integer orderId_1, widget target returns boolean return InstantDummyCaster_castTarget(owner, abilityId, lvl, orderId_1, target, vec2_toVec3(GetWidgetX(target), GetWidgetY(target)), vec2_toVec3_return_y, vec2_toVec3_return_z) endfunction function real_squared takes real this_1 returns real return this_1 * this_1 endfunction function SilenceBufff_init takes integer this_1 returns nothing set SilenceBufff_distance[this_1] = real_squared(256.) endfunction function NormalBuff_init takes integer this_1 returns nothing endfunction function construct_Buff_LinkedListModule takes integer this_1 returns nothing set Buff_LinkedListModule_size = Buff_LinkedListModule_size + 1 if Buff_LinkedListModule_size == 1 then set Buff_LinkedListModule_first = this_1 set Buff_LinkedListModule_prev[this_1] = 0 else set Buff_LinkedListModule_prev[this_1] = Buff_LinkedListModule_last set Buff_LinkedListModule_next[Buff_LinkedListModule_last] = this_1 set Buff_LinkedListModule_prev[Buff_LinkedListModule_first] = this_1 endif set Buff_LinkedListModule_next[this_1] = 0 set Buff_LinkedListModule_last = this_1 endfunction function Buff_init takes integer this_1 returns nothing set Buff_target[this_1] = null set Buff_done[this_1] = false call construct_Buff_LinkedListModule(this_1) endfunction function construct_Buff takes integer this_1, real duration, integer buffData_abilId, integer buffData_buffId returns nothing local integer tuple_temp local integer tuple_temp_1 call Buff_init(this_1) set Buff_duration[this_1] = duration set tuple_temp = buffData_abilId set tuple_temp_1 = buffData_buffId set Buff_buffData_abilId[this_1] = tuple_temp set Buff_buffData_buffId[this_1] = tuple_temp_1 endfunction function construct_NormalBuff takes integer this_1, real dur, integer buffData_abilId, integer buffData_buffId returns nothing call construct_Buff(this_1, dur, buffData_abilId, buffData_buffId) call NormalBuff_init(this_1) endfunction function LLIterator_onDestroy takes integer this_1 returns nothing endfunction function dealloc_LLIterator takes integer obj_1 returns nothing if LLIterator_typeId[obj_1] == 0 then call error("Double free: object of type LLIterator") else set LLIterator_nextFree[LLIterator_firstFree] = obj_1 set LLIterator_firstFree = LLIterator_firstFree + 1 set LLIterator_typeId[obj_1] = 0 endif endfunction function destroyLLIterator takes integer this_1 returns nothing call LLIterator_onDestroy(this_1) call dealloc_LLIterator(this_1) endfunction function dispatch_LLIterator_destroyLLIterator takes integer this_1 returns nothing if LLIterator_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LLIterator.LLIterator") else call error("Called LLIterator.LLIterator on invalid object.") endif endif call destroyLLIterator(this_1) endfunction function LLIterator_close takes integer this_1 returns nothing if LLIterator_destroyOnClose[this_1] then call dispatch_LLIterator_destroyLLIterator(this_1) endif endfunction function LLIterator_hasNext takes integer this_1 returns boolean return LLEntry_next[LLIterator_current[this_1]] != LLIterator_dummy[this_1] endfunction function LLIterator_next takes integer this_1 returns integer set LLIterator_current[this_1] = LLEntry_next[LLIterator_current[this_1]] return LLEntry_elem[LLIterator_current[this_1]] endfunction function alloc_LLIterator takes nothing returns integer local integer this_1 if LLIterator_firstFree == 0 then if LLIterator_maxIndex < JASS_MAX_ARRAY_SIZE then set LLIterator_maxIndex = LLIterator_maxIndex + 1 set this_1 = LLIterator_maxIndex set LLIterator_typeId[this_1] = 988 else call error("Out of memory: Could not create LLIterator.") set this_1 = 0 endif else set LLIterator_firstFree = LLIterator_firstFree - 1 set this_1 = LLIterator_nextFree[LLIterator_firstFree] set LLIterator_typeId[this_1] = 988 endif return this_1 endfunction function LLIterator_init takes integer this_1 returns nothing set LLIterator_destroyOnClose[this_1] = true endfunction function LinkedList_getDummy takes integer this_1 returns integer return LinkedList_dummy[this_1] endfunction function dispatch_LinkedList_LinkedList_LinkedList_getDummy takes integer this_1 returns integer local integer LinkedList_LinkedList_getDummy_result if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.getDummy") else call error("Called LinkedList.getDummy on invalid object.") endif endif set LinkedList_LinkedList_getDummy_result = LinkedList_getDummy(this_1) return LinkedList_LinkedList_getDummy_result endfunction function LLIterator_reset takes integer this_1 returns nothing set LLIterator_dummy[this_1] = dispatch_LinkedList_LinkedList_LinkedList_getDummy(LLIterator_parent[this_1]) set LLIterator_current[this_1] = LLIterator_dummy[this_1] endfunction function dispatch_LLIterator_LinkedList_LLIterator_reset takes integer this_1 returns nothing if LLIterator_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LLIterator.reset") else call error("Called LLIterator.reset on invalid object.") endif endif call LLIterator_reset(this_1) endfunction function construct_LLIterator takes integer this_1, integer parent returns nothing call LLIterator_init(this_1) set LLIterator_parent[this_1] = parent call dispatch_LLIterator_LinkedList_LLIterator_reset(this_1) endfunction function new_LLIterator takes integer parent returns integer local integer this_1 = alloc_LLIterator() call construct_LLIterator(this_1, parent) return this_1 endfunction function LinkedList_iterator takes integer this_1 returns integer return new_LLIterator(this_1) endfunction function dealloc_Buff takes integer obj_1 returns nothing if Buff_typeId[obj_1] == 0 then call error("Double free: object of type Buff") else set Buff_nextFree[Buff_firstFree] = obj_1 set Buff_firstFree = Buff_firstFree + 1 set Buff_typeId[obj_1] = 0 endif endfunction function dealloc_SilenceBufff takes integer obj_1 returns nothing if Buff_typeId[obj_1] == 0 then call error("Double free: object of type SilenceBufff") else set Buff_nextFree[Buff_firstFree] = obj_1 set Buff_firstFree = Buff_firstFree + 1 set Buff_typeId[obj_1] = 0 endif endfunction function Buff_LinkedListModule_remove takes integer this_1 returns nothing set Buff_LinkedListModule_size = Buff_LinkedListModule_size - 1 if this_1 != Buff_LinkedListModule_first then set Buff_LinkedListModule_next[Buff_LinkedListModule_prev[this_1]] = Buff_LinkedListModule_next[this_1] else set Buff_LinkedListModule_first = Buff_LinkedListModule_next[this_1] endif if this_1 != Buff_LinkedListModule_last then set Buff_LinkedListModule_prev[Buff_LinkedListModule_next[this_1]] = Buff_LinkedListModule_prev[this_1] else set Buff_LinkedListModule_last = Buff_LinkedListModule_prev[this_1] endif endfunction function dispatch_Buff_Buff_Buff_LinkedListModule_remove takes integer this_1 returns nothing if Buff_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Buff.remove") else call error("Called Buff.remove on invalid object.") endif endif call Buff_LinkedListModule_remove(this_1) endfunction function Buff_onEnd takes integer this_1 returns nothing endfunction function dispatch_Buff_Buff_Buff_onEnd takes integer this_1 returns nothing if Buff_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Buff.onEnd") else call error("Called Buff.onEnd on invalid object.") endif endif call Buff_onEnd(this_1) endfunction function dispatch_LLIterator_LinkedList_LLIterator_close takes integer this_1 returns nothing if LLIterator_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LLIterator.close") else call error("Called LLIterator.close on invalid object.") endif endif call LLIterator_close(this_1) endfunction function LLEntry_onDestroy takes integer this_1 returns nothing endfunction function dealloc_LLEntry takes integer obj_1 returns nothing if LLEntry_typeId[obj_1] == 0 then call error("Double free: object of type LLEntry") else set LLEntry_nextFree[LLEntry_firstFree] = obj_1 set LLEntry_firstFree = LLEntry_firstFree + 1 set LLEntry_typeId[obj_1] = 0 endif endfunction function destroyLLEntry takes integer this_1 returns nothing call LLEntry_onDestroy(this_1) call dealloc_LLEntry(this_1) endfunction function dispatch_LLEntry_destroyLLEntry takes integer this_1 returns nothing if LLEntry_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LLEntry.LLEntry") else call error("Called LLEntry.LLEntry on invalid object.") endif endif call destroyLLEntry(this_1) endfunction function LinkedList_removeEntry takes integer this_1, integer entry returns nothing set LLEntry_next[LLEntry_prev[entry]] = LLEntry_next[entry] set LLEntry_prev[LLEntry_next[entry]] = LLEntry_prev[entry] call dispatch_LLEntry_destroyLLEntry(entry) set LinkedList_size[this_1] = LinkedList_size[this_1] - 1 endfunction function dispatch_LinkedList_LinkedList_LinkedList_removeEntry takes integer this_1, integer entry returns nothing if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.removeEntry") else call error("Called LinkedList.removeEntry on invalid object.") endif endif call LinkedList_removeEntry(this_1, entry) endfunction function LLIterator_remove takes integer this_1 returns integer local integer removed if LLIterator_current[this_1] != LLIterator_dummy[this_1] then call dispatch_LinkedList_LinkedList_LinkedList_removeEntry(LLIterator_parent[this_1], LLIterator_current[this_1]) set removed = LLEntry_elem[LLIterator_current[this_1]] set LLIterator_current[this_1] = LLEntry_prev[LLIterator_current[this_1]] return removed endif return 0 endfunction function dispatch_LLIterator_LinkedList_LLIterator_remove takes integer this_1 returns integer local integer LinkedList_LLIterator_remove_result if LLIterator_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LLIterator.remove") else call error("Called LLIterator.remove on invalid object.") endif endif set LinkedList_LLIterator_remove_result = LLIterator_remove(this_1) return LinkedList_LLIterator_remove_result endfunction function dispatch_LinkedList_LinkedList_LinkedList_iterator takes integer this_1 returns integer local integer LinkedList_LinkedList_iterator_result if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.iterator") else call error("Called LinkedList.iterator on invalid object.") endif endif set LinkedList_LinkedList_iterator_result = LinkedList_iterator(this_1) return LinkedList_LinkedList_iterator_result endfunction function unit_getUserData takes unit this_1 returns integer return GetUnitUserData(this_1) endfunction function unit_getIndex takes unit this_1 returns integer return unit_getUserData(this_1) endfunction function unit_getBuffs takes unit this_1 returns integer return Buff_buffMap[unit_getIndex(this_1)] endfunction function unit_hasBuffs takes unit this_1 returns boolean return Buff_buffMap[unit_getIndex(this_1)] != 0 endfunction function cyc_NormalBuff_onDestroy takes integer funcChoice, integer this_1, unit this_2, integer bff returns nothing local integer itr_1 local integer b local integer from if funcChoice == 0 then call cyc_NormalBuff_onDestroy(4, this_1, null, 0) elseif funcChoice == 1 then call unit_removeAbility(Buff_target[this_1], 1112437615) call cyc_NormalBuff_onDestroy(0, this_1, null, 0) elseif funcChoice == 2 then call cyc_NormalBuff_onDestroy(1, this_1, null, 0) call dealloc_SilenceBufff(this_1) elseif funcChoice == 3 then if unit_hasBuffs(this_2) then set itr_1 = dispatch_LinkedList_LinkedList_LinkedList_iterator(unit_getBuffs(this_2)) set from = itr_1 loop exitwhen not LLIterator_hasNext(from) set b = LLIterator_next(from) if b == bff then call cyc_NormalBuff_onDestroy(8, dispatch_LLIterator_LinkedList_LLIterator_remove(itr_1), null, 0) endif endloop call dispatch_LLIterator_LinkedList_LLIterator_close(itr_1) endif elseif funcChoice == 4 then if Buff_target[this_1] != null then call unit_removeAbility(Buff_target[this_1], Buff_buffData_buffId[this_1]) call cyc_NormalBuff_onDestroy(3, 0, Buff_target[this_1], this_1) call unit_removeAbility(Buff_target[this_1], Buff_buffData_abilId[this_1]) endif set Buff_target[this_1] = null call dispatch_Buff_Buff_Buff_LinkedListModule_remove(this_1) elseif funcChoice == 5 then call cyc_NormalBuff_onDestroy(4, this_1, null, 0) call dealloc_Buff(this_1) elseif funcChoice == 6 then if Buff_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Buff.Buff") else call error("Called Buff.Buff on invalid object.") endif endif if Buff_typeId[this_1] <= 651 then if Buff_typeId[this_1] <= 650 then call cyc_NormalBuff_onDestroy(5, this_1, null, 0) else call cyc_NormalBuff_onDestroy(2, this_1, null, 0) endif else call cyc_NormalBuff_onDestroy(5, this_1, null, 0) endif elseif funcChoice == 7 then if not Buff_done[this_1] then set Buff_done[this_1] = true call dispatch_Buff_Buff_Buff_onEnd(this_1) call cyc_NormalBuff_onDestroy(6, this_1, null, 0) endif elseif funcChoice == 8 then if Buff_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Buff.terminate") else call error("Called Buff.terminate on invalid object.") endif endif call cyc_NormalBuff_onDestroy(7, this_1, null, 0) endif endfunction function Buff_onApply takes integer this_1 returns nothing endfunction function dispatch_Buff_Buff_Buff_onApply takes integer this_1 returns nothing if Buff_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Buff.onApply") else call error("Called Buff.onApply on invalid object.") endif endif call Buff_onApply(this_1) endfunction function unit_hasAbility takes unit this_1, integer id returns boolean return GetUnitAbilityLevel(this_1, id) > 0 endfunction function Buff_refresh_160 takes integer this_1, boolean forceRefresh returns nothing if ( not unit_hasAbility(Buff_target[this_1], Buff_buffData_abilId[this_1])) or forceRefresh then call unit_addAbility(Buff_target[this_1], Buff_buffData_abilId[this_1]) endif endfunction function dispatch_Buff_Buff_Buff_refresh_2735 takes integer this_1, boolean forceRefresh returns nothing if Buff_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Buff.refresh") else call error("Called Buff.refresh on invalid object.") endif endif call Buff_refresh_160(this_1, forceRefresh) endfunction function Buff_refresh takes integer this_1 returns nothing call dispatch_Buff_Buff_Buff_refresh_2735(this_1, false) endfunction function dispatch_Buff_Buff_Buff_refresh takes integer this_1 returns nothing if Buff_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Buff.refresh") else call error("Called Buff.refresh on invalid object.") endif endif call Buff_refresh(this_1) endfunction function alloc_LLEntry takes nothing returns integer local integer this_1 if LLEntry_firstFree == 0 then if LLEntry_maxIndex < JASS_MAX_ARRAY_SIZE then set LLEntry_maxIndex = LLEntry_maxIndex + 1 set this_1 = LLEntry_maxIndex set LLEntry_typeId[this_1] = 987 else call error("Out of memory: Could not create LLEntry.") set this_1 = 0 endif else set LLEntry_firstFree = LLEntry_firstFree - 1 set this_1 = LLEntry_nextFree[LLEntry_firstFree] set LLEntry_typeId[this_1] = 987 endif return this_1 endfunction function LLEntry_init takes integer this_1 returns nothing endfunction function construct_LLEntry takes integer this_1, integer elem, integer prev, integer next returns nothing call LLEntry_init(this_1) set LLEntry_elem[this_1] = elem set LLEntry_prev[this_1] = prev set LLEntry_next[this_1] = next endfunction function new_LLEntry takes integer elem, integer prev, integer next returns integer local integer this_1 = alloc_LLEntry() call construct_LLEntry(this_1, elem, prev, next) return this_1 endfunction function LinkedList_add_1 takes integer this_1, integer elems_0 returns nothing local integer entry = new_LLEntry(elems_0, LLEntry_prev[LinkedList_dummy[this_1]], LinkedList_dummy[this_1]) set LLEntry_next[LLEntry_prev[LinkedList_dummy[this_1]]] = entry set LLEntry_prev[LinkedList_dummy[this_1]] = entry set LinkedList_size[this_1] = LinkedList_size[this_1] + 1 endfunction function dispatch_LinkedList_LinkedList_LinkedList_add_1 takes integer this_1, integer elems_0 returns nothing if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.add") else call error("Called LinkedList.add on invalid object.") endif endif call LinkedList_add_1(this_1, elems_0) endfunction function alloc_LinkedList takes nothing returns integer local integer this_1 if LinkedList_firstFree == 0 then if LinkedList_maxIndex < JASS_MAX_ARRAY_SIZE then set LinkedList_maxIndex = LinkedList_maxIndex + 1 set this_1 = LinkedList_maxIndex set LinkedList_typeId[this_1] = 998 else call error("Out of memory: Could not create LinkedList.") set this_1 = 0 endif else set LinkedList_firstFree = LinkedList_firstFree - 1 set this_1 = LinkedList_nextFree[LinkedList_firstFree] set LinkedList_typeId[this_1] = 998 endif return this_1 endfunction function LinkedList_init takes integer this_1 returns nothing set LinkedList_dummy[this_1] = new_LLEntry(0, 0, 0) set LinkedList_size[this_1] = 0 set LinkedList_staticItr[this_1] = 0 set LinkedList_staticBackItr[this_1] = 0 endfunction function construct_LinkedList2 takes integer this_1 returns nothing call LinkedList_init(this_1) set LLEntry_next[LinkedList_dummy[this_1]] = LinkedList_dummy[this_1] set LLEntry_prev[LinkedList_dummy[this_1]] = LinkedList_dummy[this_1] endfunction function new_LinkedList takes nothing returns integer local integer this_1 = alloc_LinkedList() call construct_LinkedList2(this_1) return this_1 endfunction function unit_addBuff takes unit this_1, integer buffObj returns nothing local integer receiver if buffObj == 0 or this_1 == null then call error("Cannot add null buff or null target") endif if not unit_hasBuffs(this_1) then set receiver = new_LinkedList() call dispatch_LinkedList_LinkedList_LinkedList_add_1(receiver, buffObj) set Buff_buffMap[unit_getIndex(this_1)] = receiver else call dispatch_LinkedList_LinkedList_LinkedList_add_1(Buff_buffMap[unit_getIndex(this_1)], buffObj) endif endfunction function unit_isAlive takes unit this_1 returns boolean return UnitAlive(this_1) endfunction function NormalBuff_apply takes integer this_1, unit target returns nothing local integer iterator local integer bff if unit_isAlive(target) then set Buff_target[this_1] = target if unit_hasBuffs(target) then set iterator = LinkedList_iterator(unit_getBuffs(target)) loop exitwhen not LLIterator_hasNext(iterator) set bff = LLIterator_next(iterator) if Buff_typeId[bff] == Buff_typeId[this_1] then set Buff_duration[bff] = Buff_duration[this_1] set Buff_target[this_1] = null call cyc_NormalBuff_onDestroy(8, this_1, null, 0) call LLIterator_close(iterator) return endif endloop call LLIterator_close(iterator) endif call unit_addBuff(target, this_1) call dispatch_Buff_Buff_Buff_refresh(this_1) call dispatch_Buff_Buff_Buff_onApply(this_1) endif endfunction function ShieldBuff_apply takes integer this_1, unit target returns nothing local integer iterator local integer bff local integer sd if unit_isAlive(target) then set Buff_target[this_1] = target if unit_hasBuffs(target) then set iterator = LinkedList_iterator(unit_getBuffs(target)) loop exitwhen not LLIterator_hasNext(iterator) set bff = LLIterator_next(iterator) if Buff_typeId[bff] == Buff_typeId[this_1] and bff != this_1 then set sd = bff set Buff_duration[sd] = Buff_duration[this_1] set ShieldBuff_blockAmount[sd] = ShieldBuff_blockAmount[sd] + ShieldBuff_blockAmount[this_1] set Buff_target[this_1] = null call cyc_NormalBuff_onDestroy(8, this_1, null, 0) call LLIterator_close(iterator) return endif endloop call LLIterator_close(iterator) endif call unit_addBuff(target, this_1) call dispatch_Buff_Buff_Buff_refresh(this_1) call dispatch_Buff_Buff_Buff_onApply(this_1) endif endfunction function dispatch_NormalBuff_PresetBuffs_NormalBuff_apply takes integer this_1, unit target returns nothing if Buff_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling NormalBuff.apply") else call error("Called NormalBuff.apply on invalid object.") endif endif if Buff_typeId[this_1] <= 650 then if Buff_typeId[this_1] <= 649 then call NormalBuff_apply(this_1, target) else call ShieldBuff_apply(this_1, target) endif else call NormalBuff_apply(this_1, target) endif endfunction function construct_SilenceBufff takes integer this_1, integer target, integer arcanery returns nothing call construct_NormalBuff(this_1, 9999., Arcanery_SILENCE_BUFF_abilId, Arcanery_SILENCE_BUFF_buffId) call SilenceBufff_init(this_1) set SilenceBufff_arcanery[this_1] = arcanery call InstantDummyCaster_castTarget_743(Basics_DUMMY_PLAYER, Arcanery_SILENCE_ID, 1, OrderIds_soulburn, UnitEntity_actor[target]) call dispatch_NormalBuff_PresetBuffs_NormalBuff_apply(this_1, UnitEntity_actor[target]) endfunction function new_SilenceBufff takes integer target, integer arcanery returns integer local integer this_1 = alloc_SilenceBufff() call construct_SilenceBufff(this_1, target, arcanery) return this_1 endfunction function printLog takes integer loglvl, string msg returns nothing call printLog_3942(Player_localPlayer, loglvl, msg) endfunction function unit_getBuff takes unit this_1, integer buffTypeId returns integer local integer iterator local integer b if unit_hasBuffs(this_1) then set iterator = LinkedList_iterator(unit_getBuffs(this_1)) loop exitwhen not LLIterator_hasNext(iterator) set b = LLIterator_next(iterator) if Buff_typeId[b] == buffTypeId then call LLIterator_close(iterator) return b endif endloop call LLIterator_close(iterator) endif return 0 endfunction function Arcanery_onEnter takes integer this_1, integer target returns nothing local integer temp local integer b call printLog(1, "onEnter(target)") set temp = Arcanery_arcMode[this_1] if temp == 0 then set b = unit_getBuff(UnitEntity_actor[target], 651) if b == 0 then call new_SilenceBufff(target, this_1) else set SilenceBufff_arcanery[b] = this_1 endif elseif temp == 1 then call unit_addAbility(UnitEntity_actor[target], Escaper_JUMP_SPELL) else call unit_addAbility(UnitEntity_actor[target], Escaper_ORB_SPELL) endif endfunction function dispatch_Arcanery_Arcanery_Arcanery_onEnter takes integer this_1, integer target returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Arcanery.onEnter") else call error("Called Arcanery.onEnter on invalid object.") endif endif call Arcanery_onEnter(this_1, target) endfunction function hashtable_loadUnitHandle takes hashtable this_1, integer parentKey, integer childKey returns unit return LoadUnitHandle(this_1, parentKey, childKey) endfunction function Table_loadUnit takes integer this_1, integer parentKey returns unit return hashtable_loadUnitHandle(Table_ht, this_1, parentKey) endfunction function dispatch_Table_Table_Table_loadUnit takes integer this_1, integer parentKey returns unit local unit Table_Table_loadUnit_result if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Table.loadUnit") else call error("Called Table.loadUnit on invalid object.") endif endif set Table_Table_loadUnit_result = Table_loadUnit(this_1, parentKey) return Table_Table_loadUnit_result endfunction function trigger_getSource takes trigger this_1 returns unit return dispatch_Table_Table_Table_loadUnit(EventHelper_triggerData, GetHandleId(this_1)) endfunction function unit_getEntity takes unit this_1 returns integer return Entity_entities[unit_getIndex(this_1)] endfunction function Arcanery_onEnterEv takes nothing returns nothing local integer enter = unit_getEntity(GetTriggerUnit()) local integer obj_1 = unit_getEntity(trigger_getSource(GetTriggeringTrigger())) local integer instanceOfTemp = Serializable_typeId[enter] if instanceOfTemp >= 1162 and instanceOfTemp <= 1167 then call dispatch_Arcanery_Arcanery_Arcanery_onEnter(obj_1, enter) endif endfunction function Table_loadInt takes integer this_1, integer parentKey returns integer return hashtable_loadInt(Table_ht, this_1, parentKey) endfunction function dispatch_Table_Table_Table_loadInt takes integer this_1, integer parentKey returns integer local integer Table_Table_loadInt_result if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Table.loadInt") else call error("Called Table.loadInt on invalid object.") endif endif set Table_Table_loadInt_result = Table_loadInt(this_1, parentKey) return Table_Table_loadInt_result endfunction function handle_getTCHandleId takes handle this_1 returns integer return GetHandleId(this_1) endfunction function timer_getData takes timer this_1 returns integer return dispatch_Table_Table_Table_loadInt(TimerUtils_timerData, handle_getTCHandleId(this_1)) endfunction function timer_pause takes timer this_1 returns nothing call PauseTimer(this_1) endfunction function Table_saveInt takes integer this_1, integer parentKey, integer value returns nothing call hashtable_saveInt(Table_ht, this_1, parentKey, value) endfunction function dispatch_Table_Table_Table_saveInt takes integer this_1, integer parentKey, integer value returns nothing if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Table.saveInt") else call error("Called Table.saveInt on invalid object.") endif endif call Table_saveInt(this_1, parentKey, value) endfunction function timer_setData takes timer this_1, integer data_1 returns nothing call dispatch_Table_Table_Table_saveInt(TimerUtils_timerData, handle_getTCHandleId(this_1), data_1) endfunction function timer_release takes timer this_1 returns nothing if this_1 == null then call error("Trying to release a null timer") return endif if timer_getData(this_1) == TimerUtils_HELD then call error("ReleaseTimer: Double free!") return endif call timer_setData(this_1, TimerUtils_HELD) call timer_pause(this_1) set TimerUtils_freeTimers[TimerUtils_freeTimersCount] = this_1 set TimerUtils_freeTimersCount = TimerUtils_freeTimersCount + 1 endfunction function Bomber_orderSetup takes nothing returns nothing local integer obj_1 = timer_getData(GetExpiredTimer()) set Bomber_realorder[obj_1] = false call IssueImmediateOrderById(Bomber_setup[obj_1], Bomber_STOP_ORDER) call timer_release(GetExpiredTimer()) endfunction function ConfigValue_get takes integer this_1 returns real return ConfigValue_value[this_1] endfunction function dispatch_ConfigValue_ConfigValue_ConfigValue_get takes integer this_1 returns real local real ConfigValue_ConfigValue_get_result if ConfigValue_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling ConfigValue.get") else call error("Called ConfigValue.get on invalid object.") endif endif set ConfigValue_ConfigValue_get_result = ConfigValue_get(this_1) return ConfigValue_ConfigValue_get_result endfunction function unit_setMoveSpeed takes unit this_1, real speed returns nothing call SetUnitMoveSpeed(this_1, speed) endfunction function Booster_orderMove takes nothing returns nothing local unit source = trigger_getSource(GetTriggeringTrigger()) local unit u_1 = GetTriggerUnit() local integer e_1 = unit_getEntity(u_1) local integer obj_1 = unit_getEntity(source) local integer instanceOfTemp = Serializable_typeId[e_1] local integer ek if instanceOfTemp >= 1171 and instanceOfTemp <= 1191 then set ek = e_1 call unit_setMoveSpeed(UnitEntity_actor[ek], dispatch_ConfigValue_ConfigValue_ConfigValue_get(Booster_boostspeed[obj_1])) call unit_setMoveSpeed(SetupObject_setup[ek], dispatch_ConfigValue_ConfigValue_ConfigValue_get(Booster_boostspeed[obj_1])) endif endfunction function Entity_getPos takes integer this_1 returns real set Entity_getPos_return_x = Entity_pos_x[this_1] set Entity_getPos_return_y = Entity_pos_y[this_1] set Entity_getPos_return_z = Entity_pos_z[this_1] return Entity_getPos_return_x endfunction function item_getX takes item this_1 returns real return GetItemX(this_1) endfunction function item_getY takes item this_1 returns real return GetItemY(this_1) endfunction function item_getPos takes item this_1 returns real set item_getPos_return_x = item_getX(this_1) set item_getPos_return_y = item_getY(this_1) return item_getPos_return_x endfunction function vec2_getQuad takes real this_x, real this_y returns integer local integer tempIndex = real_toInt(this_x - MapBounds_boundMin_x) / 128 + TerrainUtils_TILES_X * (real_toInt(this_y - MapBounds_boundMin_y) / 128) set vec2_getQuad_return_id = Heightmap_quads_id[tempIndex] set vec2_getQuad_return_x = Heightmap_quads_x[tempIndex] set vec2_getQuad_return_y = Heightmap_quads_y[tempIndex] set vec2_getQuad_return_botLeft_x = Heightmap_quads_botLeft_x[tempIndex] set vec2_getQuad_return_botLeft_y = Heightmap_quads_botLeft_y[tempIndex] set vec2_getQuad_return_z1 = Heightmap_quads_z1[tempIndex] set vec2_getQuad_return_z2 = Heightmap_quads_z2[tempIndex] set vec2_getQuad_return_z3 = Heightmap_quads_z3[tempIndex] set vec2_getQuad_return_z4 = Heightmap_quads_z4[tempIndex] return vec2_getQuad_return_id endfunction function vec2_op_minus takes real this_x, real this_y, real v_x, real v_y returns real set vec2_op_minus_return_x = this_x - v_x set vec2_op_minus_return_y = this_y - v_y return vec2_op_minus_return_x endfunction function vec2_getHeightMap takes real this_x, real this_y returns real local real quad_botLeft_x local real quad_botLeft_y local real quad_z1 local real quad_z2 local real quad_z3 local real quad_z4 local real localVec_x local real localVec_y local real normVec_x local real normVec_y local real determinant local real weight1 local real weight2 local real weight3 local real weight1_1 local real weight2_1 local real weight3_1 local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 local real tuple_temp_7 local real tuple_temp_8 local real tuple_temp_9 call vec2_getQuad(this_x, this_y) set tuple_temp = vec2_getQuad_return_botLeft_x set tuple_temp_1 = vec2_getQuad_return_botLeft_y set tuple_temp_2 = vec2_getQuad_return_z1 set tuple_temp_3 = vec2_getQuad_return_z2 set tuple_temp_4 = vec2_getQuad_return_z3 set tuple_temp_5 = vec2_getQuad_return_z4 set quad_botLeft_x = tuple_temp set quad_botLeft_y = tuple_temp_1 set quad_z1 = tuple_temp_2 set quad_z2 = tuple_temp_3 set quad_z3 = tuple_temp_4 set quad_z4 = tuple_temp_5 set tuple_temp_6 = vec2_op_minus(this_x, this_y, quad_botLeft_x, quad_botLeft_y) set tuple_temp_7 = vec2_op_minus_return_y set localVec_x = tuple_temp_6 set localVec_y = tuple_temp_7 set tuple_temp_8 = localVec_x / 128. set tuple_temp_9 = localVec_y / 128. set normVec_x = tuple_temp_8 set normVec_y = tuple_temp_9 set determinant = normVec_y - 1. + normVec_x if determinant >= 0. then set weight1 = 1. - normVec_x set weight2 = 1. - normVec_y set weight3 = 1. - weight1 - weight2 return weight1 * quad_z3 + weight2 * quad_z2 + weight3 * quad_z4 else set weight1_1 = normVec_y set weight2_1 = normVec_x set weight3_1 = 1. - weight1_1 - weight2_1 return weight1_1 * quad_z3 + weight2_1 * quad_z2 + weight3_1 * quad_z1 endif endfunction function vec2_withHeightMap_4253 takes real this_x, real this_y, real zoffset returns real set vec2_withHeightMap_return_x_3088 = this_x set vec2_withHeightMap_return_y_3090 = this_y set vec2_withHeightMap_return_z_3092 = vec2_getHeightMap(this_x, this_y) + zoffset return vec2_withHeightMap_return_x_3088 endfunction function vec2_withHeightMap takes real this_x, real this_y returns real set vec2_withHeightMap_return_x = vec2_withHeightMap_4253(this_x, this_y, 0.) set vec2_withHeightMap_return_y = vec2_withHeightMap_return_y_3090 set vec2_withHeightMap_return_z = vec2_withHeightMap_return_z_3092 return vec2_withHeightMap_return_x endfunction function ItemEntity_getPos takes integer this_1 returns real local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 if not Entity_DupletListModule_active[this_1] then set tuple_temp = vec2_withHeightMap(item_getPos(ItemEntity_actor[this_1]), item_getPos_return_y) set tuple_temp_1 = vec2_withHeightMap_return_y set tuple_temp_2 = vec2_withHeightMap_return_z set Entity_pos_x[this_1] = tuple_temp set Entity_pos_y[this_1] = tuple_temp_1 set Entity_pos_z[this_1] = tuple_temp_2 endif set ItemEntity_getPos_return_x = Entity_pos_x[this_1] set ItemEntity_getPos_return_y = Entity_pos_y[this_1] set ItemEntity_getPos_return_z = Entity_pos_z[this_1] return ItemEntity_getPos_return_x endfunction function unit_getFlyHeight takes unit this_1 returns real return GetUnitFlyHeight(this_1) endfunction function vec2_withZ takes real this_x, real this_y, real z returns real set vec2_withZ_return_x = this_x set vec2_withZ_return_y = this_y set vec2_withZ_return_z = z return vec2_withZ_return_x endfunction function vec3_op_plus takes real this_x, real this_y, real this_z, real v_x, real v_y, real v_z returns real set vec3_op_plus_return_x = this_x + v_x set vec3_op_plus_return_y = this_y + v_y set vec3_op_plus_return_z = this_z + v_z return vec3_op_plus_return_x endfunction function unit_getDynamicPos takes unit this_1 returns real if Frentity_DYNAMIC_Z then set unit_getDynamicPos_return_x = vec3_op_plus(vec2_withHeightMap(unit_getPos(this_1), unit_getPos_return_y), vec2_withHeightMap_return_y, vec2_withHeightMap_return_z, 0., 0., unit_getFlyHeight(this_1)) set unit_getDynamicPos_return_y = vec3_op_plus_return_y set unit_getDynamicPos_return_z = vec3_op_plus_return_z return unit_getDynamicPos_return_x endif set unit_getDynamicPos_return_x = vec2_withZ(unit_getPos(this_1), unit_getPos_return_y, 0.) set unit_getDynamicPos_return_y = vec2_withZ_return_y set unit_getDynamicPos_return_z = vec2_withZ_return_z return unit_getDynamicPos_return_x endfunction function unit_getPos3Fly takes unit this_1 returns real set unit_getPos3Fly_return_x = unit_getX(this_1) set unit_getPos3Fly_return_y = unit_getY(this_1) set unit_getPos3Fly_return_z = unit_getFlyHeight(this_1) return unit_getPos3Fly_return_x endfunction function UnitEntity_getPos takes integer this_1 returns real local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 if not Entity_DupletListModule_active[this_1] then if Frentity_DYNAMIC_Z then set tuple_temp = unit_getDynamicPos(UnitEntity_actor[this_1]) set tuple_temp_1 = unit_getDynamicPos_return_y set tuple_temp_2 = unit_getDynamicPos_return_z set Entity_pos_x[this_1] = tuple_temp set Entity_pos_y[this_1] = tuple_temp_1 set Entity_pos_z[this_1] = tuple_temp_2 else set tuple_temp_3 = unit_getPos3Fly(UnitEntity_actor[this_1]) set tuple_temp_4 = unit_getPos3Fly_return_y set tuple_temp_5 = unit_getPos3Fly_return_z set Entity_pos_x[this_1] = tuple_temp_3 set Entity_pos_y[this_1] = tuple_temp_4 set Entity_pos_z[this_1] = tuple_temp_5 endif endif set UnitEntity_getPos_return_x = Entity_pos_x[this_1] set UnitEntity_getPos_return_y = Entity_pos_y[this_1] set UnitEntity_getPos_return_z = Entity_pos_z[this_1] return UnitEntity_getPos_return_x endfunction function dispatch_Entity_Entity_Entity_getPos takes integer this_1 returns real local real Entity_Entity_getPos_result_x local real Entity_Entity_getPos_result_y local real Entity_Entity_getPos_result_z local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 local real tuple_temp_7 local real tuple_temp_8 local real tuple_temp_9 local real tuple_temp_10 local real tuple_temp_11 if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Entity.getPos") else call error("Called Entity.getPos on invalid object.") endif endif if Serializable_typeId[this_1] <= 1157 then if Serializable_typeId[this_1] <= 1150 then set tuple_temp = Entity_getPos(this_1) set tuple_temp_1 = Entity_getPos_return_y set tuple_temp_2 = Entity_getPos_return_z set Entity_Entity_getPos_result_x = tuple_temp set Entity_Entity_getPos_result_y = tuple_temp_1 set Entity_Entity_getPos_result_z = tuple_temp_2 else set tuple_temp_3 = ItemEntity_getPos(this_1) set tuple_temp_4 = ItemEntity_getPos_return_y set tuple_temp_5 = ItemEntity_getPos_return_z set Entity_Entity_getPos_result_x = tuple_temp_3 set Entity_Entity_getPos_result_y = tuple_temp_4 set Entity_Entity_getPos_result_z = tuple_temp_5 endif elseif Serializable_typeId[this_1] <= 1158 then set tuple_temp_6 = Entity_getPos(this_1) set tuple_temp_7 = Entity_getPos_return_y set tuple_temp_8 = Entity_getPos_return_z set Entity_Entity_getPos_result_x = tuple_temp_6 set Entity_Entity_getPos_result_y = tuple_temp_7 set Entity_Entity_getPos_result_z = tuple_temp_8 else set tuple_temp_9 = UnitEntity_getPos(this_1) set tuple_temp_10 = UnitEntity_getPos_return_y set tuple_temp_11 = UnitEntity_getPos_return_z set Entity_Entity_getPos_result_x = tuple_temp_9 set Entity_Entity_getPos_result_y = tuple_temp_10 set Entity_Entity_getPos_result_z = tuple_temp_11 endif set dispatch_Entity_Entity_Entity_getPos_return_x = Entity_Entity_getPos_result_x set dispatch_Entity_Entity_Entity_getPos_return_y = Entity_Entity_getPos_result_y set dispatch_Entity_Entity_Entity_getPos_return_z = Entity_Entity_getPos_result_z return dispatch_Entity_Entity_Entity_getPos_return_x endfunction function rect_getMaxX takes rect this_1 returns real return GetRectMaxX(this_1) endfunction function rect_getMaxY takes rect this_1 returns real return GetRectMaxY(this_1) endfunction function rect_getMinX takes rect this_1 returns real return GetRectMinX(this_1) endfunction function rect_getMinY takes rect this_1 returns real return GetRectMinY(this_1) endfunction function rect_contains takes rect this_1, real r_x, real r_y returns boolean return r_x > rect_getMinX(this_1) and r_x < rect_getMaxX(this_1) and r_y > rect_getMinY(this_1) and r_y < rect_getMaxY(this_1) endfunction function getRegionData_3302 takes real pos_x_1, real pos_y_1 returns integer local integer i = 0 loop exitwhen not (RegionData_regions[i] != 0) if rect_contains(RegionData_theRect[RegionData_regions[i]], pos_x_1, pos_y_1) then return RegionData_regions[i] endif set i = i + 1 endloop return RegionData_EMPTY_REGION endfunction function vec3_toVec2 takes real this_x, real this_y, real this_z returns real set vec3_toVec2_return_x = this_x set vec3_toVec2_return_y = this_y return vec3_toVec2_return_x endfunction function getRegionData takes real pos_x_1, real pos_y_1, real pos_z returns integer return getRegionData_3302(vec3_toVec2(pos_x_1, pos_y_1, pos_z), vec3_toVec2_return_y) endfunction function Entity_getCurrentRegion takes integer this_1 returns integer if RegionData_currentRegion[this_1] == 0 then set RegionData_currentRegion[this_1] = getRegionData(dispatch_Entity_Entity_Entity_getPos(this_1), dispatch_Entity_Entity_Entity_getPos_return_y, dispatch_Entity_Entity_Entity_getPos_return_z) endif return RegionData_currentRegion[this_1] endfunction function Log_debug takes string msg returns nothing call printLog_3942(Player_localPlayer, 1, msg) endfunction function unit_kill takes unit this_1 returns nothing call KillUnit(this_1) endfunction function Boss_onDamage takes integer this_1, integer w_escaper, real dmg returns nothing set Boss_currentHP[this_1] = Boss_currentHP[this_1] - dmg if Boss_currentHP[this_1] < 1. then call Log_debug("Our boss is dead") call unit_kill(UnitEntity_actor[this_1]) endif endfunction function dispatch_Boss_Boss_Boss_onDamage takes integer this_1, integer w_escaper, real dmg returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Boss.onDamage") else call error("Called Boss.onDamage on invalid object.") endif endif call Boss_onDamage(this_1, w_escaper, dmg) endfunction function BossDamager_damage_1 takes integer this_1, integer e_1 returns nothing call dispatch_Boss_Boss_Boss_onDamage(RegionData_boss[Entity_getCurrentRegion(this_1)], e_1, BossDamager_damage[this_1]) endfunction function dispatch_BossDamager_BossDamager_BossDamager_damage takes integer this_1, integer e_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BossDamager.damage") else call error("Called BossDamager.damage on invalid object.") endif endif call BossDamager_damage_1(this_1, e_1) endfunction function BossDamager_onInRange takes nothing returns nothing local integer data_1 = unit_getEntity(GetTriggerUnit()) local integer bossDamager = unit_getEntity(trigger_getSource(GetTriggeringTrigger())) local integer instanceOfTemp = Serializable_typeId[data_1] local integer edata if instanceOfTemp >= 1162 and instanceOfTemp <= 1167 then set edata = data_1 call dispatch_BossDamager_BossDamager_BossDamager_damage(bossDamager, edata) endif endfunction function CallbackCounted_getCount takes integer this_1 returns integer local integer cond_result if CallbackCounted_count[this_1] < CallbackCounted_maxCount[this_1] then set cond_result = CallbackCounted_count[this_1] + 1 else set cond_result = CallbackCounted_count[this_1] endif return cond_result endfunction function dispatch_CallbackCounted_ClosureTimers_CallbackCounted_getCount takes integer this_1 returns integer local integer ClosureTimers_CallbackCounted_getCount_result if CallbackCounted_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling CallbackCounted.getCount") else call error("Called CallbackCounted.getCount on invalid object.") endif endif set ClosureTimers_CallbackCounted_getCount_result = CallbackCounted_getCount(this_1) return ClosureTimers_CallbackCounted_getCount_result endfunction function CallbackCounted_isLast takes integer this_1 returns boolean return CallbackCounted_count[this_1] == 0 endfunction function dispatch_CallbackCounted_ClosureTimers_CallbackCounted_isLast takes integer this_1 returns boolean local boolean ClosureTimers_CallbackCounted_isLast_result if CallbackCounted_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling CallbackCounted.isLast") else call error("Called CallbackCounted.isLast on invalid object.") endif endif set ClosureTimers_CallbackCounted_isLast_result = CallbackCounted_isLast(this_1) return ClosureTimers_CallbackCounted_isLast_result endfunction function CallbackCounted_progress takes integer this_1 returns real return 1. - CallbackCounted_count[this_1] * 1. / CallbackCounted_maxCount[this_1] endfunction function dispatch_CallbackCounted_ClosureTimers_CallbackCounted_progress takes integer this_1 returns real local real ClosureTimers_CallbackCounted_progress_result if CallbackCounted_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling CallbackCounted.progress") else call error("Called CallbackCounted.progress on invalid object.") endif endif set ClosureTimers_CallbackCounted_progress_result = CallbackCounted_progress(this_1) return ClosureTimers_CallbackCounted_progress_result endfunction function int_toString takes integer this_1 returns string return I2S(this_1) endfunction function testFail takes string msg returns nothing endfunction function int_assertEquals takes integer this_1, integer expected returns nothing if this_1 != expected then call testFail("Expected <" + int_toString(expected) + ">, Actual <" + int_toString(this_1) + ">") endif endfunction function real_toString takes real this_1 returns string return R2S(this_1) endfunction function real_assertEquals takes real this_1, real expected, real delta returns nothing if this_1 - expected > delta or expected - this_1 > delta then call testFail("Expected <" + real_toString(expected) + ">, Actual <" + real_toString(this_1) + " with delta " + real_toString(delta) + ">") endif endfunction function call_doPeriodicallyCounted_ClosureTimers takes integer this_1, integer cb_1 returns nothing call int_assertEquals(dispatch_CallbackCounted_ClosureTimers_CallbackCounted_getCount(cb_1), w_count[this_1]) if dispatch_CallbackCounted_ClosureTimers_CallbackCounted_isLast(cb_1) then call real_assertEquals(dispatch_CallbackCounted_ClosureTimers_CallbackCounted_progress(cb_1), 1., 0.0001) call int_assertEquals(dispatch_CallbackCounted_ClosureTimers_CallbackCounted_getCount(cb_1), 1) elseif w_count[this_1] == 3 then call real_assertEquals(dispatch_CallbackCounted_ClosureTimers_CallbackCounted_progress(cb_1), 0.33333, 0.00001) call int_assertEquals(dispatch_CallbackCounted_ClosureTimers_CallbackCounted_getCount(cb_1), 3) elseif w_count[this_1] == 2 then call real_assertEquals(dispatch_CallbackCounted_ClosureTimers_CallbackCounted_progress(cb_1), 0.66666, 0.00001) call int_assertEquals(dispatch_CallbackCounted_ClosureTimers_CallbackCounted_getCount(cb_1), 2) endif set w_count[this_1] = w_count[this_1] - 1 endfunction function Entity_DupletListModule_removeFromActive takes integer this_1 returns nothing set Entity_DupletListModule_activeSize = Entity_DupletListModule_activeSize - 1 if this_1 != Entity_DupletListModule_firstActive then set Entity_DupletListModule_next[Entity_DupletListModule_prev[this_1]] = Entity_DupletListModule_next[this_1] else set Entity_DupletListModule_firstActive = Entity_DupletListModule_next[this_1] endif if this_1 != Entity_DupletListModule_lastActive then set Entity_DupletListModule_prev[Entity_DupletListModule_next[this_1]] = Entity_DupletListModule_prev[this_1] else set Entity_DupletListModule_lastActive = Entity_DupletListModule_prev[this_1] endif set Entity_DupletListModule_prev[this_1] = 0 set Entity_DupletListModule_next[this_1] = 0 endfunction function dispatch_Entity_Entity_Entity_DupletListModule_removeFromActive takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Entity.removeFromActive") else call error("Called Entity.removeFromActive on invalid object.") endif endif call Entity_DupletListModule_removeFromActive(this_1) endfunction function Entity_DupletListModule_removeFromInactive takes integer this_1 returns nothing set Entity_DupletListModule_inactiveSize = Entity_DupletListModule_inactiveSize - 1 if this_1 != Entity_DupletListModule_firstInactive then set Entity_DupletListModule_next[Entity_DupletListModule_prev[this_1]] = Entity_DupletListModule_next[this_1] else set Entity_DupletListModule_firstInactive = Entity_DupletListModule_next[this_1] endif if this_1 != Entity_DupletListModule_lastInactive then set Entity_DupletListModule_prev[Entity_DupletListModule_next[this_1]] = Entity_DupletListModule_prev[this_1] else set Entity_DupletListModule_lastInactive = Entity_DupletListModule_prev[this_1] endif set Entity_DupletListModule_prev[this_1] = 0 set Entity_DupletListModule_next[this_1] = 0 endfunction function dispatch_Entity_Entity_Entity_DupletListModule_removeFromInactive takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Entity.removeFromInactive") else call error("Called Entity.removeFromInactive on invalid object.") endif endif call Entity_DupletListModule_removeFromInactive(this_1) endfunction function Entity_DupletListModule_remove takes integer this_1 returns nothing if Entity_DupletListModule_active[this_1] then set Entity_DupletListModule_active[this_1] = false call dispatch_Entity_Entity_Entity_DupletListModule_removeFromActive(this_1) else call dispatch_Entity_Entity_Entity_DupletListModule_removeFromInactive(this_1) endif endfunction function dispatch_Entity_Entity_Entity_DupletListModule_remove takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Entity.remove") else call error("Called Entity.remove on invalid object.") endif endif call Entity_DupletListModule_remove(this_1) endfunction function Entity_onDestroy takes integer this_1 returns nothing call dispatch_Entity_Entity_Entity_DupletListModule_remove(this_1) endfunction function item_getUserData takes item this_1 returns integer return GetItemUserData(this_1) endfunction function item_getEntity takes item this_1 returns integer return item_getUserData(this_1) endfunction function item_getTypeId takes item this_1 returns integer return GetItemTypeId(this_1) endfunction function item_isAlive takes item this_1 returns boolean return item_getTypeId(this_1) != 0 and GetWidgetLife(this_1) > .405 endfunction function item_remove takes item this_1 returns nothing call RemoveItem(this_1) endfunction function item_setUserData takes item this_1, integer data_1 returns nothing call SetItemUserData(this_1, data_1) endfunction function item_setEntity takes item this_1, integer e_1 returns nothing call item_setUserData(this_1, e_1) endfunction function ItemEntity_onDestroy takes integer this_1 returns nothing if item_getEntity(ItemEntity_actor[this_1]) == this_1 then call item_setEntity(ItemEntity_actor[this_1], 0) if item_isAlive(ItemEntity_actor[this_1]) then call item_remove(ItemEntity_actor[this_1]) endif endif set ItemEntity_actor[this_1] = null call Entity_onDestroy(this_1) endfunction function unit_remove takes unit this_1 returns nothing call RemoveUnit(this_1) endfunction function unit_setEntity takes unit this_1, integer e_1 returns nothing set Entity_entities[unit_getIndex(this_1)] = e_1 endfunction function UnitEntity_onDestroy takes integer this_1 returns nothing if unit_getEntity(UnitEntity_actor[this_1]) == this_1 then call unit_setEntity(UnitEntity_actor[this_1], 0) if unit_isAlive(UnitEntity_actor[this_1]) then if Frentity_KILL_ACTORS then call unit_kill(UnitEntity_actor[this_1]) else call unit_remove(UnitEntity_actor[this_1]) endif endif endif set UnitEntity_actor[this_1] = null call Entity_onDestroy(this_1) endfunction function dealloc_BallItem takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type BallItem") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function dealloc_Boots takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Boots") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function dealloc_Coin takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Coin") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function dealloc_ItemEntityBridge takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type ItemEntityBridge") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function dealloc_ItemObject takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type ItemObject") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function dealloc_Key takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Key") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function dealloc_Tome takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Tome") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function HashMap_get takes integer this_1, integer key returns integer return dispatch_Table_Table_Table_loadInt(this_1, key) endfunction function dispatch_HashMap_HashMap_HashMap_get takes integer this_1, integer key returns integer local integer HashMap_HashMap_get_result if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashMap.get") else call error("Called HashMap.get on invalid object.") endif endif set HashMap_HashMap_get_result = HashMap_get(this_1, key) return HashMap_HashMap_get_result endfunction function Table_hasInt takes integer this_1, integer parentKey returns boolean return hashtable_hasInt(Table_ht, this_1, parentKey) endfunction function dispatch_Table_Table_Table_hasInt takes integer this_1, integer parentKey returns boolean local boolean Table_Table_hasInt_result if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Table.hasInt") else call error("Called Table.hasInt on invalid object.") endif endif set Table_Table_hasInt_result = Table_hasInt(this_1, parentKey) return Table_Table_hasInt_result endfunction function HashMap_has takes integer this_1, integer key returns boolean return dispatch_Table_Table_Table_hasInt(this_1, key) endfunction function dispatch_HashMap_HashMap_HashMap_has takes integer this_1, integer key returns boolean local boolean HashMap_HashMap_has_result if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashMap.has") else call error("Called HashMap.has on invalid object.") endif endif set HashMap_HashMap_has_result = HashMap_has(this_1, key) return HashMap_HashMap_has_result endfunction function HashMap_put takes integer this_1, integer key, integer value returns nothing if not dispatch_HashMap_HashMap_HashMap_has(this_1, key) then set HashMap_size[this_1] = HashMap_size[this_1] + 1 endif call dispatch_Table_Table_Table_saveInt(this_1, key, value) endfunction function HashList_count takes integer this_1, integer elem returns integer return hashtable_loadInt(HashList_occurences, this_1, elem) endfunction function dispatch_HashList_HashList_HashList_count takes integer this_1, integer elem returns integer local integer HashList_HashList_count_result if HashList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashList.count") else call error("Called HashList.count on invalid object.") endif endif set HashList_HashList_count_result = HashList_count(this_1, elem) return HashList_HashList_count_result endfunction function HashList_incrOccurences takes integer this_1, integer elem returns nothing call hashtable_saveInt(HashList_occurences, this_1, elem, dispatch_HashList_HashList_HashList_count(this_1, elem) + 1) endfunction function dispatch_HashList_HashList_HashList_incrOccurences takes integer this_1, integer elem returns nothing if HashList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashList.incrOccurences") else call error("Called HashList.incrOccurences on invalid object.") endif endif call HashList_incrOccurences(this_1, elem) endfunction function HashList_add_1 takes integer this_1, integer elems_0 returns nothing call hashtable_saveInt(HashList_ht, this_1, HashList_size[this_1], elems_0) call dispatch_HashList_HashList_HashList_incrOccurences(this_1, elems_0) set HashList_size[this_1] = HashList_size[this_1] + 1 endfunction function HashList_size_1 takes integer this_1 returns integer return HashList_size[this_1] endfunction function dispatch_HashList_HashList_HashList_size takes integer this_1 returns integer local integer HashList_HashList_size_result if HashList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashList.size") else call error("Called HashList.size on invalid object.") endif endif set HashList_HashList_size_result = HashList_size_1(this_1) return HashList_HashList_size_result endfunction function HashSet_add_1 takes integer this_1, integer elems_0 returns nothing if dispatch_HashList_HashList_HashList_count(this_1, elems_0) <= 0 then call hashtable_saveInt(HashSet_position, this_1, elems_0, dispatch_HashList_HashList_HashList_size(this_1)) call HashList_add_1(this_1, elems_0) endif endfunction function dispatch_HashList_HashList_HashList_add_1 takes integer this_1, integer elems_0 returns nothing if HashList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashList.add") else call error("Called HashList.add on invalid object.") endif endif if HashList_typeId[this_1] <= 894 then call HashList_add_1(this_1, elems_0) else call HashSet_add_1(this_1, elems_0) endif endfunction function HashList_has takes integer this_1, integer elem returns boolean return dispatch_HashList_HashList_HashList_count(this_1, elem) > 0 endfunction function dispatch_HashList_HashList_HashList_has takes integer this_1, integer elem returns boolean local boolean HashList_HashList_has_result if HashList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashList.has") else call error("Called HashList.has on invalid object.") endif endif set HashList_HashList_has_result = HashList_has(this_1, elem) return HashList_HashList_has_result endfunction function IterableMap_hasKey takes integer this_1, integer key returns boolean return dispatch_HashList_HashList_HashList_has(IterableMap_keys[this_1], key) endfunction function dispatch_IterableMap_HashMap_IterableMap_hasKey takes integer this_1, integer key returns boolean local boolean HashMap_IterableMap_hasKey_result if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling IterableMap.hasKey") else call error("Called IterableMap.hasKey on invalid object.") endif endif set HashMap_IterableMap_hasKey_result = IterableMap_hasKey(this_1, key) return HashMap_IterableMap_hasKey_result endfunction function IterableMap_put takes integer this_1, integer key, integer value returns nothing call HashMap_put(this_1, key, value) if not dispatch_IterableMap_HashMap_IterableMap_hasKey(this_1, key) then call dispatch_HashList_HashList_HashList_add_1(IterableMap_keys[this_1], key) endif endfunction function dispatch_HashMap_HashMap_HashMap_put takes integer this_1, integer key, integer value returns nothing if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashMap.put") else call error("Called HashMap.put on invalid object.") endif endif if Table_typeId[this_1] <= 1493 then call HashMap_put(this_1, key, value) else call IterableMap_put(this_1, key, value) endif endfunction function Table_removeInt takes integer this_1, integer parentKey returns nothing call RemoveSavedInteger(Table_ht, this_1, parentKey) endfunction function dispatch_Table_Table_Table_removeInt takes integer this_1, integer parentKey returns nothing if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Table.removeInt") else call error("Called Table.removeInt on invalid object.") endif endif call Table_removeInt(this_1, parentKey) endfunction function HashMap_remove takes integer this_1, integer key returns nothing if dispatch_HashMap_HashMap_HashMap_has(this_1, key) then set HashMap_size[this_1] = HashMap_size[this_1] - 1 endif call dispatch_Table_Table_Table_removeInt(this_1, key) endfunction function HashList_decrOccurences takes integer this_1, integer elem returns nothing call hashtable_saveInt(HashList_occurences, this_1, elem, dispatch_HashList_HashList_HashList_count(this_1, elem) - 1) endfunction function dispatch_HashList_HashList_HashList_decrOccurences takes integer this_1, integer elem returns nothing if HashList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashList.decrOccurences") else call error("Called HashList.decrOccurences on invalid object.") endif endif call HashList_decrOccurences(this_1, elem) endfunction function HashList_removeAt takes integer this_1, integer index returns integer local integer tmp local integer i local integer temp call dispatch_HashList_HashList_HashList_decrOccurences(this_1, hashtable_loadInt(HashList_ht, this_1, index)) set tmp = hashtable_loadInt(HashList_ht, this_1, index) set i = index set temp = HashList_size[this_1] loop exitwhen i > temp call hashtable_saveInt(HashList_ht, this_1, i, hashtable_loadInt(HashList_ht, this_1, i + 1)) set i = i + 1 endloop set HashList_size[this_1] = HashList_size[this_1] - 1 return tmp endfunction function HashList_get takes integer this_1, integer index returns integer return hashtable_loadInt(HashList_ht, this_1, index) endfunction function dispatch_HashList_HashList_HashList_get takes integer this_1, integer index returns integer local integer HashList_HashList_get_result if HashList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashList.get") else call error("Called HashList.get on invalid object.") endif endif set HashList_HashList_get_result = HashList_get(this_1, index) return HashList_HashList_get_result endfunction function hashtable_removeInt takes hashtable this_1, integer parentKey, integer childKey returns nothing call RemoveSavedInteger(this_1, parentKey, childKey) endfunction function HashSet_removeAt takes integer this_1, integer index returns integer local integer i local integer temp call hashtable_removeInt(HashSet_position, this_1, dispatch_HashList_HashList_HashList_get(this_1, index)) set i = index + 1 set temp = dispatch_HashList_HashList_HashList_size(this_1) loop exitwhen i > temp call hashtable_saveInt(HashSet_position, this_1, dispatch_HashList_HashList_HashList_get(this_1, i), hashtable_loadInt(HashSet_position, this_1, dispatch_HashList_HashList_HashList_get(this_1, i)) - 1) set i = i + 1 endloop return HashList_removeAt(this_1, index) endfunction function dispatch_HashList_HashList_HashList_removeAt takes integer this_1, integer index returns integer local integer HashList_HashList_removeAt_result if HashList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashList.removeAt") else call error("Called HashList.removeAt on invalid object.") endif endif if HashList_typeId[this_1] <= 894 then set HashList_HashList_removeAt_result = HashList_removeAt(this_1, index) else set HashList_HashList_removeAt_result = HashSet_removeAt(this_1, index) endif return HashList_HashList_removeAt_result endfunction function HashList_remove takes integer this_1, integer t returns boolean local boolean result_1 = false local integer i = 0 local integer temp = HashList_size[this_1] - 1 loop exitwhen i > temp if t == hashtable_loadInt(HashList_ht, this_1, i) then set result_1 = true call dispatch_HashList_HashList_HashList_removeAt(this_1, i) exitwhen true endif set i = i + 1 endloop return result_1 endfunction function dispatch_HashSet_HashSet_HashSet_removeAt takes integer this_1, integer index returns integer local integer HashSet_HashSet_removeAt_result if HashList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashSet.removeAt") else call error("Called HashSet.removeAt on invalid object.") endif endif set HashSet_HashSet_removeAt_result = HashSet_removeAt(this_1, index) return HashSet_HashSet_removeAt_result endfunction function HashSet_remove takes integer this_1, integer elem returns boolean local boolean result_1 = false if dispatch_HashList_HashList_HashList_count(this_1, elem) > 0 then call dispatch_HashSet_HashSet_HashSet_removeAt(this_1, hashtable_loadInt(HashSet_position, this_1, elem)) set result_1 = true endif return result_1 endfunction function dispatch_HashList_HashList_HashList_remove takes integer this_1, integer t returns boolean local boolean HashList_HashList_remove_result if HashList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashList.remove") else call error("Called HashList.remove on invalid object.") endif endif if HashList_typeId[this_1] <= 894 then set HashList_HashList_remove_result = HashList_remove(this_1, t) else set HashList_HashList_remove_result = HashSet_remove(this_1, t) endif return HashList_HashList_remove_result endfunction function IterableMap_remove takes integer this_1, integer key returns nothing call HashMap_remove(this_1, key) if dispatch_IterableMap_HashMap_IterableMap_hasKey(this_1, key) then call dispatch_HashList_HashList_HashList_remove(IterableMap_keys[this_1], key) endif endfunction function dispatch_HashMap_HashMap_HashMap_remove takes integer this_1, integer key returns nothing if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashMap.remove") else call error("Called HashMap.remove on invalid object.") endif endif if Table_typeId[this_1] <= 1493 then call HashMap_remove(this_1, key) else call IterableMap_remove(this_1, key) endif endfunction function OnCastListener_onDestroy takes integer this_1 returns nothing local integer index local integer listener_1 local integer listener_2 if OnCastListener_eventUnit[this_1] != null then set index = unit_getIndex(OnCastListener_eventUnit[this_1]) set listener_1 = EventListener_castMapCasters[index] if listener_1 == this_1 then if OnCastListener_next[this_1] != 0 then set EventListener_castMapCasters[index] = OnCastListener_next[this_1] else set EventListener_castMapCasters[index] = 0 endif elseif OnCastListener_prev[this_1] != 0 then set OnCastListener_next[OnCastListener_prev[this_1]] = OnCastListener_next[this_1] endif else set listener_2 = dispatch_HashMap_HashMap_HashMap_get(EventListener_castMap, OnCastListener_abilId[this_1]) if listener_2 == this_1 then if OnCastListener_next[this_1] != 0 then call dispatch_HashMap_HashMap_HashMap_put(EventListener_castMap, OnCastListener_abilId[this_1], OnCastListener_next[this_1]) else call dispatch_HashMap_HashMap_HashMap_remove(EventListener_castMap, OnCastListener_abilId[this_1]) endif elseif OnCastListener_prev[this_1] != 0 then set OnCastListener_next[OnCastListener_prev[this_1]] = OnCastListener_next[this_1] endif endif set OnCastListener_prev[OnCastListener_next[this_1]] = OnCastListener_prev[this_1] set OnCastListener_next[this_1] = 0 set OnCastListener_prev[this_1] = 0 endfunction function dealloc_OnCastListener takes integer obj_1 returns nothing if OnCastListener_typeId[obj_1] == 0 then call error("Double free: object of type OnCastListener") else set OnCastListener_nextFree[OnCastListener_firstFree] = obj_1 set OnCastListener_firstFree = OnCastListener_firstFree + 1 set OnCastListener_typeId[obj_1] = 0 endif endfunction function destroyOnCastListener takes integer this_1 returns nothing call OnCastListener_onDestroy(this_1) call dealloc_OnCastListener(this_1) endfunction function dispatch_OnCastListener_destroyOnCastListener takes integer this_1 returns nothing if OnCastListener_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling OnCastListener.OnCastListener") else call error("Called OnCastListener.OnCastListener on invalid object.") endif endif call destroyOnCastListener(this_1) endfunction function fireEvents takes unit u_1 returns boolean return not ClosureEvents_config_fire[unit_getIndex(u_1)] endfunction function Log_trace takes string msg returns nothing call printLog_3942(Player_localPlayer, 0, msg) endfunction function EventListener_onDestroy takes integer this_1 returns nothing local integer listener_1 local integer listener_2 if EventListener_uid[this_1] < 0 then set listener_1 = EventListener_generalListenersFirsts[EventListener_eventId[this_1]] if listener_1 == this_1 then set EventListener_generalListenersFirsts[EventListener_eventId[this_1]] = EventListener_next[this_1] elseif EventListener_prev[this_1] != 0 then set EventListener_next[EventListener_prev[this_1]] = EventListener_next[this_1] endif else set listener_2 = EventListener_unitListenersFirsts[EventListener_uid[this_1]] if listener_2 == this_1 then set EventListener_unitListenersFirsts[EventListener_uid[this_1]] = EventListener_next[this_1] elseif EventListener_prev[this_1] != 0 then set EventListener_next[EventListener_prev[this_1]] = EventListener_next[this_1] endif endif if EventListener_next[this_1] != 0 then set EventListener_prev[EventListener_next[this_1]] = EventListener_prev[this_1] endif set EventListener_next[this_1] = 0 set EventListener_prev[this_1] = 0 endfunction function dealloc_EventListener takes integer obj_1 returns nothing if EventListener_typeId[obj_1] == 0 then call error("Double free: object of type EventListener") else set EventListener_nextFree[EventListener_firstFree] = obj_1 set EventListener_firstFree = EventListener_firstFree + 1 set EventListener_typeId[obj_1] = 0 endif endfunction function destroyEventListener takes integer this_1 returns nothing call EventListener_onDestroy(this_1) call dealloc_EventListener(this_1) endfunction function dispatch_EventListener_destroyEventListener takes integer this_1 returns nothing if EventListener_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling EventListener.EventListener") else call error("Called EventListener.EventListener on invalid object.") endif endif call destroyEventListener(this_1) endfunction function unregisterEvents takes integer id returns nothing local integer listener_1 local integer t if id > 0 then if EventListener_unitListenersFirsts[id] != 0 then call Log_trace("unregister unit has listeners. startid: " + int_toString(id)) set listener_1 = EventListener_unitListenersFirsts[id] set EventListener_unitListenersFirsts[id] = 0 loop exitwhen not (listener_1 != 0) set t = listener_1 set listener_1 = EventListener_next[listener_1] call dispatch_EventListener_destroyEventListener(t) endloop endif endif endfunction function unregisterEventsForUnit takes unit u_1 returns nothing local integer index local integer listener_1 local integer t if fireEvents(u_1) then set index = unit_getIndex(u_1) call unregisterEvents(index) if EventListener_castMapCasters[index] != 0 then set listener_1 = EventListener_castMapCasters[index] set EventListener_castMapCasters[index] = 0 loop exitwhen not (listener_1 != 0) set t = listener_1 set listener_1 = OnCastListener_next[listener_1] call dispatch_OnCastListener_destroyOnCastListener(t) endloop endif endif endfunction function SetupObject_onDestroy takes integer this_1 returns nothing set ClosureEvents_config_fire[unit_getIndex(UnitEntity_actor[this_1])] = false call unregisterEventsForUnit(SetupObject_setup[this_1]) call unit_setEntity(SetupObject_setup[this_1], 0) call unit_remove(SetupObject_setup[this_1]) set SetupObject_setup[this_1] = null call UnitEntity_onDestroy(this_1) endfunction function SensorListener_onDestroy takes integer this_1 returns nothing endfunction function dealloc_SensorListener takes integer obj_1 returns nothing if SensorListener_typeId[obj_1] == 0 then call error("Double free: object of type SensorListener") else set SensorListener_nextFree[SensorListener_firstFree] = obj_1 set SensorListener_firstFree = SensorListener_firstFree + 1 set SensorListener_typeId[obj_1] = 0 endif endfunction function destroySensorListener takes integer this_1 returns nothing call SensorListener_onDestroy(this_1) call dealloc_SensorListener(this_1) endfunction function dispatch_SensorListener_destroySensorListener takes integer this_1 returns nothing if SensorListener_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SensorListener.SensorListener") else call error("Called SensorListener.SensorListener on invalid object.") endif endif call destroySensorListener(this_1) endfunction function triggerToIndex takes trigger object returns integer return handle_getTCHandleId(object) endfunction function hashtable_loadTriggerHandle takes hashtable this_1, integer parentKey, integer childKey returns trigger return LoadTriggerHandle(this_1, parentKey, childKey) endfunction function Table_loadTrigger takes integer this_1, integer parentKey returns trigger return hashtable_loadTriggerHandle(Table_ht, this_1, parentKey) endfunction function dispatch_Table_Table_Table_loadTrigger takes integer this_1, integer parentKey returns trigger local trigger Table_Table_loadTrigger_result if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Table.loadTrigger") else call error("Called Table.loadTrigger on invalid object.") endif endif set Table_Table_loadTrigger_result = Table_loadTrigger(this_1, parentKey) return Table_Table_loadTrigger_result endfunction function Table_removeHandle takes integer this_1, integer parentKey returns nothing call RemoveSavedHandle(Table_ht, this_1, parentKey) endfunction function dispatch_Table_Table_Table_removeHandle takes integer this_1, integer parentKey returns nothing if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Table.removeHandle") else call error("Called Table.removeHandle on invalid object.") endif endif call Table_removeHandle(this_1, parentKey) endfunction function handle_getHandleId takes handle this_1 returns integer return GetHandleId(this_1) endfunction function trigger_destr takes trigger this_1 returns nothing call DestroyTrigger(this_1) endfunction function unit_clearRegister takes unit this_1 returns nothing local integer handleId = handle_getHandleId(this_1) local trigger t local integer trigHandleId local integer receiver local integer receiver_1 if dispatch_Table_Table_Table_loadTrigger(EventHelper_triggerData, handleId) == null then return endif set t = dispatch_Table_Table_Table_loadTrigger(EventHelper_triggerData, handleId) set trigHandleId = handle_getHandleId(t) call trigger_destr(t) set receiver = EventHelper_triggerData call dispatch_Table_Table_Table_removeHandle(receiver, handleId) set receiver_1 = receiver call dispatch_Table_Table_Table_removeHandle(receiver_1, trigHandleId) endfunction function EscaperSensorSetup_onDestroy takes integer this_1 returns nothing if EscaperSensorSetup_Sensor_inRangeTrig[this_1] != null then call dispatch_SensorListener_destroySensorListener(dispatch_HashMap_HashMap_HashMap_get(EscaperSensorSetup_Sensor_sensorListeners, triggerToIndex(EscaperSensorSetup_Sensor_inRangeTrig[this_1]))) call dispatch_HashMap_HashMap_HashMap_remove(EscaperSensorSetup_Sensor_sensorListeners, triggerToIndex(EscaperSensorSetup_Sensor_inRangeTrig[this_1])) call unit_clearRegister(EscaperSensorSetup_Sensor_actorRef[this_1]) set EscaperSensorSetup_Sensor_inRangeTrig[this_1] = null endif call SetupObject_onDestroy(this_1) endfunction function AirKiller_onDestroy takes integer this_1 returns nothing call EscaperSensorSetup_onDestroy(this_1) endfunction function dealloc_AirKiller takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type AirKiller") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyAirKiller takes integer this_1 returns nothing call AirKiller_onDestroy(this_1) call dealloc_AirKiller(this_1) endfunction function effect_destr takes effect this_1 returns nothing call DestroyEffect(this_1) endfunction function Fx2_onDestroy takes integer this_1 returns nothing call effect_destr(Fx2_eff[this_1]) endfunction function dealloc_Fx2 takes integer obj_1 returns nothing if Fx2_typeId[obj_1] == 0 then call error("Double free: object of type Fx2") else set Fx2_nextFree[Fx2_firstFree] = obj_1 set Fx2_firstFree = Fx2_firstFree + 1 set Fx2_typeId[obj_1] = 0 endif endfunction function destroyFx2 takes integer this_1 returns nothing call Fx2_onDestroy(this_1) call dealloc_Fx2(this_1) endfunction function dispatch_Fx2_destroyFx2 takes integer this_1 returns nothing if Fx2_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Fx2.Fx2") else call error("Called Fx2.Fx2 on invalid object.") endif endif call destroyFx2(this_1) endfunction function effect_setAlpha takes effect this_1, integer alpha returns nothing call BlzSetSpecialEffectAlpha(this_1, alpha) endfunction function effect_setPos_3261 takes effect this_1, real pos_x_1, real pos_y_1 returns nothing call BlzSetSpecialEffectPosition(this_1, pos_x_1, pos_y_1, BlzGetLocalSpecialEffectZ(this_1)) endfunction function Fx2Entity_onDestroy takes integer this_1 returns nothing if Fx2Entity_silent[this_1] then call effect_setAlpha(Fx2_eff[Fx2Entity_fx[this_1]], 0) call effect_setPos_3261(Fx2_eff[Fx2Entity_fx[this_1]], MapBounds_boundMax_x, MapBounds_boundMax_y) endif call dispatch_Fx2_destroyFx2(Fx2Entity_fx[this_1]) call Entity_onDestroy(this_1) endfunction function dealloc_OnEndListener takes integer obj_1 returns nothing if OnEndListener_typeId[obj_1] == 0 then call error("Double free: object of type OnEndListener") else set OnEndListener_firstFree = OnEndListener_firstFree + 1 set OnEndListener_typeId[obj_1] = 0 endif endfunction function destroyOnEndListener takes integer this_1 returns nothing call dealloc_OnEndListener(this_1) endfunction function dispatch_OnEndListener_destroyOnEndListener takes integer this_1 returns nothing if OnEndListener_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling OnEndListener.OnEndListener") else call error("Called OnEndListener.OnEndListener on invalid object.") endif endif call destroyOnEndListener(this_1) endfunction function dealloc_OnHitListener takes integer obj_1 returns nothing if OnHitListener_typeId[obj_1] == 0 then call error("Double free: object of type OnHitListener") else set OnHitListener_firstFree = OnHitListener_firstFree + 1 set OnHitListener_typeId[obj_1] = 0 endif endfunction function destroyOnHitListener takes integer this_1 returns nothing call dealloc_OnHitListener(this_1) endfunction function dispatch_OnHitListener_destroyOnHitListener takes integer this_1 returns nothing if OnHitListener_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling OnHitListener.OnHitListener") else call error("Called OnHitListener.OnHitListener on invalid object.") endif endif call destroyOnHitListener(this_1) endfunction function group_destr takes group this_1 returns nothing call DestroyGroup(this_1) endfunction function Projectile_onDestroy takes integer this_1 returns nothing if Projectile_onEnd[this_1] != 0 then call group_destr(Projectile_hitGroup[this_1]) call dispatch_OnEndListener_destroyOnEndListener(Projectile_onEnd[this_1]) endif if Projectile_onHit[this_1] != 0 then call dispatch_OnHitListener_destroyOnHitListener(Projectile_onHit[this_1]) endif call Fx2Entity_onDestroy(this_1) endfunction function AirPhysicsProjectile_onDestroy takes integer this_1 returns nothing call Projectile_onDestroy(this_1) endfunction function dealloc_AirPhysicsProjectile takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type AirPhysicsProjectile") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyAirPhysicsProjectile takes integer this_1 returns nothing call AirPhysicsProjectile_onDestroy(this_1) call dealloc_AirPhysicsProjectile(this_1) endfunction function LobbyTeleporter_votes_set takes integer instanceId, integer arrayIndex, boolean value returns nothing if arrayIndex < 0 or arrayIndex >= 12 then call error("Index out of Bounds") elseif arrayIndex <= 5 then if arrayIndex <= 2 then if arrayIndex <= 1 then if arrayIndex <= 0 then set LobbyTeleporter_votes_0[instanceId] = value else set LobbyTeleporter_votes_1[instanceId] = value endif else set LobbyTeleporter_votes_2[instanceId] = value endif elseif arrayIndex <= 4 then if arrayIndex <= 3 then set LobbyTeleporter_votes_3[instanceId] = value else set LobbyTeleporter_votes_4[instanceId] = value endif else set LobbyTeleporter_votes_5[instanceId] = value endif elseif arrayIndex <= 8 then if arrayIndex <= 7 then if arrayIndex <= 6 then set LobbyTeleporter_votes_6[instanceId] = value else set LobbyTeleporter_votes_7[instanceId] = value endif else set LobbyTeleporter_votes_8[instanceId] = value endif elseif arrayIndex <= 10 then if arrayIndex <= 9 then set LobbyTeleporter_votes_9[instanceId] = value else set LobbyTeleporter_votes_10[instanceId] = value endif else set LobbyTeleporter_votes_11[instanceId] = value endif endfunction function StaticBaseObject_clearQuestionmark takes integer this_1 returns nothing if StaticBaseObject_noRally[this_1] != null then call effect_destr(StaticBaseObject_noRally[this_1]) set StaticBaseObject_noRally[this_1] = null endif endfunction function LinkedList_size_1 takes integer this_1 returns integer return LinkedList_size[this_1] endfunction function dispatch_LinkedList_LinkedList_LinkedList_size takes integer this_1 returns integer local integer LinkedList_LinkedList_size_result if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.size") else call error("Called LinkedList.size on invalid object.") endif endif set LinkedList_LinkedList_size_result = LinkedList_size_1(this_1) return LinkedList_LinkedList_size_result endfunction function dispatch_UnitEntity_Entity_UnitEntity_getPos takes integer this_1 returns real local real Entity_UnitEntity_getPos_result_x local real Entity_UnitEntity_getPos_result_y local real Entity_UnitEntity_getPos_result_z local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling UnitEntity.getPos") else call error("Called UnitEntity.getPos on invalid object.") endif endif set tuple_temp = UnitEntity_getPos(this_1) set tuple_temp_1 = UnitEntity_getPos_return_y set tuple_temp_2 = UnitEntity_getPos_return_z set Entity_UnitEntity_getPos_result_x = tuple_temp set Entity_UnitEntity_getPos_result_y = tuple_temp_1 set Entity_UnitEntity_getPos_result_z = tuple_temp_2 set dispatch_UnitEntity_Entity_UnitEntity_getPos_return_x = Entity_UnitEntity_getPos_result_x set dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y = Entity_UnitEntity_getPos_result_y set dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z = Entity_UnitEntity_getPos_result_z return dispatch_UnitEntity_Entity_UnitEntity_getPos_return_x endfunction function real_round takes real this_1 returns integer local integer cond_result if this_1 > 0. then set cond_result = real_toInt(this_1 + .5) else set cond_result = real_toInt(this_1 - .5) endif return cond_result endfunction function bezier3 takes real start, real mid, real stop, real p returns real return start + 2. * (mid - start) * p + (stop - 2. * mid + start) * p * p endfunction function string_length takes string this_1 returns integer return StringLength(this_1) endfunction function string_substring takes string this_1, integer start, integer stop returns string return SubString(this_1, start, stop) endfunction function string_indexOf takes string this_1, string s returns integer local integer i = 0 local integer temp = string_length(this_1) - string_length(s) loop exitwhen i > temp if string_substring(this_1, i, i + string_length(s)) == s then return i endif set i = i + 1 endloop return -1 endfunction function string_contains takes string this_1, string s returns boolean return string_indexOf(this_1, s) != -1 endfunction function char takes string s returns integer local integer a if s == "/" then set char_return_c = 47 return char_return_c elseif "\\" == s then set char_return_c = 92 return char_return_c endif set a = StringUtils_s2c[string_getHash(s) / 2033480 + 1002] if s != StringUtils_c2s[a] then set char_return_c = a + 32 return char_return_c endif set char_return_c = a return char_return_c endfunction function char_getWidth takes integer this_c returns integer if this_c > StringUtils_MAX_INDEX then return StringUtils_DEFAULT_WIDTH endif return StringUtils_width[this_c] endfunction function string_charAt takes string this_1, integer index returns string return SubString(this_1, index, index + 1) endfunction function string_getWidth takes string this_1 returns integer local integer width = 0 local integer i = 0 local integer temp = string_length(this_1) - 1 loop exitwhen i > temp set width = width + char_getWidth(char(string_charAt(this_1, i))) set i = i + 1 endloop return width endfunction function texttag_setPos takes texttag this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing call SetTextTagPos(this_1, pos_x_1, pos_y_1, pos_z) endfunction function texttag_setText takes texttag this_1, string text, real size returns nothing call SetTextTagText(this_1, text, size * 0.0023) endfunction function vec3_op_minus_4277 takes real this_x, real this_y, real this_z, real v_x, real v_y returns real set vec3_op_minus_return_x_3123 = this_x - v_x set vec3_op_minus_return_y_3125 = this_y - v_y set vec3_op_minus_return_z_3127 = this_z return vec3_op_minus_return_x_3123 endfunction function texttag_center takes texttag this_1, real pos_x_1, real pos_y_1, real pos_z, string message, real size returns texttag local string str = message local integer idx local texttag receiver local texttag receiver_1 loop exitwhen not string_contains(str, "|cff") set idx = string_indexOf(str, "|cff") set str = string_substring(str, 0, idx) + string_substring(str, idx + 10, string_length(str)) endloop set receiver = this_1 call texttag_setPos(receiver, vec3_op_minus_4277(pos_x_1, pos_y_1, pos_z, string_getWidth(str) / 1000. * bezier3(3.0, 8.0, 11.5, size / 25.) * 6.5, 0.), vec3_op_minus_return_y_3125, vec3_op_minus_return_z_3127) set receiver_1 = receiver call texttag_setText(receiver_1, message, size) return this_1 endfunction function LobbyTeleporter_clearQuestionmark takes integer this_1 returns nothing local integer votesNeeded local integer i call StaticBaseObject_clearQuestionmark(this_1) if Entity_owner[this_1] != GameConstants_STAFF_PLAYER then set votesNeeded = real_round(dispatch_LinkedList_LinkedList_LinkedList_size(PlayerData_escaperPlayers) * 0.55) set LobbyTeleporter_ready[this_1] = true set LobbyTeleporter_currentPlus[this_1] = 0 set i = 0 loop exitwhen i > 11 call LobbyTeleporter_votes_set(this_1, i, false) set i = i + 1 endloop if LobbyTeleporter_ftext[this_1] != 0 then call texttag_center(FText_tt[LobbyTeleporter_ftext[this_1]], dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, "|cff11cc00Ready|r - [0" + "/|cffffcc00" + int_toString(votesNeeded) + "|r]", 9.) endif endif endfunction function dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling StaticBaseObject.clearQuestionmark") else call error("Called StaticBaseObject.clearQuestionmark on invalid object.") endif endif if Serializable_typeId[this_1] <= 1200 then if Serializable_typeId[this_1] <= 1199 then call StaticBaseObject_clearQuestionmark(this_1) else call LobbyTeleporter_clearQuestionmark(this_1) endif else call StaticBaseObject_clearQuestionmark(this_1) endif endfunction function StaticBaseObject_onDestroy takes integer this_1 returns nothing call unit_clearRegister(UnitEntity_actor[this_1]) call trigger_destr(StaticBaseObject_inRangeTrig[this_1]) call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(this_1) if StaticBaseObject_disFx[this_1] != null then call effect_destr(StaticBaseObject_disFx[this_1]) set StaticBaseObject_disFx[this_1] = null endif call UnitEntity_onDestroy(this_1) endfunction function alloc_CallbackSingle_doAfter_DummyRecycler_DummyRecycler takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 681 else call error("Out of memory: Could not create CallbackSingle_doAfter_DummyRecycler_DummyRecycler.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 681 endif return this_1 endfunction function CallbackSingle_init takes integer this_1 returns nothing endfunction function construct_CallbackSingle takes integer this_1 returns nothing call CallbackSingle_init(this_1) endfunction function getTimer takes nothing returns timer local timer receiver if TimerUtils_freeTimersCount > 0 then set TimerUtils_freeTimersCount = TimerUtils_freeTimersCount - 1 call timer_setData(TimerUtils_freeTimers[TimerUtils_freeTimersCount], 0) return TimerUtils_freeTimers[TimerUtils_freeTimersCount] else set receiver = CreateTimer() call timer_setData(receiver, 0) return receiver endif endfunction function timer_start takes timer this_1, real time, code timerCallBack returns nothing call TimerStart(this_1, time, false, timerCallBack) endfunction function CallbackSingle_start takes integer this_1, timer whichTimer, real time returns nothing local timer receiver = whichTimer local timer receiver_1 call timer_setData(receiver, this_1) set receiver_1 = receiver call timer_start(receiver_1, time, ref_function_code__start_CallbackSingle_ClosureTimers) set CallbackSingle_t[this_1] = receiver_1 endfunction function dispatch_CallbackSingle_ClosureTimers_CallbackSingle_start takes integer this_1, timer whichTimer, real time returns nothing if CallbackSingle_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling CallbackSingle.start") else call error("Called CallbackSingle.start on invalid object.") endif endif call CallbackSingle_start(this_1, whichTimer, time) endfunction function timer_doAfter takes timer this_1, real timeToWait, integer cb_1 returns integer call dispatch_CallbackSingle_ClosureTimers_CallbackSingle_start(cb_1, this_1, timeToWait) return cb_1 endfunction function doAfter takes real timeToWait, integer cb_1 returns integer return timer_doAfter(getTimer(), timeToWait, cb_1) endfunction function DummyRecycler_recycle_339 takes unit u_1, real delay returns nothing local real temp = delay local integer clVar = alloc_CallbackSingle_doAfter_DummyRecycler_DummyRecycler() call construct_CallbackSingle(clVar) set u[clVar] = u_1 call doAfter(temp, clVar) endfunction function Fx_onDestroy takes integer this_1 returns nothing if Fx_fx[this_1] != null then call effect_destr(Fx_fx[this_1]) endif call DummyRecycler_recycle_339(Fx_dummy[this_1], 1.) endfunction function dealloc_Fx takes integer obj_1 returns nothing if Fx_typeId[obj_1] == 0 then call error("Double free: object of type Fx") else set Fx_nextFree[Fx_firstFree] = obj_1 set Fx_firstFree = Fx_firstFree + 1 set Fx_typeId[obj_1] = 0 endif endfunction function destroyFx takes integer this_1 returns nothing call Fx_onDestroy(this_1) call dealloc_Fx(this_1) endfunction function dispatch_Fx_destroyFx takes integer this_1 returns nothing if Fx_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Fx.Fx") else call error("Called Fx.Fx on invalid object.") endif endif call destroyFx(this_1) endfunction function Arcanery_onDestroy takes integer this_1 returns nothing call dispatch_Fx_destroyFx(Arcanery_currentEffect[this_1]) set Arcanery_currentEffect[this_1] = 0 call StaticBaseObject_onDestroy(this_1) endfunction function dealloc_Arcanery takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Arcanery") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyArcanery takes integer this_1 returns nothing call Arcanery_onDestroy(this_1) call dealloc_Arcanery(this_1) endfunction function BallProjectile_onDestroy takes integer this_1 returns nothing call AirPhysicsProjectile_onDestroy(this_1) endfunction function dealloc_BallProjectile takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type BallProjectile") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyBallProjectile takes integer this_1 returns nothing call BallProjectile_onDestroy(this_1) call dealloc_BallProjectile(this_1) endfunction function BigKiller_onDestroy takes integer this_1 returns nothing call EscaperSensorSetup_onDestroy(this_1) endfunction function dealloc_BigKiller takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type BigKiller") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyBigKiller takes integer this_1 returns nothing call BigKiller_onDestroy(this_1) call dealloc_BigKiller(this_1) endfunction function StaticSetupObject_onDestroy takes integer this_1 returns nothing call unregisterEventsForUnit(StaticSetupObject_setup[this_1]) call unit_clearRegister(StaticSetupObject_setup[this_1]) call unit_setEntity(StaticSetupObject_setup[this_1], 0) call unit_remove(StaticSetupObject_setup[this_1]) set StaticSetupObject_setup[this_1] = null if StaticSetupObject_inRangeTrig[this_1] != null then call trigger_destr(StaticSetupObject_inRangeTrig[this_1]) set StaticSetupObject_inRangeTrig[this_1] = null endif call UnitEntity_onDestroy(this_1) endfunction function StaticEscaperSensorSetup_onDestroy takes integer this_1 returns nothing call StaticSetupObject_onDestroy(this_1) endfunction function BigObstacle_onDestroy takes integer this_1 returns nothing call StaticEscaperSensorSetup_onDestroy(this_1) endfunction function dealloc_BigObstacle takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type BigObstacle") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyBigObstacle takes integer this_1 returns nothing call BigObstacle_onDestroy(this_1) call dealloc_BigObstacle(this_1) endfunction function BigRandomKiller_onDestroy takes integer this_1 returns nothing call EscaperSensorSetup_onDestroy(this_1) endfunction function dealloc_BigRandomKiller takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type BigRandomKiller") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyBigRandomKiller takes integer this_1 returns nothing call BigRandomKiller_onDestroy(this_1) call dealloc_BigRandomKiller(this_1) endfunction function LinkedList_remove takes integer this_1, integer elem returns boolean local boolean result_1 = false local integer entry = LLEntry_next[LinkedList_dummy[this_1]] loop exitwhen not (entry != LinkedList_dummy[this_1]) if LLEntry_elem[entry] == elem then call dispatch_LinkedList_LinkedList_LinkedList_removeEntry(this_1, entry) set result_1 = true exitwhen true endif set entry = LLEntry_next[entry] endloop return result_1 endfunction function dispatch_LinkedList_LinkedList_LinkedList_remove takes integer this_1, integer elem returns boolean local boolean LinkedList_LinkedList_remove_result if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.remove") else call error("Called LinkedList.remove on invalid object.") endif endif set LinkedList_LinkedList_remove_result = LinkedList_remove(this_1, elem) return LinkedList_LinkedList_remove_result endfunction function Escaper_onDestroy takes integer this_1 returns nothing call effect_destr(Escaper_lavaEffect[this_1]) call effect_destr(Escaper_poisonEffect[this_1]) call dispatch_LinkedList_LinkedList_LinkedList_remove(Escaper_escapers, this_1) call UnitEntity_onDestroy(this_1) endfunction function BlindEscaper_onDestroy takes integer this_1 returns nothing call Escaper_onDestroy(this_1) endfunction function dealloc_BlindEscaper takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type BlindEscaper") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyBlindEscaper takes integer this_1 returns nothing call BlindEscaper_onDestroy(this_1) call dealloc_BlindEscaper(this_1) endfunction function Bomber_onDestroy takes integer this_1 returns nothing call unregisterEvents(unit_getIndex(Bomber_setup[this_1])) call unit_setEntity(Bomber_setup[this_1], 0) call unit_remove(Bomber_setup[this_1]) call UnitEntity_onDestroy(this_1) endfunction function dealloc_Bomber takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Bomber") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyBomber takes integer this_1 returns nothing call Bomber_onDestroy(this_1) call dealloc_Bomber(this_1) endfunction function Bombertower_onDestroy takes integer this_1 returns nothing call unregisterEvents(unit_getIndex(Bombertower_dummy[this_1])) call unit_setEntity(Bombertower_dummy[this_1], 0) call unit_remove(Bombertower_dummy[this_1]) call StaticBaseObject_onDestroy(this_1) endfunction function dealloc_Bombertower takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Bombertower") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyBombertower takes integer this_1 returns nothing call Bombertower_onDestroy(this_1) call dealloc_Bombertower(this_1) endfunction function Boomerang_onDestroy takes integer this_1 returns nothing call Projectile_onDestroy(this_1) endfunction function dealloc_Boomerang takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Boomerang") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyBoomerang takes integer this_1 returns nothing call Boomerang_onDestroy(this_1) call dealloc_Boomerang(this_1) endfunction function ConfigValue_onDestroy takes integer this_1 returns nothing endfunction function dealloc_ConfigValue takes integer obj_1 returns nothing if ConfigValue_typeId[obj_1] == 0 then call error("Double free: object of type ConfigValue") else set ConfigValue_nextFree[ConfigValue_firstFree] = obj_1 set ConfigValue_firstFree = ConfigValue_firstFree + 1 set ConfigValue_typeId[obj_1] = 0 endif endfunction function destroyConfigValue takes integer this_1 returns nothing call ConfigValue_onDestroy(this_1) call dealloc_ConfigValue(this_1) endfunction function dispatch_ConfigValue_destroyConfigValue takes integer this_1 returns nothing if ConfigValue_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling ConfigValue.ConfigValue") else call error("Called ConfigValue.ConfigValue on invalid object.") endif endif call destroyConfigValue(this_1) endfunction function Booster_onDestroy takes integer this_1 returns nothing call dispatch_ConfigValue_destroyConfigValue(Booster_boostspeed[this_1]) call StaticBaseObject_onDestroy(this_1) endfunction function dealloc_Booster takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Booster") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyBooster takes integer this_1 returns nothing call Booster_onDestroy(this_1) call dealloc_Booster(this_1) endfunction function Boss_onDestroy takes integer this_1 returns nothing call SetupObject_onDestroy(this_1) endfunction function dealloc_Boss takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Boss") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyBoss takes integer this_1 returns nothing call Boss_onDestroy(this_1) call dealloc_Boss(this_1) endfunction function BossDamager_onDestroy takes integer this_1 returns nothing call StaticBaseObject_onDestroy(this_1) endfunction function dealloc_BossDamager takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type BossDamager") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyBossDamager takes integer this_1 returns nothing call BossDamager_onDestroy(this_1) call dealloc_BossDamager(this_1) endfunction function HomingProjectile_onDestroy takes integer this_1 returns nothing call Projectile_onDestroy(this_1) endfunction function BossMissile_onDestroy takes integer this_1 returns nothing call HomingProjectile_onDestroy(this_1) endfunction function dealloc_BossMissile takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type BossMissile") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyBossMissile takes integer this_1 returns nothing call BossMissile_onDestroy(this_1) call dealloc_BossMissile(this_1) endfunction function Builder_onDestroy takes integer this_1 returns nothing call UnitEntity_onDestroy(this_1) endfunction function dealloc_Builder takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Builder") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyBuilder takes integer this_1 returns nothing call Builder_onDestroy(this_1) call dealloc_Builder(this_1) endfunction function CongaSegment_onDestroy takes integer this_1 returns nothing if CongaSegment_next[this_1] != 0 then set CongaSegment_prev[CongaSegment_next[this_1]] = CongaSegment_prev[this_1] endif if CongaSegment_prev[this_1] != 0 then set CongaSegment_next[CongaSegment_prev[this_1]] = CongaSegment_next[this_1] endif if CongaLineHead_firstSegment[CongaSegment_head[this_1]] == this_1 then set CongaLineHead_firstSegment[CongaSegment_head[this_1]] = CongaSegment_next[this_1] endif if ( not Entity_done[CongaSegment_target[this_1]]) and UnitEntity_actor[CongaSegment_target[this_1]] != null then call unit_addAbility(SetupObject_setup[CongaSegment_target[this_1]], BuilderConstants_REMOVE_OBJECT_ID) endif endfunction function dealloc_CongaSegment takes integer obj_1 returns nothing if CongaSegment_typeId[obj_1] == 0 then call error("Double free: object of type CongaSegment") else set CongaSegment_nextFree[CongaSegment_firstFree] = obj_1 set CongaSegment_firstFree = CongaSegment_firstFree + 1 set CongaSegment_typeId[obj_1] = 0 endif endfunction function destroyCongaSegment takes integer this_1 returns nothing call CongaSegment_onDestroy(this_1) call dealloc_CongaSegment(this_1) endfunction function dispatch_CongaSegment_destroyCongaSegment takes integer this_1 returns nothing if CongaSegment_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling CongaSegment.CongaSegment") else call error("Called CongaSegment.CongaSegment on invalid object.") endif endif call destroyCongaSegment(this_1) endfunction function CongaLineHead_onDestroy takes integer this_1 returns nothing local integer l = CongaLineHead_firstSegment[this_1] local integer tmp loop exitwhen not (l != 0) set tmp = l set l = CongaSegment_next[l] call dispatch_CongaSegment_destroyCongaSegment(tmp) endloop call SetupObject_onDestroy(this_1) endfunction function dealloc_CongaLineHead takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type CongaLineHead") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyCongaLineHead takes integer this_1 returns nothing call CongaLineHead_onDestroy(this_1) call dealloc_CongaLineHead(this_1) endfunction function Decoration_onDestroy takes integer this_1 returns nothing call dispatch_ConfigValue_destroyConfigValue(Decoration_scale[this_1]) call StaticSetupObject_onDestroy(this_1) endfunction function dealloc_Decoration takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Decoration") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyDecoration takes integer this_1 returns nothing call Decoration_onDestroy(this_1) call dealloc_Decoration(this_1) endfunction function Door_onDestroy takes integer this_1 returns nothing call unit_remove(Door_pathing[this_1]) call StaticSetupObject_onDestroy(this_1) endfunction function dealloc_Door takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Door") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyDoor takes integer this_1 returns nothing call Door_onDestroy(this_1) call dealloc_Door(this_1) endfunction function dealloc_Entity takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Entity") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyEntity takes integer this_1 returns nothing call Entity_onDestroy(this_1) call dealloc_Entity(this_1) endfunction function dealloc_Escaper takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Escaper") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyEscaper takes integer this_1 returns nothing call Escaper_onDestroy(this_1) call dealloc_Escaper(this_1) endfunction function dealloc_EscaperSensorSetup takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type EscaperSensorSetup") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyEscaperSensorSetup takes integer this_1 returns nothing call EscaperSensorSetup_onDestroy(this_1) call dealloc_EscaperSensorSetup(this_1) endfunction function LLBackIterator_onDestroy takes integer this_1 returns nothing endfunction function dealloc_LLBackIterator takes integer obj_1 returns nothing if LLBackIterator_typeId[obj_1] == 0 then call error("Double free: object of type LLBackIterator") else set LLBackIterator_firstFree = LLBackIterator_firstFree + 1 set LLBackIterator_typeId[obj_1] = 0 endif endfunction function destroyLLBackIterator takes integer this_1 returns nothing call LLBackIterator_onDestroy(this_1) call dealloc_LLBackIterator(this_1) endfunction function dispatch_LLBackIterator_destroyLLBackIterator takes integer this_1 returns nothing if LLBackIterator_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LLBackIterator.LLBackIterator") else call error("Called LLBackIterator.LLBackIterator on invalid object.") endif endif call destroyLLBackIterator(this_1) endfunction function LinkedList_onDestroy takes integer this_1 returns nothing local integer current if LinkedList_staticItr[this_1] != 0 then call dispatch_LLIterator_destroyLLIterator(LinkedList_staticItr[this_1]) endif if LinkedList_staticBackItr[this_1] != 0 then call dispatch_LLBackIterator_destroyLLBackIterator(LinkedList_staticBackItr[this_1]) endif set current = LLEntry_next[LinkedList_dummy[this_1]] loop exitwhen not (current != LinkedList_dummy[this_1]) set current = LLEntry_next[current] call dispatch_LLEntry_destroyLLEntry(LLEntry_prev[current]) endloop call dispatch_LLEntry_destroyLLEntry(LinkedList_dummy[this_1]) endfunction function dealloc_LinkedList takes integer obj_1 returns nothing if LinkedList_typeId[obj_1] == 0 then call error("Double free: object of type LinkedList") else set LinkedList_nextFree[LinkedList_firstFree] = obj_1 set LinkedList_firstFree = LinkedList_firstFree + 1 set LinkedList_typeId[obj_1] = 0 endif endfunction function destroyLinkedList takes integer this_1 returns nothing call LinkedList_onDestroy(this_1) call dealloc_LinkedList(this_1) endfunction function dispatch_LinkedList_destroyLinkedList takes integer this_1 returns nothing if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.LinkedList") else call error("Called LinkedList.LinkedList on invalid object.") endif endif call destroyLinkedList(this_1) endfunction function region_destr takes region this_1 returns nothing call RemoveRegion(this_1) endfunction function regionToIndex takes region object returns integer return handle_getTCHandleId(object) endfunction function region_removeRegionData takes region this_1 returns nothing call dispatch_HashMap_HashMap_HashMap_remove(EventHelper_regionMap, regionToIndex(this_1)) endfunction function Executer_onDestroy takes integer this_1 returns nothing if Executer_eventRect[this_1] != null then call RemoveRect(Executer_eventRect[this_1]) endif if Executer_eventRegion[this_1] != null then call region_removeRegionData(Executer_eventRegion[this_1]) call region_destr(Executer_eventRegion[this_1]) endif if Executer_dummy[this_1] != null then call RemoveDestructable(Executer_dummy[this_1]) endif if Executer_entitiesOnPlate[this_1] != 0 then call dispatch_LinkedList_destroyLinkedList(Executer_entitiesOnPlate[this_1]) endif call StaticBaseObject_onDestroy(this_1) endfunction function dealloc_Executer takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Executer") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyExecuter takes integer this_1 returns nothing call Executer_onDestroy(this_1) call dealloc_Executer(this_1) endfunction function Faceless_onDestroy takes integer this_1 returns nothing call dispatch_ConfigValue_destroyConfigValue(Faceless_visibleDur[this_1]) call dispatch_ConfigValue_destroyConfigValue(Faceless_invisDur[this_1]) call EscaperSensorSetup_onDestroy(this_1) endfunction function dealloc_Faceless takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Faceless") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyFaceless takes integer this_1 returns nothing call Faceless_onDestroy(this_1) call dealloc_Faceless(this_1) endfunction function FastEscaper_onDestroy takes integer this_1 returns nothing call Escaper_onDestroy(this_1) endfunction function dealloc_FastEscaper takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type FastEscaper") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyFastEscaper takes integer this_1 returns nothing call FastEscaper_onDestroy(this_1) call dealloc_FastEscaper(this_1) endfunction function FireKiller_onDestroy takes integer this_1 returns nothing call EscaperSensorSetup_onDestroy(this_1) endfunction function dealloc_FireKiller takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type FireKiller") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyFireKiller takes integer this_1 returns nothing call FireKiller_onDestroy(this_1) call dealloc_FireKiller(this_1) endfunction function Fireball_onDestroy takes integer this_1 returns nothing call Projectile_onDestroy(this_1) endfunction function dealloc_Fireball takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Fireball") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyFireball takes integer this_1 returns nothing call Fireball_onDestroy(this_1) call dealloc_Fireball(this_1) endfunction function unit_setPos_4192 takes unit this_1, real x, real y returns nothing call SetUnitPosition(this_1, x, y) endfunction function Fx_hiddenDestroy takes integer this_1 returns nothing call unit_setPos_4192(Fx_dummy[this_1], 2147483647., 2147483647.) call dispatch_Fx_destroyFx(this_1) endfunction function dispatch_Fx_Fx_Fx_hiddenDestroy takes integer this_1 returns nothing if Fx_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Fx.hiddenDestroy") else call error("Called Fx.hiddenDestroy on invalid object.") endif endif call Fx_hiddenDestroy(this_1) endfunction function FxEntity_onDestroy takes integer this_1 returns nothing if FxEntity_silent[this_1] then call dispatch_Fx_Fx_Fx_hiddenDestroy(FxEntity_fx[this_1]) else call dispatch_Fx_destroyFx(FxEntity_fx[this_1]) endif call Entity_onDestroy(this_1) endfunction function FoodEntity_onDestroy takes integer this_1 returns nothing call FxEntity_onDestroy(this_1) endfunction function dealloc_FoodEntity takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type FoodEntity") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyFoodEntity takes integer this_1 returns nothing call FoodEntity_onDestroy(this_1) call dealloc_FoodEntity(this_1) endfunction function Fountain_onDestroy takes integer this_1 returns nothing call StaticSetupObject_onDestroy(this_1) endfunction function dealloc_Fountain takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Fountain") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyFountain takes integer this_1 returns nothing call Fountain_onDestroy(this_1) call dealloc_Fountain(this_1) endfunction function dealloc_Fx2Entity takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Fx2Entity") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyFx2Entity takes integer this_1 returns nothing call Fx2Entity_onDestroy(this_1) call dealloc_Fx2Entity(this_1) endfunction function dealloc_FxEntity takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type FxEntity") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyFxEntity takes integer this_1 returns nothing call FxEntity_onDestroy(this_1) call dealloc_FxEntity(this_1) endfunction function GlaiveKiller_onDestroy takes integer this_1 returns nothing call EscaperSensorSetup_onDestroy(this_1) endfunction function dealloc_GlaiveKiller takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type GlaiveKiller") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyGlaiveKiller takes integer this_1 returns nothing call GlaiveKiller_onDestroy(this_1) call dealloc_GlaiveKiller(this_1) endfunction function HighObstacle_onDestroy takes integer this_1 returns nothing call StaticEscaperSensorSetup_onDestroy(this_1) endfunction function dealloc_HighObstacle takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type HighObstacle") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyHighObstacle takes integer this_1 returns nothing call HighObstacle_onDestroy(this_1) call dealloc_HighObstacle(this_1) endfunction function HolyEscaper_onDestroy takes integer this_1 returns nothing call Escaper_onDestroy(this_1) endfunction function dealloc_HolyEscaper takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type HolyEscaper") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyHolyEscaper takes integer this_1 returns nothing call HolyEscaper_onDestroy(this_1) call dealloc_HolyEscaper(this_1) endfunction function dealloc_HomingProjectile takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type HomingProjectile") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyHomingProjectile takes integer this_1 returns nothing call HomingProjectile_onDestroy(this_1) call dealloc_HomingProjectile(this_1) endfunction function IceEscaper_onDestroy takes integer this_1 returns nothing call Escaper_onDestroy(this_1) endfunction function dealloc_IceEscaper takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type IceEscaper") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyIceEscaper takes integer this_1 returns nothing call IceEscaper_onDestroy(this_1) call dealloc_IceEscaper(this_1) endfunction function dealloc_ItemEntity takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type ItemEntity") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyItemEntity takes integer this_1 returns nothing call ItemEntity_onDestroy(this_1) call dealloc_ItemEntity(this_1) endfunction function Jumper_goos_get takes integer index1, integer index2 returns integer local integer returnVal if index2 < 0 or index2 >= 5 then call error("Index out of Bounds") elseif index2 <= 2 then if index2 <= 1 then if index2 <= 0 then set returnVal = Jumper_goos_0[index1] else set returnVal = Jumper_goos_1[index1] endif else set returnVal = Jumper_goos_2[index1] endif elseif index2 <= 3 then set returnVal = Jumper_goos_3[index1] else set returnVal = Jumper_goos_4[index1] endif return returnVal endfunction function int_bitAnd takes integer this_1, integer other returns integer return BlzBitAnd(this_1, other) endfunction function bitset_get takes integer this_val, integer index returns boolean return int_bitAnd(this_val, BitSet_pows[index]) != 0 endfunction function ebrtile_hasModifier takes integer this_x, integer this_y, integer this_key, integer this_currentType, integer this_lastType, integer this_modifiers_val, integer modifier returns boolean return bitset_get(this_modifiers_val, modifier) endfunction function bitset_reset takes integer this_val, integer index returns integer set bitset_reset_return_val = int_bitAnd(this_val, BitSet_reversePows[index]) return bitset_reset_return_val endfunction function ebrtile_removeModifier takes integer this_x, integer this_y, integer this_key, integer this_currentType, integer this_lastType, integer this_modifiers_val, integer modifier returns nothing local hashtable temp = TerrainData_tileMap local integer temp_1 = this_key local integer tuple_temp = bitset_reset(this_modifiers_val, modifier) local integer temp_tuple_val = tuple_temp call hashtable_saveInt(temp, temp_1, 3, temp_tuple_val) endfunction function image_remove takes image this_1 returns nothing if this_1 == null then call error("Nullpointer exeption by destroying an image") endif call DestroyImage(this_1) endfunction function hashtable_loadTile takes hashtable this_1, integer x, integer y returns integer local integer key = x * TerrainData_xCells + y set hashtable_loadTile_return_x = x set hashtable_loadTile_return_y = y set hashtable_loadTile_return_key = key set hashtable_loadTile_return_currentType = hashtable_loadInt(this_1, key, 1) set hashtable_loadTile_return_lastType = hashtable_loadInt(this_1, key, 2) set hashtable_loadTile_return_modifiers_val = hashtable_loadInt(this_1, key, 3) return hashtable_loadTile_return_x endfunction function vec2_getEBRTile takes real this_x, real this_y returns integer set vec2_getEBRTile_return_x = hashtable_loadTile(TerrainData_tileMap, real_round(this_x / 128.), real_round(this_y / 128.)) set vec2_getEBRTile_return_y = hashtable_loadTile_return_y set vec2_getEBRTile_return_key = hashtable_loadTile_return_key set vec2_getEBRTile_return_currentType = hashtable_loadTile_return_currentType set vec2_getEBRTile_return_lastType = hashtable_loadTile_return_lastType set vec2_getEBRTile_return_modifiers_val = hashtable_loadTile_return_modifiers_val return vec2_getEBRTile_return_x endfunction function Goo_onDestroy takes integer this_1 returns nothing local integer tuple_temp = vec2_getEBRTile(Goo_pos_x[this_1], Goo_pos_y[this_1]) local integer tuple_temp_1 = vec2_getEBRTile_return_y local integer tuple_temp_2 = vec2_getEBRTile_return_key local integer tuple_temp_3 = vec2_getEBRTile_return_currentType local integer tuple_temp_4 = vec2_getEBRTile_return_lastType local integer tuple_temp_5 = vec2_getEBRTile_return_modifiers_val local integer tile_x = tuple_temp local integer tile_y = tuple_temp_1 local integer tile_key = tuple_temp_2 local integer tile_currentType = tuple_temp_3 local integer tile_lastType = tuple_temp_4 local integer tile_modifiers_val = tuple_temp_5 if ebrtile_hasModifier(tile_x, tile_y, tile_key, tile_currentType, tile_lastType, tile_modifiers_val, 2) then call ebrtile_removeModifier(tile_x, tile_y, tile_key, tile_currentType, tile_lastType, tile_modifiers_val, 2) endif if ebrtile_hasModifier(tile_x, tile_y, tile_key, tile_currentType, tile_lastType, tile_modifiers_val, 3) then call ebrtile_removeModifier(tile_x, tile_y, tile_key, tile_currentType, tile_lastType, tile_modifiers_val, 3) endif call image_remove(Goo_img[this_1]) endfunction function dealloc_Goo takes integer obj_1 returns nothing if Goo_typeId[obj_1] == 0 then call error("Double free: object of type Goo") else set Goo_nextFree[Goo_firstFree] = obj_1 set Goo_firstFree = Goo_firstFree + 1 set Goo_typeId[obj_1] = 0 endif endfunction function destroyGoo takes integer this_1 returns nothing call Goo_onDestroy(this_1) call dealloc_Goo(this_1) endfunction function dispatch_Goo_destroyGoo takes integer this_1 returns nothing if Goo_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Goo.Goo") else call error("Called Goo.Goo on invalid object.") endif endif call destroyGoo(this_1) endfunction function Jumper_onDestroy takes integer this_1 returns nothing local integer i = 0 loop exitwhen i > 4 if Jumper_goos_get(this_1, i) != 0 then call dispatch_Goo_destroyGoo(Jumper_goos_get(this_1, i)) endif set i = i + 1 endloop call dispatch_ConfigValue_destroyConfigValue(Jumper_jumpForce[this_1]) call StaticBaseObject_onDestroy(this_1) endfunction function dealloc_Jumper takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Jumper") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyJumper takes integer this_1 returns nothing call Jumper_onDestroy(this_1) call dealloc_Jumper(this_1) endfunction function Knockbacker_onDestroy takes integer this_1 returns nothing call dispatch_ConfigValue_destroyConfigValue(Knockbacker_kforce[this_1]) call dispatch_ConfigValue_destroyConfigValue(Knockbacker_damage[this_1]) call EscaperSensorSetup_onDestroy(this_1) endfunction function dealloc_Knockbacker takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Knockbacker") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyKnockbacker takes integer this_1 returns nothing call Knockbacker_onDestroy(this_1) call dealloc_Knockbacker(this_1) endfunction function FText_LinkedListModule_remove takes integer this_1 returns nothing set FText_LinkedListModule_size = FText_LinkedListModule_size - 1 if this_1 != FText_LinkedListModule_first then set FText_LinkedListModule_next[FText_LinkedListModule_prev[this_1]] = FText_LinkedListModule_next[this_1] else set FText_LinkedListModule_first = FText_LinkedListModule_next[this_1] endif if this_1 != FText_LinkedListModule_last then set FText_LinkedListModule_prev[FText_LinkedListModule_next[this_1]] = FText_LinkedListModule_prev[this_1] else set FText_LinkedListModule_last = FText_LinkedListModule_prev[this_1] endif endfunction function dispatch_FText_FText_FText_LinkedListModule_remove takes integer this_1 returns nothing if FText_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling FText.remove") else call error("Called FText.remove on invalid object.") endif endif call FText_LinkedListModule_remove(this_1) endfunction function texttag_destr takes texttag this_1 returns nothing call DestroyTextTag(this_1) endfunction function FText_onDestroy takes integer this_1 returns nothing if FText_tt[this_1] != null then call texttag_destr(FText_tt[this_1]) set FText_tt[this_1] = null endif call dispatch_FText_FText_FText_LinkedListModule_remove(this_1) endfunction function dealloc_FText takes integer obj_1 returns nothing if FText_typeId[obj_1] == 0 then call error("Double free: object of type FText") else set FText_nextFree[FText_firstFree] = obj_1 set FText_firstFree = FText_firstFree + 1 set FText_typeId[obj_1] = 0 endif endfunction function destroyFText takes integer this_1 returns nothing call FText_onDestroy(this_1) call dealloc_FText(this_1) endfunction function dispatch_FText_destroyFText takes integer this_1 returns nothing if FText_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling FText.FText") else call error("Called FText.FText on invalid object.") endif endif call destroyFText(this_1) endfunction function texttag_setColor_4077 takes texttag this_1, integer col_red, integer col_green, integer col_blue, integer col_alpha returns nothing call SetTextTagColor(this_1, col_red, col_green, col_blue, col_alpha) endfunction function texttag_setVisibility takes texttag this_1, boolean flag returns nothing call SetTextTagVisibility(this_1, flag) endfunction function FText_recycle takes integer this_1 returns nothing local texttag receiver local texttag receiver_1 local texttag receiver_2 set FText_cb[this_1] = 0 set FText_timestamp[this_1] = 0. if FText_permanent[this_1] then call dispatch_FText_destroyFText(this_1) else set receiver = FText_tt[this_1] call texttag_setVisibility(receiver, false) set receiver_1 = receiver call texttag_setColor_4077(receiver_1, Colors_COLOR_BLACK_red, Colors_COLOR_BLACK_green, Colors_COLOR_BLACK_blue, Colors_COLOR_BLACK_alpha) set receiver_2 = receiver_1 call texttag_setText(receiver_2, "", 0.) call dispatch_LinkedList_LinkedList_LinkedList_add_1(FText_recylcer, this_1) endif endfunction function dispatch_FText_FText_FText_recycle takes integer this_1 returns nothing if FText_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling FText.recycle") else call error("Called FText.recycle on invalid object.") endif endif call FText_recycle(this_1) endfunction function LobbyTeleporter_onDestroy takes integer this_1 returns nothing if LobbyTeleporter_ftext[this_1] != 0 then call dispatch_FText_FText_FText_recycle(LobbyTeleporter_ftext[this_1]) endif call StaticBaseObject_onDestroy(this_1) endfunction function dealloc_LobbyTeleporter takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type LobbyTeleporter") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyLobbyTeleporter takes integer this_1 returns nothing call LobbyTeleporter_onDestroy(this_1) call dealloc_LobbyTeleporter(this_1) endfunction function hashtable_flushChild takes hashtable this_1, integer parentKey returns nothing call FlushChildHashtable(this_1, parentKey) endfunction function HashList_clear takes integer this_1 returns nothing call hashtable_flushChild(HashList_ht, this_1) call hashtable_flushChild(HashList_occurences, this_1) set HashList_size[this_1] = 0 endfunction function HashSet_clear takes integer this_1 returns nothing call HashList_clear(this_1) call hashtable_flushChild(HashSet_position, this_1) endfunction function dispatch_HashList_HashList_HashList_clear takes integer this_1 returns nothing if HashList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashList.clear") else call error("Called HashList.clear on invalid object.") endif endif if HashList_typeId[this_1] <= 894 then call HashList_clear(this_1) else call HashSet_clear(this_1) endif endfunction function HashList_onDestroy takes integer this_1 returns nothing call dispatch_HashList_HashList_HashList_clear(this_1) endfunction function dealloc_HashList takes integer obj_1 returns nothing if HashList_typeId[obj_1] == 0 then call error("Double free: object of type HashList") else set HashList_nextFree[HashList_firstFree] = obj_1 set HashList_firstFree = HashList_firstFree + 1 set HashList_typeId[obj_1] = 0 endif endfunction function destroyHashList takes integer this_1 returns nothing call HashList_onDestroy(this_1) call dealloc_HashList(this_1) endfunction function HashSet_onDestroy takes integer this_1 returns nothing call hashtable_flushChild(HashSet_position, this_1) call HashList_onDestroy(this_1) endfunction function dealloc_HashSet takes integer obj_1 returns nothing if HashList_typeId[obj_1] == 0 then call error("Double free: object of type HashSet") else set HashList_nextFree[HashList_firstFree] = obj_1 set HashList_firstFree = HashList_firstFree + 1 set HashList_typeId[obj_1] = 0 endif endfunction function destroyHashSet takes integer this_1 returns nothing call HashSet_onDestroy(this_1) call dealloc_HashSet(this_1) endfunction function dispatch_HashList_destroyHashList takes integer this_1 returns nothing if HashList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashList.HashList") else call error("Called HashList.HashList on invalid object.") endif endif if HashList_typeId[this_1] <= 894 then call destroyHashList(this_1) else call destroyHashSet(this_1) endif endfunction function Table_flush takes integer this_1 returns nothing call hashtable_flushChild(Table_ht, this_1) endfunction function HashMap_flush takes integer this_1 returns nothing set HashMap_size[this_1] = 0 call Table_flush(this_1) endfunction function IterableMap_flush takes integer this_1 returns nothing if not IterableMap__destroyed[this_1] then call dispatch_HashList_HashList_HashList_clear(IterableMap_keys[this_1]) endif call HashMap_flush(this_1) endfunction function dispatch_Table_Table_Table_flush takes integer this_1 returns nothing if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Table.flush") else call error("Called Table.flush on invalid object.") endif endif if Table_typeId[this_1] <= 1493 then if Table_typeId[this_1] <= 1492 then call Table_flush(this_1) else call HashMap_flush(this_1) endif else call IterableMap_flush(this_1) endif endfunction function Table_onDestroy takes integer this_1 returns nothing call dispatch_Table_Table_Table_flush(this_1) endfunction function HashMap_onDestroy takes integer this_1 returns nothing call Table_onDestroy(this_1) endfunction function dealloc_HashMap takes integer obj_1 returns nothing if Table_typeId[obj_1] == 0 then call error("Double free: object of type HashMap") else set Table_nextFree[Table_firstFree] = obj_1 set Table_firstFree = Table_firstFree + 1 set Table_typeId[obj_1] = 0 endif endfunction function destroyHashMap takes integer this_1 returns nothing call HashMap_onDestroy(this_1) call dealloc_HashMap(this_1) endfunction function IterableMap_onDestroy takes integer this_1 returns nothing call dispatch_HashList_destroyHashList(IterableMap_keys[this_1]) set IterableMap__destroyed[this_1] = true call HashMap_onDestroy(this_1) endfunction function dealloc_IterableMap takes integer obj_1 returns nothing if Table_typeId[obj_1] == 0 then call error("Double free: object of type IterableMap") else set Table_nextFree[Table_firstFree] = obj_1 set Table_firstFree = Table_firstFree + 1 set Table_typeId[obj_1] = 0 endif endfunction function destroyIterableMap takes integer this_1 returns nothing call IterableMap_onDestroy(this_1) call dealloc_IterableMap(this_1) endfunction function dispatch_HashMap_destroyHashMap takes integer this_1 returns nothing if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashMap.HashMap") else call error("Called HashMap.HashMap on invalid object.") endif endif if Table_typeId[this_1] <= 1493 then call destroyHashMap(this_1) else call destroyIterableMap(this_1) endif endfunction function BigString_onDestroy takes integer this_1 returns nothing set BigString_length[this_1] = -1 endfunction function dealloc_BigString takes integer obj_1 returns nothing if BigString_typeId[obj_1] == 0 then call error("Double free: object of type BigString") else set BigString_nextFree[BigString_firstFree] = obj_1 set BigString_firstFree = BigString_firstFree + 1 set BigString_typeId[obj_1] = 0 endif endfunction function destroyBigString takes integer this_1 returns nothing call BigString_onDestroy(this_1) call dealloc_BigString(this_1) endfunction function dispatch_BigString_destroyBigString takes integer this_1 returns nothing if BigString_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BigString.BigString") else call error("Called BigString.BigString on invalid object.") endif endif call destroyBigString(this_1) endfunction function BigSubString_onDestroy takes integer this_1 returns nothing set BigSubString_length[this_1] = -1 endfunction function dealloc_BigSubString takes integer obj_1 returns nothing if BigSubString_typeId[obj_1] == 0 then call error("Double free: object of type BigSubString") else set BigSubString_nextFree[BigSubString_firstFree] = obj_1 set BigSubString_firstFree = BigSubString_firstFree + 1 set BigSubString_typeId[obj_1] = 0 endif endfunction function destroyBigSubString takes integer this_1 returns nothing call BigSubString_onDestroy(this_1) call dealloc_BigSubString(this_1) endfunction function dispatch_BigSubString_destroyBigSubString takes integer this_1 returns nothing if BigSubString_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BigSubString.BigSubString") else call error("Called BigSubString.BigSubString on invalid object.") endif endif call destroyBigSubString(this_1) endfunction function construct_LLIterator2 takes integer this_1, integer parent, boolean destroyOnClose returns nothing call LLIterator_init(this_1) set LLIterator_parent[this_1] = parent call dispatch_LLIterator_LinkedList_LLIterator_reset(this_1) set LLIterator_destroyOnClose[this_1] = destroyOnClose endfunction function new_LLIterator_3707 takes integer parent, boolean destroyOnClose returns integer local integer this_1 = alloc_LLIterator() call construct_LLIterator2(this_1, parent, destroyOnClose) return this_1 endfunction function LinkedList_staticItr_1 takes integer this_1 returns integer if LinkedList_staticItr[this_1] == 0 then set LinkedList_staticItr[this_1] = new_LLIterator_3707(this_1, false) endif call dispatch_LLIterator_LinkedList_LLIterator_reset(LinkedList_staticItr[this_1]) return LinkedList_staticItr[this_1] endfunction function dispatch_LinkedList_LinkedList_LinkedList_staticItr takes integer this_1 returns integer local integer LinkedList_LinkedList_staticItr_result if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.staticItr") else call error("Called LinkedList.staticItr on invalid object.") endif endif set LinkedList_LinkedList_staticItr_result = LinkedList_staticItr_1(this_1) return LinkedList_LinkedList_staticItr_result endfunction function Property_onDestroy takes integer this_1 returns nothing if BigSubString_length[Property_name[this_1]] >= 0 then call dispatch_BigSubString_destroyBigSubString(Property_name[this_1]) set Property_name[this_1] = 0 endif if BigSubString_length[Property_value[this_1]] >= 0 then call dispatch_BigSubString_destroyBigSubString(Property_value[this_1]) set Property_value[this_1] = 0 endif endfunction function dealloc_Property takes integer obj_1 returns nothing if Property_typeId[obj_1] == 0 then call error("Double free: object of type Property") else set Property_nextFree[Property_firstFree] = obj_1 set Property_firstFree = Property_firstFree + 1 set Property_typeId[obj_1] = 0 endif endfunction function destroyProperty takes integer this_1 returns nothing call Property_onDestroy(this_1) call dealloc_Property(this_1) endfunction function dispatch_Property_destroyProperty takes integer this_1 returns nothing if Property_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Property.Property") else call error("Called Property.Property on invalid object.") endif endif call destroyProperty(this_1) endfunction function Json_onDestroy takes integer this_1 returns nothing local integer p local integer from call dispatch_HashMap_destroyHashMap(Json_properties[this_1]) set from = dispatch_LinkedList_LinkedList_LinkedList_staticItr(Json_plist[this_1]) loop exitwhen not LLIterator_hasNext(from) set p = LLIterator_next(from) call dispatch_Property_destroyProperty(p) endloop call dispatch_LinkedList_destroyLinkedList(Json_plist[this_1]) endfunction function dealloc_Json takes integer obj_1 returns nothing if Json_typeId[obj_1] == 0 then call error("Double free: object of type Json") else set Json_nextFree[Json_firstFree] = obj_1 set Json_firstFree = Json_firstFree + 1 set Json_typeId[obj_1] = 0 endif endfunction function destroyJson takes integer this_1 returns nothing call Json_onDestroy(this_1) call dealloc_Json(this_1) endfunction function dispatch_Json_destroyJson takes integer this_1 returns nothing if Json_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Json.Json") else call error("Called Json.Json on invalid object.") endif endif call destroyJson(this_1) endfunction function JsonParser_onDestroy takes integer this_1 returns nothing local integer bss local integer from if JsonParser_bigInput[this_1] != 0 then call dispatch_BigString_destroyBigString(JsonParser_bigInput[this_1]) endif if JsonParser_output[this_1] != 0 then call dispatch_Json_destroyJson(JsonParser_output[this_1]) endif if JsonParser_outputList[this_1] != 0 then set from = dispatch_LinkedList_LinkedList_LinkedList_staticItr(JsonParser_outputList[this_1]) loop exitwhen not LLIterator_hasNext(from) set bss = LLIterator_next(from) call dispatch_BigSubString_destroyBigSubString(bss) endloop call dispatch_LinkedList_destroyLinkedList(JsonParser_outputList[this_1]) endif endfunction function dealloc_JsonParser takes integer obj_1 returns nothing if JsonParser_typeId[obj_1] == 0 then call error("Double free: object of type JsonParser") else set JsonParser_nextFree[JsonParser_firstFree] = obj_1 set JsonParser_firstFree = JsonParser_firstFree + 1 set JsonParser_typeId[obj_1] = 0 endif endfunction function destroyJsonParser takes integer this_1 returns nothing call JsonParser_onDestroy(this_1) call dealloc_JsonParser(this_1) endfunction function dispatch_JsonParser_destroyJsonParser takes integer this_1 returns nothing if JsonParser_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling JsonParser.JsonParser") else call error("Called JsonParser.JsonParser on invalid object.") endif endif call destroyJsonParser(this_1) endfunction function TileData_onDestroy takes integer this_1 returns nothing if TileData_fx[this_1] != null then call effect_destr(TileData_fx[this_1]) endif endfunction function dealloc_TileData takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type TileData") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyTileData takes integer this_1 returns nothing call TileData_onDestroy(this_1) call dealloc_TileData(this_1) endfunction function dispatch_TileData_destroyTileData takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling TileData.TileData") else call error("Called TileData.TileData on invalid object.") endif endif call destroyTileData(this_1) endfunction function MemoryAccessPedestal_onDestroy takes integer this_1 returns nothing local integer from = dispatch_LinkedList_LinkedList_LinkedList_staticItr(MemoryAccessPedestal_tiles[this_1]) local integer t loop exitwhen not LLIterator_hasNext(from) set t = LLIterator_next(from) call dispatch_TileData_destroyTileData(t) endloop call dispatch_HashMap_destroyHashMap(MemoryAccessPedestal_effects[this_1]) call dispatch_HashList_destroyHashList(MemoryAccessPedestal_entities[this_1]) call dispatch_LinkedList_destroyLinkedList(MemoryAccessPedestal_tiles[this_1]) call dispatch_FText_FText_FText_recycle(MemoryAccessPedestal_ttag[this_1]) call dispatch_JsonParser_destroyJsonParser(MemoryAccessPedestal_parser[this_1]) call dispatch_JsonParser_destroyJsonParser(MemoryAccessPedestal_listparser[this_1]) call StaticBaseObject_onDestroy(this_1) endfunction function dealloc_MemoryAccessPedestal takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type MemoryAccessPedestal") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyMemoryAccessPedestal takes integer this_1 returns nothing call MemoryAccessPedestal_onDestroy(this_1) call dealloc_MemoryAccessPedestal(this_1) endfunction function MinigameTeleporter_onDestroy takes integer this_1 returns nothing call StaticBaseObject_onDestroy(this_1) endfunction function dealloc_MinigameTeleporter takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type MinigameTeleporter") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyMinigameTeleporter takes integer this_1 returns nothing call MinigameTeleporter_onDestroy(this_1) call dealloc_MinigameTeleporter(this_1) endfunction function CustomBar_unlock takes integer this_1 returns nothing if not CustomBar_locked[this_1] then return endif set CustomBar_count = CustomBar_count - 1 if CustomBar_count == 0 then call PauseTimer(CustomBar_animationTimer) endif set CustomBar_bars[CustomBar_lockindex[this_1]] = CustomBar_bars[CustomBar_count] set CustomBar_lockindex[CustomBar_bars[CustomBar_count]] = CustomBar_lockindex[this_1] set CustomBar_locked[this_1] = false endfunction function dispatch_CustomBar_CustomBar_CustomBar_unlock takes integer this_1 returns nothing if CustomBar_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling CustomBar.unlock") else call error("Called CustomBar.unlock on invalid object.") endif endif call CustomBar_unlock(this_1) endfunction function CustomBar_onDestroy takes integer this_1 returns nothing if CustomBar_t[this_1] != null then call DestroyTextTag(CustomBar_t[this_1]) endif if CustomBar_locked[this_1] then call dispatch_CustomBar_CustomBar_CustomBar_unlock(this_1) endif endfunction function dealloc_CustomBar takes integer obj_1 returns nothing if CustomBar_typeId[obj_1] == 0 then call error("Double free: object of type CustomBar") else set CustomBar_nextFree[CustomBar_firstFree] = obj_1 set CustomBar_firstFree = CustomBar_firstFree + 1 set CustomBar_typeId[obj_1] = 0 endif endfunction function destroyCustomBar takes integer this_1 returns nothing call CustomBar_onDestroy(this_1) call dealloc_CustomBar(this_1) endfunction function dispatch_CustomBar_destroyCustomBar takes integer this_1 returns nothing if CustomBar_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling CustomBar.CustomBar") else call error("Called CustomBar.CustomBar on invalid object.") endif endif call destroyCustomBar(this_1) endfunction function Minion_onDestroy takes integer this_1 returns nothing call dispatch_CustomBar_destroyCustomBar(Minion_hpBar[this_1]) call EscaperSensorSetup_onDestroy(this_1) endfunction function dealloc_Minion takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Minion") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyMinion takes integer this_1 returns nothing call Minion_onDestroy(this_1) call dealloc_Minion(this_1) endfunction function ObjectTarget_onDestroy takes integer this_1 returns nothing call SetupObject_onDestroy(this_1) endfunction function dealloc_ObjectTarget takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type ObjectTarget") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyObjectTarget takes integer this_1 returns nothing call ObjectTarget_onDestroy(this_1) call dealloc_ObjectTarget(this_1) endfunction function OrbProjectile_onDestroy takes integer this_1 returns nothing local unit receiver local unit receiver_1 set Escaper_orb[OrbProjectile_e[this_1]] = 0 set receiver = UnitEntity_actor[OrbProjectile_e[this_1]] call unit_removeAbility(receiver, Escaper_JAUNT_SPELL) set receiver_1 = receiver call unit_addAbility(receiver_1, RegionData_specialAbil[Entity_getCurrentRegion(OrbProjectile_e[this_1])]) call Projectile_onDestroy(this_1) endfunction function dealloc_OrbProjectile takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type OrbProjectile") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyOrbProjectile takes integer this_1 returns nothing call OrbProjectile_onDestroy(this_1) call dealloc_OrbProjectile(this_1) endfunction function Pointer_onDestroy takes integer this_1 returns nothing call EscaperSensorSetup_onDestroy(this_1) endfunction function dealloc_Pointer takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Pointer") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyPointer takes integer this_1 returns nothing call Pointer_onDestroy(this_1) call dealloc_Pointer(this_1) endfunction function Portal_onDestroy takes integer this_1 returns nothing set FastEscaper_portal[Portal_es[this_1]] = 0 if Portal_targetFx[this_1] != 0 then call dispatch_Fx_Fx_Fx_hiddenDestroy(Portal_targetFx[this_1]) set Portal_targetFx[this_1] = 0 endif if Portal_Sensor_inRangeTrig[this_1] != null then call dispatch_SensorListener_destroySensorListener(dispatch_HashMap_HashMap_HashMap_get(Portal_Sensor_sensorListeners, triggerToIndex(Portal_Sensor_inRangeTrig[this_1]))) call dispatch_HashMap_HashMap_HashMap_remove(Portal_Sensor_sensorListeners, triggerToIndex(Portal_Sensor_inRangeTrig[this_1])) call unit_clearRegister(Portal_Sensor_actorRef[this_1]) set Portal_Sensor_inRangeTrig[this_1] = null endif call FxEntity_onDestroy(this_1) endfunction function dealloc_Portal takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Portal") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyPortal takes integer this_1 returns nothing call Portal_onDestroy(this_1) call dealloc_Portal(this_1) endfunction function Link_onDestroy takes integer this_1 returns nothing if Link_prev[this_1] != 0 then set Link_next[Link_prev[this_1]] = Link_next[this_1] endif if Link_next[this_1] != 0 then set Link_prev[Link_next[this_1]] = Link_prev[this_1] endif if Powernode_firstLink[Link_parent[this_1]] == this_1 then set Powernode_firstLink[Link_parent[this_1]] = Link_next[this_1] endif call DestroyLightning(Link_sfx[this_1]) endfunction function dealloc_Link takes integer obj_1 returns nothing if Link_typeId[obj_1] == 0 then call error("Double free: object of type Link") else set Link_nextFree[Link_firstFree] = obj_1 set Link_firstFree = Link_firstFree + 1 set Link_typeId[obj_1] = 0 endif endfunction function destroyLink takes integer this_1 returns nothing call Link_onDestroy(this_1) call dealloc_Link(this_1) endfunction function dispatch_Link_destroyLink takes integer this_1 returns nothing if Link_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Link.Link") else call error("Called Link.Link on invalid object.") endif endif call destroyLink(this_1) endfunction function Powernode_onDestroy takes integer this_1 returns nothing local integer l = Powernode_firstLink[this_1] local integer tmp loop exitwhen not (l != 0) set tmp = l set l = Link_next[l] call dispatch_Link_destroyLink(tmp) endloop call dispatch_ConfigValue_destroyConfigValue(Powernode_bounciness[this_1]) call SetupObject_onDestroy(this_1) endfunction function dealloc_Powernode takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Powernode") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyPowernode takes integer this_1 returns nothing call Powernode_onDestroy(this_1) call dealloc_Powernode(this_1) endfunction function dealloc_Projectile takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Projectile") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyProjectile takes integer this_1 returns nothing call Projectile_onDestroy(this_1) call dealloc_Projectile(this_1) endfunction function vec3_getEBRTile takes real this_x, real this_y, real this_z returns integer set vec3_getEBRTile_return_x = vec2_getEBRTile(vec3_toVec2(this_x, this_y, this_z), vec3_toVec2_return_y) set vec3_getEBRTile_return_y = vec2_getEBRTile_return_y set vec3_getEBRTile_return_key = vec2_getEBRTile_return_key set vec3_getEBRTile_return_currentType = vec2_getEBRTile_return_currentType set vec3_getEBRTile_return_lastType = vec2_getEBRTile_return_lastType set vec3_getEBRTile_return_modifiers_val = vec2_getEBRTile_return_modifiers_val return vec3_getEBRTile_return_x endfunction function RevivePoint_onDestroy takes integer this_1 returns nothing call ebrtile_removeModifier(vec3_getEBRTile(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_getEBRTile_return_y, vec3_getEBRTile_return_key, vec3_getEBRTile_return_currentType, vec3_getEBRTile_return_lastType, vec3_getEBRTile_return_modifiers_val, 4) call StaticSetupObject_onDestroy(this_1) endfunction function dealloc_RevivePoint takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type RevivePoint") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyRevivePoint takes integer this_1 returns nothing call RevivePoint_onDestroy(this_1) call dealloc_RevivePoint(this_1) endfunction function Selector_onDestroy takes integer this_1 returns nothing set PlayerData_selector[Selector_pd[this_1]] = 0 call UnitEntity_onDestroy(this_1) endfunction function dealloc_Selector takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Selector") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroySelector takes integer this_1 returns nothing call Selector_onDestroy(this_1) call dealloc_Selector(this_1) endfunction function SetupBox_onDestroy takes integer this_1 returns nothing call UnitEntity_onDestroy(this_1) endfunction function dealloc_SetupBox takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type SetupBox") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroySetupBox takes integer this_1 returns nothing call SetupBox_onDestroy(this_1) call dealloc_SetupBox(this_1) endfunction function dealloc_SetupObject takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type SetupObject") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroySetupObject takes integer this_1 returns nothing call SetupObject_onDestroy(this_1) call dealloc_SetupObject(this_1) endfunction function ShipProjectile_onDestroy takes integer this_1 returns nothing call dispatch_LinkedList_LinkedList_LinkedList_remove(Spaceship_projectiles[ShipProjectile_ship[this_1]], this_1) call Projectile_onDestroy(this_1) endfunction function dealloc_ShipProjectile takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type ShipProjectile") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyShipProjectile takes integer this_1 returns nothing call ShipProjectile_onDestroy(this_1) call dealloc_ShipProjectile(this_1) endfunction function SmallKiller_onDestroy takes integer this_1 returns nothing call EscaperSensorSetup_onDestroy(this_1) endfunction function dealloc_SmallKiller takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type SmallKiller") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroySmallKiller takes integer this_1 returns nothing call SmallKiller_onDestroy(this_1) call dealloc_SmallKiller(this_1) endfunction function SmallObstacle_onDestroy takes integer this_1 returns nothing call StaticEscaperSensorSetup_onDestroy(this_1) endfunction function dealloc_SmallObstacle takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type SmallObstacle") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroySmallObstacle takes integer this_1 returns nothing call SmallObstacle_onDestroy(this_1) call dealloc_SmallObstacle(this_1) endfunction function SmallRandomKiller_onDestroy takes integer this_1 returns nothing call EscaperSensorSetup_onDestroy(this_1) endfunction function dealloc_SmallRandomKiller takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type SmallRandomKiller") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroySmallRandomKiller takes integer this_1 returns nothing call SmallRandomKiller_onDestroy(this_1) call dealloc_SmallRandomKiller(this_1) endfunction function alloc_SpaceRock takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1147 else call error("Out of memory: Could not create SpaceRock.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1147 endif return this_1 endfunction function SpaceRock_init takes integer this_1 returns nothing endfunction function Fx2Entity_init takes integer this_1 returns nothing set Fx2Entity_silent[this_1] = false endfunction function Entity_DupletListModule_addToActive takes integer this_1 returns nothing set Entity_DupletListModule_activeSize = Entity_DupletListModule_activeSize + 1 if Entity_DupletListModule_activeSize == 1 then set Entity_DupletListModule_firstActive = this_1 set Entity_DupletListModule_prev[this_1] = 0 else set Entity_DupletListModule_prev[this_1] = Entity_DupletListModule_lastActive set Entity_DupletListModule_next[Entity_DupletListModule_lastActive] = this_1 set Entity_DupletListModule_prev[Entity_DupletListModule_firstActive] = this_1 endif set Entity_DupletListModule_next[this_1] = 0 set Entity_DupletListModule_lastActive = this_1 endfunction function dispatch_Entity_Entity_Entity_DupletListModule_addToActive takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Entity.addToActive") else call error("Called Entity.addToActive on invalid object.") endif endif call Entity_DupletListModule_addToActive(this_1) endfunction function construct_Entity_DupletListModule takes integer this_1 returns nothing call dispatch_Entity_Entity_Entity_DupletListModule_addToActive(this_1) endfunction function Entity_init takes integer this_1 returns nothing set Entity_DupletListModule_active[this_1] = true set Entity_gravity[this_1] = PhysicsConstants_defaultGravity set Entity_speedFactor[this_1] = 1. set Entity_flying[this_1] = false set Entity_done[this_1] = false set Entity_sleeps[this_1] = true set Entity_idleSeconds[this_1] = 0 call construct_Entity_DupletListModule(this_1) endfunction function Entity_setFlying takes integer this_1, boolean flag returns nothing set Entity_flying[this_1] = flag endfunction function Entity_DupletListModule_activate takes integer this_1 returns nothing if not Entity_DupletListModule_active[this_1] then set Entity_DupletListModule_active[this_1] = true call dispatch_Entity_Entity_Entity_DupletListModule_removeFromInactive(this_1) call dispatch_Entity_Entity_Entity_DupletListModule_addToActive(this_1) endif endfunction function alloc_Iterator_1819 takes nothing returns integer local integer this_1 if Iterator_firstFree_1036 == 0 then if Iterator_maxIndex_1040 < JASS_MAX_ARRAY_SIZE then set Iterator_maxIndex_1040 = Iterator_maxIndex_1040 + 1 set this_1 = Iterator_maxIndex_1040 set Iterator_typeId_1048[this_1] = 980 else call error("Out of memory: Could not create Iterator.") set this_1 = 0 endif else set Iterator_firstFree_1036 = Iterator_firstFree_1036 - 1 set this_1 = Iterator_nextFree_1044[Iterator_firstFree_1036] set Iterator_typeId_1048[this_1] = 980 endif return this_1 endfunction function Iterator_init_802 takes integer this_1 returns nothing set Iterator_current_1032[this_1] = FText_LinkedListModule_first endfunction function construct_Iterator_2225 takes integer this_1, boolean destroyOnClose returns nothing call Iterator_init_802(this_1) set Iterator_destroyOnClose[this_1] = destroyOnClose endfunction function new_Iterator_3694 takes boolean destroyOnClose returns integer local integer this_1 = alloc_Iterator_1819() call construct_Iterator_2225(this_1, destroyOnClose) return this_1 endfunction function FText_LinkedListModule_iterator takes nothing returns integer return new_Iterator_3694(true) endfunction function Iterator_onDestroy takes integer this_1 returns nothing endfunction function dealloc_Iterator takes integer obj_1 returns nothing if Iterator_typeId_1048[obj_1] == 0 then call error("Double free: object of type Iterator") else set Iterator_nextFree_1044[Iterator_firstFree_1036] = obj_1 set Iterator_firstFree_1036 = Iterator_firstFree_1036 + 1 set Iterator_typeId_1048[obj_1] = 0 endif endfunction function destroyIterator takes integer this_1 returns nothing call Iterator_onDestroy(this_1) call dealloc_Iterator(this_1) endfunction function dispatch_Iterator_destroyIterator takes integer this_1 returns nothing if Iterator_typeId_1048[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Iterator.Iterator") else call error("Called Iterator.Iterator on invalid object.") endif endif call destroyIterator(this_1) endfunction function Iterator_close takes integer this_1 returns nothing if Iterator_destroyOnClose[this_1] then call dispatch_Iterator_destroyIterator(this_1) endif endfunction function Iterator_hasNext_799 takes integer this_1 returns boolean return Iterator_current_1032[this_1] != 0 endfunction function Iterator_next_806 takes integer this_1 returns integer local integer res = Iterator_current_1032[this_1] set Iterator_current_1032[this_1] = FText_LinkedListModule_next[Iterator_current_1032[this_1]] return res endfunction function alloc_CallbackSingle_doAfter_FText_FText takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 683 else call error("Out of memory: Could not create CallbackSingle_doAfter_FText_FText.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 683 endif return this_1 endfunction function CallbackSingle_onDestroy takes integer this_1 returns nothing call timer_release(CallbackSingle_t[this_1]) endfunction function dealloc_CallbackSingle takes integer obj_1 returns nothing if CallbackSingle_typeId[obj_1] == 0 then call error("Double free: object of type CallbackSingle") else set CallbackSingle_nextFree[CallbackSingle_firstFree] = obj_1 set CallbackSingle_firstFree = CallbackSingle_firstFree + 1 set CallbackSingle_typeId[obj_1] = 0 endif endfunction function destroyCallbackSingle takes integer this_1 returns nothing call CallbackSingle_onDestroy(this_1) call dealloc_CallbackSingle(this_1) endfunction function dispatch_CallbackSingle_destroyCallbackSingle takes integer this_1 returns nothing if CallbackSingle_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling CallbackSingle.CallbackSingle") else call error("Called CallbackSingle.CallbackSingle on invalid object.") endif endif call destroyCallbackSingle(this_1) endfunction function timer_getElapsed takes timer this_1 returns real return TimerGetElapsed(this_1) endfunction function getElapsedGameTime takes nothing returns real return timer_getElapsed(GameTimer_gameTimer) endfunction function texttag_setLifespan takes texttag this_1, real span returns nothing call SetTextTagLifespan(this_1, span) endfunction function texttag_setVelocity takes texttag this_1, real xvel, real yvel returns nothing call SetTextTagVelocity(this_1, xvel, yvel) endfunction function FText_setDynamic takes integer this_1, real vel_x, real vel_y, real lifespan returns nothing local texttag receiver = FText_tt[this_1] local texttag receiver_1 local integer clVar local real temp call texttag_setVelocity(receiver, vel_x, vel_y) set receiver_1 = receiver call texttag_setLifespan(receiver_1, lifespan) set FText_timestamp[this_1] = getElapsedGameTime() if FText_cb[this_1] != 0 then call dispatch_CallbackSingle_destroyCallbackSingle(FText_cb[this_1]) endif set temp = lifespan - 0.025 set clVar = alloc_CallbackSingle_doAfter_FText_FText() call construct_CallbackSingle(clVar) set this_2901[clVar] = this_1 set FText_cb[this_1] = doAfter(temp, clVar) endfunction function dispatch_FText_FText_FText_setDynamic takes integer this_1, real vel_x, real vel_y, real lifespan returns nothing if FText_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling FText.setDynamic") else call error("Called FText.setDynamic on invalid object.") endif endif call FText_setDynamic(this_1, vel_x, vel_y, lifespan) endfunction function FText_setPermanent takes integer this_1 returns nothing set FText_permanent[this_1] = true if FText_cb[this_1] != 0 then call dispatch_CallbackSingle_destroyCallbackSingle(FText_cb[this_1]) set FText_cb[this_1] = 0 endif endfunction function dispatch_FText_FText_FText_setPermanent takes integer this_1 returns nothing if FText_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling FText.setPermanent") else call error("Called FText.setPermanent on invalid object.") endif endif call FText_setPermanent(this_1) endfunction function texttag_setAge takes texttag this_1, real age returns nothing call SetTextTagAge(this_1, age) endfunction function texttag_setFadepoint takes texttag this_1, real fadepoint returns nothing call SetTextTagFadepoint(this_1, fadepoint) endfunction function FText_setup takes integer this_1, string text, real pos_x_1, real pos_y_1, real pos_z, real size returns nothing local texttag receiver = FText_tt[this_1] local texttag receiver_1 local texttag receiver_2 local texttag receiver_3 local texttag receiver_4 local texttag receiver_5 local texttag receiver_6 call texttag_setText(receiver, text, size) set receiver_1 = receiver call texttag_setPos(receiver_1, pos_x_1, pos_y_1, pos_z) set receiver_2 = receiver_1 call texttag_setAge(receiver_2, 0.) set receiver_3 = receiver_2 call texttag_setVisibility(receiver_3, true) set receiver_4 = receiver_3 call texttag_setVelocity(receiver_4, Vectors_ZERO2_x, Vectors_ZERO2_y) set receiver_5 = receiver_4 call texttag_setFadepoint(receiver_5, .45) set receiver_6 = receiver_5 call texttag_setLifespan(receiver_6, Real_REAL_MAX) endfunction function dispatch_FText_FText_FText_setup takes integer this_1, string text, real pos_x_1, real pos_y_1, real pos_z, real size returns nothing if FText_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling FText.setup") else call error("Called FText.setup on invalid object.") endif endif call FText_setup(this_1, text, pos_x_1, pos_y_1, pos_z, size) endfunction function LinkedList_dequeue takes integer this_1 returns integer local integer top = LLEntry_next[LinkedList_dummy[this_1]] local integer result_1 = 0 if top != LinkedList_dummy[this_1] then set result_1 = LLEntry_elem[top] call dispatch_LinkedList_LinkedList_LinkedList_removeEntry(this_1, top) endif return result_1 endfunction function dispatch_LinkedList_LinkedList_LinkedList_dequeue takes integer this_1 returns integer local integer LinkedList_LinkedList_dequeue_result if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.dequeue") else call error("Called LinkedList.dequeue on invalid object.") endif endif set LinkedList_LinkedList_dequeue_result = LinkedList_dequeue(this_1) return LinkedList_LinkedList_dequeue_result endfunction function alloc_FText takes nothing returns integer local integer this_1 if FText_firstFree == 0 then if FText_maxIndex < JASS_MAX_ARRAY_SIZE then set FText_maxIndex = FText_maxIndex + 1 set this_1 = FText_maxIndex set FText_typeId[this_1] = 832 else call error("Out of memory: Could not create FText.") set this_1 = 0 endif else set FText_firstFree = FText_firstFree - 1 set this_1 = FText_nextFree[FText_firstFree] set FText_typeId[this_1] = 832 endif return this_1 endfunction function construct_FText_LinkedListModule takes integer this_1 returns nothing set FText_LinkedListModule_size = FText_LinkedListModule_size + 1 if FText_LinkedListModule_size == 1 then set FText_LinkedListModule_first = this_1 set FText_LinkedListModule_prev[this_1] = 0 else set FText_LinkedListModule_prev[this_1] = FText_LinkedListModule_last set FText_LinkedListModule_next[FText_LinkedListModule_last] = this_1 set FText_LinkedListModule_prev[FText_LinkedListModule_first] = this_1 endif set FText_LinkedListModule_next[this_1] = 0 set FText_LinkedListModule_last = this_1 endfunction function FText_init takes integer this_1 returns nothing set FText_tt[this_1] = CreateTextTag() set FText_permanent[this_1] = false set FText_timestamp[this_1] = 0. set FText_cb[this_1] = 0 call construct_FText_LinkedListModule(this_1) endfunction function texttag_setPermanent takes texttag this_1, boolean flag returns nothing call SetTextTagPermanent(this_1, flag) endfunction function construct_FText takes integer this_1 returns nothing local texttag receiver call FText_init(this_1) set receiver = FText_tt[this_1] call texttag_setPermanent(receiver, true) endfunction function new_FText takes nothing returns integer local integer this_1 = alloc_FText() call construct_FText(this_1) return this_1 endfunction function createFText_2346 takes real pos_x_1, real pos_y_1, real pos_z, string text, real size, real lifespan, real vel_x, real vel_y, integer col_red, integer col_green, integer col_blue, integer col_alpha returns integer local boolean permanent = lifespan <= 0. local integer ftext = 0 local integer iterator local integer etext local integer receiver local integer receiver_1 local integer receiver_2 if dispatch_LinkedList_LinkedList_LinkedList_size(FText_recylcer) > 0 then set ftext = dispatch_LinkedList_LinkedList_LinkedList_dequeue(FText_recylcer) elseif FText_LinkedListModule_size < 100 then set ftext = new_FText() else set iterator = FText_LinkedListModule_iterator() loop exitwhen not Iterator_hasNext_799(iterator) set etext = Iterator_next_806(iterator) if ( not FText_permanent[etext]) and ftext == 0 or FText_timestamp[etext] < FText_timestamp[ftext] then set ftext = etext endif endloop call Iterator_close(iterator) if ftext == 0 then call error("You have reached the maximum possible permanent texttags") endif endif set receiver = ftext call dispatch_FText_FText_FText_setup(receiver, text, pos_x_1, pos_y_1, pos_z, size) call texttag_setColor_4077(FText_tt[ftext], col_red, col_green, col_blue, col_alpha) if permanent then set receiver_1 = ftext call dispatch_FText_FText_FText_setPermanent(receiver_1) else set receiver_2 = ftext call dispatch_FText_FText_FText_setDynamic(receiver_2, vel_x, vel_y, lifespan) endif return ftext endfunction function createFText_2345 takes real pos_x_1, real pos_y_1, real pos_z, string text, real size, real lifespan, real vel_x, real vel_y, integer col_red, integer col_green, integer col_blue, integer col_alpha, player p returns integer local integer ft = createFText_2346(pos_x_1, pos_y_1, pos_z, text, size, lifespan, vel_x, vel_y, col_red, col_green, col_blue, col_alpha) call texttag_setVisibility(FText_tt[ft], GetLocalPlayer() == p) return ft endfunction function createFText_2344 takes real pos_x_1, real pos_y_1, real pos_z, real vel_x, real vel_y, string text, real size, real lifespan, integer col_red, integer col_green, integer col_blue, integer col_alpha, player p returns integer return createFText_2345(pos_x_1, pos_y_1, pos_z, text, size, lifespan, vel_x, vel_y, col_red, col_green, col_blue, col_alpha, p) endfunction function Texter_show takes integer this_1 returns nothing call texttag_setVisibility(FText_tt[Texter_text[this_1]], true) set Texter_hidden[this_1] = false call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "Shown", 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) endfunction function dispatch_Texter_Texter_Texter_show takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Texter.show") else call error("Called Texter.show on invalid object.") endif endif call Texter_show(this_1) endfunction function Texter_activate takes integer this_1 returns nothing call dispatch_Texter_Texter_Texter_show(this_1) endfunction function dispatch_Entity_Entity_Entity_DupletListModule_activate takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Entity.activate") else call error("Called Entity.activate on invalid object.") endif endif if Serializable_typeId[this_1] <= 1205 then if Serializable_typeId[this_1] <= 1204 then call Entity_DupletListModule_activate(this_1) else call Texter_activate(this_1) endif else call Entity_DupletListModule_activate(this_1) endif endfunction function Entity_setVel takes integer this_1, real vel_x, real vel_y, real vel_z returns nothing local real tuple_temp = vel_x local real tuple_temp_1 = vel_y local real tuple_temp_2 = vel_z set Entity_vel_x[this_1] = tuple_temp set Entity_vel_y[this_1] = tuple_temp_1 set Entity_vel_z[this_1] = tuple_temp_2 call dispatch_Entity_Entity_Entity_DupletListModule_activate(this_1) endfunction function dispatch_Entity_Entity_Entity_setVel takes integer this_1, real vel_x, real vel_y, real vel_z returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Entity.setVel") else call error("Called Entity.setVel on invalid object.") endif endif call Entity_setVel(this_1, vel_x, vel_y, vel_z) endfunction function EscaperSensorSetup_setFlying takes integer this_1, boolean flag returns nothing if Entity_flying[this_1] and ( not flag) then call dispatch_Entity_Entity_Entity_setVel(this_1, Vectors_ZERO3_x, Vectors_ZERO3_y, Vectors_ZERO3_z) endif call Entity_setFlying(this_1, flag) endfunction function StaticEscaperSensorSetup_setFlying takes integer this_1, boolean flag returns nothing if Entity_flying[this_1] and ( not flag) then call dispatch_Entity_Entity_Entity_setVel(this_1, Vectors_ZERO3_x, Vectors_ZERO3_y, Vectors_ZERO3_z) endif call Entity_setFlying(this_1, flag) endfunction function dispatch_Entity_Entity_Entity_setFlying takes integer this_1, boolean flag returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Entity.setFlying") else call error("Called Entity.setFlying on invalid object.") endif endif if Serializable_typeId[this_1] <= 1215 then if Serializable_typeId[this_1] <= 1186 then if Serializable_typeId[this_1] <= 1173 then call Entity_setFlying(this_1, flag) else call EscaperSensorSetup_setFlying(this_1, flag) endif else call Entity_setFlying(this_1, flag) endif elseif Serializable_typeId[this_1] <= 1220 then call StaticEscaperSensorSetup_setFlying(this_1, flag) else call Entity_setFlying(this_1, flag) endif endfunction function vec3_getHeightMap takes real this_x, real this_y, real this_z returns real return vec2_getHeightMap(vec3_toVec2(this_x, this_y, this_z), vec3_toVec2_return_y) endfunction function Entity_setupEntity takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, real vel_x, real vel_y, real vel_z, player owner, real radius returns nothing local real tuple_temp = pos_x_1 local real tuple_temp_1 = pos_y_1 local real tuple_temp_2 = pos_z local real cond_result local real temp local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 set Entity_pos_x[this_1] = tuple_temp set Entity_pos_y[this_1] = tuple_temp_1 set Entity_pos_z[this_1] = tuple_temp_2 set tuple_temp_3 = vel_x set tuple_temp_4 = vel_y set tuple_temp_5 = vel_z set Entity_vel_x[this_1] = tuple_temp_3 set Entity_vel_y[this_1] = tuple_temp_4 set Entity_vel_z[this_1] = tuple_temp_5 set Entity_owner[this_1] = owner set Entity_radius[this_1] = radius set Entity_radius2[this_1] = radius * radius set temp = pos_z if Frentity_DYNAMIC_Z then set cond_result = vec3_getHeightMap(pos_x_1, pos_y_1, pos_z) else set cond_result = 0. endif if temp > cond_result then call dispatch_Entity_Entity_Entity_setFlying(this_1, true) endif set DebugInfo_allocationsPerSecond = DebugInfo_allocationsPerSecond + 1 endfunction function dispatch_Entity_Entity_Entity_setupEntity takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, real vel_x, real vel_y, real vel_z, player owner, real radius returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Entity.setupEntity") else call error("Called Entity.setupEntity on invalid object.") endif endif call Entity_setupEntity(this_1, pos_x_1, pos_y_1, pos_z, vel_x, vel_y, vel_z, owner, radius) endfunction function construct_Entity5 takes integer this_1, player owner, real pos_x_1, real pos_y_1, real pos_z, real radius returns nothing call Entity_init(this_1) call dispatch_Entity_Entity_Entity_setupEntity(this_1, pos_x_1, pos_y_1, pos_z, Vectors_ZERO3_x, Vectors_ZERO3_y, Vectors_ZERO3_z, owner, radius) endfunction function angle_cos takes real this_radians returns real return Cos(this_radians) endfunction function angle_op_divReal takes real this_radians, real scalar returns real set angle_op_divReal_return_radians = this_radians / scalar return angle_op_divReal_return_radians endfunction function angle_sin takes real this_radians returns real return Sin(this_radians) endfunction function vec3_length takes real this_x, real this_y, real this_z returns real return SquareRoot(this_x * this_x + this_y * this_y + this_z * this_z) endfunction function vec3_norm takes real this_x, real this_y, real this_z returns real local real len = vec3_length(this_x, this_y, this_z) local real x = 0. local real y = 0. local real z = 0. if len != 0.0 then set x = this_x / len set y = this_y / len set z = this_z / len endif set vec3_norm_return_x = x set vec3_norm_return_y = y set vec3_norm_return_z = z return vec3_norm_return_x endfunction function vec3_toQuat takes real this_x, real this_y, real this_z, real angl_radians returns real local real tuple_temp = vec3_norm(this_x, this_y, this_z) local real tuple_temp_1 = vec3_norm_return_y local real tuple_temp_2 = vec3_norm_return_z local real v_x = tuple_temp local real v_y = tuple_temp_1 local real v_z = tuple_temp_2 local real sin = angle_sin(angle_op_divReal(angl_radians, 2)) set vec3_toQuat_return_x = v_x * sin set vec3_toQuat_return_y = v_y * sin set vec3_toQuat_return_z = v_z * sin set vec3_toQuat_return_w = angle_cos(angle_op_divReal(angl_radians, 2)) return vec3_toQuat_return_x endfunction function angle_toQuat takes real this_radians, real axis_x, real axis_y, real axis_z returns real set angle_toQuat_return_x = vec3_toQuat(axis_x, axis_y, axis_z, this_radians) set angle_toQuat_return_y = vec3_toQuat_return_y set angle_toQuat_return_z = vec3_toQuat_return_z set angle_toQuat_return_w = vec3_toQuat_return_w return angle_toQuat_return_x endfunction function quat_getGimbalPole takes real this_x, real this_y, real this_z, real this_w returns integer local real pole = this_x * this_z - this_y * this_w local integer cond_result local integer cond_result_1 if pole > 0.5 - Quaternion_EPSILON then set cond_result_1 = 1 else if pole < Quaternion_EPSILON - 0.5 then set cond_result = -1 else set cond_result = 0 endif set cond_result_1 = cond_result endif return cond_result_1 endfunction function quat_toEuler takes real this_x, real this_y, real this_z, real this_w returns real local integer temp = quat_getGimbalPole(this_x, this_y, this_z, this_w) local real yaw local real pitch local real roll local real cos local real sin if temp == 1 then set cos = 2. * this_x * this_z + 2. * this_y * this_w set sin = 2. * this_y * this_z - 2. * this_x * this_w set yaw = Atan2( - sin, - cos) set pitch = - (Maths_PI / 2.) set roll = 0. elseif temp == -1 then set cos = 2. * this_x * this_z + 2. * this_y * this_w set sin = 2. * this_y * this_z - 2. * this_x * this_w set yaw = Atan2(sin, cos) set pitch = Maths_PI / 2. set roll = 0. else set cos = 1. - 2. * this_y * this_y - 2. * this_z * this_z set sin = 2. * this_x * this_y + 2. * this_z * this_w set yaw = Atan2(sin, cos) set pitch = - Asin(2. * this_x * this_z - 2. * this_y * this_w) set cos = 1. - 2. * this_x * this_x - 2. * this_y * this_y set sin = 2. * this_y * this_z + 2. * this_x * this_w set roll = Atan2(sin, cos) endif set quat_toEuler_return_x = roll set quat_toEuler_return_y = pitch set quat_toEuler_return_z = yaw return quat_toEuler_return_x endfunction function effect_setOrientation takes effect this_1, real quaternion_x, real quaternion_y, real quaternion_z, real quaternion_w returns nothing local real tuple_temp = quat_toEuler(quaternion_x, quaternion_y, quaternion_z, quaternion_w) local real tuple_temp_1 = quat_toEuler_return_y local real tuple_temp_2 = quat_toEuler_return_z local real euler_x = tuple_temp local real euler_y = tuple_temp_1 local real euler_z = tuple_temp_2 call BlzSetSpecialEffectOrientation(this_1, euler_z, euler_y, euler_x) endfunction function Fx2_setOrientation takes integer this_1, real orientation_x, real orientation_y, real orientation_z, real orientation_w returns nothing call effect_setOrientation(Fx2_eff[this_1], orientation_x, orientation_y, orientation_z, orientation_w) endfunction function dispatch_Fx2_Fx2_Fx2_setOrientation takes integer this_1, real orientation_x, real orientation_y, real orientation_z, real orientation_w returns nothing if Fx2_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Fx2.setOrientation") else call error("Called Fx2.setOrientation on invalid object.") endif endif call Fx2_setOrientation(this_1, orientation_x, orientation_y, orientation_z, orientation_w) endfunction function alloc_Fx2 takes nothing returns integer local integer this_1 if Fx2_firstFree == 0 then if Fx2_maxIndex < JASS_MAX_ARRAY_SIZE then set Fx2_maxIndex = Fx2_maxIndex + 1 set this_1 = Fx2_maxIndex set Fx2_typeId[this_1] = 888 else call error("Out of memory: Could not create Fx2.") set this_1 = 0 endif else set Fx2_firstFree = Fx2_firstFree - 1 set this_1 = Fx2_nextFree[Fx2_firstFree] set Fx2_typeId[this_1] = 888 endif return this_1 endfunction function Fx2_init takes integer this_1 returns nothing local integer tuple_temp = Colors_COLOR_WHITE_red local integer tuple_temp_1 = Colors_COLOR_WHITE_green local integer tuple_temp_2 = Colors_COLOR_WHITE_blue local integer tuple_temp_3 = Colors_COLOR_WHITE_alpha set Fx2_tint_red[this_1] = tuple_temp set Fx2_tint_green[this_1] = tuple_temp_1 set Fx2_tint_blue[this_1] = tuple_temp_2 set Fx2_tint_alpha[this_1] = tuple_temp_3 endfunction function effect_setPos takes effect this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing call BlzSetSpecialEffectPosition(this_1, pos_x_1, pos_y_1, pos_z) endfunction function addEffect_1563 takes string path, real pos_x_1, real pos_y_1, real pos_z returns effect local effect receiver = AddSpecialEffect(path, pos_x_1, pos_y_1) call effect_setPos(receiver, pos_x_1, pos_y_1, pos_z) return receiver endfunction function construct_Fx2 takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, string path returns nothing call Fx2_init(this_1) set Fx2_eff[this_1] = addEffect_1563(path, pos_x_1, pos_y_1, pos_z) endfunction function new_Fx2 takes real pos_x_1, real pos_y_1, real pos_z, string path returns integer local integer this_1 = alloc_Fx2() call construct_Fx2(this_1, pos_x_1, pos_y_1, pos_z, path) return this_1 endfunction function Fx2Entity_setupFx takes integer this_1, real xyAngle_radians, string sfxpath returns nothing set Fx2Entity_fx[this_1] = new_Fx2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], sfxpath) call dispatch_Fx2_Fx2_Fx2_setOrientation(Fx2Entity_fx[this_1], angle_toQuat(xyAngle_radians, 0., 0., 1.), angle_toQuat_return_y, angle_toQuat_return_z, angle_toQuat_return_w) endfunction function dispatch_Fx2Entity_Fx2Entity_Fx2Entity_setupFx takes integer this_1, real xyAngle_radians, string sfxpath returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Fx2Entity.setupFx") else call error("Called Fx2Entity.setupFx on invalid object.") endif endif call Fx2Entity_setupFx(this_1, xyAngle_radians, sfxpath) endfunction function construct_Fx2Entity2 takes integer this_1, player owner, real pos_x_1, real pos_y_1, real pos_z, real xyAngle_radians, string sfxpath returns nothing call construct_Entity5(this_1, owner, pos_x_1, pos_y_1, pos_z, Entity_radius[this_1]) call Fx2Entity_init(this_1) call dispatch_Fx2Entity_Fx2Entity_Fx2Entity_setupFx(this_1, xyAngle_radians, sfxpath) endfunction function effect_setScale takes effect this_1, real scale returns nothing call BlzSetSpecialEffectScale(this_1, scale) endfunction function getRockAsset takes integer level returns string local integer temp = level if temp == 4 then return Abilities_ancientProtectorMissile elseif temp == 3 then return Abilities_demolisherMissile elseif temp == 2 then return Abilities_rockBoltMissile elseif temp == 1 then return Abilities_makuraMissile endif return "" endfunction function vec2_getAngle takes real this_x, real this_y returns real set vec2_getAngle_return_radians = Atan2(this_y, this_x) return vec2_getAngle_return_radians endfunction function vec2_op_mult takes real this_x, real this_y, real factor returns real set vec2_op_mult_return_x = this_x * factor set vec2_op_mult_return_y = this_y * factor return vec2_op_mult_return_x endfunction function construct_SpaceRock takes integer this_1, real position_x, real position_y, real velocity_x, real velocity_y, integer level returns nothing local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 call construct_Fx2Entity2(this_1, GameConstants_STAFF_PLAYER, vec2_withZ(position_x, position_y, 48.), vec2_withZ_return_y, vec2_withZ_return_z, vec2_getAngle(velocity_x, velocity_y), getRockAsset(level)) call SpaceRock_init(this_1) call effect_setScale(Fx2_eff[Fx2Entity_fx[this_1]], 1. + level * 0.25) set SpaceRock_radiusSq[this_1] = real_squared(26. + level * 6.) set tuple_temp = vec2_toVec3(vec2_op_mult(velocity_x, velocity_y, (5 - level) * 0.85), vec2_op_mult_return_y) set tuple_temp_1 = vec2_toVec3_return_y set tuple_temp_2 = vec2_toVec3_return_z set Entity_vel_x[this_1] = tuple_temp set Entity_vel_y[this_1] = tuple_temp_1 set Entity_vel_z[this_1] = tuple_temp_2 set SpaceRock_level[this_1] = level set SpaceRock_hp[this_1] = level set Entity_sleeps[this_1] = false call dispatch_LinkedList_LinkedList_LinkedList_add_1(MGSpacey_rocks, this_1) endfunction function new_SpaceRock takes real position_x, real position_y, real velocity_x, real velocity_y, integer level returns integer local integer this_1 = alloc_SpaceRock() call construct_SpaceRock(this_1, position_x, position_y, velocity_x, velocity_y, level) return this_1 endfunction function SpaceRock_onDestroy takes integer this_1 returns nothing local integer i if SpaceRock_level[this_1] > 1 then set i = 0 loop exitwhen i > 2 call new_SpaceRock(vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, GetRandomReal(-2., 2.), GetRandomReal(-2., 2.), SpaceRock_level[this_1] - 1) set i = i + 1 endloop endif call Fx2Entity_onDestroy(this_1) endfunction function dealloc_SpaceRock takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type SpaceRock") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroySpaceRock takes integer this_1 returns nothing call SpaceRock_onDestroy(this_1) call dealloc_SpaceRock(this_1) endfunction function unit_show takes unit this_1 returns nothing call ShowUnit(this_1, true) endfunction function unit_unpause takes unit this_1 returns nothing call PauseUnit(this_1, false) endfunction function Spaceship_onDestroy takes integer this_1 returns nothing local unit receiver local unit receiver_1 if Spaceship_mounter[this_1] != 0 and ( not Entity_done[Spaceship_mounter[this_1]]) then set Escaper_alive[Spaceship_mounter[this_1]] = true if unit_isAlive(UnitEntity_actor[Spaceship_mounter[this_1]]) then set receiver = UnitEntity_actor[Spaceship_mounter[this_1]] call unit_unpause(receiver) set receiver_1 = receiver call unit_show(receiver_1) endif endif call UnitEntity_onDestroy(this_1) endfunction function dealloc_Spaceship takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Spaceship") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroySpaceship takes integer this_1 returns nothing call Spaceship_onDestroy(this_1) call dealloc_Spaceship(this_1) endfunction function player_getId takes player this_1 returns integer return GetPlayerId(this_1) endfunction function SpellTarget_onDestroy takes integer this_1 returns nothing call dispatch_LinkedList_LinkedList_LinkedList_remove(dispatch_HashMap_HashMap_HashMap_get(BossSpellTarget_targets, player_getId(Entity_owner[this_1])), this_1) call SetupObject_onDestroy(this_1) endfunction function dealloc_SpellTarget takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type SpellTarget") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroySpellTarget takes integer this_1 returns nothing call SpellTarget_onDestroy(this_1) call dealloc_SpellTarget(this_1) endfunction function SpinNode_onDestroy takes integer this_1 returns nothing if SpinNode_next[this_1] != 0 then set SpinNode_prev[SpinNode_next[this_1]] = SpinNode_prev[this_1] endif if SpinNode_prev[this_1] != 0 then set SpinNode_next[SpinNode_prev[this_1]] = SpinNode_next[this_1] endif if ( not Entity_done[SpinNode_obj[this_1]]) and UnitEntity_actor[SpinNode_obj[this_1]] != null then call unit_addAbility(SetupObject_setup[SpinNode_obj[this_1]], BuilderConstants_REMOVE_OBJECT_ID) endif endfunction function dealloc_SpinNode takes integer obj_1 returns nothing if SpinNode_typeId[obj_1] == 0 then call error("Double free: object of type SpinNode") else set SpinNode_nextFree[SpinNode_firstFree] = obj_1 set SpinNode_firstFree = SpinNode_firstFree + 1 set SpinNode_typeId[obj_1] = 0 endif endfunction function destroySpinNode takes integer this_1 returns nothing call SpinNode_onDestroy(this_1) call dealloc_SpinNode(this_1) endfunction function dispatch_SpinNode_destroySpinNode takes integer this_1 returns nothing if SpinNode_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SpinNode.SpinNode") else call error("Called SpinNode.SpinNode on invalid object.") endif endif call destroySpinNode(this_1) endfunction function Spinner_onDestroy takes integer this_1 returns nothing local integer node = Spinner_firstNode[this_1] local integer tmp set Spinner_firstNode[this_1] = 0 loop exitwhen not (node != 0) set tmp = node set node = SpinNode_next[node] call dispatch_SpinNode_destroySpinNode(tmp) endloop call dispatch_ConfigValue_destroyConfigValue(Spinner_cosFactor[this_1]) call dispatch_ConfigValue_destroyConfigValue(Spinner_sinFactor[this_1]) call dispatch_ConfigValue_destroyConfigValue(Spinner_spinSpeed[this_1]) call SetupObject_onDestroy(this_1) endfunction function dealloc_Spinner takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Spinner") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroySpinner takes integer this_1 returns nothing call Spinner_onDestroy(this_1) call dealloc_Spinner(this_1) endfunction function dealloc_StaticBaseObject takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type StaticBaseObject") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyStaticBaseObject takes integer this_1 returns nothing call StaticBaseObject_onDestroy(this_1) call dealloc_StaticBaseObject(this_1) endfunction function dealloc_StaticEscaperSensorSetup takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type StaticEscaperSensorSetup") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyStaticEscaperSensorSetup takes integer this_1 returns nothing call StaticEscaperSensorSetup_onDestroy(this_1) call dealloc_StaticEscaperSensorSetup(this_1) endfunction function dealloc_StaticSetupObject takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type StaticSetupObject") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyStaticSetupObject takes integer this_1 returns nothing call StaticSetupObject_onDestroy(this_1) call dealloc_StaticSetupObject(this_1) endfunction function StrongEscaper_onDestroy takes integer this_1 returns nothing call Escaper_onDestroy(this_1) endfunction function dealloc_StrongEscaper takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type StrongEscaper") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyStrongEscaper takes integer this_1 returns nothing call StrongEscaper_onDestroy(this_1) call dealloc_StrongEscaper(this_1) endfunction function TankKiller_onDestroy takes integer this_1 returns nothing call EscaperSensorSetup_onDestroy(this_1) endfunction function dealloc_TankKiller takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type TankKiller") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyTankKiller takes integer this_1 returns nothing call TankKiller_onDestroy(this_1) call dealloc_TankKiller(this_1) endfunction function Teleporter_onDestroy takes integer this_1 returns nothing call StaticBaseObject_onDestroy(this_1) endfunction function dealloc_Teleporter takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Teleporter") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyTeleporter takes integer this_1 returns nothing call Teleporter_onDestroy(this_1) call dealloc_Teleporter(this_1) endfunction function TerrainBlocker_onDestroy takes integer this_1 returns nothing if not TerrainBlocker_silent[this_1] then call ebrtile_removeModifier(vec3_getEBRTile(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_getEBRTile_return_y, vec3_getEBRTile_return_key, vec3_getEBRTile_return_currentType, vec3_getEBRTile_return_lastType, vec3_getEBRTile_return_modifiers_val, 1) endif call StaticBaseObject_onDestroy(this_1) endfunction function dealloc_TerrainBlocker takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type TerrainBlocker") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyTerrainBlocker takes integer this_1 returns nothing call TerrainBlocker_onDestroy(this_1) call dealloc_TerrainBlocker(this_1) endfunction function TerrainChanger_onDestroy takes integer this_1 returns nothing call dispatch_ConfigValue_destroyConfigValue(TerrainChanger_sizeX[this_1]) call dispatch_ConfigValue_destroyConfigValue(TerrainChanger_sizeY[this_1]) call SetupObject_onDestroy(this_1) endfunction function dealloc_TerrainChanger takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type TerrainChanger") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyTerrainChanger takes integer this_1 returns nothing call TerrainChanger_onDestroy(this_1) call dealloc_TerrainChanger(this_1) endfunction function TerrainModder_onDestroy takes integer this_1 returns nothing if not TerrainModder_legit[this_1] then call error("Shouldn't happen ok.") endif call UnitEntity_onDestroy(this_1) endfunction function dealloc_TerrainModder takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type TerrainModder") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyTerrainModder takes integer this_1 returns nothing call TerrainModder_onDestroy(this_1) call dealloc_TerrainModder(this_1) endfunction function Texter_onDestroy takes integer this_1 returns nothing call dispatch_FText_destroyFText(Texter_text[this_1]) call StaticBaseObject_onDestroy(this_1) endfunction function dealloc_Texter takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Texter") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyTexter takes integer this_1 returns nothing call Texter_onDestroy(this_1) call dealloc_Texter(this_1) endfunction function Tracks_onDestroy takes integer this_1 returns nothing call unit_setEntity(Tracks_setup[this_1], 0) call unit_remove(Tracks_setup[this_1]) call dispatch_ConfigValue_destroyConfigValue(Tracks_trackSpeed[this_1]) call UnitEntity_onDestroy(this_1) endfunction function dealloc_Tracks takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Tracks") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyTracks takes integer this_1 returns nothing call Tracks_onDestroy(this_1) call dealloc_Tracks(this_1) endfunction function Trap_goos_get takes integer index1, integer index2 returns integer local integer returnVal if index2 < 0 or index2 >= 5 then call error("Index out of Bounds") elseif index2 <= 2 then if index2 <= 1 then if index2 <= 0 then set returnVal = Trap_goos_0[index1] else set returnVal = Trap_goos_1[index1] endif else set returnVal = Trap_goos_2[index1] endif elseif index2 <= 3 then set returnVal = Trap_goos_3[index1] else set returnVal = Trap_goos_4[index1] endif return returnVal endfunction function Trap_goos_set takes integer instanceId, integer arrayIndex, integer value returns nothing if arrayIndex < 0 or arrayIndex >= 5 then call error("Index out of Bounds") elseif arrayIndex <= 2 then if arrayIndex <= 1 then if arrayIndex <= 0 then set Trap_goos_0[instanceId] = value else set Trap_goos_1[instanceId] = value endif else set Trap_goos_2[instanceId] = value endif elseif arrayIndex <= 3 then set Trap_goos_3[instanceId] = value else set Trap_goos_4[instanceId] = value endif endfunction function Trap_onDestroy takes integer this_1 returns nothing local integer i = 0 loop exitwhen i > 4 if Trap_goos_get(this_1, i) != 0 then call dispatch_Goo_destroyGoo(Trap_goos_get(this_1, i)) call Trap_goos_set(this_1, i, 0) endif set i = i + 1 endloop call StaticBaseObject_onDestroy(this_1) endfunction function dealloc_Trap takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Trap") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyTrap takes integer this_1 returns nothing call Trap_onDestroy(this_1) call dealloc_Trap(this_1) endfunction function destructable_remove takes destructable this_1 returns nothing call RemoveDestructable(this_1) endfunction function Tree_onDestroy takes integer this_1 returns nothing call destructable_remove(Tree_dummy[this_1]) call UnitEntity_onDestroy(this_1) endfunction function dealloc_Tree takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Tree") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyTree takes integer this_1 returns nothing call Tree_onDestroy(this_1) call dealloc_Tree(this_1) endfunction function UnitCreator_onDestroy takes integer this_1 returns nothing call dispatch_LinkedList_destroyLinkedList(UnitCreator_delays[this_1]) call StaticBaseObject_onDestroy(this_1) endfunction function dealloc_UnitCreator takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type UnitCreator") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyUnitCreator takes integer this_1 returns nothing call UnitCreator_onDestroy(this_1) call dealloc_UnitCreator(this_1) endfunction function dealloc_UnitEntity takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type UnitEntity") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyUnitEntity takes integer this_1 returns nothing call UnitEntity_onDestroy(this_1) call dealloc_UnitEntity(this_1) endfunction function UnitProducer_onDestroy takes integer this_1 returns nothing call StaticBaseObject_onDestroy(this_1) endfunction function dealloc_UnitProducer takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type UnitProducer") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyUnitProducer takes integer this_1 returns nothing call UnitProducer_onDestroy(this_1) call dealloc_UnitProducer(this_1) endfunction function UnitRemover_onDestroy takes integer this_1 returns nothing call StaticBaseObject_onDestroy(this_1) endfunction function dealloc_UnitRemover takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type UnitRemover") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyUnitRemover takes integer this_1 returns nothing call UnitRemover_onDestroy(this_1) call dealloc_UnitRemover(this_1) endfunction function VolcanoObstacle_onDestroy takes integer this_1 returns nothing call StaticEscaperSensorSetup_onDestroy(this_1) endfunction function dealloc_VolcanoObstacle takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type VolcanoObstacle") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyVolcanoObstacle takes integer this_1 returns nothing call VolcanoObstacle_onDestroy(this_1) call dealloc_VolcanoObstacle(this_1) endfunction function Vortex_onDestroy takes integer this_1 returns nothing call dispatch_Fx_Fx_Fx_hiddenDestroy(Vortex_vortexFx[this_1]) call UnitEntity_onDestroy(this_1) endfunction function dealloc_Vortex takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Vortex") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyVortex takes integer this_1 returns nothing call Vortex_onDestroy(this_1) call dealloc_Vortex(this_1) endfunction function Wall_onDestroy takes integer this_1 returns nothing call StaticSetupObject_onDestroy(this_1) endfunction function dealloc_Wall takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Wall") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyWall takes integer this_1 returns nothing call Wall_onDestroy(this_1) call dealloc_Wall(this_1) endfunction function Warlock_onDestroy takes integer this_1 returns nothing local unit receiver local unit receiver_1 if Warlock_mounter[this_1] != 0 and ( not Entity_done[Warlock_mounter[this_1]]) then set Escaper_alive[Warlock_mounter[this_1]] = true if unit_isAlive(UnitEntity_actor[Warlock_mounter[this_1]]) then set receiver = UnitEntity_actor[Warlock_mounter[this_1]] call unit_unpause(receiver) set receiver_1 = receiver call unit_show(receiver_1) endif endif call UnitEntity_onDestroy(this_1) endfunction function dealloc_Warlock takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Warlock") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyWarlock takes integer this_1 returns nothing call Warlock_onDestroy(this_1) call dealloc_Warlock(this_1) endfunction function HLIterator_onDestroy takes integer this_1 returns nothing endfunction function dealloc_HLIterator takes integer obj_1 returns nothing if HLIterator_typeId[obj_1] == 0 then call error("Double free: object of type HLIterator") else set HLIterator_nextFree[HLIterator_firstFree] = obj_1 set HLIterator_firstFree = HLIterator_firstFree + 1 set HLIterator_typeId[obj_1] = 0 endif endfunction function destroyHLIterator takes integer this_1 returns nothing call HLIterator_onDestroy(this_1) call dealloc_HLIterator(this_1) endfunction function dispatch_HLIterator_destroyHLIterator takes integer this_1 returns nothing if HLIterator_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HLIterator.HLIterator") else call error("Called HLIterator.HLIterator on invalid object.") endif endif call destroyHLIterator(this_1) endfunction function HLIterator_close takes integer this_1 returns nothing call dispatch_HLIterator_destroyHLIterator(this_1) endfunction function HLIterator_hasNext takes integer this_1 returns boolean return HLIterator_i[this_1] < dispatch_HashList_HashList_HashList_size(HLIterator_list[this_1]) endfunction function HLIterator_next takes integer this_1 returns integer set HLIterator_i[this_1] = HLIterator_i[this_1] + 1 return dispatch_HashList_HashList_HashList_get(HLIterator_list[this_1], HLIterator_i[this_1] - 1) endfunction function alloc_HLIterator takes nothing returns integer local integer this_1 if HLIterator_firstFree == 0 then if HLIterator_maxIndex < JASS_MAX_ARRAY_SIZE then set HLIterator_maxIndex = HLIterator_maxIndex + 1 set this_1 = HLIterator_maxIndex set HLIterator_typeId[this_1] = 891 else call error("Out of memory: Could not create HLIterator.") set this_1 = 0 endif else set HLIterator_firstFree = HLIterator_firstFree - 1 set this_1 = HLIterator_nextFree[HLIterator_firstFree] set HLIterator_typeId[this_1] = 891 endif return this_1 endfunction function HLIterator_init takes integer this_1 returns nothing set HLIterator_i[this_1] = 0 endfunction function construct_HLIterator takes integer this_1, integer list returns nothing call HLIterator_init(this_1) set HLIterator_list[this_1] = list endfunction function new_HLIterator takes integer list returns integer local integer this_1 = alloc_HLIterator() call construct_HLIterator(this_1, list) return this_1 endfunction function HashList_iterator takes integer this_1 returns integer return new_HLIterator(this_1) endfunction function dispatch_HashSet_HashSet_HashSet_remove takes integer this_1, integer elem returns boolean local boolean HashSet_HashSet_remove_result if HashList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashSet.remove") else call error("Called HashSet.remove on invalid object.") endif endif set HashSet_HashSet_remove_result = HashSet_remove(this_1, elem) return HashSet_HashSet_remove_result endfunction function dispatch_HashSet_destroyHashSet takes integer this_1 returns nothing if HashList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashSet.HashSet") else call error("Called HashSet.HashSet on invalid object.") endif endif call destroyHashSet(this_1) endfunction function Waypoint_onDestroy takes integer this_1 returns nothing local integer iterator local integer link if Waypoint_linked[this_1] != 0 then set iterator = HashList_iterator(Waypoint_linked[this_1]) loop exitwhen not HLIterator_hasNext(iterator) set link = HLIterator_next(iterator) if Waypoint_linked[link] != 0 then call dispatch_HashSet_HashSet_HashSet_remove(Waypoint_linked[link], this_1) endif endloop call HLIterator_close(iterator) call dispatch_HashSet_destroyHashSet(Waypoint_linked[this_1]) set Waypoint_linked[this_1] = 0 endif call StaticBaseObject_onDestroy(this_1) endfunction function dealloc_Waypoint takes integer obj_1 returns nothing if Serializable_typeId[obj_1] == 0 then call error("Double free: object of type Waypoint") else set Serializable_nextFree[Serializable_firstFree] = obj_1 set Serializable_firstFree = Serializable_firstFree + 1 set Serializable_typeId[obj_1] = 0 endif endfunction function destroyWaypoint takes integer this_1 returns nothing call Waypoint_onDestroy(this_1) call dealloc_Waypoint(this_1) endfunction function dispatch_IterableMap_destroyIterableMap takes integer this_1 returns nothing if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling IterableMap.IterableMap") else call error("Called IterableMap.IterableMap on invalid object.") endif endif call destroyIterableMap(this_1) endfunction function InventoryIterator_onDestroy takes integer this_1 returns nothing endfunction function dealloc_InventoryIterator takes integer obj_1 returns nothing if InventoryIterator_typeId[obj_1] == 0 then call error("Double free: object of type InventoryIterator") else set InventoryIterator_nextFree[InventoryIterator_firstFree] = obj_1 set InventoryIterator_firstFree = InventoryIterator_firstFree + 1 set InventoryIterator_typeId[obj_1] = 0 endif endfunction function destroyInventoryIterator takes integer this_1 returns nothing call InventoryIterator_onDestroy(this_1) call dealloc_InventoryIterator(this_1) endfunction function dispatch_InventoryIterator_destroyInventoryIterator takes integer this_1 returns nothing if InventoryIterator_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling InventoryIterator.InventoryIterator") else call error("Called InventoryIterator.InventoryIterator on invalid object.") endif endif call destroyInventoryIterator(this_1) endfunction function InventoryIterator_close takes integer this_1 returns nothing call dispatch_InventoryIterator_destroyInventoryIterator(this_1) endfunction function InventoryIterator_hasNext takes integer this_1 returns boolean return InventoryIterator_count[this_1] > 0 endfunction function InventoryIterator_iterator takes integer this_1 returns integer return this_1 endfunction function InventoryIterator_items_get takes integer index1, integer index2 returns item local item returnVal if index2 < 0 or index2 >= 6 then call error("Index out of Bounds") elseif index2 <= 2 then if index2 <= 1 then if index2 <= 0 then set returnVal = InventoryIterator_items_0[index1] else set returnVal = InventoryIterator_items_1[index1] endif else set returnVal = InventoryIterator_items_2[index1] endif elseif index2 <= 4 then if index2 <= 3 then set returnVal = InventoryIterator_items_3[index1] else set returnVal = InventoryIterator_items_4[index1] endif else set returnVal = InventoryIterator_items_5[index1] endif return returnVal endfunction function InventoryIterator_items_set takes integer instanceId, integer arrayIndex, item value returns nothing if arrayIndex < 0 or arrayIndex >= 6 then call error("Index out of Bounds") elseif arrayIndex <= 2 then if arrayIndex <= 1 then if arrayIndex <= 0 then set InventoryIterator_items_0[instanceId] = value else set InventoryIterator_items_1[instanceId] = value endif else set InventoryIterator_items_2[instanceId] = value endif elseif arrayIndex <= 4 then if arrayIndex <= 3 then set InventoryIterator_items_3[instanceId] = value else set InventoryIterator_items_4[instanceId] = value endif else set InventoryIterator_items_5[instanceId] = value endif endfunction function InventoryIterator_next takes integer this_1 returns item local item i set InventoryIterator_count[this_1] = InventoryIterator_count[this_1] - 1 set i = InventoryIterator_items_get(this_1, InventoryIterator_count[this_1]) call InventoryIterator_items_set(this_1, InventoryIterator_count[this_1], null) return i endfunction function dispatch_HashList_HashList_HashList_iterator takes integer this_1 returns integer local integer HashList_HashList_iterator_result if HashList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashList.iterator") else call error("Called HashList.iterator on invalid object.") endif endif set HashList_HashList_iterator_result = HashList_iterator(this_1) return HashList_HashList_iterator_result endfunction function IterableMap_iterator takes integer this_1 returns integer return dispatch_HashList_HashList_HashList_iterator(IterableMap_keys[this_1]) endfunction function hashtable_loadEffectHandle takes hashtable this_1, integer parentKey, integer childKey returns effect return LoadEffectHandle(this_1, parentKey, childKey) endfunction function Table_loadEffect takes integer this_1, integer parentKey returns effect return hashtable_loadEffectHandle(Table_ht, this_1, parentKey) endfunction function dispatch_Table_Table_Table_loadEffect takes integer this_1, integer parentKey returns effect local effect Table_Table_loadEffect_result if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Table.loadEffect") else call error("Called Table.loadEffect on invalid object.") endif endif set Table_Table_loadEffect_result = Table_loadEffect(this_1, parentKey) return Table_Table_loadEffect_result endfunction function hashtable_saveFogStateHandle takes hashtable this_1, integer parentKey, integer childKey, fogstate value returns nothing call SaveFogStateHandle(this_1, parentKey, childKey, value) endfunction function Table_saveFogState takes integer this_1, integer parentKey, fogstate value returns nothing call hashtable_saveFogStateHandle(Table_ht, this_1, parentKey, value) endfunction function dispatch_Table_Table_Table_saveFogState takes integer this_1, integer parentKey, fogstate value returns nothing if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Table.saveFogState") else call error("Called Table.saveFogState on invalid object.") endif endif call Table_saveFogState(this_1, parentKey, value) endfunction function effectFromIndex takes integer index returns effect call dispatch_Table_Table_Table_saveFogState(TypeCasting_typecastdata, 0, ConvertFogState(index)) return dispatch_Table_Table_Table_loadEffect(TypeCasting_typecastdata, 0) endfunction function alloc_InventoryIterator takes nothing returns integer local integer this_1 if InventoryIterator_firstFree == 0 then if InventoryIterator_maxIndex < JASS_MAX_ARRAY_SIZE then set InventoryIterator_maxIndex = InventoryIterator_maxIndex + 1 set this_1 = InventoryIterator_maxIndex set InventoryIterator_typeId[this_1] = 976 else call error("Out of memory: Could not create InventoryIterator.") set this_1 = 0 endif else set InventoryIterator_firstFree = InventoryIterator_firstFree - 1 set this_1 = InventoryIterator_nextFree[InventoryIterator_firstFree] set InventoryIterator_typeId[this_1] = 976 endif return this_1 endfunction function InventoryIterator_init takes integer this_1 returns nothing set InventoryIterator_count[this_1] = 0 endfunction function construct_InventoryIterator takes integer this_1, unit u_1 returns nothing local integer slot local item i call InventoryIterator_init(this_1) set slot = UnitInventorySize(u_1) - 1 loop exitwhen slot < 0 set i = UnitItemInSlot(u_1, slot) if i != null then call InventoryIterator_items_set(this_1, InventoryIterator_count[this_1], i) set InventoryIterator_count[this_1] = InventoryIterator_count[this_1] + 1 endif set slot = slot - 1 endloop endfunction function new_InventoryIterator takes unit u_1 returns integer local integer this_1 = alloc_InventoryIterator() call construct_InventoryIterator(this_1, u_1) return this_1 endfunction function unit_inventory takes unit this_1 returns integer return new_InventoryIterator(this_1) endfunction function Key_clearKeys takes integer this_1 returns nothing local integer iterator = IterableMap_iterator(Key_effectMap[this_1]) local integer escaper local integer iterator_1 local item itm local item receiver local item receiver_1 loop exitwhen not HLIterator_hasNext(iterator) set escaper = HLIterator_next(iterator) set iterator_1 = InventoryIterator_iterator(unit_inventory(UnitEntity_actor[escaper])) loop exitwhen not InventoryIterator_hasNext(iterator_1) set itm = InventoryIterator_next(iterator_1) if item_getEntity(itm) == this_1 then set receiver = itm call item_setEntity(receiver, 0) set receiver_1 = receiver call item_remove(receiver_1) endif endloop call InventoryIterator_close(iterator_1) call effect_destr(effectFromIndex(dispatch_HashMap_HashMap_HashMap_get(Key_effectMap[this_1], escaper))) endloop call HLIterator_close(iterator) endfunction function dispatch_Key_Key_Key_clearKeys takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Key.clearKeys") else call error("Called Key.clearKeys on invalid object.") endif endif call Key_clearKeys(this_1) endfunction function dispatch_OnEndListener_Projectile_OnEndListener_run takes integer this_1 returns nothing endfunction function printTimedToPlayer takes string msg, real duration, player p returns nothing call DisplayTimedTextToPlayer(p, 0., 0., duration, msg) endfunction function cyc_RevivePoint_terminate takes integer funcChoice, integer this_1 returns nothing if funcChoice == 0 then if Revivepoint_currentRevive != this_1 then call Log_debug("Delete") call cyc_RevivePoint_terminate(17, this_1) else call printTimedToPlayer("|cffcc3333You cannot remove the currently active Revivepoint", 5., Entity_owner[this_1]) endif elseif funcChoice == 1 then if not Entity_done[this_1] then if Projectile_onEnd[this_1] != 0 then call dispatch_OnEndListener_Projectile_OnEndListener_run(Projectile_onEnd[this_1]) endif call cyc_RevivePoint_terminate(17, this_1) endif elseif funcChoice == 2 then call cyc_RevivePoint_terminate(18, ItemEntityBridge_obj[this_1]) call UnitEntity_onDestroy(this_1) elseif funcChoice == 3 then call cyc_RevivePoint_terminate(2, this_1) call dealloc_ItemEntityBridge(this_1) elseif funcChoice == 4 then call cyc_RevivePoint_terminate(14, this_1) elseif funcChoice == 5 then call cyc_RevivePoint_terminate(4, this_1) call dealloc_Tome(this_1) elseif funcChoice == 6 then call dispatch_Key_Key_Key_clearKeys(this_1) call dispatch_IterableMap_destroyIterableMap(Key_effectMap[this_1]) set ItemObject_holder[this_1] = 0 if Key_returnSfx[this_1] != null then call effect_destr(Key_returnSfx[this_1]) endif if Key_infiniteEff[this_1] != null then call effect_destr(Key_infiniteEff[this_1]) endif call cyc_RevivePoint_terminate(14, this_1) elseif funcChoice == 7 then call cyc_RevivePoint_terminate(6, this_1) call dealloc_Key(this_1) elseif funcChoice == 8 then call cyc_RevivePoint_terminate(14, this_1) elseif funcChoice == 9 then call cyc_RevivePoint_terminate(8, this_1) call dealloc_Coin(this_1) elseif funcChoice == 10 then call cyc_RevivePoint_terminate(14, this_1) elseif funcChoice == 11 then call cyc_RevivePoint_terminate(10, this_1) call dealloc_Boots(this_1) elseif funcChoice == 12 then call cyc_RevivePoint_terminate(14, this_1) elseif funcChoice == 13 then call cyc_RevivePoint_terminate(12, this_1) call dealloc_BallItem(this_1) elseif funcChoice == 14 then call cyc_RevivePoint_terminate(18, ItemObject_setup[this_1]) call ItemEntity_onDestroy(this_1) elseif funcChoice == 15 then call cyc_RevivePoint_terminate(14, this_1) call dealloc_ItemObject(this_1) elseif funcChoice == 16 then if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Entity.Entity") else call error("Called Entity.Entity on invalid object.") endif endif if Serializable_typeId[this_1] <= 1181 then if Serializable_typeId[this_1] <= 1158 then if Serializable_typeId[this_1] <= 1147 then if Serializable_typeId[this_1] <= 1141 then if Serializable_typeId[this_1] <= 1138 then if Serializable_typeId[this_1] <= 1137 then if Serializable_typeId[this_1] <= 1136 then call destroyEntity(this_1) else call destroyFx2Entity(this_1) endif else call destroyProjectile(this_1) endif elseif Serializable_typeId[this_1] <= 1140 then if Serializable_typeId[this_1] <= 1139 then call destroyAirPhysicsProjectile(this_1) else call destroyBallProjectile(this_1) endif else call destroyBoomerang(this_1) endif elseif Serializable_typeId[this_1] <= 1144 then if Serializable_typeId[this_1] <= 1143 then if Serializable_typeId[this_1] <= 1142 then call destroyFireball(this_1) else call destroyHomingProjectile(this_1) endif else call destroyBossMissile(this_1) endif elseif Serializable_typeId[this_1] <= 1146 then if Serializable_typeId[this_1] <= 1145 then call destroyOrbProjectile(this_1) else call destroyShipProjectile(this_1) endif else call destroySpaceRock(this_1) endif elseif Serializable_typeId[this_1] <= 1153 then if Serializable_typeId[this_1] <= 1150 then if Serializable_typeId[this_1] <= 1149 then if Serializable_typeId[this_1] <= 1148 then call destroyFxEntity(this_1) else call destroyFoodEntity(this_1) endif else call destroyPortal(this_1) endif elseif Serializable_typeId[this_1] <= 1152 then if Serializable_typeId[this_1] <= 1151 then call destroyItemEntity(this_1) else call cyc_RevivePoint_terminate(15, this_1) endif else call cyc_RevivePoint_terminate(13, this_1) endif elseif Serializable_typeId[this_1] <= 1156 then if Serializable_typeId[this_1] <= 1155 then if Serializable_typeId[this_1] <= 1154 then call cyc_RevivePoint_terminate(11, this_1) else call cyc_RevivePoint_terminate(9, this_1) endif else call cyc_RevivePoint_terminate(7, this_1) endif elseif Serializable_typeId[this_1] <= 1157 then call cyc_RevivePoint_terminate(5, this_1) else call destroyEntity(this_1) endif elseif Serializable_typeId[this_1] <= 1170 then if Serializable_typeId[this_1] <= 1164 then if Serializable_typeId[this_1] <= 1161 then if Serializable_typeId[this_1] <= 1160 then if Serializable_typeId[this_1] <= 1159 then call destroyUnitEntity(this_1) else call destroyBomber(this_1) endif else call destroyBuilder(this_1) endif elseif Serializable_typeId[this_1] <= 1163 then if Serializable_typeId[this_1] <= 1162 then call destroyEscaper(this_1) else call destroyBlindEscaper(this_1) endif else call destroyFastEscaper(this_1) endif elseif Serializable_typeId[this_1] <= 1167 then if Serializable_typeId[this_1] <= 1166 then if Serializable_typeId[this_1] <= 1165 then call destroyHolyEscaper(this_1) else call destroyIceEscaper(this_1) endif else call destroyStrongEscaper(this_1) endif elseif Serializable_typeId[this_1] <= 1169 then if Serializable_typeId[this_1] <= 1168 then call cyc_RevivePoint_terminate(3, this_1) else call destroySelector(this_1) endif else call destroySetupBox(this_1) endif elseif Serializable_typeId[this_1] <= 1176 then if Serializable_typeId[this_1] <= 1173 then if Serializable_typeId[this_1] <= 1172 then if Serializable_typeId[this_1] <= 1171 then call destroySetupObject(this_1) else call destroyBoss(this_1) endif else call destroyCongaLineHead(this_1) endif elseif Serializable_typeId[this_1] <= 1175 then if Serializable_typeId[this_1] <= 1174 then call destroyEscaperSensorSetup(this_1) else call destroyAirKiller(this_1) endif else call destroyBigKiller(this_1) endif elseif Serializable_typeId[this_1] <= 1179 then if Serializable_typeId[this_1] <= 1178 then if Serializable_typeId[this_1] <= 1177 then call destroyBigRandomKiller(this_1) else call destroyFaceless(this_1) endif else call destroyFireKiller(this_1) endif elseif Serializable_typeId[this_1] <= 1180 then call destroyGlaiveKiller(this_1) else call destroyKnockbacker(this_1) endif elseif Serializable_typeId[this_1] <= 1204 then if Serializable_typeId[this_1] <= 1193 then if Serializable_typeId[this_1] <= 1187 then if Serializable_typeId[this_1] <= 1184 then if Serializable_typeId[this_1] <= 1183 then if Serializable_typeId[this_1] <= 1182 then call destroyMinion(this_1) else call destroyPointer(this_1) endif else call destroySmallKiller(this_1) endif elseif Serializable_typeId[this_1] <= 1186 then if Serializable_typeId[this_1] <= 1185 then call destroySmallRandomKiller(this_1) else call destroyTankKiller(this_1) endif else call destroyObjectTarget(this_1) endif elseif Serializable_typeId[this_1] <= 1190 then if Serializable_typeId[this_1] <= 1189 then if Serializable_typeId[this_1] <= 1188 then call destroyPowernode(this_1) else call destroySpellTarget(this_1) endif else call destroySpinner(this_1) endif elseif Serializable_typeId[this_1] <= 1192 then if Serializable_typeId[this_1] <= 1191 then call destroyTerrainChanger(this_1) else call destroySpaceship(this_1) endif else call destroyStaticBaseObject(this_1) endif elseif Serializable_typeId[this_1] <= 1199 then if Serializable_typeId[this_1] <= 1196 then if Serializable_typeId[this_1] <= 1195 then if Serializable_typeId[this_1] <= 1194 then call destroyArcanery(this_1) else call destroyBombertower(this_1) endif else call destroyBooster(this_1) endif elseif Serializable_typeId[this_1] <= 1198 then if Serializable_typeId[this_1] <= 1197 then call destroyBossDamager(this_1) else call destroyExecuter(this_1) endif else call destroyJumper(this_1) endif elseif Serializable_typeId[this_1] <= 1202 then if Serializable_typeId[this_1] <= 1201 then if Serializable_typeId[this_1] <= 1200 then call destroyLobbyTeleporter(this_1) else call destroyMemoryAccessPedestal(this_1) endif else call destroyMinigameTeleporter(this_1) endif elseif Serializable_typeId[this_1] <= 1203 then call destroyTeleporter(this_1) else call destroyTerrainBlocker(this_1) endif elseif Serializable_typeId[this_1] <= 1215 then if Serializable_typeId[this_1] <= 1210 then if Serializable_typeId[this_1] <= 1207 then if Serializable_typeId[this_1] <= 1206 then if Serializable_typeId[this_1] <= 1205 then call destroyTexter(this_1) else call destroyTrap(this_1) endif else call destroyUnitCreator(this_1) endif elseif Serializable_typeId[this_1] <= 1209 then if Serializable_typeId[this_1] <= 1208 then call destroyUnitProducer(this_1) else call destroyUnitRemover(this_1) endif else call destroyWaypoint(this_1) endif elseif Serializable_typeId[this_1] <= 1213 then if Serializable_typeId[this_1] <= 1212 then if Serializable_typeId[this_1] <= 1211 then call destroyStaticSetupObject(this_1) else call destroyDecoration(this_1) endif else call destroyDoor(this_1) endif elseif Serializable_typeId[this_1] <= 1214 then call destroyFountain(this_1) else call destroyRevivePoint(this_1) endif elseif Serializable_typeId[this_1] <= 1221 then if Serializable_typeId[this_1] <= 1218 then if Serializable_typeId[this_1] <= 1217 then if Serializable_typeId[this_1] <= 1216 then call destroyStaticEscaperSensorSetup(this_1) else call destroyBigObstacle(this_1) endif else call destroyHighObstacle(this_1) endif elseif Serializable_typeId[this_1] <= 1220 then if Serializable_typeId[this_1] <= 1219 then call destroySmallObstacle(this_1) else call destroyVolcanoObstacle(this_1) endif else call destroyWall(this_1) endif elseif Serializable_typeId[this_1] <= 1224 then if Serializable_typeId[this_1] <= 1223 then if Serializable_typeId[this_1] <= 1222 then call destroyTerrainModder(this_1) else call destroyTracks(this_1) endif else call destroyTree(this_1) endif elseif Serializable_typeId[this_1] <= 1225 then call destroyVortex(this_1) else call destroyWarlock(this_1) endif elseif funcChoice == 17 then if not Entity_done[this_1] then set Entity_done[this_1] = true call cyc_RevivePoint_terminate(16, this_1) endif elseif funcChoice == 18 then if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Entity.terminate") else call error("Called Entity.terminate on invalid object.") endif endif if Serializable_typeId[this_1] <= 1214 then if Serializable_typeId[this_1] <= 1146 then if Serializable_typeId[this_1] <= 1137 then call cyc_RevivePoint_terminate(17, this_1) else call cyc_RevivePoint_terminate(1, this_1) endif else call cyc_RevivePoint_terminate(17, this_1) endif elseif Serializable_typeId[this_1] <= 1215 then call cyc_RevivePoint_terminate(0, this_1) else call cyc_RevivePoint_terminate(17, this_1) endif endif endfunction function CallbackCounted_onDestroy takes integer this_1 returns nothing call timer_release(CallbackCounted_t[this_1]) endfunction function dealloc_CallbackCounted takes integer obj_1 returns nothing if CallbackCounted_typeId[obj_1] == 0 then call error("Double free: object of type CallbackCounted") else set CallbackCounted_nextFree[CallbackCounted_firstFree] = obj_1 set CallbackCounted_firstFree = CallbackCounted_firstFree + 1 set CallbackCounted_typeId[obj_1] = 0 endif endfunction function destroyCallbackCounted takes integer this_1 returns nothing call CallbackCounted_onDestroy(this_1) call dealloc_CallbackCounted(this_1) endfunction function dispatch_CallbackCounted_destroyCallbackCounted takes integer this_1 returns nothing if CallbackCounted_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling CallbackCounted.CallbackCounted") else call error("Called CallbackCounted.CallbackCounted on invalid object.") endif endif call destroyCallbackCounted(this_1) endfunction function HashMap_size_1 takes integer this_1 returns integer return HashMap_size[this_1] endfunction function IterableMap_size takes integer this_1 returns integer return dispatch_HashList_HashList_HashList_size(IterableMap_keys[this_1]) endfunction function dispatch_HashMap_HashMap_HashMap_size takes integer this_1 returns integer local integer HashMap_HashMap_size_result if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashMap.size") else call error("Called HashMap.size on invalid object.") endif endif if Table_typeId[this_1] <= 1493 then set HashMap_HashMap_size_result = HashMap_size_1(this_1) else set HashMap_HashMap_size_result = IterableMap_size(this_1) endif return HashMap_HashMap_size_result endfunction function Entity_setCurrentRegion takes integer this_1 returns integer set RegionData_currentRegion[this_1] = getRegionData(dispatch_Entity_Entity_Entity_getPos(this_1), dispatch_Entity_Entity_Entity_getPos_return_y, dispatch_Entity_Entity_Entity_getPos_return_z) return RegionData_currentRegion[this_1] endfunction function alloc_CallbackSingle_doAfter_Minigame_Minigame_1619 takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 694 else call error("Out of memory: Could not create CallbackSingle_doAfter_Minigame_Minigame.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 694 endif return this_1 endfunction function alloc_CallbackSingle_doAfter_Minigame_Minigame takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 693 else call error("Out of memory: Could not create CallbackSingle_doAfter_Minigame_Minigame.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 693 endif return this_1 endfunction function RegionData_fmods_get takes integer index1, integer index2 returns integer local integer returnVal if index2 < 0 or index2 >= 12 then call error("Index out of Bounds") elseif index2 <= 5 then if index2 <= 2 then if index2 <= 1 then if index2 <= 0 then set returnVal = RegionData_fmods_0[index1] else set returnVal = RegionData_fmods_1[index1] endif else set returnVal = RegionData_fmods_2[index1] endif elseif index2 <= 4 then if index2 <= 3 then set returnVal = RegionData_fmods_3[index1] else set returnVal = RegionData_fmods_4[index1] endif else set returnVal = RegionData_fmods_5[index1] endif elseif index2 <= 8 then if index2 <= 7 then if index2 <= 6 then set returnVal = RegionData_fmods_6[index1] else set returnVal = RegionData_fmods_7[index1] endif else set returnVal = RegionData_fmods_8[index1] endif elseif index2 <= 10 then if index2 <= 9 then set returnVal = RegionData_fmods_9[index1] else set returnVal = RegionData_fmods_10[index1] endif else set returnVal = RegionData_fmods_11[index1] endif return returnVal endfunction function RegionData_fmods_set takes integer instanceId, integer arrayIndex, integer value returns nothing if arrayIndex < 0 or arrayIndex >= 12 then call error("Index out of Bounds") elseif arrayIndex <= 5 then if arrayIndex <= 2 then if arrayIndex <= 1 then if arrayIndex <= 0 then set RegionData_fmods_0[instanceId] = value else set RegionData_fmods_1[instanceId] = value endif else set RegionData_fmods_2[instanceId] = value endif elseif arrayIndex <= 4 then if arrayIndex <= 3 then set RegionData_fmods_3[instanceId] = value else set RegionData_fmods_4[instanceId] = value endif else set RegionData_fmods_5[instanceId] = value endif elseif arrayIndex <= 8 then if arrayIndex <= 7 then if arrayIndex <= 6 then set RegionData_fmods_6[instanceId] = value else set RegionData_fmods_7[instanceId] = value endif else set RegionData_fmods_8[instanceId] = value endif elseif arrayIndex <= 10 then if arrayIndex <= 9 then set RegionData_fmods_9[instanceId] = value else set RegionData_fmods_10[instanceId] = value endif else set RegionData_fmods_11[instanceId] = value endif endfunction function FogData_changeFog takes integer this_1, fogstate fstate returns nothing if FogData_state[this_1] != fstate then set FogData_state[this_1] = fstate if FogData_modifier[this_1] != null then call DestroyFogModifier(FogData_modifier[this_1]) endif set FogData_modifier[this_1] = CreateFogModifierRect(FogData_p[this_1], FogData_state[this_1], FogData_r[this_1], false, false) call FogModifierStart(FogData_modifier[this_1]) endif endfunction function dispatch_FogData_RegionData_FogData_changeFog takes integer this_1, fogstate fstate returns nothing if FogData_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling FogData.changeFog") else call error("Called FogData.changeFog on invalid object.") endif endif call FogData_changeFog(this_1, fstate) endfunction function alloc_FogData takes nothing returns integer local integer this_1 if FogData_firstFree == 0 then if FogData_maxIndex < JASS_MAX_ARRAY_SIZE then set FogData_maxIndex = FogData_maxIndex + 1 set this_1 = FogData_maxIndex set FogData_typeId[this_1] = 834 else call error("Out of memory: Could not create FogData.") set this_1 = 0 endif else set FogData_firstFree = FogData_firstFree - 1 set this_1 = FogData_nextFree[FogData_firstFree] set FogData_typeId[this_1] = 834 endif return this_1 endfunction function FogData_init takes integer this_1 returns nothing endfunction function isBuilderPlayer takes player p returns boolean return PlayerData_role[PlayerData_pData[player_getId(p)]] == 0 endfunction function construct_FogData takes integer this_1, player p, rect r returns nothing call FogData_init(this_1) set FogData_r[this_1] = r set FogData_p[this_1] = p set FogData_visible[this_1] = isBuilderPlayer(p) if FogData_visible[this_1] then call dispatch_FogData_RegionData_FogData_changeFog(this_1, FOG_OF_WAR_VISIBLE) else call dispatch_FogData_RegionData_FogData_changeFog(this_1, FOG_OF_WAR_MASKED) endif endfunction function new_FogData takes player p, rect r returns integer local integer this_1 = alloc_FogData() call construct_FogData(this_1, p, r) return this_1 endfunction function RegionData_hideRegion takes integer this_1, player p returns nothing local integer id = player_getId(p) if RegionData_fmods_get(this_1, id) == 0 then call RegionData_fmods_set(this_1, id, new_FogData(p, RegionData_theRect[this_1])) endif call dispatch_FogData_RegionData_FogData_changeFog(RegionData_fmods_get(this_1, id), FOG_OF_WAR_MASKED) endfunction function dispatch_RegionData_RegionData_RegionData_hideRegion takes integer this_1, player p returns nothing if RegionData_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling RegionData.hideRegion") else call error("Called RegionData.hideRegion on invalid object.") endif endif call RegionData_hideRegion(this_1, p) endfunction function onAllDead_Minigame_Minigame takes integer this_1 returns nothing local integer from = dispatch_LinkedList_LinkedList_LinkedList_staticItr(PlayerData_escaperPlayers) local integer pd_1 local integer clVar loop exitwhen not LLIterator_hasNext(from) set pd_1 = LLIterator_next(from) if PlayerData_escaper[pd_1] != 0 then call dispatch_RegionData_RegionData_RegionData_hideRegion(Entity_getCurrentRegion(PlayerData_escaper[pd_1]), PlayerData_p[pd_1]) endif call printTimedToPlayer("All Escapers have died!", 10., PlayerData_p[pd_1]) endloop set clVar = alloc_CallbackSingle_doAfter_Minigame_Minigame() call construct_CallbackSingle(clVar) set this_2952[clVar] = this_2951[this_1] call doAfter(2., clVar) set ReviveManager_waitForListener = 0 endfunction function dispatch_ReviveListener_ReviveManager_ReviveListener_onAllDead takes integer this_1 returns nothing if ReviveListener_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling ReviveListener.onAllDead") else call error("Called ReviveListener.onAllDead on invalid object.") endif endif call onAllDead_Minigame_Minigame(this_1) endfunction function checkSharedRevive takes nothing returns nothing local integer i if ReviveManager_waitForCount >= dispatch_LinkedList_LinkedList_LinkedList_size(PlayerData_escaperPlayers) then set ReviveManager_waitForCount = 0 call dispatch_ReviveListener_ReviveManager_ReviveListener_onAllDead(ReviveManager_waitForListener) set ReviveManager_waitForListener = 0 set i = 0 loop exitwhen i > 11 set RevivePod_wait[ReviveManager_pods[i]] = false set i = i + 1 endloop endif endfunction function UnitEntity_setNewActor takes integer this_1, unit u_1 returns nothing if u_1 == null or ( not unit_isAlive(u_1)) or unit_getEntity(u_1) != 0 then call error("invalid actor replacement") endif call unit_setEntity(UnitEntity_actor[this_1], 0) call unit_remove(UnitEntity_actor[this_1]) set UnitEntity_actor[this_1] = u_1 call unit_setEntity(UnitEntity_actor[this_1], this_1) endfunction function createUnit takes player p, integer unitId, real pos_x_1, real pos_y_1, real facing_radians returns unit return CreateUnit(p, unitId, pos_x_1, pos_y_1, angle_degrees(facing_radians)) endfunction function Escaper_setLava takes integer this_1, boolean add returns nothing if add and ( not Escaper_onLava[this_1]) then set Escaper_lavaEffect[this_1] = AddSpecialEffectTarget(Escaper_LAVA_EFFECT, UnitEntity_actor[this_1], "origin") set Escaper_onLava[this_1] = true elseif ( not add) and Escaper_onLava[this_1] then call effect_destr(Escaper_lavaEffect[this_1]) set Escaper_onLava[this_1] = false endif endfunction function dispatch_Escaper_Escaper_Escaper_setLava takes integer this_1, boolean add returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Escaper.setLava") else call error("Called Escaper.setLava on invalid object.") endif endif call Escaper_setLava(this_1, add) endfunction function Escaper_setPoison takes integer this_1, boolean add returns nothing if add and ( not Escaper_poisoned[this_1]) then set Escaper_poisonEffect[this_1] = AddSpecialEffectTarget(Escaper_POISON_EFFECT, UnitEntity_actor[this_1], "chest") set Escaper_poisoned[this_1] = true elseif ( not add) and Escaper_poisoned[this_1] then call effect_destr(Escaper_poisonEffect[this_1]) set Escaper_poisoned[this_1] = false endif endfunction function dispatch_Escaper_Escaper_Escaper_setPoison takes integer this_1, boolean add returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Escaper.setPoison") else call error("Called Escaper.setPoison on invalid object.") endif endif call Escaper_setPoison(this_1, add) endfunction function Entity_addVel takes integer this_1, real vel_x, real vel_y, real vel_z returns nothing local real tuple_temp = vec3_op_plus(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], vel_x, vel_y, vel_z) local real tuple_temp_1 = vec3_op_plus_return_y local real tuple_temp_2 = vec3_op_plus_return_z set Entity_vel_x[this_1] = tuple_temp set Entity_vel_y[this_1] = tuple_temp_1 set Entity_vel_z[this_1] = tuple_temp_2 call dispatch_Entity_Entity_Entity_DupletListModule_activate(this_1) endfunction function dispatch_Entity_Entity_Entity_addVel takes integer this_1, real vel_x, real vel_y, real vel_z returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Entity.addVel") else call error("Called Entity.addVel on invalid object.") endif endif call Entity_addVel(this_1, vel_x, vel_y, vel_z) endfunction function vec3_op_plus_4280 takes real this_x, real this_y, real this_z, real v_x, real v_y returns real set vec3_op_plus_return_x_3132 = this_x + v_x set vec3_op_plus_return_y_3134 = this_y + v_y set vec3_op_plus_return_z_3136 = this_z return vec3_op_plus_return_x_3132 endfunction function Escaper_getRealVel takes integer this_1 returns real set Escaper_getRealVel_return_x = vec3_op_plus_4280(vec3_op_plus_4280(vec3_op_plus_4280(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], Escaper_slideVelocity_x[this_1], Escaper_slideVelocity_y[this_1]), vec3_op_plus_return_y_3134, vec3_op_plus_return_z_3136, Escaper_otherVel_x[this_1], Escaper_otherVel_y[this_1]), vec3_op_plus_return_y_3134, vec3_op_plus_return_z_3136, Escaper_walkVel_x[this_1], Escaper_walkVel_y[this_1]) set Escaper_getRealVel_return_y = vec3_op_plus_return_y_3134 set Escaper_getRealVel_return_z = vec3_op_plus_return_z_3136 return Escaper_getRealVel_return_x endfunction function dispatch_Escaper_Escaper_Escaper_getRealVel takes integer this_1 returns real local real Escaper_Escaper_getRealVel_result_x local real Escaper_Escaper_getRealVel_result_y local real Escaper_Escaper_getRealVel_result_z local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Escaper.getRealVel") else call error("Called Escaper.getRealVel on invalid object.") endif endif set tuple_temp = Escaper_getRealVel(this_1) set tuple_temp_1 = Escaper_getRealVel_return_y set tuple_temp_2 = Escaper_getRealVel_return_z set Escaper_Escaper_getRealVel_result_x = tuple_temp set Escaper_Escaper_getRealVel_result_y = tuple_temp_1 set Escaper_Escaper_getRealVel_result_z = tuple_temp_2 set dispatch_Escaper_Escaper_Escaper_getRealVel_return_x = Escaper_Escaper_getRealVel_result_x set dispatch_Escaper_Escaper_Escaper_getRealVel_return_y = Escaper_Escaper_getRealVel_result_y set dispatch_Escaper_Escaper_Escaper_getRealVel_return_z = Escaper_Escaper_getRealVel_result_z return dispatch_Escaper_Escaper_Escaper_getRealVel_return_x endfunction function unit_setPosFly takes unit this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing call unit_setPos_4192(this_1, pos_x_1, pos_y_1) call unit_setFlyHeight(this_1, pos_z, 0.) endfunction function SetupObject_setPos takes integer this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing local real tuple_temp = pos_x_1 local real tuple_temp_1 = pos_y_1 local real tuple_temp_2 = pos_z set Entity_pos_x[this_1] = tuple_temp set Entity_pos_y[this_1] = tuple_temp_1 set Entity_pos_z[this_1] = tuple_temp_2 call unit_setPosFly(SetupObject_setup[this_1], pos_x_1, pos_y_1, pos_z) call unit_setPosFly(UnitEntity_actor[this_1], pos_x_1, pos_y_1, pos_z) endfunction function Entity_setPos takes integer this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing local real tuple_temp = pos_x_1 local real tuple_temp_1 = pos_y_1 local real tuple_temp_2 = pos_z set Entity_pos_x[this_1] = tuple_temp set Entity_pos_y[this_1] = tuple_temp_1 set Entity_pos_z[this_1] = tuple_temp_2 if pos_z > vec3_getHeightMap(pos_x_1, pos_y_1, pos_z) and Entity_gravity[this_1] != 0. then call dispatch_Entity_Entity_Entity_DupletListModule_activate(this_1) endif endfunction function vec3_getTerrainZ takes real this_x, real this_y, real this_z returns real call MoveLocation(Vectors_tempLoc, this_x, this_y) return GetLocationZ(Vectors_tempLoc) endfunction function unit_setPosReal takes unit this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing call unit_setPos_4192(this_1, pos_x_1, pos_y_1) call unit_setFlyHeight(this_1, pos_z - vec3_getTerrainZ(pos_x_1, pos_y_1, pos_z), 0.) endfunction function UnitEntity_setPos takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z returns nothing call Entity_setPos(this_1, tpos_x_1, tpos_y_1, tpos_z) if Frentity_DYNAMIC_Z then call unit_setPosReal(UnitEntity_actor[this_1], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) else call unit_setPos(UnitEntity_actor[this_1], vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y) endif endfunction function dispatch_UnitEntity_Entity_UnitEntity_setPos takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling UnitEntity.setPos") else call error("Called UnitEntity.setPos on invalid object.") endif endif if Serializable_typeId[this_1] <= 1191 then if Serializable_typeId[this_1] <= 1170 then call UnitEntity_setPos(this_1, tpos_x_1, tpos_y_1, tpos_z) else call SetupObject_setPos(this_1, tpos_x_1, tpos_y_1, tpos_z) endif else call UnitEntity_setPos(this_1, tpos_x_1, tpos_y_1, tpos_z) endif endfunction function angle_radians_1 takes real this_radians returns real return this_radians endfunction function effect_setYaw takes effect this_1, real yaw_radians returns nothing call BlzSetSpecialEffectYaw(this_1, angle_radians_1(yaw_radians)) endfunction function flashEffect_3283 takes string path, real pos_x_1, real pos_y_1, real pos_z, real scale, real yaw_radians returns nothing local effect receiver = addEffect_1563(path, pos_x_1, pos_y_1, pos_z) local effect receiver_1 local effect receiver_2 call effect_setScale(receiver, scale) set receiver_1 = receiver call effect_setYaw(receiver_1, yaw_radians) set receiver_2 = receiver_1 call effect_destr(receiver_2) endfunction function real_fromDeg takes real this_1 returns real set real_fromDeg_return_radians = this_1 * Angle_DEGTORAD return real_fromDeg_return_radians endfunction function flashEffect_3281 takes string path, real pos_x_1, real pos_y_1, real pos_z, real scale returns nothing call flashEffect_3283(path, pos_x_1, pos_y_1, pos_z, scale, real_fromDeg(GetRandomReal(0., 359.))) endfunction function flashEffect takes string path, real pos_x_1, real pos_y_1, real pos_z returns nothing call flashEffect_3281(path, pos_x_1, pos_y_1, pos_z, 1.0) endfunction function alloc_RevivePod takes nothing returns integer local integer this_1 if RevivePod_firstFree == 0 then if RevivePod_maxIndex < JASS_MAX_ARRAY_SIZE then set RevivePod_maxIndex = RevivePod_maxIndex + 1 set this_1 = RevivePod_maxIndex set RevivePod_typeId[this_1] = 1114 else call error("Out of memory: Could not create RevivePod.") set this_1 = 0 endif else set RevivePod_firstFree = RevivePod_firstFree - 1 set this_1 = RevivePod_nextFree[RevivePod_firstFree] set RevivePod_typeId[this_1] = 1114 endif return this_1 endfunction function RevivePod_init takes integer this_1 returns nothing endfunction function construct_RevivePod takes integer this_1, integer owner, real time, boolean wait returns nothing call RevivePod_init(this_1) set RevivePod_owner[this_1] = owner set RevivePod_time[this_1] = time set RevivePod_wait[this_1] = wait endfunction function new_RevivePod takes integer owner, real time, boolean wait returns integer local integer this_1 = alloc_RevivePod() call construct_RevivePod(this_1, owner, time, wait) return this_1 endfunction function manageTimedRevive takes integer e_1, real time returns nothing local integer id = player_getId(Entity_owner[e_1]) if ReviveManager_pods[id] == 0 then set ReviveManager_pods[id] = new_RevivePod(PlayerData_pData[id], time, false) endif endfunction function manageWaitForRevive takes integer e_1 returns nothing local integer id = player_getId(Entity_owner[e_1]) if ReviveManager_pods[id] == 0 then set ReviveManager_pods[id] = new_RevivePod(PlayerData_pData[id], 0., true) if ReviveManager_waitForListener != 0 then set ReviveManager_waitForCount = ReviveManager_waitForCount + 1 endif endif endfunction function manageRevive takes integer e_1 returns nothing local integer temp if isBuilderPlayer(Entity_owner[e_1]) then call manageTimedRevive(e_1, ReviveManager_TIMER_PERIOD) endif set temp = ReviveManager_revMode if temp == 0 then call manageTimedRevive(e_1, 2.75) elseif temp == 1 then else call manageWaitForRevive(e_1) endif endfunction function unit_damageTarget_4133 takes unit this_1, widget target, real amount returns nothing call UnitDamageTarget(this_1, target, amount, false, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNIVERSAL, WEAPON_TYPE_WHOKNOWS) endfunction function vec3_angleTo2d_4259 takes real this_x, real this_y, real this_z, real v_x, real v_y, real v_z returns real set vec3_angleTo2d_return_radians_3106 = real_asAngleRadians(Atan2(v_y - this_y, v_x - this_x)) return vec3_angleTo2d_return_radians_3106 endfunction function vec3_op_minus takes real this_x, real this_y, real this_z, real v_x, real v_y, real v_z returns real set vec3_op_minus_return_x = this_x - v_x set vec3_op_minus_return_y = this_y - v_y set vec3_op_minus_return_z = this_z - v_z return vec3_op_minus_return_x endfunction function vec3_op_mult takes real this_x, real this_y, real this_z, real factor returns real set vec3_op_mult_return_x = this_x * factor set vec3_op_mult_return_y = this_y * factor set vec3_op_mult_return_z = this_z * factor return vec3_op_mult_return_x endfunction function widget_getLife takes widget this_1 returns real return GetWidgetLife(this_1) endfunction function widget_isAliveTrick takes widget this_1 returns boolean return .405 < widget_getLife(this_1) endfunction function Escaper_kill_414 takes integer this_1, integer killer, integer kmode returns nothing local real vel_x local real vel_y local real vel_z local real ang_radians local real cond_result local unit temp local unit temp_1 local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 if Escaper_alive[this_1] then if RegionData_easyMode[Entity_getCurrentRegion(this_1)] then call dispatch_UnitEntity_Entity_UnitEntity_setPos(this_1, vec3_op_minus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], vec3_op_mult(dispatch_Escaper_Escaper_Escaper_getRealVel(this_1), dispatch_Escaper_Escaper_Escaper_getRealVel_return_y, dispatch_Escaper_Escaper_Escaper_getRealVel_return_z, 1.05), vec3_op_mult_return_y, vec3_op_mult_return_z), vec3_op_minus_return_y, vec3_op_minus_return_z) set tuple_temp = dispatch_Escaper_Escaper_Escaper_getRealVel(this_1) set tuple_temp_1 = dispatch_Escaper_Escaper_Escaper_getRealVel_return_y set tuple_temp_2 = dispatch_Escaper_Escaper_Escaper_getRealVel_return_z set vel_x = tuple_temp set vel_y = tuple_temp_1 set vel_z = tuple_temp_2 if killer != 0 then set tuple_temp_3 = vec3_angleTo2d_4259(dispatch_UnitEntity_Entity_UnitEntity_getPos(killer), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) set ang_radians = tuple_temp_3 call dispatch_Entity_Entity_Entity_addVel(this_1, angle_cos(ang_radians) * (10. + vec3_length(vel_x, vel_y, vel_z)), angle_sin(ang_radians) * (10. + vec3_length(vel_x, vel_y, vel_z)), 0.) call dispatch_UnitEntity_Entity_UnitEntity_setPos(this_1, vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], vel_x, vel_y, vel_z), vec3_op_plus_return_y, vec3_op_plus_return_z) else call dispatch_Entity_Entity_Entity_setVel(this_1, vec3_op_mult(dispatch_Escaper_Escaper_Escaper_getRealVel(this_1), dispatch_Escaper_Escaper_Escaper_getRealVel_return_y, dispatch_Escaper_Escaper_Escaper_getRealVel_return_z, - 1.75), vec3_op_mult_return_y, vec3_op_mult_return_z) endif call flashEffect(Abilities_boltImpact, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) call unit_damageTarget_4133(UnitEntity_actor[this_1], UnitEntity_actor[this_1], 85.) elseif widget_isAliveTrick(UnitEntity_actor[this_1]) then set temp = UnitEntity_actor[this_1] set temp_1 = UnitEntity_actor[this_1] if killer == 0 and ( not (kmode == 0)) then set cond_result = 195. else set cond_result = 1000. endif call unit_damageTarget_4133(temp, temp_1, cond_result) endif if Escaper_alive[this_1] and ( not widget_isAliveTrick(UnitEntity_actor[this_1])) then set Escaper_alive[this_1] = false set Escaper_deaths[this_1] = Escaper_deaths[this_1] + 1 call manageRevive(this_1) call dispatch_Escaper_Escaper_Escaper_setPoison(this_1, false) call dispatch_Escaper_Escaper_Escaper_setLava(this_1, false) set Entity_flying[this_1] = false set Escaper_sliding[this_1] = false endif endif endfunction function StrongEscaper_kill takes integer this_1, integer entity_1, integer kmode returns nothing local integer instanceOfTemp local boolean andLeft if ( not StrongEscaper_invulnerable[this_1]) or entity_1 == 0 then set andLeft = true else set instanceOfTemp = Serializable_typeId[entity_1] set andLeft = instanceOfTemp >= 1216 and instanceOfTemp <= 1220 endif if andLeft or kmode == 0 then call Escaper_kill_414(this_1, 0, 0) else call effect_destr(addEffect_1563(Abilities_spellShieldCaster, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])) endif endfunction function dispatch_Escaper_Escaper_Escaper_kill_2852 takes integer this_1, integer killer, integer kmode returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Escaper.kill") else call error("Called Escaper.kill on invalid object.") endif endif if Serializable_typeId[this_1] <= 1166 then call Escaper_kill_414(this_1, killer, kmode) else call StrongEscaper_kill(this_1, killer, kmode) endif endfunction function Escaper_kill takes integer this_1, integer killer returns nothing call dispatch_Escaper_Escaper_Escaper_kill_2852(this_1, killer, 2) endfunction function dispatch_Escaper_Escaper_Escaper_kill takes integer this_1, integer killer returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Escaper.kill") else call error("Called Escaper.kill on invalid object.") endif endif call Escaper_kill(this_1, killer) endfunction function inPlayableXY takes real x, real y returns boolean return x > MapBounds_playableMin_x and x < MapBounds_playableMax_x and y > MapBounds_playableMin_y and y < MapBounds_playableMax_y endfunction function vec3_inPlayable takes real this_x, real this_y, real this_z returns boolean return inPlayableXY(this_x, this_y) endfunction function Escaper_setXY takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z returns nothing local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 if vec3_inPlayable(tpos_x_1, tpos_y_1, tpos_z) then set tuple_temp = tpos_x_1 set tuple_temp_1 = tpos_y_1 set tuple_temp_2 = tpos_z set Entity_pos_x[this_1] = tuple_temp set Entity_pos_y[this_1] = tuple_temp_1 set Entity_pos_z[this_1] = tuple_temp_2 call unit_setXYZ(UnitEntity_actor[this_1], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) else call dispatch_UnitEntity_Entity_UnitEntity_setPos(this_1, vec2_toVec3(Escaper_currentRevivepoint_x, Escaper_currentRevivepoint_y), vec2_toVec3_return_y, vec2_toVec3_return_z) call dispatch_Escaper_Escaper_Escaper_kill(this_1, 0) endif endfunction function dispatch_Escaper_Escaper_Escaper_setXY takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Escaper.setXY") else call error("Called Escaper.setXY on invalid object.") endif endif call Escaper_setXY(this_1, tpos_x_1, tpos_y_1, tpos_z) endfunction function Escaper_stop takes integer this_1 returns nothing local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 set Escaper_sliding[this_1] = false set tuple_temp = 0. set tuple_temp_1 = 0. set Escaper_slideVelocity_x[this_1] = tuple_temp set Escaper_slideVelocity_y[this_1] = tuple_temp_1 set tuple_temp_2 = 0. set tuple_temp_3 = 0. set tuple_temp_4 = 0. set Entity_vel_x[this_1] = tuple_temp_2 set Entity_vel_y[this_1] = tuple_temp_3 set Entity_vel_z[this_1] = tuple_temp_4 set tuple_temp_5 = 0. set tuple_temp_6 = 0. set Escaper_otherVel_x[this_1] = tuple_temp_5 set Escaper_otherVel_y[this_1] = tuple_temp_6 endfunction function dispatch_Escaper_Escaper_Escaper_stop takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Escaper.stop") else call error("Called Escaper.stop on invalid object.") endif endif call Escaper_stop(this_1) endfunction function RegionData_addEscaper takes integer this_1, integer e_1 returns nothing call dispatch_LinkedList_LinkedList_LinkedList_add_1(RegionData_escapers[this_1], e_1) endfunction function dispatch_RegionData_RegionData_RegionData_addEscaper takes integer this_1, integer e_1 returns nothing if RegionData_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling RegionData.addEscaper") else call error("Called RegionData.addEscaper on invalid object.") endif endif call RegionData_addEscaper(this_1, e_1) endfunction function RegionData_removeEscaper takes integer this_1, integer e_1 returns nothing call dispatch_LinkedList_LinkedList_LinkedList_remove(RegionData_escapers[this_1], e_1) endfunction function dispatch_RegionData_RegionData_RegionData_removeEscaper takes integer this_1, integer e_1 returns nothing if RegionData_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling RegionData.removeEscaper") else call error("Called RegionData.removeEscaper on invalid object.") endif endif call RegionData_removeEscaper(this_1, e_1) endfunction function isEscaperPlayer takes player p returns boolean return PlayerData_role[PlayerData_pData[player_getId(p)]] == 1 endfunction function unit_getOwner takes unit this_1 returns player return GetOwningPlayer(this_1) endfunction function unit_setTurnSpeed takes unit this_1, real speed returns nothing call SetUnitTurnSpeed(this_1, speed) endfunction function Escaper_updateRegionData takes integer this_1 returns nothing local integer currentReg = Entity_getCurrentRegion(this_1) local integer newReg = Entity_setCurrentRegion(this_1) if newReg != 0 and newReg != currentReg then call dispatch_RegionData_RegionData_RegionData_removeEscaper(currentReg, this_1) call dispatch_RegionData_RegionData_RegionData_addEscaper(newReg, this_1) set Entity_gravity[this_1] = RegionData_gravity[newReg] call unit_removeAbility(UnitEntity_actor[this_1], RegionData_specialAbil[currentReg]) if RegionData_specialAbil[newReg] > 0 then call unit_addAbility(UnitEntity_actor[this_1], RegionData_specialAbil[newReg]) if isEscaperPlayer(unit_getOwner(UnitEntity_actor[this_1])) then call printTimedToPlayer("|cffFFCC00>> |rYou were granted a |cff0884BDspecial ability |rin this region |r(use with hotkey |cffFFCC00T|r)", 10., unit_getOwner(UnitEntity_actor[this_1])) endif else call unit_removeAbility(UnitEntity_actor[this_1], Escaper_JUMP_SPELL) call unit_removeAbility(UnitEntity_actor[this_1], Escaper_ORB_SPELL) endif call unit_setTurnSpeed(UnitEntity_actor[this_1], RegionData_turnSpeed[newReg]) endif endfunction function dispatch_Escaper_Escaper_Escaper_updateRegionData takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Escaper.updateRegionData") else call error("Called Escaper.updateRegionData on invalid object.") endif endif call Escaper_updateRegionData(this_1) endfunction function player_panCamToTimed takes player this_1, unit u_1, real time returns nothing if Player_localPlayer == this_1 then call PanCameraToTimed(unit_getX(u_1), unit_getY(u_1), time) endif endfunction function vec2_getTerrainZ takes real this_x, real this_y returns real call MoveLocation(Vectors_tempLoc, this_x, this_y) return GetLocationZ(Vectors_tempLoc) endfunction function vec2_withRealZ takes real this_x, real this_y, unit u_1 returns real set vec2_withRealZ_return_x = this_x set vec2_withRealZ_return_y = this_y set vec2_withRealZ_return_z = vec2_getTerrainZ(this_x, this_y) + unit_getFlyHeight(u_1) return vec2_withRealZ_return_x endfunction function unit_getPos3Real takes unit this_1 returns real set unit_getPos3Real_return_x = vec2_withRealZ(unit_getPos(this_1), unit_getPos_return_y, this_1) set unit_getPos3Real_return_y = vec2_withRealZ_return_y set unit_getPos3Real_return_z = vec2_withRealZ_return_z return unit_getPos3Real_return_x endfunction function unit_setPropWindow takes unit this_1, real value_radians returns nothing call SetUnitPropWindow(this_1, angle_radians_1(value_radians)) endfunction function Escaper_revive takes integer this_1 returns nothing local real rev_x local real rev_y local real tuple_temp local real tuple_temp_1 if not Escaper_alive[this_1] then call dispatch_Escaper_Escaper_Escaper_stop(this_1) set tuple_temp = Escaper_currentRevivepoint_x set tuple_temp_1 = Escaper_currentRevivepoint_y set rev_x = tuple_temp set rev_y = tuple_temp_1 if Escaper_revmod[this_1] == 0 then if UnitEntity_actor[this_1] == null then call printLog(4, "why this happening :(") call UnitEntity_setNewActor(this_1, createUnit(Entity_owner[this_1], 1, rev_x, rev_y, 0.)) else call ReviveHero(UnitEntity_actor[this_1], rev_x, rev_y, false) endif call dispatch_Escaper_Escaper_Escaper_setXY(this_1, rev_x, rev_y, 32.) else if UnitEntity_actor[this_1] == null then call UnitEntity_setNewActor(this_1, createUnit(Entity_owner[this_1], 1, RevivePointModifier_pos_x[Escaper_revmod[this_1]], RevivePointModifier_pos_y[Escaper_revmod[this_1]], 0.)) else call ReviveHero(UnitEntity_actor[this_1], RevivePointModifier_pos_x[Escaper_revmod[this_1]], RevivePointModifier_pos_y[Escaper_revmod[this_1]], false) endif call dispatch_Escaper_Escaper_Escaper_setXY(this_1, RevivePointModifier_pos_x[Escaper_revmod[this_1]], RevivePointModifier_pos_y[Escaper_revmod[this_1]], 32.) endif set Escaper_alive[this_1] = true call unit_setPropWindow(UnitEntity_actor[this_1], real_fromDeg(60.)) call dispatch_Escaper_Escaper_Escaper_updateRegionData(this_1) call dispatch_Escaper_Escaper_Escaper_setPoison(this_1, false) call dispatch_Escaper_Escaper_Escaper_setLava(this_1, false) if Escaper_left[this_1] then call cyc_RevivePoint_terminate(18, this_1) return endif call CameraClearNoiseForPlayer(Entity_owner[this_1]) if Player_localPlayer == Entity_owner[this_1] then if Escaper_selectatrevive[this_1] and Escaper_revivetomb[this_1] == null and ( not Escaper_camlock[this_1]) then call PanCameraToTimed(rev_x, rev_y, 0.) endif if Escaper_camOnRevive[this_1] then call ClearSelection() call SelectUnit(UnitEntity_actor[this_1], true) endif endif if Escaper_camlock[this_1] then call SetCameraTargetControllerNoZForPlayer(Entity_owner[this_1], UnitEntity_actor[this_1], 0., 0., true) endif if Escaper_revivetomb[this_1] != null then call dispatch_UnitEntity_Entity_UnitEntity_setPos(this_1, unit_getPos3Real(Escaper_revivetomb[this_1]), unit_getPos3Real_return_y, unit_getPos3Real_return_z) if Escaper_selectatrevive[this_1] and ( not Escaper_camlock[this_1]) then call player_panCamToTimed(Entity_owner[this_1], Escaper_revivetomb[this_1], 0.) endif call unit_remove(Escaper_revivetomb[this_1]) set Escaper_revivetomb[this_1] = null endif if RegionData_specialAbil[Entity_getCurrentRegion(this_1)] > 0 then call unit_addAbility(UnitEntity_actor[this_1], RegionData_specialAbil[Entity_getCurrentRegion(this_1)]) else call unit_removeAbility(UnitEntity_actor[this_1], Escaper_JUMP_SPELL) call unit_removeAbility(UnitEntity_actor[this_1], Escaper_ORB_SPELL) endif endif endfunction function dispatch_Escaper_Escaper_Escaper_revive takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Escaper.revive") else call error("Called Escaper.revive on invalid object.") endif endif call Escaper_revive(this_1) endfunction function RevivePod_onDestroy takes integer this_1 returns nothing endfunction function dealloc_RevivePod takes integer obj_1 returns nothing if RevivePod_typeId[obj_1] == 0 then call error("Double free: object of type RevivePod") else set RevivePod_nextFree[RevivePod_firstFree] = obj_1 set RevivePod_firstFree = RevivePod_firstFree + 1 set RevivePod_typeId[obj_1] = 0 endif endfunction function destroyRevivePod takes integer this_1 returns nothing call RevivePod_onDestroy(this_1) call dealloc_RevivePod(this_1) endfunction function dispatch_RevivePod_destroyRevivePod takes integer this_1 returns nothing if RevivePod_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling RevivePod.RevivePod") else call error("Called RevivePod.RevivePod on invalid object.") endif endif call destroyRevivePod(this_1) endfunction function update takes nothing returns nothing local integer i local integer pod if ReviveManager_revMode == 2 then call checkSharedRevive() endif set i = 0 loop exitwhen i > 11 set pod = ReviveManager_pods[i] if pod != 0 then if not RevivePod_wait[pod] then set RevivePod_time[pod] = RevivePod_time[pod] - ReviveManager_TIMER_PERIOD if RevivePod_time[pod] <= 0. then if PlayerData_escaper[RevivePod_owner[pod]] != 0 and ( not Escaper_alive[PlayerData_escaper[RevivePod_owner[pod]]]) then call dispatch_Escaper_Escaper_Escaper_revive(PlayerData_escaper[RevivePod_owner[pod]]) endif call dispatch_RevivePod_destroyRevivePod(pod) set ReviveManager_pods[i] = 0 endif endif endif set i = i + 1 endloop endfunction function changeRevMode takes integer rMode returns nothing local integer i set ReviveManager_waitForCount = 0 set i = 0 loop exitwhen i > 11 set RevivePod_time[ReviveManager_pods[i]] = 0. set RevivePod_wait[ReviveManager_pods[i]] = false set i = i + 1 endloop set ReviveManager_revMode = rMode call update() endfunction function MinigameTeleporter_votes_set takes integer instanceId, integer arrayIndex, boolean value returns nothing if arrayIndex < 0 or arrayIndex >= 12 then call error("Index out of Bounds") elseif arrayIndex <= 5 then if arrayIndex <= 2 then if arrayIndex <= 1 then if arrayIndex <= 0 then set MinigameTeleporter_votes_0[instanceId] = value else set MinigameTeleporter_votes_1[instanceId] = value endif else set MinigameTeleporter_votes_2[instanceId] = value endif elseif arrayIndex <= 4 then if arrayIndex <= 3 then set MinigameTeleporter_votes_3[instanceId] = value else set MinigameTeleporter_votes_4[instanceId] = value endif else set MinigameTeleporter_votes_5[instanceId] = value endif elseif arrayIndex <= 8 then if arrayIndex <= 7 then if arrayIndex <= 6 then set MinigameTeleporter_votes_6[instanceId] = value else set MinigameTeleporter_votes_7[instanceId] = value endif else set MinigameTeleporter_votes_8[instanceId] = value endif elseif arrayIndex <= 10 then if arrayIndex <= 9 then set MinigameTeleporter_votes_9[instanceId] = value else set MinigameTeleporter_votes_10[instanceId] = value endif else set MinigameTeleporter_votes_11[instanceId] = value endif endfunction function MinigameTeleporter_reset takes integer this_1 returns nothing local integer i set MinigameTeleporter_inprogress[this_1] = false set i = 0 loop exitwhen i > 11 call MinigameTeleporter_votes_set(this_1, i, false) set i = i + 1 endloop set MinigameTeleporter_currentPlus[this_1] = 0 call texttag_center(FText_tt[MinigameTeleporter_text[this_1]], dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, "|cffffcc00Vote for minigame", 10.) endfunction function dispatch_MinigameTeleporter_MinigameTeleporter_MinigameTeleporter_reset takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling MinigameTeleporter.reset") else call error("Called MinigameTeleporter.reset on invalid object.") endif endif call MinigameTeleporter_reset(this_1) endfunction function alloc_ForGroupCallback_forUnitsInRect_MGAgar_MGAgar takes nothing returns integer local integer this_1 if ForGroupCallback_firstFree == 0 then if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1 set this_1 = ForGroupCallback_maxIndex set ForGroupCallback_typeId[this_1] = 873 else call error("Out of memory: Could not create ForGroupCallback_forUnitsInRect_MGAgar_MGAgar.") set this_1 = 0 endif else set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1 set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree] set ForGroupCallback_typeId[this_1] = 873 endif return this_1 endfunction function LinkedList_clear takes integer this_1 returns nothing local integer current = LLEntry_next[LinkedList_dummy[this_1]] loop exitwhen not (current != LinkedList_dummy[this_1]) set current = LLEntry_next[current] call dispatch_LLEntry_destroyLLEntry(LLEntry_prev[current]) endloop set LLEntry_next[LinkedList_dummy[this_1]] = LinkedList_dummy[this_1] set LLEntry_prev[LinkedList_dummy[this_1]] = LinkedList_dummy[this_1] set LinkedList_size[this_1] = 0 endfunction function dispatch_LinkedList_LinkedList_LinkedList_clear takes integer this_1 returns nothing if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.clear") else call error("Called LinkedList.clear on invalid object.") endif endif call LinkedList_clear(this_1) endfunction function dealloc_ForGroupCallback takes integer obj_1 returns nothing if ForGroupCallback_typeId[obj_1] == 0 then call error("Double free: object of type ForGroupCallback") else set ForGroupCallback_nextFree[ForGroupCallback_firstFree] = obj_1 set ForGroupCallback_firstFree = ForGroupCallback_firstFree + 1 set ForGroupCallback_typeId[obj_1] = 0 endif endfunction function destroyForGroupCallback takes integer this_1 returns nothing call dealloc_ForGroupCallback(this_1) endfunction function dispatch_ForGroupCallback_destroyForGroupCallback takes integer this_1 returns nothing if ForGroupCallback_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling ForGroupCallback.ForGroupCallback") else call error("Called ForGroupCallback.ForGroupCallback on invalid object.") endif endif call destroyForGroupCallback(this_1) endfunction function group_clear takes group this_1 returns nothing call GroupClear(this_1) endfunction function popCallback takes nothing returns nothing call group_clear(ClosureForGroups_DUMMY_GROUP) set ClosureForGroups_tempCallbacksCount = ClosureForGroups_tempCallbacksCount - 1 call dispatch_ForGroupCallback_destroyForGroupCallback(ClosureForGroups_tempCallbacks[ClosureForGroups_tempCallbacksCount]) endfunction function pushCallback takes integer c returns nothing set ClosureForGroups_tempCallbacks[ClosureForGroups_tempCallbacksCount] = c set ClosureForGroups_tempCallbacksCount = ClosureForGroups_tempCallbacksCount + 1 set ClosureForGroups_iterCount = 0 set ClosureForGroups_maxCount = Integer_INT_MAX endfunction function forUnitsInRect takes rect r, integer c returns nothing call pushCallback(c) call GroupEnumUnitsInRect(ClosureForGroups_DUMMY_GROUP, r, ClosureForGroups_filter) call popCallback() endfunction function unit_getDefaultMovespeed takes unit this_1 returns real return GetUnitDefaultMoveSpeed(this_1) endfunction function unit_setScale takes unit this_1, real scale returns nothing call SetUnitScale(this_1, scale, scale, scale) endfunction function MGAgar_onEnd takes integer this_1 returns nothing local integer iterator = LinkedList_iterator(PlayerData_escaperPlayers) local integer pd_1 local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local integer iterator_1 local integer food local integer clVar local rect temp loop exitwhen not LLIterator_hasNext(iterator) set pd_1 = LLIterator_next(iterator) set Escaper_alive[PlayerData_escaper[pd_1]] = true if PlayerData_escaper[pd_1] != 0 and Escaper_alive[PlayerData_escaper[pd_1]] then set receiver = UnitEntity_actor[PlayerData_escaper[pd_1]] call unit_setScale(receiver, 1.0) set receiver_1 = receiver call unit_setMoveSpeed(receiver_1, unit_getDefaultMovespeed(UnitEntity_actor[PlayerData_escaper[pd_1]])) set receiver_2 = receiver_1 call unit_show(receiver_2) set receiver_3 = receiver_2 call unit_unpause(receiver_3) endif endloop call LLIterator_close(iterator) set iterator_1 = LinkedList_iterator(MGAgar_flist[this_1]) loop exitwhen not LLIterator_hasNext(iterator_1) set food = LLIterator_next(iterator_1) call cyc_RevivePoint_terminate(18, food) endloop call LLIterator_close(iterator_1) set temp = RegionData_theRect[MGAgar_rdata[this_1]] set clVar = alloc_ForGroupCallback_forUnitsInRect_MGAgar_MGAgar() call forUnitsInRect(temp, clVar) call dispatch_LinkedList_LinkedList_LinkedList_clear(MGAgar_flist[this_1]) if MGAgar_cbs[this_1] != 0 then call dispatch_CallbackCounted_destroyCallbackCounted(MGAgar_cbs[this_1]) endif endfunction function CallbackPeriodic_onDestroy takes integer this_1 returns nothing call timer_release(CallbackPeriodic_t[this_1]) endfunction function dealloc_CallbackPeriodic takes integer obj_1 returns nothing if CallbackPeriodic_typeId[obj_1] == 0 then call error("Double free: object of type CallbackPeriodic") else set CallbackPeriodic_nextFree[CallbackPeriodic_firstFree] = obj_1 set CallbackPeriodic_firstFree = CallbackPeriodic_firstFree + 1 set CallbackPeriodic_typeId[obj_1] = 0 endif endfunction function destroyCallbackPeriodic takes integer this_1 returns nothing call CallbackPeriodic_onDestroy(this_1) call dealloc_CallbackPeriodic(this_1) endfunction function dispatch_CallbackPeriodic_destroyCallbackPeriodic takes integer this_1 returns nothing if CallbackPeriodic_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling CallbackPeriodic.CallbackPeriodic") else call error("Called CallbackPeriodic.CallbackPeriodic on invalid object.") endif endif call destroyCallbackPeriodic(this_1) endfunction function group_hasNext takes group this_1 returns boolean return FirstOfGroup(this_1) != null endfunction function group_next takes group this_1 returns unit local unit iterUnit = FirstOfGroup(this_1) call GroupRemoveUnit(this_1, iterUnit) return iterUnit endfunction function MGRandKill_onEnd takes integer this_1 returns nothing local unit obj_1 local group from if MGRandKill_fx[this_1] != 0 then call dispatch_CallbackPeriodic_destroyCallbackPeriodic(MGRandKill_chickenTimer[this_1]) call dispatch_CallbackPeriodic_destroyCallbackPeriodic(MGRandKill_bunnyTimer[this_1]) call dispatch_CallbackPeriodic_destroyCallbackPeriodic(MGRandKill_coinTimer[this_1]) call GroupEnumUnitsInRect(Group_ENUM_GROUP, gg_rct_coingamearea, Filter(ref_function_code__Filter_GroupEnumUnitsInRect_MGRandKill_MGRandKill)) set from = Group_ENUM_GROUP loop exitwhen not group_hasNext(from) set obj_1 = group_next(from) call Log_debug("onEnd Terminate") if unit_getEntity(obj_1) != 0 then call cyc_RevivePoint_terminate(18, unit_getEntity(obj_1)) endif endloop call dispatch_Fx2_destroyFx2(MGRandKill_fx[this_1]) set MGRandKill_fx[this_1] = 0 endif endfunction function alloc_ForGroupCallback_forUnitsInRect_MGSlide_MGSlide_1790 takes nothing returns integer local integer this_1 if ForGroupCallback_firstFree == 0 then if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1 set this_1 = ForGroupCallback_maxIndex set ForGroupCallback_typeId[this_1] = 875 else call error("Out of memory: Could not create ForGroupCallback_forUnitsInRect_MGSlide_MGSlide.") set this_1 = 0 endif else set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1 set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree] set ForGroupCallback_typeId[this_1] = 875 endif return this_1 endfunction function MGSlide_onEnd takes integer this_1 returns nothing local rect temp = RegionData_theRect[MGSlide_rdata[this_1]] local integer clVar = alloc_ForGroupCallback_forUnitsInRect_MGSlide_MGSlide_1790() call forUnitsInRect(temp, clVar) call dispatch_CallbackPeriodic_destroyCallbackPeriodic(MGSlide_cb[this_1]) endfunction function alloc_ForForceCallback_execute_MGSpacey_MGSpacey takes nothing returns integer local integer this_1 if ForForceCallback_firstFree == 0 then if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1 set this_1 = ForForceCallback_maxIndex set ForForceCallback_typeId[this_1] = 844 else call error("Out of memory: Could not create ForForceCallback_execute_MGSpacey_MGSpacey.") set this_1 = 0 endif else set ForForceCallback_firstFree = ForForceCallback_firstFree - 1 set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree] set ForForceCallback_typeId[this_1] = 844 endif return this_1 endfunction function alloc_ForForceCallback_execute_MGSpacey_MGSpacey_1765 takes nothing returns integer local integer this_1 if ForForceCallback_firstFree == 0 then if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1 set this_1 = ForForceCallback_maxIndex set ForForceCallback_typeId[this_1] = 845 else call error("Out of memory: Could not create ForForceCallback_execute_MGSpacey_MGSpacey.") set this_1 = 0 endif else set ForForceCallback_firstFree = ForForceCallback_firstFree - 1 set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree] set ForForceCallback_typeId[this_1] = 845 endif return this_1 endfunction function force_forEach takes force this_1, code callback_1 returns nothing call ForForce(this_1, callback_1) endfunction function isLastCallbackSuccessful takes nothing returns boolean return Execute_tempCallbacksSuccess[Execute_tempCallbacksCount] endfunction function dealloc_ForForceCallback takes integer obj_1 returns nothing if ForForceCallback_typeId[obj_1] == 0 then call error("Double free: object of type ForForceCallback") else set ForForceCallback_nextFree[ForForceCallback_firstFree] = obj_1 set ForForceCallback_firstFree = ForForceCallback_firstFree + 1 set ForForceCallback_typeId[obj_1] = 0 endif endfunction function destroyForForceCallback takes integer this_1 returns nothing call dealloc_ForForceCallback(this_1) endfunction function dispatch_ForForceCallback_destroyForForceCallback takes integer this_1 returns nothing if ForForceCallback_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling ForForceCallback.ForForceCallback") else call error("Called ForForceCallback.ForForceCallback on invalid object.") endif endif call destroyForForceCallback(this_1) endfunction function popCallback_3933 takes nothing returns nothing set Execute_tempCallbacksCount = Execute_tempCallbacksCount - 1 call dispatch_ForForceCallback_destroyForForceCallback(Execute_tempCallbacks[Execute_tempCallbacksCount]) endfunction function pushCallback_3947 takes integer c returns nothing set Execute_tempCallbacks[Execute_tempCallbacksCount] = c set Execute_tempCallbacksSuccess[Execute_tempCallbacksCount] = false set Execute_tempCallbacksCount = Execute_tempCallbacksCount + 1 endfunction function try takes integer c returns boolean local boolean suppressErrors call pushCallback_3947(c) set suppressErrors = ErrorHandling_suppressErrorMessages set ErrorHandling_suppressErrorMessages = true call force_forEach(Execute_executeForce, ref_function_executeCurrentCallback) set ErrorHandling_suppressErrorMessages = suppressErrors call popCallback_3933() return isLastCallbackSuccessful() endfunction function execute takes integer c returns nothing if not try(c) then call error("execute: thread has crashed. caused by:\n| - " + ErrorHandling_lastError) endif endfunction function removeKeyListener takes integer listener_1 returns nothing if KeyUtils_firstKeyListener == listener_1 then set KeyUtils_firstKeyListener = 0 endif call dispatch_EventListener_destroyEventListener(listener_1) endfunction function MGSpacey_onEnd takes integer this_1 returns nothing local integer clVar local integer clVar_1 if MGSpacey_listener[this_1] != 0 then call dispatch_EventListener_destroyEventListener(MGSpacey_listener[this_1]) endif if MGSpacey_klistener[this_1] != 0 then call removeKeyListener(MGSpacey_klistener[this_1]) endif set clVar = alloc_ForForceCallback_execute_MGSpacey_MGSpacey() call execute(clVar) set clVar_1 = alloc_ForForceCallback_execute_MGSpacey_MGSpacey_1765() call execute(clVar_1) endfunction function alloc_ForForceCallback_execute_MGWarlock_MGWarlock takes nothing returns integer local integer this_1 if ForForceCallback_firstFree == 0 then if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1 set this_1 = ForForceCallback_maxIndex set ForForceCallback_typeId[this_1] = 846 else call error("Out of memory: Could not create ForForceCallback_execute_MGWarlock_MGWarlock.") set this_1 = 0 endif else set ForForceCallback_firstFree = ForForceCallback_firstFree - 1 set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree] set ForForceCallback_typeId[this_1] = 846 endif return this_1 endfunction function MGWarlock_onEnd takes integer this_1 returns nothing local integer clVar = alloc_ForForceCallback_execute_MGWarlock_MGWarlock() call execute(clVar) call dispatch_CallbackPeriodic_destroyCallbackPeriodic(MGWarlock_cb[this_1]) endfunction function dispatch_Minigame_Minigame_Minigame_onEnd takes integer this_1 returns nothing if Minigame_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Minigame.onEnd") else call error("Called Minigame.onEnd on invalid object.") endif endif if Minigame_typeId[this_1] <= 1013 then if Minigame_typeId[this_1] <= 1012 then if Minigame_typeId[this_1] <= 1011 then call MGAgar_onEnd(this_1) else call MGRandKill_onEnd(this_1) endif else call MGSlide_onEnd(this_1) endif elseif Minigame_typeId[this_1] <= 1014 then call MGSpacey_onEnd(this_1) else call MGWarlock_onEnd(this_1) endif endfunction function Minigame_reset takes integer this_1 returns nothing local integer pd_1 local integer from local integer clVar if Minigame_tim[this_1] != null then call timer_release(Minigame_tim[this_1]) set Minigame_tim[this_1] = null call DestroyTimerDialog(Minigame_window[this_1]) set from = dispatch_LinkedList_LinkedList_LinkedList_staticItr(PlayerData_escaperPlayers) loop exitwhen not LLIterator_hasNext(from) set pd_1 = LLIterator_next(from) if PlayerData_escaper[pd_1] != 0 then if not Escaper_alive[PlayerData_escaper[pd_1]] then call dispatch_Escaper_Escaper_Escaper_revive(PlayerData_escaper[pd_1]) endif call dispatch_UnitEntity_Entity_UnitEntity_setPos(PlayerData_escaper[pd_1], vec2_toVec3(RegionData_LOUNGE_x, RegionData_LOUNGE_y), vec2_toVec3_return_y, vec2_toVec3_return_z) call Entity_setCurrentRegion(PlayerData_escaper[pd_1]) endif call SetCameraBoundsToRectForPlayerBJ(PlayerData_p[pd_1], gg_rct_Region_023) set clVar = alloc_CallbackSingle_doAfter_Minigame_Minigame_1619() call construct_CallbackSingle(clVar) set pd[clVar] = pd_1 call doAfter(1., clVar) if not Escaper_camlock[PlayerData_escaper[pd_1]] then call ResetToGameCameraForPlayer(PlayerData_p[pd_1], 1.) endif call printTimedToPlayer("Minigame ended!", 10., PlayerData_p[pd_1]) endloop call changeRevMode(0) call dispatch_Minigame_Minigame_Minigame_onEnd(this_1) call dispatch_MinigameTeleporter_MinigameTeleporter_MinigameTeleporter_reset(MinigameTeleporter_MINI_TP) endif endfunction function dispatch_Minigame_Minigame_Minigame_reset takes integer this_1 returns nothing if Minigame_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Minigame.reset") else call error("Called Minigame.reset on invalid object.") endif endif call Minigame_reset(this_1) endfunction function max_2_3588 takes real numbers_0, real numbers_1 returns real local real maxNumber = Real_REAL_MIN local real cond_result if numbers_0 > maxNumber then set cond_result = numbers_0 else set cond_result = maxNumber endif set maxNumber = cond_result if numbers_1 > maxNumber then set cond_result = numbers_1 else set cond_result = maxNumber endif set maxNumber = cond_result return maxNumber endfunction function alloc_FoodEntity takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1149 else call error("Out of memory: Could not create FoodEntity.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1149 endif return this_1 endfunction function FoodEntity_init takes integer this_1 returns nothing endfunction function FxEntity_init takes integer this_1 returns nothing set FxEntity_silent[this_1] = false endfunction function widget_addEffect takes widget this_1, string modelName, string attachment returns effect return AddSpecialEffectTarget(modelName, this_1, attachment) endfunction function Fx_setFx takes integer this_1, string newpath returns nothing if Fx_fx[this_1] != null then call effect_destr(Fx_fx[this_1]) endif if newpath == "" then set Fx_fx[this_1] = null else set Fx_fx[this_1] = widget_addEffect(Fx_dummy[this_1], newpath, "origin") endif set Fx_sfxPath[this_1] = newpath endfunction function dispatch_Fx_Fx_Fx_setFx takes integer this_1, string newpath returns nothing if Fx_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Fx.setFx") else call error("Called Fx.setFx on invalid object.") endif endif call Fx_setFx(this_1, newpath) endfunction function Fx_setOwner takes integer this_1, player p, boolean changeColor returns nothing if Fx_fx[this_1] != null then call effect_destr(Fx_fx[this_1]) set Fx_fx[this_1] = null endif call dispatch_Fx_Fx_Fx_setFx(this_1, Fx_sfxPath[this_1]) call unit_setOwner(Fx_dummy[this_1], p, changeColor) endfunction function dispatch_Fx_Fx_Fx_setOwner takes integer this_1, player p, boolean changeColor returns nothing if Fx_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Fx.setOwner") else call error("Called Fx.setOwner on invalid object.") endif endif call Fx_setOwner(this_1, p, changeColor) endfunction function alloc_Fx takes nothing returns integer local integer this_1 if Fx_firstFree == 0 then if Fx_maxIndex < JASS_MAX_ARRAY_SIZE then set Fx_maxIndex = Fx_maxIndex + 1 set this_1 = Fx_maxIndex set Fx_typeId[this_1] = 887 else call error("Out of memory: Could not create Fx.") set this_1 = 0 endif else set Fx_firstFree = Fx_firstFree - 1 set this_1 = Fx_nextFree[Fx_firstFree] set Fx_typeId[this_1] = 887 endif return this_1 endfunction function unit_setXY takes unit this_1, real pos_x_1, real pos_y_1 returns nothing local unit receiver = this_1 local unit receiver_1 call unit_setX(receiver, pos_x_1) set receiver_1 = receiver call unit_setY(receiver_1, pos_y_1) endfunction function createDummy takes real pos_x_1, real pos_y_1, real facing_radians returns unit local unit u_1 = createUnit(Basics_DUMMY_PLAYER, DummyRecycler_DUMMY_UNIT_ID, pos_x_1, pos_y_1, facing_radians) local unit receiver = u_1 local unit receiver_1 local unit receiver_2 local unit receiver_3 local unit receiver_4 local unit receiver_5 call unit_addAbility(receiver, Basics_HEIGHT_ENABLER) set receiver_1 = receiver call unit_removeAbility(receiver_1, Basics_HEIGHT_ENABLER) set receiver_2 = receiver_1 call unit_addAbility(receiver_2, DummyRecycler_ROOT_ENABLER) set receiver_3 = receiver_2 call unit_removeAbility(receiver_3, DummyRecycler_ROOT_ENABLER) set receiver_4 = receiver_3 call unit_setXY(receiver_4, pos_x_1, pos_y_1) set receiver_5 = receiver_4 call unit_setFacing(receiver_5, facing_radians) return u_1 endfunction function unitFromIndex takes integer index returns unit call dispatch_Table_Table_Table_saveFogState(TypeCasting_typecastdata, 0, ConvertFogState(index)) return dispatch_Table_Table_Table_loadUnit(TypeCasting_typecastdata, 0) endfunction function DummyRecycler_get takes real pos_x_1, real pos_y_1, real a_radians returns unit local integer angleIndex = ModuloInteger(real_round(ModuloReal(angle_degrees(a_radians), 360.) / DummyRecycler_ANGLE_DEGREE), DummyRecycler_DIFFERENT_ANGLES) local unit receiver local unit receiver_1 if dispatch_LinkedList_LinkedList_LinkedList_size(DummyRecycler_angleQueues[angleIndex]) > 0 then set receiver = unitFromIndex(dispatch_LinkedList_LinkedList_LinkedList_dequeue(DummyRecycler_angleQueues[angleIndex])) call unit_setXY(receiver, pos_x_1, pos_y_1) set receiver_1 = receiver call unit_unpause(receiver_1) return receiver_1 else return createDummy(pos_x_1, pos_y_1, a_radians) endif endfunction function Fx_init takes integer this_1 returns nothing local integer tuple_temp local integer tuple_temp_1 local integer tuple_temp_2 local integer tuple_temp_3 set Fx_dummy[this_1] = null set Fx_fx[this_1] = null set Fx_sfxPath[this_1] = "" set tuple_temp = 255 set tuple_temp_1 = 255 set tuple_temp_2 = 255 set tuple_temp_3 = 255 set Fx_col_red[this_1] = tuple_temp set Fx_col_green[this_1] = tuple_temp_1 set Fx_col_blue[this_1] = tuple_temp_2 set Fx_col_alpha[this_1] = tuple_temp_3 endfunction function Fx_getDummy takes integer this_1 returns unit return Fx_dummy[this_1] endfunction function dispatch_Fx_Fx_Fx_getDummy takes integer this_1 returns unit local unit Fx_Fx_getDummy_result if Fx_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Fx.getDummy") else call error("Called Fx.getDummy on invalid object.") endif endif set Fx_Fx_getDummy_result = Fx_getDummy(this_1) return Fx_Fx_getDummy_result endfunction function unit_setColor takes unit this_1, playercolor c returns nothing call SetUnitColor(this_1, c) endfunction function Fx_setPlayerColor takes integer this_1, playercolor pc returns nothing call unit_setColor(dispatch_Fx_Fx_Fx_getDummy(this_1), pc) endfunction function dispatch_Fx_Fx_Fx_setPlayerColor takes integer this_1, playercolor pc returns nothing if Fx_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Fx.setPlayerColor") else call error("Called Fx.setPlayerColor on invalid object.") endif endif call Fx_setPlayerColor(this_1, pc) endfunction function Fx_setZ takes integer this_1, real z returns nothing call unit_setFlyHeight(Fx_dummy[this_1], z, 0.) endfunction function dispatch_Fx_Fx_Fx_setZ takes integer this_1, real z returns nothing if Fx_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Fx.setZ") else call error("Called Fx.setZ on invalid object.") endif endif call Fx_setZ(this_1, z) endfunction function construct_Fx8 takes integer this_1, playercolor pc, real pos_x_1, real pos_y_1, real pos_z, real facing_radians, string fxpath returns nothing call Fx_init(this_1) set Fx_dummy[this_1] = DummyRecycler_get(vec3_toVec2(pos_x_1, pos_y_1, pos_z), vec3_toVec2_return_y, facing_radians) call dispatch_Fx_Fx_Fx_setFx(this_1, fxpath) call dispatch_Fx_Fx_Fx_setZ(this_1, pos_z) call dispatch_Fx_Fx_Fx_setPlayerColor(this_1, pc) endfunction function new_Fx_3673 takes playercolor pc, real pos_x_1, real pos_y_1, real pos_z, real facing_radians, string fxpath returns integer local integer this_1 = alloc_Fx() call construct_Fx8(this_1, pc, pos_x_1, pos_y_1, pos_z, facing_radians, fxpath) return this_1 endfunction function player_getColor takes player this_1 returns playercolor return GetPlayerColor(this_1) endfunction function FxEntity_setupFx takes integer this_1, real xyAngle_radians, string sfxpath returns nothing set FxEntity_fx[this_1] = new_Fx_3673(player_getColor(Entity_owner[this_1]), Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], xyAngle_radians, sfxpath) call dispatch_Fx_Fx_Fx_setOwner(FxEntity_fx[this_1], Entity_owner[this_1], true) endfunction function dispatch_FxEntity_FxEntity_FxEntity_setupFx takes integer this_1, real xyAngle_radians, string sfxpath returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling FxEntity.setupFx") else call error("Called FxEntity.setupFx on invalid object.") endif endif call FxEntity_setupFx(this_1, xyAngle_radians, sfxpath) endfunction function construct_FxEntity2 takes integer this_1, player owner, real pos_x_1, real pos_y_1, real pos_z, real xyAngle_radians, string sfxpath returns nothing call construct_Entity5(this_1, owner, pos_x_1, pos_y_1, pos_z, Entity_radius[this_1]) call FxEntity_init(this_1) call dispatch_FxEntity_FxEntity_FxEntity_setupFx(this_1, xyAngle_radians, sfxpath) endfunction function rect_randomPoint takes rect this_1 returns real set rect_randomPoint_return_x = GetRandomReal(rect_getMinX(this_1), rect_getMaxX(this_1)) set rect_randomPoint_return_y = GetRandomReal(rect_getMinY(this_1), rect_getMaxY(this_1)) return rect_randomPoint_return_x endfunction function int_toPlayerColor takes integer this_1 returns playercolor return Playercolor_LOOKUP[this_1] endfunction function string_toLowerCase takes string this_1 returns string return StringCase(this_1, false) endfunction function string_toPlayerColor takes string this_1 returns playercolor local playercolor pc = null local integer i = 0 local integer temp = Colors_MAX_PLAYER_COLORS loop exitwhen i > temp if string_toLowerCase(this_1) == Colors_PLAYER_COLOR_NAMES[i] then set pc = int_toPlayerColor(i) exitwhen true endif set i = i + 1 endloop return pc endfunction function construct_FoodEntity takes integer this_1 returns nothing call construct_FxEntity2(this_1, GameConstants_STAFF_PLAYER, vec2_toVec3(rect_randomPoint(gg_rct_agargamefoodspawn), rect_randomPoint_return_y), vec2_toVec3_return_y, vec2_toVec3_return_z, 0., "models\\tcBox.mdl") call FoodEntity_init(this_1) call dispatch_Fx_Fx_Fx_setPlayerColor(FxEntity_fx[this_1], string_toPlayerColor(Colors_PLAYER_COLOR_NAMES[GetRandomInt(0, 22)])) endfunction function new_FoodEntity takes nothing returns integer local integer this_1 = alloc_FoodEntity() call construct_FoodEntity(this_1) return this_1 endfunction function toHex takes integer number returns string local integer firstpart = number / 16 local integer secondpart = number - firstpart * 16 return Colors_hexs[firstpart] + Colors_hexs[secondpart] endfunction function color_toColorString takes integer this_red, integer this_green, integer this_blue returns string return "|cff" + toHex(this_red) + toHex(this_green) + toHex(this_blue) endfunction function player_getName_3914 takes player this_1, boolean removeHash returns string local string cond_result if removeHash then set cond_result = string_substring(GetPlayerName(this_1), 0, string_indexOf(GetPlayerName(this_1), "#")) else set cond_result = GetPlayerName(this_1) endif return cond_result endfunction function colorA_withoutAlpha takes integer this_red, integer this_green, integer this_blue, integer this_alpha returns integer set colorA_withoutAlpha_return_red = this_red set colorA_withoutAlpha_return_green = this_green set colorA_withoutAlpha_return_blue = this_blue return colorA_withoutAlpha_return_red endfunction function playercolor_toInt takes playercolor this_1 returns integer local integer value = 0 local integer i = 0 local integer temp = bj_MAX_PLAYER_SLOTS - 1 loop exitwhen i > temp if Playercolor_LOOKUP[i] == this_1 then set value = i exitwhen true endif set i = i + 1 endloop return value endfunction function playercolor_toColor takes playercolor this_1 returns integer local integer cond_result_red local integer cond_result_green local integer cond_result_blue local integer tempIndex local integer tuple_temp local integer tuple_temp_1 local integer tuple_temp_2 local integer tuple_temp_3 local integer tuple_temp_4 local integer tuple_temp_5 if playercolor_toInt(this_1) <= Colors_MAX_PLAYER_COLORS then set tempIndex = playercolor_toInt(this_1) set tuple_temp = Colors_PLAYER_COLORS_red[tempIndex] set tuple_temp_1 = Colors_PLAYER_COLORS_green[tempIndex] set tuple_temp_2 = Colors_PLAYER_COLORS_blue[tempIndex] set cond_result_red = tuple_temp set cond_result_green = tuple_temp_1 set cond_result_blue = tuple_temp_2 else set tuple_temp_3 = colorA_withoutAlpha(Colors_COLOR_BLACK_red, Colors_COLOR_BLACK_green, Colors_COLOR_BLACK_blue, Colors_COLOR_BLACK_alpha) set tuple_temp_4 = colorA_withoutAlpha_return_green set tuple_temp_5 = colorA_withoutAlpha_return_blue set cond_result_red = tuple_temp_3 set cond_result_green = tuple_temp_4 set cond_result_blue = tuple_temp_5 endif set playercolor_toColor_return_red = cond_result_red set playercolor_toColor_return_green = cond_result_green set playercolor_toColor_return_blue = cond_result_blue return playercolor_toColor_return_red endfunction function player_getNameColored takes player this_1, boolean removeHash returns string return color_toColorString(playercolor_toColor(player_getColor(this_1)), playercolor_toColor_return_green, playercolor_toColor_return_blue) + player_getName_3914(this_1, removeHash) + "|r" endfunction function unit_hide takes unit this_1 returns nothing call ShowUnit(this_1, false) endfunction function unit_pause takes unit this_1 returns nothing call PauseUnit(this_1, true) endfunction function vec3_distanceTo2dSq takes real this_x, real this_y, real this_z, real v_x, real v_y returns real return real_squared(v_x - this_x) + real_squared(v_y - this_y) endfunction function call_doPeriodicallyCounted_MGAgar_MGAgar takes integer this_1, integer cb_1 returns nothing local integer iterator local integer pd_1 local integer adata local integer iterator_1 local integer pd2 local integer bdata local unit receiver local unit receiver_1 local integer itr_1 local integer fe local integer from local integer iterator_2 local integer pdi if ModuloInteger(dispatch_CallbackCounted_ClosureTimers_CallbackCounted_getCount(cb_1), 11) == 0 then call dispatch_LinkedList_LinkedList_LinkedList_add_1(MGAgar_flist[this_2941[this_1]], new_FoodEntity()) endif if ModuloInteger(dispatch_CallbackCounted_ClosureTimers_CallbackCounted_getCount(cb_1), 7) == 0 then call dispatch_LinkedList_LinkedList_LinkedList_add_1(MGAgar_flist[this_2941[this_1]], new_FoodEntity()) endif set iterator = LinkedList_iterator(PlayerData_escaperPlayers) loop exitwhen not LLIterator_hasNext(iterator) set pd_1 = LLIterator_next(iterator) if PlayerData_escaper[pd_1] != 0 and Escaper_alive[PlayerData_escaper[pd_1]] then set adata = dispatch_HashMap_HashMap_HashMap_get(MGAgar_map, PlayerData_escaper[pd_1]) set iterator_1 = LinkedList_iterator(PlayerData_escaperPlayers) loop exitwhen not LLIterator_hasNext(iterator_1) set pd2 = LLIterator_next(iterator_1) set bdata = dispatch_HashMap_HashMap_HashMap_get(MGAgar_map, PlayerData_escaper[pd2]) if vec3_distanceTo2dSq(Entity_pos_x[PlayerData_escaper[pd2]], Entity_pos_y[PlayerData_escaper[pd2]], Entity_pos_z[PlayerData_escaper[pd2]], vec3_toVec2(dispatch_UnitEntity_Entity_UnitEntity_getPos(PlayerData_escaper[pd_1]), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z), vec3_toVec2_return_y) < real_squared(32. + 6. * AgarData_size[adata]) and AgarData_size[adata] > AgarData_size[bdata] + 1. then set AgarData_size[adata] = AgarData_size[adata] + AgarData_size[bdata] set Escaper_alive[PlayerData_escaper[pd2]] = false set receiver = UnitEntity_actor[PlayerData_escaper[pd2]] call unit_pause(receiver) set receiver_1 = receiver call unit_hide(receiver_1) call dispatch_HashMap_HashMap_HashMap_remove(MGAgar_map, PlayerData_escaper[pd2]) endif endloop call LLIterator_close(iterator_1) set itr_1 = dispatch_LinkedList_LinkedList_LinkedList_staticItr(MGAgar_flist[this_2941[this_1]]) set from = itr_1 loop exitwhen not LLIterator_hasNext(from) set fe = LLIterator_next(from) if ( not Entity_done[fe]) and vec3_distanceTo2dSq(Entity_pos_x[fe], Entity_pos_y[fe], Entity_pos_z[fe], vec3_toVec2(dispatch_UnitEntity_Entity_UnitEntity_getPos(PlayerData_escaper[pd_1]), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z), vec3_toVec2_return_y) < real_squared(32. + 6. * AgarData_size[adata]) then call cyc_RevivePoint_terminate(18, fe) call dispatch_LLIterator_LinkedList_LLIterator_remove(itr_1) set AgarData_size[adata] = AgarData_size[adata] + 1. endif endloop call unit_setScale(UnitEntity_actor[PlayerData_escaper[pd_1]], 0.2 + 0.15 * AgarData_size[adata]) call unit_setMoveSpeed(UnitEntity_actor[PlayerData_escaper[pd_1]], max_2_3588(75., 235. - 3. * AgarData_size[adata])) endif endloop call LLIterator_close(iterator) if dispatch_HashMap_HashMap_HashMap_size(MGAgar_map) == 1 then set iterator_2 = LinkedList_iterator(PlayerData_escaperPlayers) loop exitwhen not LLIterator_hasNext(iterator_2) set pdi = LLIterator_next(iterator_2) if PlayerData_escaper[pdi] != 0 then call dispatch_RegionData_RegionData_RegionData_hideRegion(Entity_getCurrentRegion(PlayerData_escaper[pdi]), PlayerData_p[pdi]) endif call printTimedToPlayer(player_getNameColored(PlayerData_p[pdi], true) + " has won!", 10., PlayerData_p[pdi]) endloop call LLIterator_close(iterator_2) call dispatch_CallbackCounted_destroyCallbackCounted(MGAgar_cbs[this_2941[this_1]]) set MGAgar_cbs[this_2941[this_1]] = 0 call dispatch_Minigame_Minigame_Minigame_reset(this_2941[this_1]) endif endfunction function createFText_2343 takes real pos_x_1, real pos_y_1, real pos_z, string text, real size, real lifespan, real vel_x, real vel_y returns integer return createFText_2346(pos_x_1, pos_y_1, pos_z, text, size, lifespan, vel_x, vel_y, Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha) endfunction function call_doPeriodicallyCounted_MGSlide_MGSlide takes integer this_1, integer cb_1 returns nothing local real cond_result_x local real cond_result_y local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 if MGSlide_goRight[this_2947[this_1]] then set tuple_temp = MGSlide_RIGHT_SPOT_x set tuple_temp_1 = MGSlide_RIGHT_SPOT_y set cond_result_x = tuple_temp set cond_result_y = tuple_temp_1 else set tuple_temp_2 = MGSlide_LEFT_SPOT_x set tuple_temp_3 = MGSlide_LEFT_SPOT_y set cond_result_x = tuple_temp_2 set cond_result_y = tuple_temp_3 endif call createFText_2343(vec2_toVec3(cond_result_x, cond_result_y), vec2_toVec3_return_y, vec2_toVec3_return_z, int_toString(dispatch_CallbackCounted_ClosureTimers_CallbackCounted_getCount(cb_1)), 12., 2., 0., 0.03) endfunction function dispatch_CallbackCounted_ClosureTimers_CallbackCounted_call takes integer this_1, integer cb_1 returns nothing if CallbackCounted_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling CallbackCounted.call") else call error("Called CallbackCounted.call on invalid object.") endif endif if CallbackCounted_typeId[this_1] <= 661 then if CallbackCounted_typeId[this_1] <= 660 then call call_doPeriodicallyCounted_ClosureTimers(this_1, cb_1) else call call_doPeriodicallyCounted_MGAgar_MGAgar(this_1, cb_1) endif else call call_doPeriodicallyCounted_MGSlide_MGSlide(this_1, cb_1) endif endfunction function CallbackCounted_callAndCount takes integer this_1 returns nothing if CallbackCounted_count[this_1] > 0 then set CallbackCounted_count[this_1] = CallbackCounted_count[this_1] - 1 call dispatch_CallbackCounted_ClosureTimers_CallbackCounted_call(this_1, this_1) else call dispatch_CallbackCounted_destroyCallbackCounted(this_1) endif endfunction function dispatch_CallbackCounted_ClosureTimers_CallbackCounted_callAndCount takes integer this_1 returns nothing if CallbackCounted_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling CallbackCounted.callAndCount") else call error("Called CallbackCounted.callAndCount on invalid object.") endif endif call CallbackCounted_callAndCount(this_1) endfunction function CallbackCounted_staticCallback takes nothing returns nothing call dispatch_CallbackCounted_ClosureTimers_CallbackCounted_callAndCount(timer_getData(GetExpiredTimer())) endfunction function alloc_SmallRandomKiller takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1185 else call error("Out of memory: Could not create SmallRandomKiller.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1185 endif return this_1 endfunction function SmallRandomKiller_init takes integer this_1 returns nothing endfunction function construct_EscaperSensorSetup_Sensor takes integer this_1 returns nothing endfunction function EscaperSensorSetup_init takes integer this_1 returns nothing set EscaperSensorSetup_Sensor_inRangeTrig[this_1] = null set EscaperSensorSetup_Sensor_actorRef[this_1] = null set EscaperSensorSetup_sensorHeight[this_1] = 32. call construct_EscaperSensorSetup_Sensor(this_1) endfunction function alloc_SensorListener_addSensorListener_EscaperSensorSetup_EscaperSensor_1888 takes nothing returns integer local integer this_1 if SensorListener_firstFree == 0 then if SensorListener_maxIndex < JASS_MAX_ARRAY_SIZE then set SensorListener_maxIndex = SensorListener_maxIndex + 1 set this_1 = SensorListener_maxIndex set SensorListener_typeId[this_1] = 1121 else call error("Out of memory: Could not create SensorListener_addSensorListener_EscaperSensorSetup_EscaperSensor.") set this_1 = 0 endif else set SensorListener_firstFree = SensorListener_firstFree - 1 set this_1 = SensorListener_nextFree[SensorListener_firstFree] set SensorListener_typeId[this_1] = 1121 endif return this_1 endfunction function SensorListener_init takes integer this_1 returns nothing endfunction function construct_SensorListener takes integer this_1 returns nothing call SensorListener_init(this_1) endfunction function Log_warn takes string msg returns nothing call printLog_3942(Player_localPlayer, 3, msg) endfunction function eventid_isKeyboardEvent takes eventid this_1 returns boolean local integer eventId = handle_getHandleId(this_1) return (eventId >= 261 and eventId <= 268) or eventId == 17 endfunction function eventid_isMouseEvent takes eventid this_1 returns boolean local integer eventId = handle_getHandleId(this_1) return eventId >= 305 and eventId <= 307 endfunction function eventid_isPlayerunitEvent takes eventid this_1 returns boolean local integer eventId = handle_getHandleId(this_1) return (eventId >= 18 and eventId <= 51) or (eventId >= 269 and eventId <= 277) or eventId == 315 or eventId == 308 endfunction function trigger_addAction takes trigger this_1, code actionFunc returns triggeraction return TriggerAddAction(this_1, actionFunc) endfunction function trigger_addCondition takes trigger this_1, boolexpr condition_1 returns triggercondition return TriggerAddCondition(this_1, condition_1) endfunction function trigger_registerPlayerUnitEvent takes trigger this_1, player whichPlayer, playerunitevent whichPlayerUnitEvent, boolexpr filter returns event return TriggerRegisterPlayerUnitEvent(this_1, whichPlayer, whichPlayerUnitEvent, filter) endfunction function registerPlayerUnitEvent_3994 takes playerunitevent p, code filter, code condition_1, code action_1 returns nothing local integer hid = handle_getHandleId(p) local integer k local filterfunc cond_result local trigger temp local player temp_1 local playerunitevent temp_2 if RegisterEvents_t[hid] == null then set RegisterEvents_t[hid] = CreateTrigger() set k = bj_MAX_PLAYER_SLOTS - 1 loop exitwhen k < 0 set temp = RegisterEvents_t[hid] set temp_1 = Player_players[k] set temp_2 = p if filter != null then set cond_result = Filter(filter) else set cond_result = null endif call trigger_registerPlayerUnitEvent(temp, temp_1, temp_2, cond_result) set k = k - 1 endloop endif if condition_1 != null then call trigger_addCondition(RegisterEvents_t[hid], Filter(condition_1)) endif if action_1 != null then call trigger_addAction(RegisterEvents_t[hid], action_1) endif endfunction function registerPlayerUnitEvent takes playerunitevent p, code c returns nothing call registerPlayerUnitEvent_3994(p, null, c, null) endfunction function trigger_registerPlayerEvent takes trigger this_1, player whichPlayer, playerevent whichPlayerEvent returns event return TriggerRegisterPlayerEvent(this_1, whichPlayer, whichPlayerEvent) endfunction function registerEventId takes eventid evnt returns integer local integer eventId = handle_getHandleId(evnt) local integer i local integer temp local trigger receiver local trigger receiver_1 local trigger receiver_2 set ClosureEvents_eventTypeCounter = ClosureEvents_eventTypeCounter + 1 set ClosureEvents_eventidToIndex[eventId] = ClosureEvents_eventTypeCounter if eventid_isPlayerunitEvent(evnt) then call registerPlayerUnitEvent(ConvertPlayerUnitEvent(eventId), ref_function_EventListener_generalEventCallback) elseif evnt != EVENT_UNIT_DAMAGED and evnt != EVENT_PLAYER_LEAVE and evnt != ClosureEvents_EVENT_PLAYER_CHAT_FILTER and ( not eventid_isKeyboardEvent(evnt)) and ( not eventid_isMouseEvent(evnt)) then call error("registering handleid: " + int_toString(eventId) + " non-playerunitevent. Except EVENT_UNIT_DAMAGED and EVENT_PLAYER_LEAVE these are not supported right now.") endif if eventid_isMouseEvent(evnt) and ( not EventListener_useMouseEvents) then set EventListener_useMouseEvents = true set i = 0 set temp = bj_MAX_PLAYERS - 1 loop exitwhen i > temp set receiver = ClosureEvents_keyTrig call trigger_registerPlayerEvent(receiver, Player_players[i], EVENT_PLAYER_MOUSE_UP) set receiver_1 = receiver call trigger_registerPlayerEvent(receiver_1, Player_players[i], EVENT_PLAYER_MOUSE_DOWN) set receiver_2 = receiver_1 call trigger_registerPlayerEvent(receiver_2, Player_players[i], EVENT_PLAYER_MOUSE_MOVE) set i = i + 1 endloop endif return ClosureEvents_eventTypeCounter endfunction function eventid_toIntId takes eventid this_1 returns integer local integer id = ClosureEvents_eventidToIndex[handle_getHandleId(this_1)] if id == 0 then set id = registerEventId(this_1) endif return id endfunction function EventListener_add_435 takes unit u_1, eventid eventId, integer listener_1 returns integer local integer uid = unit_getIndex(u_1) if uid <= 0 then call Log_warn("Attempting to register event listener for a unit that is not indexed by UnitIndexer. " + "If this happens during initialization, consider registering the EventListener in a callback to nullTimer() instead.") return listener_1 endif set EventListener_eventId[listener_1] = eventid_toIntId(eventId) set EventListener_uid[listener_1] = uid if EventListener_unitListenersFirsts[uid] != 0 then set EventListener_prev[EventListener_unitListenersFirsts[uid]] = listener_1 set EventListener_next[listener_1] = EventListener_unitListenersFirsts[uid] endif set EventListener_unitListenersFirsts[uid] = listener_1 return listener_1 endfunction function SetupObject_init takes integer this_1 returns nothing set SetupObject_time[this_1] = GetRandomReal(30., 45.) set SetupObject_enabled[this_1] = true endfunction function alloc_EventListener_add_SetupObject_SetupObject takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 812 else call error("Out of memory: Could not create EventListener_add_SetupObject_SetupObject.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 812 endif return this_1 endfunction function alloc_EventListener_add_SetupObject_SetupObject_1729 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 813 else call error("Out of memory: Could not create EventListener_add_SetupObject_SetupObject.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 813 endif return this_1 endfunction function alloc_EventListener_add_SetupObject_SetupObject_1730 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 814 else call error("Out of memory: Could not create EventListener_add_SetupObject_SetupObject.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 814 endif return this_1 endfunction function EventListener_init takes integer this_1 returns nothing set EventListener_eventId[this_1] = 0 set EventListener_uid[this_1] = -1 set EventListener_next[this_1] = 0 set EventListener_prev[this_1] = 0 endfunction function construct_EventListener takes integer this_1 returns nothing call EventListener_init(this_1) endfunction function UnitEntity_init takes integer this_1 returns nothing set UnitEntity_actor[this_1] = null endfunction function unit_setXYZReal takes unit this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing call SetUnitX(this_1, pos_x_1) call SetUnitY(this_1, pos_y_1) call SetUnitFlyHeight(this_1, pos_z - vec3_getTerrainZ(pos_x_1, pos_y_1, pos_z), 0.) endfunction function UnitEntity_setupUnitEntity takes integer this_1, unit actor returns nothing local unit receiver local unit receiver_1 local unit receiver_2 local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 set UnitEntity_actor[this_1] = actor call dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1) if not unit_isAlive(actor) then call cyc_RevivePoint_terminate(18, this_1) call error("Trying to assign entity to unit that is not alive") elseif unit_getEntity(actor) != 0 then call cyc_RevivePoint_terminate(18, this_1) call error("Trying to assign entity to unit that already has an entity") endif set receiver = actor call unit_setEntity(receiver, this_1) set receiver_1 = receiver call unit_addAbility(receiver_1, Basics_HEIGHT_ENABLER) set receiver_2 = receiver_1 call unit_removeAbility(receiver_2, Basics_HEIGHT_ENABLER) if Frentity_DYNAMIC_Z then set tuple_temp = unit_getDynamicPos(actor) set tuple_temp_1 = unit_getDynamicPos_return_y set tuple_temp_2 = unit_getDynamicPos_return_z set Entity_pos_x[this_1] = tuple_temp set Entity_pos_y[this_1] = tuple_temp_1 set Entity_pos_z[this_1] = tuple_temp_2 call unit_setXYZReal(actor, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) else set tuple_temp_3 = unit_getPos3Fly(actor) set tuple_temp_4 = unit_getPos3Fly_return_y set tuple_temp_5 = unit_getPos3Fly_return_z set Entity_pos_x[this_1] = tuple_temp_3 set Entity_pos_y[this_1] = tuple_temp_4 set Entity_pos_z[this_1] = tuple_temp_5 call unit_setXYZ(actor, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) endif endfunction function dispatch_UnitEntity_Entity_UnitEntity_setupUnitEntity takes integer this_1, unit actor returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling UnitEntity.setupUnitEntity") else call error("Called UnitEntity.setupUnitEntity on invalid object.") endif endif call UnitEntity_setupUnitEntity(this_1, actor) endfunction function construct_UnitEntity takes integer this_1, unit actor returns nothing call construct_Entity5(this_1, unit_getOwner(actor), unit_getDynamicPos(actor), unit_getDynamicPos_return_y, unit_getDynamicPos_return_z, 0.) call UnitEntity_init(this_1) call dispatch_UnitEntity_Entity_UnitEntity_setupUnitEntity(this_1, actor) endfunction function unit_setPathing takes unit this_1, boolean value returns nothing call SetUnitPathing(this_1, value) endfunction function construct_SetupObject takes integer this_1, unit actor, unit setup, real radius returns nothing local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local unit receiver_4 local unit receiver_5 local unit receiver_6 local unit receiver_7 local unit receiver_8 local unit receiver_9 local integer clVar local integer clVar_1 local integer clVar_2 local unit temp local playerunitevent temp_1 local unit temp_2 local playerunitevent temp_3 local unit temp_4 local playerunitevent temp_5 call construct_UnitEntity(this_1, actor) call SetupObject_init(this_1) set SetupObject_setup[this_1] = setup set Entity_radius[this_1] = radius set ClosureEvents_config_fire[unit_getIndex(actor)] = true set receiver = actor call unit_setEntity(receiver, this_1) set receiver_1 = receiver call unit_addAbility(receiver_1, Basics_LOCUST_ID) set receiver_2 = receiver_1 call unit_removeAbility(receiver_2, BuilderConstants_REMOVE_OBJECT_ID) set receiver_3 = receiver_2 call unit_setPathing(receiver_3, true) set receiver_4 = setup call unit_setEntity(receiver_4, this_1) set receiver_5 = receiver_4 call unit_setXY(receiver_5, unit_getPos(actor), unit_getPos_return_y) set receiver_6 = receiver_5 call unit_addAbility(receiver_6, Basics_GHOST_INVIS_ID) set receiver_7 = receiver_6 call unit_addAbility(receiver_7, BuilderConstants_REMOVE_OBJECT_ID) set receiver_8 = receiver_7 call unit_addAbility(receiver_8, Basics_HEIGHT_ENABLER) set receiver_9 = receiver_8 call unit_removeAbility(receiver_9, Basics_HEIGHT_ENABLER) call Entity_setCurrentRegion(this_1) set temp = setup set temp_1 = EVENT_PLAYER_UNIT_ISSUED_ORDER set clVar = alloc_EventListener_add_SetupObject_SetupObject() call construct_EventListener(clVar) set this_2909[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) set temp_2 = setup set temp_3 = EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER set clVar_1 = alloc_EventListener_add_SetupObject_SetupObject_1729() call construct_EventListener(clVar_1) set this_2910[clVar_1] = this_1 call EventListener_add_435(temp_2, temp_3, clVar_1) set temp_4 = setup set temp_5 = EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER set clVar_2 = alloc_EventListener_add_SetupObject_SetupObject_1730() call construct_EventListener(clVar_2) set this_2911[clVar_2] = this_1 call EventListener_add_435(temp_4, temp_5, clVar_2) endfunction function createUnit_2354 takes player p, integer unitId, real pos_x_1, real pos_y_1, real pos_z, real facing_radians returns unit local unit u_1 = CreateUnit(p, unitId, pos_x_1, pos_y_1, angle_degrees(facing_radians)) call unit_setFlyHeight(u_1, pos_z, 0.) return u_1 endfunction function FxEntity_getDummy takes integer this_1 returns unit return dispatch_Fx_Fx_Fx_getDummy(FxEntity_fx[this_1]) endfunction function dispatch_FxEntity_FxEntity_FxEntity_getDummy takes integer this_1 returns unit local unit FxEntity_FxEntity_getDummy_result if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling FxEntity.getDummy") else call error("Called FxEntity.getDummy on invalid object.") endif endif set FxEntity_FxEntity_getDummy_result = FxEntity_getDummy(this_1) return FxEntity_FxEntity_getDummy_result endfunction function hashtable_saveTriggerHandle takes hashtable this_1, integer parentKey, integer childKey, trigger value returns nothing call SaveTriggerHandle(this_1, parentKey, childKey, value) endfunction function Table_saveTrigger takes integer this_1, integer parentKey, trigger value returns nothing call hashtable_saveTriggerHandle(Table_ht, this_1, parentKey, value) endfunction function dispatch_Table_Table_Table_saveTrigger takes integer this_1, integer parentKey, trigger value returns nothing if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Table.saveTrigger") else call error("Called Table.saveTrigger on invalid object.") endif endif call Table_saveTrigger(this_1, parentKey, value) endfunction function hashtable_saveUnitHandle takes hashtable this_1, integer parentKey, integer childKey, unit value returns nothing call SaveUnitHandle(this_1, parentKey, childKey, value) endfunction function Table_saveUnit takes integer this_1, integer parentKey, unit value returns nothing call hashtable_saveUnitHandle(Table_ht, this_1, parentKey, value) endfunction function dispatch_Table_Table_Table_saveUnit takes integer this_1, integer parentKey, unit value returns nothing if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Table.saveUnit") else call error("Called Table.saveUnit on invalid object.") endif endif call Table_saveUnit(this_1, parentKey, value) endfunction function trigger_registerUnitInRangeSource takes trigger this_1, unit whichUnit, real range, boolexpr filter returns event local integer receiver = EventHelper_triggerData local integer receiver_1 call dispatch_Table_Table_Table_saveUnit(receiver, handle_getHandleId(this_1), whichUnit) set receiver_1 = receiver call dispatch_Table_Table_Table_saveTrigger(receiver_1, handle_getHandleId(whichUnit), this_1) return TriggerRegisterUnitInRange(this_1, whichUnit, range, filter) endfunction function EscaperSensorSetup_Sensor_addSensorListener takes integer this_1, integer e_1, integer listener_1 returns nothing local integer instanceOfTemp local integer instanceOfTemp_1 if listener_1 == 0 then call error("Trying to add null listener") endif set EscaperSensorSetup_Sensor_inRangeTrig[this_1] = CreateTrigger() set instanceOfTemp = Serializable_typeId[e_1] if instanceOfTemp >= 1159 and instanceOfTemp <= 1226 then set EscaperSensorSetup_Sensor_actorRef[this_1] = UnitEntity_actor[e_1] else set instanceOfTemp_1 = Serializable_typeId[e_1] if instanceOfTemp_1 >= 1148 and instanceOfTemp_1 <= 1150 then set EscaperSensorSetup_Sensor_actorRef[this_1] = dispatch_FxEntity_FxEntity_FxEntity_getDummy(e_1) endif endif call trigger_registerUnitInRangeSource(EscaperSensorSetup_Sensor_inRangeTrig[this_1], EscaperSensorSetup_Sensor_actorRef[this_1], Entity_radius[e_1], null) call dispatch_HashMap_HashMap_HashMap_put(EscaperSensorSetup_Sensor_sensorListeners, triggerToIndex(EscaperSensorSetup_Sensor_inRangeTrig[this_1]), listener_1) call trigger_addAction(EscaperSensorSetup_Sensor_inRangeTrig[this_1], ref_function_code__addAction_Sensor_EscaperSensorSetup_EscaperSensor) endfunction function dispatch_EscaperSensorSetup_EscaperSensor_EscaperSensorSetup_Sensor_addSensorListener takes integer this_1, integer e_1, integer listener_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling EscaperSensorSetup.addSensorListener") else call error("Called EscaperSensorSetup.addSensorListener on invalid object.") endif endif call EscaperSensorSetup_Sensor_addSensorListener(this_1, e_1, listener_1) endfunction function construct_EscaperSensorSetup3 takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, player owner, integer unitId, real radius, real sensorHeight returns nothing local integer temp = this_1 local unit receiver = createUnit_2354(owner, unitId, pos_x_1, pos_y_1, pos_z, 0.) local integer clVar local integer temp_1 local integer temp_2 call unit_addAbility(receiver, Basics_LOCUST_ID) call construct_SetupObject(temp, receiver, createUnit_2354(owner, unitId, pos_x_1, pos_y_1, pos_z, 0.), radius) call EscaperSensorSetup_init(this_1) set EscaperSensorSetup_sensorHeight[this_1] = sensorHeight set temp_1 = this_1 set temp_2 = this_1 set clVar = alloc_SensorListener_addSensorListener_EscaperSensorSetup_EscaperSensor_1888() call construct_SensorListener(clVar) set this_2979[clVar] = this_1 call dispatch_EscaperSensorSetup_EscaperSensor_EscaperSensorSetup_Sensor_addSensorListener(temp_1, temp_2, clVar) endfunction function SmallRandomKiller_setupRandKiller takes integer this_1 returns nothing call unit_removeAbility(UnitEntity_actor[this_1], AbilityIds_wander) endfunction function dispatch_SmallRandomKiller_EscaperKillers_SmallRandomKiller_setupRandKiller takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SmallRandomKiller.setupRandKiller") else call error("Called SmallRandomKiller.setupRandKiller on invalid object.") endif endif call SmallRandomKiller_setupRandKiller(this_1) endfunction function construct_SmallRandomKiller2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing call construct_EscaperSensorSetup3(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, owner, EscaperKillers_SMALL_RANDOM_KILLER_ID, EscaperKillers_COLL_SIZE_SRK, EscaperKillers_COLL_SIZE_SRK) call SmallRandomKiller_init(this_1) call dispatch_SmallRandomKiller_EscaperKillers_SmallRandomKiller_setupRandKiller(this_1) endfunction function new_SmallRandomKiller_3746 takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_SmallRandomKiller() call construct_SmallRandomKiller2(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function call_doPeriodically_MGRandKill_MGRandKill takes integer this_1, integer cb_1 returns nothing call new_SmallRandomKiller_3746(MGRandKill_spawn_x[this_2943[this_1]], MGRandKill_spawn_y[this_2943[this_1]], GameConstants_STAFF_PLAYER) endfunction function alloc_BigRandomKiller takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1177 else call error("Out of memory: Could not create BigRandomKiller.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1177 endif return this_1 endfunction function BigRandomKiller_init takes integer this_1 returns nothing endfunction function BigRandomKiller_setupRandKiller takes integer this_1 returns nothing call unit_removeAbility(UnitEntity_actor[this_1], AbilityIds_wander) endfunction function dispatch_BigRandomKiller_EscaperKillers_BigRandomKiller_setupRandKiller takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BigRandomKiller.setupRandKiller") else call error("Called BigRandomKiller.setupRandKiller on invalid object.") endif endif call BigRandomKiller_setupRandKiller(this_1) endfunction function construct_BigRandomKiller2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing call construct_EscaperSensorSetup3(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, owner, EscaperKillers_BIG_RANDOM_KILLER_ID, EscaperKillers_COLL_SIZE_BRK, EscaperKillers_COLL_SIZE_BRK) call BigRandomKiller_init(this_1) call dispatch_BigRandomKiller_EscaperKillers_BigRandomKiller_setupRandKiller(this_1) endfunction function new_BigRandomKiller_3623 takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_BigRandomKiller() call construct_BigRandomKiller2(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function call_doPeriodically_MGRandKill_MGRandKill_2005 takes integer this_1, integer cb_1 returns nothing call new_BigRandomKiller_3623(MGRandKill_spawn_x[this_2944[this_1]], MGRandKill_spawn_y[this_2944[this_1]], GameConstants_STAFF_PLAYER) endfunction function MGRandKill_getGameRect takes integer this_1 returns rect return gg_rct_coingamearea endfunction function dispatch_MGRandKill_MGRandKill_MGRandKill_getGameRect takes integer this_1 returns rect local rect MGRandKill_MGRandKill_getGameRect_result if Minigame_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling MGRandKill.getGameRect") else call error("Called MGRandKill.getGameRect on invalid object.") endif endif set MGRandKill_MGRandKill_getGameRect_result = MGRandKill_getGameRect(this_1) return MGRandKill_MGRandKill_getGameRect_result endfunction function alloc_Coin takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1155 else call error("Out of memory: Could not create Coin.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1155 endif return this_1 endfunction function Coin_init takes integer this_1 returns nothing endfunction function ItemObject_init takes integer this_1 returns nothing set ItemObject_holder[this_1] = 0 endfunction function ItemEntity_init takes integer this_1 returns nothing set ItemEntity_actor[this_1] = null endfunction function construct_Entity3 takes integer this_1, player owner, real pos_x_1, real pos_y_1 returns nothing call Entity_init(this_1) call dispatch_Entity_Entity_Entity_setupEntity(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, Vectors_ZERO3_x, Vectors_ZERO3_y, Vectors_ZERO3_z, owner, 0.) endfunction function construct_ItemEntity2 takes integer this_1, item actor, player owner returns nothing call construct_Entity3(this_1, owner, item_getPos(actor), item_getPos_return_y) call ItemEntity_init(this_1) set ItemEntity_actor[this_1] = actor call item_setEntity(actor, this_1) endfunction function alloc_ItemEntityBridge takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1168 else call error("Out of memory: Could not create ItemEntityBridge.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1168 endif return this_1 endfunction function ItemEntityBridge_init takes integer this_1 returns nothing endfunction function construct_ItemEntityBridge takes integer this_1, unit setup, integer obj_1, real pos_x_1, real pos_y_1 returns nothing local unit receiver local unit receiver_1 call construct_UnitEntity(this_1, setup) call ItemEntityBridge_init(this_1) set ItemEntityBridge_obj[this_1] = obj_1 set receiver = UnitEntity_actor[this_1] call unit_addAbility(receiver, Basics_GHOST_VIS_ID) set receiver_1 = receiver call unit_setXY(receiver_1, pos_x_1, pos_y_1) endfunction function new_ItemEntityBridge takes unit setup, integer obj_1, real pos_x_1, real pos_y_1 returns integer local integer this_1 = alloc_ItemEntityBridge() call construct_ItemEntityBridge(this_1, setup, obj_1, pos_x_1, pos_y_1) return this_1 endfunction function construct_ItemObject takes integer this_1, real pos_x_1, real pos_y_1, item i, unit setup returns nothing call construct_ItemEntity2(this_1, i, unit_getOwner(setup)) call ItemObject_init(this_1) set ItemObject_setup[this_1] = new_ItemEntityBridge(setup, this_1, pos_x_1, pos_y_1) endfunction function construct_Coin takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing call construct_ItemObject(this_1, pos_x_1, pos_y_1, CreateItem(BuilderConstants_COIN_ID, pos_x_1, pos_y_1), CreateUnit(owner, Coin_COIN_DUMMY_ID, pos_x_1, pos_y_1, 0.)) call Coin_init(this_1) endfunction function new_Coin takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_Coin() call construct_Coin(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function call_doPeriodically_MGRandKill_MGRandKill_2006 takes integer this_1, integer cb_1 returns nothing local integer i = 0 local integer temp = real_toInt(timer_getElapsed(Minigame_tim[this_2945[this_1]]) / 20. + 2.) loop exitwhen i > temp call new_Coin(rect_randomPoint(dispatch_MGRandKill_MGRandKill_MGRandKill_getGameRect(this_2945[this_1])), rect_randomPoint_return_y, GameConstants_STAFF_PLAYER) set i = i + 1 endloop endfunction function alloc_CallbackCounted_doPeriodicallyCounted_MGSlide_MGSlide takes nothing returns integer local integer this_1 if CallbackCounted_firstFree == 0 then if CallbackCounted_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackCounted_maxIndex = CallbackCounted_maxIndex + 1 set this_1 = CallbackCounted_maxIndex set CallbackCounted_typeId[this_1] = 662 else call error("Out of memory: Could not create CallbackCounted_doPeriodicallyCounted_MGSlide_MGSlide.") set this_1 = 0 endif else set CallbackCounted_firstFree = CallbackCounted_firstFree - 1 set this_1 = CallbackCounted_nextFree[CallbackCounted_firstFree] set CallbackCounted_typeId[this_1] = 662 endif return this_1 endfunction function alloc_ForGroupCallback_forUnitsInRect_MGSlide_MGSlide takes nothing returns integer local integer this_1 if ForGroupCallback_firstFree == 0 then if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1 set this_1 = ForGroupCallback_maxIndex set ForGroupCallback_typeId[this_1] = 874 else call error("Out of memory: Could not create ForGroupCallback_forUnitsInRect_MGSlide_MGSlide.") set this_1 = 0 endif else set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1 set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree] set ForGroupCallback_typeId[this_1] = 874 endif return this_1 endfunction function CallbackCounted_init takes integer this_1 returns nothing set CallbackCounted_count[this_1] = 0 set CallbackCounted_maxCount[this_1] = 0 endfunction function construct_CallbackCounted takes integer this_1 returns nothing call CallbackCounted_init(this_1) endfunction function timer_startPeriodic takes timer this_1, real time, code timerCallBack returns nothing call TimerStart(this_1, time, true, timerCallBack) endfunction function CallbackCounted_start takes integer this_1, timer whichTimer, real time, integer callAmount returns nothing local timer receiver local timer receiver_1 set CallbackCounted_count[this_1] = callAmount set CallbackCounted_maxCount[this_1] = callAmount set receiver = whichTimer call timer_setData(receiver, this_1) set receiver_1 = receiver call timer_startPeriodic(receiver_1, time, ref_function_CallbackCounted_staticCallback) set CallbackCounted_t[this_1] = receiver_1 endfunction function dispatch_CallbackCounted_ClosureTimers_CallbackCounted_start takes integer this_1, timer whichTimer, real time, integer callAmount returns nothing if CallbackCounted_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling CallbackCounted.start") else call error("Called CallbackCounted.start on invalid object.") endif endif call CallbackCounted_start(this_1, whichTimer, time, callAmount) endfunction function timer_doPeriodicallyCounted takes timer this_1, real time, integer callAmount, integer cb_1 returns integer call dispatch_CallbackCounted_ClosureTimers_CallbackCounted_start(cb_1, this_1, time, callAmount) return cb_1 endfunction function doPeriodicallyCounted takes real time, integer callAmount, integer cb_1 returns integer return timer_doPeriodicallyCounted(getTimer(), time, callAmount, cb_1) endfunction function alloc_BigObstacle takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1217 else call error("Out of memory: Could not create BigObstacle.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1217 endif return this_1 endfunction function BigObstacle_init takes integer this_1 returns nothing endfunction function StaticEscaperSensorSetup_init takes integer this_1 returns nothing set StaticEscaperSensorSetup_sensorHeight[this_1] = 32. endfunction function StaticSetupObject_init takes integer this_1 returns nothing set StaticSetupObject_inRangeTrig[this_1] = null endfunction function Entity_DupletListModule_addToInactive takes integer this_1 returns nothing set Entity_DupletListModule_inactiveSize = Entity_DupletListModule_inactiveSize + 1 if Entity_DupletListModule_inactiveSize == 1 then set Entity_DupletListModule_firstInactive = this_1 set Entity_DupletListModule_prev[this_1] = 0 else set Entity_DupletListModule_prev[this_1] = Entity_DupletListModule_lastInactive set Entity_DupletListModule_next[Entity_DupletListModule_lastInactive] = this_1 set Entity_DupletListModule_prev[Entity_DupletListModule_firstInactive] = this_1 endif set Entity_DupletListModule_next[this_1] = 0 set Entity_DupletListModule_lastInactive = this_1 endfunction function dispatch_Entity_Entity_Entity_DupletListModule_addToInactive takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Entity.addToInactive") else call error("Called Entity.addToInactive on invalid object.") endif endif call Entity_DupletListModule_addToInactive(this_1) endfunction function Entity_DupletListModule_deactivate takes integer this_1 returns nothing if Entity_DupletListModule_active[this_1] then set Entity_DupletListModule_active[this_1] = false call dispatch_Entity_Entity_Entity_DupletListModule_removeFromActive(this_1) call dispatch_Entity_Entity_Entity_DupletListModule_addToInactive(this_1) endif endfunction function Texter_hide takes integer this_1 returns nothing call texttag_setVisibility(FText_tt[Texter_text[this_1]], false) set Texter_hidden[this_1] = true call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "Hidden", 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) endfunction function dispatch_Texter_Texter_Texter_hide takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Texter.hide") else call error("Called Texter.hide on invalid object.") endif endif call Texter_hide(this_1) endfunction function Texter_deactivate takes integer this_1 returns nothing call Entity_DupletListModule_deactivate(this_1) call dispatch_Texter_Texter_Texter_hide(this_1) endfunction function dispatch_Entity_Entity_Entity_DupletListModule_deactivate takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Entity.deactivate") else call error("Called Entity.deactivate on invalid object.") endif endif if Serializable_typeId[this_1] <= 1205 then if Serializable_typeId[this_1] <= 1204 then call Entity_DupletListModule_deactivate(this_1) else call Texter_deactivate(this_1) endif else call Entity_DupletListModule_deactivate(this_1) endif endfunction function trigger_registerUnitInRangeSource_4122 takes trigger this_1, unit whichUnit, real range returns event return trigger_registerUnitInRangeSource(this_1, whichUnit, range, null) endfunction function unit_setVertexColor_4202 takes unit this_1, integer col_red, integer col_green, integer col_blue, integer col_alpha returns nothing call SetUnitVertexColor(this_1, col_red, col_green, col_blue, col_alpha) endfunction function construct_StaticSetupObject takes integer this_1, unit u_1, unit setup, real radius, code c returns nothing local unit receiver local unit receiver_1 local unit receiver_2 local trigger receiver_3 local trigger receiver_4 call construct_UnitEntity(this_1, u_1) call StaticSetupObject_init(this_1) call dispatch_Entity_Entity_Entity_DupletListModule_deactivate(this_1) call unit_addAbility(UnitEntity_actor[this_1], Basics_LOCUST_ID) set receiver = setup call unit_addAbility(receiver, Basics_GHOST_INVIS_ID) set receiver_1 = receiver call unit_addAbility(receiver_1, BuilderConstants_REMOVE_OBJECT_ID) set receiver_2 = receiver_1 call unit_setVertexColor_4202(receiver_2, 255, 255, 255, 155) set StaticSetupObject_setup[this_1] = setup if radius > 0. then set receiver_3 = CreateTrigger() call trigger_registerUnitInRangeSource_4122(receiver_3, setup, radius) set receiver_4 = receiver_3 call trigger_addAction(receiver_4, c) set StaticSetupObject_inRangeTrig[this_1] = receiver_4 endif call unit_setEntity(setup, this_1) endfunction function construct_StaticEscaperSensorSetup3 takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, player owner, integer unitId, real radius, real sensorHeight returns nothing local integer temp = this_1 local unit receiver = createUnit_2354(owner, unitId, pos_x_1, pos_y_1, pos_z, 0.) call unit_addAbility(receiver, Basics_LOCUST_ID) call construct_StaticSetupObject(temp, receiver, createUnit_2354(owner, unitId, pos_x_1, pos_y_1, pos_z, 0.), radius, ref_function_code__StaticEscaperSensorSetup_EscaperSensor) call StaticEscaperSensorSetup_init(this_1) set StaticEscaperSensorSetup_sensorHeight[this_1] = sensorHeight endfunction function RegionType_getTypeSet takes integer this_1 returns integer local integer temp = this_1 if temp == 0 then set RegionType_getTypeSet_return_regionItemId = 0 set RegionType_getTypeSet_return_walkableId = 0 set RegionType_getTypeSet_return_unwalkableId = 0 set RegionType_getTypeSet_return_smallKillerId = 0 set RegionType_getTypeSet_return_bigKillerId = 0 set RegionType_getTypeSet_return_treeId = 0 set RegionType_getTypeSet_return_smallObstacleId = 0 set RegionType_getTypeSet_return_bigObstacleId = 0 set RegionType_getTypeSet_return_bossId = 0 set RegionType_getTypeSet_return_minionId = 0 set RegionType_getTypeSet_return_highObstacleId = 0 return RegionType_getTypeSet_return_regionItemId elseif temp == 1 then set RegionType_getTypeSet_return_regionItemId = 1227894856 set RegionType_getTypeSet_return_walkableId = 1231320178 set RegionType_getTypeSet_return_unwalkableId = 1231186786 set RegionType_getTypeSet_return_smallKillerId = BuilderConstants_SMALL_CITADEL_KILLER_ID set RegionType_getTypeSet_return_bigKillerId = BuilderConstants_BIG_CITADEL_KILLER_ID set RegionType_getTypeSet_return_treeId = 1263826039 set RegionType_getTypeSet_return_smallObstacleId = ObstacleObjects_SOBS_CITADEL_ID set RegionType_getTypeSet_return_bigObstacleId = ObstacleObjects_BOBS_CITADEL_ID set RegionType_getTypeSet_return_bossId = 1747988551 set RegionType_getTypeSet_return_minionId = 1966092363 set RegionType_getTypeSet_return_highObstacleId = ObstacleObjects_HOBS_CITADEL_ID return RegionType_getTypeSet_return_regionItemId elseif temp == 2 then set RegionType_getTypeSet_return_regionItemId = 1227894855 set RegionType_getTypeSet_return_walkableId = 1113879396 set RegionType_getTypeSet_return_unwalkableId = GetTerrainType(2670., -7090.) set RegionType_getTypeSet_return_smallKillerId = BuilderConstants_SMALL_SAND_KILLER_ID set RegionType_getTypeSet_return_bigKillerId = BuilderConstants_BIG_SAND_KILLER_ID set RegionType_getTypeSet_return_treeId = 1112831095 set RegionType_getTypeSet_return_smallObstacleId = ObstacleObjects_SOBS_DESERT_ID set RegionType_getTypeSet_return_bigObstacleId = ObstacleObjects_BOBS_DESERT_ID set RegionType_getTypeSet_return_bossId = 1747988557 set RegionType_getTypeSet_return_minionId = 1966092366 set RegionType_getTypeSet_return_highObstacleId = ObstacleObjects_HOBS_DESERT_ID return RegionType_getTypeSet_return_regionItemId elseif temp == 3 then set RegionType_getTypeSet_return_regionItemId = 1227894853 set RegionType_getTypeSet_return_walkableId = 1500999010 set RegionType_getTypeSet_return_unwalkableId = 1499951970 set RegionType_getTypeSet_return_smallKillerId = BuilderConstants_SMALL_GRASS_KILLER_ID set RegionType_getTypeSet_return_bigKillerId = BuilderConstants_BIG_GRASS_KILLER_ID set RegionType_getTypeSet_return_treeId = 1280601204 set RegionType_getTypeSet_return_smallObstacleId = ObstacleObjects_SOBS_GRASS_ID set RegionType_getTypeSet_return_bigObstacleId = ObstacleObjects_BOBS_GRASS_ID set RegionType_getTypeSet_return_bossId = 1747988556 set RegionType_getTypeSet_return_minionId = 1966092365 set RegionType_getTypeSet_return_highObstacleId = ObstacleObjects_HOBS_GRASS_ID return RegionType_getTypeSet_return_regionItemId elseif temp == 4 then set RegionType_getTypeSet_return_regionItemId = 1227894852 set RegionType_getTypeSet_return_walkableId = 1232364139 set RegionType_getTypeSet_return_unwalkableId = 1232301687 set RegionType_getTypeSet_return_smallKillerId = BuilderConstants_SMALL_ICE_KILLER_ID set RegionType_getTypeSet_return_bigKillerId = BuilderConstants_BIG_ICE_KILLER_ID set RegionType_getTypeSet_return_treeId = 1465152372 set RegionType_getTypeSet_return_smallObstacleId = ObstacleObjects_SOBS_ICE_ID set RegionType_getTypeSet_return_bigObstacleId = ObstacleObjects_BOBS_ICE_ID set RegionType_getTypeSet_return_bossId = 1747988559 set RegionType_getTypeSet_return_minionId = 1966092364 set RegionType_getTypeSet_return_highObstacleId = ObstacleObjects_HOBS_ICE_ID return RegionType_getTypeSet_return_regionItemId else set RegionType_getTypeSet_return_regionItemId = 1227894862 set RegionType_getTypeSet_return_walkableId = 1516399475 set RegionType_getTypeSet_return_unwalkableId = 1516532327 set RegionType_getTypeSet_return_smallKillerId = BuilderConstants_SMALL_SUNKEN_KILLER_ID set RegionType_getTypeSet_return_bigKillerId = BuilderConstants_BIG_SUNKEN_KILLER_ID set RegionType_getTypeSet_return_treeId = 1515484279 set RegionType_getTypeSet_return_smallObstacleId = ObstacleObjects_SOBS_SUNKEN_ID set RegionType_getTypeSet_return_bigObstacleId = ObstacleObjects_BOBS_SUNKEN_ID set RegionType_getTypeSet_return_bossId = 1747988558 set RegionType_getTypeSet_return_minionId = 1966092367 set RegionType_getTypeSet_return_highObstacleId = ObstacleObjects_HOBS_SUNKEN_ID return RegionType_getTypeSet_return_regionItemId endif endfunction function RegionData_getTypeSet takes integer this_1 returns integer set RegionData_getTypeSet_return_regionItemId = RegionType_getTypeSet(RegionData_rtype[this_1]) set RegionData_getTypeSet_return_walkableId = RegionType_getTypeSet_return_walkableId set RegionData_getTypeSet_return_unwalkableId = RegionType_getTypeSet_return_unwalkableId set RegionData_getTypeSet_return_smallKillerId = RegionType_getTypeSet_return_smallKillerId set RegionData_getTypeSet_return_bigKillerId = RegionType_getTypeSet_return_bigKillerId set RegionData_getTypeSet_return_treeId = RegionType_getTypeSet_return_treeId set RegionData_getTypeSet_return_smallObstacleId = RegionType_getTypeSet_return_smallObstacleId set RegionData_getTypeSet_return_bigObstacleId = RegionType_getTypeSet_return_bigObstacleId set RegionData_getTypeSet_return_bossId = RegionType_getTypeSet_return_bossId set RegionData_getTypeSet_return_minionId = RegionType_getTypeSet_return_minionId set RegionData_getTypeSet_return_highObstacleId = RegionType_getTypeSet_return_highObstacleId return RegionData_getTypeSet_return_regionItemId endfunction function dispatch_RegionData_RegionData_RegionData_getTypeSet takes integer this_1 returns integer local integer RegionData_RegionData_getTypeSet_result_regionItemId local integer RegionData_RegionData_getTypeSet_result_walkableId local integer RegionData_RegionData_getTypeSet_result_unwalkableId local integer RegionData_RegionData_getTypeSet_result_smallKillerId local integer RegionData_RegionData_getTypeSet_result_bigKillerId local integer RegionData_RegionData_getTypeSet_result_treeId local integer RegionData_RegionData_getTypeSet_result_smallObstacleId local integer RegionData_RegionData_getTypeSet_result_bigObstacleId local integer RegionData_RegionData_getTypeSet_result_bossId local integer RegionData_RegionData_getTypeSet_result_minionId local integer RegionData_RegionData_getTypeSet_result_highObstacleId local integer tuple_temp local integer tuple_temp_1 local integer tuple_temp_2 local integer tuple_temp_3 local integer tuple_temp_4 local integer tuple_temp_5 local integer tuple_temp_6 local integer tuple_temp_7 local integer tuple_temp_8 local integer tuple_temp_9 local integer tuple_temp_10 if RegionData_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling RegionData.getTypeSet") else call error("Called RegionData.getTypeSet on invalid object.") endif endif set tuple_temp = RegionData_getTypeSet(this_1) set tuple_temp_1 = RegionData_getTypeSet_return_walkableId set tuple_temp_2 = RegionData_getTypeSet_return_unwalkableId set tuple_temp_3 = RegionData_getTypeSet_return_smallKillerId set tuple_temp_4 = RegionData_getTypeSet_return_bigKillerId set tuple_temp_5 = RegionData_getTypeSet_return_treeId set tuple_temp_6 = RegionData_getTypeSet_return_smallObstacleId set tuple_temp_7 = RegionData_getTypeSet_return_bigObstacleId set tuple_temp_8 = RegionData_getTypeSet_return_bossId set tuple_temp_9 = RegionData_getTypeSet_return_minionId set tuple_temp_10 = RegionData_getTypeSet_return_highObstacleId set RegionData_RegionData_getTypeSet_result_regionItemId = tuple_temp set RegionData_RegionData_getTypeSet_result_walkableId = tuple_temp_1 set RegionData_RegionData_getTypeSet_result_unwalkableId = tuple_temp_2 set RegionData_RegionData_getTypeSet_result_smallKillerId = tuple_temp_3 set RegionData_RegionData_getTypeSet_result_bigKillerId = tuple_temp_4 set RegionData_RegionData_getTypeSet_result_treeId = tuple_temp_5 set RegionData_RegionData_getTypeSet_result_smallObstacleId = tuple_temp_6 set RegionData_RegionData_getTypeSet_result_bigObstacleId = tuple_temp_7 set RegionData_RegionData_getTypeSet_result_bossId = tuple_temp_8 set RegionData_RegionData_getTypeSet_result_minionId = tuple_temp_9 set RegionData_RegionData_getTypeSet_result_highObstacleId = tuple_temp_10 set dispatch_RegionData_RegionData_RegionData_getTypeSet_return_regionItemId = RegionData_RegionData_getTypeSet_result_regionItemId set dispatch_RegionData_RegionData_RegionData_getTypeSet_return_walkableId = RegionData_RegionData_getTypeSet_result_walkableId set dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId = RegionData_RegionData_getTypeSet_result_unwalkableId set dispatch_RegionData_RegionData_RegionData_getTypeSet_return_smallKillerId = RegionData_RegionData_getTypeSet_result_smallKillerId set dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bigKillerId = RegionData_RegionData_getTypeSet_result_bigKillerId set dispatch_RegionData_RegionData_RegionData_getTypeSet_return_treeId = RegionData_RegionData_getTypeSet_result_treeId set dispatch_RegionData_RegionData_RegionData_getTypeSet_return_smallObstacleId = RegionData_RegionData_getTypeSet_result_smallObstacleId set dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bigObstacleId = RegionData_RegionData_getTypeSet_result_bigObstacleId set dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bossId = RegionData_RegionData_getTypeSet_result_bossId set dispatch_RegionData_RegionData_RegionData_getTypeSet_return_minionId = RegionData_RegionData_getTypeSet_result_minionId set dispatch_RegionData_RegionData_RegionData_getTypeSet_return_highObstacleId = RegionData_RegionData_getTypeSet_result_highObstacleId return dispatch_RegionData_RegionData_RegionData_getTypeSet_return_regionItemId endfunction function vec2_withTerrainZ takes real this_x, real this_y returns real set vec2_withTerrainZ_return_x = this_x set vec2_withTerrainZ_return_y = this_y set vec2_withTerrainZ_return_z = vec2_getTerrainZ(this_x, this_y) return vec2_withTerrainZ_return_x endfunction function construct_BigObstacle2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing local integer temp = this_1 local real tuple_temp = vec2_withTerrainZ(pos_x_1, pos_y_1) local real tuple_temp_1 = vec2_withTerrainZ_return_y local real tuple_temp_2 = vec2_withTerrainZ_return_z local real temp_x = tuple_temp local real temp_y = tuple_temp_1 local real temp_z = tuple_temp_2 local player temp_1 = owner local integer temp_tuple_bigObstacleId local integer tuple_temp_3 call dispatch_RegionData_RegionData_RegionData_getTypeSet(getRegionData_3302(pos_x_1, pos_y_1)) set tuple_temp_3 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bigObstacleId set temp_tuple_bigObstacleId = tuple_temp_3 call construct_StaticEscaperSensorSetup3(temp, temp_x, temp_y, temp_z, temp_1, temp_tuple_bigObstacleId, Obstacle_EVENT_RADIUS_BIG, Obstacle_EVENT_RADIUS_BIG) call BigObstacle_init(this_1) endfunction function new_BigObstacle_3621 takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_BigObstacle() call construct_BigObstacle2(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_GlaiveKiller takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1180 else call error("Out of memory: Could not create GlaiveKiller.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1180 endif return this_1 endfunction function GlaiveKiller_init takes integer this_1 returns nothing endfunction function construct_GlaiveKiller2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing call construct_EscaperSensorSetup3(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, owner, EscaperKillers_GLAIVE_KILLER_ID, EscaperKillers_COLL_SIZE_GLAIVE, EscaperKillers_COLL_SIZE_GLAIVE) call GlaiveKiller_init(this_1) endfunction function new_GlaiveKiller_3676 takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_GlaiveKiller() call construct_GlaiveKiller2(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_SmallKiller takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1184 else call error("Out of memory: Could not create SmallKiller.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1184 endif return this_1 endfunction function SmallKiller_init takes integer this_1 returns nothing endfunction function construct_SmallKiller2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing local integer temp = this_1 local real tuple_temp = vec2_toVec3(pos_x_1, pos_y_1) local real tuple_temp_1 = vec2_toVec3_return_y local real tuple_temp_2 = vec2_toVec3_return_z local real temp_x = tuple_temp local real temp_y = tuple_temp_1 local real temp_z = tuple_temp_2 local player temp_1 = owner local integer temp_tuple_smallKillerId local integer tuple_temp_3 call dispatch_RegionData_RegionData_RegionData_getTypeSet(getRegionData_3302(pos_x_1, pos_y_1)) set tuple_temp_3 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_smallKillerId set temp_tuple_smallKillerId = tuple_temp_3 call construct_EscaperSensorSetup3(temp, temp_x, temp_y, temp_z, temp_1, temp_tuple_smallKillerId, EscaperKillers_COLL_SIZE_SK, EscaperKillers_COLL_SIZE_SK + 4.) call SmallKiller_init(this_1) endfunction function new_SmallKiller_3741 takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_SmallKiller() call construct_SmallKiller2(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_SmallObstacle takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1219 else call error("Out of memory: Could not create SmallObstacle.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1219 endif return this_1 endfunction function SmallObstacle_init takes integer this_1 returns nothing endfunction function construct_SmallObstacle2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing local integer temp = this_1 local real tuple_temp = vec2_withTerrainZ(pos_x_1, pos_y_1) local real tuple_temp_1 = vec2_withTerrainZ_return_y local real tuple_temp_2 = vec2_withTerrainZ_return_z local real temp_x = tuple_temp local real temp_y = tuple_temp_1 local real temp_z = tuple_temp_2 local player temp_1 = owner local integer temp_tuple_smallObstacleId local integer tuple_temp_3 call dispatch_RegionData_RegionData_RegionData_getTypeSet(getRegionData_3302(pos_x_1, pos_y_1)) set tuple_temp_3 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_smallObstacleId set temp_tuple_smallObstacleId = tuple_temp_3 call construct_StaticEscaperSensorSetup3(temp, temp_x, temp_y, temp_z, temp_1, temp_tuple_smallObstacleId, Obstacle_EVENT_RADIUS_SMALL, Obstacle_EVENT_RADIUS_SMALL) call SmallObstacle_init(this_1) endfunction function new_SmallObstacle_3744 takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_SmallObstacle() call construct_SmallObstacle2(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_Tree takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1224 else call error("Out of memory: Could not create Tree.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1224 endif return this_1 endfunction function Tree_init takes integer this_1 returns nothing endfunction function createDestructable takes integer id, real pos_x_1, real pos_y_1, real direction_radians, real scale, integer variation returns destructable return CreateDestructable(id, pos_x_1, pos_y_1, angle_degrees(direction_radians), scale, variation) endfunction function construct_Tree takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing local integer rdata_treeId local integer tuple_temp call construct_UnitEntity(this_1, createUnit(owner, Tree_TREE_ID, pos_x_1, pos_y_1, 0.)) call Tree_init(this_1) call dispatch_RegionData_RegionData_RegionData_getTypeSet(Entity_setCurrentRegion(this_1)) set tuple_temp = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_treeId set rdata_treeId = tuple_temp set Tree_dummy[this_1] = createDestructable(rdata_treeId, pos_x_1, pos_y_1, real_fromDeg(GetRandomReal(0., 360.)), GetRandomReal(0.8, 1.2), GetRandomInt(0, 2)) endfunction function new_Tree takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_Tree() call construct_Tree(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function unit_issuePointOrderById takes unit this_1, integer id, real target_x, real target_y returns boolean return IssuePointOrderById(this_1, id, target_x, target_y) endfunction function vec2_setTerrainType takes real this_x, real this_y, integer ttype_1, integer variation, integer area, integer shape returns nothing call SetTerrainType(this_x, this_y, ttype_1, variation, area, shape) endfunction function MGSlide_generateNewCourse takes integer this_1 returns nothing local real cond_result_x local real cond_result_y local integer clVar local integer clVar_1 local rect spawn local integer i local integer temp local integer i_1 local integer temp_1 local integer i_2 local integer temp_2 local integer i_3 local integer temp_3 local integer i_4 local integer temp_4 local integer i_5 local integer temp_5 local rect temp_6 local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 if MGSlide_goRight[this_1] then set tuple_temp = MGSlide_RIGHT_SPOT_x set tuple_temp_1 = MGSlide_RIGHT_SPOT_y set cond_result_x = tuple_temp set cond_result_y = tuple_temp_1 else set tuple_temp_2 = MGSlide_LEFT_SPOT_x set tuple_temp_3 = MGSlide_LEFT_SPOT_y set cond_result_x = tuple_temp_2 set cond_result_y = tuple_temp_3 endif call createFText_2343(vec2_toVec3(cond_result_x, cond_result_y), vec2_toVec3_return_y, vec2_toVec3_return_z, "12", 12., 2., 0., 0.03) set clVar = alloc_CallbackCounted_doPeriodicallyCounted_MGSlide_MGSlide() call construct_CallbackCounted(clVar) set this_2947[clVar] = this_1 call doPeriodicallyCounted(1., 11, clVar) set temp_6 = gg_rct_slidegamespawn set clVar_1 = alloc_ForGroupCallback_forUnitsInRect_MGSlide_MGSlide() call forUnitsInRect(temp_6, clVar_1) set MGSlide_bcount[this_1] = MGSlide_bcount[this_1] + 1 set spawn = gg_rct_slidegamespawn set i = 0 set temp = MGSlide_bcount[this_1] / 2 loop exitwhen i > temp call vec2_setTerrainType(rect_randomPoint(gg_rct_slidegamespawn), rect_randomPoint_return_y, BuilderConstants_UNCONTROLLABLEICE, -1, 1, 0) set i = i + 1 endloop set i_1 = 0 set temp_1 = MGSlide_bcount[this_1] * 2 loop exitwhen i_1 > temp_1 call new_SmallObstacle_3744(rect_randomPoint(spawn), rect_randomPoint_return_y, GameConstants_STAFF_PLAYER) set i_1 = i_1 + 1 endloop set i_2 = 0 set temp_2 = MGSlide_bcount[this_1] loop exitwhen i_2 > temp_2 call new_BigObstacle_3621(rect_randomPoint(spawn), rect_randomPoint_return_y, GameConstants_STAFF_PLAYER) set i_2 = i_2 + 1 endloop set i_3 = 0 set temp_3 = MGSlide_bcount[this_1] / 2 loop exitwhen i_3 > temp_3 call new_Tree(rect_randomPoint(spawn), rect_randomPoint_return_y, GameConstants_STAFF_PLAYER) set i_3 = i_3 + 1 endloop set i_4 = 0 set temp_4 = MGSlide_bcount[this_1] loop exitwhen i_4 > temp_4 call unit_issuePointOrderById(UnitEntity_actor[new_SmallKiller_3741(rect_randomPoint(spawn), rect_randomPoint_return_y, GameConstants_STAFF_PLAYER)], OrderIds_patrol, rect_randomPoint(spawn), rect_randomPoint_return_y) set i_4 = i_4 + 1 endloop set i_5 = 0 set temp_5 = MGSlide_bcount[this_1] / 2 loop exitwhen i_5 > temp_5 call unit_issuePointOrderById(UnitEntity_actor[new_GlaiveKiller_3676(rect_randomPoint(spawn), rect_randomPoint_return_y, GameConstants_STAFF_PLAYER)], OrderIds_patrol, rect_randomPoint(spawn), rect_randomPoint_return_y) set i_5 = i_5 + 1 endloop endfunction function dispatch_MGSlide_MGSlide_MGSlide_generateNewCourse takes integer this_1 returns nothing if Minigame_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling MGSlide.generateNewCourse") else call error("Called MGSlide.generateNewCourse on invalid object.") endif endif call MGSlide_generateNewCourse(this_1) endfunction function vec3_distanceTo2d_4262 takes real this_x, real this_y, real this_z, real v_x, real v_y returns real return SquareRoot(real_squared(v_x - this_x) + real_squared(v_y - this_y)) endfunction function call_doPeriodically_MGSlide_MGSlide takes integer this_1, integer cb_1 returns nothing local integer count = 0 local integer iterator = LinkedList_iterator(PlayerData_escaperPlayers) local integer pd_1 local integer i local integer i_1 local integer iterator_1 local integer pd_2 loop exitwhen not LLIterator_hasNext(iterator) set pd_1 = LLIterator_next(iterator) if PlayerData_escaper[pd_1] != 0 and Escaper_alive[PlayerData_escaper[pd_1]] then if MGSlide_goRight[this_2946[this_1]] and vec3_distanceTo2d_4262(dispatch_UnitEntity_Entity_UnitEntity_getPos(PlayerData_escaper[pd_1]), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, MGSlide_RIGHT_SPOT_x, MGSlide_RIGHT_SPOT_y) > 64. then call dispatch_Escaper_Escaper_Escaper_kill_2852(PlayerData_escaper[pd_1], 0, 0) call flashEffect(Abilities_frostNovaTarget, dispatch_UnitEntity_Entity_UnitEntity_getPos(PlayerData_escaper[pd_1]), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z) elseif ( not MGSlide_goRight[this_2946[this_1]]) and vec3_distanceTo2d_4262(dispatch_UnitEntity_Entity_UnitEntity_getPos(PlayerData_escaper[pd_1]), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, MGSlide_LEFT_SPOT_x, MGSlide_LEFT_SPOT_y) > 64. then call dispatch_Escaper_Escaper_Escaper_kill_2852(PlayerData_escaper[pd_1], 0, 0) call flashEffect(Abilities_frostNovaTarget, dispatch_UnitEntity_Entity_UnitEntity_getPos(PlayerData_escaper[pd_1]), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z) else set count = count + 1 endif endif endloop call LLIterator_close(iterator) if count > 0 then set MGSlide_goRight[this_2946[this_1]] = not MGSlide_goRight[this_2946[this_1]] if MGSlide_goRight[this_2946[this_1]] then set i = 0 loop exitwhen i > 1 call new_Coin(MGSlide_RIGHT_SPOT_x, MGSlide_RIGHT_SPOT_y, GameConstants_STAFF_PLAYER) set i = i + 1 endloop else set i_1 = 0 loop exitwhen i_1 > 1 call new_Coin(MGSlide_LEFT_SPOT_x, MGSlide_LEFT_SPOT_y, GameConstants_STAFF_PLAYER) set i_1 = i_1 + 1 endloop endif set iterator_1 = LinkedList_iterator(PlayerData_escaperPlayers) loop exitwhen not LLIterator_hasNext(iterator_1) set pd_2 = LLIterator_next(iterator_1) if PlayerData_escaper[pd_2] != 0 and Escaper_alive[PlayerData_escaper[pd_2]] then call flashEffect(Abilities_polyMorphTarget, dispatch_UnitEntity_Entity_UnitEntity_getPos(PlayerData_escaper[pd_2]), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z) endif call printTimedToPlayer("Next round!\n>> |cff8cbfddGet to the other side!", 1., PlayerData_p[pd_2]) endloop call LLIterator_close(iterator_1) call dispatch_MGSlide_MGSlide_MGSlide_generateNewCourse(this_2946[this_1]) endif endfunction function alloc_LinkedListPredicate_filter_peek_getNameColored_printTimedToPlayer_doPeriodically_MGWarlock_MGWarlock takes nothing returns integer local integer this_1 if LinkedListPredicate_firstFree == 0 then if LinkedListPredicate_maxIndex < JASS_MAX_ARRAY_SIZE then set LinkedListPredicate_maxIndex = LinkedListPredicate_maxIndex + 1 set this_1 = LinkedListPredicate_maxIndex set LinkedListPredicate_typeId[this_1] = 1000 else call error("Out of memory: Could not create LinkedListPredicate_filter_peek_getNameColored_printTimedToPlayer_doPeriodically_MGWarlock_MGWarlock.") set this_1 = 0 endif else set LinkedListPredicate_firstFree = LinkedListPredicate_firstFree - 1 set this_1 = LinkedListPredicate_nextFree[LinkedListPredicate_firstFree] set LinkedListPredicate_typeId[this_1] = 1000 endif return this_1 endfunction function alloc_LinkedListPredicate_filter_size_doPeriodically_MGWarlock_MGWarlock takes nothing returns integer local integer this_1 if LinkedListPredicate_firstFree == 0 then if LinkedListPredicate_maxIndex < JASS_MAX_ARRAY_SIZE then set LinkedListPredicate_maxIndex = LinkedListPredicate_maxIndex + 1 set this_1 = LinkedListPredicate_maxIndex set LinkedListPredicate_typeId[this_1] = 1001 else call error("Out of memory: Could not create LinkedListPredicate_filter_size_doPeriodically_MGWarlock_MGWarlock.") set this_1 = 0 endif else set LinkedListPredicate_firstFree = LinkedListPredicate_firstFree - 1 set this_1 = LinkedListPredicate_nextFree[LinkedListPredicate_firstFree] set LinkedListPredicate_typeId[this_1] = 1001 endif return this_1 endfunction function alloc_LinkedListPredicate_removeIf_LinkedList_LinkedList takes nothing returns integer local integer this_1 if LinkedListPredicate_firstFree == 0 then if LinkedListPredicate_maxIndex < JASS_MAX_ARRAY_SIZE then set LinkedListPredicate_maxIndex = LinkedListPredicate_maxIndex + 1 set this_1 = LinkedListPredicate_maxIndex set LinkedListPredicate_typeId[this_1] = 1003 else call error("Out of memory: Could not create LinkedListPredicate_removeIf_LinkedList_LinkedList.") set this_1 = 0 endif else set LinkedListPredicate_firstFree = LinkedListPredicate_firstFree - 1 set this_1 = LinkedListPredicate_nextFree[LinkedListPredicate_firstFree] set LinkedListPredicate_typeId[this_1] = 1003 endif return this_1 endfunction function dealloc_LinkedListPredicate takes integer obj_1 returns nothing if LinkedListPredicate_typeId[obj_1] == 0 then call error("Double free: object of type LinkedListPredicate") else set LinkedListPredicate_nextFree[LinkedListPredicate_firstFree] = obj_1 set LinkedListPredicate_firstFree = LinkedListPredicate_firstFree + 1 set LinkedListPredicate_typeId[obj_1] = 0 endif endfunction function destroyLinkedListPredicate takes integer this_1 returns nothing call dealloc_LinkedListPredicate(this_1) endfunction function dispatch_LinkedListPredicate_destroyLinkedListPredicate takes integer this_1 returns nothing if LinkedListPredicate_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedListPredicate.LinkedListPredicate") else call error("Called LinkedListPredicate.LinkedListPredicate on invalid object.") endif endif call destroyLinkedListPredicate(this_1) endfunction function LinkedList_copy takes integer this_1 returns integer local integer list = new_LinkedList() local integer iterator = LinkedList_iterator(this_1) local integer elem loop exitwhen not LLIterator_hasNext(iterator) set elem = LLIterator_next(iterator) call dispatch_LinkedList_LinkedList_LinkedList_add_1(list, elem) endloop call LLIterator_close(iterator) return list endfunction function dispatch_LinkedList_LinkedList_LinkedList_copy takes integer this_1 returns integer local integer LinkedList_LinkedList_copy_result if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.copy") else call error("Called LinkedList.copy on invalid object.") endif endif set LinkedList_LinkedList_copy_result = LinkedList_copy(this_1) return LinkedList_LinkedList_copy_result endfunction function isTrueFor_filter_peek_getNameColored_printTimedToPlayer_doPeriodically_MGWarlock_MGWarlock takes integer this_1, integer warlock returns boolean return unit_isAlive(UnitEntity_actor[warlock]) endfunction function isTrueFor_filter_size_doPeriodically_MGWarlock_MGWarlock takes integer this_1, integer warlock returns boolean return unit_isAlive(UnitEntity_actor[warlock]) endfunction function vec2_isInRegion takes real this_x, real this_y, region whichRegion returns boolean return IsPointInRegion(whichRegion, this_x, this_y) endfunction function isTrueFor_removeIf_Executer_Executer takes integer this_1, integer entity_1 returns boolean return ( not unit_isAlive(UnitEntity_actor[entity_1])) or ( not vec2_isInRegion(vec3_toVec2(dispatch_UnitEntity_Entity_UnitEntity_getPos(entity_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z), vec3_toVec2_return_y, Executer_eventRegion[this_2955[this_1]])) endfunction function cyc_isTrueFor_removeIf_LinkedList_LinkedList takes integer funcChoice, integer this_1, integer t returns nothing local boolean LinkedList_LinkedListPredicate_isTrueFor_result if funcChoice == 0 then call cyc_isTrueFor_removeIf_LinkedList_LinkedList(1, predicate[this_1], t) set tempReturn_boolean = not tempReturn_boolean return elseif funcChoice == 1 then if LinkedListPredicate_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedListPredicate.isTrueFor") else call error("Called LinkedListPredicate.isTrueFor on invalid object.") endif endif if LinkedListPredicate_typeId[this_1] <= 1001 then if LinkedListPredicate_typeId[this_1] <= 1000 then set LinkedList_LinkedListPredicate_isTrueFor_result = isTrueFor_filter_peek_getNameColored_printTimedToPlayer_doPeriodically_MGWarlock_MGWarlock(this_1, t) else set LinkedList_LinkedListPredicate_isTrueFor_result = isTrueFor_filter_size_doPeriodically_MGWarlock_MGWarlock(this_1, t) endif elseif LinkedListPredicate_typeId[this_1] <= 1002 then set LinkedList_LinkedListPredicate_isTrueFor_result = isTrueFor_removeIf_Executer_Executer(this_1, t) else call cyc_isTrueFor_removeIf_LinkedList_LinkedList(0, this_1, t) set LinkedList_LinkedListPredicate_isTrueFor_result = tempReturn_boolean endif set tempReturn_boolean = LinkedList_LinkedListPredicate_isTrueFor_result return endif endfunction function LinkedList_removeIf takes integer this_1, integer predicate_1 returns nothing local integer itr_1 = dispatch_LinkedList_LinkedList_LinkedList_iterator(this_1) local integer from = itr_1 local integer elem loop exitwhen not LLIterator_hasNext(from) set elem = LLIterator_next(from) call cyc_isTrueFor_removeIf_LinkedList_LinkedList(1, predicate_1, elem) if tempReturn_boolean then call dispatch_LLIterator_LinkedList_LLIterator_remove(itr_1) endif endloop call dispatch_LLIterator_LinkedList_LLIterator_close(itr_1) call dispatch_LinkedListPredicate_destroyLinkedListPredicate(predicate_1) endfunction function dispatch_LinkedList_LinkedList_LinkedList_removeIf takes integer this_1, integer predicate_1 returns nothing if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.removeIf") else call error("Called LinkedList.removeIf on invalid object.") endif endif call LinkedList_removeIf(this_1, predicate_1) endfunction function LinkedList_filter takes integer this_1, integer predicate_1 returns integer local integer result_1 = dispatch_LinkedList_LinkedList_LinkedList_copy(this_1) local integer temp = result_1 local integer clVar = alloc_LinkedListPredicate_removeIf_LinkedList_LinkedList() set predicate[clVar] = predicate_1 call dispatch_LinkedList_LinkedList_LinkedList_removeIf(temp, clVar) call dispatch_LinkedListPredicate_destroyLinkedListPredicate(predicate_1) return result_1 endfunction function dispatch_LinkedList_LinkedList_LinkedList_filter takes integer this_1, integer predicate_1 returns integer local integer LinkedList_LinkedList_filter_result if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.filter") else call error("Called LinkedList.filter on invalid object.") endif endif set LinkedList_LinkedList_filter_result = LinkedList_filter(this_1, predicate_1) return LinkedList_LinkedList_filter_result endfunction function LinkedList_getLast takes integer this_1 returns integer return LLEntry_elem[LLEntry_prev[LinkedList_dummy[this_1]]] endfunction function dispatch_LinkedList_LinkedList_LinkedList_getLast takes integer this_1 returns integer local integer LinkedList_LinkedList_getLast_result if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.getLast") else call error("Called LinkedList.getLast on invalid object.") endif endif set LinkedList_LinkedList_getLast_result = LinkedList_getLast(this_1) return LinkedList_LinkedList_getLast_result endfunction function LinkedList_peek takes integer this_1 returns integer return dispatch_LinkedList_LinkedList_LinkedList_getLast(this_1) endfunction function dispatch_LinkedList_LinkedList_LinkedList_peek takes integer this_1 returns integer local integer LinkedList_LinkedList_peek_result if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.peek") else call error("Called LinkedList.peek on invalid object.") endif endif set LinkedList_LinkedList_peek_result = LinkedList_peek(this_1) return LinkedList_LinkedList_peek_result endfunction function call_doPeriodically_MGWarlock_MGWarlock takes integer this_1, integer cb_1 returns nothing local integer temp = MGWarlock_warlocks local integer clVar = alloc_LinkedListPredicate_filter_size_doPeriodically_MGWarlock_MGWarlock() local integer iterator local integer ep local integer clVar_1 local integer temp_1 if dispatch_LinkedList_LinkedList_LinkedList_size(dispatch_LinkedList_LinkedList_LinkedList_filter(temp, clVar)) == 1 then set iterator = LinkedList_iterator(PlayerData_escaperPlayers) loop exitwhen not LLIterator_hasNext(iterator) set ep = LLIterator_next(iterator) set temp_1 = MGWarlock_warlocks set clVar_1 = alloc_LinkedListPredicate_filter_peek_getNameColored_printTimedToPlayer_doPeriodically_MGWarlock_MGWarlock() call printTimedToPlayer(player_getNameColored(Entity_owner[Warlock_mounter[dispatch_LinkedList_LinkedList_LinkedList_peek(dispatch_LinkedList_LinkedList_LinkedList_filter(temp_1, clVar_1))]], true) + " has won!", 10., PlayerData_p[ep]) endloop call LLIterator_close(iterator) call dispatch_Minigame_Minigame_Minigame_reset(this_2948[this_1]) endif endfunction function alloc_LLItrClosure_forEach_PlayerData takes nothing returns integer local integer this_1 if LLItrClosure_firstFree == 0 then if LLItrClosure_maxIndex < JASS_MAX_ARRAY_SIZE then set LLItrClosure_maxIndex = LLItrClosure_maxIndex + 1 set this_1 = LLItrClosure_maxIndex set LLItrClosure_typeId[this_1] = 993 else call error("Out of memory: Could not create LLItrClosure_forEach_PlayerData.") set this_1 = 0 endif else set LLItrClosure_firstFree = LLItrClosure_firstFree - 1 set this_1 = LLItrClosure_nextFree[LLItrClosure_firstFree] set LLItrClosure_typeId[this_1] = 993 endif return this_1 endfunction function DummyDamage_amount_1 takes integer this_1, real amount returns nothing set DummyDamage_amount[this_1] = amount endfunction function dispatch_DummyDamage_DummyDamage_DummyDamage_amount takes integer this_1, real amount returns nothing if DummyDamage_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling DummyDamage.amount") else call error("Called DummyDamage.amount on invalid object.") endif endif call DummyDamage_amount_1(this_1, amount) endfunction function LinkedList_enqueue takes integer this_1, integer elem returns nothing call dispatch_LinkedList_LinkedList_LinkedList_add_1(this_1, elem) endfunction function dispatch_LinkedList_LinkedList_LinkedList_enqueue takes integer this_1, integer elem returns nothing if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.enqueue") else call error("Called LinkedList.enqueue on invalid object.") endif endif call LinkedList_enqueue(this_1, elem) endfunction function real_asAngleDegrees takes real this_1 returns real set real_asAngleDegrees_return_radians = this_1 * Angle_DEGTORAD return real_asAngleDegrees_return_radians endfunction function unitToIndex takes unit object returns integer return handle_getTCHandleId(object) endfunction function DummyRecycler_recycle takes unit u_1 returns nothing local integer smallestQueue = 0 local integer i = 1 local integer temp = DummyRecycler_DIFFERENT_ANGLES - 1 local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local unit receiver_4 local unit receiver_5 loop exitwhen i > temp if dispatch_LinkedList_LinkedList_LinkedList_size(DummyRecycler_angleQueues[smallestQueue]) > dispatch_LinkedList_LinkedList_LinkedList_size(DummyRecycler_angleQueues[i]) then set smallestQueue = i endif set i = i + 1 endloop if dispatch_LinkedList_LinkedList_LinkedList_size(DummyRecycler_angleQueues[smallestQueue]) >= DummyRecycler_SAVED_UNITS_PER_ANGLE then call unit_remove(u_1) else call dispatch_LinkedList_LinkedList_LinkedList_enqueue(DummyRecycler_angleQueues[smallestQueue], unitToIndex(u_1)) set receiver = u_1 call unit_setXY(receiver, vec2_op_minus(MapBounds_boundMax_x, MapBounds_boundMax_y, 16., 16.), vec2_op_minus_return_y) set receiver_1 = receiver call unit_pause(receiver_1) set receiver_2 = receiver_1 call unit_setFacing(receiver_2, real_asAngleDegrees(smallestQueue * DummyRecycler_ANGLE_DEGREE)) set receiver_3 = receiver_2 call unit_setScale(receiver_3, 1.) set receiver_4 = receiver_3 call unit_setVertexColor_4202(receiver_4, Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha) set receiver_5 = receiver_4 call unit_setOwner(receiver_5, Basics_DUMMY_PLAYER, true) endif endfunction function DummyDamage_onDestroy takes integer this_1 returns nothing call DummyRecycler_recycle(DummyDamage_dummy[this_1]) endfunction function dealloc_DummyDamage takes integer obj_1 returns nothing if DummyDamage_typeId[obj_1] == 0 then call error("Double free: object of type DummyDamage") else set DummyDamage_nextFree[DummyDamage_firstFree] = obj_1 set DummyDamage_firstFree = DummyDamage_firstFree + 1 set DummyDamage_typeId[obj_1] = 0 endif endfunction function destroyDummyDamage takes integer this_1 returns nothing call DummyDamage_onDestroy(this_1) call dealloc_DummyDamage(this_1) endfunction function dispatch_DummyDamage_destroyDummyDamage takes integer this_1 returns nothing if DummyDamage_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling DummyDamage.DummyDamage") else call error("Called DummyDamage.DummyDamage on invalid object.") endif endif call destroyDummyDamage(this_1) endfunction function unit_damageTarget takes unit this_1, widget target, real amount, boolean attack, boolean ranged, attacktype attackType, damagetype damageType, weapontype weaponType returns nothing call UnitDamageTarget(this_1, target, amount, attack, ranged, attackType, damageType, weaponType) endfunction function DummyDamage_apply takes integer this_1, boolean terminate returns nothing local unit receiver = DummyDamage_dummy[this_1] local unit receiver_1 call unit_setOwner(receiver, DummyDamage_attacker[this_1], false) set receiver_1 = receiver call unit_damageTarget(receiver_1, DummyDamage_target[this_1], DummyDamage_amount[this_1], DummyDamage_attack[this_1], DummyDamage_ranged[this_1], DummyDamage_attackType[this_1], DummyDamage_damageType[this_1], DummyDamage_weaponType[this_1]) if terminate then call dispatch_DummyDamage_destroyDummyDamage(this_1) endif endfunction function dispatch_DummyDamage_DummyDamage_DummyDamage_apply takes integer this_1, boolean terminate returns nothing if DummyDamage_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling DummyDamage.apply") else call error("Called DummyDamage.apply on invalid object.") endif endif call DummyDamage_apply(this_1, terminate) endfunction function DummyDamage_target_1 takes integer this_1, widget target returns nothing set DummyDamage_target[this_1] = target endfunction function dispatch_DummyDamage_DummyDamage_DummyDamage_target takes integer this_1, widget target returns nothing if DummyDamage_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling DummyDamage.target") else call error("Called DummyDamage.target on invalid object.") endif endif call DummyDamage_target_1(this_1, target) endfunction function dispatch_Projectile_Projectile_Projectile_terminate takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Projectile.terminate") else call error("Called Projectile.terminate on invalid object.") endif endif call cyc_RevivePoint_terminate(1, this_1) endfunction function alloc_DummyDamage takes nothing returns integer local integer this_1 if DummyDamage_firstFree == 0 then if DummyDamage_maxIndex < JASS_MAX_ARRAY_SIZE then set DummyDamage_maxIndex = DummyDamage_maxIndex + 1 set this_1 = DummyDamage_maxIndex set DummyDamage_typeId[this_1] = 740 else call error("Out of memory: Could not create DummyDamage.") set this_1 = 0 endif else set DummyDamage_firstFree = DummyDamage_firstFree - 1 set this_1 = DummyDamage_nextFree[DummyDamage_firstFree] set DummyDamage_typeId[this_1] = 740 endif return this_1 endfunction function DummyDamage_init takes integer this_1 returns nothing local real tuple_temp local real tuple_temp_1 set DummyDamage_dummy[this_1] = DummyRecycler_get(DummyDamage_origin_x[this_1], DummyDamage_origin_y[this_1], 0.) set DummyDamage_target[this_1] = null set DummyDamage_amount[this_1] = 0. set DummyDamage_attack[this_1] = false set DummyDamage_ranged[this_1] = false set tuple_temp = Vectors_ZERO2_x set tuple_temp_1 = Vectors_ZERO2_y set DummyDamage_origin_x[this_1] = tuple_temp set DummyDamage_origin_y[this_1] = tuple_temp_1 set DummyDamage_attacker[this_1] = Basics_DUMMY_PLAYER set DummyDamage_attackType[this_1] = ATTACK_TYPE_CHAOS set DummyDamage_damageType[this_1] = DAMAGE_TYPE_UNKNOWN set DummyDamage_weaponType[this_1] = WEAPON_TYPE_WHOKNOWS endfunction function construct_DummyDamage takes integer this_1 returns nothing call DummyDamage_init(this_1) endfunction function new_DummyDamage takes nothing returns integer local integer this_1 = alloc_DummyDamage() call construct_DummyDamage(this_1) return this_1 endfunction function vec2_length takes real this_x, real this_y returns real return SquareRoot(this_x * this_x + this_y * this_y) endfunction function vec2_norm takes real this_x, real this_y returns real local real len = vec2_length(this_x, this_y) local real x = 0. local real y = 0. if len > 0.0 then set x = this_x / len set y = this_y / len endif set vec2_norm_return_x = x set vec2_norm_return_y = y return vec2_norm_return_x endfunction function run_forEach_Fireball_MGWarlock takes integer this_1, integer target returns nothing local integer receiver local integer receiver_1 if unit_isAlive(UnitEntity_actor[target]) and target != Fireball_caster[this_2950[this_1]] and vec3_distanceTo2dSq(dispatch_UnitEntity_Entity_UnitEntity_getPos(target), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, vec3_toVec2(Entity_pos_x[this_2950[this_1]], Entity_pos_y[this_2950[this_1]], Entity_pos_z[this_2950[this_1]]), vec3_toVec2_return_y) < Entity_radius2[this_2950[this_1]] + Entity_radius2[target] then set receiver = new_DummyDamage() call dispatch_DummyDamage_DummyDamage_DummyDamage_target(receiver, UnitEntity_actor[target]) set receiver_1 = receiver call dispatch_DummyDamage_DummyDamage_DummyDamage_amount(receiver_1, 20.) call dispatch_DummyDamage_DummyDamage_DummyDamage_apply(receiver_1, true) call dispatch_Entity_Entity_Entity_addVel(target, vec2_toVec3(vec2_op_mult(vec2_norm(vec2_op_minus(vec3_toVec2(dispatch_UnitEntity_Entity_UnitEntity_getPos(target), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z), vec3_toVec2_return_y, vec3_toVec2(dispatch_Entity_Entity_Entity_getPos(this_2950[this_1]), dispatch_Entity_Entity_Entity_getPos_return_y, dispatch_Entity_Entity_Entity_getPos_return_z), vec3_toVec2_return_y), vec2_op_minus_return_y), vec2_norm_return_y, 40), vec2_op_mult_return_y), vec2_toVec3_return_y, vec2_toVec3_return_z) call dispatch_Projectile_Projectile_Projectile_terminate(this_2950[this_1]) endif endfunction function toRawCode takes integer value returns string local string result_1 = "" local integer remainingValue = value local integer byteno = 0 local integer charValue loop exitwhen byteno > 3 set charValue = ModuloInteger(remainingValue, 256) set remainingValue = remainingValue / 256 set result_1 = string_charAt(ObjectIds_CHARMAP, charValue) + result_1 set byteno = byteno + 1 endloop return result_1 endfunction function int_toRawCode takes integer this_1 returns string return toRawCode(this_1) endfunction function run_map_ObjectIds takes integer this_1, integer t returns string return int_toRawCode(t) endfunction function hashtable_hasString takes hashtable this_1, integer parentKey, integer childKey returns boolean return HaveSavedString(this_1, parentKey, childKey) endfunction function Table_hasString takes integer this_1, integer parentKey returns boolean return hashtable_hasString(Table_ht, this_1, parentKey) endfunction function dispatch_Table_Table_Table_hasString takes integer this_1, integer parentKey returns boolean local boolean Table_Table_hasString_result if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Table.hasString") else call error("Called Table.hasString on invalid object.") endif endif set Table_Table_hasString_result = Table_hasString(this_1, parentKey) return Table_Table_hasString_result endfunction function hashtable_loadString takes hashtable this_1, integer parentKey, integer childKey returns string return LoadStr(this_1, parentKey, childKey) endfunction function Table_loadString takes integer this_1, integer parentKey returns string return hashtable_loadString(Table_ht, this_1, parentKey) endfunction function dispatch_Table_Table_Table_loadString takes integer this_1, integer parentKey returns string local string Table_Table_loadString_result if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Table.loadString") else call error("Called Table.loadString on invalid object.") endif endif set Table_Table_loadString_result = Table_loadString(this_1, parentKey) return Table_Table_loadString_result endfunction function hashtable_saveString takes hashtable this_1, integer parentKey, integer childKey, string value returns nothing call SaveStr(this_1, parentKey, childKey, value) endfunction function Table_saveString takes integer this_1, integer parentKey, string value returns nothing call hashtable_saveString(Table_ht, this_1, parentKey, value) endfunction function dispatch_Table_Table_Table_saveString takes integer this_1, integer parentKey, string value returns nothing if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Table.saveString") else call error("Called Table.saveString on invalid object.") endif endif call Table_saveString(this_1, parentKey, value) endfunction function stringToIndex takes string s returns integer local integer hash = string_getHash(s) loop exitwhen not true if dispatch_Table_Table_Table_hasString(TypeCasting_typecastdata, hash) then if dispatch_Table_Table_Table_loadString(TypeCasting_typecastdata, hash) == s then exitwhen true endif else call dispatch_Table_Table_Table_saveString(TypeCasting_typecastdata, hash, s) exitwhen true endif set hash = hash + 1 endloop return hash endfunction function run_wrapper takes integer this_1, integer t returns integer return stringToIndex(run_map_ObjectIds(this_1, t)) endfunction function dispatch_MapClosure_LinkedList_MapClosure_run takes integer this_1, integer t returns integer local integer LinkedList_MapClosure_run_result if MapClosure_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling MapClosure.run") else call error("Called MapClosure.run on invalid object.") endif endif set LinkedList_MapClosure_run_result = run_wrapper(this_1, t) return LinkedList_MapClosure_run_result endfunction function run_forEach_LinkedList_LinkedList takes integer this_1, integer t returns nothing call dispatch_LinkedList_LinkedList_LinkedList_add_1(output_2568[this_1], dispatch_MapClosure_LinkedList_MapClosure_run(itr_2535[this_1], t)) endfunction function player_getState takes player this_1, playerstate state returns integer return GetPlayerState(this_1, state) endfunction function player_addState takes player this_1, playerstate state, integer wval returns nothing call SetPlayerState(this_1, state, player_getState(this_1, state) + wval) endfunction function player_addGold takes player this_1, integer wval returns nothing call player_addState(this_1, PLAYER_STATE_RESOURCE_GOLD, wval) endfunction function unit_addItemById takes unit this_1, integer itemId returns item return UnitAddItemById(this_1, itemId) endfunction function PlayerData_updateRank takes integer this_1 returns nothing local integer i if PlayerData_lvlfx[this_1] != null then call effect_destr(PlayerData_lvlfx[this_1]) endif set i = 0 loop exitwhen not (PlayerData_XP[this_1] >= GameConstants_expBounds[i]) set i = i + 1 endloop set PlayerData_rank[this_1] = GameConstants_ranks[i] call player_addGold(PlayerData_p[this_1], i * 15) if PlayerData_title[this_1] == 2 then set PlayerData_rank[this_1] = "|cffADD642*Admin*" if PlayerData_tagfx[this_1] == null then set PlayerData_tagfx[this_1] = AddSpecialEffectTarget("war3mapImported\\HolyShield Seal_Portrait.mdx", UnitEntity_actor[PlayerData_escaper[this_1]], "chest") endif endif if PlayerData_XP[this_1] > 10000 then set PlayerData_lvlfx[this_1] = AddSpecialEffectTarget("war3mapImported\\Life High_Portrait.mdx", UnitEntity_actor[PlayerData_escaper[this_1]], "chest") elseif PlayerData_XP[this_1] > 7500 then set PlayerData_lvlfx[this_1] = AddSpecialEffectTarget("war3mapImported\\Life High.mdx", UnitEntity_actor[PlayerData_escaper[this_1]], "chest") elseif PlayerData_XP[this_1] > 4000 then set PlayerData_lvlfx[this_1] = AddSpecialEffectTarget("war3mapImported\\Life Low_Portrait.mdx", UnitEntity_actor[PlayerData_escaper[this_1]], "chest") elseif PlayerData_XP[this_1] > 1000 then set PlayerData_lvlfx[this_1] = AddSpecialEffectTarget("war3mapImported\\Life Low.mdx", UnitEntity_actor[PlayerData_escaper[this_1]], "chest") endif if PlayerData_XP[this_1] >= GameConstants_expBounds[3] and ( not UnitHasItemOfTypeBJ(UnitEntity_actor[PlayerData_escaper[this_1]], 1227894834)) then call printTimedToPlayer("You have unlocked the |cffFFCC00jukebox|r!", 25., PlayerData_p[this_1]) call unit_addItemById(UnitEntity_actor[PlayerData_escaper[this_1]], 1227894834) endif endfunction function dispatch_PlayerData_PlayerData_PlayerData_updateRank takes integer this_1 returns nothing if PlayerData_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling PlayerData.updateRank") else call error("Called PlayerData.updateRank on invalid object.") endif endif call PlayerData_updateRank(this_1) endfunction function PlayerData_addXp takes integer this_1, integer amount, boolean time returns nothing if (PlayerData_localFilesEnabled[this_1] and dispatch_LinkedList_LinkedList_LinkedList_size(PlayerData_allPlayers) > 1) or PlayerData_title[this_1] == 2 then if time then set PlayerData_XP[this_1] = PlayerData_XP[this_1] + amount elseif PlayerData_lastExpGain[this_1] < PlayerData_minutes then set PlayerData_lastExpGain[this_1] = PlayerData_minutes call Log_debug("add current xp:" + int_toString(PlayerData_XP[this_1])) set PlayerData_XP[this_1] = PlayerData_XP[this_1] + amount call Log_debug("add new xp:" + int_toString(PlayerData_XP[this_1])) endif call dispatch_PlayerData_PlayerData_PlayerData_updateRank(this_1) endif endfunction function dispatch_PlayerData_PlayerData_PlayerData_addXp takes integer this_1, integer amount, boolean time returns nothing if PlayerData_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling PlayerData.addXp") else call error("Called PlayerData.addXp on invalid object.") endif endif call PlayerData_addXp(this_1, amount, time) endfunction function run_forEach_PlayerData takes integer this_1, integer p returns nothing call dispatch_PlayerData_PlayerData_PlayerData_addXp(p, 10, true) endfunction function playerFromIndex takes integer index returns player return Player_players[index] endfunction function EscaperDefinition_LinkedListModule_getNext takes integer this_1 returns integer if EscaperDefinition_LinkedListModule_next[this_1] == 0 then return EscaperDefinition_LinkedListModule_first endif return EscaperDefinition_LinkedListModule_next[this_1] endfunction function dispatch_EscaperDefinition_PickSystem_EscaperDefinition_LinkedListModule_getNext takes integer this_1 returns integer local integer PickSystem_EscaperDefinition_LinkedListModule_getNext_result if EscaperDefinition_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling EscaperDefinition.getNext") else call error("Called EscaperDefinition.getNext on invalid object.") endif endif set PickSystem_EscaperDefinition_LinkedListModule_getNext_result = EscaperDefinition_LinkedListModule_getNext(this_1) return PickSystem_EscaperDefinition_LinkedListModule_getNext_result endfunction function EscaperDefinition_showTo takes integer this_1, integer pd_1 returns nothing local texttag receiver if Player_localPlayer == PlayerData_p[pd_1] then set receiver = FText_tt[EscaperDefinition_nameTt[this_1]] call texttag_setVisibility(receiver, true) call unit_setVertexColor_4202(EscaperDefinition_escaper[this_1], Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha) endif endfunction function dispatch_EscaperDefinition_PickSystem_EscaperDefinition_showTo takes integer this_1, integer pd_1 returns nothing if EscaperDefinition_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling EscaperDefinition.showTo") else call error("Called EscaperDefinition.showTo on invalid object.") endif endif call EscaperDefinition_showTo(this_1, pd_1) endfunction function player_getData takes player this_1 returns integer return PlayerData_pData[player_getId(this_1)] endfunction function run_forEach_PickSystem takes integer this_1, player p returns nothing local integer i local integer temp set PickSystem_currentView[player_getId(p)] = EscaperDefinition_LinkedListModule_first set i = 0 set temp = GetRandomInt(0, EscaperDefinition_LinkedListModule_size) loop exitwhen i > temp set PickSystem_currentView[player_getId(p)] = dispatch_EscaperDefinition_PickSystem_EscaperDefinition_LinkedListModule_getNext(PickSystem_currentView[player_getId(p)]) set i = i + 1 endloop call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_showTo(PickSystem_currentView[player_getId(p)], player_getData(p)) endfunction function run_wrapper_4028 takes integer this_1, integer t returns nothing call run_forEach_PickSystem(this_1, playerFromIndex(t)) endfunction function alloc_PlayerData takes nothing returns integer local integer this_1 if PlayerData_firstFree == 0 then if PlayerData_maxIndex < JASS_MAX_ARRAY_SIZE then set PlayerData_maxIndex = PlayerData_maxIndex + 1 set this_1 = PlayerData_maxIndex set PlayerData_typeId[this_1] = 1048 else call error("Out of memory: Could not create PlayerData.") set this_1 = 0 endif else set PlayerData_firstFree = PlayerData_firstFree - 1 set this_1 = PlayerData_nextFree[PlayerData_firstFree] set PlayerData_typeId[this_1] = 1048 endif return this_1 endfunction function PlayerData_init takes integer this_1 returns nothing set PlayerData_icon[this_1] = Icons_bTNSelectHeroOn set PlayerData_rank[this_1] = "Newbie" set PlayerData_XP[this_1] = 40 set PlayerData_lvlfx[this_1] = null set PlayerData_tagfx[this_1] = null set PlayerData_localFilesEnabled[this_1] = false set PlayerData_lastExpGain[this_1] = 0 set PlayerData_zCam[this_1] = 1600. set PlayerData_selector[this_1] = 0 endfunction function player_getNameColored_3916 takes player this_1 returns string return player_getNameColored(this_1, false) endfunction function PlayerData_checkName takes integer this_1 returns nothing local string cname = string_toLowerCase(PlayerData_mbname[this_1]) local integer i = 0 loop exitwhen i > 20 if cname == string_toLowerCase(GameConstants_names[i]) then set PlayerData_mbname[this_1] = GameConstants_tags[i] + "|r" + player_getNameColored_3916(PlayerData_p[this_1]) endif set i = i + 1 endloop endfunction function dispatch_PlayerData_PlayerData_PlayerData_checkName takes integer this_1 returns nothing if PlayerData_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling PlayerData.checkName") else call error("Called PlayerData.checkName on invalid object.") endif endif call PlayerData_checkName(this_1) endfunction function player_getName takes player this_1 returns string return player_getName_3914(this_1, false) endfunction function construct_PlayerData takes integer this_1, player p returns nothing local integer i call PlayerData_init(this_1) set PlayerData_pData[player_getId(p)] = this_1 set PlayerData_p[this_1] = p set PlayerData_id[this_1] = player_getId(p) set PlayerData_name[this_1] = player_getName(p) set PlayerData_pData[PlayerData_id[this_1]] = this_1 call int_toString(string_getHash(PlayerData_name[this_1])) set PlayerData_mbname[this_1] = PlayerData_name[this_1] call dispatch_PlayerData_PlayerData_PlayerData_checkName(this_1) set i = 0 loop exitwhen not (GameConstants_names[i] != null) set i = i + 1 endloop set PlayerData_mbname[this_1] = player_getNameColored_3916(p) call dispatch_LinkedList_LinkedList_LinkedList_add_1(PlayerData_allPlayers, this_1) if PlayerData_id[this_1] > 7 then set PlayerData_role[this_1] = 0 call dispatch_LinkedList_LinkedList_LinkedList_add_1(PlayerData_builderPlayers, this_1) else set PlayerData_role[this_1] = 1 call dispatch_LinkedList_LinkedList_LinkedList_add_1(PlayerData_escaperPlayers, this_1) endif endfunction function new_PlayerData takes player p returns integer local integer this_1 = alloc_PlayerData() call construct_PlayerData(this_1, p) return this_1 endfunction function run_forEach_PlayerData_4020 takes integer this_1, player p returns nothing call new_PlayerData(p) endfunction function run_wrapper_4029 takes integer this_1, integer t returns nothing call run_forEach_PlayerData_4020(this_1, playerFromIndex(t)) endfunction function dispatch_LLItrClosure_LinkedList_LLItrClosure_run takes integer this_1, integer t returns nothing if LLItrClosure_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LLItrClosure.run") else call error("Called LLItrClosure.run on invalid object.") endif endif if LLItrClosure_typeId[this_1] <= 992 then if LLItrClosure_typeId[this_1] <= 991 then if LLItrClosure_typeId[this_1] <= 990 then call run_forEach_Fireball_MGWarlock(this_1, t) else call run_forEach_LinkedList_LinkedList(this_1, t) endif else call run_wrapper_4028(this_1, t) endif elseif LLItrClosure_typeId[this_1] <= 993 then call run_forEach_PlayerData(this_1, t) else call run_wrapper_4029(this_1, t) endif endfunction function dealloc_LLItrClosure takes integer obj_1 returns nothing if LLItrClosure_typeId[obj_1] == 0 then call error("Double free: object of type LLItrClosure") else set LLItrClosure_nextFree[LLItrClosure_firstFree] = obj_1 set LLItrClosure_firstFree = LLItrClosure_firstFree + 1 set LLItrClosure_typeId[obj_1] = 0 endif endfunction function destroyLLItrClosure takes integer this_1 returns nothing call dealloc_LLItrClosure(this_1) endfunction function dispatch_LLItrClosure_destroyLLItrClosure takes integer this_1 returns nothing if LLItrClosure_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LLItrClosure.LLItrClosure") else call error("Called LLItrClosure.LLItrClosure on invalid object.") endif endif call destroyLLItrClosure(this_1) endfunction function LinkedList_forEach takes integer this_1, integer itr_1 returns integer local integer r = LLEntry_next[LinkedList_dummy[this_1]] loop exitwhen not (r != LinkedList_dummy[this_1]) call dispatch_LLItrClosure_LinkedList_LLItrClosure_run(itr_1, LLEntry_elem[r]) set r = LLEntry_next[r] endloop call dispatch_LLItrClosure_destroyLLItrClosure(itr_1) return this_1 endfunction function dispatch_LinkedList_LinkedList_LinkedList_forEach takes integer this_1, integer itr_1 returns integer local integer LinkedList_LinkedList_forEach_result if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.forEach") else call error("Called LinkedList.forEach on invalid object.") endif endif set LinkedList_LinkedList_forEach_result = LinkedList_forEach(this_1, itr_1) return LinkedList_LinkedList_forEach_result endfunction function multiboard_getItem takes multiboard this_1, integer row, integer column returns multiboarditem return MultiboardGetItem(this_1, row, column) endfunction function multiboarditem_setIcon takes multiboarditem this_1, string iconFileName returns nothing local string v local string cond_result if iconFileName == null then set cond_result = "" else set cond_result = iconFileName endif set v = cond_result call MultiboardSetItemIcon(this_1, v) endfunction function multiboarditem_setValue takes multiboarditem this_1, string value returns nothing local string v local string cond_result if value == null then set cond_result = "" else set cond_result = value endif set v = cond_result call MultiboardSetItemValue(this_1, v) endfunction function Board_setNewItem takes integer this_1, integer i, integer j, string value, string icon returns nothing call SaveInteger(Board_mbdata[this_1], i, j, MultiboardClass_counter) call multiboarditem_setValue(multiboard_getItem(Board_board[this_1], i, j), value) call multiboarditem_setIcon(multiboard_getItem(Board_board[this_1], i, j), icon) set MultiboardClass_counter = MultiboardClass_counter + 1 endfunction function dispatch_Board_MultiboardClass_Board_setNewItem takes integer this_1, integer i, integer j, string value, string icon returns nothing if Board_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Board.setNewItem") else call error("Called Board.setNewItem on invalid object.") endif endif call Board_setNewItem(this_1, i, j, value, icon) endfunction function PlayerData_setMBRow takes integer this_1, integer row returns nothing local integer receiver = PlayerData_playerboard local string cond_result local integer receiver_1 local integer receiver_2 local integer temp local integer temp_1 call dispatch_Board_MultiboardClass_Board_setNewItem(receiver, row, 0, PlayerData_mbname[this_1], PlayerData_icon[this_1]) set receiver_1 = receiver set temp = receiver_1 set temp_1 = row if PlayerData_escaper[this_1] == 0 then set cond_result = "-" else set cond_result = int_toString(Escaper_deaths[PlayerData_escaper[this_1]]) endif call dispatch_Board_MultiboardClass_Board_setNewItem(temp, temp_1, 1, cond_result, null) set receiver_2 = receiver_1 call dispatch_Board_MultiboardClass_Board_setNewItem(receiver_2, row, 2, PlayerData_rank[this_1], null) endfunction function dispatch_PlayerData_PlayerData_PlayerData_setMBRow takes integer this_1, integer row returns nothing if PlayerData_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling PlayerData.setMBRow") else call error("Called PlayerData.setMBRow on invalid object.") endif endif call PlayerData_setMBRow(this_1, row) endfunction function multiboard_setTitle takes multiboard this_1, string label returns nothing call MultiboardSetTitleText(this_1, label) endfunction function printTimed takes string msg, real duration returns nothing call DisplayTimedTextToPlayer(Player_localPlayer, 0., 0., duration, msg) endfunction function setTime takes nothing returns nothing local string secs local string mins local string cond_result local string cond_result_1 local integer clVar local integer i local integer iterator local integer pd_1 local string temp local string temp_1 local integer temp_2 set PlayerData_seconds = PlayerData_seconds + 1 set secs = "|cffffffff" set mins = "|cffffffff" set temp = secs if PlayerData_seconds < 10 then set cond_result = "0" + int_toString(PlayerData_seconds) else set cond_result = int_toString(PlayerData_seconds) endif set secs = temp + cond_result set temp_1 = mins if PlayerData_minutes < 10 then set cond_result_1 = "0" + int_toString(PlayerData_minutes) else set cond_result_1 = int_toString(PlayerData_minutes) endif set mins = temp_1 + cond_result_1 set secs = secs + "|r" set mins = mins + "|r" if PlayerData_seconds >= 60 then set PlayerData_seconds = 0 set PlayerData_minutes = PlayerData_minutes + 1 if ModuloReal(PlayerData_minutes, 10) == 0. then call printTimed("|cffFFCC00Visit our discord server |r- |cff217BD6discord.gg/yr3ZyYQ", 45.) endif if ModuloReal(PlayerData_minutes, 5) == 0. then set temp_2 = PlayerData_allPlayers set clVar = alloc_LLItrClosure_forEach_PlayerData() call dispatch_LinkedList_LinkedList_LinkedList_forEach(temp_2, clVar) endif endif call multiboard_setTitle(Board_board[PlayerData_playerboard], GameConstants_MAP_VER + " [ " + mins + " : " + secs + " ]") set i = 1 set iterator = LinkedList_iterator(PlayerData_allPlayers) loop exitwhen not LLIterator_hasNext(iterator) set pd_1 = LLIterator_next(iterator) call dispatch_PlayerData_PlayerData_PlayerData_setMBRow(pd_1, i) if PlayerData_escaper[pd_1] != 0 then call SetCameraFieldForPlayer(PlayerData_p[pd_1], CAMERA_FIELD_TARGET_DISTANCE, PlayerData_zCam[pd_1], 1.) endif set i = i + 1 endloop call LLIterator_close(iterator) endfunction function call_doPeriodically_PlayerData takes integer this_1, integer cb_1 returns nothing call setTime() endfunction function dispatch_CallbackPeriodic_ClosureTimers_CallbackPeriodic_call takes integer this_1, integer cb_1 returns nothing if CallbackPeriodic_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling CallbackPeriodic.call") else call error("Called CallbackPeriodic.call on invalid object.") endif endif if CallbackPeriodic_typeId[this_1] <= 666 then if CallbackPeriodic_typeId[this_1] <= 665 then if CallbackPeriodic_typeId[this_1] <= 664 then call call_doPeriodically_MGRandKill_MGRandKill(this_1, cb_1) else call call_doPeriodically_MGRandKill_MGRandKill_2005(this_1, cb_1) endif else call call_doPeriodically_MGRandKill_MGRandKill_2006(this_1, cb_1) endif elseif CallbackPeriodic_typeId[this_1] <= 668 then if CallbackPeriodic_typeId[this_1] <= 667 then call call_doPeriodically_MGSlide_MGSlide(this_1, cb_1) else call call_doPeriodically_MGWarlock_MGWarlock(this_1, cb_1) endif else call call_doPeriodically_PlayerData(this_1, cb_1) endif endfunction function CallbackPeriodic_staticCallback takes nothing returns nothing local integer cb_1 = timer_getData(GetExpiredTimer()) call dispatch_CallbackPeriodic_ClosureTimers_CallbackPeriodic_call(cb_1, cb_1) endfunction function CustomBar_fadeOutCallback takes nothing returns nothing local integer bar = timer_getData(GetExpiredTimer()) set CustomBar_t[bar] = null call dispatch_CustomBar_destroyCustomBar(bar) call timer_release(GetExpiredTimer()) endfunction function unit_setAnimation takes unit this_1, string name returns nothing call SetUnitAnimation(this_1, name) endfunction function Door_openDoor takes integer this_1 returns nothing call unit_setAnimation(UnitEntity_actor[this_1], "Death Alternate") call unit_remove(Door_pathing[this_1]) set Door_opened[this_1] = true if Door_vertical[this_1] then set Door_pathing[this_1] = createUnit(Entity_owner[this_1], Door_DOORPATH_O, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, real_fromDeg(0.)) else set Door_pathing[this_1] = createUnit(Entity_owner[this_1], Door_DOORPATH_O, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, real_fromDeg(270.)) endif endfunction function dispatch_Door_Door_Door_openDoor takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Door.openDoor") else call error("Called Door.openDoor on invalid object.") endif endif call Door_openDoor(this_1) endfunction function unit_inventorySize takes unit this_1 returns integer return UnitInventorySize(this_1) endfunction function unit_itemInSlot takes unit this_1, integer inventoryIndex returns item return UnitItemInSlot(this_1, inventoryIndex) endfunction function unit_getItemById takes unit this_1, integer itemId returns item local item itm = null local integer slot = 0 local integer temp = unit_inventorySize(this_1) - 1 loop exitwhen slot > temp if item_getTypeId(unit_itemInSlot(this_1, slot)) == itemId then set itm = unit_itemInSlot(this_1, slot) exitwhen true endif set slot = slot + 1 endloop return itm endfunction function unit_hasItemById takes unit this_1, integer itemId returns boolean return unit_getItemById(this_1, itemId) != null endfunction function Door_keyopen takes nothing returns nothing local unit source = trigger_getSource(GetTriggeringTrigger()) local unit u_1 = GetTriggerUnit() local integer e_1 = unit_getEntity(u_1) local integer door = unit_getEntity(source) local integer es local integer kdata local integer pd_1 local integer instanceOfTemp local boolean andLeft if not Door_opened[door] then set instanceOfTemp = Serializable_typeId[e_1] set andLeft = instanceOfTemp >= 1162 and instanceOfTemp <= 1167 else set andLeft = false endif if andLeft then set es = e_1 if Entity_pos_z[es] < 64. then if unit_hasItemById(u_1, Door_KEY_COLOR_ID[Door_col[door]]) then set kdata = item_getEntity(unit_getItemById(u_1, Door_KEY_COLOR_ID[Door_col[door]])) if kdata != 0 then call Log_debug("kdata Terminate") call cyc_RevivePoint_terminate(18, kdata) call dispatch_Door_Door_Door_openDoor(door) set pd_1 = PlayerData_pData[player_getId(Entity_owner[e_1])] call dispatch_PlayerData_PlayerData_PlayerData_addXp(pd_1, 10, false) endif endif endif endif endfunction function Entity_setXY takes integer this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing local real tuple_temp = pos_x_1 local real tuple_temp_1 = pos_y_1 local real tuple_temp_2 = pos_z set Entity_pos_x[this_1] = tuple_temp set Entity_pos_y[this_1] = tuple_temp_1 set Entity_pos_z[this_1] = tuple_temp_2 endfunction function Fx2Entity_setXY takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z returns nothing local real tuple_temp = tpos_x_1 local real tuple_temp_1 = tpos_y_1 local real tuple_temp_2 = tpos_z set Entity_pos_x[this_1] = tuple_temp set Entity_pos_y[this_1] = tuple_temp_1 set Entity_pos_z[this_1] = tuple_temp_2 call effect_setPos(Fx2_eff[Fx2Entity_fx[this_1]], tpos_x_1, tpos_y_1, tpos_z) endfunction function Fx_setXYZ takes integer this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing call unit_setXYZReal(Fx_dummy[this_1], pos_x_1, pos_y_1, pos_z) endfunction function dispatch_Fx_Fx_Fx_setXYZ takes integer this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing if Fx_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Fx.setXYZ") else call error("Called Fx.setXYZ on invalid object.") endif endif call Fx_setXYZ(this_1, pos_x_1, pos_y_1, pos_z) endfunction function FxEntity_setXY takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z returns nothing local real tuple_temp = tpos_x_1 local real tuple_temp_1 = tpos_y_1 local real tuple_temp_2 = tpos_z set Entity_pos_x[this_1] = tuple_temp set Entity_pos_y[this_1] = tuple_temp_1 set Entity_pos_z[this_1] = tuple_temp_2 call dispatch_Fx_Fx_Fx_setXYZ(FxEntity_fx[this_1], tpos_x_1, tpos_y_1, tpos_z) endfunction function item_setPos takes item this_1, real pos_x_1, real pos_y_1 returns nothing call SetItemPosition(this_1, pos_x_1, pos_y_1) endfunction function ItemEntity_setXY takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z returns nothing local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 if vec3_inPlayable(tpos_x_1, tpos_y_1, tpos_z) then set tuple_temp = tpos_x_1 set tuple_temp_1 = tpos_y_1 set tuple_temp_2 = tpos_z set Entity_pos_x[this_1] = tuple_temp set Entity_pos_y[this_1] = tuple_temp_1 set Entity_pos_z[this_1] = tuple_temp_2 call item_setPos(ItemEntity_actor[this_1], vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y) else call cyc_RevivePoint_terminate(18, this_1) endif endfunction function SetupObject_setXY takes integer this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing local real tuple_temp = pos_x_1 local real tuple_temp_1 = pos_y_1 local real tuple_temp_2 = pos_z set Entity_pos_x[this_1] = tuple_temp set Entity_pos_y[this_1] = tuple_temp_1 set Entity_pos_z[this_1] = tuple_temp_2 call unit_setXYZ(UnitEntity_actor[this_1], pos_x_1, pos_y_1, pos_z) call unit_setXYZ(SetupObject_setup[this_1], pos_x_1, pos_y_1, pos_z) endfunction function vec3_toString takes real this_x, real this_y, real this_z returns string return "Vector3 [ " + real_toString(this_x) + ", " + real_toString(this_y) + ", " + real_toString(this_z) + " ]" endfunction function UnitEntity_setXY takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z returns nothing local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 if vec3_inPlayable(tpos_x_1, tpos_y_1, tpos_z) then set tuple_temp = tpos_x_1 set tuple_temp_1 = tpos_y_1 set tuple_temp_2 = tpos_z set Entity_pos_x[this_1] = tuple_temp set Entity_pos_y[this_1] = tuple_temp_1 set Entity_pos_z[this_1] = tuple_temp_2 if Frentity_DYNAMIC_Z then call unit_setXYZReal(UnitEntity_actor[this_1], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) else call unit_setXYZ(UnitEntity_actor[this_1], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) endif else call Log_error("out of bounds: " + vec3_toString(tpos_x_1, tpos_y_1, tpos_z)) call dispatch_UnitEntity_Entity_UnitEntity_setPos(this_1, Vectors_ZERO3_x, Vectors_ZERO3_y, Vectors_ZERO3_z) endif endfunction function dispatch_Entity_Entity_Entity_setXY takes integer this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Entity.setXY") else call error("Called Entity.setXY on invalid object.") endif endif if Serializable_typeId[this_1] <= 1158 then if Serializable_typeId[this_1] <= 1150 then if Serializable_typeId[this_1] <= 1147 then if Serializable_typeId[this_1] <= 1136 then call Entity_setXY(this_1, pos_x_1, pos_y_1, pos_z) else call Fx2Entity_setXY(this_1, pos_x_1, pos_y_1, pos_z) endif else call FxEntity_setXY(this_1, pos_x_1, pos_y_1, pos_z) endif elseif Serializable_typeId[this_1] <= 1157 then call ItemEntity_setXY(this_1, pos_x_1, pos_y_1, pos_z) else call Entity_setXY(this_1, pos_x_1, pos_y_1, pos_z) endif elseif Serializable_typeId[this_1] <= 1170 then if Serializable_typeId[this_1] <= 1167 then if Serializable_typeId[this_1] <= 1161 then call UnitEntity_setXY(this_1, pos_x_1, pos_y_1, pos_z) else call Escaper_setXY(this_1, pos_x_1, pos_y_1, pos_z) endif else call UnitEntity_setXY(this_1, pos_x_1, pos_y_1, pos_z) endif elseif Serializable_typeId[this_1] <= 1191 then call SetupObject_setXY(this_1, pos_x_1, pos_y_1, pos_z) else call UnitEntity_setXY(this_1, pos_x_1, pos_y_1, pos_z) endif endfunction function vec3_lengthSquared takes real this_x, real this_y, real this_z returns real return this_x * this_x + this_y * this_y + this_z * this_z endfunction function Entity_update takes integer this_1 returns nothing local real tz local real cond_result if Entity_sleeps[this_1] and ( not Entity_flying[this_1]) and vec3_lengthSquared(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1]) < 1.5 then call dispatch_Entity_Entity_Entity_DupletListModule_deactivate(this_1) else if Frentity_DYNAMIC_Z then set cond_result = vec3_getHeightMap(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) else set cond_result = 0. endif set tz = cond_result if Entity_pos_z[this_1] >= tz then set Entity_vel_z[this_1] = Entity_vel_z[this_1] + Entity_gravity[this_1] call dispatch_Entity_Entity_Entity_setFlying(this_1, true) else set Entity_pos_z[this_1] = tz - 0.01 call dispatch_Entity_Entity_Entity_setFlying(this_1, false) endif call dispatch_Entity_Entity_Entity_setXY(this_1, vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], Entity_speedFactor[this_1]), vec3_op_mult_return_y, vec3_op_mult_return_z), vec3_op_plus_return_y, vec3_op_plus_return_z) endif endfunction function unit_getPos3with takes unit this_1, real z returns real set unit_getPos3with_return_x = unit_getX(this_1) set unit_getPos3with_return_y = unit_getY(this_1) set unit_getPos3with_return_z = z return unit_getPos3with_return_x endfunction function UnitEntity_update takes integer this_1 returns nothing local real tuple_temp = unit_getPos3with(UnitEntity_actor[this_1], Entity_pos_z[this_1]) local real tuple_temp_1 = unit_getPos3with_return_y local real tuple_temp_2 = unit_getPos3with_return_z set Entity_pos_x[this_1] = tuple_temp set Entity_pos_y[this_1] = tuple_temp_1 set Entity_pos_z[this_1] = tuple_temp_2 call Entity_update(this_1) endfunction function angle_toVec takes real this_radians, real len returns real set angle_toVec_return_x = Cos(this_radians) * len set angle_toVec_return_y = Sin(this_radians) * len return angle_toVec_return_x endfunction function LinkedList_isEmpty takes integer this_1 returns boolean return LinkedList_size[this_1] == 0 endfunction function dispatch_LinkedList_LinkedList_LinkedList_isEmpty takes integer this_1 returns boolean local boolean LinkedList_LinkedList_isEmpty_result if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.isEmpty") else call error("Called LinkedList.isEmpty on invalid object.") endif endif set LinkedList_LinkedList_isEmpty_result = LinkedList_isEmpty(this_1) return LinkedList_LinkedList_isEmpty_result endfunction function angle_op_minus takes real this_radians, real other_radians returns real set angle_op_minus_return_radians = this_radians - other_radians return angle_op_minus_return_radians endfunction function angle_op_plus takes real this_radians, real other_radians returns real set angle_op_plus_return_radians = this_radians + other_radians return angle_op_plus_return_radians endfunction function player_getDownKeys takes player this_1 returns boolean local integer tempIndex = player_getId(this_1) set player_getDownKeys_return_up = KeyUtils_keyStatuses_up[tempIndex] set player_getDownKeys_return_down = KeyUtils_keyStatuses_down[tempIndex] set player_getDownKeys_return_left = KeyUtils_keyStatuses_left[tempIndex] set player_getDownKeys_return_right = KeyUtils_keyStatuses_right[tempIndex] return player_getDownKeys_return_up endfunction function real_lerp takes real this_1, real target, real alpha returns real return this_1 * (1.0 - alpha) + target * alpha endfunction function Spaceship_foo takes integer this_1 returns nothing local boolean tuple_temp = player_getDownKeys(Entity_owner[this_1]) local boolean tuple_temp_1 = player_getDownKeys_return_down local boolean tuple_temp_2 = player_getDownKeys_return_left local boolean tuple_temp_3 = player_getDownKeys_return_right local boolean downKeys_up = tuple_temp local boolean downKeys_down = tuple_temp_1 local boolean downKeys_left = tuple_temp_2 local boolean downKeys_right = tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 set Spaceship_acc[this_1] = real_lerp(Spaceship_acc[this_1], 0., 0.1) if downKeys_left then set tuple_temp_4 = angle_op_plus(Spaceship_xyAngle_radians[this_1], 0.105) set Spaceship_xyAngle_radians[this_1] = tuple_temp_4 endif if downKeys_right then set tuple_temp_5 = angle_op_minus(Spaceship_xyAngle_radians[this_1], 0.105) set Spaceship_xyAngle_radians[this_1] = tuple_temp_5 endif set tuple_temp_6 = real_fromDeg(ModuloReal(angle_degrees(Spaceship_xyAngle_radians[this_1]), 360.)) set Spaceship_xyAngle_radians[this_1] = tuple_temp_6 call unit_setFacing(UnitEntity_actor[this_1], Spaceship_xyAngle_radians[this_1]) if Player_localPlayer == Entity_owner[this_1] then call CameraSetupApplyForceDuration(gg_cam_spaceycam, true, 0.) endif if downKeys_up then set Spaceship_acc[this_1] = real_lerp(Spaceship_acc[this_1], 0.75, 0.125) endif if downKeys_down then set Spaceship_acc[this_1] = real_lerp(Spaceship_acc[this_1], - 0.2, 0.125) endif endfunction function dispatch_Spaceship_MGSpacey_Spaceship_foo takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Spaceship.foo") else call error("Called Spaceship.foo on invalid object.") endif endif call Spaceship_foo(this_1) endfunction function vec3_setLength takes real this_x, real this_y, real this_z, real length returns real local real l = vec3_length(this_x, this_y, this_z) if l == 0.0 then call Log_warn("vector.setLength error: The length of the vector is 0.0!") set vec3_setLength_return_x = 0. set vec3_setLength_return_y = 0. set vec3_setLength_return_z = 0. return vec3_setLength_return_x endif set l = length / l set vec3_setLength_return_x = this_x * l set vec3_setLength_return_y = this_y * l set vec3_setLength_return_z = this_z * l return vec3_setLength_return_x endfunction function Spaceship_update takes integer this_1 returns nothing local real lgSq local real tpos_x_1 local real tpos_y_1 local integer itr_1 local integer rock local integer from local boolean isEnd local integer iterator local integer ship local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 local real tuple_temp_7 local real tuple_temp_8 local real tuple_temp_9 local real tuple_temp_10 call dispatch_Spaceship_MGSpacey_Spaceship_foo(this_1) set tuple_temp = vec3_op_plus_4280(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], angle_toVec(Spaceship_xyAngle_radians[this_1], Spaceship_acc[this_1]), angle_toVec_return_y) set tuple_temp_1 = vec3_op_plus_return_y_3134 set tuple_temp_2 = vec3_op_plus_return_z_3136 set Entity_vel_x[this_1] = tuple_temp set Entity_vel_y[this_1] = tuple_temp_1 set Entity_vel_z[this_1] = tuple_temp_2 set tuple_temp_3 = vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], 0.995) set tuple_temp_4 = vec3_op_mult_return_y set tuple_temp_5 = vec3_op_mult_return_z set Entity_vel_x[this_1] = tuple_temp_3 set Entity_vel_y[this_1] = tuple_temp_4 set Entity_vel_z[this_1] = tuple_temp_5 set lgSq = vec3_lengthSquared(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1]) if lgSq > real_squared(Spaceship_maxSpeed[this_1]) then set tuple_temp_6 = vec3_setLength(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], Spaceship_maxSpeed[this_1]) set tuple_temp_7 = vec3_setLength_return_y set tuple_temp_8 = vec3_setLength_return_z set Entity_vel_x[this_1] = tuple_temp_6 set Entity_vel_y[this_1] = tuple_temp_7 set Entity_vel_z[this_1] = tuple_temp_8 endif set tuple_temp_9 = vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], 6.), vec3_op_mult_return_y, vec3_op_mult_return_z) set tuple_temp_10 = vec3_op_plus_return_y set tpos_x_1 = tuple_temp_9 set tpos_y_1 = tuple_temp_10 if tpos_x_1 < rect_getMinX(gg_rct_spaceygamearea) then set Entity_vel_x[this_1] = - (0.8 * Entity_vel_x[this_1]) elseif tpos_x_1 > rect_getMaxX(gg_rct_spaceygamearea) then set Entity_vel_x[this_1] = - (0.8 * Entity_vel_x[this_1]) endif if tpos_y_1 < rect_getMinY(gg_rct_spaceygamearea) then set Entity_vel_y[this_1] = - (0.8 * Entity_vel_y[this_1]) elseif tpos_y_1 > rect_getMaxY(gg_rct_spaceygamearea) then set Entity_vel_y[this_1] = - (0.8 * Entity_vel_y[this_1]) endif call UnitEntity_update(this_1) set itr_1 = dispatch_LinkedList_LinkedList_LinkedList_staticItr(MGSpacey_rocks) set from = itr_1 loop exitwhen not LLIterator_hasNext(from) set rock = LLIterator_next(from) if rock == 0 or Entity_done[rock] then call dispatch_LLIterator_LinkedList_LLIterator_remove(itr_1) elseif vec3_distanceTo2dSq(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], vec3_toVec2(Entity_pos_x[rock], Entity_pos_y[rock], Entity_pos_z[rock]), vec3_toVec2_return_y) < 30 * 30 + SpaceRock_radiusSq[rock] then call cyc_RevivePoint_terminate(18, rock) call dispatch_LLIterator_LinkedList_LLIterator_remove(itr_1) set Spaceship_hp[this_1] = Spaceship_hp[this_1] - 1 if Spaceship_hp[this_1] < 0 then call unit_setAnimation(UnitEntity_actor[this_1], "death") call dispatch_Entity_Entity_Entity_DupletListModule_deactivate(this_1) set isEnd = true set iterator = LinkedList_iterator(MGSpacey_ships) loop exitwhen not LLIterator_hasNext(iterator) set ship = LLIterator_next(iterator) if Entity_DupletListModule_active[ship] then set isEnd = false exitwhen true endif endloop call LLIterator_close(iterator) if isEnd or dispatch_LinkedList_LinkedList_LinkedList_isEmpty(MGSpacey_rocks) then call dispatch_Minigame_Minigame_Minigame_reset(MGSpacey_minigame) endif exitwhen true endif endif endloop endfunction function dispatch_Spaceship_MGSpacey_Spaceship_update takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Spaceship.update") else call error("Called Spaceship.update on invalid object.") endif endif call Spaceship_update(this_1) endfunction function onEvent_addKeyListener_MGSpacey_MGSpacey takes integer this_1 returns nothing local integer iterator = LinkedList_iterator(MGSpacey_ships) local integer ship loop exitwhen not LLIterator_hasNext(iterator) set ship = LLIterator_next(iterator) if Entity_owner[ship] == GetTriggerPlayer() then call dispatch_Spaceship_MGSpacey_Spaceship_update(ship) exitwhen true endif endloop call LLIterator_close(iterator) endfunction function EventData_getAbilityTargetPos takes nothing returns real set EventData_getAbilityTargetPos_return_x = GetSpellTargetX() set EventData_getAbilityTargetPos_return_y = GetSpellTargetY() return EventData_getAbilityTargetPos_return_x endfunction function EventData_getSpellTargetPos takes nothing returns real set EventData_getSpellTargetPos_return_x = EventData_getAbilityTargetPos() set EventData_getSpellTargetPos_return_y = EventData_getAbilityTargetPos_return_y return EventData_getSpellTargetPos_return_x endfunction function alloc_BallProjectile takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1140 else call error("Out of memory: Could not create BallProjectile.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1140 endif return this_1 endfunction function BallProjectile_init takes integer this_1 returns nothing endfunction function construct_AirPhysicsProjectile_AirPhysicsModule takes integer this_1 returns nothing endfunction function AirPhysicsProjectile_init takes integer this_1 returns nothing set AirPhysicsProjectile_AirPhysicsModule_affectedByGravity[this_1] = true set AirPhysicsProjectile_AirPhysicsModule_terrainZ[this_1] = 0. set AirPhysicsProjectile_AirPhysicsModule_surfaceFriction[this_1] = 0.9 set AirPhysicsProjectile_AirPhysicsModule_restitution[this_1] = 0.9 set AirPhysicsProjectile_AirPhysicsModule_mass[this_1] = 10. call construct_AirPhysicsProjectile_AirPhysicsModule(this_1) endfunction function Projectile_init takes integer this_1 returns nothing local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 set Projectile_timed[this_1] = false set Projectile_ranged[this_1] = false set Projectile_use3DDistance[this_1] = true set Projectile_hitGroup[this_1] = null set Projectile_isPointTarget[this_1] = false set tuple_temp = Vectors_ZERO3_x set tuple_temp_1 = Vectors_ZERO3_y set tuple_temp_2 = Vectors_ZERO3_z set Projectile_targetPoint_x[this_1] = tuple_temp set Projectile_targetPoint_y[this_1] = tuple_temp_1 set Projectile_targetPoint_z[this_1] = tuple_temp_2 set Projectile_killZ[this_1] = false set Projectile_killBelowZ[this_1] = 0. set Projectile_acc[this_1] = 1.0 set Projectile_maxDist[this_1] = 0. set Projectile_time[this_1] = 0. set Projectile_maxTime[this_1] = 0. set Projectile_target[this_1] = 0 set Projectile_onHit[this_1] = 0 set Projectile_onEnd[this_1] = 0 endfunction function construct_Fx2Entity takes integer this_1, player owner, real pos_x_1, real pos_y_1, real pos_z, real radius, real xyAngle_radians, string sfxpath returns nothing call construct_Entity5(this_1, owner, pos_x_1, pos_y_1, pos_z, radius) call Fx2Entity_init(this_1) call dispatch_Fx2Entity_Fx2Entity_Fx2Entity_setupFx(this_1, xyAngle_radians, sfxpath) endfunction function Projectile_setXYAngle takes integer this_1, real xyA_radians returns nothing local real tuple_temp = xyA_radians set Projectile_xyAngle_radians[this_1] = tuple_temp call effect_setYaw(Fx2_eff[Fx2Entity_fx[this_1]], xyA_radians) endfunction function dispatch_Projectile_Projectile_Projectile_setXYAngle takes integer this_1, real xyA_radians returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Projectile.setXYAngle") else call error("Called Projectile.setXYAngle on invalid object.") endif endif call Projectile_setXYAngle(this_1, xyA_radians) endfunction function construct_Projectile takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, real radius, player owner, real xyAngle_radians, string fxpath returns nothing local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 call construct_Fx2Entity(this_1, owner, pos_x_1, pos_y_1, pos_z, radius, xyAngle_radians, fxpath) call Projectile_init(this_1) set tuple_temp = pos_x_1 set tuple_temp_1 = pos_y_1 set tuple_temp_2 = pos_z set Projectile_startpos_x[this_1] = tuple_temp set Projectile_startpos_y[this_1] = tuple_temp_1 set Projectile_startpos_z[this_1] = tuple_temp_2 call dispatch_Projectile_Projectile_Projectile_setXYAngle(this_1, xyAngle_radians) set Entity_sleeps[this_1] = false set Entity_gravity[this_1] = 0. endfunction function construct_AirPhysicsProjectile takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, real radius, player owner, real xyAngle_radians, string fxpath returns nothing call construct_Projectile(this_1, pos_x_1, pos_y_1, pos_z, radius, owner, xyAngle_radians, fxpath) call AirPhysicsProjectile_init(this_1) call dispatch_Projectile_Projectile_Projectile_setXYAngle(this_1, xyAngle_radians) endfunction function AirPhysicsProjectile_setMass takes integer this_1, real mass returns nothing set AirPhysicsProjectile_AirPhysicsModule_mass[this_1] = mass endfunction function dispatch_AirPhysicsProjectile_PhysicsProjectile_AirPhysicsProjectile_setMass takes integer this_1, real mass returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling AirPhysicsProjectile.setMass") else call error("Called AirPhysicsProjectile.setMass on invalid object.") endif endif call AirPhysicsProjectile_setMass(this_1, mass) endfunction function AirPhysicsProjectile_setRestitution takes integer this_1, real rest returns nothing set AirPhysicsProjectile_AirPhysicsModule_restitution[this_1] = rest endfunction function dispatch_AirPhysicsProjectile_PhysicsProjectile_AirPhysicsProjectile_setRestitution takes integer this_1, real rest returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling AirPhysicsProjectile.setRestitution") else call error("Called AirPhysicsProjectile.setRestitution on invalid object.") endif endif call AirPhysicsProjectile_setRestitution(this_1, rest) endfunction function color_withAlpha takes integer this_red, integer this_green, integer this_blue, integer a returns integer set color_withAlpha_return_red = this_red set color_withAlpha_return_green = this_green set color_withAlpha_return_blue = this_blue set color_withAlpha_return_alpha = a return color_withAlpha_return_red endfunction function effect_setColor takes effect this_1, integer color_red, integer color_green, integer color_blue, integer color_alpha returns nothing call BlzSetSpecialEffectColor(this_1, color_red, color_green, color_blue) call BlzSetSpecialEffectAlpha(this_1, color_alpha) endfunction function Fx2_setTintFromPlayer takes integer this_1, player p returns nothing local integer tuple_temp = color_withAlpha(playercolor_toColor(player_getColor(p)), playercolor_toColor_return_green, playercolor_toColor_return_blue, 255) local integer tuple_temp_1 = color_withAlpha_return_green local integer tuple_temp_2 = color_withAlpha_return_blue local integer tuple_temp_3 = color_withAlpha_return_alpha set Fx2_tint_red[this_1] = tuple_temp set Fx2_tint_green[this_1] = tuple_temp_1 set Fx2_tint_blue[this_1] = tuple_temp_2 set Fx2_tint_alpha[this_1] = tuple_temp_3 call effect_setColor(Fx2_eff[this_1], Fx2_tint_red[this_1], Fx2_tint_green[this_1], Fx2_tint_blue[this_1], Fx2_tint_alpha[this_1]) endfunction function dispatch_Fx2_Fx2_Fx2_setTintFromPlayer takes integer this_1, player p returns nothing if Fx2_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Fx2.setTintFromPlayer") else call error("Called Fx2.setTintFromPlayer on invalid object.") endif endif call Fx2_setTintFromPlayer(this_1, p) endfunction function Projectile_setSpeed takes integer this_1, real speed returns nothing call dispatch_Entity_Entity_Entity_setVel(this_1, angle_cos(Projectile_xyAngle_radians[this_1]) * speed, angle_sin(Projectile_xyAngle_radians[this_1]) * speed, 0.) endfunction function dispatch_Projectile_Projectile_Projectile_setSpeed takes integer this_1, real speed returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Projectile.setSpeed") else call error("Called Projectile.setSpeed on invalid object.") endif endif call Projectile_setSpeed(this_1, speed) endfunction function construct_BallProjectile takes integer this_1, unit caster, real target_x, real target_y, integer itm returns nothing call construct_AirPhysicsProjectile(this_1, unit_getPos3with(caster, 128.), unit_getPos3with_return_y, unit_getPos3with_return_z, 32., unit_getOwner(caster), vec2_angleTo(unit_getPos(caster), unit_getPos_return_y, target_x, target_y), "Cannonball.mdx") call BallProjectile_init(this_1) call dispatch_Projectile_Projectile_Projectile_setSpeed(this_1, 17.) call dispatch_Fx2_Fx2_Fx2_setTintFromPlayer(Fx2Entity_fx[this_1], unit_getOwner(caster)) call dispatch_AirPhysicsProjectile_PhysicsProjectile_AirPhysicsProjectile_setMass(this_1, 145.) call dispatch_AirPhysicsProjectile_PhysicsProjectile_AirPhysicsProjectile_setRestitution(this_1, 0.625) set BallProjectile_ballitem[this_1] = itm endfunction function new_BallProjectile takes unit caster, real target_x, real target_y, integer itm returns integer local integer this_1 = alloc_BallProjectile() call construct_BallProjectile(this_1, caster, target_x, target_y, itm) return this_1 endfunction function unit_removeItem takes unit this_1, item itm returns nothing call UnitRemoveItem(this_1, itm) endfunction function onCast takes nothing returns nothing local integer id = GetSpellAbilityId() local unit caster local real tpos_x_1 local real tpos_y_1 local item itm local integer i local item itm2 local real tuple_temp local real tuple_temp_1 if id == BasicSpells_BALL_SPELL_ID then set caster = GetSpellAbilityUnit() set tuple_temp = EventData_getSpellTargetPos() set tuple_temp_1 = EventData_getSpellTargetPos_return_y set tpos_x_1 = tuple_temp set tpos_y_1 = tuple_temp_1 call unit_removeAbility(caster, BasicSpells_BALL_SPELL_ID) set itm = null set i = 0 loop exitwhen i > 5 set itm2 = UnitItemInSlot(caster, i) if item_getTypeId(itm2) == BasicSpells_BALL_ITEM_ID then set itm = itm2 call unit_removeItem(caster, itm2) exitwhen true endif set i = i + 1 endloop if itm != null then call new_BallProjectile(caster, tpos_x_1, tpos_y_1, item_getEntity(itm)) endif endif endfunction function onEvent_add_BasicSpells takes integer this_1 returns nothing call onCast() endfunction function playerToIndex takes player object returns integer return player_getId(object) endfunction function RegionData_canBuild takes integer this_1, player p returns boolean return (dispatch_HashMap_HashMap_HashMap_has(RegionData_permissions[this_1], playerToIndex(p)) and dispatch_HashMap_HashMap_HashMap_get(RegionData_permissions[this_1], playerToIndex(p)) > 0) or PlayerData_title[PlayerData_pData[player_getId(p)]] == 2 endfunction function dispatch_RegionData_RegionData_RegionData_canBuild takes integer this_1, player p returns boolean local boolean RegionData_RegionData_canBuild_result if RegionData_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling RegionData.canBuild") else call error("Called RegionData.canBuild on invalid object.") endif endif set RegionData_RegionData_canBuild_result = RegionData_canBuild(this_1, p) return RegionData_RegionData_canBuild_result endfunction function unit_abortOrder takes unit this_1 returns boolean if IsUnitPaused(this_1) then return false else call PauseUnit(this_1, true) call IssueImmediateOrder(this_1, "stop") call PauseUnit(this_1, false) endif return true endfunction function Bomber_checkOrder takes integer this_1 returns nothing local integer i = GetIssuedOrderId() local integer e_1 = unit_getEntity(GetOrderedUnit()) local real tuple_temp = EventData_getSpellTargetPos() local real tuple_temp_1 = EventData_getSpellTargetPos_return_y local real tpos_x_1 = tuple_temp local real tpos_y_1 = tuple_temp_1 local integer obj_1 local timer receiver local timer receiver_1 local timer receiver_2 local timer receiver_3 if tpos_x_1 != Vectors_ZERO2_x or tpos_y_1 != Vectors_ZERO2_y and ( not dispatch_RegionData_RegionData_RegionData_canBuild(getRegionData_3302(tpos_x_1, tpos_y_1), Entity_owner[this_1])) then call unit_abortOrder(GetOrderedUnit()) return endif if Serializable_typeId[e_1] == 1160 then set obj_1 = e_1 if GetOrderedUnit() == Bomber_setup[obj_1] then if i == Bomber_MOVE_ORDER then call IssuePointOrderById(UnitEntity_actor[obj_1], i, GetOrderPointX(), GetOrderPointY()) endif if i == Bomber_ATTACK_GROUND_ORDER then call IssuePointOrderById(UnitEntity_actor[obj_1], i, GetOrderPointX(), GetOrderPointY()) set receiver = getTimer() call timer_start(receiver, 0.1, ref_function_Bomber_orderSetup) set receiver_1 = receiver call timer_setData(receiver_1, obj_1) elseif i == Bomber_ATTACK_ORDER then call IssueTargetOrderById(UnitEntity_actor[obj_1], i, GetOrderTargetUnit()) set receiver_2 = getTimer() call timer_start(receiver_2, 0.1, ref_function_Bomber_orderSetup) set receiver_3 = receiver_2 call timer_setData(receiver_3, obj_1) elseif i == Bomber_STOP_ORDER then if Bomber_realorder[obj_1] then call IssueImmediateOrderById(UnitEntity_actor[obj_1], Bomber_STOP_ORDER) else set Bomber_realorder[obj_1] = true endif endif endif endif endfunction function dispatch_Bomber_Bomber_Bomber_checkOrder takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Bomber.checkOrder") else call error("Called Bomber.checkOrder on invalid object.") endif endif call Bomber_checkOrder(this_1) endfunction function onEvent_add_Bomber_Bomber takes integer this_1 returns nothing call dispatch_Bomber_Bomber_Bomber_checkOrder(this_2970[this_1]) endfunction function onEvent_add_Bomber_Bomber_3803 takes integer this_1 returns nothing call dispatch_Bomber_Bomber_Bomber_checkOrder(this_2971[this_1]) endfunction function onEvent_add_Bomber_Bomber_3804 takes integer this_1 returns nothing call dispatch_Bomber_Bomber_Bomber_checkOrder(this_2972[this_1]) endfunction function onEvent_add_Bomber_Bomber_3805 takes integer this_1 returns nothing call dispatch_Bomber_Bomber_Bomber_checkOrder(this_2973[this_1]) endfunction function alloc_CallbackSingle_doAfter_Bomber_Bomber takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 671 else call error("Out of memory: Could not create CallbackSingle_doAfter_Bomber_Bomber.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 671 endif return this_1 endfunction function alloc_CallbackSingle_doAfter_Bomber_Bomber_1601 takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 672 else call error("Out of memory: Could not create CallbackSingle_doAfter_Bomber_Bomber.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 672 endif return this_1 endfunction function unit_getAbilityLevel takes unit this_1, integer id returns integer return GetUnitAbilityLevel(this_1, id) endfunction function onAttackspeedCast takes integer spellid, unit actor returns nothing local integer temp = spellid local integer pos local integer neg local integer pos_1 local integer neg_1 if temp == Attackspeed_ATTACK_SPEED_INCREASE then set pos = unit_getAbilityLevel(actor, Attackspeed_ATTACK_SPEED_RATE_POSITIVE_ID) set neg = unit_getAbilityLevel(actor, Attackspeed_ATTACK_SPEED_RATE_NEGATIVE_ID) if neg >= 1 then if neg == 1 then call unit_removeAbility(actor, Attackspeed_ATTACK_SPEED_RATE_NEGATIVE_ID) call createFText_2344(unit_getX(actor), unit_getY(actor), 0., 0., 0.05, "0.00 %", 10., 2., 255, 255, 255, 0, GetOwningPlayer(actor)) else call SetUnitAbilityLevel(actor, Attackspeed_ATTACK_SPEED_RATE_NEGATIVE_ID, neg - 1) call createFText_2344(unit_getX(actor), unit_getY(actor), 0., 0., 0.05, "-" + int_toString((neg - 1) * 20) + " %", 10., 2., 255, 255, 255, 0, GetOwningPlayer(actor)) endif elseif pos >= 1 then if pos < 4 then call SetUnitAbilityLevel(actor, Attackspeed_ATTACK_SPEED_RATE_POSITIVE_ID, pos + 1) call createFText_2344(unit_getX(actor), unit_getY(actor), 0., 0., 0.05, "+" + int_toString((pos + 1) * 20) + " %", 10., 2., 255, 255, 255, 0, GetOwningPlayer(actor)) else call createFText_2344(unit_getX(actor), unit_getY(actor), 0., 0., 0.05, "Max", 10., 2., 255, 255, 255, 0, GetOwningPlayer(actor)) endif else call unit_addAbility(actor, Attackspeed_ATTACK_SPEED_RATE_POSITIVE_ID) call createFText_2344(unit_getX(actor), unit_getY(actor), 0., 0., 0.05, "+20.0 %", 10., 2., 255, 255, 255, 0, GetOwningPlayer(actor)) endif elseif temp == Attackspeed_ATTACK_SPEED_DECREASE then set pos_1 = unit_getAbilityLevel(actor, Attackspeed_ATTACK_SPEED_RATE_POSITIVE_ID) set neg_1 = unit_getAbilityLevel(actor, Attackspeed_ATTACK_SPEED_RATE_NEGATIVE_ID) if pos_1 >= 1 then if pos_1 == 1 then call unit_removeAbility(actor, Attackspeed_ATTACK_SPEED_RATE_POSITIVE_ID) call createFText_2344(unit_getX(actor), unit_getY(actor), 0., 0., 0.05, "0.00 %", 10., 2., 255, 255, 255, 0, GetOwningPlayer(actor)) else call SetUnitAbilityLevel(actor, Attackspeed_ATTACK_SPEED_RATE_POSITIVE_ID, pos_1 - 1) call createFText_2344(unit_getX(actor), unit_getY(actor), 0., 0., 0.05, "+" + int_toString((pos_1 - 1) * 20) + " %", 10., 2., 255, 255, 255, 0, GetOwningPlayer(actor)) endif elseif neg_1 >= 1 then if neg_1 < 4 then call SetUnitAbilityLevel(actor, Attackspeed_ATTACK_SPEED_RATE_NEGATIVE_ID, neg_1 + 1) call createFText_2344(unit_getX(actor), unit_getY(actor), 0., 0., 0.05, "-" + int_toString((neg_1 + 1) * 20) + " %", 10., 2., 255, 255, 255, 0, GetOwningPlayer(actor)) else call createFText_2344(unit_getX(actor), unit_getY(actor), 0., 0., 0.05, "Min", 10., 2., 255, 255, 255, 0, GetOwningPlayer(actor)) endif else call unit_addAbility(actor, Attackspeed_ATTACK_SPEED_RATE_NEGATIVE_ID) call createFText_2344(unit_getX(actor), unit_getY(actor), 0., 0., 0.05, "-20.0 %", 10., 2., 255, 255, 255, 0, GetOwningPlayer(actor)) endif endif endfunction function Bomber_onCast takes integer this_1 returns nothing local integer id = GetSpellAbilityId() local integer clVar local integer clVar_1 call onAttackspeedCast(id, UnitEntity_actor[this_1]) if id == Bomber_AUTOATTACK_ID then if IsUnitType(UnitEntity_actor[this_1], UNIT_TYPE_PEON) then call UnitRemoveType(UnitEntity_actor[this_1], UNIT_TYPE_PEON) call unit_setPropWindow(Bomber_setup[this_1], real_fromDeg(0.)) call unit_setOwner(UnitEntity_actor[this_1], Player_players[PLAYER_NEUTRAL_AGGRESSIVE], false) call unit_setPropWindow(UnitEntity_actor[this_1], real_fromDeg(0.)) call createFText_2344(dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, 0., 0.05, "ON", 10., 2., 200, 0, 0, 0, Entity_owner[this_1]) set clVar = alloc_CallbackSingle_doAfter_Bomber_Bomber() call construct_CallbackSingle(clVar) set this_2975[clVar] = this_1 call doAfter(0.1, clVar) else call UnitAddType(UnitEntity_actor[this_1], UNIT_TYPE_PEON) call unit_setPropWindow(Bomber_setup[this_1], real_fromDeg(60.)) call unit_setPropWindow(UnitEntity_actor[this_1], real_fromDeg(60.)) call unit_setOwner(UnitEntity_actor[this_1], Entity_owner[this_1], false) call createFText_2344(dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, 0., 0.05, "OFF", 10., 2., 0, 200, 0, 0, Entity_owner[this_1]) set clVar_1 = alloc_CallbackSingle_doAfter_Bomber_Bomber_1601() call construct_CallbackSingle(clVar_1) set this_2976[clVar_1] = this_1 call doAfter(0.1, clVar_1) endif endif endfunction function dispatch_Bomber_Bomber_Bomber_onCast takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Bomber.onCast") else call error("Called Bomber.onCast on invalid object.") endif endif call Bomber_onCast(this_1) endfunction function onEvent_add_Bomber_Bomber_3806 takes integer this_1 returns nothing call dispatch_Bomber_Bomber_Bomber_onCast(this_2974[this_1]) endfunction function EventData_getOrderPos takes nothing returns real set EventData_getOrderPos_return_x = GetOrderPointX() set EventData_getOrderPos_return_y = GetOrderPointY() return EventData_getOrderPos_return_x endfunction function alloc_CallbackSingle_doAfter_Bombertower_Bombertower takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 673 else call error("Out of memory: Could not create CallbackSingle_doAfter_Bombertower_Bombertower.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 673 endif return this_1 endfunction function alloc_CallbackSingle_doAfter_Bombertower_Bombertower_1603 takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 674 else call error("Out of memory: Could not create CallbackSingle_doAfter_Bombertower_Bombertower.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 674 endif return this_1 endfunction function Bombertower_checkOrder takes integer this_1 returns nothing local integer i = GetIssuedOrderId() local integer e_1 = unit_getEntity(GetOrderedUnit()) local real tuple_temp = EventData_getOrderPos() local real tuple_temp_1 = EventData_getOrderPos_return_y local real tpos_x_1 = tuple_temp local real tpos_y_1 = tuple_temp_1 local integer obj_1 local integer clVar local integer clVar_1 if tpos_x_1 != Vectors_ZERO2_x or tpos_y_1 != Vectors_ZERO2_y and ( not dispatch_RegionData_RegionData_RegionData_canBuild(getRegionData_3302(tpos_x_1, tpos_y_1), Entity_owner[this_1])) then call unit_abortOrder(GetOrderedUnit()) return endif if Serializable_typeId[e_1] == 1195 then set obj_1 = e_1 if Bombertower_skipOrder[obj_1] then set Bombertower_skipOrder[obj_1] = false return endif if GetOrderedUnit() == Bombertower_dummy[obj_1] then call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(obj_1) if i == Bombertower_ATTACK_GROUND_ORDER then call IssuePointOrderById(UnitEntity_actor[obj_1], i, GetOrderPointX(), GetOrderPointY()) set Bombertower_skipOrder[obj_1] = true set clVar = alloc_CallbackSingle_doAfter_Bombertower_Bombertower() call construct_CallbackSingle(clVar) set obj[clVar] = obj_1 call doAfter(0.1, clVar) elseif i == Bombertower_ATTACK_ORDER then call IssueTargetOrderById(UnitEntity_actor[obj_1], i, GetOrderTargetUnit()) set Bombertower_skipOrder[obj_1] = true set clVar_1 = alloc_CallbackSingle_doAfter_Bombertower_Bombertower_1603() call construct_CallbackSingle(clVar_1) set obj_2548[clVar_1] = obj_1 call doAfter(0.1, clVar_1) elseif i == Bombertower_STOP_ORDER then call IssueImmediateOrderById(UnitEntity_actor[obj_1], Bombertower_STOP_ORDER) endif endif endif endfunction function dispatch_Bombertower_Bombertower_Bombertower_checkOrder takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Bombertower.checkOrder") else call error("Called Bombertower.checkOrder on invalid object.") endif endif call Bombertower_checkOrder(this_1) endfunction function onEvent_add_Bombertower_Bombertower takes integer this_1 returns nothing call dispatch_Bombertower_Bombertower_Bombertower_checkOrder(this_2986[this_1]) endfunction function onEvent_add_Bombertower_Bombertower_3808 takes integer this_1 returns nothing call dispatch_Bombertower_Bombertower_Bombertower_checkOrder(this_2987[this_1]) endfunction function onEvent_add_Bombertower_Bombertower_3809 takes integer this_1 returns nothing call dispatch_Bombertower_Bombertower_Bombertower_checkOrder(this_2988[this_1]) endfunction function BossDamager_onCast takes nothing returns boolean local integer data_1 = unit_getEntity(GetTriggerUnit()) local integer dmger local integer id local integer temp if Serializable_typeId[data_1] == 1197 then set dmger = data_1 set id = GetSpellAbilityId() set temp = id if temp == BossDamager_DMG_INC_ID then if BossDamager_damage[dmger] >= 200. then call createFText_2344(Entity_pos_x[dmger], Entity_pos_y[dmger], Entity_pos_z[dmger], 0., 0.05, "|cffC51019Max", 10., 2., 255, 255, 255, 0, Entity_owner[dmger]) else set BossDamager_damage[dmger] = BossDamager_damage[dmger] + 10. call createFText_2344(Entity_pos_x[dmger], Entity_pos_y[dmger], Entity_pos_z[dmger], 0., 0.05, "|cffC51019Damage " + R2SW(BossDamager_damage[dmger], 1, 2), 10., 2., 255, 255, 255, 0, Entity_owner[dmger]) endif elseif temp == BossDamager_DMG_DEC_ID then if BossDamager_damage[dmger] <= 0. then call createFText_2344(Entity_pos_x[dmger], Entity_pos_y[dmger], Entity_pos_z[dmger], 0., 0.05, "|cffC51019Min", 10., 2., 255, 255, 255, 0, Entity_owner[dmger]) else set BossDamager_damage[dmger] = BossDamager_damage[dmger] - 10. call createFText_2344(Entity_pos_x[dmger], Entity_pos_y[dmger], Entity_pos_z[dmger], 0., 0.05, "|cffC51019Damage " + R2SW(BossDamager_damage[dmger], 1, 2), 10., 2., 255, 255, 255, 0, Entity_owner[dmger]) endif endif endif return false endfunction function onEvent_add_BossDamager_BossDamager takes integer this_1 returns boolean return BossDamager_onCast() endfunction function Boss_getSpellTargets takes integer this_1, integer stype returns integer local integer tgs = dispatch_HashMap_HashMap_HashMap_get(BossSpellTarget_targets, player_getId(Entity_owner[this_1])) local integer newTgs = new_LinkedList() local integer from = dispatch_LinkedList_LinkedList_LinkedList_staticItr(tgs) local integer target loop exitwhen not LLIterator_hasNext(from) set target = LLIterator_next(from) if SpellTarget_stype[target] == stype then call dispatch_LinkedList_LinkedList_LinkedList_add_1(newTgs, target) endif endloop return newTgs endfunction function dispatch_Boss_Boss_Boss_getSpellTargets takes integer this_1, integer stype returns integer local integer Boss_Boss_getSpellTargets_result if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Boss.getSpellTargets") else call error("Called Boss.getSpellTargets on invalid object.") endif endif set Boss_Boss_getSpellTargets_result = Boss_getSpellTargets(this_1, stype) return Boss_Boss_getSpellTargets_result endfunction function dispatch_Boss_destroyBoss takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Boss.Boss") else call error("Called Boss.Boss on invalid object.") endif endif call destroyBoss(this_1) endfunction function alloc_CallbackSingle_nullTimer_SoundDefinition_SoundUtils takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 717 else call error("Out of memory: Could not create CallbackSingle_nullTimer_SoundDefinition_SoundUtils.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 717 endif return this_1 endfunction function LinkedList_pop takes integer this_1 returns integer local integer top = LLEntry_prev[LinkedList_dummy[this_1]] local integer result_1 = 0 if top != LinkedList_dummy[this_1] then set result_1 = LLEntry_elem[top] call dispatch_LinkedList_LinkedList_LinkedList_removeEntry(this_1, top) endif return result_1 endfunction function dispatch_LinkedList_LinkedList_LinkedList_pop takes integer this_1 returns integer local integer LinkedList_LinkedList_pop_result if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.pop") else call error("Called LinkedList.pop on invalid object.") endif endif set LinkedList_LinkedList_pop_result = LinkedList_pop(this_1) return LinkedList_LinkedList_pop_result endfunction function alloc_SoundInstance takes nothing returns integer local integer this_1 if SoundInstance_firstFree == 0 then if SoundInstance_maxIndex < JASS_MAX_ARRAY_SIZE then set SoundInstance_maxIndex = SoundInstance_maxIndex + 1 set this_1 = SoundInstance_maxIndex set SoundInstance_typeId[this_1] = 1230 else call error("Out of memory: Could not create SoundInstance.") set this_1 = 0 endif else set SoundInstance_firstFree = SoundInstance_firstFree - 1 set this_1 = SoundInstance_nextFree[SoundInstance_firstFree] set SoundInstance_typeId[this_1] = 1230 endif return this_1 endfunction function SoundInstance_init takes integer this_1 returns nothing local real tuple_temp = Vectors_ZERO3_x local real tuple_temp_1 = Vectors_ZERO3_y local real tuple_temp_2 = Vectors_ZERO3_z set SoundInstance_pos_x[this_1] = tuple_temp set SoundInstance_pos_y[this_1] = tuple_temp_1 set SoundInstance_pos_z[this_1] = tuple_temp_2 set SoundInstance_onUnit[this_1] = null set SoundInstance_p[this_1] = null set SoundInstance_s3s[this_1] = 0 endfunction function construct_SoundInstance takes integer this_1 returns nothing call SoundInstance_init(this_1) endfunction function new_SoundInstance takes nothing returns integer local integer this_1 = alloc_SoundInstance() call construct_SoundInstance(this_1) return this_1 endfunction function sound_setChannel takes sound this_1, integer channel returns nothing call SetSoundChannel(this_1, channel) endfunction function sound_setDuration takes sound this_1, integer dur returns nothing call SetSoundDuration(this_1, dur) endfunction function sound_setPitch takes sound this_1, real pitch returns nothing call SetSoundPitch(this_1, pitch) endfunction function sound_setVolume takes sound this_1, integer volume returns nothing call SetSoundVolume(this_1, volume) endfunction function SoundDefinition_getSound_1301 takes integer this_1, integer volume returns integer local integer shandle local sound receiver local sound receiver_1 local sound receiver_2 local integer sdata local sound receiver_3 local sound receiver_4 local sound receiver_5 local sound receiver_6 if dispatch_LinkedList_LinkedList_LinkedList_size(SoundDefinition_soundStack[this_1]) > 0 then set shandle = dispatch_LinkedList_LinkedList_LinkedList_pop(SoundDefinition_soundStack[this_1]) set receiver = SoundInstance_snd[shandle] call sound_setVolume(receiver, volume) set receiver_1 = receiver call sound_setPitch(receiver_1, SoundUtils_DEFAULT_SOUND_PITCH) set receiver_2 = receiver_1 call sound_setChannel(receiver_2, SoundUtils_SOUND_CHANNEL) return shandle else set sdata = new_SoundInstance() set SoundInstance_snd[sdata] = CreateSound(SoundDefinition_file[this_1], SoundDefinition_looping[this_1], SoundDefinition_is3D[this_1], SoundDefinition_stopOnLeaveRange[this_1], SoundDefinition_fadeIn[this_1], SoundDefinition_fadeOut[this_1], SoundDefinition_eaxSetting[this_1]) set SoundInstance_soundDef[sdata] = this_1 set receiver_3 = SoundInstance_snd[sdata] call sound_setDuration(receiver_3, SoundDefinition_duration[this_1]) set receiver_4 = receiver_3 call sound_setChannel(receiver_4, SoundUtils_SOUND_CHANNEL) set receiver_5 = receiver_4 call sound_setVolume(receiver_5, volume) set receiver_6 = receiver_5 call sound_setPitch(receiver_6, SoundUtils_DEFAULT_SOUND_PITCH) if SoundDefinition_is3D[this_1] then call SetSoundDistances(SoundInstance_snd[sdata], SoundUtils_SOUND_MIN_DIST, SoundUtils_SOUND_MAX_DIST) call SetSoundDistanceCutoff(SoundInstance_snd[sdata], SoundUtils_SOUND_DIST_CUT) call SetSoundConeAngles(SoundInstance_snd[sdata], 0., 0., volume) call SetSoundConeOrientation(SoundInstance_snd[sdata], 0., 0., 0.) endif return sdata endif endfunction function dispatch_SoundDefinition_SoundUtils_SoundDefinition_getSound_3156 takes integer this_1, integer volume returns integer local integer SoundUtils_SoundDefinition_getSound_result if SoundDefinition_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SoundDefinition.getSound") else call error("Called SoundDefinition.getSound on invalid object.") endif endif set SoundUtils_SoundDefinition_getSound_result = SoundDefinition_getSound_1301(this_1, volume) return SoundUtils_SoundDefinition_getSound_result endfunction function nullTimer takes integer cb_1 returns integer return doAfter(0., cb_1) endfunction function SoundDefinition_play_1305 takes integer this_1, integer duration, integer volume returns integer local integer snd_1 local integer clVar set SoundDefinition_duration[this_1] = duration set snd_1 = dispatch_SoundDefinition_SoundUtils_SoundDefinition_getSound_3156(this_1, volume) set clVar = alloc_CallbackSingle_nullTimer_SoundDefinition_SoundUtils() call construct_CallbackSingle(clVar) set this_2904[clVar] = this_1 set snd[clVar] = snd_1 call nullTimer(clVar) return snd_1 endfunction function dispatch_SoundDefinition_SoundUtils_SoundDefinition_play_3159 takes integer this_1, integer duration, integer volume returns integer local integer SoundUtils_SoundDefinition_play_result if SoundDefinition_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SoundDefinition.play") else call error("Called SoundDefinition.play on invalid object.") endif endif set SoundUtils_SoundDefinition_play_result = SoundDefinition_play_1305(this_1, duration, volume) return SoundUtils_SoundDefinition_play_result endfunction function SoundDefinition_play_1304 takes integer this_1, integer duration returns integer return dispatch_SoundDefinition_SoundUtils_SoundDefinition_play_3159(this_1, duration, SoundUtils_DEFAULT_SOUND_VOLUME) endfunction function dispatch_SoundDefinition_SoundUtils_SoundDefinition_play_3158 takes integer this_1, integer duration returns integer local integer SoundUtils_SoundDefinition_play_result if SoundDefinition_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SoundDefinition.play") else call error("Called SoundDefinition.play on invalid object.") endif endif set SoundUtils_SoundDefinition_play_result = SoundDefinition_play_1304(this_1, duration) return SoundUtils_SoundDefinition_play_result endfunction function SoundDefinition_play takes integer this_1 returns integer return dispatch_SoundDefinition_SoundUtils_SoundDefinition_play_3158(this_1, SoundUtils_DEFAULT_SOUND_DURATION) endfunction function dispatch_SoundDefinition_SoundUtils_SoundDefinition_play takes integer this_1 returns integer local integer SoundUtils_SoundDefinition_play_result if SoundDefinition_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SoundDefinition.play") else call error("Called SoundDefinition.play on invalid object.") endif endif set SoundUtils_SoundDefinition_play_result = SoundDefinition_play(this_1) return SoundUtils_SoundDefinition_play_result endfunction function Boss_revive takes integer this_1 returns nothing call dispatch_SoundDefinition_SoundUtils_SoundDefinition_play(Boss_REVIVE_SOUND) call dispatch_Boss_destroyBoss(this_1) endfunction function dispatch_Boss_Boss_Boss_revive takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Boss.revive") else call error("Called Boss.revive on invalid object.") endif endif call Boss_revive(this_1) endfunction function alloc_CallbackSingle_nullTimer_SoundDefinition_SoundUtils_1644 takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 719 else call error("Out of memory: Could not create CallbackSingle_nullTimer_SoundDefinition_SoundUtils.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 719 endif return this_1 endfunction function SoundDefinition_getSound takes integer this_1 returns integer return dispatch_SoundDefinition_SoundUtils_SoundDefinition_getSound_3156(this_1, SoundUtils_DEFAULT_SOUND_VOLUME) endfunction function dispatch_SoundDefinition_SoundUtils_SoundDefinition_getSound takes integer this_1 returns integer local integer SoundUtils_SoundDefinition_getSound_result if SoundDefinition_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SoundDefinition.getSound") else call error("Called SoundDefinition.getSound on invalid object.") endif endif set SoundUtils_SoundDefinition_getSound_result = SoundDefinition_getSound(this_1) return SoundUtils_SoundDefinition_getSound_result endfunction function SoundDefinition_playOnPoint_1309 takes integer this_1, real target_x, real target_y, real target_z, integer duration returns integer local integer snd_1 local integer clVar local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 set SoundDefinition_duration[this_1] = duration set snd_1 = dispatch_SoundDefinition_SoundUtils_SoundDefinition_getSound(this_1) set tuple_temp = target_x set tuple_temp_1 = target_y set tuple_temp_2 = target_z set SoundInstance_pos_x[snd_1] = tuple_temp set SoundInstance_pos_y[snd_1] = tuple_temp_1 set SoundInstance_pos_z[snd_1] = tuple_temp_2 set clVar = alloc_CallbackSingle_nullTimer_SoundDefinition_SoundUtils_1644() call construct_CallbackSingle(clVar) set this_2906[clVar] = this_1 set snd_2881[clVar] = snd_1 call nullTimer(clVar) return snd_1 endfunction function dispatch_SoundDefinition_SoundUtils_SoundDefinition_playOnPoint_3163 takes integer this_1, real target_x, real target_y, real target_z, integer duration returns integer local integer SoundUtils_SoundDefinition_playOnPoint_result if SoundDefinition_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SoundDefinition.playOnPoint") else call error("Called SoundDefinition.playOnPoint on invalid object.") endif endif set SoundUtils_SoundDefinition_playOnPoint_result = SoundDefinition_playOnPoint_1309(this_1, target_x, target_y, target_z, duration) return SoundUtils_SoundDefinition_playOnPoint_result endfunction function SoundDefinition_playOnPoint takes integer this_1, real target_x, real target_y, real target_z returns integer return dispatch_SoundDefinition_SoundUtils_SoundDefinition_playOnPoint_3163(this_1, target_x, target_y, target_z, SoundUtils_DEFAULT_SOUND_DURATION) endfunction function dispatch_SoundDefinition_SoundUtils_SoundDefinition_playOnPoint takes integer this_1, real target_x, real target_y, real target_z returns integer local integer SoundUtils_SoundDefinition_playOnPoint_result if SoundDefinition_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SoundDefinition.playOnPoint") else call error("Called SoundDefinition.playOnPoint on invalid object.") endif endif set SoundUtils_SoundDefinition_playOnPoint_result = SoundDefinition_playOnPoint(this_1, target_x, target_y, target_z) return SoundUtils_SoundDefinition_playOnPoint_result endfunction function alloc_CallbackSingle_doAfter_SpellTarget_BossSpellTarget takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 701 else call error("Out of memory: Could not create CallbackSingle_doAfter_SpellTarget_BossSpellTarget.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 701 endif return this_1 endfunction function SpellTarget_castAoe takes integer this_1 returns nothing local real tpos_x_1 local real tpos_y_1 local integer clVar local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 call effect_destr(addEffect_1563("war3mapImported\\DarknessMeteor.mdx", Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])) set tuple_temp = vec3_toVec2(dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z) set tuple_temp_1 = vec3_toVec2_return_y set tpos_x_1 = tuple_temp set tpos_y_1 = tuple_temp_1 set clVar = alloc_CallbackSingle_doAfter_SpellTarget_BossSpellTarget() call construct_CallbackSingle(clVar) set tuple_temp_2 = tpos_x_1 set tuple_temp_3 = tpos_y_1 set tpos_x[clVar] = tuple_temp_2 set tpos_y[clVar] = tuple_temp_3 set this_2914[clVar] = this_1 call doAfter(1., clVar) endfunction function dispatch_SpellTarget_BossSpellTarget_SpellTarget_castAoe takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SpellTarget.castAoe") else call error("Called SpellTarget.castAoe on invalid object.") endif endif call SpellTarget_castAoe(this_1) endfunction function alloc_BossMissile takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1144 else call error("Out of memory: Could not create BossMissile.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1144 endif return this_1 endfunction function BossMissile_init takes integer this_1 returns nothing set BossMissile_caster[this_1] = null endfunction function HomingProjectile_init takes integer this_1 returns nothing endfunction function construct_HomingProjectile takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, real radius, player owner, real xyAngle_radians, string fxpath returns nothing call construct_Projectile(this_1, pos_x_1, pos_y_1, pos_z, radius, owner, xyAngle_radians, fxpath) call HomingProjectile_init(this_1) endfunction function HomingProjectile_setTarget takes integer this_1, integer e_1, integer htype, real homingspeed returns nothing endfunction function dispatch_HomingProjectile_HomingProjectile_HomingProjectile_setTarget takes integer this_1, integer e_1, integer htype, real homingspeed returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HomingProjectile.setTarget") else call error("Called HomingProjectile.setTarget on invalid object.") endif endif call HomingProjectile_setTarget(this_1, e_1, htype, homingspeed) endfunction function Projectile_setTimed takes integer this_1, real lifespan returns nothing set Projectile_maxTime[this_1] = lifespan set Projectile_timed[this_1] = true endfunction function dispatch_Projectile_Projectile_Projectile_setTimed takes integer this_1, real lifespan returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Projectile.setTimed") else call error("Called Projectile.setTimed on invalid object.") endif endif call Projectile_setTimed(this_1, lifespan) endfunction function construct_BossMissile takes integer this_1, unit caster, integer target returns nothing call construct_HomingProjectile(this_1, unit_getPos3with(caster, 92.), unit_getPos3with_return_y, unit_getPos3with_return_z, BossSpellTarget_MISSILE_RADIUS, Entity_owner[this_1], vec3_angleTo2d_4259(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], dispatch_Entity_Entity_Entity_getPos(target), dispatch_Entity_Entity_Entity_getPos_return_y, dispatch_Entity_Entity_Entity_getPos_return_z), Abilities_greenDragonMissile) call BossMissile_init(this_1) set BossMissile_caster[this_1] = caster call dispatch_HomingProjectile_HomingProjectile_HomingProjectile_setTarget(this_1, target, 1, BossSpellTarget_MISSILE_SPEED) call dispatch_Projectile_Projectile_Projectile_setSpeed(this_1, 14.) call dispatch_Projectile_Projectile_Projectile_setTimed(this_1, 10.) endfunction function new_BossMissile takes unit caster, integer target returns integer local integer this_1 = alloc_BossMissile() call construct_BossMissile(this_1, caster, target) return this_1 endfunction function alloc_Minion takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1182 else call error("Out of memory: Could not create Minion.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1182 endif return this_1 endfunction function Minion_init takes integer this_1 returns nothing set Minion_maxHp[this_1] = 40. set Minion_currentHP[this_1] = 40. set Minion_state[this_1] = 0 endfunction function alloc_SensorListener_addSensorListener_EscaperSensorSetup_EscaperSensor takes nothing returns integer local integer this_1 if SensorListener_firstFree == 0 then if SensorListener_maxIndex < JASS_MAX_ARRAY_SIZE then set SensorListener_maxIndex = SensorListener_maxIndex + 1 set this_1 = SensorListener_maxIndex set SensorListener_typeId[this_1] = 1119 else call error("Out of memory: Could not create SensorListener_addSensorListener_EscaperSensorSetup_EscaperSensor.") set this_1 = 0 endif else set SensorListener_firstFree = SensorListener_firstFree - 1 set this_1 = SensorListener_nextFree[SensorListener_firstFree] set SensorListener_typeId[this_1] = 1119 endif return this_1 endfunction function construct_EscaperSensorSetup takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, player owner, integer unitId, real facing_radians, real radius, real sensorHeight returns nothing local integer temp = this_1 local unit receiver = createUnit_2354(owner, unitId, pos_x_1, pos_y_1, pos_z, facing_radians) local integer clVar local integer temp_1 local integer temp_2 call unit_addAbility(receiver, Basics_LOCUST_ID) call construct_SetupObject(temp, receiver, createUnit_2354(owner, unitId, pos_x_1, pos_y_1, pos_z, facing_radians), radius) call EscaperSensorSetup_init(this_1) set EscaperSensorSetup_sensorHeight[this_1] = sensorHeight set temp_1 = this_1 set temp_2 = this_1 set clVar = alloc_SensorListener_addSensorListener_EscaperSensorSetup_EscaperSensor() call construct_SensorListener(clVar) set this_2977[clVar] = this_1 call dispatch_EscaperSensorSetup_EscaperSensor_EscaperSensorSetup_Sensor_addSensorListener(temp_1, temp_2, clVar) endfunction function colorA_toColorString takes integer this_red, integer this_green, integer this_blue, integer this_alpha returns string return "|c" + toHex(this_alpha) + toHex(this_red) + toHex(this_green) + toHex(this_blue) endfunction function CustomBar_setValue takes integer this_1, real wval returns nothing local real newval = wval local integer chars if newval > 100. then set newval = 100. elseif newval < 0. then set newval = 0. endif set CustomBar_value[this_1] = newval / 100. set CustomBar_txt[this_1] = colorA_toColorString(CustomBar_fg_color_red[this_1], CustomBar_fg_color_green[this_1], CustomBar_fg_color_blue[this_1], CustomBar_fg_color_alpha[this_1]) set chars = R2I(CustomBar_value[this_1] * CustomBar_NUM_CHARS[this_1] * string_length(CustomBar_char[this_1]) + 0.5) / string_length(CustomBar_char[this_1]) * string_length(CustomBar_char[this_1]) set CustomBar_txt[this_1] = CustomBar_txt[this_1] + string_substring(CustomBar_ptext[this_1], 0, chars) set CustomBar_txt[this_1] = CustomBar_txt[this_1] + "|r" set CustomBar_txt[this_1] = CustomBar_txt[this_1] + string_substring(CustomBar_ptext[this_1], 0, string_length(CustomBar_ptext[this_1]) - chars) if CustomBar_t[this_1] != null then call texttag_setText(CustomBar_t[this_1], CustomBar_txt[this_1], CustomBar_textsize[this_1]) endif endfunction function dispatch_CustomBar_CustomBar_CustomBar_setValue takes integer this_1, real wval returns nothing if CustomBar_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling CustomBar.setValue") else call error("Called CustomBar.setValue on invalid object.") endif endif call CustomBar_setValue(this_1, wval) endfunction function CustomBar_setForeground takes integer this_1, integer col_red, integer col_green, integer col_blue, integer col_alpha returns nothing local integer tuple_temp = col_red local integer tuple_temp_1 = col_green local integer tuple_temp_2 = col_blue local integer tuple_temp_3 = col_alpha set CustomBar_fg_color_red[this_1] = tuple_temp set CustomBar_fg_color_green[this_1] = tuple_temp_1 set CustomBar_fg_color_blue[this_1] = tuple_temp_2 set CustomBar_fg_color_alpha[this_1] = tuple_temp_3 call dispatch_CustomBar_CustomBar_CustomBar_setValue(this_1, CustomBar_value[this_1]) endfunction function dispatch_CustomBar_CustomBar_CustomBar_setForeground takes integer this_1, integer col_red, integer col_green, integer col_blue, integer col_alpha returns nothing if CustomBar_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling CustomBar.setForeground") else call error("Called CustomBar.setForeground on invalid object.") endif endif call CustomBar_setForeground(this_1, col_red, col_green, col_blue, col_alpha) endfunction function RegionData_getEscapers takes integer this_1 returns integer return dispatch_LinkedList_LinkedList_LinkedList_staticItr(RegionData_escapers[this_1]) endfunction function dispatch_RegionData_RegionData_RegionData_getEscapers takes integer this_1 returns integer local integer RegionData_RegionData_getEscapers_result if RegionData_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling RegionData.getEscapers") else call error("Called RegionData.getEscapers on invalid object.") endif endif set RegionData_RegionData_getEscapers_result = RegionData_getEscapers(this_1) return RegionData_RegionData_getEscapers_result endfunction function unit_issuePointOrder takes unit this_1, string order, real target_x, real target_y returns boolean return IssuePointOrder(this_1, order, target_x, target_y) endfunction function vec2_distanceTo takes real this_x, real this_y, real v_x, real v_y returns real return SquareRoot(real_squared(v_x - this_x) + real_squared(v_y - this_y)) endfunction function Minion_selectTarget takes integer this_1 returns nothing local real closestDist local integer escaper local integer from local real dist set Minion_target[this_1] = 0 set closestDist = - 1. set from = dispatch_RegionData_RegionData_RegionData_getEscapers(Entity_getCurrentRegion(this_1)) loop exitwhen not LLIterator_hasNext(from) set escaper = LLIterator_next(from) set dist = vec2_distanceTo(vec3_toVec2(Entity_pos_x[escaper], Entity_pos_y[escaper], Entity_pos_z[escaper]), vec3_toVec2_return_y, Minion_spawnPoint_x[this_1], Minion_spawnPoint_y[this_1]) if Escaper_alive[escaper] and dist < Minion_FOLLOW_RANGE then if closestDist == ( - 1.) or dist < closestDist then set closestDist = dist set Minion_target[this_1] = escaper endif endif endloop if not (Minion_target[this_1] == 0) then set Minion_state[this_1] = 1 call flashEffect(Abilities_spellBreakerAttack, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) call unit_issuePointOrder(SetupObject_setup[this_1], "move", vec3_toVec2(Entity_pos_x[Minion_target[this_1]], Entity_pos_y[Minion_target[this_1]], Entity_pos_z[Minion_target[this_1]]), vec3_toVec2_return_y) endif endfunction function dispatch_Minion_Minion_Minion_selectTarget takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Minion.selectTarget") else call error("Called Minion.selectTarget on invalid object.") endif endif call Minion_selectTarget(this_1) endfunction function alloc_CustomBar takes nothing returns integer local integer this_1 if CustomBar_firstFree == 0 then if CustomBar_maxIndex < JASS_MAX_ARRAY_SIZE then set CustomBar_maxIndex = CustomBar_maxIndex + 1 set this_1 = CustomBar_maxIndex set CustomBar_typeId[this_1] = 732 else call error("Out of memory: Could not create CustomBar.") set this_1 = 0 endif else set CustomBar_firstFree = CustomBar_firstFree - 1 set this_1 = CustomBar_nextFree[CustomBar_firstFree] set CustomBar_typeId[this_1] = 732 endif return this_1 endfunction function CustomBar_init takes integer this_1 returns nothing endfunction function CustomBar_rebuildText takes integer this_1 returns nothing local integer i local integer temp set CustomBar_ptext[this_1] = "" set i = 0 set temp = CustomBar_NUM_CHARS[this_1] loop exitwhen i > temp set CustomBar_ptext[this_1] = CustomBar_ptext[this_1] + CustomBar_char[this_1] set i = i + 1 endloop endfunction function dispatch_CustomBar_CustomBar_CustomBar_rebuildText takes integer this_1 returns nothing if CustomBar_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling CustomBar.rebuildText") else call error("Called CustomBar.rebuildText on invalid object.") endif endif call CustomBar_rebuildText(this_1) endfunction function CustomBar_setChar takes integer this_1, string newStr returns nothing local string newString = newStr if newString == "|" then set newString = "||" endif set CustomBar_char[this_1] = newString call dispatch_CustomBar_CustomBar_CustomBar_rebuildText(this_1) call dispatch_CustomBar_CustomBar_CustomBar_setValue(this_1, CustomBar_value[this_1]) endfunction function dispatch_CustomBar_CustomBar_CustomBar_setChar takes integer this_1, string newStr returns nothing if CustomBar_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling CustomBar.setChar") else call error("Called CustomBar.setChar on invalid object.") endif endif call CustomBar_setChar(this_1, newStr) endfunction function makeColor takes integer colo returns integer local integer col = colo local integer a local integer r local integer g local integer b if col < 0 then set col = - (( - col) + -2147483648) set a = 128 + col / 16777216 set col = col - (a - 128) * 16777216 else set a = col / 16777216 set col = col - a * 16777216 endif set r = col / 65536 set col = col - r * 65536 set g = col / 256 set b = col - g * 256 set makeColor_return_red = r set makeColor_return_green = g set makeColor_return_blue = b set makeColor_return_alpha = a return makeColor_return_red endfunction function texttag_setColor takes texttag this_1, integer r, integer g, integer b, integer a returns nothing call SetTextTagColor(this_1, r, g, b, a) endfunction function texttag_setSuspended takes texttag this_1, boolean flag returns nothing call SetTextTagSuspended(this_1, flag) endfunction function construct_CustomBar takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, string char_1, integer numochars, real size returns nothing local texttag receiver local texttag receiver_1 local texttag receiver_2 local texttag receiver_3 local texttag receiver_4 local texttag receiver_5 local texttag receiver_6 local texttag receiver_7 local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local integer tuple_temp_3 local integer tuple_temp_4 local integer tuple_temp_5 local integer tuple_temp_6 local integer tuple_temp_7 local integer tuple_temp_8 local integer tuple_temp_9 local integer tuple_temp_10 call CustomBar_init(this_1) set CustomBar_t[this_1] = CreateTextTag() if CustomBar_t[this_1] == null then call error("TTBARS: TextTag limit reached!") endif set tuple_temp = pos_x_1 set tuple_temp_1 = pos_y_1 set tuple_temp_2 = pos_z set CustomBar_position_x[this_1] = tuple_temp set CustomBar_position_y[this_1] = tuple_temp_1 set CustomBar_position_z[this_1] = tuple_temp_2 set tuple_temp_3 = makeColor(CustomBar_DEFAULT_BACKGROUND) set tuple_temp_4 = makeColor_return_green set tuple_temp_5 = makeColor_return_blue set tuple_temp_6 = makeColor_return_alpha set CustomBar_bg_color_red[this_1] = tuple_temp_3 set CustomBar_bg_color_green[this_1] = tuple_temp_4 set CustomBar_bg_color_blue[this_1] = tuple_temp_5 set CustomBar_bg_color_alpha[this_1] = tuple_temp_6 set CustomBar_textsize[this_1] = size set tuple_temp_7 = makeColor(CustomBar_DEFAULT_FOREGROUND) set tuple_temp_8 = makeColor_return_green set tuple_temp_9 = makeColor_return_blue set tuple_temp_10 = makeColor_return_alpha set CustomBar_fg_color_red[this_1] = tuple_temp_7 set CustomBar_fg_color_green[this_1] = tuple_temp_8 set CustomBar_fg_color_blue[this_1] = tuple_temp_9 set CustomBar_fg_color_alpha[this_1] = tuple_temp_10 set CustomBar_NUM_CHARS[this_1] = numochars call dispatch_CustomBar_CustomBar_CustomBar_setChar(this_1, char_1) set CustomBar_locked[this_1] = false call dispatch_CustomBar_CustomBar_CustomBar_setValue(this_1, .0) if CustomBar_t[this_1] != null then set receiver = CustomBar_t[this_1] call texttag_setAge(receiver, 0.) set receiver_1 = receiver call texttag_setColor(receiver_1, CustomBar_bg_color_red[this_1], CustomBar_bg_color_green[this_1], CustomBar_bg_color_blue[this_1], CustomBar_bg_color_alpha[this_1]) set receiver_2 = receiver_1 call texttag_setFadepoint(receiver_2, 0.) set receiver_3 = receiver_2 call texttag_setLifespan(receiver_3, 0.) set receiver_4 = receiver_3 call texttag_setPermanent(receiver_4, true) set receiver_5 = receiver_4 call texttag_setPos(receiver_5, CustomBar_position_x[this_1], CustomBar_position_y[this_1], CustomBar_position_z[this_1]) set receiver_6 = receiver_5 call texttag_setSuspended(receiver_6, false) set receiver_7 = receiver_6 call texttag_setText(receiver_7, CustomBar_txt[this_1], CustomBar_textsize[this_1]) endif call dispatch_CustomBar_CustomBar_CustomBar_rebuildText(this_1) endfunction function new_CustomBar takes real pos_x_1, real pos_y_1, real pos_z, string char_1, integer numochars, real size returns integer local integer this_1 = alloc_CustomBar() call construct_CustomBar(this_1, pos_x_1, pos_y_1, pos_z, char_1, numochars, size) return this_1 endfunction function Minion_setup takes integer this_1 returns nothing local integer receiver local real tuple_temp local real tuple_temp_1 call dispatch_Minion_Minion_Minion_selectTarget(this_1) set Entity_sleeps[this_1] = false set tuple_temp = vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) set tuple_temp_1 = vec3_toVec2_return_y set Minion_spawnPoint_x[this_1] = tuple_temp set Minion_spawnPoint_y[this_1] = tuple_temp_1 set receiver = new_CustomBar(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], "|", 40, 6.) call dispatch_CustomBar_CustomBar_CustomBar_setForeground(receiver, 200, 255, 125, 255) set Minion_hpBar[this_1] = receiver endfunction function dispatch_Minion_Minion_Minion_setup takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Minion.setup") else call error("Called Minion.setup on invalid object.") endif endif call Minion_setup(this_1) endfunction function construct_Minion takes integer this_1, real pos_x_1, real pos_y_1, player owner, real facing_radians returns nothing local integer temp = this_1 local real tuple_temp = vec2_toVec3(pos_x_1, pos_y_1) local real tuple_temp_1 = vec2_toVec3_return_y local real tuple_temp_2 = vec2_toVec3_return_z local real temp_x = tuple_temp local real temp_y = tuple_temp_1 local real temp_z = tuple_temp_2 local player temp_1 = owner local integer temp_tuple_minionId local integer tuple_temp_3 call dispatch_RegionData_RegionData_RegionData_getTypeSet(getRegionData_3302(pos_x_1, pos_y_1)) set tuple_temp_3 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_minionId set temp_tuple_minionId = tuple_temp_3 call construct_EscaperSensorSetup(temp, temp_x, temp_y, temp_z, temp_1, temp_tuple_minionId, facing_radians, Minion_COLL_SIZE_MINION, Minion_COLL_SIZE_MINION + 16.) call Minion_init(this_1) call dispatch_Minion_Minion_Minion_setup(this_1) endfunction function new_Minion takes real pos_x_1, real pos_y_1, player owner, real facing_radians returns integer local integer this_1 = alloc_Minion() call construct_Minion(this_1, pos_x_1, pos_y_1, owner, facing_radians) return this_1 endfunction function unit_getFacingAngle takes unit this_1 returns real set unit_getFacingAngle_return_radians = real_asAngleDegrees(GetUnitFacing(this_1)) return unit_getFacingAngle_return_radians endfunction function Boss_onCast takes integer this_1 returns nothing local integer id = GetSpellAbilityId() local integer temp local integer bighp local integer smallhp local integer bighp_1 local integer smallhp_1 local integer tgts local integer iterator local integer target local integer tgts_1 local integer iterator_1 local integer target_1 call unit_setAnimation(UnitEntity_actor[this_1], "spell") set temp = id if temp == Boss_HP_UP_ID then set bighp = GetUnitAbilityLevel(UnitEntity_actor[this_1], Boss_REAL_HP_BIG_ID) set smallhp = GetUnitAbilityLevel(UnitEntity_actor[this_1], Boss_REAL_HP_SMALL_ID) if smallhp == 4 then if bighp < 4 then if bighp == 0 then call unit_addAbility(UnitEntity_actor[this_1], Boss_REAL_HP_BIG_ID) else call SetUnitAbilityLevel(UnitEntity_actor[this_1], Boss_REAL_HP_BIG_ID, bighp + 1) endif call SetUnitAbilityLevel(UnitEntity_actor[this_1], Boss_REAL_HP_SMALL_ID, 0) else call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Max HP", 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) endif elseif smallhp == 0 then call unit_addAbility(UnitEntity_actor[this_1], Boss_REAL_HP_SMALL_ID) else call SetUnitAbilityLevel(UnitEntity_actor[this_1], Boss_REAL_HP_SMALL_ID, smallhp + 1) endif elseif temp == Boss_HP_DOWN_ID then set bighp_1 = GetUnitAbilityLevel(UnitEntity_actor[this_1], Boss_REAL_HP_BIG_ID) set smallhp_1 = GetUnitAbilityLevel(UnitEntity_actor[this_1], Boss_REAL_HP_SMALL_ID) if smallhp_1 == 0 then if bighp_1 > 0 then call SetUnitAbilityLevel(UnitEntity_actor[this_1], Boss_REAL_HP_BIG_ID, bighp_1 - 1) call SetUnitAbilityLevel(UnitEntity_actor[this_1], Boss_REAL_HP_SMALL_ID, 4) else call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Min HP", 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) endif else call SetUnitAbilityLevel(UnitEntity_actor[this_1], Boss_REAL_HP_SMALL_ID, smallhp_1 - 1) endif elseif temp == Boss_AOE_SPELL_ID then set tgts = dispatch_Boss_Boss_Boss_getSpellTargets(this_1, 1) set iterator = LinkedList_iterator(tgts) loop exitwhen not LLIterator_hasNext(iterator) set target = LLIterator_next(iterator) call dispatch_SpellTarget_BossSpellTarget_SpellTarget_castAoe(target) endloop call LLIterator_close(iterator) call dispatch_LinkedList_destroyLinkedList(tgts) elseif temp == Boss_MISSILE_SPELL_ID then set tgts_1 = dispatch_Boss_Boss_Boss_getSpellTargets(this_1, 3) set iterator_1 = LinkedList_iterator(tgts_1) loop exitwhen not LLIterator_hasNext(iterator_1) set target_1 = LLIterator_next(iterator_1) call new_BossMissile(UnitEntity_actor[this_1], target_1) endloop call LLIterator_close(iterator_1) call dispatch_LinkedList_destroyLinkedList(tgts_1) elseif temp == Boss_SUMMON_MINION_ID then call new_Minion(vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, Entity_owner[this_1], unit_getFacingAngle(UnitEntity_actor[this_1])) call dispatch_SoundDefinition_SoundUtils_SoundDefinition_playOnPoint(Boss_MINION_SPAWN_SOUND, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) elseif temp == Boss_REVIVE_ID then call dispatch_Boss_Boss_Boss_revive(this_1) endif endfunction function dispatch_Boss_Boss_Boss_onCast takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Boss.onCast") else call error("Called Boss.onCast on invalid object.") endif endif call Boss_onCast(this_1) endfunction function onEvent_add_Boss_Boss takes integer this_1 returns nothing call dispatch_Boss_Boss_Boss_onCast(this_2912[this_1]) endfunction function alloc_CallbackSingle_doAfter_add_Buff takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 704 else call error("Out of memory: Could not create CallbackSingle_doAfter_add_Buff.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 704 endif return this_1 endfunction function onEvent_add_Buff takes integer this_1 returns nothing local unit upg_1 = GetTriggerUnit() local integer clVar if unit_getIndex(upg_1) > 0 then set clVar = alloc_CallbackSingle_doAfter_add_Buff() call construct_CallbackSingle(clVar) set upg[clVar] = upg_1 call doAfter(0.01, clVar) endif endfunction function unit_clearBuffs takes unit this_1 returns nothing local integer buffs = unit_getBuffs(this_1) local integer iterator local integer bff if buffs != 0 then set iterator = LinkedList_iterator(buffs) loop exitwhen not LLIterator_hasNext(iterator) set bff = LLIterator_next(iterator) call cyc_NormalBuff_onDestroy(8, bff, null, 0) endloop call LLIterator_close(iterator) call dispatch_LinkedList_destroyLinkedList(buffs) set Buff_buffMap[unit_getIndex(this_1)] = 0 endif endfunction function onEvent_add_Buff_3813 takes integer this_1 returns nothing local unit u_1 = GetTriggerUnit() call unit_clearBuffs(u_1) endfunction function alloc_CallbackSingle_doAfter_Builder_Builder takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 675 else call error("Out of memory: Could not create CallbackSingle_doAfter_Builder_Builder.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 675 endif return this_1 endfunction function isOrderBuildOrder takes integer o returns boolean local integer i = 1 local integer i2 loop exitwhen not (InstantBuild_buildorders[i] != 0) if InstantBuild_buildorders[i] == o then return true endif set i = i + 1 endloop set i2 = 139 loop exitwhen i2 > 152 if o == InstantBuild_buildorders[i2] then return true endif set i2 = i2 + 1 endloop return false endfunction function Builder_onOrder takes integer this_1 returns nothing local item i = GetOrderTargetItem() local unit u_1 = GetOrderTargetUnit() local real tuple_temp = EventData_getOrderPos() local real tuple_temp_1 = EventData_getOrderPos_return_y local real orderPos_x_1 = tuple_temp local real orderPos_y_1 = tuple_temp_1 local integer rdata local integer orderId_1 local integer clVar local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 local real tuple_temp_7 if i != null then set tuple_temp_2 = item_getPos(i) set tuple_temp_3 = item_getPos_return_y set orderPos_x_1 = tuple_temp_2 set orderPos_y_1 = tuple_temp_3 elseif u_1 != null then set tuple_temp_4 = unit_getPos(u_1) set tuple_temp_5 = unit_getPos_return_y set orderPos_x_1 = tuple_temp_4 set orderPos_y_1 = tuple_temp_5 endif set rdata = getRegionData_3302(orderPos_x_1, orderPos_y_1) if rdata != RegionData_EMPTY_REGION and (dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata) == RegionType_getTypeSet(0) and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_walkableId == RegionType_getTypeSet_return_walkableId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId == RegionType_getTypeSet_return_unwalkableId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_smallKillerId == RegionType_getTypeSet_return_smallKillerId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bigKillerId == RegionType_getTypeSet_return_bigKillerId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_treeId == RegionType_getTypeSet_return_treeId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_smallObstacleId == RegionType_getTypeSet_return_smallObstacleId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bigObstacleId == RegionType_getTypeSet_return_bigObstacleId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bossId == RegionType_getTypeSet_return_bossId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_minionId == RegionType_getTypeSet_return_minionId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_highObstacleId == RegionType_getTypeSet_return_highObstacleId) or dispatch_RegionData_RegionData_RegionData_canBuild(rdata, Entity_owner[this_1]) or RegionData_theRect[rdata] == gg_rct_Start then if i != null and dispatch_RegionData_RegionData_RegionData_canBuild(rdata, Entity_owner[this_1]) then if item_getEntity(i) != 0 then call Log_debug("Builder Terminate") call cyc_RevivePoint_terminate(18, item_getEntity(i)) else call RemoveItem(i) endif call unit_abortOrder(UnitEntity_actor[this_1]) else set orderId_1 = GetIssuedOrderId() if isOrderBuildOrder(orderId_1) then set clVar = alloc_CallbackSingle_doAfter_Builder_Builder() call construct_CallbackSingle(clVar) set this_2924[clVar] = this_1 set tuple_temp_6 = orderPos_x_1 set tuple_temp_7 = orderPos_y_1 set orderPos_x[clVar] = tuple_temp_6 set orderPos_y[clVar] = tuple_temp_7 set orderId[clVar] = orderId_1 call doAfter(0.01, clVar) call unit_abortOrder(UnitEntity_actor[this_1]) elseif OrderId2String(orderId_1) == "smart" or OrderId2String(orderId_1) == "move" then call dispatch_UnitEntity_Entity_UnitEntity_setPos(this_1, vec2_toVec3(orderPos_x_1, orderPos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z) endif endif else call unit_abortOrder(UnitEntity_actor[this_1]) endif endfunction function dispatch_Builder_Builder_Builder_onOrder takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Builder.onOrder") else call error("Called Builder.onOrder on invalid object.") endif endif call Builder_onOrder(this_1) endfunction function onEvent_add_Builder_Builder takes integer this_1 returns nothing call dispatch_Builder_Builder_Builder_onOrder(this_2921[this_1]) endfunction function onEvent_add_Builder_Builder_3815 takes integer this_1 returns nothing call dispatch_Builder_Builder_Builder_onOrder(this_2922[this_1]) endfunction function alloc_CallbackSingle_doAfter_JukeBox_JukeBox takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 690 else call error("Out of memory: Could not create CallbackSingle_doAfter_JukeBox_JukeBox.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 690 endif return this_1 endfunction function JukeRequest_onDestroy takes integer this_1 returns nothing endfunction function dealloc_JukeRequest takes integer obj_1 returns nothing if JukeRequest_typeId[obj_1] == 0 then call error("Double free: object of type JukeRequest") else set JukeRequest_nextFree[JukeRequest_firstFree] = obj_1 set JukeRequest_firstFree = JukeRequest_firstFree + 1 set JukeRequest_typeId[obj_1] = 0 endif endfunction function destroyJukeRequest takes integer this_1 returns nothing call JukeRequest_onDestroy(this_1) call dealloc_JukeRequest(this_1) endfunction function dispatch_JukeRequest_destroyJukeRequest takes integer this_1 returns nothing if JukeRequest_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling JukeRequest.JukeRequest") else call error("Called JukeRequest.JukeRequest on invalid object.") endif endif call destroyJukeRequest(this_1) endfunction function LinkedList_addAll takes integer this_1, integer elems returns nothing local integer iterator = LinkedList_iterator(elems) local integer elem loop exitwhen not LLIterator_hasNext(iterator) set elem = LLIterator_next(iterator) call dispatch_LinkedList_LinkedList_LinkedList_add_1(this_1, elem) endloop call LLIterator_close(iterator) endfunction function dispatch_LinkedList_LinkedList_LinkedList_addAll takes integer this_1, integer elems returns nothing if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.addAll") else call error("Called LinkedList.addAll on invalid object.") endif endif call LinkedList_addAll(this_1, elems) endfunction function dispatch_LLIterator_LinkedList_LLIterator_hasNext takes integer this_1 returns boolean local boolean LinkedList_LLIterator_hasNext_result if LLIterator_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LLIterator.hasNext") else call error("Called LLIterator.hasNext on invalid object.") endif endif set LinkedList_LLIterator_hasNext_result = LLIterator_hasNext(this_1) return LinkedList_LLIterator_hasNext_result endfunction function dispatch_LLIterator_LinkedList_LLIterator_next takes integer this_1 returns integer local integer LinkedList_LLIterator_next_result if LLIterator_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LLIterator.next") else call error("Called LLIterator.next on invalid object.") endif endif set LinkedList_LLIterator_next_result = LLIterator_next(this_1) return LinkedList_LLIterator_next_result endfunction function LinkedList_shuffle takes integer this_1 returns nothing local integer n = dispatch_LinkedList_LinkedList_LinkedList_size(this_1) local integer i0 = 0 local integer itr_1 = dispatch_LinkedList_LinkedList_LinkedList_iterator(this_1) local integer array w_a local integer i local integer j local integer tmp local integer i_1 local integer temp loop exitwhen not dispatch_LLIterator_LinkedList_LLIterator_hasNext(itr_1) call dispatch_LLIterator_LinkedList_LLIterator_next(itr_1) set w_a[i0] = dispatch_LLIterator_LinkedList_LLIterator_remove(itr_1) set i0 = i0 + 1 endloop set i = n - 1 loop exitwhen i < 1 set j = GetRandomInt(0, i) set tmp = w_a[i] set w_a[i] = w_a[j] set w_a[j] = tmp set i = i - 1 endloop set i_1 = 0 set temp = n - 1 loop exitwhen i_1 > temp call dispatch_LinkedList_LinkedList_LinkedList_add_1(this_1, w_a[i_1]) set i_1 = i_1 + 1 endloop call dispatch_LLIterator_LinkedList_LLIterator_close(itr_1) endfunction function dispatch_LinkedList_LinkedList_LinkedList_shuffle takes integer this_1 returns nothing if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.shuffle") else call error("Called LinkedList.shuffle on invalid object.") endif endif call LinkedList_shuffle(this_1) endfunction function Music_play takes integer this_1 returns integer call PlayThematicMusic(Music_path[this_1]) return this_1 endfunction function dispatch_Music_JukeBox_Music_play takes integer this_1 returns integer local integer JukeBox_Music_play_result if Music_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Music.play") else call error("Called Music.play on invalid object.") endif endif set JukeBox_Music_play_result = Music_play(this_1) return JukeBox_Music_play_result endfunction function JukeBox_playNextMusic takes integer this_1 returns nothing local integer req local integer clVar local real temp call StopMusic(false) if dispatch_LinkedList_LinkedList_LinkedList_size(JukeBox_requests[this_1]) > 0 then set JukeBox_lastWasRequest[this_1] = true set req = dispatch_LinkedList_LinkedList_LinkedList_pop(JukeBox_requests[this_1]) set JukeBox_currentMusic[this_1] = dispatch_Music_JukeBox_Music_play(JukeRequest_music[req]) call printTimed("Jukebox: Playing |cff84DE52" + Music_name[JukeBox_currentMusic[this_1]] + "|r as requested by " + player_getNameColored_3916(JukeRequest_juker[req]), 10.) call dispatch_JukeRequest_destroyJukeRequest(req) else set JukeBox_lastWasRequest[this_1] = false if dispatch_LinkedList_LinkedList_LinkedList_size(JukeBox_randomQueue[this_1]) == 0 then call dispatch_LinkedList_LinkedList_LinkedList_addAll(JukeBox_randomQueue[this_1], JukeBox_musics) call dispatch_LinkedList_LinkedList_LinkedList_shuffle(JukeBox_randomQueue[this_1]) endif set JukeBox_currentMusic[this_1] = dispatch_Music_JukeBox_Music_play(dispatch_LinkedList_LinkedList_LinkedList_pop(JukeBox_randomQueue[this_1])) call printTimed("Jukebox: Playing |cff84DE52" + Music_name[JukeBox_currentMusic[this_1]] + "|r", 10.) endif if JukeBox_cb[this_1] != 0 then call dispatch_CallbackSingle_destroyCallbackSingle(JukeBox_cb[this_1]) endif set temp = Music_duration[JukeBox_currentMusic[this_1]] + 1. set clVar = alloc_CallbackSingle_doAfter_JukeBox_JukeBox() call construct_CallbackSingle(clVar) set this_2925[clVar] = this_1 set JukeBox_cb[this_1] = doAfter(temp, clVar) endfunction function dispatch_JukeBox_JukeBox_JukeBox_playNextMusic takes integer this_1 returns nothing if JukeBox_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling JukeBox.playNextMusic") else call error("Called JukeBox.playNextMusic on invalid object.") endif endif call JukeBox_playNextMusic(this_1) endfunction function alloc_JukeRequest takes nothing returns integer local integer this_1 if JukeRequest_firstFree == 0 then if JukeRequest_maxIndex < JASS_MAX_ARRAY_SIZE then set JukeRequest_maxIndex = JukeRequest_maxIndex + 1 set this_1 = JukeRequest_maxIndex set JukeRequest_typeId[this_1] = 985 else call error("Out of memory: Could not create JukeRequest.") set this_1 = 0 endif else set JukeRequest_firstFree = JukeRequest_firstFree - 1 set this_1 = JukeRequest_nextFree[JukeRequest_firstFree] set JukeRequest_typeId[this_1] = 985 endif return this_1 endfunction function JukeRequest_init takes integer this_1 returns nothing endfunction function construct_JukeRequest takes integer this_1, player p, integer music returns nothing call JukeRequest_init(this_1) set JukeRequest_juker[this_1] = p set JukeRequest_music[this_1] = music endfunction function new_JukeRequest takes player p, integer music returns integer local integer this_1 = alloc_JukeRequest() call construct_JukeRequest(this_1, p, music) return this_1 endfunction function JukeBox_checkSpell takes integer this_1, integer id returns nothing local integer iterator = LinkedList_iterator(JukeBox_musics) local integer music local player p local integer iterator_1 local integer req loop exitwhen not LLIterator_hasNext(iterator) set music = LLIterator_next(iterator) if Music_spellid[music] == id then set p = unit_getOwner(GetTriggerUnit()) set iterator_1 = LinkedList_iterator(JukeBox_requests[this_1]) loop exitwhen not LLIterator_hasNext(iterator_1) set req = LLIterator_next(iterator_1) if JukeRequest_juker[req] == p then call printTimedToPlayer("You already have a track queued in the jukebox!", 10., p) call LLIterator_close(iterator_1) call LLIterator_close(iterator) return endif endloop call LLIterator_close(iterator_1) call printTimed("The Track |cff84DE52" + Music_name[music] + "|r has been requested by " + player_getNameColored_3916(p), 10.) call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_requests[this_1], new_JukeRequest(p, music)) if dispatch_LinkedList_LinkedList_LinkedList_size(JukeBox_requests[this_1]) == 1 and ( not JukeBox_lastWasRequest[this_1]) then call dispatch_JukeBox_JukeBox_JukeBox_playNextMusic(this_1) endif call LLIterator_close(iterator) return endif endloop call LLIterator_close(iterator) endfunction function dispatch_JukeBox_JukeBox_JukeBox_checkSpell takes integer this_1, integer id returns nothing if JukeBox_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling JukeBox.checkSpell") else call error("Called JukeBox.checkSpell on invalid object.") endif endif call JukeBox_checkSpell(this_1, id) endfunction function alloc_Boots takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1154 else call error("Out of memory: Could not create Boots.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1154 endif return this_1 endfunction function Boots_init takes integer this_1 returns nothing endfunction function construct_Boots takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing call construct_ItemObject(this_1, pos_x_1, pos_y_1, CreateItem(BuilderConstants_BOOTS_ID, pos_x_1, pos_y_1), CreateUnit(owner, Boots_BOOTS_DUMMY_ID, pos_x_1, pos_y_1, 0.)) call Boots_init(this_1) endfunction function new_Boots takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_Boots() call construct_Boots(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_Boss takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1172 else call error("Out of memory: Could not create Boss.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1172 endif return this_1 endfunction function Boss_init takes integer this_1 returns nothing set Boss_maxHp[this_1] = 400. set Boss_currentHP[this_1] = 400. endfunction function alloc_EventListener_add_Boss_Boss takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 765 else call error("Out of memory: Could not create EventListener_add_Boss_Boss.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 765 endif return this_1 endfunction function construct_Boss takes integer this_1, player owner, real tpos_x_1, real tpos_y_1, integer id returns nothing local integer temp = this_1 local unit receiver = createUnit(owner, id, tpos_x_1, tpos_y_1, 0.) local unit receiver_1 local integer clVar local unit temp_1 local playerunitevent temp_2 call unit_addAbility(receiver, Basics_LOCUST_ID) call construct_SetupObject(temp, receiver, createUnit(owner, id, tpos_x_1, tpos_y_1, 0.), 64.) call Boss_init(this_1) set receiver_1 = SetupObject_setup[this_1] call unit_addAbility(receiver_1, Boss_SUMMON_MINION_ID) set Entity_sleeps[this_1] = false set temp_1 = SetupObject_setup[this_1] set temp_2 = EVENT_PLAYER_UNIT_SPELL_CAST set clVar = alloc_EventListener_add_Boss_Boss() call construct_EventListener(clVar) set this_2912[clVar] = this_1 call EventListener_add_435(temp_1, temp_2, clVar) set Boss_hpBar[this_1] = new_CustomBar(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], "|", 120, 6.) call dispatch_CustomBar_CustomBar_CustomBar_setForeground(Boss_hpBar[this_1], 200, 255, 125, 255) endfunction function new_Boss takes player owner, real tpos_x_1, real tpos_y_1, integer id returns integer local integer this_1 = alloc_Boss() call construct_Boss(this_1, owner, tpos_x_1, tpos_y_1, id) return this_1 endfunction function alloc_BossDamager takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1197 else call error("Out of memory: Could not create BossDamager.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1197 endif return this_1 endfunction function BossDamager_init takes integer this_1 returns nothing endfunction function BossDamager_posToGrid takes real pos_x_1, real pos_y_1 returns real set BossDamager_posToGrid_return_x = real_round(pos_x_1 / 64.) * 64. set BossDamager_posToGrid_return_y = real_round(pos_y_1 / 64.) * 64. return BossDamager_posToGrid_return_x endfunction function alloc_EventListener_add_BossDamager_BossDamager takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 764 else call error("Out of memory: Could not create EventListener_add_BossDamager_BossDamager.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 764 endif return this_1 endfunction function StaticBaseObject_init takes integer this_1 returns nothing local real tuple_temp set StaticBaseObject_noRally[this_1] = null set StaticBaseObject_disFx[this_1] = null set StaticBaseObject_enabled[this_1] = true set StaticBaseObject_rallyUnit[this_1] = null set tuple_temp = 0. set StaticBaseObject_rallyAngle_radians[this_1] = tuple_temp endfunction function addEffect takes string path, real pos_x_1, real pos_y_1 returns effect return AddSpecialEffect(path, pos_x_1, pos_y_1) endfunction function alloc_EventListener_add_StaticBaseObject_BaseObject takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 818 else call error("Out of memory: Could not create EventListener_add_StaticBaseObject_BaseObject.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 818 endif return this_1 endfunction function alloc_EventListener_add_StaticBaseObject_BaseObject_1735 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 819 else call error("Out of memory: Could not create EventListener_add_StaticBaseObject_BaseObject.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 819 endif return this_1 endfunction function alloc_EventListener_add_StaticBaseObject_BaseObject_1736 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 820 else call error("Out of memory: Could not create EventListener_add_StaticBaseObject_BaseObject.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 820 endif return this_1 endfunction function construct_StaticBaseObject takes integer this_1, real pos_x_1, real pos_y_1, unit actor, real radius, code action_1, code cond returns nothing local unit receiver local unit receiver_1 local integer clVar local integer clVar_1 local integer clVar_2 local unit temp local playerunitevent temp_1 local unit temp_2 local playerunitevent temp_3 local unit temp_4 local playerunitevent temp_5 local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 call construct_UnitEntity(this_1, actor) call StaticBaseObject_init(this_1) set receiver = actor call unit_addAbility(receiver, Basics_GHOST_VIS_ID) set receiver_1 = receiver call unit_addAbility(receiver_1, BuilderConstants_REMOVE_OBJECT_ID) call Entity_setCurrentRegion(this_1) set StaticBaseObject_noRally[this_1] = addEffect(Objects_questionMark1, pos_x_1, pos_y_1) set tuple_temp = Entity_pos_x[this_1] set tuple_temp_1 = Entity_pos_y[this_1] set tuple_temp_2 = Entity_pos_z[this_1] set StaticBaseObject_rallyPoint_x[this_1] = tuple_temp set StaticBaseObject_rallyPoint_y[this_1] = tuple_temp_1 set StaticBaseObject_rallyPoint_z[this_1] = tuple_temp_2 if radius > 0. then set StaticBaseObject_inRangeTrig[this_1] = CreateTrigger() call trigger_registerUnitInRangeSource_4122(StaticBaseObject_inRangeTrig[this_1], actor, radius) if cond == null then call trigger_addCondition(StaticBaseObject_inRangeTrig[this_1], Condition(ref_function_StaticBaseObject_isProper)) else call trigger_addCondition(StaticBaseObject_inRangeTrig[this_1], Condition(cond)) endif call trigger_addAction(StaticBaseObject_inRangeTrig[this_1], action_1) endif set temp = actor set temp_1 = EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER set clVar = alloc_EventListener_add_StaticBaseObject_BaseObject() call construct_EventListener(clVar) call EventListener_add_435(temp, temp_1, clVar) set temp_2 = actor set temp_3 = EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER set clVar_1 = alloc_EventListener_add_StaticBaseObject_BaseObject_1735() call construct_EventListener(clVar_1) call EventListener_add_435(temp_2, temp_3, clVar_1) set temp_4 = actor set temp_5 = EVENT_PLAYER_UNIT_SPELL_CAST set clVar_2 = alloc_EventListener_add_StaticBaseObject_BaseObject_1736() call construct_EventListener(clVar_2) set this_2908[clVar_2] = this_1 call EventListener_add_435(temp_4, temp_5, clVar_2) endfunction function construct_BossDamager takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing local integer clVar local unit temp local playerunitevent temp_1 call construct_StaticBaseObject(this_1, BossDamager_posToGrid(pos_x_1, pos_y_1), BossDamager_posToGrid_return_y, createUnit(owner, BossDamager_DAMAGER_ID, BossDamager_posToGrid(pos_x_1, pos_y_1), BossDamager_posToGrid_return_y, 0.), BossDamager_EVENT_RADIUS, ref_function_BossDamager_onInRange, null) call BossDamager_init(this_1) call Log_debug("creating Boss Damager") set BossDamager_damage[this_1] = 40. set temp = UnitEntity_actor[this_1] set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST set clVar = alloc_EventListener_add_BossDamager_BossDamager() call construct_EventListener(clVar) call EventListener_add_435(temp, temp_1, clVar) endfunction function new_BossDamager takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_BossDamager() call construct_BossDamager(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_Key takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1156 else call error("Out of memory: Could not create Key.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1156 endif return this_1 endfunction function alloc_IterableMap takes nothing returns integer local integer this_1 if Table_firstFree == 0 then if Table_maxIndex < JASS_MAX_ARRAY_SIZE then set Table_maxIndex = Table_maxIndex + 1 set this_1 = Table_maxIndex set Table_typeId[this_1] = 1494 else call error("Out of memory: Could not create IterableMap.") set this_1 = 0 endif else set Table_firstFree = Table_firstFree - 1 set this_1 = Table_nextFree[Table_firstFree] set Table_typeId[this_1] = 1494 endif return this_1 endfunction function alloc_HashList takes nothing returns integer local integer this_1 if HashList_firstFree == 0 then if HashList_maxIndex < JASS_MAX_ARRAY_SIZE then set HashList_maxIndex = HashList_maxIndex + 1 set this_1 = HashList_maxIndex set HashList_typeId[this_1] = 894 else call error("Out of memory: Could not create HashList.") set this_1 = 0 endif else set HashList_firstFree = HashList_firstFree - 1 set this_1 = HashList_nextFree[HashList_firstFree] set HashList_typeId[this_1] = 894 endif return this_1 endfunction function HashList_init takes integer this_1 returns nothing set HashList_size[this_1] = 0 endfunction function construct_HashList takes integer this_1 returns nothing call HashList_init(this_1) endfunction function new_HashList takes nothing returns integer local integer this_1 = alloc_HashList() call construct_HashList(this_1) return this_1 endfunction function IterableMap_init takes integer this_1 returns nothing set IterableMap_keys[this_1] = new_HashList() set IterableMap__destroyed[this_1] = false endfunction function HashMap_init takes integer this_1 returns nothing set HashMap_size[this_1] = 0 endfunction function Table_init takes integer this_1 returns nothing endfunction function construct_Table takes integer this_1 returns nothing call Table_init(this_1) endfunction function construct_HashMap takes integer this_1 returns nothing call construct_Table(this_1) call HashMap_init(this_1) endfunction function construct_IterableMap takes integer this_1 returns nothing call construct_HashMap(this_1) call IterableMap_init(this_1) endfunction function new_IterableMap takes nothing returns integer local integer this_1 = alloc_IterableMap() call construct_IterableMap(this_1) return this_1 endfunction function Key_init takes integer this_1 returns nothing set Key_col[this_1] = 0 set Key_picked[this_1] = false set Key_followWalkable[this_1] = true set Key_infinite[this_1] = false set Key_infiniteEff[this_1] = null set Key_returnSfx[this_1] = null set Key_effectMap[this_1] = new_IterableMap() set Key_ignoreNextDrop[this_1] = false endfunction function alloc_EventListener_add_Key_Key takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 801 else call error("Out of memory: Could not create EventListener_add_Key_Key.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 801 endif return this_1 endfunction function createItem_2351 takes integer itemId, real pos_x_1, real pos_y_1, real pos_z returns item return CreateItem(itemId, pos_x_1, pos_y_1) endfunction function createItem takes integer itemId, real pos_x_1, real pos_y_1 returns item return createItem_2351(itemId, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z) endfunction function construct_Key takes integer this_1, real ppos_x, real ppos_y, player owner returns nothing local integer clVar local unit temp local playerunitevent temp_1 call construct_ItemObject(this_1, ppos_x, ppos_y, createItem(Key_keyIds[0], ppos_x, ppos_y), createUnit(owner, Key_KEY_DUMMY_ID, ppos_x, ppos_y, real_fromDeg(0.))) call Key_init(this_1) set temp = UnitEntity_actor[ItemObject_setup[this_1]] set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST set clVar = alloc_EventListener_add_Key_Key() call construct_EventListener(clVar) set this_2966[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) endfunction function new_Key takes real ppos_x, real ppos_y, player owner returns integer local integer this_1 = alloc_Key() call construct_Key(this_1, ppos_x, ppos_y, owner) return this_1 endfunction function alloc_SpellTarget takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1189 else call error("Out of memory: Could not create SpellTarget.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1189 endif return this_1 endfunction function SpellTarget_init takes integer this_1 returns nothing set SpellTarget_stype[this_1] = 0 endfunction function alloc_EventListener_add_SpellTarget_BossSpellTarget takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 815 else call error("Out of memory: Could not create EventListener_add_SpellTarget_BossSpellTarget.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 815 endif return this_1 endfunction function construct_SpellTarget takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing local integer temp = this_1 local unit receiver = createUnit(owner, BossSpellTarget_SPELLTARGET_ID, pos_x_1, pos_y_1, 0.) local integer clVar local unit temp_1 local playerunitevent temp_2 call unit_addAbility(receiver, Basics_LOCUST_ID) call construct_SetupObject(temp, receiver, createUnit(owner, BossSpellTarget_SPELLTARGET_ID, pos_x_1, pos_y_1, 0.), 32.) call SpellTarget_init(this_1) set SpellTarget_stype[this_1] = 0 set temp_1 = SetupObject_setup[this_1] set temp_2 = EVENT_PLAYER_UNIT_SPELL_CAST set clVar = alloc_EventListener_add_SpellTarget_BossSpellTarget() call construct_EventListener(clVar) set this_2913[clVar] = this_1 call EventListener_add_435(temp_1, temp_2, clVar) if not dispatch_HashMap_HashMap_HashMap_has(BossSpellTarget_targets, player_getId(owner)) then call dispatch_HashMap_HashMap_HashMap_put(BossSpellTarget_targets, player_getId(owner), new_LinkedList()) endif call dispatch_LinkedList_LinkedList_LinkedList_add_1(dispatch_HashMap_HashMap_HashMap_get(BossSpellTarget_targets, player_getId(owner)), this_1) endfunction function new_SpellTarget takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_SpellTarget() call construct_SpellTarget(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_Tome takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1157 else call error("Out of memory: Could not create Tome.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1157 endif return this_1 endfunction function Tome_init takes integer this_1 returns nothing endfunction function construct_Tome takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing call construct_ItemObject(this_1, pos_x_1, pos_y_1, CreateItem(BuilderConstants_TOME_ID, pos_x_1, pos_y_1), CreateUnit(owner, Tome_TOME_DUMMY_ID, pos_x_1, pos_y_1, 0.)) call Tome_init(this_1) endfunction function new_Tome takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_Tome() call construct_Tome(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function Builder_onCast takes integer this_1 returns nothing local integer id = GetSpellAbilityId() local real tuple_temp = EventData_getSpellTargetPos() local real tuple_temp_1 = EventData_getSpellTargetPos_return_y local real tpos_x_1 = tuple_temp local real tpos_y_1 = tuple_temp_1 local integer rdata = getRegionData_3302(tpos_x_1, tpos_y_1) local integer temp local integer temp_tuple_bossId local player temp_1 local real temp_x local real temp_y local real tuple_temp_2 local real tuple_temp_3 local integer tuple_temp_4 if rdata == 0 then return endif set temp = id if temp == Builder_MENU_CIRCLES_ID then call unit_addAbility(UnitEntity_actor[this_1], Builder_CHAOS_BUILDER_1) elseif temp == BuilderConstants_MENU_2 then call unit_addAbility(UnitEntity_actor[this_1], Builder_CHAOS_BUILDER_2) elseif temp == BuilderConstants_MENU_3 then call unit_addAbility(UnitEntity_actor[this_1], Builder_CHAOS_BUILDER_3) elseif temp == Builder_MENU_DECORATIONS_ID then call unit_addAbility(UnitEntity_actor[this_1], Builder_CHAOS_BUILDER_4) elseif temp == Builder_MENU_OBJECTS_ID then call unit_addAbility(UnitEntity_actor[this_1], Builder_CHAOS_BUILDER_2) elseif temp == Builder_MENU_ENVIROMENTALS_ID then call unit_addAbility(UnitEntity_actor[this_1], Builder_CHAOS_BUILDER_3) elseif temp == BuilderConstants_KEY_SPELL_ID then if dispatch_RegionData_RegionData_RegionData_canBuild(rdata, Entity_owner[this_1]) then call new_Key(tpos_x_1, tpos_y_1, Entity_owner[this_1]) else call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019You have no permission to place items in this region!") endif elseif temp == BuilderConstants_BOOTS_SPELL_ID then if dispatch_RegionData_RegionData_RegionData_canBuild(rdata, Entity_owner[this_1]) then call new_Boots(tpos_x_1, tpos_y_1, Entity_owner[this_1]) else call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019You have no permission to place items in this region!") endif elseif temp == BuilderConstants_TOME_SPELL_ID then if dispatch_RegionData_RegionData_RegionData_canBuild(rdata, Entity_owner[this_1]) then call new_Tome(tpos_x_1, tpos_y_1, Entity_owner[this_1]) else call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019You have no permission to place items in this region!") endif elseif temp == BuilderConstants_COIN_SPELL_ID then if dispatch_RegionData_RegionData_RegionData_canBuild(rdata, Entity_owner[this_1]) then call new_Coin(tpos_x_1, tpos_y_1, Entity_owner[this_1]) else call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019You have no permission to place items in this region!") endif elseif temp == BuilderConstants_BM_BOSS_ID then if dispatch_RegionData_RegionData_RegionData_canBuild(rdata, Entity_owner[this_1]) and RegionData_bossRegion[rdata] then if RegionData_boss[rdata] == 0 then set temp_1 = Entity_owner[this_1] set tuple_temp_2 = tpos_x_1 set tuple_temp_3 = tpos_y_1 set temp_x = tuple_temp_2 set temp_y = tuple_temp_3 call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata) set tuple_temp_4 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bossId set temp_tuple_bossId = tuple_temp_4 set RegionData_boss[rdata] = new_Boss(temp_1, temp_x, temp_y, temp_tuple_bossId) else call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019You can only have one boss each region!") endif else call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019You are not allowed to place Boss objects in this region!") endif elseif temp == BuilderConstants_BM_SPELLTARGET_ID then if dispatch_RegionData_RegionData_RegionData_canBuild(rdata, Entity_owner[this_1]) and RegionData_bossRegion[rdata] then call new_SpellTarget(tpos_x_1, tpos_y_1, Entity_owner[this_1]) endif elseif temp == BuilderConstants_BM_DAMAGER_ID then if dispatch_RegionData_RegionData_RegionData_canBuild(rdata, Entity_owner[this_1]) and RegionData_bossRegion[rdata] then call new_BossDamager(tpos_x_1, tpos_y_1, Entity_owner[this_1]) endif elseif temp == BuilderConstants_BM_WEAPON_ID then if dispatch_RegionData_RegionData_RegionData_canBuild(getRegionData_3302(tpos_x_1, tpos_y_1), Entity_owner[this_1]) and RegionData_bossRegion[getRegionData_3302(tpos_x_1, tpos_y_1)] then endif else call dispatch_JukeBox_JukeBox_JukeBox_checkSpell(JukeBox_jukeBox, id) endif endfunction function dispatch_Builder_Builder_Builder_onCast takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Builder.onCast") else call error("Called Builder.onCast on invalid object.") endif endif call Builder_onCast(this_1) endfunction function onEvent_add_Builder_Builder_3816 takes integer this_1 returns nothing call dispatch_Builder_Builder_Builder_onCast(this_2923[this_1]) endfunction function onEvent_add_Builder_Builder_3817 takes integer this_1 returns nothing call unit_remove(GetTriggerUnit()) endfunction function alloc_CallbackSingle_doAfter_Commands takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 680 else call error("Out of memory: Could not create CallbackSingle_doAfter_Commands.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 680 endif return this_1 endfunction function LinkedList_getEntry takes integer this_1, integer index returns integer local integer entry = LinkedList_dummy[this_1] local integer i = 0 local integer temp = index loop exitwhen i > temp set entry = LLEntry_next[entry] set i = i + 1 endloop return entry endfunction function dispatch_LinkedList_LinkedList_LinkedList_getEntry takes integer this_1, integer index returns integer local integer LinkedList_LinkedList_getEntry_result if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.getEntry") else call error("Called LinkedList.getEntry on invalid object.") endif endif set LinkedList_LinkedList_getEntry_result = LinkedList_getEntry(this_1, index) return LinkedList_LinkedList_getEntry_result endfunction function LinkedList_get takes integer this_1, integer index returns integer return LLEntry_elem[dispatch_LinkedList_LinkedList_LinkedList_getEntry(this_1, index)] endfunction function dispatch_LinkedList_LinkedList_LinkedList_get takes integer this_1, integer index returns integer local integer LinkedList_LinkedList_get_result if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.get") else call error("Called LinkedList.get on invalid object.") endif endif set LinkedList_LinkedList_get_result = LinkedList_get(this_1, index) return LinkedList_LinkedList_get_result endfunction function SetupBox_addBossSwitch takes integer this_1 returns nothing call unit_addAbility(UnitEntity_actor[this_1], SetupBox_BOSS_MODE_ID) endfunction function dispatch_SetupBox_SetupBox_SetupBox_addBossSwitch takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SetupBox.addBossSwitch") else call error("Called SetupBox.addBossSwitch on invalid object.") endif endif call SetupBox_addBossSwitch(this_1) endfunction function forceRevive takes integer e_1 returns nothing local integer pod = ReviveManager_pods[player_getId(Entity_owner[e_1])] if pod != 0 then if PlayerData_escaper[RevivePod_owner[pod]] != 0 and ( not Escaper_alive[PlayerData_escaper[RevivePod_owner[pod]]]) then call dispatch_Escaper_Escaper_Escaper_revive(PlayerData_escaper[RevivePod_owner[pod]]) endif call dispatch_RevivePod_destroyRevivePod(pod) set ReviveManager_pods[player_getId(Entity_owner[e_1])] = 0 endif endfunction function group_close takes group this_1 returns nothing call group_clear(this_1) call group_destr(this_1) endfunction function group_add_1_3312 takes group this_1, group groups_0 returns integer local integer i = 0 set i = i + BlzGroupAddGroupFast(groups_0, this_1) return i endfunction function group_iterator takes group this_1 returns group set Group_iterGroup = CreateGroup() call group_add_1_3312(Group_iterGroup, this_1) return Group_iterGroup endfunction function alloc_Spaceship takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1192 else call error("Out of memory: Could not create Spaceship.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1192 endif return this_1 endfunction function Spaceship_init takes integer this_1 returns nothing local real tuple_temp set Spaceship_maxSpeed[this_1] = 8. set Spaceship_acc[this_1] = 0. set tuple_temp = real_fromDeg(90.) set Spaceship_xyAngle_radians[this_1] = tuple_temp set Spaceship_projectiles[this_1] = new_LinkedList() set Spaceship_hp[this_1] = 2 endfunction function construct_Spaceship takes integer this_1, real pos_x_1, real pos_y_1, integer mounter returns nothing local unit receiver local unit receiver_1 call construct_UnitEntity(this_1, createUnit(Entity_owner[mounter], MGSpacey_SHIP_ID, pos_x_1, pos_y_1, real_fromDeg(90.))) call Spaceship_init(this_1) set Spaceship_mounter[this_1] = mounter set Escaper_alive[Spaceship_mounter[this_1]] = false call unit_addAbility(UnitEntity_actor[this_1], Basics_LOCUST_ID) set receiver = UnitEntity_actor[mounter] call unit_pause(receiver) set receiver_1 = receiver call unit_hide(receiver_1) call dispatch_UnitEntity_Entity_UnitEntity_setPos(this_1, vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0., 32.), vec3_op_plus_return_y, vec3_op_plus_return_z) set Entity_sleeps[this_1] = false endfunction function new_Spaceship takes real pos_x_1, real pos_y_1, integer mounter returns integer local integer this_1 = alloc_Spaceship() call construct_Spaceship(this_1, pos_x_1, pos_y_1, mounter) return this_1 endfunction function player_setName takes player this_1, string name returns nothing call SetPlayerName(this_1, name) endfunction function PlayerData_tmods_set takes integer instanceId, integer arrayIndex, integer value returns nothing if arrayIndex < 0 or arrayIndex >= 4 then call error("Index out of Bounds") elseif arrayIndex <= 1 then if arrayIndex <= 0 then set PlayerData_tmods_0[instanceId] = value else set PlayerData_tmods_1[instanceId] = value endif elseif arrayIndex <= 2 then set PlayerData_tmods_2[instanceId] = value else set PlayerData_tmods_3[instanceId] = value endif endfunction function RegionData_revealRegion takes integer this_1, player p returns nothing local integer id = player_getId(p) if RegionData_fmods_get(this_1, id) == 0 then call RegionData_fmods_set(this_1, id, new_FogData(p, RegionData_theRect[this_1])) endif call dispatch_FogData_RegionData_FogData_changeFog(RegionData_fmods_get(this_1, id), FOG_OF_WAR_VISIBLE) endfunction function dispatch_RegionData_RegionData_RegionData_revealRegion takes integer this_1, player p returns nothing if RegionData_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling RegionData.revealRegion") else call error("Called RegionData.revealRegion on invalid object.") endif endif call RegionData_revealRegion(this_1, p) endfunction function alloc_Builder takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1161 else call error("Out of memory: Could not create Builder.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1161 endif return this_1 endfunction function Builder_init takes integer this_1 returns nothing set Builder_regionCount[this_1] = 0 endfunction function alloc_EventListener_add_Builder_Builder takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 768 else call error("Out of memory: Could not create EventListener_add_Builder_Builder.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 768 endif return this_1 endfunction function alloc_EventListener_add_Builder_Builder_1685 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 769 else call error("Out of memory: Could not create EventListener_add_Builder_Builder.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 769 endif return this_1 endfunction function alloc_EventListener_add_Builder_Builder_1686 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 770 else call error("Out of memory: Could not create EventListener_add_Builder_Builder.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 770 endif return this_1 endfunction function alloc_EventListener_add_Builder_Builder_1687 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 771 else call error("Out of memory: Could not create EventListener_add_Builder_Builder.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 771 endif return this_1 endfunction function Builder_registerListeners takes integer this_1 returns nothing local unit temp = UnitEntity_actor[this_1] local playerunitevent temp_1 = EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER local integer clVar = alloc_EventListener_add_Builder_Builder() local integer clVar_1 local integer clVar_2 local integer clVar_3 local unit temp_2 local playerunitevent temp_3 local unit temp_4 local playerunitevent temp_5 local unit temp_6 local playerunitevent temp_7 call construct_EventListener(clVar) set this_2921[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) set temp_2 = UnitEntity_actor[this_1] set temp_3 = EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER set clVar_1 = alloc_EventListener_add_Builder_Builder_1685() call construct_EventListener(clVar_1) set this_2922[clVar_1] = this_1 call EventListener_add_435(temp_2, temp_3, clVar_1) set temp_4 = UnitEntity_actor[this_1] set temp_5 = EVENT_PLAYER_UNIT_SPELL_CAST set clVar_2 = alloc_EventListener_add_Builder_Builder_1686() call construct_EventListener(clVar_2) set this_2923[clVar_2] = this_1 call EventListener_add_435(temp_4, temp_5, clVar_2) set temp_6 = UnitEntity_actor[this_1] set temp_7 = EVENT_PLAYER_UNIT_CONSTRUCT_FINISH set clVar_3 = alloc_EventListener_add_Builder_Builder_1687() call construct_EventListener(clVar_3) call EventListener_add_435(temp_6, temp_7, clVar_3) endfunction function dispatch_Builder_Builder_Builder_registerListeners takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Builder.registerListeners") else call error("Called Builder.registerListeners on invalid object.") endif endif call Builder_registerListeners(this_1) endfunction function construct_Builder takes integer this_1, player p returns nothing call construct_UnitEntity(this_1, createUnit(p, Builder_BUILDER_CIRCLES_ID, -6000., -7160., 0.)) call Builder_init(this_1) call dispatch_Builder_Builder_Builder_registerListeners(this_1) call Entity_setCurrentRegion(this_1) endfunction function new_Builder takes player p returns integer local integer this_1 = alloc_Builder() call construct_Builder(this_1, p) return this_1 endfunction function alloc_FastEscaper takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1164 else call error("Out of memory: Could not create FastEscaper.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1164 endif return this_1 endfunction function FastEscaper_init takes integer this_1 returns nothing set FastEscaper_portal[this_1] = 0 endfunction function construct_Escaper_PhysicsModule takes integer this_1 returns nothing endfunction function Escaper_init takes integer this_1 returns nothing local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 set Escaper_PhysicsModule_terrainZ[this_1] = 0. set Escaper_PhysicsModule_surfaceFriction[this_1] = 0.9 set Escaper_revmod[this_1] = 0 set Escaper_sliding[this_1] = false set Escaper_poisoned[this_1] = false set Escaper_onLava[this_1] = false set Escaper_camlock[this_1] = false set Escaper_deaths[this_1] = 0 set tuple_temp = 0. set tuple_temp_1 = 0. set Escaper_walkVel_x[this_1] = tuple_temp set Escaper_walkVel_y[this_1] = tuple_temp_1 set tuple_temp_2 = 0. set tuple_temp_3 = 0. set Escaper_slideVelocity_x[this_1] = tuple_temp_2 set Escaper_slideVelocity_y[this_1] = tuple_temp_3 set tuple_temp_4 = 0. set tuple_temp_5 = 0. set Escaper_otherVel_x[this_1] = tuple_temp_4 set Escaper_otherVel_y[this_1] = tuple_temp_5 set Escaper_threshold[this_1] = 0 set Escaper_alive[this_1] = true set Escaper_selectatrevive[this_1] = true set Escaper_camOnRevive[this_1] = true set Escaper_left[this_1] = false set Escaper_revivetomb[this_1] = null set Escaper_lastVal[this_1] = -1 set Escaper_orb[this_1] = 0 call construct_Escaper_PhysicsModule(this_1) endfunction function alloc_EventListener_add_Escaper_Escaper takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 783 else call error("Out of memory: Could not create EventListener_add_Escaper_Escaper.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 783 endif return this_1 endfunction function alloc_EventListener_add_Escaper_Escaper_1700 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 784 else call error("Out of memory: Could not create EventListener_add_Escaper_Escaper.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 784 endif return this_1 endfunction function alloc_EventListener_add_Escaper_Escaper_1701 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 785 else call error("Out of memory: Could not create EventListener_add_Escaper_Escaper.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 785 endif return this_1 endfunction function alloc_EventListener_add_Escaper_Escaper_1702 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 786 else call error("Out of memory: Could not create EventListener_add_Escaper_Escaper.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 786 endif return this_1 endfunction function alloc_EventListener_add_Escaper_Escaper_1703 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 787 else call error("Out of memory: Could not create EventListener_add_Escaper_Escaper.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 787 endif return this_1 endfunction function construct_Escaper takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, player owner, integer typ returns nothing local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local unit receiver_4 local integer clVar local integer clVar_1 local integer clVar_2 local integer clVar_3 local integer clVar_4 local unit temp local playerunitevent temp_1 local unit temp_2 local playerunitevent temp_3 local unit temp_4 local playerunitevent temp_5 local unit temp_6 local playerunitevent temp_7 local unit temp_8 local playerunitevent temp_9 call construct_UnitEntity(this_1, createUnit_2354(owner, typ, vec3_op_plus(pos_x_1, pos_y_1, pos_z, 0., 0., 32.), vec3_op_plus_return_y, vec3_op_plus_return_z, 0.)) call Escaper_init(this_1) set receiver = UnitEntity_actor[this_1] call unit_addAbility(receiver, Basics_LOCUST_ID) set receiver_1 = receiver call unit_hide(receiver_1) set receiver_2 = receiver_1 call unit_removeAbility(receiver_2, Basics_LOCUST_ID) set receiver_3 = receiver_2 call unit_show(receiver_3) set receiver_4 = receiver_3 call unit_setPropWindow(receiver_4, real_fromDeg(60.)) set temp = UnitEntity_actor[this_1] set temp_1 = EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER set clVar = alloc_EventListener_add_Escaper_Escaper() call construct_EventListener(clVar) set this_2932[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) set temp_2 = UnitEntity_actor[this_1] set temp_3 = EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER set clVar_1 = alloc_EventListener_add_Escaper_Escaper_1700() call construct_EventListener(clVar_1) set this_2933[clVar_1] = this_1 call EventListener_add_435(temp_2, temp_3, clVar_1) set temp_4 = UnitEntity_actor[this_1] set temp_5 = EVENT_PLAYER_UNIT_DEATH set clVar_2 = alloc_EventListener_add_Escaper_Escaper_1701() call construct_EventListener(clVar_2) set this_2934[clVar_2] = this_1 call EventListener_add_435(temp_4, temp_5, clVar_2) set temp_6 = UnitEntity_actor[this_1] set temp_7 = EVENT_PLAYER_UNIT_PICKUP_ITEM set clVar_3 = alloc_EventListener_add_Escaper_Escaper_1702() call construct_EventListener(clVar_3) set this_2935[clVar_3] = this_1 call EventListener_add_435(temp_6, temp_7, clVar_3) set temp_8 = UnitEntity_actor[this_1] set temp_9 = EVENT_PLAYER_UNIT_SPELL_EFFECT set clVar_4 = alloc_EventListener_add_Escaper_Escaper_1703() call construct_EventListener(clVar_4) set this_2936[clVar_4] = this_1 call EventListener_add_435(temp_8, temp_9, clVar_4) call dispatch_LinkedList_LinkedList_LinkedList_add_1(Escaper_escapers, this_1) call Entity_setCurrentRegion(this_1) if RegionData_specialAbil[Entity_getCurrentRegion(this_1)] > 0 then call unit_addAbility(UnitEntity_actor[this_1], RegionData_specialAbil[Entity_getCurrentRegion(this_1)]) endif endfunction function construct_FastEscaper takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, player owner returns nothing call construct_Escaper(this_1, pos_x_1, pos_y_1, pos_z, owner, BuilderConstants_ESC_FAST_ID) call FastEscaper_init(this_1) endfunction function new_FastEscaper takes real pos_x_1, real pos_y_1, real pos_z, player owner returns integer local integer this_1 = alloc_FastEscaper() call construct_FastEscaper(this_1, pos_x_1, pos_y_1, pos_z, owner) return this_1 endfunction function alloc_HolyEscaper takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1165 else call error("Out of memory: Could not create HolyEscaper.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1165 endif return this_1 endfunction function HolyEscaper_init takes integer this_1 returns nothing endfunction function construct_HolyEscaper takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, player owner returns nothing call construct_Escaper(this_1, pos_x_1, pos_y_1, pos_z, owner, BuilderConstants_ESC_HOLY_ID) call HolyEscaper_init(this_1) endfunction function new_HolyEscaper takes real pos_x_1, real pos_y_1, real pos_z, player owner returns integer local integer this_1 = alloc_HolyEscaper() call construct_HolyEscaper(this_1, pos_x_1, pos_y_1, pos_z, owner) return this_1 endfunction function alloc_IceEscaper takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1166 else call error("Out of memory: Could not create IceEscaper.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1166 endif return this_1 endfunction function IceEscaper_init takes integer this_1 returns nothing endfunction function construct_IceEscaper takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, player owner returns nothing call construct_Escaper(this_1, pos_x_1, pos_y_1, pos_z, owner, BuilderConstants_ESC_ICE_ID) call IceEscaper_init(this_1) endfunction function new_IceEscaper takes real pos_x_1, real pos_y_1, real pos_z, player owner returns integer local integer this_1 = alloc_IceEscaper() call construct_IceEscaper(this_1, pos_x_1, pos_y_1, pos_z, owner) return this_1 endfunction function alloc_StrongEscaper takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1167 else call error("Out of memory: Could not create StrongEscaper.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1167 endif return this_1 endfunction function StrongEscaper_init takes integer this_1 returns nothing local real tuple_temp local real tuple_temp_1 set StrongEscaper_invulnerable[this_1] = false set StrongEscaper_shieldeffect[this_1] = null set tuple_temp = 0. set tuple_temp_1 = 0. set StrongEscaper_shieldPos_x[this_1] = tuple_temp set StrongEscaper_shieldPos_y[this_1] = tuple_temp_1 set StrongEscaper_shieldtimer[this_1] = 0. endfunction function alloc_EventListener_add_StrongEscaper_EscaperClasses takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 821 else call error("Out of memory: Could not create EventListener_add_StrongEscaper_EscaperClasses.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 821 endif return this_1 endfunction function construct_StrongEscaper takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, player owner returns nothing local integer clVar local unit temp local playerunitevent temp_1 call construct_Escaper(this_1, pos_x_1, pos_y_1, pos_z, owner, BuilderConstants_ESC_STRONG_ID) call StrongEscaper_init(this_1) set temp = UnitEntity_actor[this_1] set temp_1 = EVENT_PLAYER_HERO_SKILL set clVar = alloc_EventListener_add_StrongEscaper_EscaperClasses() call construct_EventListener(clVar) set this_2939[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) endfunction function new_StrongEscaper takes real pos_x_1, real pos_y_1, real pos_z, player owner returns integer local integer this_1 = alloc_StrongEscaper() call construct_StrongEscaper(this_1, pos_x_1, pos_y_1, pos_z, owner) return this_1 endfunction function alloc_TerrainModder takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1222 else call error("Out of memory: Could not create TerrainModder.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1222 endif return this_1 endfunction function TerrainModder_init takes integer this_1 returns nothing set TerrainModder_brushsize[this_1] = 0 set TerrainModder_brushshape[this_1] = 0 set TerrainModder_modification[this_1] = 0 set TerrainModder_legit[this_1] = false endfunction function alloc_EventListener_add_TerrainModder_TerrainModder takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 823 else call error("Out of memory: Could not create EventListener_add_TerrainModder_TerrainModder.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 823 endif return this_1 endfunction function alloc_EventListener_add_TerrainModder_TerrainModder_1740 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 824 else call error("Out of memory: Could not create EventListener_add_TerrainModder_TerrainModder.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 824 endif return this_1 endfunction function alloc_EventListener_add_TerrainModder_TerrainModder_1741 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 825 else call error("Out of memory: Could not create EventListener_add_TerrainModder_TerrainModder.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 825 endif return this_1 endfunction function construct_TerrainModder takes integer this_1, unit u_1 returns nothing local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local unit receiver_4 local unit receiver_5 local integer clVar local integer clVar_1 local integer clVar_2 local unit temp local playerunitevent temp_1 local unit temp_2 local playerunitevent temp_3 local unit temp_4 local playerunitevent temp_5 call construct_UnitEntity(this_1, u_1) call TerrainModder_init(this_1) set receiver = UnitEntity_actor[this_1] call unit_setPos(receiver, BuilderConstants_hidden_x, BuilderConstants_hidden_y) set receiver_1 = receiver call unit_setPropWindow(receiver_1, real_fromDeg(0.)) set receiver_2 = receiver_1 call unit_addAbility(receiver_2, TerrainModder_BRUSH_1_ACTIVE_ABILITY) set receiver_3 = receiver_2 call unit_addAbility(receiver_3, TerrainModder_BRUSH_3_IDLE_ABILITY) set receiver_4 = receiver_3 call unit_addAbility(receiver_4, TerrainModder_BRUSH_5_IDLE_ABILITY) set receiver_5 = receiver_4 call unit_addAbility(receiver_5, TerrainModder_BRUSH_RECT_ID) set temp = UnitEntity_actor[this_1] set temp_1 = EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER set clVar = alloc_EventListener_add_TerrainModder_TerrainModder() call construct_EventListener(clVar) set this_2928[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) set temp_2 = UnitEntity_actor[this_1] set temp_3 = EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER set clVar_1 = alloc_EventListener_add_TerrainModder_TerrainModder_1740() call construct_EventListener(clVar_1) set this_2929[clVar_1] = this_1 call EventListener_add_435(temp_2, temp_3, clVar_1) set temp_4 = UnitEntity_actor[this_1] set temp_5 = EVENT_PLAYER_UNIT_SPELL_EFFECT set clVar_2 = alloc_EventListener_add_TerrainModder_TerrainModder_1741() call construct_EventListener(clVar_2) set this_2930[clVar_2] = this_1 call EventListener_add_435(temp_4, temp_5, clVar_2) endfunction function new_TerrainModder takes unit u_1 returns integer local integer this_1 = alloc_TerrainModder() call construct_TerrainModder(this_1, u_1) return this_1 endfunction function alloc_UnitProducer takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1208 else call error("Out of memory: Could not create UnitProducer.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1208 endif return this_1 endfunction function UnitProducer_init takes integer this_1 returns nothing endfunction function alloc_EventListener_add_UnitProducer_UnitProducer takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 829 else call error("Out of memory: Could not create EventListener_add_UnitProducer_UnitProducer.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 829 endif return this_1 endfunction function construct_UnitProducer takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing local unit receiver local unit receiver_1 local integer clVar local unit temp local playerunitevent temp_1 call construct_StaticBaseObject(this_1, pos_x_1, pos_y_1, createUnit(owner, UnitProducer_UNIT_PRODUCER_ID, pos_x_1, pos_y_1, 0.), 0., null, null) call UnitProducer_init(this_1) set receiver = UnitEntity_actor[this_1] call unit_removeAbility(receiver, BuilderConstants_REMOVE_OBJECT_ID) set receiver_1 = receiver call unit_addAbility(receiver_1, UnitProducer_AIR_KILLER) set temp = UnitEntity_actor[this_1] set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST set clVar = alloc_EventListener_add_UnitProducer_UnitProducer() call construct_EventListener(clVar) set this_2931[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(this_1) endfunction function new_UnitProducer takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_UnitProducer() call construct_UnitProducer(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function startTestmode takes integer pd_1 returns nothing local integer i local integer e1 local unit receiver local unit receiver_1 local integer e2 local integer e3 local integer e4 local unit receiver_2 local unit receiver_3 local unit receiver_4 if dispatch_LinkedList_LinkedList_LinkedList_size(PlayerData_allPlayers) == 1 or PlayerData_title[pd_1] == 2 and PlayerData_builder[pd_1] == 0 then call Log_debug("testmode terminate") call cyc_RevivePoint_terminate(18, PlayerData_escaper[pd_1]) call dispatch_LinkedList_LinkedList_LinkedList_add_1(PlayerData_builderPlayers, pd_1) set i = 0 loop exitwhen i > 28 call dispatch_RegionData_RegionData_RegionData_revealRegion(RegionData_regions[i], PlayerData_p[pd_1]) set i = i + 1 endloop call PlayerData_tmods_set(pd_1, 0, new_TerrainModder(createUnit(PlayerData_p[pd_1], TerrainModder_WALKABLE_ID, BuilderConstants_hidden_x, BuilderConstants_hidden_y, 0.))) call PlayerData_tmods_set(pd_1, 1, new_TerrainModder(createUnit(PlayerData_p[pd_1], TerrainModder_UNWALKABLE_ID, BuilderConstants_hidden_x, BuilderConstants_hidden_y, 0.))) call PlayerData_tmods_set(pd_1, 2, new_TerrainModder(createUnit(PlayerData_p[pd_1], TerrainModder_SLIDEABLE_ICE_ID, BuilderConstants_hidden_x, BuilderConstants_hidden_y, 0.))) call PlayerData_tmods_set(pd_1, 3, new_TerrainModder(createUnit(PlayerData_p[pd_1], TerrainModder_SLIDEABLE_UNC_ICE_ID, BuilderConstants_hidden_x, BuilderConstants_hidden_y, 0.))) set PlayerData_prod[pd_1] = new_UnitProducer(BuilderConstants_hidden_x, BuilderConstants_hidden_y, PlayerData_p[pd_1]) set e1 = new_HolyEscaper(vec2_toVec3(Escaper_currentRevivepoint_x, Escaper_currentRevivepoint_y), vec2_toVec3_return_y, vec2_toVec3_return_z, PlayerData_p[pd_1]) set PlayerData_escaper[pd_1] = e1 set receiver = UnitEntity_actor[e1] call unit_addAbility(receiver, 1093677105) set receiver_1 = receiver call unit_addAbility(receiver_1, RevivePointModifier_CREATE_REV_MOD_ID) set e2 = new_FastEscaper(vec2_toVec3(Escaper_currentRevivepoint_x, Escaper_currentRevivepoint_y), vec2_toVec3_return_y, vec2_toVec3_return_z, PlayerData_p[pd_1]) call unit_addAbility(UnitEntity_actor[e2], 1093677105) set e3 = new_StrongEscaper(vec2_toVec3(Escaper_currentRevivepoint_x, Escaper_currentRevivepoint_y), vec2_toVec3_return_y, vec2_toVec3_return_z, PlayerData_p[pd_1]) call unit_addAbility(UnitEntity_actor[e3], 1093677105) set e4 = new_IceEscaper(vec2_toVec3(Escaper_currentRevivepoint_x, Escaper_currentRevivepoint_y), vec2_toVec3_return_y, vec2_toVec3_return_z, PlayerData_p[pd_1]) call unit_addAbility(UnitEntity_actor[e4], 1093677105) set PlayerData_builder[pd_1] = new_Builder(PlayerData_p[pd_1]) set receiver_2 = UnitEntity_actor[PlayerData_builder[pd_1]] call unit_addItemById(receiver_2, 1227894833) set receiver_3 = receiver_2 call unit_addItemById(receiver_3, 1227894834) set receiver_4 = receiver_3 call unit_addItemById(receiver_4, 1227894835) set Builder_regionCount[PlayerData_builder[pd_1]] = 17 call unit_addAbility(UnitEntity_actor[PlayerData_escaper[pd_1]], 1093677105) call printTimed("|cff949494SinglePlayer |cffFFCC00test mode |cff949494enabled!", 45.) endif endfunction function stringFromIndex takes integer index returns string local string str = dispatch_Table_Table_Table_loadString(TypeCasting_typecastdata, index) return str endfunction function string_split takes string this_1, string splitBy returns integer local integer list = new_LinkedList() local integer offset = string_length(splitBy) local string str = this_1 local integer splitIndex local string first local string second loop exitwhen not true set splitIndex = string_indexOf(str, splitBy) if splitIndex == -1 then call dispatch_LinkedList_LinkedList_LinkedList_add_1(list, stringToIndex(str)) exitwhen true endif set first = string_substring(str, 0, splitIndex) set second = string_substring(str, splitIndex + offset, string_length(str)) call dispatch_LinkedList_LinkedList_LinkedList_add_1(list, stringToIndex(first)) set str = second endloop return list endfunction function string_startsWith takes string this_1, string s returns boolean local integer len = string_length(this_1) if string_length(s) > len then return false endif return string_substring(this_1, 0, string_length(s)) == s endfunction function string_substring_4063 takes string this_1, integer start returns string return SubString(this_1, start, string_length(this_1)) endfunction function string_toInt takes string this_1 returns integer return S2I(this_1) endfunction function string_toReal takes string this_1 returns real return S2R(this_1) endfunction function parseCommand takes string str returns nothing local player p = GetTriggerPlayer() local integer id = player_getId(p) local integer pd_1 = PlayerData_pData[id] local integer args = string_split(string_substring_4063(str, 1), " ") local string cstr = stringFromIndex(dispatch_LinkedList_LinkedList_LinkedList_get(args, 0)) local string temp local string nstr local string temp_1 local integer clVar local string s local string nstr_1 local string nstr_2 local integer i local unit tr local group iterator local unit u_1 local integer i_1 local unit tr_1 local group iterator_1 local unit u_2 local integer id2 local integer pd2 local group units local group iterator_2 local unit u_3 local string name local integer iterator_3 local integer pl if PlayerData_escaper[pd_1] == 0 and cstr != "d" then call DisplayTimedTextToPlayer(p, 0., 0., 10., "|cffFFD621[Info]|r - Commands are only available after hero selection.") return endif set temp = cstr if temp == "smooth" then if dispatch_LinkedList_LinkedList_LinkedList_size(args) > 1 then call string_toReal(stringFromIndex(dispatch_LinkedList_LinkedList_LinkedList_get(args, 1))) endif elseif temp == "rename" then if dispatch_LinkedList_LinkedList_LinkedList_size(args) > 1 then call player_setName(p, stringFromIndex(dispatch_LinkedList_LinkedList_LinkedList_get(args, 1))) endif elseif temp == "clear" then if Player_localPlayer == p then call ClearTextMessages() endif elseif temp == "cam" then set nstr = stringFromIndex(dispatch_LinkedList_LinkedList_LinkedList_get(args, 1)) if nstr != null then set temp_1 = nstr if temp_1 == "lock" then call SetCameraTargetControllerNoZForPlayer(p, UnitEntity_actor[PlayerData_escaper[pd_1]], 0., 0., true) set Escaper_camlock[PlayerData_escaper[pd_1]] = true elseif temp_1 == "unlock" then call ResetToGameCameraForPlayer(p, 1.) set Escaper_camlock[PlayerData_escaper[pd_1]] = false else set PlayerData_zCam[pd_1] = string_toInt(nstr) * 1. if PlayerData_zCam[pd_1] > 3000. then set PlayerData_zCam[pd_1] = 3000. call DisplayTimedTextToPlayer(p, 0., 0., 10., "|cffFFD621[Info]|r - Maximum Zoom is 3000") elseif PlayerData_zCam[pd_1] < 500. then set PlayerData_zCam[pd_1] = 500. call DisplayTimedTextToPlayer(p, 0., 0., 10., "|cffFFD621[Info]|r - Minimum Zoom is 500") endif call SetCameraFieldForPlayer(p, CAMERA_FIELD_TARGET_DISTANCE, PlayerData_zCam[pd_1], 1.) endif endif elseif temp == "frev" then call DisplayTimedTextToPlayer(p, 0., 0., 10., "|cffFFD621[Info]|r - Trying forced revive!") if PlayerData_escaper[pd_1] == 0 then set clVar = alloc_CallbackSingle_doAfter_Commands() call construct_CallbackSingle(clVar) set pd_2571[clVar] = pd_1 call doAfter(0.1, clVar) else call forceRevive(PlayerData_escaper[pd_1]) endif elseif temp == "info" then set s = "|cffFFD621[Info]|r - Current Region:\n" set s = s + "\t\t\t|cff63DEFFSlidespeed|r: " + real_toString(RegionData_slidespeed[Entity_getCurrentRegion(PlayerData_escaper[pd_1])]) + "\n" set s = s + "\t\t\t|cff08AD4APoison Damage|r: " + real_toString(RegionData_poisonDmg[Entity_getCurrentRegion(PlayerData_escaper[pd_1])]) + "\n" set s = s + "\t\t\t|cffA52108Lava Damage|r: " + real_toString(RegionData_lavaDmg[Entity_getCurrentRegion(PlayerData_escaper[pd_1])]) + "\n" set s = s + "\t\t\t|cffFF9C29Owners|r: " call DisplayTimedTextToPlayer(p, 0., 0., 20., s) elseif temp == "intro" then elseif temp == "test" then call startTestmode(pd_1) elseif temp == "fuckblizz" then set nstr_1 = stringFromIndex(dispatch_LinkedList_LinkedList_LinkedList_get(args, 1)) if nstr_1 == "ok" then set PlayerData_title[PlayerData_pData[player_getId(GetTriggerPlayer())]] = 2 call unit_addAbility(UnitEntity_actor[PlayerData_escaper[PlayerData_pData[player_getId(GetTriggerPlayer())]]], PickSystem_BLINK_ID) endif elseif temp == "smode" then set nstr_2 = stringFromIndex(dispatch_LinkedList_LinkedList_LinkedList_get(args, 1)) if nstr_2 == "both" then set Escaper_selectatrevive[PlayerData_escaper[pd_1]] = true set Escaper_camOnRevive[PlayerData_escaper[pd_1]] = true call DisplayTimedTextToPlayer(p, 0., 0., 10., "|cffFFD621[Info]|r - Now selecting and changing camera on revive.") elseif nstr_2 == "select" then set Escaper_selectatrevive[PlayerData_escaper[pd_1]] = true set Escaper_camOnRevive[PlayerData_escaper[pd_1]] = false call DisplayTimedTextToPlayer(p, 0., 0., 10., "|cffFFD621[Info]|r - Now only selecting on revive.") elseif nstr_2 == "cam" then set Escaper_selectatrevive[PlayerData_escaper[pd_1]] = false set Escaper_camOnRevive[PlayerData_escaper[pd_1]] = true call DisplayTimedTextToPlayer(p, 0., 0., 10., "|cffFFD621[Info]|r - Now only changing camera on revive.") else call DisplayTimedTextToPlayer(p, 0., 0., 10., "|cffFFD621[Info]|r - Missing argument. Command -smode both|select|cam.") endif elseif temp == "admin" then if PlayerData_title[pd_1] == 2 then set i = 0 set tr = null set iterator = group_iterator(GetUnitsSelectedAll(PlayerData_p[pd_1])) loop exitwhen not group_hasNext(iterator) set u_1 = group_next(iterator) set i = i + 1 set tr = u_1 if i > 1 then exitwhen true endif endloop call group_close(iterator) if i < 2 then call player_getId(unit_getOwner(tr)) endif endif elseif temp == "exp" then if PlayerData_title[pd_1] == 2 then set i_1 = 0 set tr_1 = null set iterator_1 = group_iterator(GetUnitsSelectedAll(PlayerData_p[pd_1])) loop exitwhen not group_hasNext(iterator_1) set u_2 = group_next(iterator_1) set i_1 = i_1 + 1 set tr_1 = u_2 if i_1 > 1 then exitwhen true endif endloop call group_close(iterator_1) if i_1 < 2 then set id2 = player_getId(unit_getOwner(tr_1)) set pd2 = PlayerData_pData[id2] call dispatch_PlayerData_PlayerData_PlayerData_addXp(pd2, 8965, true) else call dispatch_PlayerData_PlayerData_PlayerData_addXp(pd_1, 8965, true) endif endif elseif temp == "boss" then if PlayerData_XP[pd_1] > 2500 then set units = GetUnitsSelectedAll(p) set iterator_2 = group_iterator(units) loop exitwhen not group_hasNext(iterator_2) set u_3 = group_next(iterator_2) if Serializable_typeId[unit_getEntity(u_3)] == 1170 then call dispatch_SetupBox_SetupBox_SetupBox_addBossSwitch(unit_getEntity(u_3)) endif endloop call group_close(iterator_2) else call printTimedToPlayer("|cffFFD621[Info]|r - You are not experienced enough!", 15., PlayerData_p[pd_1]) endif elseif temp == "ship" then call new_Spaceship(vec3_toVec2(dispatch_UnitEntity_Entity_UnitEntity_getPos(PlayerData_escaper[pd_1]), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z), vec3_toVec2_return_y, PlayerData_escaper[pd_1]) elseif temp == "kick" then set name = string_toLowerCase(stringFromIndex(dispatch_LinkedList_LinkedList_LinkedList_get(args, 1))) if string_length(name) > 1 then set iterator_3 = LinkedList_iterator(PlayerData_allPlayers) loop exitwhen not LLIterator_hasNext(iterator_3) set pl = LLIterator_next(iterator_3) if string_startsWith(string_toLowerCase(PlayerData_name[pl]), name) and ( not (PlayerData_title[pl] == 2)) then call RemovePlayer(PlayerData_p[pl], PLAYER_GAME_RESULT_DEFEAT) call LLIterator_close(iterator_3) return endif endloop call LLIterator_close(iterator_3) endif elseif not (string_startsWith(cstr, "st") or string_startsWith(cstr, "sht") or string_startsWith(cstr, "sc") or string_startsWith(cstr, "sa") or string_startsWith(cstr, "ht")) then call DisplayTimedTextToPlayer(p, 0., 0., 10., "|cffFFD621[Info]|r - Command not found! Available Commands: -clear, -cam [value], -cam unlock, -cam lock, -frev (forced revive), -info, -intro, -smode [both|cam|select|none], -rename [name]") endif call dispatch_LinkedList_destroyLinkedList(args) endfunction function onEvent_add_Commands takes integer this_1 returns nothing local string str = GetEventPlayerChatString() if string_startsWith(str, "-") then call parseCommand(str) endif endfunction function alloc_CongaSegment takes nothing returns integer local integer this_1 if CongaSegment_firstFree == 0 then if CongaSegment_maxIndex < JASS_MAX_ARRAY_SIZE then set CongaSegment_maxIndex = CongaSegment_maxIndex + 1 set this_1 = CongaSegment_maxIndex set CongaSegment_typeId[this_1] = 731 else call error("Out of memory: Could not create CongaSegment.") set this_1 = 0 endif else set CongaSegment_firstFree = CongaSegment_firstFree - 1 set this_1 = CongaSegment_nextFree[CongaSegment_firstFree] set CongaSegment_typeId[this_1] = 731 endif return this_1 endfunction function CongaSegment_init takes integer this_1 returns nothing set CongaSegment_next[this_1] = 0 set CongaSegment_prev[this_1] = 0 endfunction function construct_CongaSegment takes integer this_1, integer head, integer target returns nothing call CongaSegment_init(this_1) set CongaSegment_target[this_1] = target set CongaSegment_head[this_1] = head call unit_removeAbility(SetupObject_setup[target], BuilderConstants_REMOVE_OBJECT_ID) call vec3_angleTo2d_4259(dispatch_UnitEntity_Entity_UnitEntity_getPos(head), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, dispatch_UnitEntity_Entity_UnitEntity_getPos(target), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z) endfunction function new_CongaSegment takes integer head, integer target returns integer local integer this_1 = alloc_CongaSegment() call construct_CongaSegment(this_1, head, target) return this_1 endfunction function vec3_angleTo2d takes real this_x, real this_y, real this_z, real v_x, real v_y returns real set vec3_angleTo2d_return_radians = real_asAngleRadians(Atan2(v_y - this_y, v_x - this_x)) return vec3_angleTo2d_return_radians endfunction function CongaLineHead_addSegment takes integer this_1, integer e_1 returns nothing local boolean isNew = true local integer segment = CongaLineHead_firstSegment[this_1] loop exitwhen not (segment != 0) if CongaSegment_target[segment] == e_1 then set isNew = false exitwhen true endif set segment = CongaSegment_next[segment] endloop if isNew then if CongaLineHead_firstSegment[this_1] == 0 then set CongaLineHead_firstSegment[this_1] = new_CongaSegment(this_1, e_1) else set segment = CongaLineHead_firstSegment[this_1] loop exitwhen not (CongaSegment_next[segment] != 0) set segment = CongaSegment_next[segment] endloop set CongaSegment_next[segment] = new_CongaSegment(this_1, e_1) set CongaSegment_prev[CongaSegment_next[segment]] = segment call vec3_angleTo2d(dispatch_UnitEntity_Entity_UnitEntity_getPos(e_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y) endif else call dispatch_CongaSegment_destroyCongaSegment(segment) endif endfunction function dispatch_CongaLineHead_CongaLineHead_CongaLineHead_addSegment takes integer this_1, integer e_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling CongaLineHead.addSegment") else call error("Called CongaLineHead.addSegment on invalid object.") endif endif call CongaLineHead_addSegment(this_1, e_1) endfunction function CongaLineHead_onCast takes integer this_1 returns nothing local integer id = GetSpellAbilityId() local unit t = GetSpellTargetUnit() local integer temp = id local integer ed local integer instanceOfTemp local boolean andLeft if temp == CongaObjects_ADD_ID then set ed = unit_getEntity(t) if Entity_owner[ed] == Entity_owner[this_1] then set instanceOfTemp = Serializable_typeId[ed] set andLeft = instanceOfTemp >= 1171 and instanceOfTemp <= 1191 else set andLeft = false endif if andLeft then call dispatch_CongaLineHead_CongaLineHead_CongaLineHead_addSegment(this_1, ed) endif elseif temp == CongaObjects_INC_ID then if CongaLineHead_segLength[this_1] < 500. then set CongaLineHead_segLength[this_1] = CongaLineHead_segLength[this_1] + 25. call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "Segment Length: " + R2SW(CongaLineHead_segLength[this_1], 1, 2), 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) else call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "Maximum Speed", 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) endif elseif temp == CongaObjects_DEC_ID then if CongaLineHead_segLength[this_1] > 25. then set CongaLineHead_segLength[this_1] = CongaLineHead_segLength[this_1] - 25. call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "Segment Length: " + R2SW(CongaLineHead_segLength[this_1], 1, 2), 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) else call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "Minimum Speed", 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) endif elseif temp == CongaObjects_CONGA_STRICT_ID then set CongaLineHead_cmode[this_1] = 0 elseif temp == CongaObjects_CONGA_LOOSE_ID then set CongaLineHead_cmode[this_1] = 1 endif endfunction function dispatch_CongaLineHead_CongaLineHead_CongaLineHead_onCast takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling CongaLineHead.onCast") else call error("Called CongaLineHead.onCast on invalid object.") endif endif call CongaLineHead_onCast(this_1) endfunction function onEvent_add_CongaLineHead_CongaLineHead takes integer this_1 returns nothing call dispatch_CongaLineHead_CongaLineHead_CongaLineHead_onCast(this_2990[this_1]) endfunction function DamageEvent_getAmount takes nothing returns real return DamageInstance_amount[DamageInstance_current] endfunction function DamageInstance_setAmount takes integer this_1, real amount returns nothing set DamageInstance_amount[this_1] = amount if DamageInstance_unreduced[this_1] then endif endfunction function dispatch_DamageInstance_DamageEvent_DamageInstance_setAmount takes integer this_1, real amount returns nothing if DamageInstance_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling DamageInstance.setAmount") else call error("Called DamageInstance.setAmount on invalid object.") endif endif call DamageInstance_setAmount(this_1, amount) endfunction function DamageEvent_setAmount takes real amount returns nothing call dispatch_DamageInstance_DamageEvent_DamageInstance_setAmount(DamageInstance_current, amount) endfunction function Buff_attackModifier takes integer this_1 returns nothing endfunction function dispatch_Buff_Buff_Buff_attackModifier takes integer this_1 returns nothing if Buff_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Buff.attackModifier") else call error("Called Buff.attackModifier on invalid object.") endif endif call Buff_attackModifier(this_1) endfunction function Buff_defenseModifier takes integer this_1 returns nothing endfunction function DamageEvent_addAmount takes real amount returns nothing call dispatch_DamageInstance_DamageEvent_DamageInstance_setAmount(DamageInstance_current, DamageInstance_amount[DamageInstance_current] + amount) endfunction function ShieldBuff_defenseModifier takes integer this_1 returns nothing local real dmg = DamageEvent_getAmount() if dmg >= ShieldBuff_blockAmount[this_1] then call DamageEvent_addAmount( - ShieldBuff_blockAmount[this_1]) set ShieldBuff_blockAmount[this_1] = 0. call cyc_NormalBuff_onDestroy(8, this_1, null, 0) else call DamageEvent_setAmount(0.) set ShieldBuff_blockAmount[this_1] = ShieldBuff_blockAmount[this_1] - dmg endif endfunction function dispatch_Buff_Buff_Buff_defenseModifier takes integer this_1 returns nothing if Buff_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Buff.defenseModifier") else call error("Called Buff.defenseModifier on invalid object.") endif endif if Buff_typeId[this_1] <= 650 then if Buff_typeId[this_1] <= 649 then call Buff_defenseModifier(this_1) else call ShieldBuff_defenseModifier(this_1) endif else call Buff_defenseModifier(this_1) endif endfunction function getSquare takes nothing returns string return Squares_squares[GetRandomInt(0, 20)] endfunction function alloc_TextTagEntity takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1158 else call error("Out of memory: Could not create TextTagEntity.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1158 endif return this_1 endfunction function TextTagEntity_init takes integer this_1 returns nothing endfunction function construct_TextTagEntity takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, real vel_x, real vel_y, real vel_z, string text, real size, real duration, integer col_red, integer col_green, integer col_blue, integer col_alpha returns nothing local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local integer tuple_temp_3 local integer tuple_temp_4 local integer tuple_temp_5 local integer tuple_temp_6 call construct_Entity5(this_1, Basics_DUMMY_PLAYER, pos_x_1, pos_y_1, pos_z, 0.) call TextTagEntity_init(this_1) set Entity_sleeps[this_1] = false set TextTagEntity_dur[this_1] = duration set tuple_temp = vel_x set tuple_temp_1 = vel_y set tuple_temp_2 = vel_z set Entity_vel_x[this_1] = tuple_temp set Entity_vel_y[this_1] = tuple_temp_1 set Entity_vel_z[this_1] = tuple_temp_2 set tuple_temp_3 = col_red set tuple_temp_4 = col_green set tuple_temp_5 = col_blue set tuple_temp_6 = col_alpha set TextTagEntity_col_red[this_1] = tuple_temp_3 set TextTagEntity_col_green[this_1] = tuple_temp_4 set TextTagEntity_col_blue[this_1] = tuple_temp_5 set TextTagEntity_col_alpha[this_1] = tuple_temp_6 set TextTagEntity_ftext[this_1] = createFText_2346(pos_x_1, pos_y_1, pos_z, text, size, duration, Vectors_ZERO2_x, Vectors_ZERO2_y, col_red, col_green, col_blue, col_alpha) endfunction function new_TextTagEntity takes real pos_x_1, real pos_y_1, real pos_z, real vel_x, real vel_y, real vel_z, string text, real size, real duration, integer col_red, integer col_green, integer col_blue, integer col_alpha returns integer local integer this_1 = alloc_TextTagEntity() call construct_TextTagEntity(this_1, pos_x_1, pos_y_1, pos_z, vel_x, vel_y, vel_z, text, size, duration, col_red, col_green, col_blue, col_alpha) return this_1 endfunction function player_isAllyOf takes player this_1, player p returns boolean return IsPlayerAlly(this_1, p) endfunction function onEvent_addListener_Buff takes integer this_1 returns nothing local unit def = GetTriggerUnit() local unit att = GetEventDamageSource() local integer iterator local integer bff local integer iterator_1 local integer bff_1 if Frentity_DISABLE_TEAMATTACK and player_isAllyOf(unit_getOwner(def), unit_getOwner(att)) or unit_getOwner(def) == unit_getOwner(att) then if DamageEvent_getAmount() > 0.5 then call DamageEvent_setAmount(0.) if Frentity_SHOW_SQUARE then call new_TextTagEntity(vec2_toVec3(unit_getPos(def), unit_getPos_return_y), vec2_toVec3_return_y, vec2_toVec3_return_z, GetRandomReal(-2., 2.), GetRandomReal(-2., 2.), GetRandomReal(8., 10.), getSquare(), 10., .8, GetRandomInt(150, 250), GetRandomInt(125, 150), GetRandomInt(125, 150), 255) endif endif else if unit_hasBuffs(att) then set iterator = LinkedList_iterator(unit_getBuffs(att)) loop exitwhen not LLIterator_hasNext(iterator) set bff = LLIterator_next(iterator) if not Buff_done[bff] then call dispatch_Buff_Buff_Buff_attackModifier(bff) endif endloop call LLIterator_close(iterator) endif if unit_hasBuffs(def) then set iterator_1 = LinkedList_iterator(unit_getBuffs(def)) loop exitwhen not LLIterator_hasNext(iterator_1) set bff_1 = LLIterator_next(iterator_1) if not Buff_done[bff_1] then call dispatch_Buff_Buff_Buff_defenseModifier(bff_1) endif endloop call LLIterator_close(iterator_1) endif endif endfunction function dispatch_DamageListener_DamageEvent_DamageListener_onEvent takes integer this_1 returns nothing if DamageListener_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling DamageListener.onEvent") else call error("Called DamageListener.onEvent on invalid object.") endif endif call onEvent_addListener_Buff(this_1) endfunction function alloc_DamageInstance takes nothing returns integer local integer this_1 if DamageInstance_firstFree == 0 then if DamageInstance_maxIndex < JASS_MAX_ARRAY_SIZE then set DamageInstance_maxIndex = DamageInstance_maxIndex + 1 set this_1 = DamageInstance_maxIndex set DamageInstance_typeId[this_1] = 735 else call error("Out of memory: Could not create DamageInstance.") set this_1 = 0 endif else set DamageInstance_firstFree = DamageInstance_firstFree - 1 set this_1 = DamageInstance_nextFree[DamageInstance_firstFree] set DamageInstance_typeId[this_1] = 735 endif return this_1 endfunction function DamageInstance_init takes integer this_1 returns nothing endfunction function construct_DamageInstance takes integer this_1, integer id, unit source, unit target, real unreducedAmount, attacktype nativeAttackType, damagetype nativeDamageType, weapontype nativeWeaponType, integer damageType, integer damageElement returns nothing call DamageInstance_init(this_1) set DamageInstance_amount[this_1] = unreducedAmount set DamageInstance_unreduced[this_1] = true set DamageInstance_nativeAttackType[this_1] = nativeAttackType set DamageInstance_nativeDamageType[this_1] = nativeDamageType set DamageInstance_nativeWeaponType[this_1] = nativeWeaponType set DamageInstance_count = DamageInstance_count + 1 set DamageInstance_stack[DamageInstance_count] = this_1 set DamageInstance_current = this_1 endfunction function new_DamageInstance takes integer id, unit source, unit target, real unreducedAmount, attacktype nativeAttackType, damagetype nativeDamageType, weapontype nativeWeaponType, integer damageType, integer damageElement returns integer local integer this_1 = alloc_DamageInstance() call construct_DamageInstance(this_1, id, source, target, unreducedAmount, nativeAttackType, nativeDamageType, nativeWeaponType, damageType, damageElement) return this_1 endfunction function DamageEvent_onUnreducedDamage takes nothing returns nothing local real amount = GetEventDamage() local attacktype attackType = BlzGetEventAttackType() local integer dmg local integer i local integer temp local integer listener_1 if DamageEvent_nextDamageType == 4 then if DamageEvent_DETECT_NATIVE_ABILITIES and attackType == ATTACK_TYPE_NORMAL then set DamageEvent_nextDamageType = 1 else set DamageEvent_nextDamageType = 0 set DamageEvent_nextDamageElement = DamageEvent_DAMAGE_ELEMENT_ATTACK endif endif set dmg = new_DamageInstance(DamageEvent_nextDamageId, GetEventDamageSource(), GetTriggerUnit(), amount, attackType, BlzGetEventDamageType(), BlzGetEventWeaponType(), DamageEvent_nextDamageType, DamageEvent_nextDamageElement) set DamageEvent_nextDamageId = 0 set DamageEvent_nextDamageType = 4 set DamageEvent_nextDamageElement = 0 set i = 0 set temp = DamageEvent_maxUnreducedPriority loop exitwhen i > temp set listener_1 = DamageEvent_firstUnreducedListeners[i] loop exitwhen not (listener_1 != 0) call dispatch_DamageListener_DamageEvent_DamageListener_onEvent(listener_1) if DamageEvent_abort then set DamageInstance_amount[dmg] = 0. exitwhen true else set listener_1 = DamageListener_next[listener_1] endif endloop if DamageEvent_abort then exitwhen true endif set i = i + 1 endloop call BlzSetEventAttackType(DamageInstance_nativeAttackType[dmg]) call BlzSetEventDamageType(DamageInstance_nativeDamageType[dmg]) call BlzSetEventWeaponType(DamageInstance_nativeWeaponType[dmg]) call BlzSetEventDamage(DamageInstance_amount[dmg]) endfunction function onEvent_add_DamageEvent takes integer this_1 returns nothing call DamageEvent_onUnreducedDamage() endfunction function DamageInstance_setReducedAmount takes integer this_1, real amount returns nothing set DamageInstance_amount[this_1] = amount set DamageInstance_unreduced[this_1] = false endfunction function dispatch_DamageInstance_DamageEvent_DamageInstance_setReducedAmount takes integer this_1, real amount returns nothing if DamageInstance_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling DamageInstance.setReducedAmount") else call error("Called DamageInstance.setReducedAmount on invalid object.") endif endif call DamageInstance_setReducedAmount(this_1, amount) endfunction function DamageInstance_onDestroy takes integer this_1 returns nothing set DamageInstance_count = DamageInstance_count - 1 set DamageInstance_current = DamageInstance_stack[DamageInstance_count] endfunction function dealloc_DamageInstance takes integer obj_1 returns nothing if DamageInstance_typeId[obj_1] == 0 then call error("Double free: object of type DamageInstance") else set DamageInstance_nextFree[DamageInstance_firstFree] = obj_1 set DamageInstance_firstFree = DamageInstance_firstFree + 1 set DamageInstance_typeId[obj_1] = 0 endif endfunction function destroyDamageInstance takes integer this_1 returns nothing call DamageInstance_onDestroy(this_1) call dealloc_DamageInstance(this_1) endfunction function dispatch_DamageInstance_destroyDamageInstance takes integer this_1 returns nothing if DamageInstance_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling DamageInstance.DamageInstance") else call error("Called DamageInstance.DamageInstance on invalid object.") endif endif call destroyDamageInstance(this_1) endfunction function DamageEvent_onDamage takes nothing returns nothing local integer dmg = DamageInstance_current local integer i local integer temp local integer listener_1 if not DamageEvent_abort then call dispatch_DamageInstance_DamageEvent_DamageInstance_setReducedAmount(dmg, GetEventDamage()) set i = 0 set temp = DamageEvent_maxPriority loop exitwhen i > temp set listener_1 = DamageEvent_firstListeners[i] loop exitwhen not (listener_1 != 0) call dispatch_DamageListener_DamageEvent_DamageListener_onEvent(listener_1) if DamageEvent_abort then set DamageInstance_amount[dmg] = 0. exitwhen true else set listener_1 = DamageListener_next[listener_1] endif endloop if DamageEvent_abort then exitwhen true endif set i = i + 1 endloop call BlzSetEventAttackType(DamageInstance_nativeAttackType[dmg]) call BlzSetEventDamageType(DamageInstance_nativeDamageType[dmg]) call BlzSetEventWeaponType(DamageInstance_nativeWeaponType[dmg]) call BlzSetEventDamage(DamageInstance_amount[dmg]) endif call dispatch_DamageInstance_destroyDamageInstance(dmg) set DamageEvent_abort = false endfunction function onEvent_add_DamageEvent_3821 takes integer this_1 returns nothing call DamageEvent_onDamage() endfunction function Log_setLevel takes integer lvl returns nothing set Printing_config_DEBUG_LEVEL = lvl endfunction function onEvent_add_DebugInfo takes integer this_1 returns nothing local string entered = GetEventPlayerChatString() local integer level local integer loglvl if string_startsWith(entered, "-d ") then set level = string_toInt(string_substring(entered, 3, 4)) if level >= 0 and level < 5 then set loglvl = level call Log_setLevel(loglvl) call printTimedToPlayer("Loglevel adjusted to: " + Loglevel_getTag(loglvl), 10., GetTriggerPlayer()) endif endif endfunction function real_toString_3968 takes real this_1, integer precision returns string return R2SW(this_1, precision, precision) endfunction function ConfigValue_decrement takes integer this_1, integer caster, real min returns nothing if ConfigValue_value[this_1] > min then set ConfigValue_value[this_1] = ConfigValue_value[this_1] - ConfigValue_increment[this_1] call createFText_2345(dispatch_UnitEntity_Entity_UnitEntity_getPos(caster), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, ConfigValue_valueName[this_1] + ": " + real_toString_3968(ConfigValue_value[this_1], 3), 9., 1.5, 0., 0.1, Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, Entity_owner[caster]) else call createFText_2345(dispatch_UnitEntity_Entity_UnitEntity_getPos(caster), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, ConfigValue_valueName[this_1] + " at minimum!", 9., 1.5, 0., 0.1, Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, Entity_owner[caster]) endif endfunction function dispatch_ConfigValue_ConfigValue_ConfigValue_decrement takes integer this_1, integer caster, real min returns nothing if ConfigValue_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling ConfigValue.decrement") else call error("Called ConfigValue.decrement on invalid object.") endif endif call ConfigValue_decrement(this_1, caster, min) endfunction function ConfigValue_increment_1 takes integer this_1, integer caster, real max returns nothing if ConfigValue_value[this_1] < max then set ConfigValue_value[this_1] = ConfigValue_value[this_1] + ConfigValue_increment[this_1] call createFText_2345(dispatch_UnitEntity_Entity_UnitEntity_getPos(caster), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, ConfigValue_valueName[this_1] + ": " + real_toString_3968(ConfigValue_value[this_1], 3), 9., 1.5, 0., 0.1, Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, Entity_owner[caster]) else call createFText_2345(dispatch_UnitEntity_Entity_UnitEntity_getPos(caster), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, ConfigValue_valueName[this_1] + " at maximum!", 9., 1.5, 0., 0.1, Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, Entity_owner[caster]) endif endfunction function dispatch_ConfigValue_ConfigValue_ConfigValue_increment takes integer this_1, integer caster, real max returns nothing if ConfigValue_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling ConfigValue.increment") else call error("Called ConfigValue.increment on invalid object.") endif endif call ConfigValue_increment_1(this_1, caster, max) endfunction function alloc_EventListener_add_Decoration_Decoration_1694 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 777 else call error("Out of memory: Could not create EventListener_add_Decoration_Decoration.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 777 endif return this_1 endfunction function StaticSetupObject_setNewSetup takes integer this_1, unit u_1 returns nothing if u_1 == null or ( not unit_isAlive(u_1)) or unit_getEntity(u_1) != 0 then call error("invalid actor replacement") endif call unit_setEntity(StaticSetupObject_setup[this_1], 0) call unit_remove(StaticSetupObject_setup[this_1]) set StaticSetupObject_setup[this_1] = u_1 call unit_setEntity(StaticSetupObject_setup[this_1], this_1) endfunction function dispatch_StaticSetupObject_SetupObject_StaticSetupObject_setNewSetup takes integer this_1, unit u_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling StaticSetupObject.setNewSetup") else call error("Called StaticSetupObject.setNewSetup on invalid object.") endif endif call StaticSetupObject_setNewSetup(this_1, u_1) endfunction function Escaper_setNewActor takes integer this_1, unit u_1 returns nothing call error("Don't do this..") endfunction function dispatch_UnitEntity_Entity_UnitEntity_setNewActor takes integer this_1, unit u_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling UnitEntity.setNewActor") else call error("Called UnitEntity.setNewActor on invalid object.") endif endif if Serializable_typeId[this_1] <= 1167 then if Serializable_typeId[this_1] <= 1161 then call UnitEntity_setNewActor(this_1, u_1) else call Escaper_setNewActor(this_1, u_1) endif else call UnitEntity_setNewActor(this_1, u_1) endif endfunction function player_select takes player this_1, unit u_1 returns nothing if Player_localPlayer == this_1 then call SelectUnit(u_1, true) endif endfunction function unit_getTypeId takes unit this_1 returns integer return GetUnitTypeId(this_1) endfunction function Decoration_changeAngle takes integer this_1, real a_radians returns nothing local boolean select = IsUnitSelected(StaticSetupObject_setup[this_1], Entity_owner[this_1]) local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local integer clVar local unit temp local playerunitevent temp_1 call dispatch_UnitEntity_Entity_UnitEntity_setNewActor(this_1, createUnit_2354(Entity_owner[this_1], unit_getTypeId(UnitEntity_actor[this_1]), Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], a_radians)) call dispatch_StaticSetupObject_SetupObject_StaticSetupObject_setNewSetup(this_1, createUnit_2354(Entity_owner[this_1], unit_getTypeId(StaticSetupObject_setup[this_1]), Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], a_radians)) call unit_addAbility(UnitEntity_actor[this_1], Basics_LOCUST_ID) set receiver = StaticSetupObject_setup[this_1] call unit_addAbility(receiver, Basics_GHOST_INVIS_ID) set receiver_1 = receiver call unit_addAbility(receiver_1, Decoration_CHANGE_FACE_ID) set receiver_2 = receiver_1 call unit_addAbility(receiver_2, Decoration_INC_SCALE) set receiver_3 = receiver_2 call unit_addAbility(receiver_3, Decoration_DEC_SCALE) set temp = StaticSetupObject_setup[this_1] set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST set clVar = alloc_EventListener_add_Decoration_Decoration_1694() call construct_EventListener(clVar) set this_2969[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) if select then call player_select(Entity_owner[this_1], StaticSetupObject_setup[this_1]) endif set Decoration_hasBeenChanged[this_1] = true endfunction function dispatch_Decoration_Decoration_Decoration_changeAngle takes integer this_1, real a_radians returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Decoration.changeAngle") else call error("Called Decoration.changeAngle on invalid object.") endif endif call Decoration_changeAngle(this_1, a_radians) endfunction function Decoration_onCast takes integer this_1 returns nothing local integer id = GetSpellAbilityId() local integer temp = id local real tg_x local real tg_y local real tuple_temp local real tuple_temp_1 if temp == Decoration_CHANGE_FACE_ID then set tuple_temp = EventData_getSpellTargetPos() set tuple_temp_1 = EventData_getSpellTargetPos_return_y set tg_x = tuple_temp set tg_y = tuple_temp_1 call dispatch_Decoration_Decoration_Decoration_changeAngle(this_1, vec3_angleTo2d(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], tg_x, tg_y)) elseif temp == Decoration_INC_SCALE then call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(Decoration_scale[this_1], this_1, 3.0) elseif temp == Decoration_DEC_SCALE then call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(Decoration_scale[this_1], this_1, 0.1) endif call unit_setScale(UnitEntity_actor[this_1], dispatch_ConfigValue_ConfigValue_ConfigValue_get(Decoration_scale[this_1])) call unit_setScale(StaticSetupObject_setup[this_1], dispatch_ConfigValue_ConfigValue_ConfigValue_get(Decoration_scale[this_1])) endfunction function dispatch_Decoration_Decoration_Decoration_onCast takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Decoration.onCast") else call error("Called Decoration.onCast on invalid object.") endif endif call Decoration_onCast(this_1) endfunction function onEvent_add_Decoration_Decoration takes integer this_1 returns nothing call dispatch_Decoration_Decoration_Decoration_onCast(this_2968[this_1]) endfunction function onEvent_add_Decoration_Decoration_3824 takes integer this_1 returns nothing call dispatch_Decoration_Decoration_Decoration_onCast(this_2969[this_1]) endfunction function EBRColor_toColor takes integer this_1 returns integer local integer temp = this_1 if temp == 0 then set EBRColor_toColor_return_red = Colors_COLOR_WHITE_red set EBRColor_toColor_return_green = Colors_COLOR_WHITE_green set EBRColor_toColor_return_blue = Colors_COLOR_WHITE_blue set EBRColor_toColor_return_alpha = Colors_COLOR_WHITE_alpha return EBRColor_toColor_return_red else set EBRColor_toColor_return_red = color_withAlpha(playercolor_toColor(player_getColor(Player_players[this_1 - 1])), playercolor_toColor_return_green, playercolor_toColor_return_blue, 255) set EBRColor_toColor_return_green = color_withAlpha_return_green set EBRColor_toColor_return_blue = color_withAlpha_return_blue set EBRColor_toColor_return_alpha = color_withAlpha_return_alpha return EBRColor_toColor_return_red endif endfunction function Door_changeColor takes integer this_1, integer id returns nothing local integer i = 0 loop exitwhen i > 8 if id == BuilderConstants_colorSpells[i] then set Door_col[this_1] = i endif set i = i + 1 endloop call unit_setVertexColor_4202(UnitEntity_actor[this_1], EBRColor_toColor(Door_col[this_1]), EBRColor_toColor_return_green, EBRColor_toColor_return_blue, EBRColor_toColor_return_alpha) endfunction function dispatch_Door_Door_Door_changeColor takes integer this_1, integer id returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Door.changeColor") else call error("Called Door.changeColor on invalid object.") endif endif call Door_changeColor(this_1, id) endfunction function Door_closeDoor takes integer this_1 returns nothing call unit_setAnimation(UnitEntity_actor[this_1], "stand") call unit_remove(Door_pathing[this_1]) set Door_opened[this_1] = false if Door_vertical[this_1] then set Door_pathing[this_1] = createUnit(Entity_owner[this_1], Door_DOORPATH, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, real_fromDeg(0.)) else set Door_pathing[this_1] = createUnit(Entity_owner[this_1], Door_DOORPATH, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, real_fromDeg(270.)) endif endfunction function dispatch_Door_Door_Door_closeDoor takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Door.closeDoor") else call error("Called Door.closeDoor on invalid object.") endif endif call Door_closeDoor(this_1) endfunction function Door_toggleOpen takes integer this_1 returns nothing if Door_opened[this_1] then call dispatch_Door_Door_Door_closeDoor(this_1) else call dispatch_Door_Door_Door_openDoor(this_1) endif endfunction function dispatch_Door_Door_Door_toggleOpen takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Door.toggleOpen") else call error("Called Door.toggleOpen on invalid object.") endif endif call Door_toggleOpen(this_1) endfunction function Door_turn takes integer this_1 returns nothing if Door_vertical[this_1] then call unit_remove(Door_pathing[this_1]) set Door_vertical[this_1] = false if Door_opened[this_1] then call dispatch_UnitEntity_Entity_UnitEntity_setNewActor(this_1, createUnit(Entity_owner[this_1], BuilderConstants_DOORDUMMY_ID, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, real_fromDeg(270.))) call unit_setAnimation(UnitEntity_actor[this_1], "Death Alternate") set Door_pathing[this_1] = createUnit(Entity_owner[this_1], Door_DOORPATH_O, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, real_fromDeg(270.)) else call dispatch_UnitEntity_Entity_UnitEntity_setNewActor(this_1, createUnit(Entity_owner[this_1], BuilderConstants_DOORDUMMY_ID, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, real_fromDeg(270.))) set Door_pathing[this_1] = createUnit(Entity_owner[this_1], Door_DOORPATH, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, real_fromDeg(270.)) endif else call unit_remove(Door_pathing[this_1]) set Door_vertical[this_1] = true if Door_opened[this_1] then call dispatch_UnitEntity_Entity_UnitEntity_setNewActor(this_1, createUnit(Entity_owner[this_1], BuilderConstants_DOORDUMMY_ID, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, real_fromDeg(0.))) call unit_setAnimation(UnitEntity_actor[this_1], "Death Alternate") set Door_pathing[this_1] = createUnit(Entity_owner[this_1], Door_DOORPATH_O, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, real_fromDeg(0.)) else call dispatch_UnitEntity_Entity_UnitEntity_setNewActor(this_1, createUnit(Entity_owner[this_1], BuilderConstants_DOORDUMMY_ID, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, real_fromDeg(0.))) set Door_pathing[this_1] = createUnit(Entity_owner[this_1], Door_DOORPATH, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, real_fromDeg(0.)) endif endif call unit_setVertexColor_4202(UnitEntity_actor[this_1], EBRColor_toColor(Door_col[this_1]), EBRColor_toColor_return_green, EBRColor_toColor_return_blue, EBRColor_toColor_return_alpha) endfunction function dispatch_Door_Door_Door_turn takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Door.turn") else call error("Called Door.turn on invalid object.") endif endif call Door_turn(this_1) endfunction function Door_onCast takes integer this_1 returns nothing local integer id = GetSpellAbilityId() local integer temp = id if temp == Door_DOOROPEN_ABILITY_ID then call dispatch_Door_Door_Door_toggleOpen(this_1) elseif temp == Door_DOORTURN_ABILITY_ID then call dispatch_Door_Door_Door_turn(this_1) else call dispatch_Door_Door_Door_changeColor(this_1, id) endif endfunction function dispatch_Door_Door_Door_onCast takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Door.onCast") else call error("Called Door.onCast on invalid object.") endif endif call Door_onCast(this_1) endfunction function onEvent_add_Door_Door takes integer this_1 returns nothing call dispatch_Door_Door_Door_onCast(this_2991[this_1]) endfunction function BallItem_onPickup takes integer this_1, integer holder returns nothing if Serializable_typeId[holder] == 1161 then call cyc_RevivePoint_terminate(18, this_1) else set ItemObject_holder[this_1] = holder call unit_addAbility(UnitEntity_actor[holder], BasicSpells_BALL_SPELL_ID) call unit_hide(UnitEntity_actor[ItemObject_setup[this_1]]) endif endfunction function Boots_onPickup takes integer this_1, integer holder returns nothing set ItemObject_holder[this_1] = holder call item_setEntity(ItemEntity_actor[this_1], 0) set ItemEntity_actor[this_1] = null call cyc_RevivePoint_terminate(18, this_1) endfunction function Coin_onPickup takes integer this_1, integer holder returns nothing call cyc_RevivePoint_terminate(18, this_1) endfunction function ItemObject_onPickup takes integer this_1, integer holder returns nothing endfunction function addEffect_1564 takes string path, widget target, string attachPointName returns effect return AddSpecialEffectTarget(path, target, attachPointName) endfunction function dispatch_IterableMap_HashMap_IterableMap_put takes integer this_1, integer key, integer value returns nothing if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling IterableMap.put") else call error("Called IterableMap.put on invalid object.") endif endif call IterableMap_put(this_1, key, value) endfunction function RegionData_getPermission takes integer this_1, player p returns integer if dispatch_HashMap_HashMap_HashMap_has(RegionData_permissions[this_1], playerToIndex(p)) then return dispatch_HashMap_HashMap_HashMap_get(RegionData_permissions[this_1], playerToIndex(p)) endif return 0 endfunction function dispatch_RegionData_RegionData_RegionData_getPermission takes integer this_1, player p returns integer local integer RegionData_RegionData_getPermission_result if RegionData_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling RegionData.getPermission") else call error("Called RegionData.getPermission on invalid object.") endif endif set RegionData_RegionData_getPermission_result = RegionData_getPermission(this_1, p) return RegionData_RegionData_getPermission_result endfunction function dispatch_UnitEntity_Entity_UnitEntity_setXY takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling UnitEntity.setXY") else call error("Called UnitEntity.setXY on invalid object.") endif endif if Serializable_typeId[this_1] <= 1170 then if Serializable_typeId[this_1] <= 1167 then if Serializable_typeId[this_1] <= 1161 then call UnitEntity_setXY(this_1, tpos_x_1, tpos_y_1, tpos_z) else call Escaper_setXY(this_1, tpos_x_1, tpos_y_1, tpos_z) endif else call UnitEntity_setXY(this_1, tpos_x_1, tpos_y_1, tpos_z) endif elseif Serializable_typeId[this_1] <= 1191 then call SetupObject_setXY(this_1, tpos_x_1, tpos_y_1, tpos_z) else call UnitEntity_setXY(this_1, tpos_x_1, tpos_y_1, tpos_z) endif endfunction function effectToIndex takes effect object returns integer return handle_getTCHandleId(object) endfunction function Key_onPickup takes integer this_1, integer holder returns nothing local integer count local integer iterator local item itm local effect eff local effect receiver if isEscaperPlayer(Entity_owner[holder]) or dispatch_RegionData_RegionData_RegionData_getPermission(Entity_getCurrentRegion(this_1), Entity_owner[holder]) != 0 then set count = 0 set iterator = InventoryIterator_iterator(unit_inventory(UnitEntity_actor[holder])) loop exitwhen not InventoryIterator_hasNext(iterator) set itm = InventoryIterator_next(iterator) if item_getEntity(itm) == this_1 then set count = count + 1 endif endloop call InventoryIterator_close(iterator) if count > 1 then set Key_ignoreNextDrop[this_1] = true call unit_removeItem(UnitEntity_actor[holder], ItemEntity_actor[this_1]) call item_setPos(ItemEntity_actor[this_1], vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y) else set receiver = addEffect_1564("war3mapImported\\Key_ITEM.mdx", UnitEntity_actor[holder], "overhead") call effect_setColor(receiver, EBRColor_toColor(Key_col[this_1]), EBRColor_toColor_return_green, EBRColor_toColor_return_blue, EBRColor_toColor_return_alpha) set eff = receiver call dispatch_IterableMap_HashMap_IterableMap_put(Key_effectMap[this_1], holder, effectToIndex(eff)) if Key_infinite[this_1] then set ItemEntity_actor[this_1] = createItem_2351(Key_keyIds[Key_col[this_1]], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) call item_setEntity(ItemEntity_actor[this_1], this_1) else set Key_picked[this_1] = true set ItemObject_holder[this_1] = holder call unit_hide(UnitEntity_actor[ItemObject_setup[this_1]]) call dispatch_Entity_Entity_Entity_DupletListModule_activate(this_1) endif endif else set Key_picked[this_1] = false call unit_removeItem(UnitEntity_actor[holder], ItemEntity_actor[this_1]) call item_setPos(ItemEntity_actor[this_1], vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y) call dispatch_UnitEntity_Entity_UnitEntity_setXY(ItemObject_setup[this_1], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) call unit_show(UnitEntity_actor[ItemObject_setup[this_1]]) set ItemObject_holder[this_1] = 0 endif endfunction function Tome_onPickup takes integer this_1, integer holder returns nothing call cyc_RevivePoint_terminate(18, this_1) endfunction function dispatch_ItemEntity_Entity_ItemEntity_onPickup takes integer this_1, integer entity_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling ItemEntity.onPickup") else call error("Called ItemEntity.onPickup on invalid object.") endif endif if Serializable_typeId[this_1] <= 1154 then if Serializable_typeId[this_1] <= 1153 then if Serializable_typeId[this_1] <= 1152 then call ItemObject_onPickup(this_1, entity_1) else call BallItem_onPickup(this_1, entity_1) endif else call Boots_onPickup(this_1, entity_1) endif elseif Serializable_typeId[this_1] <= 1156 then if Serializable_typeId[this_1] <= 1155 then call Coin_onPickup(this_1, entity_1) else call Key_onPickup(this_1, entity_1) endif else call Tome_onPickup(this_1, entity_1) endif endfunction function onItemPickup takes nothing returns nothing local integer idata = item_getEntity(GetManipulatedItem()) local integer edata = unit_getEntity(GetManipulatingUnit()) if idata != 0 and ( not Entity_done[idata]) then if edata != 0 and ( not Entity_done[edata]) then call dispatch_ItemEntity_Entity_ItemEntity_onPickup(idata, edata) endif endif endfunction function onEvent_add_Entity takes integer this_1 returns nothing call onItemPickup() endfunction function alloc_CallbackSingle_nullTimer_BallItem_Ball takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 706 else call error("Out of memory: Could not create CallbackSingle_nullTimer_BallItem_Ball.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 706 endif return this_1 endfunction function alloc_CallbackSingle_nullTimer_BallItem_Ball_1632 takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 707 else call error("Out of memory: Could not create CallbackSingle_nullTimer_BallItem_Ball.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 707 endif return this_1 endfunction function BallItem_onDrop takes integer this_1, integer e_1 returns nothing local integer clVar local integer clVar_1 set ItemObject_holder[this_1] = 0 if unit_hasAbility(UnitEntity_actor[e_1], BasicSpells_BALL_SPELL_ID) then call unit_removeAbility(UnitEntity_actor[e_1], BasicSpells_BALL_SPELL_ID) set clVar = alloc_CallbackSingle_nullTimer_BallItem_Ball() call construct_CallbackSingle(clVar) set this_2963[clVar] = this_1 call nullTimer(clVar) else set clVar_1 = alloc_CallbackSingle_nullTimer_BallItem_Ball_1632() call construct_CallbackSingle(clVar_1) set this_2964[clVar_1] = this_1 call nullTimer(clVar_1) endif endfunction function Boots_onDrop takes integer this_1, integer e_1 returns nothing endfunction function ItemObject_onDrop takes integer this_1, integer e_1 returns nothing endfunction function alloc_CallbackSingle_nullTimer_Key_Key takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 711 else call error("Out of memory: Could not create CallbackSingle_nullTimer_Key_Key.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 711 endif return this_1 endfunction function HashMap_getAndRemove takes integer this_1, integer key returns integer local integer result_1 = dispatch_HashMap_HashMap_HashMap_get(this_1, key) call dispatch_HashMap_HashMap_HashMap_remove(this_1, key) return result_1 endfunction function IterableMap_getAndRemove takes integer this_1, integer key returns integer local integer result_1 = HashMap_getAndRemove(this_1, key) call dispatch_HashList_HashList_HashList_remove(IterableMap_keys[this_1], key) return result_1 endfunction function dispatch_IterableMap_HashMap_IterableMap_getAndRemove takes integer this_1, integer key returns integer local integer HashMap_IterableMap_getAndRemove_result if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling IterableMap.getAndRemove") else call error("Called IterableMap.getAndRemove on invalid object.") endif endif set HashMap_IterableMap_getAndRemove_result = IterableMap_getAndRemove(this_1, key) return HashMap_IterableMap_getAndRemove_result endfunction function Key_onDrop takes integer this_1, integer e_1 returns nothing local integer clVar if Key_ignoreNextDrop[this_1] then set Key_ignoreNextDrop[this_1] = false else if dispatch_HashMap_HashMap_HashMap_has(Key_effectMap[this_1], e_1) then call effect_destr(effectFromIndex(dispatch_IterableMap_HashMap_IterableMap_getAndRemove(Key_effectMap[this_1], e_1))) endif if Key_infinite[this_1] then call item_setEntity(GetManipulatedItem(), 0) call item_remove(GetManipulatedItem()) else set Key_picked[this_1] = false set ItemObject_holder[this_1] = 0 call dispatch_UnitEntity_Entity_UnitEntity_setXY(ItemObject_setup[this_1], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) call unit_show(UnitEntity_actor[ItemObject_setup[this_1]]) set clVar = alloc_CallbackSingle_nullTimer_Key_Key() call construct_CallbackSingle(clVar) set this_2967[clVar] = this_1 call nullTimer(clVar) endif endif endfunction function dispatch_ItemEntity_Entity_ItemEntity_onDrop takes integer this_1, integer entity_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling ItemEntity.onDrop") else call error("Called ItemEntity.onDrop on invalid object.") endif endif if Serializable_typeId[this_1] <= 1154 then if Serializable_typeId[this_1] <= 1153 then if Serializable_typeId[this_1] <= 1152 then call ItemObject_onDrop(this_1, entity_1) else call BallItem_onDrop(this_1, entity_1) endif else call Boots_onDrop(this_1, entity_1) endif elseif Serializable_typeId[this_1] <= 1156 then if Serializable_typeId[this_1] <= 1155 then call ItemObject_onDrop(this_1, entity_1) else call Key_onDrop(this_1, entity_1) endif else call ItemObject_onDrop(this_1, entity_1) endif endfunction function onItemDrop takes nothing returns nothing local integer idata = item_getEntity(GetManipulatedItem()) local integer edata = unit_getEntity(GetManipulatingUnit()) if idata != 0 and ( not Entity_done[idata]) then if edata != 0 and ( not Entity_done[edata]) then call dispatch_ItemEntity_Entity_ItemEntity_onDrop(idata, edata) endif endif endfunction function onEvent_add_Entity_3827 takes integer this_1 returns nothing call onItemDrop() endfunction function BallItem_onUse takes integer this_1, integer user returns nothing endfunction function Boots_onUse takes integer this_1, integer user returns nothing endfunction function ItemObject_onUse takes integer this_1, integer user returns nothing endfunction function dispatch_ItemEntity_Entity_ItemEntity_onUse takes integer this_1, integer entity_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling ItemEntity.onUse") else call error("Called ItemEntity.onUse on invalid object.") endif endif if Serializable_typeId[this_1] <= 1153 then if Serializable_typeId[this_1] <= 1152 then call ItemObject_onUse(this_1, entity_1) else call BallItem_onUse(this_1, entity_1) endif elseif Serializable_typeId[this_1] <= 1154 then call Boots_onUse(this_1, entity_1) else call ItemObject_onUse(this_1, entity_1) endif endfunction function onItemUse takes nothing returns nothing local integer idata = item_getEntity(GetManipulatedItem()) local integer edata = unit_getEntity(GetManipulatingUnit()) if idata != 0 and ( not Entity_done[idata]) then if edata != 0 and ( not Entity_done[edata]) then call dispatch_ItemEntity_Entity_ItemEntity_onUse(idata, edata) endif endif endfunction function onEvent_add_Entity_3828 takes integer this_1 returns nothing call onItemUse() endfunction function vec2_op_plus takes real this_x, real this_y, real v_x, real v_y returns real set vec2_op_plus_return_x = this_x + v_x set vec2_op_plus_return_y = this_y + v_y return vec2_op_plus_return_x endfunction function vec2_polarOffset takes real this_x, real this_y, real ang_radians, real dist returns real set vec2_polarOffset_return_x = vec2_op_plus(this_x, this_y, angle_toVec(ang_radians, dist), angle_toVec_return_y) set vec2_polarOffset_return_y = vec2_op_plus_return_y return vec2_polarOffset_return_x endfunction function Escaper_changeAngle takes integer this_1 returns nothing local integer id = GetIssuedOrderId() local widget w = GetOrderTarget() local real tuple_temp = EventData_getOrderPos() local real tuple_temp_1 = EventData_getOrderPos_return_y local real orderPos_x_1 = tuple_temp local real orderPos_y_1 = tuple_temp_1 local real tuple_temp_2 = widget_getPos(w) local real tuple_temp_3 = widget_getPos_return_y local real widgetPos_x = tuple_temp_2 local real widgetPos_y = tuple_temp_3 local real tuple_temp_4 = dispatch_Escaper_Escaper_Escaper_getRealVel(this_1) local real tuple_temp_5 = dispatch_Escaper_Escaper_Escaper_getRealVel_return_y local real tuple_temp_6 = dispatch_Escaper_Escaper_Escaper_getRealVel_return_z local real rv_x = tuple_temp_4 local real rv_y = tuple_temp_5 local real rv_z = tuple_temp_6 local real tuple_temp_7 = vec2_polarOffset(vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, angle_op_minus(vec2_getAngle(vec3_toVec2(rv_x, rv_y, rv_z), vec3_toVec2_return_y), real_asAngleDegrees(90.)), 17.) local real tuple_temp_8 = vec2_polarOffset_return_y local real lpos_x = tuple_temp_7 local real lpos_y = tuple_temp_8 local real tuple_temp_9 = vec2_polarOffset(vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, angle_op_plus(vec2_getAngle(vec3_toVec2(rv_x, rv_y, rv_z), vec3_toVec2_return_y), real_asAngleDegrees(90.)), 17.) local real tuple_temp_10 = vec2_polarOffset_return_y local real rpos_x = tuple_temp_9 local real rpos_y = tuple_temp_10 local integer ttype1 = GetTerrainType(lpos_x, lpos_y) local integer ttype2 = GetTerrainType(rpos_x, rpos_y) local integer rdata = Entity_getCurrentRegion(this_1) local integer temp = ttype1 local integer ttype_1 local integer temp_tuple_unwalkableId local integer temp_tuple_unwalkableId_1 local integer temp_tuple_unwalkableId_2 local integer temp_tuple_unwalkableId_3 local integer temp_1 local integer temp_2 local integer tuple_temp_11 local integer tuple_temp_12 local integer tuple_temp_13 local integer tuple_temp_14 call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata) set tuple_temp_11 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId set temp_tuple_unwalkableId = tuple_temp_11 if temp == temp_tuple_unwalkableId then set temp_1 = ttype2 call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata) set tuple_temp_12 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId set temp_tuple_unwalkableId_1 = tuple_temp_12 if temp_1 == temp_tuple_unwalkableId_1 then call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata) set tuple_temp_13 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId set temp_tuple_unwalkableId_2 = tuple_temp_13 set ttype_1 = temp_tuple_unwalkableId_2 else set ttype_1 = ttype2 endif else set temp_2 = ttype2 call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata) set tuple_temp_14 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId set temp_tuple_unwalkableId_3 = tuple_temp_14 if temp_2 == temp_tuple_unwalkableId_3 then set ttype_1 = ttype1 else set ttype_1 = GetTerrainType(Entity_pos_x[this_1], Entity_pos_y[this_1]) endif endif if ttype_1 == BuilderConstants_CONTROLLABLEICE then if w == null then call unit_setFacing(UnitEntity_actor[this_1], vec3_angleTo2d(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], orderPos_x_1, orderPos_y_1)) else call unit_setFacing(UnitEntity_actor[this_1], vec3_angleTo2d(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], widgetPos_x, widgetPos_y)) endif elseif ttype_1 == BuilderConstants_REVICE then if OrderId2String(id) == "lightningshield" then call unit_setFacing(UnitEntity_actor[this_1], vec3_angleTo2d(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], orderPos_x_1, orderPos_y_1)) elseif w == null then call unit_setFacing(UnitEntity_actor[this_1], angle_op_minus(vec3_angleTo2d(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], orderPos_x_1, orderPos_y_1), real_asAngleDegrees(180.))) else call unit_setFacing(UnitEntity_actor[this_1], angle_op_minus(vec3_angleTo2d(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], widgetPos_x, widgetPos_y), real_asAngleDegrees(180.))) endif endif endfunction function dispatch_Escaper_Escaper_Escaper_changeAngle takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Escaper.changeAngle") else call error("Called Escaper.changeAngle on invalid object.") endif endif call Escaper_changeAngle(this_1) endfunction function onEvent_add_Escaper_Escaper takes integer this_1 returns nothing call dispatch_Escaper_Escaper_Escaper_changeAngle(this_2932[this_1]) endfunction function onEvent_add_Escaper_Escaper_3830 takes integer this_1 returns nothing call dispatch_Escaper_Escaper_Escaper_changeAngle(this_2933[this_1]) endfunction function onEvent_add_Escaper_Escaper_3831 takes integer this_1 returns nothing call dispatch_Escaper_Escaper_Escaper_kill(this_2934[this_1], 0) endfunction function Escaper_onPick takes integer this_1 returns nothing local integer id = item_getTypeId(GetManipulatedItem()) local integer iterator local integer pd_1 if id == 1227895088 then call flashEffect(UI_goldCredit, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) call player_addGold(Entity_owner[this_1], 15) set iterator = LinkedList_iterator(PlayerData_escaperPlayers) loop exitwhen not LLIterator_hasNext(iterator) set pd_1 = LLIterator_next(iterator) call player_addGold(PlayerData_p[pd_1], 5) endloop call LLIterator_close(iterator) endif endfunction function dispatch_Escaper_Escaper_Escaper_onPick takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Escaper.onPick") else call error("Called Escaper.onPick on invalid object.") endif endif call Escaper_onPick(this_1) endfunction function onEvent_add_Escaper_Escaper_3832 takes integer this_1 returns nothing call dispatch_Escaper_Escaper_Escaper_onPick(this_2935[this_1]) endfunction function alloc_CallbackSingle_doAfter_Escaper_Escaper takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 682 else call error("Out of memory: Could not create CallbackSingle_doAfter_Escaper_Escaper.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 682 endif return this_1 endfunction function Entity_addPos takes integer this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing local real tuple_temp = vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], pos_x_1, pos_y_1, pos_z) local real tuple_temp_1 = vec3_op_plus_return_y local real tuple_temp_2 = vec3_op_plus_return_z set Entity_pos_x[this_1] = tuple_temp set Entity_pos_y[this_1] = tuple_temp_1 set Entity_pos_z[this_1] = tuple_temp_2 if pos_z > vec3_getHeightMap(pos_x_1, pos_y_1, pos_z) and Entity_gravity[this_1] != 0. then call dispatch_Entity_Entity_Entity_DupletListModule_activate(this_1) endif endfunction function dispatch_Entity_Entity_Entity_addPos takes integer this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Entity.addPos") else call error("Called Entity.addPos on invalid object.") endif endif call Entity_addPos(this_1, pos_x_1, pos_y_1, pos_z) endfunction function Escaper_canCast takes integer this_1 returns boolean return not (Escaper_poisoned[this_1] or Escaper_onLava[this_1] or Escaper_sliding[this_1] or Entity_getCurrentRegion(this_1) == RegionData_regions[21] or Entity_getCurrentRegion(this_1) == RegionData_regions[22] or Entity_getCurrentRegion(this_1) == RegionData_regions[23] or Entity_getCurrentRegion(this_1) == RegionData_regions[24]) endfunction function dispatch_Escaper_Escaper_Escaper_canCast takes integer this_1 returns boolean local boolean Escaper_Escaper_canCast_result if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Escaper.canCast") else call error("Called Escaper.canCast on invalid object.") endif endif set Escaper_Escaper_canCast_result = Escaper_canCast(this_1) return Escaper_Escaper_canCast_result endfunction function RevivePointModifier_onDestroy takes integer this_1 returns nothing call unit_remove(RevivePointModifier_actor[this_1]) endfunction function dealloc_RevivePointModifier takes integer obj_1 returns nothing if RevivePointModifier_typeId[obj_1] == 0 then call error("Double free: object of type RevivePointModifier") else set RevivePointModifier_nextFree[RevivePointModifier_firstFree] = obj_1 set RevivePointModifier_firstFree = RevivePointModifier_firstFree + 1 set RevivePointModifier_typeId[obj_1] = 0 endif endfunction function destroyRevivePointModifier takes integer this_1 returns nothing call RevivePointModifier_onDestroy(this_1) call dealloc_RevivePointModifier(this_1) endfunction function dispatch_RevivePointModifier_destroyRevivePointModifier takes integer this_1 returns nothing if RevivePointModifier_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling RevivePointModifier.RevivePointModifier") else call error("Called RevivePointModifier.RevivePointModifier on invalid object.") endif endif call destroyRevivePointModifier(this_1) endfunction function alloc_OrbProjectile takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1145 else call error("Out of memory: Could not create OrbProjectile.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1145 endif return this_1 endfunction function OrbProjectile_init takes integer this_1 returns nothing set OrbProjectile_e[this_1] = 0 endfunction function Projectile_setAcc takes integer this_1, real factor returns nothing set Projectile_acc[this_1] = factor endfunction function dispatch_Projectile_Projectile_Projectile_setAcc takes integer this_1, real factor returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Projectile.setAcc") else call error("Called Projectile.setAcc on invalid object.") endif endif call Projectile_setAcc(this_1, factor) endfunction function Projectile_setRanged_1084 takes integer this_1, real maxDistance, boolean use3DDistance returns nothing set Projectile_maxDist[this_1] = maxDistance * maxDistance set Projectile_use3DDistance[this_1] = use3DDistance set Projectile_ranged[this_1] = true endfunction function dispatch_Projectile_Projectile_Projectile_setRanged_3106 takes integer this_1, real maxDistance, boolean use3DDistance returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Projectile.setRanged") else call error("Called Projectile.setRanged on invalid object.") endif endif call Projectile_setRanged_1084(this_1, maxDistance, use3DDistance) endfunction function Projectile_setRanged takes integer this_1, real maxDistance returns nothing call dispatch_Projectile_Projectile_Projectile_setRanged_3106(this_1, maxDistance, Projectile_use3DDistance[this_1]) endfunction function dispatch_Projectile_Projectile_Projectile_setRanged takes integer this_1, real maxDistance returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Projectile.setRanged") else call error("Called Projectile.setRanged on invalid object.") endif endif call Projectile_setRanged(this_1, maxDistance) endfunction function real_op_mult_3963 takes real this_1, real v_x, real v_y, real v_z returns real set real_op_mult_return_x_2601 = v_x * this_1 set real_op_mult_return_y_2603 = v_y * this_1 set real_op_mult_return_z = v_z * this_1 return real_op_mult_return_x_2601 endfunction function vec3_normalizedPointerTo takes real this_x, real this_y, real this_z, real target_x, real target_y, real target_z returns real local real tuple_temp = vec3_op_minus(target_x, target_y, target_z, this_x, this_y, this_z) local real tuple_temp_1 = vec3_op_minus_return_y local real tuple_temp_2 = vec3_op_minus_return_z local real diff_x = tuple_temp local real diff_y = tuple_temp_1 local real diff_z = tuple_temp_2 local real len = vec3_length(diff_x, diff_y, diff_z) local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 local real tuple_temp_7 local real tuple_temp_8 if len > 0. then set tuple_temp_3 = vec3_op_mult(diff_x, diff_y, diff_z, 1. / len) set tuple_temp_4 = vec3_op_mult_return_y set tuple_temp_5 = vec3_op_mult_return_z set diff_x = tuple_temp_3 set diff_y = tuple_temp_4 set diff_z = tuple_temp_5 else set tuple_temp_6 = 1. set tuple_temp_7 = 0. set tuple_temp_8 = 0. set diff_x = tuple_temp_6 set diff_y = tuple_temp_7 set diff_z = tuple_temp_8 endif set vec3_normalizedPointerTo_return_x = diff_x set vec3_normalizedPointerTo_return_y = diff_y set vec3_normalizedPointerTo_return_z = diff_z return vec3_normalizedPointerTo_return_x endfunction function vec3_moveTowards takes real this_x, real this_y, real this_z, real target_x, real target_y, real target_z, real dist returns real set vec3_moveTowards_return_x = vec3_op_plus(this_x, this_y, this_z, real_op_mult_3963(dist, vec3_normalizedPointerTo(this_x, this_y, this_z, target_x, target_y, target_z), vec3_normalizedPointerTo_return_y, vec3_normalizedPointerTo_return_z), real_op_mult_return_y_2603, real_op_mult_return_z) set vec3_moveTowards_return_y = vec3_op_plus_return_y set vec3_moveTowards_return_z = vec3_op_plus_return_z return vec3_moveTowards_return_x endfunction function construct_OrbProjectile takes integer this_1, integer e_1, real target_x, real target_y returns nothing call construct_Projectile(this_1, vec3_op_plus(vec3_moveTowards(dispatch_UnitEntity_Entity_UnitEntity_getPos(e_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, vec2_toVec3(target_x, target_y), vec2_toVec3_return_y, vec2_toVec3_return_z, 16.), vec3_moveTowards_return_y, vec3_moveTowards_return_z, 0., 0., 16.), vec3_op_plus_return_y, vec3_op_plus_return_z, 16., Entity_owner[e_1], vec3_angleTo2d(Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1], target_x, target_y), "TC_EnergyBolt.mdx") call OrbProjectile_init(this_1) set OrbProjectile_e[this_1] = e_1 set OrbProjectile_rdata[this_1] = Entity_setCurrentRegion(this_1) call dispatch_Projectile_Projectile_Projectile_setAcc(this_1, 0.985) call dispatch_Projectile_Projectile_Projectile_setRanged(this_1, 360.) call dispatch_Projectile_Projectile_Projectile_setTimed(this_1, 3.) call dispatch_Projectile_Projectile_Projectile_setSpeed(this_1, 9.85) call dispatch_Fx2_Fx2_Fx2_setTintFromPlayer(Fx2Entity_fx[this_1], Entity_owner[e_1]) endfunction function new_OrbProjectile takes integer e_1, real target_x, real target_y returns integer local integer this_1 = alloc_OrbProjectile() call construct_OrbProjectile(this_1, e_1, target_x, target_y) return this_1 endfunction function alloc_RevivePointModifier takes nothing returns integer local integer this_1 if RevivePointModifier_firstFree == 0 then if RevivePointModifier_maxIndex < JASS_MAX_ARRAY_SIZE then set RevivePointModifier_maxIndex = RevivePointModifier_maxIndex + 1 set this_1 = RevivePointModifier_maxIndex set RevivePointModifier_typeId[this_1] = 1115 else call error("Out of memory: Could not create RevivePointModifier.") set this_1 = 0 endif else set RevivePointModifier_firstFree = RevivePointModifier_firstFree - 1 set this_1 = RevivePointModifier_nextFree[RevivePointModifier_firstFree] set RevivePointModifier_typeId[this_1] = 1115 endif return this_1 endfunction function RevivePointModifier_init takes integer this_1 returns nothing endfunction function construct_RevivePointModifier takes integer this_1, real position_x, real position_y, player owner returns nothing local real tuple_temp local real tuple_temp_1 call RevivePointModifier_init(this_1) set RevivePointModifier_actor[this_1] = createUnit(owner, RevivePointModifier_REV_MODIFIER_DUMMY_ID, position_x, position_y, 0.) set tuple_temp = position_x set tuple_temp_1 = position_y set RevivePointModifier_pos_x[this_1] = tuple_temp set RevivePointModifier_pos_y[this_1] = tuple_temp_1 endfunction function new_RevivePointModifier takes real position_x, real position_y, player owner returns integer local integer this_1 = alloc_RevivePointModifier() call construct_RevivePointModifier(this_1, position_x, position_y, owner) return this_1 endfunction function Escaper_onCast takes integer this_1, integer id returns nothing local real angl_radians local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local boolean teleport local item itm local integer i local integer ie local real tpos_x_1 local real tpos_y_1 local integer clVar local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 call unit_setAnimation(UnitEntity_actor[this_1], "spell") if id == Escaper_JUMP_SPELL then if not Entity_flying[this_1] then call dispatch_Entity_Entity_Entity_addPos(this_1, 0., 0., 1.) set tuple_temp = vec3_angleTo2d(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], EventData_getSpellTargetPos(), EventData_getSpellTargetPos_return_y) set angl_radians = tuple_temp call effect_destr(addEffect_1563(Abilities_aneuCaster, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])) if Escaper_sliding[this_1] then call dispatch_Entity_Entity_Entity_addVel(this_1, 3. * angle_cos(angl_radians), 3. * angle_sin(angl_radians), 11.75) else call dispatch_Entity_Entity_Entity_addVel(this_1, 7.75 * angle_cos(angl_radians), 7.75 * angle_sin(angl_radians), 11.75) endif if RegionData_specialAbil[Entity_getCurrentRegion(this_1)] != Escaper_JUMP_SPELL then call unit_removeAbility(UnitEntity_actor[this_1], Escaper_JUMP_SPELL) endif endif elseif id == Escaper_ORB_SPELL then set Escaper_orb[this_1] = new_OrbProjectile(this_1, EventData_getSpellTargetPos(), EventData_getSpellTargetPos_return_y) call dispatch_Entity_Entity_Entity_addVel(Escaper_orb[this_1], vec3_op_mult(vec3_op_minus_4277(dispatch_Escaper_Escaper_Escaper_getRealVel(this_1), dispatch_Escaper_Escaper_Escaper_getRealVel_return_y, dispatch_Escaper_Escaper_Escaper_getRealVel_return_z, Escaper_walkVel_x[this_1], Escaper_walkVel_y[this_1]), vec3_op_minus_return_y_3125, vec3_op_minus_return_z_3127, 0.65), vec3_op_mult_return_y, vec3_op_mult_return_z) call dispatch_Projectile_Projectile_Projectile_setXYAngle(Escaper_orb[this_1], vec2_getAngle(vec3_toVec2(Entity_vel_x[Escaper_orb[this_1]], Entity_vel_y[Escaper_orb[this_1]], Entity_vel_z[Escaper_orb[this_1]]), vec3_toVec2_return_y)) set receiver = UnitEntity_actor[this_1] call unit_removeAbility(receiver, Escaper_ORB_SPELL) set receiver_1 = receiver call unit_addAbility(receiver_1, Escaper_JAUNT_SPELL) if RegionData_specialAbil[Entity_getCurrentRegion(this_1)] != Escaper_ORB_SPELL then call unit_removeAbility(UnitEntity_actor[this_1], Escaper_ORB_SPELL) endif elseif id == Escaper_JAUNT_SPELL then if Escaper_orb[this_1] != 0 then call dispatch_Escaper_Escaper_Escaper_setXY(this_1, dispatch_Entity_Entity_Entity_getPos(Escaper_orb[this_1]), dispatch_Entity_Entity_Entity_getPos_return_y, dispatch_Entity_Entity_Entity_getPos_return_z) set tuple_temp_1 = Vectors_ZERO2_x set tuple_temp_2 = Vectors_ZERO2_y set Escaper_slideVelocity_x[this_1] = tuple_temp_1 set Escaper_slideVelocity_y[this_1] = tuple_temp_2 call dispatch_Entity_Entity_Entity_setVel(this_1, vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], 0.15), vec3_op_mult_return_y, vec3_op_mult_return_z) call flashEffect(Abilities_polyMorphTarget, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) call dispatch_Projectile_Projectile_Projectile_terminate(Escaper_orb[this_1]) endif elseif id == RevivePointModifier_CREATE_REV_MOD_ID then set Escaper_revmod[this_1] = new_RevivePointModifier(vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, Entity_owner[this_1]) set receiver_2 = UnitEntity_actor[this_1] call unit_removeAbility(receiver_2, RevivePointModifier_CREATE_REV_MOD_ID) set receiver_3 = receiver_2 call unit_addAbility(receiver_3, RevivePointModifier_REMOVE_REV_MOD_ID) elseif id == RevivePointModifier_REMOVE_REV_MOD_ID then if Escaper_revmod[this_1] != 0 then call dispatch_RevivePointModifier_destroyRevivePointModifier(Escaper_revmod[this_1]) set Escaper_revmod[this_1] = 0 endif call UnitRemoveAbility(UnitEntity_actor[this_1], RevivePointModifier_REMOVE_REV_MOD_ID) call UnitAddAbility(UnitEntity_actor[this_1], RevivePointModifier_CREATE_REV_MOD_ID) elseif id == Weapon_ATTACK_MELEE or id == Weapon_ATTACK_RANGED then call unit_setAnimation(UnitEntity_actor[this_1], "attack") elseif id == Escaper_ANK_ITEM_ID then if Escaper_poisoned[this_1] or ( not dispatch_Escaper_Escaper_Escaper_canCast(this_1)) then call unit_addItemById(UnitEntity_actor[this_1], 1227894860) call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., .08, "canceled!", 8.5, 2., 255, 0, 0, 255, Entity_owner[this_1]) else if Escaper_revivetomb[this_1] != null then call unit_remove(Escaper_revivetomb[this_1]) endif set Escaper_revivetomb[this_1] = createUnit_2354(Entity_owner[this_1], EscaperObjects_TOMB_DUMMY_ID, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0.) endif elseif id == Escaper_TELEPORT_ITEM_ID then set teleport = true set itm = GetManipulatedItem() if GetItemCharges(itm) <= 1 then call item_remove(itm) endif set i = 0 loop exitwhen i > 5 set ie = item_getEntity(UnitItemInSlot(UnitEntity_actor[this_1], i)) if ie != 0 and Serializable_typeId[ie] == 1156 then set teleport = false exitwhen true endif set i = i + 1 endloop if ( not teleport) or Escaper_poisoned[this_1] or Escaper_onLava[this_1] or Escaper_sliding[this_1] or Entity_getCurrentRegion(this_1) == RegionData_regions[21] or Entity_getCurrentRegion(this_1) == RegionData_regions[22] or Entity_getCurrentRegion(this_1) == RegionData_regions[23] or Entity_getCurrentRegion(this_1) == RegionData_regions[24] then call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., .08, "canceled!", 8.5, 2., 255, 0, 0, 255, Entity_owner[this_1]) else set tuple_temp_3 = EventData_getSpellTargetPos() set tuple_temp_4 = EventData_getSpellTargetPos_return_y set tpos_x_1 = tuple_temp_3 set tpos_y_1 = tuple_temp_4 set clVar = alloc_CallbackSingle_doAfter_Escaper_Escaper() call construct_CallbackSingle(clVar) set this_2937[clVar] = this_1 set tuple_temp_5 = tpos_x_1 set tuple_temp_6 = tpos_y_1 set tpos_x_3019[clVar] = tuple_temp_5 set tpos_y_3022[clVar] = tuple_temp_6 call doAfter(0.15, clVar) endif else call dispatch_JukeBox_JukeBox_JukeBox_checkSpell(JukeBox_jukeBox, id) endif endfunction function BlindEscaper_onCast takes integer this_1, integer id returns nothing call Escaper_onCast(this_1, id) endfunction function FxEntity_setPos takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z returns nothing local real tuple_temp = tpos_x_1 local real tuple_temp_1 = tpos_y_1 local real tuple_temp_2 = tpos_z set Entity_pos_x[this_1] = tuple_temp set Entity_pos_y[this_1] = tuple_temp_1 set Entity_pos_z[this_1] = tuple_temp_2 call dispatch_Fx_Fx_Fx_setXYZ(FxEntity_fx[this_1], tpos_x_1, tpos_y_1, tpos_z) endfunction function dispatch_FxEntity_FxEntity_FxEntity_setPos takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling FxEntity.setPos") else call error("Called FxEntity.setPos on invalid object.") endif endif call FxEntity_setPos(this_1, tpos_x_1, tpos_y_1, tpos_z) endfunction function Fx_setColor takes integer this_1, integer newColor_red, integer newColor_green, integer newColor_blue, integer newColor_alpha returns nothing local integer tuple_temp = newColor_red local integer tuple_temp_1 = newColor_green local integer tuple_temp_2 = newColor_blue local integer tuple_temp_3 = newColor_alpha set Fx_col_red[this_1] = tuple_temp set Fx_col_green[this_1] = tuple_temp_1 set Fx_col_blue[this_1] = tuple_temp_2 set Fx_col_alpha[this_1] = tuple_temp_3 call unit_setVertexColor_4202(Fx_dummy[this_1], newColor_red, newColor_green, newColor_blue, newColor_alpha) endfunction function dispatch_Fx_Fx_Fx_setColor takes integer this_1, integer newColor_red, integer newColor_green, integer newColor_blue, integer newColor_alpha returns nothing if Fx_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Fx.setColor") else call error("Called Fx.setColor on invalid object.") endif endif call Fx_setColor(this_1, newColor_red, newColor_green, newColor_blue, newColor_alpha) endfunction function Fx_setScale takes integer this_1, real value returns nothing call unit_setScale(Fx_dummy[this_1], value) endfunction function dispatch_Fx_Fx_Fx_setScale takes integer this_1, real value returns nothing if Fx_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Fx.setScale") else call error("Called Fx.setScale on invalid object.") endif endif call Fx_setScale(this_1, value) endfunction function construct_Fx6 takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, string fxpath returns nothing call Fx_init(this_1) set Fx_dummy[this_1] = DummyRecycler_get(vec3_toVec2(pos_x_1, pos_y_1, pos_z), vec3_toVec2_return_y, 0.) call dispatch_Fx_Fx_Fx_setFx(this_1, fxpath) call dispatch_Fx_Fx_Fx_setZ(this_1, pos_z) endfunction function new_Fx_3672 takes real pos_x_1, real pos_y_1, real pos_z, string fxpath returns integer local integer this_1 = alloc_Fx() call construct_Fx6(this_1, pos_x_1, pos_y_1, pos_z, fxpath) return this_1 endfunction function Portal_setDestiny takes integer this_1, real tpos_x_1, real tpos_y_1 returns nothing local real tuple_temp = tpos_x_1 local real tuple_temp_1 = tpos_y_1 set Portal_destiny_x[this_1] = tuple_temp set Portal_destiny_y[this_1] = tuple_temp_1 if tpos_x_1 != Vectors_ZERO2_x or tpos_y_1 != Vectors_ZERO2_y then if Portal_targetFx[this_1] == 0 then set Portal_targetFx[this_1] = new_Fx_3672(vec2_withZ(tpos_x_1, tpos_y_1, 0.), vec2_withZ_return_y, vec2_withZ_return_z, "PulseTC_tgt.mdx") call dispatch_Fx_Fx_Fx_setScale(Portal_targetFx[this_1], 0.75) call dispatch_Fx_Fx_Fx_setOwner(Portal_targetFx[this_1], Entity_owner[this_1], true) endif call dispatch_Fx_Fx_Fx_setXYZ(Portal_targetFx[this_1], vec2_withZ(Portal_destiny_x[this_1], Portal_destiny_y[this_1], 0.), vec2_withZ_return_y, vec2_withZ_return_z) call dispatch_Entity_Entity_Entity_DupletListModule_activate(this_1) else call dispatch_Fx_Fx_Fx_hiddenDestroy(Portal_targetFx[this_1]) set Portal_targetFx[this_1] = 0 call dispatch_Fx_Fx_Fx_setColor(FxEntity_fx[this_1], 90, 90, 90, 90) endif endfunction function dispatch_Portal_EscaperClasses_Portal_setDestiny takes integer this_1, real tpos_x_1, real tpos_y_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Portal.setDestiny") else call error("Called Portal.setDestiny on invalid object.") endif endif call Portal_setDestiny(this_1, tpos_x_1, tpos_y_1) endfunction function alloc_Portal takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1150 else call error("Out of memory: Could not create Portal.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1150 endif return this_1 endfunction function construct_Portal_Sensor takes integer this_1 returns nothing endfunction function Portal_init takes integer this_1 returns nothing local real tuple_temp local real tuple_temp_1 set Portal_Sensor_inRangeTrig[this_1] = null set Portal_Sensor_actorRef[this_1] = null set tuple_temp = Vectors_ZERO2_x set tuple_temp_1 = Vectors_ZERO2_y set Portal_destiny_x[this_1] = tuple_temp set Portal_destiny_y[this_1] = tuple_temp_1 set Portal_es[this_1] = 0 set Portal_lerpy[this_1] = 0. set Portal_targetFx[this_1] = 0 call construct_Portal_Sensor(this_1) endfunction function alloc_SensorListener_addSensorListener_Portal_EscaperClasses takes nothing returns integer local integer this_1 if SensorListener_firstFree == 0 then if SensorListener_maxIndex < JASS_MAX_ARRAY_SIZE then set SensorListener_maxIndex = SensorListener_maxIndex + 1 set this_1 = SensorListener_maxIndex set SensorListener_typeId[this_1] = 1123 else call error("Out of memory: Could not create SensorListener_addSensorListener_Portal_EscaperClasses.") set this_1 = 0 endif else set SensorListener_firstFree = SensorListener_firstFree - 1 set this_1 = SensorListener_nextFree[SensorListener_firstFree] set SensorListener_typeId[this_1] = 1123 endif return this_1 endfunction function construct_FxEntity takes integer this_1, player owner, real pos_x_1, real pos_y_1, real pos_z, real radius, real xyAngle_radians, string sfxpath returns nothing call construct_Entity5(this_1, owner, pos_x_1, pos_y_1, pos_z, radius) call FxEntity_init(this_1) call dispatch_FxEntity_FxEntity_FxEntity_setupFx(this_1, xyAngle_radians, sfxpath) endfunction function Portal_Sensor_addSensorListener takes integer this_1, integer e_1, integer listener_1 returns nothing local integer instanceOfTemp local integer instanceOfTemp_1 if listener_1 == 0 then call error("Trying to add null listener") endif set Portal_Sensor_inRangeTrig[this_1] = CreateTrigger() set instanceOfTemp = Serializable_typeId[e_1] if instanceOfTemp >= 1159 and instanceOfTemp <= 1226 then set Portal_Sensor_actorRef[this_1] = UnitEntity_actor[e_1] else set instanceOfTemp_1 = Serializable_typeId[e_1] if instanceOfTemp_1 >= 1148 and instanceOfTemp_1 <= 1150 then set Portal_Sensor_actorRef[this_1] = dispatch_FxEntity_FxEntity_FxEntity_getDummy(e_1) endif endif call trigger_registerUnitInRangeSource(Portal_Sensor_inRangeTrig[this_1], Portal_Sensor_actorRef[this_1], Entity_radius[e_1], null) call dispatch_HashMap_HashMap_HashMap_put(Portal_Sensor_sensorListeners, triggerToIndex(Portal_Sensor_inRangeTrig[this_1]), listener_1) call trigger_addAction(Portal_Sensor_inRangeTrig[this_1], ref_function_code__addAction_Sensor_Portal_EscaperClasses) endfunction function dispatch_Portal_EscaperClasses_Portal_Sensor_addSensorListener takes integer this_1, integer e_1, integer listener_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Portal.addSensorListener") else call error("Called Portal.addSensorListener on invalid object.") endif endif call Portal_Sensor_addSensorListener(this_1, e_1, listener_1) endfunction function construct_Portal takes integer this_1, integer es, integer duration returns nothing local integer clVar local integer temp local integer temp_1 call construct_FxEntity(this_1, Entity_owner[es], dispatch_UnitEntity_Entity_UnitEntity_getPos(es), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, 28., 0., "PulseTC_fix4.mdx") call Portal_init(this_1) set FxEntity_silent[this_1] = true set Portal_duration[this_1] = duration set Portal_es[this_1] = es call dispatch_Entity_Entity_Entity_DupletListModule_deactivate(this_1) call dispatch_Fx_Fx_Fx_setColor(FxEntity_fx[this_1], 145, 145, 145, 145) set temp = this_1 set temp_1 = this_1 set clVar = alloc_SensorListener_addSensorListener_Portal_EscaperClasses() call construct_SensorListener(clVar) set this_2938[clVar] = this_1 call dispatch_Portal_EscaperClasses_Portal_Sensor_addSensorListener(temp, temp_1, clVar) endfunction function new_Portal takes integer es, integer duration returns integer local integer this_1 = alloc_Portal() call construct_Portal(this_1, es, duration) return this_1 endfunction function unit_resetAbilityCooldown takes unit this_1, integer abilId returns nothing local integer lvl = unit_getAbilityLevel(this_1, abilId) local unit receiver = this_1 local unit receiver_1 local unit receiver_2 call unit_removeAbility(receiver, abilId) set receiver_1 = receiver call unit_addAbility(receiver_1, abilId) set receiver_2 = receiver_1 call unit_setAbilityLevel(receiver_2, abilId, lvl) endfunction function FastEscaper_onCast takes integer this_1, integer id returns nothing local integer receiver local integer receiver_1 call Escaper_onCast(this_1, id) if id == EscaperClasses_PORTAL_CREATE_ID then if Escaper_sliding[this_1] or ( not dispatch_Escaper_Escaper_Escaper_canCast(this_1)) then call unit_resetAbilityCooldown(UnitEntity_actor[this_1], EscaperClasses_PORTAL_CREATE_ID) call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., .08, "canceled!", 8.5, 2., 255, 0, 0, 255, Entity_owner[this_1]) return endif if FastEscaper_portal[this_1] == 0 then set FastEscaper_portal[this_1] = new_Portal(this_1, 20 + unit_getAbilityLevel(UnitEntity_actor[this_1], EscaperClasses_PORTAL_CREATE_ID) * 7) call unit_resetAbilityCooldown(UnitEntity_actor[this_1], EscaperClasses_PORTAL_CREATE_ID) elseif Portal_destiny_x[FastEscaper_portal[this_1]] != Vectors_ZERO2_x or Portal_destiny_y[FastEscaper_portal[this_1]] != Vectors_ZERO2_y then set receiver = FastEscaper_portal[this_1] call dispatch_FxEntity_FxEntity_FxEntity_setPos(receiver, dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z) set receiver_1 = receiver call dispatch_Portal_EscaperClasses_Portal_setDestiny(receiver_1, Vectors_ZERO2_x, Vectors_ZERO2_y) call unit_resetAbilityCooldown(UnitEntity_actor[this_1], EscaperClasses_PORTAL_CREATE_ID) else call dispatch_Portal_EscaperClasses_Portal_setDestiny(FastEscaper_portal[this_1], vec3_toVec2(dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z), vec3_toVec2_return_y) endif endif endfunction function HolyEscaper_onCast takes integer this_1, integer id returns nothing call Escaper_onCast(this_1, id) if id == EscaperClasses_REINCARNATION_ID then if Escaper_poisoned[this_1] or ( not dispatch_Escaper_Escaper_Escaper_canCast(this_1)) then call unit_resetAbilityCooldown(UnitEntity_actor[this_1], EscaperClasses_REINCARNATION_ID) call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., .08, "canceled!", 8.5, 2., 255, 0, 0, 255, Entity_owner[this_1]) else if Escaper_revivetomb[this_1] != null then call unit_remove(Escaper_revivetomb[this_1]) endif set Escaper_revivetomb[this_1] = createUnit_2354(Entity_owner[this_1], EscaperObjects_TOMB_DUMMY_ID, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0.) endif elseif id == EscaperClasses_TEMP_REV_ID then if Escaper_poisoned[this_1] or ( not dispatch_Escaper_Escaper_Escaper_canCast(this_1)) then call unit_resetAbilityCooldown(UnitEntity_actor[this_1], EscaperClasses_TEMP_REV_ID) call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., .08, "canceled!", 8.5, 2., 255, 0, 0, 255, Entity_owner[this_1]) endif endif endfunction function IceEscaper_onCast takes integer this_1, integer id returns nothing local real angl_radians local real value local real lvl local real tuple_temp call Escaper_onCast(this_1, id) if id == EscaperClasses_SPEEDWAVE_ID then if Escaper_sliding[this_1] then set tuple_temp = unit_getFacingAngle(UnitEntity_actor[this_1]) set angl_radians = tuple_temp set value = 10. + GetUnitAbilityLevel(UnitEntity_actor[this_1], EscaperClasses_SPEEDWAVE_ID) * 2.5 call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Other\\CrushingWave\\CrushingWaveDamage.mdl", Entity_pos_x[this_1], Entity_pos_y[this_1])) call dispatch_Entity_Entity_Entity_addVel(this_1, value * angle_cos(angl_radians), value * angle_sin(angl_radians), 0.) endif elseif id == EscaperClasses_SLOWWAVE_ID then set lvl = unit_getAbilityLevel(UnitEntity_actor[this_1], id) / 4. if Escaper_sliding[this_1] then set Entity_speedFactor[this_1] = 0.9 + lvl call effect_destr(addEffect_1563(Objects_impaleTargetDust, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])) endif endif endfunction function StrongEscaper_onCast takes integer this_1, integer id returns nothing local real tuple_temp local real tuple_temp_1 call Escaper_onCast(this_1, id) if id == EscaperClasses_STAGNANCYSHIELD_ID then set StrongEscaper_invulnerable[this_1] = true set StrongEscaper_shieldtimer[this_1] = 1. + GetUnitAbilityLevel(UnitEntity_actor[this_1], id) * 2. if StrongEscaper_shieldtimer[this_1] > 5. then set StrongEscaper_shieldtimer[this_1] = 5. endif call unit_addAbility(UnitEntity_actor[this_1], 1098282348) call unit_setPos(UnitEntity_actor[this_1], vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y) set tuple_temp = vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) set tuple_temp_1 = vec3_toVec2_return_y set StrongEscaper_shieldPos_x[this_1] = tuple_temp set StrongEscaper_shieldPos_y[this_1] = tuple_temp_1 set StrongEscaper_shieldeffect[this_1] = addEffect("Abilities\\Spells\\Human\\DivineShield\\DivineShieldTarget.mdl", StrongEscaper_shieldPos_x[this_1], StrongEscaper_shieldPos_y[this_1]) endif endfunction function dispatch_Escaper_Escaper_Escaper_onCast takes integer this_1, integer id returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Escaper.onCast") else call error("Called Escaper.onCast on invalid object.") endif endif if Serializable_typeId[this_1] <= 1164 then if Serializable_typeId[this_1] <= 1163 then if Serializable_typeId[this_1] <= 1162 then call Escaper_onCast(this_1, id) else call BlindEscaper_onCast(this_1, id) endif else call FastEscaper_onCast(this_1, id) endif elseif Serializable_typeId[this_1] <= 1166 then if Serializable_typeId[this_1] <= 1165 then call HolyEscaper_onCast(this_1, id) else call IceEscaper_onCast(this_1, id) endif else call StrongEscaper_onCast(this_1, id) endif endfunction function onEvent_add_Escaper_Escaper_3833 takes integer this_1 returns nothing call dispatch_Escaper_Escaper_Escaper_onCast(this_2936[this_1], GetSpellAbilityId()) endfunction function Executer_addActionAbilsNormal takes integer this_1 returns nothing local unit receiver = UnitEntity_actor[this_1] local unit receiver_1 local unit receiver_2 local unit receiver_3 local unit receiver_4 local unit receiver_5 call unit_addAbility(receiver, Executer_DOOR_CLOSE_ABIL) set receiver_1 = receiver call unit_addAbility(receiver_1, Executer_DOOR_OPEN_ABIL) set receiver_2 = receiver_1 call unit_addAbility(receiver_2, Executer_DOOR_TOGGLE_ABIL) set receiver_3 = receiver_2 call unit_addAbility(receiver_3, Executer_TERRAIN_CHANGE_ABIL) set receiver_4 = receiver_3 call unit_addAbility(receiver_4, Executer_MOVE_UNIT_DIRECT_ABIL) set receiver_5 = receiver_4 call unit_addAbility(receiver_5, Executer_SPAWN_UNIT_ID) endfunction function dispatch_Executer_Executer_Executer_addActionAbilsNormal takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Executer.addActionAbilsNormal") else call error("Called Executer.addActionAbilsNormal on invalid object.") endif endif call Executer_addActionAbilsNormal(this_1) endfunction function Executer_addActionAbilsReversable takes integer this_1 returns nothing local unit receiver = UnitEntity_actor[this_1] local unit receiver_1 local unit receiver_2 local unit receiver_3 call unit_addAbility(receiver, Executer_DOOR_CLOSE_ABIL) set receiver_1 = receiver call unit_addAbility(receiver_1, Executer_DOOR_OPEN_ABIL) set receiver_2 = receiver_1 call unit_addAbility(receiver_2, Executer_DOOR_TOGGLE_ABIL) set receiver_3 = receiver_2 call unit_addAbility(receiver_3, Executer_TERRAIN_CHANGE_ABIL) endfunction function dispatch_Executer_Executer_Executer_addActionAbilsReversable takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Executer.addActionAbilsReversable") else call error("Called Executer.addActionAbilsReversable on invalid object.") endif endif call Executer_addActionAbilsReversable(this_1) endfunction function Executer_addMoveUnitAdjuster takes integer this_1 returns nothing local unit receiver = UnitEntity_actor[this_1] local unit receiver_1 local unit receiver_2 local unit receiver_3 call unit_addAbility(receiver, Executer_MOVE_UNIT_STOP_ABIL) set receiver_1 = receiver call unit_addAbility(receiver_1, Executer_MOVE_UNIT_DIRECT_ABIL) set receiver_2 = receiver_1 call unit_addAbility(receiver_2, Executer_MOVE_UNIT_PATROL_ABIL) set receiver_3 = receiver_2 call unit_addAbility(receiver_3, Executer_MOVE_UNIT_SELECT_ABIL) endfunction function dispatch_Executer_Executer_Executer_addMoveUnitAdjuster takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Executer.addMoveUnitAdjuster") else call error("Called Executer.addMoveUnitAdjuster on invalid object.") endif endif call Executer_addMoveUnitAdjuster(this_1) endfunction function Executer_addTerrainAdjuster takes integer this_1 returns nothing local unit receiver = UnitEntity_actor[this_1] local unit receiver_1 local unit receiver_2 local unit receiver_3 local unit receiver_4 call unit_addAbility(receiver, Executer_TERRAIN_INCREASE_V_ABIL) set receiver_1 = receiver call unit_addAbility(receiver_1, Executer_TERRAIN_INCREASE_H_ABIL) set receiver_2 = receiver_1 call unit_addAbility(receiver_2, Executer_TERRAIN_DECREASE_V_ABIL) set receiver_3 = receiver_2 call unit_addAbility(receiver_3, Executer_TERRAIN_DECREASE_H_ABIL) set receiver_4 = receiver_3 call unit_addAbility(receiver_4, Executer_TERRAIN_BOOK_ABIL) if Executer_eventMode[this_1] == 3 or Executer_eventMode[this_1] == 4 then call UnitAddAbility(UnitEntity_actor[this_1], Executer_TERRAIN_ANTIBOOK_ABIL) endif endfunction function dispatch_Executer_Executer_Executer_addTerrainAdjuster takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Executer.addTerrainAdjuster") else call error("Called Executer.addTerrainAdjuster on invalid object.") endif endif call Executer_addTerrainAdjuster(this_1) endfunction function Executer_changeVis takes integer this_1, boolean invis returns nothing if Executer_eventMode[this_1] == 4 then if invis then call ShowDestructable(Executer_dummy[this_1], false) else call ShowDestructable(Executer_dummy[this_1], true) call SetDestructableAnimation(Executer_dummy[this_1], "death") endif elseif Executer_eventMode[this_1] == 3 then if invis then call ShowDestructable(Executer_dummy[this_1], false) else call ShowDestructable(Executer_dummy[this_1], true) call SetDestructableAnimation(Executer_dummy[this_1], "stand alternate") endif endif endfunction function dispatch_Executer_Executer_Executer_changeVis takes integer this_1, boolean invis returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Executer.changeVis") else call error("Called Executer.changeVis on invalid object.") endif endif call Executer_changeVis(this_1, invis) endfunction function region_addRect takes region this_1, rect rct returns nothing call RegionAddRect(this_1, rct) endfunction function region_setRegionData takes region this_1, integer data_1 returns nothing call dispatch_HashMap_HashMap_HashMap_put(EventHelper_regionMap, regionToIndex(this_1), data_1) endfunction function trigger_clearActions takes trigger this_1 returns nothing call TriggerClearActions(this_1) endfunction function trigger_clearConditions takes trigger this_1 returns nothing call TriggerClearConditions(this_1) endfunction function Executer_registerRect takes integer this_1, real centerx, real centery, real offset returns nothing local trigger receiver local trigger receiver_1 local trigger receiver_2 call unit_clearRegister(UnitEntity_actor[this_1]) set receiver = StaticBaseObject_inRangeTrig[this_1] call trigger_clearConditions(receiver) set receiver_1 = receiver call trigger_clearActions(receiver_1) set receiver_2 = receiver_1 call trigger_destr(receiver_2) set Executer_entitiesOnPlate[this_1] = new_LinkedList() set Executer_eventRect[this_1] = Rect(centerx - offset, centery - offset, centerx + offset, centery + offset) set Executer_eventRegion[this_1] = CreateRegion() call region_addRect(Executer_eventRegion[this_1], Executer_eventRect[this_1]) call region_setRegionData(Executer_eventRegion[this_1], this_1) call TriggerRegisterLeaveRegion(Executer_executerUnitLeave, Executer_eventRegion[this_1], null) call trigger_addCondition(Executer_executerUnitLeave, Condition(ref_function_code__Condition_addCondition_Executer_Executer)) call TriggerRegisterEnterRegion(Executer_executerUnitEnter, Executer_eventRegion[this_1], null) call trigger_addCondition(Executer_executerUnitEnter, Condition(ref_function_code__Condition_addCondition_Executer_Executer_2638)) endfunction function dispatch_Executer_Executer_Executer_registerRect takes integer this_1, real centerx, real centery, real offset returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Executer.registerRect") else call error("Called Executer.registerRect on invalid object.") endif endif call Executer_registerRect(this_1, centerx, centery, offset) endfunction function Executer_removeActionAbils takes integer this_1 returns nothing local unit receiver = UnitEntity_actor[this_1] local unit receiver_1 local unit receiver_2 local unit receiver_3 local unit receiver_4 local unit receiver_5 local unit receiver_6 call unit_removeAbility(receiver, Executer_DOOR_CLOSE_ABIL) set receiver_1 = receiver call unit_removeAbility(receiver_1, Executer_DOOR_OPEN_ABIL) set receiver_2 = receiver_1 call unit_removeAbility(receiver_2, Executer_DOOR_TOGGLE_ABIL) set receiver_3 = receiver_2 call unit_removeAbility(receiver_3, Executer_TERRAIN_CHANGE_ABIL) set receiver_4 = receiver_3 call unit_removeAbility(receiver_4, Executer_MOVE_UNIT_DIRECT_ABIL) set receiver_5 = receiver_4 call unit_removeAbility(receiver_5, Executer_SPAWN_UNIT_ID) set receiver_6 = UnitEntity_actor[this_1] call unit_addAbility(receiver_6, BuilderConstants_TURN_OFF_ID) endfunction function dispatch_Executer_Executer_Executer_removeActionAbils takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Executer.removeActionAbils") else call error("Called Executer.removeActionAbils on invalid object.") endif endif call Executer_removeActionAbils(this_1) endfunction function Executer_removeModeAbils takes integer this_1 returns nothing local unit receiver = UnitEntity_actor[this_1] local unit receiver_1 local unit receiver_2 local unit receiver_3 call unit_removeAbility(receiver, Executer_ONESHOT_ABIL) set receiver_1 = receiver call unit_removeAbility(receiver_1, Executer_REPEATING_ABIL) set receiver_2 = receiver_1 call unit_removeAbility(receiver_2, Executer_LEVER_ABIL) set receiver_3 = receiver_2 call unit_removeAbility(receiver_3, Executer_PRESSURE_ABIL) endfunction function dispatch_Executer_Executer_Executer_removeModeAbils takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Executer.removeModeAbils") else call error("Called Executer.removeModeAbils on invalid object.") endif endif call Executer_removeModeAbils(this_1) endfunction function Executer_onCast takes integer this_1 returns boolean local integer id = GetSpellAbilityId() local integer temp = id local unit target if temp == Executer_ONESHOT_ABIL then set Executer_eventMode[this_1] = 2 call dispatch_Executer_Executer_Executer_addActionAbilsNormal(this_1) call dispatch_Executer_Executer_Executer_removeModeAbils(this_1) elseif temp == Executer_REPEATING_ABIL then set Executer_eventMode[this_1] = 1 call dispatch_Executer_Executer_Executer_addActionAbilsNormal(this_1) call dispatch_Executer_Executer_Executer_removeModeAbils(this_1) elseif temp == Executer_LEVER_ABIL then set Executer_eventMode[this_1] = 3 call dispatch_Executer_Executer_Executer_addActionAbilsReversable(this_1) call dispatch_Executer_Executer_Executer_removeModeAbils(this_1) set Executer_dummy[this_1] = CreateDestructable(Executer_LEVER_DUMMY_ID, unit_getX(UnitEntity_actor[this_1]), unit_getY(UnitEntity_actor[this_1]), 0., 1., 0) call SetDestructableAnimation(Executer_dummy[this_1], "death") elseif temp == Executer_PRESSURE_ABIL then set Executer_eventMode[this_1] = 4 call dispatch_Executer_Executer_Executer_addActionAbilsReversable(this_1) call dispatch_Executer_Executer_Executer_removeModeAbils(this_1) call dispatch_Executer_Executer_Executer_registerRect(this_1, unit_getX(UnitEntity_actor[this_1]), unit_getY(UnitEntity_actor[this_1]), 54.) set Executer_dummy[this_1] = CreateDestructable(Executer_PLATE_DUMMY_ID, unit_getX(UnitEntity_actor[this_1]), unit_getY(UnitEntity_actor[this_1]), 0., 1., 0) call SetDestructableAnimation(Executer_dummy[this_1], "stand alternate") elseif temp == Executer_REACTIVATE_ABIL then set Executer_disabled[this_1] = false call SetUnitVertexColor(UnitEntity_actor[this_1], 0, 128, 0, 255) call UnitRemoveAbility(UnitEntity_actor[this_1], Executer_REACTIVATE_ABIL) elseif temp == BuilderConstants_MAKE_UNIT_VISIBLE_ID then call dispatch_Executer_Executer_Executer_changeVis(this_1, false) elseif temp == BuilderConstants_MAKE_UNIT_INVISIBLE_ID then call dispatch_Executer_Executer_Executer_changeVis(this_1, true) elseif temp == BuilderConstants_MODE_KILLERS_ID then set Executer_canKillerTrigger[this_1] = true set Executer_canEscaperTrigger[this_1] = true call UnitRemoveAbility(UnitEntity_actor[this_1], BuilderConstants_MODE_KILLERS_ID) call UnitAddAbility(UnitEntity_actor[this_1], BuilderConstants_MODE_BOTH_ID) elseif temp == BuilderConstants_MODE_ESCAPERS_ID then set Executer_canKillerTrigger[this_1] = true set Executer_canEscaperTrigger[this_1] = false call UnitRemoveAbility(UnitEntity_actor[this_1], BuilderConstants_MODE_ESCAPERS_ID) call UnitAddAbility(UnitEntity_actor[this_1], BuilderConstants_MODE_KILLERS_ID) elseif temp == BuilderConstants_MODE_BOTH_ID then set Executer_canKillerTrigger[this_1] = false set Executer_canEscaperTrigger[this_1] = true call UnitRemoveAbility(UnitEntity_actor[this_1], BuilderConstants_MODE_BOTH_ID) call UnitAddAbility(UnitEntity_actor[this_1], BuilderConstants_MODE_ESCAPERS_ID) elseif temp == Executer_DOOR_OPEN_ABIL then set Executer_actionMode[this_1] = 1 call dispatch_Executer_Executer_Executer_removeActionAbils(this_1) elseif temp == Executer_DOOR_CLOSE_ABIL then set Executer_actionMode[this_1] = 2 call dispatch_Executer_Executer_Executer_removeActionAbils(this_1) elseif temp == Executer_DOOR_TOGGLE_ABIL then set Executer_actionMode[this_1] = 3 call dispatch_Executer_Executer_Executer_removeActionAbils(this_1) elseif temp == Executer_TERRAIN_CHANGE_ABIL then set Executer_actionMode[this_1] = 6 call dispatch_Executer_Executer_Executer_removeActionAbils(this_1) call dispatch_Executer_Executer_Executer_addTerrainAdjuster(this_1) set Executer_tiletype[this_1] = 808464432 set Executer_nottiletype[this_1] = 808464433 elseif temp == Executer_TERRAIN_WALKABLE_ABIL then set Executer_tiletype[this_1] = 808464432 elseif temp == Executer_TERRAIN_W_O_ABIL then set Executer_nottiletype[this_1] = 808464432 elseif temp == Executer_TERRAIN_UNWALKABLE_ABIL then set Executer_tiletype[this_1] = 808464433 elseif temp == Executer_TERRAIN_UW_O_ABIL then set Executer_nottiletype[this_1] = 808464433 elseif temp == Executer_TERRAIN_ICE_ABIL then set Executer_tiletype[this_1] = BuilderConstants_CONTROLLABLEICE elseif temp == Executer_TERRAIN_REVICE_ABIL then set Executer_tiletype[this_1] = BuilderConstants_REVICE elseif temp == Executer_TERRAIN_I_O_ABIL then set Executer_nottiletype[this_1] = BuilderConstants_CONTROLLABLEICE elseif temp == Executer_TERRAIN_UNICE_ABIL then set Executer_tiletype[this_1] = BuilderConstants_UNCONTROLLABLEICE elseif temp == Executer_TERRAIN_UI_O_ABIL then set Executer_nottiletype[this_1] = BuilderConstants_UNCONTROLLABLEICE elseif temp == Executer_TERRAIN_RI_O_ABIL then set Executer_nottiletype[this_1] = BuilderConstants_REVICE elseif temp == Executer_SPAWN_UNIT_ID then set Executer_actionMode[this_1] = 4 set Executer_actionUnit[this_1] = 1 call dispatch_Executer_Executer_Executer_removeActionAbils(this_1) call UnitAddAbility(UnitEntity_actor[this_1], Executer_TRAIN_BOOK_ABIL) elseif temp == Executer_TRAIN_BK_ABIL then set Executer_actionUnit[this_1] = 4 elseif temp == Executer_TRAIN_SK_ABIL then set Executer_actionUnit[this_1] = 3 elseif temp == Executer_TRAIN_BRK_ABIL then set Executer_actionUnit[this_1] = 6 elseif temp == Executer_TRAIN_SRK_ABIL then set Executer_actionUnit[this_1] = 5 elseif temp == Executer_TRAIN_TANK_ABIL then set Executer_actionUnit[this_1] = 1 elseif temp == Executer_TRAIN_GLAIVE_ABIL then set Executer_actionUnit[this_1] = 2 elseif temp == Executer_TRAIN_POINTER_ABIL then set Executer_actionUnit[this_1] = 7 elseif temp == Executer_TRAIN_KNOCK_ABIL then set Executer_actionUnit[this_1] = 8 elseif temp == Executer_MOVE_UNIT_DIRECT_ABIL then set Executer_moveOrderString[this_1] = "move" if Executer_actionMode[this_1] == 0 then set Executer_actionMode[this_1] = 5 call dispatch_Executer_Executer_Executer_removeActionAbils(this_1) call dispatch_Executer_Executer_Executer_addMoveUnitAdjuster(this_1) endif elseif temp == Executer_MOVE_UNIT_PATROL_ABIL then set Executer_moveOrderString[this_1] = "patrol" elseif temp == Executer_MOVE_UNIT_STOP_ABIL then set Executer_moveOrderString[this_1] = "stop" elseif temp == Executer_MOVE_UNIT_SELECT_ABIL then set target = GetSpellTargetUnit() if unit_getOwner(target) == Entity_owner[this_1] and Entity_getCurrentRegion(unit_getEntity(target)) == Entity_getCurrentRegion(this_1) and ( not (Serializable_typeId[unit_getEntity(target)] == 1161)) then set Executer_unitToMove[this_1] = target endif elseif temp == Executer_TERRAIN_INCREASE_H_ABIL then if not (Executer_horizontalTileSize[this_1] > 3) then set Executer_horizontalTileSize[this_1] = Executer_horizontalTileSize[this_1] + 1 endif elseif temp == Executer_TERRAIN_INCREASE_V_ABIL then if not (Executer_verticalTileSize[this_1] > 3) then set Executer_verticalTileSize[this_1] = Executer_verticalTileSize[this_1] + 1 endif elseif temp == Executer_TERRAIN_DECREASE_H_ABIL then if not (Executer_horizontalTileSize[this_1] < 1) then set Executer_horizontalTileSize[this_1] = Executer_horizontalTileSize[this_1] - 1 endif elseif temp == Executer_TERRAIN_DECREASE_V_ABIL then if not (Executer_verticalTileSize[this_1] < 1) then set Executer_verticalTileSize[this_1] = Executer_verticalTileSize[this_1] - 1 endif endif return false endfunction function dispatch_Executer_Executer_Executer_onCast takes integer this_1 returns boolean local boolean Executer_Executer_onCast_result if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Executer.onCast") else call error("Called Executer.onCast on invalid object.") endif endif set Executer_Executer_onCast_result = Executer_onCast(this_1) return Executer_Executer_onCast_result endfunction function onEvent_add_Executer_Executer takes integer this_1 returns boolean return dispatch_Executer_Executer_Executer_onCast(this_2954[this_1]) endfunction function Faceless_onCast takes integer this_1 returns nothing local integer id = GetSpellAbilityId() local integer temp = id if temp == Faceless_UP_VIS_ID then call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(Faceless_visibleDur[this_1], this_1, 10.) elseif temp == Faceless_DOWN_VIS_ID then call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(Faceless_visibleDur[this_1], this_1, 0.) elseif temp == Faceless_UP_INVIS_ID then call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(Faceless_invisDur[this_1], this_1, 10.) elseif temp == Faceless_DOWN_INVIS_ID then call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(Faceless_invisDur[this_1], this_1, 0.) endif endfunction function dispatch_Faceless_Faceless_Faceless_onCast takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Faceless.onCast") else call error("Called Faceless.onCast on invalid object.") endif endif call Faceless_onCast(this_1) endfunction function onEvent_add_Faceless_Faceless takes integer this_1 returns nothing call dispatch_Faceless_Faceless_Faceless_onCast(this_2981[this_1]) endfunction function Fountain_onCast takes integer this_1 returns nothing local integer id = GetSpellAbilityId() local integer temp = id local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local unit receiver_4 local unit receiver_5 if temp == 1093678903 then call dispatch_UnitEntity_Entity_UnitEntity_setNewActor(this_1, CreateUnit(Entity_owner[this_1], BuilderConstants_FOUNTAIN_HEAL_ID, Entity_pos_x[this_1], Entity_pos_y[this_1], 270.)) call unit_addAbility(UnitEntity_actor[this_1], Basics_LOCUST_ID) set Fountain_cure[this_1] = false set receiver = StaticSetupObject_setup[this_1] call unit_removeAbility(receiver, 1093678903) set receiver_1 = receiver call unit_addAbility(receiver_1, 1093678904) elseif temp == 1093678904 then call dispatch_UnitEntity_Entity_UnitEntity_setNewActor(this_1, CreateUnit(Entity_owner[this_1], BuilderConstants_FOUNTAIN_CURE_ID, Entity_pos_x[this_1], Entity_pos_y[this_1], 270.)) call unit_addAbility(UnitEntity_actor[this_1], Basics_LOCUST_ID) set Fountain_cure[this_1] = true set receiver_2 = StaticSetupObject_setup[this_1] call unit_removeAbility(receiver_2, 1093678904) set receiver_3 = receiver_2 call unit_addAbility(receiver_3, 1093678905) elseif temp == 1093678905 then call dispatch_UnitEntity_Entity_UnitEntity_setNewActor(this_1, CreateUnit(Entity_owner[this_1], BuilderConstants_FOUNTAIN_BOTH_ID, Entity_pos_x[this_1], Entity_pos_y[this_1], 270.)) call unit_addAbility(UnitEntity_actor[this_1], Basics_LOCUST_ID) set Fountain_cure[this_1] = true set receiver_4 = StaticSetupObject_setup[this_1] call unit_removeAbility(receiver_4, 1093678905) set receiver_5 = receiver_4 call unit_addAbility(receiver_5, 1093678903) endif endfunction function dispatch_Fountain_Fountain_Fountain_onCast takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Fountain.onCast") else call error("Called Fountain.onCast on invalid object.") endif endif call Fountain_onCast(this_1) endfunction function onEvent_add_Fountain_Fountain takes integer this_1 returns nothing call dispatch_Fountain_Fountain_Fountain_onCast(this_2992[this_1]) endfunction function onEvent_add_Fountain_Fountain_3837 takes integer this_1 returns nothing call dispatch_Fountain_Fountain_Fountain_onCast(this_2993[this_1]) endfunction function onChangeVisibility takes nothing returns nothing local integer id = GetSpellAbilityId() local unit caster local integer dta local integer data_1 local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local unit receiver_4 local unit receiver_5 local unit receiver_6 local unit receiver_7 local unit receiver_8 local unit receiver_9 local unit receiver_10 local unit receiver_11 local unit receiver_12 local unit receiver_13 local unit receiver_14 local integer instanceOfTemp if id == BuilderConstants_MAKE_UNIT_VISIBLE_ID or id == BuilderConstants_MAKE_UNIT_INVISIBLE_ID then set caster = GetSpellAbilityUnit() set dta = unit_getEntity(caster) set instanceOfTemp = Serializable_typeId[dta] if instanceOfTemp >= 1171 and instanceOfTemp <= 1191 then set data_1 = dta if id == BuilderConstants_MAKE_UNIT_VISIBLE_ID then set receiver = UnitEntity_actor[data_1] call unit_removeAbility(receiver, Basics_GHOST_INVIS_ID) set receiver_1 = receiver call unit_addAbility(receiver_1, Basics_GHOST_VIS_ID) set receiver_2 = SetupObject_setup[data_1] call unit_removeAbility(receiver_2, BuilderConstants_MAKE_UNIT_VISIBLE_ID) set receiver_3 = receiver_2 call unit_addAbility(receiver_3, BuilderConstants_MAKE_UNIT_INVISIBLE_ID) elseif id == BuilderConstants_MAKE_UNIT_INVISIBLE_ID then set receiver_4 = UnitEntity_actor[data_1] call unit_removeAbility(receiver_4, Basics_GHOST_VIS_ID) set receiver_5 = receiver_4 call unit_addAbility(receiver_5, Basics_GHOST_INVIS_ID) set receiver_6 = SetupObject_setup[data_1] call unit_removeAbility(receiver_6, BuilderConstants_MAKE_UNIT_INVISIBLE_ID) set receiver_7 = receiver_6 call unit_addAbility(receiver_7, BuilderConstants_MAKE_UNIT_VISIBLE_ID) endif elseif id == BuilderConstants_MAKE_UNIT_VISIBLE_ID then set receiver_8 = caster call unit_removeAbility(receiver_8, Basics_GHOST_INVIS_ID) set receiver_9 = receiver_8 call unit_addAbility(receiver_9, Basics_GHOST_VIS_ID) set receiver_10 = caster call unit_removeAbility(receiver_10, BuilderConstants_MAKE_UNIT_VISIBLE_ID) set receiver_11 = receiver_10 call unit_addAbility(receiver_11, BuilderConstants_MAKE_UNIT_INVISIBLE_ID) elseif id == BuilderConstants_MAKE_UNIT_INVISIBLE_ID then if unit_hasAbility(caster, Basics_GHOST_VIS_ID) then call unit_removeAbility(caster, Basics_GHOST_VIS_ID) endif set receiver_12 = caster call unit_addAbility(receiver_12, Basics_GHOST_INVIS_ID) set receiver_13 = receiver_12 call unit_removeAbility(receiver_13, BuilderConstants_MAKE_UNIT_INVISIBLE_ID) set receiver_14 = receiver_13 call unit_addAbility(receiver_14, BuilderConstants_MAKE_UNIT_VISIBLE_ID) endif endif endfunction function onEvent_add_Invisible takes integer this_1 returns nothing call onChangeVisibility() endfunction function ItemEntity_setNewActor takes integer this_1, item i returns nothing if i == null or ( not item_isAlive(i)) or item_getEntity(i) != 0 then call error("invalid actor replacement") endif call item_setEntity(ItemEntity_actor[this_1], 0) call item_remove(ItemEntity_actor[this_1]) set ItemEntity_actor[this_1] = i call item_setEntity(ItemEntity_actor[this_1], this_1) call item_setPos(ItemEntity_actor[this_1], vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y) endfunction function dispatch_ItemEntity_Entity_ItemEntity_setNewActor takes integer this_1, item i returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling ItemEntity.setNewActor") else call error("Called ItemEntity.setNewActor on invalid object.") endif endif call ItemEntity_setNewActor(this_1, i) endfunction function Key_recolor takes integer this_1 returns nothing call dispatch_ItemEntity_Entity_ItemEntity_setNewActor(this_1, createItem_2351(Key_keyIds[Key_col[this_1]], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])) if Key_returnSfx[this_1] != null then call effect_destr(Key_returnSfx[this_1]) set Key_returnSfx[this_1] = addEffect_1563("XTex" + int_toString(Key_col[this_1]) + ".mdx", Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) endif endfunction function dispatch_Key_Key_Key_recolor takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Key.recolor") else call error("Called Key.recolor on invalid object.") endif endif call Key_recolor(this_1) endfunction function Key_setFollow takes integer this_1, boolean flag returns nothing if flag and Key_returnSfx[this_1] != null then call effect_destr(Key_returnSfx[this_1]) set Key_returnSfx[this_1] = null elseif ( not flag) and Key_returnSfx[this_1] == null then set Key_returnSfx[this_1] = addEffect_1563("XTex" + int_toString(Key_col[this_1]) + ".mdx", Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) endif set Key_followWalkable[this_1] = flag endfunction function dispatch_Key_Key_Key_setFollow takes integer this_1, boolean flag returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Key.setFollow") else call error("Called Key.setFollow on invalid object.") endif endif call Key_setFollow(this_1, flag) endfunction function dispatch_IterableMap_HashMap_IterableMap_flush takes integer this_1 returns nothing if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling IterableMap.flush") else call error("Called IterableMap.flush on invalid object.") endif endif call IterableMap_flush(this_1) endfunction function Key_setInfinite takes integer this_1, boolean flag returns nothing if ( not flag) and Key_infinite[this_1] then call effect_destr(Key_infiniteEff[this_1]) set Key_infiniteEff[this_1] = null call dispatch_Key_Key_Key_clearKeys(this_1) call dispatch_IterableMap_HashMap_IterableMap_flush(Key_effectMap[this_1]) elseif flag and ( not Key_infinite[this_1]) then set Key_infiniteEff[this_1] = addEffect(Abilities_generalAuraTarget, item_getPos(ItemEntity_actor[this_1]), item_getPos_return_y) endif set Key_infinite[this_1] = flag endfunction function dispatch_Key_Key_Key_setInfinite takes integer this_1, boolean flag returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Key.setInfinite") else call error("Called Key.setInfinite on invalid object.") endif endif call Key_setInfinite(this_1, flag) endfunction function Key_onCast takes integer this_1 returns nothing local integer id = GetSpellAbilityId() local integer temp = id local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local integer i if temp == Key_DYN_ID then call dispatch_Key_Key_Key_setInfinite(this_1, false) call dispatch_Key_Key_Key_setFollow(this_1, false) set receiver = UnitEntity_actor[ItemObject_setup[this_1]] call unit_removeAbility(receiver, Key_DYN_ID) set receiver_1 = receiver call unit_addAbility(receiver_1, Key_STATIC_ID) elseif temp == Key_STATIC_ID then call dispatch_Key_Key_Key_setInfinite(this_1, false) call dispatch_Key_Key_Key_setFollow(this_1, true) set receiver_2 = UnitEntity_actor[ItemObject_setup[this_1]] call unit_removeAbility(receiver_2, Key_STATIC_ID) set receiver_3 = receiver_2 call unit_addAbility(receiver_3, Key_DYN_ID) elseif temp == Key_INFINITE_ID then call dispatch_Key_Key_Key_setInfinite(this_1, not Key_infinite[this_1]) call dispatch_Key_Key_Key_setFollow(this_1, false) endif set i = 0 loop exitwhen i > 8 if BuilderConstants_colorSpells[i] == id then set Key_col[this_1] = i exitwhen true endif set i = i + 1 endloop call dispatch_Key_Key_Key_recolor(this_1) endfunction function dispatch_Key_Key_Key_onCast takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Key.onCast") else call error("Called Key.onCast on invalid object.") endif endif call Key_onCast(this_1) endfunction function onEvent_add_Key_Key takes integer this_1 returns nothing call dispatch_Key_Key_Key_onCast(this_2966[this_1]) endfunction function Knockbacker_onCast takes integer this_1 returns boolean local integer id = GetSpellAbilityId() local integer temp = id if temp == Knockbacker_KNOCK_INC_ID then call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(Knockbacker_kforce[this_1], this_1, 75.) elseif temp == Knockbacker_KNOCK_DEC_ID then call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(Knockbacker_kforce[this_1], this_1, -75.) elseif temp == Knockbacker_DMG_INC_ID then call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(Knockbacker_damage[this_1], this_1, 500.) elseif temp == Knockbacker_DMG_DEC_ID then call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(Knockbacker_damage[this_1], this_1, 0.) endif return false endfunction function dispatch_Knockbacker_Knockbacker_Knockbacker_onCast takes integer this_1 returns boolean local boolean Knockbacker_Knockbacker_onCast_result if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Knockbacker.onCast") else call error("Called Knockbacker.onCast on invalid object.") endif endif set Knockbacker_Knockbacker_onCast_result = Knockbacker_onCast(this_1) return Knockbacker_Knockbacker_onCast_result endfunction function onEvent_add_Knockbacker_Knockbacker takes integer this_1 returns boolean return dispatch_Knockbacker_Knockbacker_Knockbacker_onCast(this_2982[this_1]) endfunction function onEvent_add_Knockbacker_Knockbacker_3841 takes integer this_1 returns boolean return dispatch_Knockbacker_Knockbacker_Knockbacker_onCast(this_2983[this_1]) endfunction function alloc_ShipProjectile takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1146 else call error("Out of memory: Could not create ShipProjectile.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1146 endif return this_1 endfunction function ShipProjectile_init takes integer this_1 returns nothing endfunction function construct_ShipProjectile takes integer this_1, integer ship returns nothing local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 call construct_Projectile(this_1, vec2_withZ(vec2_polarOffset(vec3_toVec2(dispatch_UnitEntity_Entity_UnitEntity_getPos(ship), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z), vec3_toVec2_return_y, unit_getFacingAngle(UnitEntity_actor[ship]), 16.), vec2_polarOffset_return_y, 64.), vec2_withZ_return_y, vec2_withZ_return_z, 16., Entity_owner[ship], unit_getFacingAngle(UnitEntity_actor[ship]), Abilities_faerieDragonMissile) call ShipProjectile_init(this_1) call dispatch_Fx2_Fx2_Fx2_setTintFromPlayer(Fx2Entity_fx[this_1], Entity_owner[this_1]) call dispatch_Projectile_Projectile_Projectile_setSpeed(this_1, 8.) call effect_setScale(Fx2_eff[Fx2Entity_fx[this_1]], 0.75) set tuple_temp = vec3_op_plus(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], Entity_vel_x[ship], Entity_vel_y[ship], Entity_vel_z[ship]) set tuple_temp_1 = vec3_op_plus_return_y set tuple_temp_2 = vec3_op_plus_return_z set Entity_vel_x[this_1] = tuple_temp set Entity_vel_y[this_1] = tuple_temp_1 set Entity_vel_z[this_1] = tuple_temp_2 set ShipProjectile_ship[this_1] = ship endfunction function new_ShipProjectile takes integer ship returns integer local integer this_1 = alloc_ShipProjectile() call construct_ShipProjectile(this_1, ship) return this_1 endfunction function Spaceship_shoot takes integer this_1 returns nothing if Entity_DupletListModule_active[this_1] and dispatch_LinkedList_LinkedList_LinkedList_size(Spaceship_projectiles[this_1]) < 4 then call unit_setAnimation(UnitEntity_actor[this_1], "attack") call dispatch_LinkedList_LinkedList_LinkedList_add_1(Spaceship_projectiles[this_1], new_ShipProjectile(this_1)) endif endfunction function dispatch_Spaceship_MGSpacey_Spaceship_shoot takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Spaceship.shoot") else call error("Called Spaceship.shoot on invalid object.") endif endif call Spaceship_shoot(this_1) endfunction function onEvent_add_MGSpacey_MGSpacey takes integer this_1 returns nothing local integer iterator = LinkedList_iterator(MGSpacey_ships) local integer ship loop exitwhen not LLIterator_hasNext(iterator) set ship = LLIterator_next(iterator) if Entity_owner[ship] == GetTriggerPlayer() then call dispatch_Spaceship_MGSpacey_Spaceship_shoot(ship) exitwhen true endif endloop call LLIterator_close(iterator) endfunction function unit_getMoveSpeed takes unit this_1 returns real return GetUnitMoveSpeed(this_1) endfunction function onChangeSpeed takes nothing returns nothing local integer id = GetSpellAbilityId() local unit caster = GetSpellAbilityUnit() local integer data_1 = unit_getEntity(caster) local integer ddata local real speed local integer instanceOfTemp local boolean andLeft if id == MoveSpeed_INC_SPEED_ID or id == MoveSpeed_DEC_SPEED_ID then set instanceOfTemp = Serializable_typeId[data_1] set andLeft = instanceOfTemp >= 1171 and instanceOfTemp <= 1191 else set andLeft = false endif if andLeft then set ddata = data_1 set speed = real_round(unit_getMoveSpeed(SetupObject_setup[ddata]) / 25.) * 25. if id == MoveSpeed_INC_SPEED_ID then if speed <= 500. then call unit_setMoveSpeed(SetupObject_setup[ddata], speed + 25.) call unit_setMoveSpeed(UnitEntity_actor[ddata], speed + 25.) call createFText_2344(dispatch_UnitEntity_Entity_UnitEntity_getPos(data_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, 0., 0.05, real_toString(speed + 25.), 10., 2., 255, 255, 255, 0, Entity_owner[ddata]) endif elseif id == MoveSpeed_DEC_SPEED_ID then if speed > 50.5 then call unit_setMoveSpeed(SetupObject_setup[ddata], speed - 25.) call unit_setMoveSpeed(UnitEntity_actor[ddata], speed - 25.) call createFText_2344(dispatch_UnitEntity_Entity_UnitEntity_getPos(data_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, 0., 0.05, real_toString(speed - 25.), 10., 2., 255, 255, 255, 0, Entity_owner[ddata]) endif endif endif endfunction function onEvent_add_MoveSpeed takes integer this_1 returns nothing call onChangeSpeed() endfunction function alloc_ForGroupCallback_forUnitsSelected_add_Pointer takes nothing returns integer local integer this_1 if ForGroupCallback_firstFree == 0 then if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1 set this_1 = ForGroupCallback_maxIndex set ForGroupCallback_typeId[this_1] = 884 else call error("Out of memory: Could not create ForGroupCallback_forUnitsSelected_add_Pointer.") set this_1 = 0 endif else set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1 set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree] set ForGroupCallback_typeId[this_1] = 884 endif return this_1 endfunction function forUnitsSelected takes player p, integer c returns nothing call pushCallback(c) call GroupEnumUnitsSelected(ClosureForGroups_DUMMY_GROUP, p, ClosureForGroups_filter) call popCallback() endfunction function onEvent_add_Pointer takes integer this_1 returns nothing local string text = GetEventPlayerChatString() local integer tokens_1 = string_split(text, " ") local string cmd = stringFromIndex(dispatch_LinkedList_LinkedList_LinkedList_dequeue(tokens_1)) local real angle_radians_2 local integer clVar local player temp local real tuple_temp local real tuple_temp_1 if cmd == "-setangle" or cmd == "-sa" then set tuple_temp = real_fromDeg(string_toReal(stringFromIndex(dispatch_LinkedList_LinkedList_LinkedList_dequeue(tokens_1)))) set angle_radians_2 = tuple_temp set temp = GetTriggerPlayer() set clVar = alloc_ForGroupCallback_forUnitsSelected_add_Pointer() set tuple_temp_1 = angle_radians_2 set angle_radians[clVar] = tuple_temp_1 call forUnitsSelected(temp, clVar) endif endfunction function Pointer_onCast takes integer this_1 returns nothing local integer id = GetSpellAbilityId() local integer temp = id local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local real tuple_temp if temp == Pointer_INC_ID then if Pointer_turnspeed[this_1] < 6. then set Pointer_turnspeed[this_1] = Pointer_turnspeed[this_1] + 0.5 call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "Turnspeed: " + R2SW(Pointer_turnspeed[this_1], 1, 2), 10., 2., Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, Entity_owner[this_1]) else call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "Maximum Speed", 10., 2., Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, Entity_owner[this_1]) endif elseif temp == Pointer_DEC_ID then if Pointer_turnspeed[this_1] > ( - 6.) then set Pointer_turnspeed[this_1] = Pointer_turnspeed[this_1] - 0.5 call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "Turnspeed: " + R2SW(Pointer_turnspeed[this_1], 1, 2), 10., 2., Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, Entity_owner[this_1]) else call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "Minimum Speed", 10., 2., Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, Entity_owner[this_1]) endif elseif temp == Pointer_START_ID then set Pointer_turning[this_1] = true set tuple_temp = unit_getFacingAngle(UnitEntity_actor[this_1]) set Pointer_angl_radians[this_1] = tuple_temp call dispatch_Entity_Entity_Entity_DupletListModule_activate(this_1) set receiver = SetupObject_setup[this_1] call unit_removeAbility(receiver, Pointer_START_ID) set receiver_1 = receiver call unit_addAbility(receiver_1, Pointer_STOP_ID) elseif temp == Pointer_STOP_ID then set Pointer_turning[this_1] = false call dispatch_Entity_Entity_Entity_DupletListModule_deactivate(this_1) set receiver_2 = SetupObject_setup[this_1] call unit_removeAbility(receiver_2, Pointer_STOP_ID) set receiver_3 = receiver_2 call unit_addAbility(receiver_3, Pointer_START_ID) endif endfunction function dispatch_Pointer_Pointer_Pointer_onCast takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Pointer.onCast") else call error("Called Pointer.onCast on invalid object.") endif endif call Pointer_onCast(this_1) endfunction function onEvent_add_Pointer_Pointer takes integer this_1 returns nothing call dispatch_Pointer_Pointer_Pointer_onCast(this_2984[this_1]) endfunction function ConfigValue_setVal takes integer this_1, real wval returns nothing set ConfigValue_value[this_1] = wval endfunction function dispatch_ConfigValue_ConfigValue_ConfigValue_setVal takes integer this_1, real wval returns nothing if ConfigValue_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling ConfigValue.setVal") else call error("Called ConfigValue.setVal on invalid object.") endif endif call ConfigValue_setVal(this_1, wval) endfunction function alloc_Link takes nothing returns integer local integer this_1 if Link_firstFree == 0 then if Link_maxIndex < JASS_MAX_ARRAY_SIZE then set Link_maxIndex = Link_maxIndex + 1 set this_1 = Link_maxIndex set Link_typeId[this_1] = 997 else call error("Out of memory: Could not create Link.") set this_1 = 0 endif else set Link_firstFree = Link_firstFree - 1 set this_1 = Link_nextFree[Link_firstFree] set Link_typeId[this_1] = 997 endif return this_1 endfunction function Link_init takes integer this_1 returns nothing set Link_next[this_1] = 0 set Link_prev[this_1] = 0 endfunction function construct_Link takes integer this_1, integer parent, integer target, lightning sfx, integer ltype returns nothing call Link_init(this_1) set Link_parent[this_1] = parent set Link_target[this_1] = target set Link_sfx[this_1] = sfx set Link_ltype[this_1] = ltype if Powernode_firstLink[parent] != 0 then set Link_next[this_1] = Powernode_firstLink[parent] set Link_prev[Powernode_firstLink[parent]] = this_1 endif set Powernode_firstLink[parent] = this_1 endfunction function new_Link takes integer parent, integer target, lightning sfx, integer ltype returns integer local integer this_1 = alloc_Link() call construct_Link(this_1, parent, target, sfx, ltype) return this_1 endfunction function Powernode_link takes integer this_1, integer p, integer ltype returns nothing local integer temp = ltype if temp == 0 then call new_Link(this_1, p, AddLightning(Powernode_EFFECT_STRING, false, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_x[p], Entity_pos_y[p]), ltype) elseif temp == 1 then call new_Link(this_1, p, AddLightning(Powernode_EFFECT_BOUNCE_STRING, false, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_x[p], Entity_pos_y[p]), ltype) elseif temp == 4 then call new_Link(this_1, p, AddLightning(Powernode_EFFECT_DIODE_STRING, false, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_x[p], Entity_pos_y[p]), ltype) elseif temp == 3 then call new_Link(this_1, p, AddLightning(Powernode_EFFECT_TETHER_BOTH_STRING, false, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_x[p], Entity_pos_y[p]), ltype) elseif temp == 2 then call new_Link(this_1, p, AddLightning(Powernode_EFFECT_TETHER_AIR_STRING, false, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_x[p], Entity_pos_y[p]), ltype) else call new_Link(this_1, p, AddLightning(Powernode_EFFECT_ORB_STRING, false, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_x[p], Entity_pos_y[p]), ltype) endif endfunction function dispatch_Powernode_Powernode_Powernode_link takes integer this_1, integer p, integer ltype returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Powernode.link") else call error("Called Powernode.link on invalid object.") endif endif call Powernode_link(this_1, p, ltype) endfunction function SetupObject_setEnabled takes integer this_1, boolean flag returns nothing local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 if flag and ( not SetupObject_enabled[this_1]) then set SetupObject_enabled[this_1] = true set receiver = SetupObject_setup[this_1] call unit_removeAbility(receiver, BuilderConstants_TURN_ON_ID) set receiver_1 = receiver call unit_addAbility(receiver_1, BuilderConstants_TURN_OFF_ID) elseif SetupObject_enabled[this_1] then set SetupObject_enabled[this_1] = false set receiver_2 = SetupObject_setup[this_1] call unit_removeAbility(receiver_2, BuilderConstants_TURN_OFF_ID) set receiver_3 = receiver_2 call unit_addAbility(receiver_3, BuilderConstants_TURN_ON_ID) endif endfunction function boolean_toInt takes boolean this_1 returns integer local integer cond_result if this_1 then set cond_result = 1 else set cond_result = 0 endif return cond_result endfunction function int_toReal takes integer this_1 returns real return this_1 * 1. endfunction function Powernode_setEnabled takes integer this_1, boolean b returns nothing local real v local integer l call SetupObject_setEnabled(this_1, b) set v = int_toReal(boolean_toInt(b)) set l = Powernode_firstLink[this_1] loop exitwhen not (l != 0) call SetLightningColor(Link_sfx[l], v, v, v, v) set l = Link_next[l] endloop endfunction function dispatch_Powernode_Powernode_Powernode_setEnabled takes integer this_1, boolean b returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Powernode.setEnabled") else call error("Called Powernode.setEnabled on invalid object.") endif endif call Powernode_setEnabled(this_1, b) endfunction function Powernode_onCast takes integer this_1 returns nothing local integer id = GetSpellAbilityId() local unit target = GetSpellTargetUnit() local integer node = unit_getEntity(GetTriggerUnit()) local integer data_1 local integer pdata local boolean isNew local integer l local integer link local integer link_1 if id == Powernode_LINK_KILL_ID or id == Powernode_LINK_B_GROUND_ID or id == Powernode_LINK_DIODE_GROUND_ID or id == Powernode_LINK_B_AIR_ID or id == Powernode_LINK_ORB_ID or id == Powernode_LINK_B_BOTH_ID then set data_1 = unit_getEntity(target) if Serializable_typeId[data_1] == 1188 then set pdata = data_1 set isNew = true set l = Powernode_firstLink[node] loop exitwhen not (l != 0) if Link_target[l] == pdata then call dispatch_Link_destroyLink(l) set isNew = false exitwhen true endif set l = Link_next[l] endloop if isNew then if id == Powernode_LINK_KILL_ID then call dispatch_Powernode_Powernode_Powernode_link(node, data_1, 0) elseif id == Powernode_LINK_B_GROUND_ID then call dispatch_Powernode_Powernode_Powernode_link(node, data_1, 1) elseif id == Powernode_LINK_B_BOTH_ID then call dispatch_Powernode_Powernode_Powernode_link(node, data_1, 3) elseif id == Powernode_LINK_DIODE_GROUND_ID then call dispatch_Powernode_Powernode_Powernode_link(node, data_1, 4) elseif id == Powernode_LINK_ORB_ID then call dispatch_Powernode_Powernode_Powernode_link(node, data_1, 5) elseif id == Powernode_LINK_B_AIR_ID then call dispatch_Powernode_Powernode_Powernode_link(node, data_1, 2) endif endif endif elseif id == Powernode_INCREASE_BOUNCE_ID then call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(Powernode_bounciness[node], node, 8.) set link = Powernode_firstLink[node] loop exitwhen not (link != 0) if Link_target[link] != this_1 then call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Powernode_bounciness[Link_target[link]], dispatch_ConfigValue_ConfigValue_ConfigValue_get(Powernode_bounciness[node])) endif set link = Link_next[link] endloop elseif id == Powernode_DECREASE_BOUNCE_ID then call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(Powernode_bounciness[node], node, 0.) set link_1 = Powernode_firstLink[node] loop exitwhen not (link_1 != 0) if Link_target[link_1] != this_1 then call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Powernode_bounciness[Link_target[link_1]], dispatch_ConfigValue_ConfigValue_ConfigValue_get(Powernode_bounciness[node])) endif set link_1 = Link_next[link_1] endloop elseif id == BuilderConstants_TURN_ON_ID then call dispatch_Powernode_Powernode_Powernode_setEnabled(this_1, true) call unit_abortOrder(SetupObject_setup[this_1]) elseif id == BuilderConstants_TURN_OFF_ID then call dispatch_Powernode_Powernode_Powernode_setEnabled(this_1, false) call unit_abortOrder(SetupObject_setup[this_1]) endif endfunction function dispatch_Powernode_Powernode_Powernode_onCast takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Powernode.onCast") else call error("Called Powernode.onCast on invalid object.") endif endif call Powernode_onCast(this_1) endfunction function onEvent_add_Powernode_Powernode takes integer this_1 returns nothing call dispatch_Powernode_Powernode_Powernode_onCast(this_2994[this_1]) endfunction function flashEffect_3282 takes string path, real pos_x_1, real pos_y_1, real scale, real yaw_radians returns nothing local effect receiver = addEffect(path, pos_x_1, pos_y_1) local effect receiver_1 local effect receiver_2 call effect_setScale(receiver, scale) set receiver_1 = receiver call effect_setYaw(receiver_1, yaw_radians) set receiver_2 = receiver_1 call effect_destr(receiver_2) endfunction function flashEffect_3280 takes string path, real pos_x_1, real pos_y_1 returns nothing call flashEffect_3282(path, pos_x_1, pos_y_1, 1.0, real_fromDeg(GetRandomReal(0., 359.))) endfunction function onRemoveObject takes nothing returns nothing local integer id = GetSpellAbilityId() local unit u_1 local integer data_1 local unit receiver if id == BuilderConstants_REMOVE_OBJECT_ID then set u_1 = GetSpellAbilityUnit() set data_1 = unit_getEntity(u_1) if data_1 != 0 and ( not Entity_done[data_1]) then call flashEffect_3280(Abilities_aIamTarget, unit_getPos(u_1), unit_getPos_return_y) call cyc_RevivePoint_terminate(18, data_1) set receiver = u_1 call unit_removeAbility(receiver, BuilderConstants_REMOVE_OBJECT_ID) endif endif endfunction function onEvent_add_Remove takes integer this_1 returns nothing call onRemoveObject() endfunction function EscaperDefinition_LinkedListModule_getPrev takes integer this_1 returns integer if EscaperDefinition_LinkedListModule_prev[this_1] == 0 then return EscaperDefinition_LinkedListModule_last endif return EscaperDefinition_LinkedListModule_prev[this_1] endfunction function dispatch_EscaperDefinition_PickSystem_EscaperDefinition_LinkedListModule_getPrev takes integer this_1 returns integer local integer PickSystem_EscaperDefinition_LinkedListModule_getPrev_result if EscaperDefinition_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling EscaperDefinition.getPrev") else call error("Called EscaperDefinition.getPrev on invalid object.") endif endif set PickSystem_EscaperDefinition_LinkedListModule_getPrev_result = EscaperDefinition_LinkedListModule_getPrev(this_1) return PickSystem_EscaperDefinition_LinkedListModule_getPrev_result endfunction function create_setCallback_PickSystem takes integer this_1, integer pd_1 returns nothing set PlayerData_escaper[pd_1] = new_HolyEscaper(vec2_withZ(Escaper_currentRevivepoint_x, Escaper_currentRevivepoint_y, 100.), vec2_withZ_return_y, vec2_withZ_return_z, PlayerData_p[pd_1]) endfunction function create_setCallback_PickSystem_2356 takes integer this_1, integer pd_1 returns nothing set PlayerData_escaper[pd_1] = new_StrongEscaper(vec2_withZ(Escaper_currentRevivepoint_x, Escaper_currentRevivepoint_y, 100.), vec2_withZ_return_y, vec2_withZ_return_z, PlayerData_p[pd_1]) endfunction function create_setCallback_PickSystem_2357 takes integer this_1, integer pd_1 returns nothing set PlayerData_escaper[pd_1] = new_FastEscaper(vec2_withZ(Escaper_currentRevivepoint_x, Escaper_currentRevivepoint_y, 100.), vec2_withZ_return_y, vec2_withZ_return_z, PlayerData_p[pd_1]) endfunction function create_setCallback_PickSystem_2358 takes integer this_1, integer pd_1 returns nothing set PlayerData_escaper[pd_1] = new_IceEscaper(vec2_withZ(Escaper_currentRevivepoint_x, Escaper_currentRevivepoint_y, 100.), vec2_withZ_return_y, vec2_withZ_return_z, PlayerData_p[pd_1]) endfunction function alloc_BlindEscaper takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1163 else call error("Out of memory: Could not create BlindEscaper.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1163 endif return this_1 endfunction function BlindEscaper_init takes integer this_1 returns nothing endfunction function construct_BlindEscaper takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, player owner returns nothing call construct_Escaper(this_1, pos_x_1, pos_y_1, pos_z, owner, BuilderConstants_ESC_BLIND_ID) call BlindEscaper_init(this_1) endfunction function new_BlindEscaper takes real pos_x_1, real pos_y_1, real pos_z, player owner returns integer local integer this_1 = alloc_BlindEscaper() call construct_BlindEscaper(this_1, pos_x_1, pos_y_1, pos_z, owner) return this_1 endfunction function create_setCallback_PickSystem_2359 takes integer this_1, integer pd_1 returns nothing set PlayerData_escaper[pd_1] = new_BlindEscaper(vec2_withZ(Escaper_currentRevivepoint_x, Escaper_currentRevivepoint_y, 100.), vec2_withZ_return_y, vec2_withZ_return_z, PlayerData_p[pd_1]) endfunction function dispatch_EscaperClsr_PickSystem_EscaperClsr_create takes integer this_1, integer pd_1 returns nothing if EscaperClsr_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling EscaperClsr.create") else call error("Called EscaperClsr.create on invalid object.") endif endif if EscaperClsr_typeId[this_1] <= 748 then if EscaperClsr_typeId[this_1] <= 747 then if EscaperClsr_typeId[this_1] <= 746 then call create_setCallback_PickSystem(this_1, pd_1) else call create_setCallback_PickSystem_2356(this_1, pd_1) endif else call create_setCallback_PickSystem_2357(this_1, pd_1) endif elseif EscaperClsr_typeId[this_1] <= 749 then call create_setCallback_PickSystem_2358(this_1, pd_1) else call create_setCallback_PickSystem_2359(this_1, pd_1) endif endfunction function player_selectSingle takes player this_1, unit u_1 returns nothing if Player_localPlayer == this_1 then call ClearSelection() call SelectUnit(u_1, true) endif endfunction function EscaperDefinition_createFor takes integer this_1, integer pd_1 returns nothing local unit receiver local unit receiver_1 call dispatch_EscaperClsr_PickSystem_EscaperClsr_create(EscaperDefinition_cb[this_1], pd_1) call ResetToGameCameraForPlayer(PlayerData_p[pd_1], 0.5) if isBuilderPlayer(PlayerData_p[pd_1]) then set receiver = UnitEntity_actor[PlayerData_escaper[pd_1]] call unit_addAbility(receiver, PickSystem_BLINK_ID) set receiver_1 = receiver call unit_addAbility(receiver_1, RevivePointModifier_CREATE_REV_MOD_ID) set Escaper_selectatrevive[PlayerData_escaper[pd_1]] = false set Escaper_camOnRevive[PlayerData_escaper[pd_1]] = false call PanCameraToTimedForPlayer(PlayerData_p[pd_1], unit_getX(UnitEntity_actor[PlayerData_builder[pd_1]]), unit_getY(UnitEntity_actor[PlayerData_builder[pd_1]]), 0.) call player_selectSingle(PlayerData_p[pd_1], UnitEntity_actor[PlayerData_builder[pd_1]]) call printTimedToPlayer("\tYou are a |cff528CDEBuilder|r!", 20., PlayerData_p[pd_1]) else call PanCameraToTimedForPlayer(PlayerData_p[pd_1], PickSystem_START_x, PickSystem_START_y, 0.) call player_selectSingle(PlayerData_p[pd_1], UnitEntity_actor[PlayerData_escaper[pd_1]]) call printTimedToPlayer("\tYou are an |cff528CDEEscaper|r!", 20., PlayerData_p[pd_1]) endif set PlayerData_icon[pd_1] = EscaperDefinition_mbicon[this_1] endfunction function dispatch_EscaperDefinition_PickSystem_EscaperDefinition_createFor takes integer this_1, integer pd_1 returns nothing if EscaperDefinition_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling EscaperDefinition.createFor") else call error("Called EscaperDefinition.createFor on invalid object.") endif endif call EscaperDefinition_createFor(this_1, pd_1) endfunction function EscaperDefinition_hide takes integer this_1, integer pd_1 returns nothing local texttag receiver if Player_localPlayer == PlayerData_p[pd_1] then set receiver = FText_tt[EscaperDefinition_nameTt[this_1]] call texttag_setVisibility(receiver, false) call unit_setVertexColor_4202(EscaperDefinition_escaper[this_1], Colors_COLOR_BLACK_red, Colors_COLOR_BLACK_green, Colors_COLOR_BLACK_blue, Colors_COLOR_BLACK_alpha) endif endfunction function dispatch_EscaperDefinition_PickSystem_EscaperDefinition_hide takes integer this_1, integer pd_1 returns nothing if EscaperDefinition_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling EscaperDefinition.hide") else call error("Called EscaperDefinition.hide on invalid object.") endif endif call EscaperDefinition_hide(this_1, pd_1) endfunction function dispatch_Selector_destroySelector takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Selector.Selector") else call error("Called Selector.Selector on invalid object.") endif endif call destroySelector(this_1) endfunction function Selector_onCast takes integer this_1 returns nothing local integer id = GetSpellAbilityId() local integer pd_1 = PlayerData_pData[player_getId(unit_getOwner(UnitEntity_actor[this_1]))] local integer temp = id if temp == PickSystem_PREV_ID then call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_hide(PickSystem_currentView[PlayerData_id[pd_1]], pd_1) set PickSystem_currentView[PlayerData_id[pd_1]] = dispatch_EscaperDefinition_PickSystem_EscaperDefinition_LinkedListModule_getPrev(PickSystem_currentView[PlayerData_id[pd_1]]) call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_showTo(PickSystem_currentView[PlayerData_id[pd_1]], pd_1) elseif temp == PickSystem_NEXT_ID then call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_hide(PickSystem_currentView[PlayerData_id[pd_1]], pd_1) set PickSystem_currentView[PlayerData_id[pd_1]] = dispatch_EscaperDefinition_PickSystem_EscaperDefinition_LinkedListModule_getNext(PickSystem_currentView[PlayerData_id[pd_1]]) call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_showTo(PickSystem_currentView[PlayerData_id[pd_1]], pd_1) elseif temp == PickSystem_PICK_ID then call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_hide(PickSystem_currentView[PlayerData_id[pd_1]], pd_1) call printTimedToPlayer("|cffE68C19Welcome to |cff086BC5Escape Builder Reloaded|cffE68C19!\n\t|r", 20., PlayerData_p[pd_1]) call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_createFor(PickSystem_currentView[PlayerData_id[pd_1]], pd_1) call dispatch_Selector_destroySelector(this_1) endif endfunction function dispatch_Selector_PickSystem_Selector_onCast takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Selector.onCast") else call error("Called Selector.onCast on invalid object.") endif endif call Selector_onCast(this_1) endfunction function onEvent_add_Selector_PickSystem takes integer this_1 returns nothing call dispatch_Selector_PickSystem_Selector_onCast(this_2940[this_1]) endfunction function alloc_ForGroupCallback_forUnitsInRect_SetupBox_SetupBox takes nothing returns integer local integer this_1 if ForGroupCallback_firstFree == 0 then if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1 set this_1 = ForGroupCallback_maxIndex set ForGroupCallback_typeId[this_1] = 876 else call error("Out of memory: Could not create ForGroupCallback_forUnitsInRect_SetupBox_SetupBox.") set this_1 = 0 endif else set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1 set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree] set ForGroupCallback_typeId[this_1] = 876 endif return this_1 endfunction function Builder_setBossMenu takes integer this_1 returns nothing call unit_addAbility(UnitEntity_actor[this_1], BuilderConstants_MENU_BOSS) endfunction function dispatch_Builder_Builder_Builder_setBossMenu takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Builder.setBossMenu") else call error("Called Builder.setBossMenu on invalid object.") endif endif call Builder_setBossMenu(this_1) endfunction function RegionData_allow takes integer this_1, player p returns nothing call dispatch_HashMap_HashMap_HashMap_put(RegionData_permissions[this_1], playerToIndex(p), 1) endfunction function dispatch_RegionData_RegionData_RegionData_allow takes integer this_1, player p returns nothing if RegionData_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling RegionData.allow") else call error("Called RegionData.allow on invalid object.") endif endif call RegionData_allow(this_1, p) endfunction function RegionData_disallow takes integer this_1, player p returns nothing call dispatch_HashMap_HashMap_HashMap_put(RegionData_permissions[this_1], playerToIndex(p), 0) endfunction function dispatch_RegionData_RegionData_RegionData_disallow takes integer this_1, player p returns nothing if RegionData_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling RegionData.disallow") else call error("Called RegionData.disallow on invalid object.") endif endif call RegionData_disallow(this_1, p) endfunction function alloc_ForForceCallback_execute_RegionData takes nothing returns integer local integer this_1 if ForForceCallback_firstFree == 0 then if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1 set this_1 = ForForceCallback_maxIndex set ForForceCallback_typeId[this_1] = 847 else call error("Out of memory: Could not create ForForceCallback_execute_RegionData.") set this_1 = 0 endif else set ForForceCallback_firstFree = ForForceCallback_firstFree - 1 set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree] set ForForceCallback_typeId[this_1] = 847 endif return this_1 endfunction function rect_changeTerrain takes rect this_1, integer ttype_1 returns nothing local real xmax_1 = rect_getMaxX(this_1) - 32. local real xmin_1 = rect_getMinX(this_1) + 32. local real ymax = rect_getMaxY(this_1) - 32. local real ymin = rect_getMinY(this_1) + 32. local integer clVar set RegionData_x = xmin_1 set RegionData_y = ymin loop exitwhen not (RegionData_y <= ymax) set clVar = alloc_ForForceCallback_execute_RegionData() set xmax[clVar] = xmax_1 set ttype[clVar] = ttype_1 set xmin[clVar] = xmin_1 call execute(clVar) endloop endfunction function RegionData_resetTiles takes integer this_1 returns nothing local integer temp_tuple_unwalkableId local rect temp local integer tuple_temp if RegionData_rtype[this_1] != 0 then set temp = RegionData_theRect[this_1] call RegionType_getTypeSet(RegionData_rtype[this_1]) set tuple_temp = RegionType_getTypeSet_return_unwalkableId set temp_tuple_unwalkableId = tuple_temp call rect_changeTerrain(temp, temp_tuple_unwalkableId) endif endfunction function dispatch_RegionData_RegionData_RegionData_resetTiles takes integer this_1 returns nothing if RegionData_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling RegionData.resetTiles") else call error("Called RegionData.resetTiles on invalid object.") endif endif call RegionData_resetTiles(this_1) endfunction function RegionData_setBossRegion takes integer this_1 returns nothing set RegionData_bossRegion[this_1] = true endfunction function dispatch_RegionData_RegionData_RegionData_setBossRegion takes integer this_1 returns nothing if RegionData_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling RegionData.setBossRegion") else call error("Called RegionData.setBossRegion on invalid object.") endif endif call RegionData_setBossRegion(this_1) endfunction function SetupBox_onCast takes integer this_1 returns nothing local integer id = GetSpellAbilityId() local player owner = unit_getOwner(UnitEntity_actor[this_1]) local integer temp = id local unit u_1 local player p local integer clVar local integer rdata local integer escaper local integer from local integer escaper_1 local integer from_1 local integer rdata_1 local integer escaper_2 local integer from_2 local integer escaper_3 local integer from_3 local integer rdata_2 local integer escaper_4 local integer from_4 local integer builder local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local unit receiver_4 local unit receiver_5 local unit receiver_6 local unit receiver_7 local unit receiver_8 local unit receiver_9 local unit receiver_10 local unit receiver_11 local unit receiver_12 local unit receiver_13 local unit receiver_14 local unit receiver_15 local unit receiver_16 local unit receiver_17 local unit receiver_18 local unit receiver_19 local unit receiver_20 local unit receiver_21 local unit receiver_22 local unit receiver_23 local unit receiver_24 local unit receiver_25 local unit receiver_26 local unit receiver_27 local unit receiver_28 local unit receiver_29 local unit receiver_30 local unit receiver_31 local unit receiver_32 local unit receiver_33 local integer escaper_5 local integer from_5 local integer escaper_6 local integer from_6 local unit receiver_34 local unit receiver_35 local unit receiver_36 local unit receiver_37 local unit receiver_38 local unit receiver_39 local unit receiver_40 local unit receiver_41 local rect temp_1 if temp == SetupBox_ICEI_ID then if RegionData_slidespeed[SetupBox_rdata[this_1]] >= SetupBox_MAX_SLIDESPEED then call DisplayTextToPlayer(owner, 0., 0., "Slidespeed is on Maximum") else set RegionData_slidespeed[SetupBox_rdata[this_1]] = RegionData_slidespeed[SetupBox_rdata[this_1]] + .25 call DisplayTextToPlayer(owner, 0., 0., "Slidespeed: " + real_toString(RegionData_slidespeed[SetupBox_rdata[this_1]])) endif elseif temp == SetupBox_ICED_ID then if RegionData_slidespeed[SetupBox_rdata[this_1]] <= ( - SetupBox_MAX_SLIDESPEED) then call DisplayTextToPlayer(owner, 0., 0., "Slidespeed is on Minimum") else set RegionData_slidespeed[SetupBox_rdata[this_1]] = RegionData_slidespeed[SetupBox_rdata[this_1]] - .25 call DisplayTextToPlayer(owner, 0., 0., "Slidespeed: " + real_toString(RegionData_slidespeed[SetupBox_rdata[this_1]])) endif elseif temp == SetupBox_PI_ID then if RegionData_poisonDmg[SetupBox_rdata[this_1]] >= SetupBox_MAX_DOT_DMG then call DisplayTextToPlayer(owner, 0., 0., "Poisondamage is on Maximum") else set RegionData_poisonDmg[SetupBox_rdata[this_1]] = RegionData_poisonDmg[SetupBox_rdata[this_1]] + .25 call DisplayTextToPlayer(owner, 0., 0., "Poisondamage: " + real_toString(RegionData_poisonDmg[SetupBox_rdata[this_1]])) endif elseif temp == SetupBox_PD_ID then if RegionData_poisonDmg[SetupBox_rdata[this_1]] <= .25 then call DisplayTextToPlayer(owner, 0., 0., "Poisondamage is on Minimum") else set RegionData_poisonDmg[SetupBox_rdata[this_1]] = RegionData_poisonDmg[SetupBox_rdata[this_1]] - .25 call DisplayTextToPlayer(owner, 0., 0., "Poisondamage: " + real_toString(RegionData_poisonDmg[SetupBox_rdata[this_1]])) endif elseif temp == SetupBox_LI_ID then if RegionData_lavaDmg[SetupBox_rdata[this_1]] >= SetupBox_MAX_DOT_DMG then call DisplayTextToPlayer(owner, 0., 0., "Lavadmg is on Maximum") else set RegionData_lavaDmg[SetupBox_rdata[this_1]] = RegionData_lavaDmg[SetupBox_rdata[this_1]] + .25 call DisplayTextToPlayer(owner, 0., 0., "Lavadmg: " + real_toString(RegionData_lavaDmg[SetupBox_rdata[this_1]])) endif elseif temp == SetupBox_LD_ID then if RegionData_lavaDmg[SetupBox_rdata[this_1]] <= .25 then call DisplayTextToPlayer(owner, 0., 0., "Lavadmg is on Minimum") else set RegionData_lavaDmg[SetupBox_rdata[this_1]] = RegionData_lavaDmg[SetupBox_rdata[this_1]] - .25 call DisplayTextToPlayer(owner, 0., 0., "Lavadmg: " + real_toString(RegionData_lavaDmg[SetupBox_rdata[this_1]])) endif elseif temp == SetupBox_ALLOW_ID then set u_1 = GetSpellTargetUnit() set p = unit_getOwner(u_1) if isBuilderPlayer(p) and p != owner then call effect_destr(addEffect("Abilities\\Spells\\Human\\Invisibility\\InvisibilityTarget.mdl", unit_getPos(u_1), unit_getPos_return_y)) if dispatch_RegionData_RegionData_RegionData_canBuild(SetupBox_rdata[this_1], p) and ( not (PlayerData_title[PlayerData_pData[player_getId(p)]] == 2)) then call dispatch_RegionData_RegionData_RegionData_disallow(SetupBox_rdata[this_1], p) call printTimedToPlayer("|cff9C0808Disallowed|r " + player_getNameColored_3916(p) + " |cffffcc00to build in your region.", 25., owner) call printTimedToPlayer(player_getNameColored_3916(owner) + " |cff9C0808disallowed|r|cffffcc00 you to build in his region.", 25., p) if GetLocalPlayer() == p then call PingMinimapEx((GetRectMinX(RegionData_theRect[SetupBox_rdata[this_1]]) + GetRectMaxX(RegionData_theRect[SetupBox_rdata[this_1]])) / 2., (GetRectMinY(RegionData_theRect[SetupBox_rdata[this_1]]) + GetRectMaxY(RegionData_theRect[SetupBox_rdata[this_1]])) / 2., 3., 156, 8, 8, false) endif else call dispatch_RegionData_RegionData_RegionData_allow(SetupBox_rdata[this_1], p) call printTimedToPlayer("|cff08B552Allowed|r " + player_getNameColored_3916(p) + " |cffffcc00to build in your region.", 25., owner) call printTimedToPlayer(player_getNameColored_3916(owner) + " |cff08B552allowed|r|cffffcc00 you to build in his region.", 25., p) if GetLocalPlayer() == p then call PingMinimapEx((GetRectMaxX(RegionData_theRect[SetupBox_rdata[this_1]]) + GetRectMinX(RegionData_theRect[SetupBox_rdata[this_1]])) / 2., (GetRectMaxY(RegionData_theRect[SetupBox_rdata[this_1]]) + GetRectMinY(RegionData_theRect[SetupBox_rdata[this_1]])) / 2., 3., 8, 181, 82, false) endif endif else call printTimedToPlayer("|cffC51019Why would you do this!", 15., owner) endif elseif temp == SetupBox_CLEAR_ID then set temp_1 = RegionData_theRect[SetupBox_rdata[this_1]] set clVar = alloc_ForGroupCallback_forUnitsInRect_SetupBox_SetupBox() set this_2927[clVar] = this_1 call forUnitsInRect(temp_1, clVar) call dispatch_RegionData_RegionData_RegionData_resetTiles(SetupBox_rdata[this_1]) elseif temp == SetupBox_JUMP_TOGGLE_ID then set rdata = getRegionData(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) if RegionData_specialAbil[rdata] > 0 then set from = dispatch_RegionData_RegionData_RegionData_getEscapers(rdata) loop exitwhen not LLIterator_hasNext(from) set escaper = LLIterator_next(from) call unit_removeAbility(UnitEntity_actor[escaper], RegionData_specialAbil[rdata]) endloop endif set RegionData_specialAbil[rdata] = SetupBox_JUMP_SPELL_ID call printTimedToPlayer("|cffFF8C29Escapers can now jump in this region!", 25., owner) set from_1 = dispatch_RegionData_RegionData_RegionData_getEscapers(rdata) loop exitwhen not LLIterator_hasNext(from_1) set escaper_1 = LLIterator_next(from_1) call unit_addAbility(UnitEntity_actor[escaper_1], RegionData_specialAbil[rdata]) endloop elseif temp == SetupBox_ORB_TOGGLE_ID then set rdata_1 = getRegionData(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) if RegionData_specialAbil[rdata_1] > 0 then set from_2 = dispatch_RegionData_RegionData_RegionData_getEscapers(rdata_1) loop exitwhen not LLIterator_hasNext(from_2) set escaper_2 = LLIterator_next(from_2) call unit_removeAbility(UnitEntity_actor[escaper_2], RegionData_specialAbil[rdata_1]) endloop endif set RegionData_specialAbil[rdata_1] = SetupBox_ORB_SPELL_ID call printTimedToPlayer("|cffFF8C29Escapers can now use the orb in this region!", 25., owner) set from_3 = dispatch_RegionData_RegionData_RegionData_getEscapers(rdata_1) loop exitwhen not LLIterator_hasNext(from_3) set escaper_3 = LLIterator_next(from_3) call unit_addAbility(UnitEntity_actor[escaper_3], RegionData_specialAbil[rdata_1]) endloop elseif temp == SetupBox_CANCEL_TOGGLE_ID then set rdata_2 = getRegionData(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) if RegionData_specialAbil[rdata_2] > 0 then set from_4 = dispatch_RegionData_RegionData_RegionData_getEscapers(rdata_2) loop exitwhen not LLIterator_hasNext(from_4) set escaper_4 = LLIterator_next(from_4) call unit_removeAbility(UnitEntity_actor[escaper_4], RegionData_specialAbil[rdata_2]) endloop endif set RegionData_specialAbil[rdata_2] = 0 call printTimedToPlayer("|cffFF8C29Removed all abilities!", 25., owner) elseif temp == SetupBox_BOSS_MODE_ID then if PlayerData_XP[PlayerData_pData[player_getId(owner)]] >= 0 then call dispatch_SoundDefinition_SoundUtils_SoundDefinition_play(SetupBox_BOSS_SOUND) call unit_removeAbility(UnitEntity_actor[this_1], SetupBox_BOSS_MODE_ID) call dispatch_RegionData_RegionData_RegionData_setBossRegion(SetupBox_rdata[this_1]) call printTimedToPlayer("|cff63BD4AYou converted your area to a |cff086BBDB|r|cff0C5CB0o|r|cff104DA3s|r|cff143E96s|r|cff182F89r|r|cff1C207Ce|r|cff590E4Fg|r|cff750D41i|r|cff910C33o|r|cffAD0B25n|r", 15., owner) call effect_destr(addEffect("Abilities\\Spells\\Other\\Doom\\DoomDeath.mdl", unit_getPos(UnitEntity_actor[this_1]), unit_getPos_return_y)) set builder = PlayerData_builder[PlayerData_pData[player_getId(owner)]] call SelectUnitForPlayerSingle(UnitEntity_actor[builder], owner) call dispatch_Builder_Builder_Builder_setBossMenu(builder) else call DisplayTextToPlayer(owner, 0., 0., "|cffFFD621[Info]|r - You need to have at least the |cffFFE6AD3:Novice|r Rank to be able to make a BossRegion.\nYou accumulate Rank-XP over time by playing.") endif elseif temp == SetupBox_SECOND_PAGE then set receiver = UnitEntity_actor[this_1] call unit_removeAbility(receiver, SetupBox_ALLOW_ID) set receiver_1 = receiver call unit_removeAbility(receiver_1, SetupBox_ABIL_WIZARD) set receiver_2 = receiver_1 call unit_removeAbility(receiver_2, SetupBox_CLEAR_ID) set receiver_3 = receiver_2 call unit_removeAbility(receiver_3, SetupBox_SECOND_PAGE) set receiver_4 = receiver_3 call unit_removeAbility(receiver_4, SetupBox_INC_GRAVITY) set receiver_5 = receiver_4 call unit_removeAbility(receiver_5, SetupBox_DEC_GRAVITY) set receiver_6 = receiver_5 call unit_removeAbility(receiver_6, SetupBox_TURND_ID) set receiver_7 = receiver_6 call unit_removeAbility(receiver_7, SetupBox_TURNI_ID) set receiver_8 = receiver_7 call unit_removeAbility(receiver_8, SetupBox_CUT_ALLOW) set receiver_9 = receiver_8 call unit_removeAbility(receiver_9, SetupBox_CUT_DISABLE) set receiver_10 = receiver_9 call unit_removeAbility(receiver_10, SetupBox_EASY_DISABLE) set receiver_11 = receiver_10 call unit_removeAbility(receiver_11, SetupBox_EASY_ENABLE) set receiver_12 = UnitEntity_actor[this_1] call unit_addAbility(receiver_12, SetupBox_ICEI_ID) set receiver_13 = receiver_12 call unit_addAbility(receiver_13, SetupBox_ICED_ID) set receiver_14 = receiver_13 call unit_addAbility(receiver_14, SetupBox_PI_ID) set receiver_15 = receiver_14 call unit_addAbility(receiver_15, SetupBox_PD_ID) set receiver_16 = receiver_15 call unit_addAbility(receiver_16, SetupBox_LI_ID) set receiver_17 = receiver_16 call unit_addAbility(receiver_17, SetupBox_LD_ID) set receiver_18 = receiver_17 call unit_addAbility(receiver_18, SetupBox_FIRST_PAGE) elseif temp == SetupBox_FIRST_PAGE then set receiver_19 = UnitEntity_actor[this_1] call unit_removeAbility(receiver_19, SetupBox_ICEI_ID) set receiver_20 = receiver_19 call unit_removeAbility(receiver_20, SetupBox_ICED_ID) set receiver_21 = receiver_20 call unit_removeAbility(receiver_21, SetupBox_PI_ID) set receiver_22 = receiver_21 call unit_removeAbility(receiver_22, SetupBox_PD_ID) set receiver_23 = receiver_22 call unit_removeAbility(receiver_23, SetupBox_LI_ID) set receiver_24 = receiver_23 call unit_removeAbility(receiver_24, SetupBox_LD_ID) set receiver_25 = receiver_24 call unit_removeAbility(receiver_25, SetupBox_FIRST_PAGE) set receiver_26 = UnitEntity_actor[this_1] call unit_addAbility(receiver_26, SetupBox_ALLOW_ID) set receiver_27 = receiver_26 call unit_addAbility(receiver_27, SetupBox_ABIL_WIZARD) set receiver_28 = receiver_27 call unit_addAbility(receiver_28, SetupBox_CLEAR_ID) set receiver_29 = receiver_28 call unit_addAbility(receiver_29, SetupBox_SECOND_PAGE) set receiver_30 = receiver_29 call unit_addAbility(receiver_30, SetupBox_INC_GRAVITY) set receiver_31 = receiver_30 call unit_addAbility(receiver_31, SetupBox_DEC_GRAVITY) set receiver_32 = receiver_31 call unit_addAbility(receiver_32, SetupBox_TURND_ID) set receiver_33 = receiver_32 call unit_addAbility(receiver_33, SetupBox_TURNI_ID) if RegionData_allowCut[SetupBox_rdata[this_1]] then call unit_addAbility(UnitEntity_actor[this_1], SetupBox_CUT_DISABLE) else call unit_addAbility(UnitEntity_actor[this_1], SetupBox_CUT_ALLOW) endif if RegionData_easyMode[SetupBox_rdata[this_1]] then call unit_addAbility(UnitEntity_actor[this_1], SetupBox_EASY_DISABLE) else call unit_addAbility(UnitEntity_actor[this_1], SetupBox_EASY_ENABLE) endif elseif temp == SetupBox_INC_GRAVITY then if RegionData_gravity[SetupBox_rdata[this_1]] > -10. then set RegionData_gravity[SetupBox_rdata[this_1]] = RegionData_gravity[SetupBox_rdata[this_1]] - 0.1 call printTimedToPlayer("Gravity: " + real_toString(RegionData_gravity[SetupBox_rdata[this_1]]), 10., owner) endif elseif temp == SetupBox_DEC_GRAVITY then if RegionData_gravity[SetupBox_rdata[this_1]] < ( - .2) then set RegionData_gravity[SetupBox_rdata[this_1]] = RegionData_gravity[SetupBox_rdata[this_1]] + 0.1 call printTimedToPlayer("Gravity: " + real_toString(RegionData_gravity[SetupBox_rdata[this_1]]), 10., owner) endif elseif temp == SetupBox_TURND_ID then if RegionData_turnSpeed[SetupBox_rdata[this_1]] > 0. then set RegionData_turnSpeed[SetupBox_rdata[this_1]] = RegionData_turnSpeed[SetupBox_rdata[this_1]] - .25 if RegionData_turnSpeed[SetupBox_rdata[this_1]] <= 0.01 then set RegionData_turnSpeed[SetupBox_rdata[this_1]] = 0.01 endif call printTimedToPlayer("Turnspeed: " + real_toString(RegionData_turnSpeed[SetupBox_rdata[this_1]]), 10., owner) endif set from_5 = dispatch_RegionData_RegionData_RegionData_getEscapers(SetupBox_rdata[this_1]) loop exitwhen not LLIterator_hasNext(from_5) set escaper_5 = LLIterator_next(from_5) call unit_setTurnSpeed(UnitEntity_actor[escaper_5], RegionData_turnSpeed[SetupBox_rdata[this_1]]) endloop elseif temp == SetupBox_TURNI_ID then if RegionData_turnSpeed[SetupBox_rdata[this_1]] < 5.0 then if RegionData_turnSpeed[SetupBox_rdata[this_1]] <= 0.01 then set RegionData_turnSpeed[SetupBox_rdata[this_1]] = 0. endif set RegionData_turnSpeed[SetupBox_rdata[this_1]] = RegionData_turnSpeed[SetupBox_rdata[this_1]] + .25 call printTimedToPlayer("Turnspeed: " + real_toString(RegionData_turnSpeed[SetupBox_rdata[this_1]]), 10., owner) endif set from_6 = dispatch_RegionData_RegionData_RegionData_getEscapers(SetupBox_rdata[this_1]) loop exitwhen not LLIterator_hasNext(from_6) set escaper_6 = LLIterator_next(from_6) call unit_setTurnSpeed(UnitEntity_actor[escaper_6], RegionData_turnSpeed[SetupBox_rdata[this_1]]) endloop elseif temp == SetupBox_CUT_ALLOW then set RegionData_allowCut[SetupBox_rdata[this_1]] = true set receiver_34 = UnitEntity_actor[this_1] call unit_removeAbility(receiver_34, SetupBox_CUT_ALLOW) set receiver_35 = receiver_34 call unit_addAbility(receiver_35, SetupBox_CUT_DISABLE) call printTimedToPlayer("|cffFF9C29Escapers can now cut diagonal tiles", 15., owner) elseif temp == SetupBox_CUT_DISABLE then set RegionData_allowCut[SetupBox_rdata[this_1]] = false set receiver_36 = UnitEntity_actor[this_1] call unit_removeAbility(receiver_36, SetupBox_CUT_DISABLE) set receiver_37 = receiver_36 call unit_addAbility(receiver_37, SetupBox_CUT_ALLOW) call printTimedToPlayer("|cffFF9C29Escapers can no longer cut diagonal tiles.", 15., owner) elseif temp == SetupBox_EASY_ENABLE then set RegionData_easyMode[SetupBox_rdata[this_1]] = true set receiver_38 = UnitEntity_actor[this_1] call unit_removeAbility(receiver_38, SetupBox_EASY_ENABLE) set receiver_39 = receiver_38 call unit_addAbility(receiver_39, SetupBox_EASY_DISABLE) call printTimedToPlayer("|cffFF9C29Activated easy mode", 15., owner) elseif temp == SetupBox_EASY_DISABLE then set RegionData_easyMode[SetupBox_rdata[this_1]] = false set receiver_40 = UnitEntity_actor[this_1] call unit_removeAbility(receiver_40, SetupBox_EASY_DISABLE) set receiver_41 = receiver_40 call unit_addAbility(receiver_41, SetupBox_EASY_ENABLE) call printTimedToPlayer("|cffFF9C29Deactivated easy mode", 15., owner) endif endfunction function dispatch_SetupBox_SetupBox_SetupBox_onCast takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SetupBox.onCast") else call error("Called SetupBox.onCast on invalid object.") endif endif call SetupBox_onCast(this_1) endfunction function onEvent_add_SetupBox_SetupBox takes integer this_1 returns nothing call dispatch_SetupBox_SetupBox_SetupBox_onCast(this_2926[this_1]) endfunction function getOffset takes nothing returns real set SetupObject_count = SetupObject_count + 1 if SetupObject_count > 50 then set SetupObject_count = -1 endif set getOffset_return_x = SetupObject_offsets_x[SetupObject_count] set getOffset_return_y = SetupObject_offsets_y[SetupObject_count] return getOffset_return_x endfunction function unit_getPos3Zero takes unit this_1 returns real set unit_getPos3Zero_return_x = unit_getX(this_1) set unit_getPos3Zero_return_y = unit_getY(this_1) set unit_getPos3Zero_return_z = 0. return unit_getPos3Zero_return_x endfunction function unit_issueImmediateOrder takes unit this_1, string order returns boolean return IssueImmediateOrder(this_1, order) endfunction function unit_issueImmediateOrderById takes unit this_1, integer id returns boolean return IssueImmediateOrderById(this_1, id) endfunction function unit_setXY_4206 takes unit this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing local unit receiver = this_1 local unit receiver_1 call unit_setX(receiver, pos_x_1) set receiver_1 = receiver call unit_setY(receiver_1, pos_y_1) endfunction function SetupObject_onOrderEvent takes integer this_1 returns nothing local integer order = GetIssuedOrderId() local real tuple_temp = EventData_getOrderPos() local real tuple_temp_1 = EventData_getOrderPos_return_y local real targetPos_x = tuple_temp local real targetPos_y = tuple_temp_1 local unit u_1 = GetOrderTargetUnit() local string orderS = OrderId2String(order) local unit receiver local unit receiver_1 local unit receiver_2 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 if orderS == "smart" or orderS == "move" or orderS == "attack" or orderS == "patrol" or orderS == "holdposition" or orderS == "stop" then call Log_trace("actor mimick move order") if orderS == "smart" and u_1 == null then call unit_issuePointOrder(UnitEntity_actor[this_1], "move", vec2_op_plus(targetPos_x, targetPos_y, getOffset(), getOffset_return_y), vec2_op_plus_return_y) elseif u_1 != null then call unit_issueTargetOrderById(UnitEntity_actor[this_1], order, u_1) elseif targetPos_x != 0. then call unit_issuePointOrderById(UnitEntity_actor[this_1], order, targetPos_x, targetPos_y) else call unit_issueImmediateOrderById(UnitEntity_actor[this_1], order) endif elseif ( not (orderS == "waterelemental")) and ( not (orderS == "roar")) and ( not (order == 851974)) then call unit_issueImmediateOrder(UnitEntity_actor[this_1], "stop") call Log_trace("stopping actor") endif set tuple_temp_2 = unit_getPos3Zero(SetupObject_setup[this_1]) set tuple_temp_3 = unit_getPos3Zero_return_y set tuple_temp_4 = unit_getPos3Zero_return_z set Entity_pos_x[this_1] = tuple_temp_2 set Entity_pos_y[this_1] = tuple_temp_3 set Entity_pos_z[this_1] = tuple_temp_4 set receiver = UnitEntity_actor[this_1] call unit_setXY_4206(receiver, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) set receiver_1 = receiver call unit_setFacing(receiver_1, unit_getFacingAngle(SetupObject_setup[this_1])) set receiver_2 = receiver_1 call unit_setTurnSpeed(receiver_2, GetUnitTurnSpeed(SetupObject_setup[this_1])) endfunction function dispatch_SetupObject_SetupObject_SetupObject_onOrderEvent takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SetupObject.onOrderEvent") else call error("Called SetupObject.onOrderEvent on invalid object.") endif endif call SetupObject_onOrderEvent(this_1) endfunction function onEvent_add_SetupObject_SetupObject takes integer this_1 returns nothing call dispatch_SetupObject_SetupObject_SetupObject_onOrderEvent(this_2909[this_1]) endfunction function onEvent_add_SetupObject_SetupObject_3851 takes integer this_1 returns nothing call dispatch_SetupObject_SetupObject_SetupObject_onOrderEvent(this_2910[this_1]) endfunction function onEvent_add_SetupObject_SetupObject_3852 takes integer this_1 returns nothing call dispatch_SetupObject_SetupObject_SetupObject_onOrderEvent(this_2911[this_1]) endfunction function unit_setVertexColor takes unit this_1, integer r, integer g, integer b, integer a returns nothing call SetUnitVertexColor(this_1, r, g, b, a) endfunction function SpellTarget_onCast takes integer this_1 returns nothing local integer id = GetSpellAbilityId() local integer temp = id local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local unit receiver_4 local unit receiver_5 if temp == BossSpellTarget_AOE_ID then set SpellTarget_stype[this_1] = 1 set receiver = UnitEntity_actor[this_1] call unit_setVertexColor(receiver, 255, 255, 0, 255) set receiver_1 = receiver call unit_removeAbility(receiver_1, BossSpellTarget_AOE_ID) set receiver_2 = receiver_1 call unit_addAbility(receiver_2, BossSpellTarget_MISSILE_ID) elseif temp == BossSpellTarget_MISSILE_ID then set SpellTarget_stype[this_1] = 3 set receiver_3 = UnitEntity_actor[this_1] call unit_setVertexColor(receiver_3, 0, 255, 255, 255) set receiver_4 = receiver_3 call unit_removeAbility(receiver_4, BossSpellTarget_MISSILE_ID) set receiver_5 = receiver_4 call unit_addAbility(receiver_5, BossSpellTarget_AOE_ID) endif endfunction function dispatch_SpellTarget_BossSpellTarget_SpellTarget_onCast takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SpellTarget.onCast") else call error("Called SpellTarget.onCast on invalid object.") endif endif call SpellTarget_onCast(this_1) endfunction function onEvent_add_SpellTarget_BossSpellTarget takes integer this_1 returns nothing call dispatch_SpellTarget_BossSpellTarget_SpellTarget_onCast(this_2913[this_1]) endfunction function alloc_ForGroupCallback_forUnitsInRange_Spinner_Spinner takes nothing returns integer local integer this_1 if ForGroupCallback_firstFree == 0 then if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1 set this_1 = ForGroupCallback_maxIndex set ForGroupCallback_typeId[this_1] = 865 else call error("Out of memory: Could not create ForGroupCallback_forUnitsInRange_Spinner_Spinner.") set this_1 = 0 endif else set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1 set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree] set ForGroupCallback_typeId[this_1] = 865 endif return this_1 endfunction function CongaLineHead_setEnabled takes integer this_1, boolean b returns nothing endfunction function ObjectTarget_setEnabled takes integer this_1, boolean b returns nothing endfunction function TerrainChanger_setEnabled takes integer this_1, boolean b returns nothing endfunction function dispatch_SetupObject_SetupObject_SetupObject_setEnabled takes integer this_1, boolean flag returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SetupObject.setEnabled") else call error("Called SetupObject.setEnabled on invalid object.") endif endif if Serializable_typeId[this_1] <= 1187 then if Serializable_typeId[this_1] <= 1173 then if Serializable_typeId[this_1] <= 1172 then call SetupObject_setEnabled(this_1, flag) else call CongaLineHead_setEnabled(this_1, flag) endif elseif Serializable_typeId[this_1] <= 1186 then call SetupObject_setEnabled(this_1, flag) else call ObjectTarget_setEnabled(this_1, flag) endif elseif Serializable_typeId[this_1] <= 1190 then if Serializable_typeId[this_1] <= 1188 then call Powernode_setEnabled(this_1, flag) else call SetupObject_setEnabled(this_1, flag) endif else call TerrainChanger_setEnabled(this_1, flag) endif endfunction function alloc_SpinNode takes nothing returns integer local integer this_1 if SpinNode_firstFree == 0 then if SpinNode_maxIndex < JASS_MAX_ARRAY_SIZE then set SpinNode_maxIndex = SpinNode_maxIndex + 1 set this_1 = SpinNode_maxIndex set SpinNode_typeId[this_1] = 1237 else call error("Out of memory: Could not create SpinNode.") set this_1 = 0 endif else set SpinNode_firstFree = SpinNode_firstFree - 1 set this_1 = SpinNode_nextFree[SpinNode_firstFree] set SpinNode_typeId[this_1] = 1237 endif return this_1 endfunction function SpinNode_init takes integer this_1 returns nothing set SpinNode_next[this_1] = 0 set SpinNode_prev[this_1] = 0 endfunction function construct_SpinNode takes integer this_1, integer ent, real ang, real dist returns nothing call SpinNode_init(this_1) set SpinNode_obj[this_1] = ent set SpinNode_angl[this_1] = ang set SpinNode_dist[this_1] = dist endfunction function new_SpinNode takes integer ent, real ang, real dist returns integer local integer this_1 = alloc_SpinNode() call construct_SpinNode(this_1, ent, ang, dist) return this_1 endfunction function vec3_distanceTo takes real this_x, real this_y, real this_z, real v_x, real v_y, real v_z returns real return SquareRoot(real_squared(v_x - this_x) + real_squared(v_y - this_y) + real_squared(v_z - this_z)) endfunction function Spinner_checkObj takes integer this_1, integer e_1 returns nothing local integer instanceOfTemp = Serializable_typeId[e_1] local integer dobj local boolean isNew local integer node local integer newnode local integer instanceOfTemp_1 local boolean andLeft if instanceOfTemp >= 1171 and instanceOfTemp <= 1191 then set instanceOfTemp_1 = Serializable_typeId[e_1] set andLeft = not (instanceOfTemp_1 >= 1216 and instanceOfTemp_1 <= 1220) else set andLeft = false endif if andLeft then set dobj = e_1 set isNew = true set node = Spinner_firstNode[this_1] loop exitwhen not (node != 0) if SpinNode_obj[node] == dobj then set isNew = false if Spinner_firstNode[this_1] == node then set Spinner_firstNode[this_1] = SpinNode_next[node] endif call dispatch_SpinNode_destroySpinNode(node) exitwhen true endif set node = SpinNode_next[node] endloop if isNew and unit_hasAbility(SetupObject_setup[dobj], BuilderConstants_REMOVE_OBJECT_ID) or Entity_owner[dobj] == GameConstants_STAFF_PLAYER then call unit_removeAbility(SetupObject_setup[dobj], BuilderConstants_REMOVE_OBJECT_ID) set newnode = new_SpinNode(dobj, angle_radians_1(vec3_angleTo2d_4259(dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, dispatch_UnitEntity_Entity_UnitEntity_getPos(dobj), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z)), vec3_distanceTo(dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, dispatch_UnitEntity_Entity_UnitEntity_getPos(dobj), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z)) if Spinner_firstNode[this_1] != 0 then set SpinNode_prev[Spinner_firstNode[this_1]] = newnode set SpinNode_next[newnode] = Spinner_firstNode[this_1] endif set Spinner_firstNode[this_1] = newnode endif endif endfunction function dispatch_Spinner_Spinner_Spinner_checkObj takes integer this_1, integer e_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Spinner.checkObj") else call error("Called Spinner.checkObj on invalid object.") endif endif call Spinner_checkObj(this_1, e_1) endfunction function callback_forEachFrom_LinkedList takes integer this_1, unit u_1 returns nothing call dispatch_LinkedList_LinkedList_LinkedList_add_1(result[this_1], unitToIndex(u_1)) endfunction function callback_forEachFrom_Preloader takes integer this_1, unit u_1 returns nothing call unit_remove(u_1) endfunction function callback_forUnitsInRange_Jumper_Jumper takes integer this_1, unit u_1 returns nothing if u_1 != UnitEntity_actor[this_2956[this_1]] and unit_getTypeId(u_1) == BuilderConstants_JUMPER_ID then call dispatch_SoundDefinition_SoundUtils_SoundDefinition_play(Jumper_snd) call unit_addAbility(u_1, Jumper_SPECIAL_ID) call Log_debug("Jumper Terminate") call cyc_RevivePoint_terminate(18, this_2956[this_1]) endif endfunction function MemoryAccessPedestal_addObj takes integer this_1, integer serializable, boolean removeIfExists returns nothing local integer instanceOfTemp = Serializable_typeId[serializable] local integer io local integer so local integer ue local integer instanceOfTemp_1 local integer instanceOfTemp_2 local integer instanceOfTemp_3 if (instanceOfTemp >= 1162 and instanceOfTemp <= 1167) or Serializable_typeId[serializable] == 1161 or Serializable_typeId[serializable] == 1201 then return endif if dispatch_RegionData_RegionData_RegionData_canBuild(getRegionData(dispatch_Entity_Entity_Entity_getPos(serializable), dispatch_Entity_Entity_Entity_getPos_return_y, dispatch_Entity_Entity_Entity_getPos_return_z), Entity_owner[this_1]) then if dispatch_HashList_HashList_HashList_has(MemoryAccessPedestal_entities[this_1], serializable) then if removeIfExists then call dispatch_HashList_HashList_HashList_remove(MemoryAccessPedestal_entities[this_1], serializable) endif return endif call dispatch_HashList_HashList_HashList_add_1(MemoryAccessPedestal_entities[this_1], serializable) call flashEffect(Abilities_healTarget, dispatch_Entity_Entity_Entity_getPos(serializable), dispatch_Entity_Entity_Entity_getPos_return_y, dispatch_Entity_Entity_Entity_getPos_return_z) set instanceOfTemp_1 = Serializable_typeId[serializable] if instanceOfTemp_1 >= 1152 and instanceOfTemp_1 <= 1157 then set io = serializable call dispatch_HashMap_HashMap_HashMap_put(MemoryAccessPedestal_effects[this_1], serializable, effectToIndex(widget_addEffect(UnitEntity_actor[ItemObject_setup[io]], Abilities_innerFireTarget, "overhead"))) else set instanceOfTemp_2 = Serializable_typeId[serializable] if instanceOfTemp_2 >= 1211 and instanceOfTemp_2 <= 1221 then set so = serializable call dispatch_HashMap_HashMap_HashMap_put(MemoryAccessPedestal_effects[this_1], serializable, effectToIndex(widget_addEffect(StaticSetupObject_setup[so], Abilities_innerFireTarget, "overhead"))) else set instanceOfTemp_3 = Serializable_typeId[serializable] if instanceOfTemp_3 >= 1159 and instanceOfTemp_3 <= 1226 then set ue = serializable call dispatch_HashMap_HashMap_HashMap_put(MemoryAccessPedestal_effects[this_1], serializable, effectToIndex(widget_addEffect(UnitEntity_actor[ue], Abilities_innerFireTarget, "overhead"))) endif endif endif endif endfunction function dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_addObj takes integer this_1, integer serializable, boolean removeIfExists returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling MemoryAccessPedestal.addObj") else call error("Called MemoryAccessPedestal.addObj on invalid object.") endif endif call MemoryAccessPedestal_addObj(this_1, serializable, removeIfExists) endfunction function callback_forUnitsInRange_MemoryAccessPedestal_Pedestal takes integer this_1, unit u_1 returns nothing local integer ed if u_1 != UnitEntity_actor[this_3011[this_1]] then if unit_getEntity(u_1) != 0 then set ed = unit_getEntity(u_1) if Entity_owner[ed] == Entity_owner[this_3011[this_1]] then call dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_addObj(this_3011[this_1], ed, false) endif endif endif endfunction function dispatch_OnHitListener_Projectile_OnHitListener_run takes integer this_1, unit target returns nothing endfunction function group_add_1 takes group this_1, unit units_0 returns integer local integer i = 0 if GroupAddUnit(this_1, units_0) then set i = i + 1 endif return i endfunction function group_has takes group this_1, unit u_1 returns boolean return IsUnitInGroup(u_1, this_1) endfunction function callback_forUnitsInRange_Projectile_Projectile takes integer this_1, unit target returns nothing if ( not Entity_done[this[this_1]]) and ( not group_has(Projectile_hitGroup[this[this_1]], target)) then call group_add_1(Projectile_hitGroup[this[this_1]], target) call dispatch_OnHitListener_Projectile_OnHitListener_run(Projectile_onHit[this[this_1]], target) endif endfunction function callback_forUnitsInRange_Spinner_Spinner takes integer this_1, unit u_1 returns nothing local integer ed if u_1 != UnitEntity_actor[this_2997[this_1]] and u_1 != SetupObject_setup[this_2997[this_1]] then if unit_getUserData(u_1) > 0 then set ed = unit_getEntity(u_1) if Entity_owner[ed] == Entity_owner[this_2997[this_1]] then call dispatch_Spinner_Spinner_Spinner_checkObj(this_2997[this_1], ed) endif endif endif endfunction function InstantDummyCaster_castTarget_744 takes player owner, integer abilityId, integer lvl, string order, widget target returns boolean return InstantDummyCaster_castTarget_743(owner, abilityId, lvl, OrderId(order), target) endfunction function StaticBaseObject_getRallyPoint takes integer this_1 returns real if StaticBaseObject_rallyUnit[this_1] == null or ( not widget_isAliveTrick(StaticBaseObject_rallyUnit[this_1])) then set StaticBaseObject_getRallyPoint_return_x = StaticBaseObject_rallyPoint_x[this_1] set StaticBaseObject_getRallyPoint_return_y = StaticBaseObject_rallyPoint_y[this_1] set StaticBaseObject_getRallyPoint_return_z = StaticBaseObject_rallyPoint_z[this_1] return StaticBaseObject_getRallyPoint_return_x elseif unit_getOwner(StaticBaseObject_rallyUnit[this_1]) != Basics_DUMMY_PLAYER then set StaticBaseObject_getRallyPoint_return_x = unit_getPos3with(StaticBaseObject_rallyUnit[this_1], 0.) set StaticBaseObject_getRallyPoint_return_y = unit_getPos3with_return_y set StaticBaseObject_getRallyPoint_return_z = unit_getPos3with_return_z return StaticBaseObject_getRallyPoint_return_x else set StaticBaseObject_getRallyPoint_return_x = Entity_pos_x[this_1] set StaticBaseObject_getRallyPoint_return_y = Entity_pos_y[this_1] set StaticBaseObject_getRallyPoint_return_z = Entity_pos_z[this_1] return StaticBaseObject_getRallyPoint_return_x endif endfunction function dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint takes integer this_1 returns real local real BaseObject_StaticBaseObject_getRallyPoint_result_x local real BaseObject_StaticBaseObject_getRallyPoint_result_y local real BaseObject_StaticBaseObject_getRallyPoint_result_z local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling StaticBaseObject.getRallyPoint") else call error("Called StaticBaseObject.getRallyPoint on invalid object.") endif endif set tuple_temp = StaticBaseObject_getRallyPoint(this_1) set tuple_temp_1 = StaticBaseObject_getRallyPoint_return_y set tuple_temp_2 = StaticBaseObject_getRallyPoint_return_z set BaseObject_StaticBaseObject_getRallyPoint_result_x = tuple_temp set BaseObject_StaticBaseObject_getRallyPoint_result_y = tuple_temp_1 set BaseObject_StaticBaseObject_getRallyPoint_result_z = tuple_temp_2 set dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_x = BaseObject_StaticBaseObject_getRallyPoint_result_x set dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_y = BaseObject_StaticBaseObject_getRallyPoint_result_y set dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_z = BaseObject_StaticBaseObject_getRallyPoint_result_z return dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_x endfunction function newEventPlayer takes player p, real m returns nothing local integer i = GetPlayerId(p) set Camerashakes_playerCurrentShake[i] = Camerashakes_playerCurrentShake[i] + m if not IsPlayerInForce(p, Camerashakes_shakingPlayers) then call ForceAddPlayer(Camerashakes_shakingPlayers, p) endif endfunction function Trap_doEffect takes integer this_1, integer e_1 returns nothing local integer temp = Trap_a[this_1] local integer level local real rallyPos_x_1 local real rallyPos_y_1 local real rallyPos_z_1 local real angl_radians local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 if temp == 0 then call dispatch_Escaper_Escaper_Escaper_kill(e_1, this_1) elseif temp == 1 then call InstantDummyCaster_castTarget_744(Basics_DUMMY_PLAYER, Trap_STUN_BUFF, real_toInt(Trap_duration[this_1]), "thunderbolt", UnitEntity_actor[e_1]) elseif temp == 5 then call newEventPlayer(Entity_owner[e_1], Trap_value[this_1]) elseif temp == 2 then call dispatch_Escaper_Escaper_Escaper_setPoison(e_1, true) elseif temp == 3 then set level = ModuloInteger(real_toInt(Trap_value[this_1] / 20.), 10) call printLog(0, "Level: " + int_toString(level)) if level > 5 then call InstantDummyCaster_castTarget_744(Basics_DUMMY_PLAYER, Trap_SPEED_BUFF_POS, level - 5, "bloodlust", UnitEntity_actor[e_1]) elseif level < 5 then call InstantDummyCaster_castTarget_744(Basics_DUMMY_PLAYER, Trap_SPEED_BUFF_NEG, level, "bloodlust", UnitEntity_actor[e_1]) endif elseif temp == 4 then call IssueImmediateOrder(UnitEntity_actor[e_1], "stop") set tuple_temp = dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint(this_1) set tuple_temp_1 = dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_y set tuple_temp_2 = dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_z set rallyPos_x_1 = tuple_temp set rallyPos_y_1 = tuple_temp_1 set rallyPos_z_1 = tuple_temp_2 if vec3_distanceTo2dSq(rallyPos_x_1, rallyPos_y_1, rallyPos_z_1, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y) < 20 * 20 then if Trap_pull[this_1] then set tuple_temp_3 = angle_op_minus(vec3_angleTo2d_4259(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1]), real_asAngleDegrees(180.)) set angl_radians = tuple_temp_3 else set tuple_temp_4 = vec3_angleTo2d_4259(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1]) set angl_radians = tuple_temp_4 endif else set tuple_temp_5 = vec3_angleTo2d_4259(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], rallyPos_x_1, rallyPos_y_1, rallyPos_z_1) set angl_radians = tuple_temp_5 endif call dispatch_Entity_Entity_Entity_addVel(e_1, vec2_toVec3(angle_toVec(angl_radians, Trap_value[this_1]), angle_toVec_return_y), vec2_toVec3_return_y, vec2_toVec3_return_z) endif endfunction function dispatch_Trap_Trap_Trap_doEffect takes integer this_1, integer e_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Trap.doEffect") else call error("Called Trap.doEffect on invalid object.") endif endif call Trap_doEffect(this_1, e_1) endfunction function callback_forUnitsInRange_Trap_Trap takes integer this_1, unit u_1 returns nothing local integer e_1 = unit_getEntity(u_1) local integer instanceOfTemp = Serializable_typeId[e_1] local integer escaper if instanceOfTemp >= 1162 and instanceOfTemp <= 1167 then set escaper = e_1 call dispatch_Trap_Trap_Trap_doEffect(this_2960[this_1], escaper) endif endfunction function callback_forUnitsInRange_Waypoint_Waypoint takes integer this_1, unit u_1 returns nothing local integer data_1 = unit_getEntity(u_1) local integer instanceOfTemp local integer instanceOfTemp_1 local integer instanceOfTemp_2 local boolean andLeft local boolean andLeft_1 if Entity_owner[this_2961[this_1]] == Entity_owner[data_1] then set instanceOfTemp = Serializable_typeId[data_1] set andLeft = not (instanceOfTemp >= 1162 and instanceOfTemp <= 1167) else set andLeft = false endif if andLeft and ( not (Serializable_typeId[data_1] == 1161)) then set instanceOfTemp_1 = Serializable_typeId[data_1] set andLeft_1 = not (instanceOfTemp_1 >= 1193 and instanceOfTemp_1 <= 1210) else set andLeft_1 = false endif if andLeft_1 then set instanceOfTemp_2 = Serializable_typeId[data_1] if instanceOfTemp_2 >= 1171 and instanceOfTemp_2 <= 1191 then call unit_issuePointOrder(SetupObject_setup[data_1], "move", vec3_toVec2(rallyPos_x[this_1], rallyPos_y[this_1], rallyPos_z[this_1]), vec3_toVec2_return_y) else call unit_issuePointOrder(UnitEntity_actor[data_1], "move", vec3_toVec2(rallyPos_x[this_1], rallyPos_y[this_1], rallyPos_z[this_1]), vec3_toVec2_return_y) endif endif endfunction function alloc_CallbackSingle_doAfter_Minion_Minion takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 695 else call error("Out of memory: Could not create CallbackSingle_doAfter_Minion_Minion.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 695 endif return this_1 endfunction function CustomBar_fadeOut takes integer this_1, real overTime, boolean followThrough, real xVel, real yVel returns nothing local texttag receiver local texttag receiver_1 local texttag receiver_2 local timer receiver_3 local timer receiver_4 if CustomBar_t[this_1] != null then set receiver = CustomBar_t[this_1] call texttag_setLifespan(receiver, overTime) set receiver_1 = receiver call texttag_setAge(receiver_1, 0.) set receiver_2 = receiver_1 call texttag_setFadepoint(receiver_2, 0.) call texttag_setPermanent(receiver_2, false) if not CustomBar_locked[this_1] then call texttag_setVelocity(CustomBar_t[this_1], TextTagSpeed2Velocity(xVel), TextTagSpeed2Velocity(yVel)) endif endif if followThrough then set receiver_3 = getTimer() call timer_setData(receiver_3, this_1) set receiver_4 = receiver_3 call timer_start(receiver_4, overTime, ref_function_CustomBar_fadeOutCallback) else set CustomBar_t[this_1] = null call dispatch_CustomBar_destroyCustomBar(this_1) endif endfunction function dispatch_CustomBar_CustomBar_CustomBar_fadeOut takes integer this_1, real overTime, boolean followThrough, real xVel, real yVel returns nothing if CustomBar_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling CustomBar.fadeOut") else call error("Called CustomBar.fadeOut on invalid object.") endif endif call CustomBar_fadeOut(this_1, overTime, followThrough, xVel, yVel) endfunction function Minion_onDamage takes integer this_1, integer w_escaper, real dmg returns nothing local integer clVar set Minion_currentHP[this_1] = Minion_currentHP[this_1] - dmg if Minion_currentHP[this_1] < 1. then call unit_kill(UnitEntity_actor[this_1]) call unit_abortOrder(SetupObject_setup[this_1]) call dispatch_CustomBar_CustomBar_CustomBar_fadeOut(Minion_hpBar[this_1], 1.5, true, 0., 0.) set Entity_sleeps[this_1] = true set clVar = alloc_CallbackSingle_doAfter_Minion_Minion() call construct_CallbackSingle(clVar) set this_2916[clVar] = this_1 call doAfter(3., clVar) endif endfunction function dispatch_Minion_Minion_Minion_onDamage takes integer this_1, integer w_escaper, real dmg returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Minion.onDamage") else call error("Called Minion.onDamage on invalid object.") endif endif call Minion_onDamage(this_1, w_escaper, dmg) endfunction function damageTarget takes integer entity_1, integer escaper, real damage returns nothing local integer b local integer m if entity_1 != 0 then if Serializable_typeId[entity_1] == 1172 then set b = entity_1 call dispatch_Boss_Boss_Boss_onDamage(b, escaper, damage) endif if Serializable_typeId[entity_1] == 1182 then set m = entity_1 call dispatch_Minion_Minion_Minion_onDamage(m, escaper, damage) endif endif endfunction function callback_forUnitsInRange_WeaponTypes takes integer this_1, unit u_1 returns nothing local integer entity_1 = unit_getEntity(u_1) call damageTarget(entity_1, e[this_1], 20.) endfunction function callback_forUnitsInRange_WeaponTypes_2034 takes integer this_1, unit u_1 returns nothing local integer entity_1 = unit_getEntity(u_1) call damageTarget(entity_1, e_2342[this_1], 20.) endfunction function callback_forUnitsInRange_WeaponTypes_2035 takes integer this_1, unit u_1 returns nothing local integer entity_1 = unit_getEntity(u_1) call damageTarget(entity_1, e_2343[this_1], 20.) endfunction function Minion_doDamage takes integer this_1, integer e_1 returns nothing call unit_damageTarget_4133(UnitEntity_actor[this_1], UnitEntity_actor[e_1], Minion_ATTACK_DAMAGE) endfunction function dispatch_Minion_Minion_Minion_doDamage takes integer this_1, integer e_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Minion.doDamage") else call error("Called Minion.doDamage on invalid object.") endif endif call Minion_doDamage(this_1, e_1) endfunction function callback_forUnitsInRange_doAfter_Minion_Minion takes integer this_1, unit u_1 returns nothing local integer entity_1 = unit_getEntity(u_1) local integer e_1 local integer instanceOfTemp local boolean andLeft if entity_1 != 0 then set instanceOfTemp = Serializable_typeId[entity_1] set andLeft = instanceOfTemp >= 1162 and instanceOfTemp <= 1167 else set andLeft = false endif if andLeft then set e_1 = entity_1 call dispatch_Minion_Minion_Minion_doDamage(this_2919[this_1], e_1) endif endfunction function callback_forUnitsInRange_doAfter_SpellTarget_BossSpellTarget takes integer this_1, unit u_1 returns nothing local integer instanceOfTemp = Serializable_typeId[unit_getEntity(u_1)] local integer escaper if instanceOfTemp >= 1162 and instanceOfTemp <= 1167 then call unit_damageTarget_4133(UnitEntity_actor[this_2915[this_1]], u_1, 100.) set escaper = unit_getEntity(u_1) call dispatch_Entity_Entity_Entity_addVel(escaper, vec3_op_mult(vec3_op_minus_4277(Entity_pos_x[escaper], Entity_pos_y[escaper], Entity_pos_z[escaper], tpos_x_3018[this_1], tpos_y_3021[this_1]), vec3_op_minus_return_y_3125, vec3_op_minus_return_z_3127, 0.5), vec3_op_mult_return_y, vec3_op_mult_return_z) endif endfunction function callback_forUnitsInRect_MGAgar_MGAgar takes integer this_1, unit u_1 returns nothing local integer data_1 = unit_getEntity(u_1) local integer instanceOfTemp local boolean andLeft if data_1 != 0 then set instanceOfTemp = Serializable_typeId[data_1] set andLeft = not (instanceOfTemp >= 1162 and instanceOfTemp <= 1167) else set andLeft = false endif if andLeft and ( not (Serializable_typeId[data_1] == 1161)) then call cyc_RevivePoint_terminate(18, data_1) endif endfunction function callback_forUnitsInRect_MGSlide_MGSlide takes integer this_1, unit u_1 returns nothing local integer data_1 = unit_getEntity(u_1) local integer instanceOfTemp local boolean andLeft if data_1 != 0 then set instanceOfTemp = Serializable_typeId[data_1] set andLeft = not (instanceOfTemp >= 1162 and instanceOfTemp <= 1167) else set andLeft = false endif if andLeft and ( not (Serializable_typeId[data_1] == 1161)) then call cyc_RevivePoint_terminate(18, data_1) endif endfunction function callback_forUnitsInRect_MGSlide_MGSlide_2040 takes integer this_1, unit u_1 returns nothing local integer data_1 = unit_getEntity(u_1) local integer instanceOfTemp local boolean andLeft if data_1 != 0 then set instanceOfTemp = Serializable_typeId[data_1] set andLeft = not (instanceOfTemp >= 1162 and instanceOfTemp <= 1167) else set andLeft = false endif if andLeft and ( not (Serializable_typeId[data_1] == 1161)) then call cyc_RevivePoint_terminate(18, data_1) endif endfunction function callback_forUnitsInRect_SetupBox_SetupBox takes integer this_1, unit u_1 returns nothing local integer data_1 = unit_getEntity(u_1) local integer instanceOfTemp local boolean andLeft if data_1 != 0 then set instanceOfTemp = Serializable_typeId[data_1] set andLeft = not (instanceOfTemp >= 1162 and instanceOfTemp <= 1167) else set andLeft = false endif if andLeft and ( not (Serializable_typeId[data_1] == 1161)) and u_1 != UnitEntity_actor[this_2927[this_1]] then call Log_debug("SetupBox Terminate") call cyc_RevivePoint_terminate(18, data_1) endif endfunction function alloc_BigKiller takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1176 else call error("Out of memory: Could not create BigKiller.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1176 endif return this_1 endfunction function BigKiller_init takes integer this_1 returns nothing endfunction function alloc_SensorListener_addSensorListener_EscaperSensorSetup_EscaperSensor_1889 takes nothing returns integer local integer this_1 if SensorListener_firstFree == 0 then if SensorListener_maxIndex < JASS_MAX_ARRAY_SIZE then set SensorListener_maxIndex = SensorListener_maxIndex + 1 set this_1 = SensorListener_maxIndex set SensorListener_typeId[this_1] = 1122 else call error("Out of memory: Could not create SensorListener_addSensorListener_EscaperSensorSetup_EscaperSensor.") set this_1 = 0 endif else set SensorListener_firstFree = SensorListener_firstFree - 1 set this_1 = SensorListener_nextFree[SensorListener_firstFree] set SensorListener_typeId[this_1] = 1122 endif return this_1 endfunction function dispatch_SetupObject_SetupObject_SetupObject_setXY takes integer this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SetupObject.setXY") else call error("Called SetupObject.setXY on invalid object.") endif endif call SetupObject_setXY(this_1, pos_x_1, pos_y_1, pos_z) endfunction function construct_EscaperSensorSetup4 takes integer this_1, unit pactor, real radius, real sensorHeight returns nothing local integer temp = this_1 local unit receiver = createUnit_2354(unit_getOwner(pactor), unit_getTypeId(pactor), unit_getPos3Zero(pactor), unit_getPos3Zero_return_y, unit_getPos3Zero_return_z, unit_getFacingAngle(pactor)) local integer clVar local integer temp_1 local integer temp_2 call unit_addAbility(receiver, Basics_LOCUST_ID) call construct_SetupObject(temp, receiver, pactor, radius) call EscaperSensorSetup_init(this_1) set EscaperSensorSetup_sensorHeight[this_1] = sensorHeight call dispatch_SetupObject_SetupObject_SetupObject_setXY(this_1, vec3_op_plus_4280(vec2_toVec3(unit_getPos(pactor), unit_getPos_return_y), vec2_toVec3_return_y, vec2_toVec3_return_z, 0.01, 0.), vec3_op_plus_return_y_3134, vec3_op_plus_return_z_3136) set temp_1 = this_1 set temp_2 = this_1 set clVar = alloc_SensorListener_addSensorListener_EscaperSensorSetup_EscaperSensor_1889() call construct_SensorListener(clVar) set this_2980[clVar] = this_1 call dispatch_EscaperSensorSetup_EscaperSensor_EscaperSensorSetup_Sensor_addSensorListener(temp_1, temp_2, clVar) endfunction function construct_BigKiller3 takes integer this_1, unit existing returns nothing call construct_EscaperSensorSetup4(this_1, existing, EscaperKillers_COLL_SIZE_BK, EscaperKillers_COLL_SIZE_BK) call BigKiller_init(this_1) endfunction function new_BigKiller_3617 takes unit existing returns integer local integer this_1 = alloc_BigKiller() call construct_BigKiller3(this_1, existing) return this_1 endfunction function callback_forUnitsOfPlayer_SecondDesertMaze_SecondDesert takes integer this_1, unit u_1 returns nothing if unit_getTypeId(u_1) == BuilderConstants_BIG_SAND_KILLER_ID then call new_BigKiller_3617(u_1) endif endfunction function construct_SmallKiller3 takes integer this_1, unit existing returns nothing call construct_EscaperSensorSetup4(this_1, existing, EscaperKillers_COLL_SIZE_SK, EscaperKillers_COLL_SIZE_SK + 16.) call SmallKiller_init(this_1) endfunction function new_SmallKiller_3742 takes unit existing returns integer local integer this_1 = alloc_SmallKiller() call construct_SmallKiller3(this_1, existing) return this_1 endfunction function callback_forUnitsOfPlayer_SecondDesertMaze_SecondDesert_2043 takes integer this_1, unit u_1 returns nothing if unit_getTypeId(u_1) == BuilderConstants_SMALL_SAND_KILLER_ID then call new_SmallKiller_3742(u_1) endif endfunction function alloc_Arcanery takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1194 else call error("Out of memory: Could not create Arcanery.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1194 endif return this_1 endfunction function Arcanery_init takes integer this_1 returns nothing set Arcanery_arcMode[this_1] = 0 set Arcanery_expMode[this_1] = 1 endfunction function Arcanery_recreateEffect takes integer this_1 returns nothing local integer temp if Arcanery_currentEffect[this_1] != 0 then set temp = Arcanery_arcMode[this_1] if temp == 0 then call dispatch_Fx_Fx_Fx_setFx(Arcanery_currentEffect[this_1], Abilities_silenceTarget) elseif temp == 1 then call dispatch_Fx_Fx_Fx_setFx(Arcanery_currentEffect[this_1], "war3mapImported\\BootsofSpeed.mdx") else call dispatch_Fx_Fx_Fx_setFx(Arcanery_currentEffect[this_1], "TC_EnergyBolt.mdx") endif endif endfunction function dispatch_Arcanery_Arcanery_Arcanery_recreateEffect takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Arcanery.recreateEffect") else call error("Called Arcanery.recreateEffect on invalid object.") endif endif call Arcanery_recreateEffect(this_1) endfunction function construct_Fx5 takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, real facing_radians returns nothing call Fx_init(this_1) set Fx_dummy[this_1] = DummyRecycler_get(vec3_toVec2(pos_x_1, pos_y_1, pos_z), vec3_toVec2_return_y, facing_radians) call dispatch_Fx_Fx_Fx_setZ(this_1, pos_z) endfunction function new_Fx takes real pos_x_1, real pos_y_1, real pos_z, real facing_radians returns integer local integer this_1 = alloc_Fx() call construct_Fx5(this_1, pos_x_1, pos_y_1, pos_z, facing_radians) return this_1 endfunction function construct_Arcanery takes integer this_1, unit existing returns nothing local integer receiver call construct_StaticBaseObject(this_1, unit_getPos(existing), unit_getPos_return_y, existing, 102., ref_function_Arcanery_onEnterEv, ref_function_code__Arcanery_Arcanery) call Arcanery_init(this_1) call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(this_1) set receiver = new_Fx(vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0., 76.), vec3_op_plus_return_y, vec3_op_plus_return_z, 0.) call dispatch_Fx_Fx_Fx_setScale(receiver, 1.25) set Arcanery_currentEffect[this_1] = receiver call dispatch_Arcanery_Arcanery_Arcanery_recreateEffect(this_1) endfunction function new_Arcanery takes unit existing returns integer local integer this_1 = alloc_Arcanery() call construct_Arcanery(this_1, existing) return this_1 endfunction function construct_StaticEscaperSensorSetup4 takes integer this_1, unit pactor, real radius, real sensorHeight returns nothing local integer temp = this_1 local unit receiver = createUnit_2354(unit_getOwner(pactor), unit_getTypeId(pactor), unit_getPos3Zero(pactor), unit_getPos3Zero_return_y, unit_getPos3Zero_return_z, unit_getFacingAngle(pactor)) call unit_addAbility(receiver, Basics_LOCUST_ID) call construct_StaticSetupObject(temp, receiver, pactor, radius, ref_function_code__StaticEscaperSensorSetup_EscaperSensor_2648) call StaticEscaperSensorSetup_init(this_1) set StaticEscaperSensorSetup_sensorHeight[this_1] = sensorHeight call dispatch_UnitEntity_Entity_UnitEntity_setXY(this_1, vec3_op_plus_4280(vec2_toVec3(unit_getPos(pactor), unit_getPos_return_y), vec2_toVec3_return_y, vec2_toVec3_return_z, 0.01, 0.), vec3_op_plus_return_y_3134, vec3_op_plus_return_z_3136) endfunction function construct_BigObstacle takes integer this_1, unit existing returns nothing call construct_StaticEscaperSensorSetup4(this_1, existing, Obstacle_EVENT_RADIUS_BIG, Obstacle_EVENT_RADIUS_BIG) call BigObstacle_init(this_1) endfunction function new_BigObstacle takes unit existing returns integer local integer this_1 = alloc_BigObstacle() call construct_BigObstacle(this_1, existing) return this_1 endfunction function alloc_Door takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1213 else call error("Out of memory: Could not create Door.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1213 endif return this_1 endfunction function Door_init takes integer this_1 returns nothing set Door_col[this_1] = 0 set Door_vertical[this_1] = false set Door_opened[this_1] = false endfunction function construct_Door takes integer this_1, unit existing returns nothing call construct_StaticSetupObject(this_1, createUnit(unit_getOwner(existing), BuilderConstants_DOORDUMMY_ID, unit_getPos(existing), unit_getPos_return_y, real_asAngleDegrees(270.)), existing, Door_EVENT_RADIUS, ref_function_Door_keyopen) call Door_init(this_1) set Door_pathing[this_1] = createUnit_2354(Entity_owner[this_1], Door_DOORPATH, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], real_fromDeg(270.)) endfunction function new_Door takes unit existing returns integer local integer this_1 = alloc_Door() call construct_Door(this_1, existing) return this_1 endfunction function construct_GlaiveKiller3 takes integer this_1, unit existing returns nothing call construct_EscaperSensorSetup4(this_1, existing, EscaperKillers_COLL_SIZE_GLAIVE, EscaperKillers_COLL_SIZE_GLAIVE) call GlaiveKiller_init(this_1) endfunction function new_GlaiveKiller_3677 takes unit existing returns integer local integer this_1 = alloc_GlaiveKiller() call construct_GlaiveKiller3(this_1, existing) return this_1 endfunction function alloc_HighObstacle takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1218 else call error("Out of memory: Could not create HighObstacle.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1218 endif return this_1 endfunction function HighObstacle_init takes integer this_1 returns nothing endfunction function construct_HighObstacle takes integer this_1, unit existing returns nothing call construct_StaticEscaperSensorSetup4(this_1, existing, Obstacle_EVENT_RADIUS_HIGH, Obstacle_EVENT_HEIGHT_HIGH) call HighObstacle_init(this_1) endfunction function new_HighObstacle takes unit existing returns integer local integer this_1 = alloc_HighObstacle() call construct_HighObstacle(this_1, existing) return this_1 endfunction function alloc_RevivePoint takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1215 else call error("Out of memory: Could not create RevivePoint.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1215 endif return this_1 endfunction function RevivePoint_init takes integer this_1 returns nothing set RevivePoint_reached[this_1] = false set RevivePoint_startmaze[this_1] = -1 endfunction function int_bitOr takes integer this_1, integer other returns integer return BlzBitOr(this_1, other) endfunction function bitset_set takes integer this_val, integer index returns integer set bitset_set_return_val = int_bitOr(this_val, BitSet_pows[index]) return bitset_set_return_val endfunction function ebrtile_addModifier takes integer this_x, integer this_y, integer this_key, integer this_currentType, integer this_lastType, integer this_modifiers_val, integer modifier returns nothing local hashtable temp = TerrainData_tileMap local integer temp_1 = this_key local integer tuple_temp = bitset_set(this_modifiers_val, modifier) local integer temp_tuple_val = tuple_temp call hashtable_saveInt(temp, temp_1, 3, temp_tuple_val) endfunction function construct_RevivePoint takes integer this_1, unit existing returns nothing local integer tile_x local integer tile_y local integer tile_key local integer tile_currentType local integer tile_lastType local integer tile_modifiers_val local integer tuple_temp local integer tuple_temp_1 local integer tuple_temp_2 local integer tuple_temp_3 local integer tuple_temp_4 local integer tuple_temp_5 call construct_StaticSetupObject(this_1, existing, createUnit(unit_getOwner(existing), BuilderConstants_REVIVE_POINT_ID, unit_getPos(existing), unit_getPos_return_y, 0.), Revivepoint_EVENT_RADIUS, ref_function_RevivePoint_onReach) call RevivePoint_init(this_1) set tuple_temp = vec3_getEBRTile(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) set tuple_temp_1 = vec3_getEBRTile_return_y set tuple_temp_2 = vec3_getEBRTile_return_key set tuple_temp_3 = vec3_getEBRTile_return_currentType set tuple_temp_4 = vec3_getEBRTile_return_lastType set tuple_temp_5 = vec3_getEBRTile_return_modifiers_val set tile_x = tuple_temp set tile_y = tuple_temp_1 set tile_key = tuple_temp_2 set tile_currentType = tuple_temp_3 set tile_lastType = tuple_temp_4 set tile_modifiers_val = tuple_temp_5 call ebrtile_addModifier(tile_x, tile_y, tile_key, tile_currentType, tile_lastType, tile_modifiers_val, 4) endfunction function new_RevivePoint takes unit existing returns integer local integer this_1 = alloc_RevivePoint() call construct_RevivePoint(this_1, existing) return this_1 endfunction function construct_SmallObstacle takes integer this_1, unit existing returns nothing call construct_StaticEscaperSensorSetup4(this_1, existing, Obstacle_EVENT_RADIUS_SMALL, Obstacle_EVENT_RADIUS_SMALL) call SmallObstacle_init(this_1) endfunction function new_SmallObstacle takes unit existing returns integer local integer this_1 = alloc_SmallObstacle() call construct_SmallObstacle(this_1, existing) return this_1 endfunction function checkStaffUnit takes unit u_1 returns nothing local integer temp local integer r call Log_debug("check staff unit") set temp = unit_getTypeId(u_1) if temp == BuilderConstants_REVIVE_POINT_ID then call Log_debug("init startmaze rev") set r = new_RevivePoint(u_1) if u_1 == gg_unit_revp_0002 then set RevivePoint_startmaze[r] = 0 elseif u_1 == gg_unit_revp_0085 then set RevivePoint_startmaze[r] = 1 elseif u_1 == gg_unit_revp_0022 then set RevivePoint_startmaze[r] = 2 elseif u_1 == gg_unit_revp_0226 then set RevivePoint_startmaze[r] = 3 elseif u_1 == gg_unit_revp_0322 then set RevivePoint_startmaze[r] = 4 set Startmazes_svRev = r endif elseif temp == BuilderConstants_DOORORDER_ID then if u_1 != gg_unit_dor2_0023 and u_1 != gg_unit_dor2_0011 then call new_Door(u_1) endif elseif temp == ObstacleObjects_BOBS_ICE_ID then call new_BigObstacle(u_1) elseif temp == ObstacleObjects_SOBS_DESERT_ID then call new_SmallObstacle(u_1) elseif temp == ObstacleObjects_BOBS_CITADEL_ID then call new_BigObstacle(u_1) elseif temp == ObstacleObjects_SOBS_CITADEL_ID then call new_SmallObstacle(u_1) elseif temp == BuilderConstants_SMALL_GRASS_KILLER_ID then call new_SmallKiller_3742(u_1) elseif temp == BuilderConstants_BIG_GRASS_KILLER_ID then call new_BigKiller_3617(u_1) elseif temp == ObstacleObjects_BOBS_DESERT_ID then call new_BigObstacle(u_1) elseif temp == ObstacleObjects_SOBS_ICE_ID then call new_SmallObstacle(u_1) elseif temp == BuilderConstants_BIG_ICE_KILLER_ID then call new_BigKiller_3617(u_1) elseif temp == BuilderConstants_SMALL_ICE_KILLER_ID then call new_SmallKiller_3742(u_1) elseif temp == BuilderConstants_BIG_CITADEL_KILLER_ID then call new_BigKiller_3617(u_1) elseif temp == BuilderConstants_SMALL_CITADEL_KILLER_ID then call new_SmallKiller_3742(u_1) elseif temp == EscaperKillers_GLAIVE_KILLER_ID then call new_GlaiveKiller_3677(u_1) elseif temp == ObstacleObjects_SOBS_GRASS_ID then call new_SmallObstacle(u_1) elseif temp == ObstacleObjects_BOBS_GRASS_ID then call new_BigObstacle(u_1) elseif temp == ObstacleObjects_HOBS_GRASS_ID then call new_HighObstacle(u_1) elseif temp == BuilderConstants_ARCANERY_ID then call new_Arcanery(u_1) endif endfunction function callback_forUnitsOfPlayer_Startmazes takes integer this_1, unit u_1 returns nothing call checkStaffUnit(u_1) endfunction function LinkedList_joinBy takes integer this_1, string separator returns string local string joined = "" local integer iter = dispatch_LinkedList_LinkedList_LinkedList_iterator(this_1) local integer from = iter local string str loop exitwhen not LLIterator_hasNext(from) set str = stringFromIndex(LLIterator_next(from)) if dispatch_LLIterator_LinkedList_LLIterator_hasNext(iter) then set joined = joined + str + separator else set joined = joined + str endif endloop call dispatch_LLIterator_LinkedList_LLIterator_close(iter) return joined endfunction function Texter_setText takes integer this_1, string txt returns nothing call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(this_1) call texttag_center(FText_tt[Texter_text[this_1]], dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, txt, 10.) if Texter_hidden[this_1] then call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, txt, 10., 2., Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, Entity_owner[this_1]) endif endfunction function dispatch_Texter_Texter_Texter_setText takes integer this_1, string txt returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Texter.setText") else call error("Called Texter.setText on invalid object.") endif endif call Texter_setText(this_1, txt) endfunction function run_forSelectedTexters_add_Texter takes integer this_1, integer t returns nothing call dispatch_Texter_Texter_Texter_setText(t, LinkedList_joinBy(tokens[this_1], " ")) endfunction function run_forSelectedTexters_add_Texter_4023 takes integer this_1, integer t returns nothing call dispatch_Texter_Texter_Texter_show(t) endfunction function run_forSelectedTexters_add_Texter_4024 takes integer this_1, integer t returns nothing call dispatch_Texter_Texter_Texter_hide(t) endfunction function dispatch_TexterClsr_Texter_TexterClsr_run takes integer this_1, integer texter returns nothing if TexterClsr_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling TexterClsr.run") else call error("Called TexterClsr.run on invalid object.") endif endif if TexterClsr_typeId[this_1] <= 1498 then if TexterClsr_typeId[this_1] <= 1497 then call run_forSelectedTexters_add_Texter(this_1, texter) else call run_forSelectedTexters_add_Texter_4023(this_1, texter) endif else call run_forSelectedTexters_add_Texter_4024(this_1, texter) endif endfunction function callback_forUnitsOfPlayer_Texter takes integer this_1, unit u_1 returns nothing if IsUnitSelected(u_1, GetTriggerPlayer()) and unit_getTypeId(u_1) == BuilderConstants_TEXTER_ID then call dispatch_TexterClsr_Texter_TexterClsr_run(cb_2284[this_1], unit_getEntity(u_1)) endif endfunction function callback_forUnitsOfPlayer_Texter_Texter takes integer this_1, unit u_1 returns nothing local integer ent local integer obj_1 if IsUnitSelected(u_1, Entity_owner[this_2957[this_1]]) then set ent = unit_getEntity(u_1) if Serializable_typeId[ent] == 1205 then set obj_1 = unit_getEntity(u_1) call dispatch_Texter_Texter_Texter_show(obj_1) endif endif endfunction function callback_forUnitsOfPlayer_Texter_Texter_2047 takes integer this_1, unit u_1 returns nothing local integer ent local integer obj_1 if IsUnitSelected(u_1, Entity_owner[this_2958[this_1]]) then set ent = unit_getEntity(u_1) if Serializable_typeId[ent] == 1205 then set obj_1 = unit_getEntity(u_1) call dispatch_Texter_Texter_Texter_hide(obj_1) endif endif endfunction function getColorFromString takes string s returns integer local boolean isstdcolor = false local integer tuple_temp = 255 local integer tuple_temp_1 = 255 local integer tuple_temp_2 = 255 local integer stringcolor_red = tuple_temp local integer stringcolor_green = tuple_temp_1 local integer stringcolor_blue = tuple_temp_2 local integer i = 1 local integer component local string tempstring local integer ii local integer temp local integer temp_1 local integer tuple_temp_3 local integer tuple_temp_4 local integer tuple_temp_5 loop exitwhen i > 12 if Texter_stdcolors[i] + " " == s then set tuple_temp_3 = playercolor_toColor(player_getColor(Player_players[i - 1])) set tuple_temp_4 = playercolor_toColor_return_green set tuple_temp_5 = playercolor_toColor_return_blue set stringcolor_red = tuple_temp_3 set stringcolor_green = tuple_temp_4 set stringcolor_blue = tuple_temp_5 set isstdcolor = true endif set i = i + 1 endloop if not isstdcolor then set component = 0 set tempstring = "" set ii = 0 set temp = StringLength(s) - 1 loop exitwhen ii > temp if SubString(s, ii, ii + 1) != " " then set tempstring = tempstring + SubString(s, ii, ii + 1) else set temp_1 = component if temp_1 == 0 then set stringcolor_red = S2I(tempstring) elseif temp_1 == 1 then set stringcolor_green = S2I(tempstring) elseif temp_1 == 2 then set stringcolor_blue = S2I(tempstring) endif set component = component + 1 set tempstring = "" endif set ii = ii + 1 endloop endif set getColorFromString_return_red = stringcolor_red set getColorFromString_return_green = stringcolor_green set getColorFromString_return_blue = stringcolor_blue return getColorFromString_return_red endfunction function unit_setVertexColor_4203 takes unit this_1, integer col_red, integer col_green, integer col_blue returns nothing call SetUnitVertexColor(this_1, col_red, col_green, col_blue, 255) endfunction function Texter_setColor takes integer ent, string color returns nothing local integer tuple_temp = getColorFromString(color + " ") local integer tuple_temp_1 = getColorFromString_return_green local integer tuple_temp_2 = getColorFromString_return_blue local integer textcolor_red = tuple_temp local integer textcolor_green = tuple_temp_1 local integer textcolor_blue = tuple_temp_2 local integer obj_1 local integer obj_2 local integer obj_3 local integer instanceOfTemp local integer tuple_temp_3 local integer tuple_temp_4 local integer tuple_temp_5 if Serializable_typeId[ent] == 1205 then set obj_1 = ent if Texter_col_red[obj_1] != textcolor_red or Texter_col_green[obj_1] != textcolor_green or Texter_col_blue[obj_1] != textcolor_blue then set tuple_temp_3 = textcolor_red set tuple_temp_4 = textcolor_green set tuple_temp_5 = textcolor_blue set Texter_col_red[obj_1] = tuple_temp_3 set Texter_col_green[obj_1] = tuple_temp_4 set Texter_col_blue[obj_1] = tuple_temp_5 call texttag_setColor(FText_tt[Texter_text[obj_1]], Texter_col_red[obj_1], Texter_col_green[obj_1], Texter_col_blue[obj_1], 0) call createFText_2344(Entity_pos_x[obj_1], Entity_pos_y[obj_1], Entity_pos_z[obj_1], 0., 0.05, "Color Set", 10., 2., color_withAlpha(Texter_col_red[obj_1], Texter_col_green[obj_1], Texter_col_blue[obj_1], 0), color_withAlpha_return_green, color_withAlpha_return_blue, color_withAlpha_return_alpha, Entity_owner[obj_1]) endif elseif Serializable_typeId[ent] == 1212 then set obj_2 = ent call unit_setVertexColor_4203(UnitEntity_actor[obj_2], textcolor_red, textcolor_green, textcolor_blue) call unit_setVertexColor_4203(StaticSetupObject_setup[obj_2], textcolor_red, textcolor_green, textcolor_blue) else set instanceOfTemp = Serializable_typeId[ent] if instanceOfTemp >= 1171 and instanceOfTemp <= 1191 then set obj_3 = ent call unit_setVertexColor_4203(UnitEntity_actor[obj_3], textcolor_red, textcolor_green, textcolor_blue) call unit_setVertexColor_4203(SetupObject_setup[obj_3], textcolor_red, textcolor_green, textcolor_blue) endif endif endfunction function callback_forUnitsOfPlayer_add_Texter takes integer this_1, unit u_1 returns nothing if IsUnitSelected(u_1, GetTriggerPlayer()) then call Texter_setColor(unit_getEntity(u_1), LinkedList_joinBy(tokens_3016[this_1], " ")) endif endfunction function SetupObject_setFacing takes integer this_1, real angl_radians returns nothing call unit_setFacing(UnitEntity_actor[this_1], angl_radians) call unit_setFacing(SetupObject_setup[this_1], angl_radians) endfunction function dispatch_SetupObject_SetupObject_SetupObject_setFacing takes integer this_1, real angl_radians returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SetupObject.setFacing") else call error("Called SetupObject.setFacing on invalid object.") endif endif call SetupObject_setFacing(this_1, angl_radians) endfunction function callback_forUnitsSelected_add_Pointer takes integer this_1, unit u_1 returns nothing local integer pointer if Serializable_typeId[unit_getEntity(u_1)] == 1183 then set pointer = unit_getEntity(u_1) call dispatch_SetupObject_SetupObject_SetupObject_setFacing(pointer, angle_radians[this_1]) endif endfunction function dispatch_ForGroupCallback_ClosureForGroups_ForGroupCallback_callback takes integer this_1, unit u_1 returns nothing if ForGroupCallback_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling ForGroupCallback.callback") else call error("Called ForGroupCallback.callback on invalid object.") endif endif if ForGroupCallback_typeId[this_1] <= 872 then if ForGroupCallback_typeId[this_1] <= 866 then if ForGroupCallback_typeId[this_1] <= 863 then if ForGroupCallback_typeId[this_1] <= 861 then if ForGroupCallback_typeId[this_1] <= 860 then call callback_forEachFrom_LinkedList(this_1, u_1) else call callback_forEachFrom_Preloader(this_1, u_1) endif elseif ForGroupCallback_typeId[this_1] <= 862 then call callback_forUnitsInRange_Jumper_Jumper(this_1, u_1) else call callback_forUnitsInRange_MemoryAccessPedestal_Pedestal(this_1, u_1) endif elseif ForGroupCallback_typeId[this_1] <= 865 then if ForGroupCallback_typeId[this_1] <= 864 then call callback_forUnitsInRange_Projectile_Projectile(this_1, u_1) else call callback_forUnitsInRange_Spinner_Spinner(this_1, u_1) endif else call callback_forUnitsInRange_Trap_Trap(this_1, u_1) endif elseif ForGroupCallback_typeId[this_1] <= 869 then if ForGroupCallback_typeId[this_1] <= 868 then if ForGroupCallback_typeId[this_1] <= 867 then call callback_forUnitsInRange_Waypoint_Waypoint(this_1, u_1) else call callback_forUnitsInRange_WeaponTypes(this_1, u_1) endif else call callback_forUnitsInRange_WeaponTypes_2034(this_1, u_1) endif elseif ForGroupCallback_typeId[this_1] <= 871 then if ForGroupCallback_typeId[this_1] <= 870 then call callback_forUnitsInRange_WeaponTypes_2035(this_1, u_1) else call callback_forUnitsInRange_doAfter_Minion_Minion(this_1, u_1) endif else call callback_forUnitsInRange_doAfter_SpellTarget_BossSpellTarget(this_1, u_1) endif elseif ForGroupCallback_typeId[this_1] <= 878 then if ForGroupCallback_typeId[this_1] <= 875 then if ForGroupCallback_typeId[this_1] <= 874 then if ForGroupCallback_typeId[this_1] <= 873 then call callback_forUnitsInRect_MGAgar_MGAgar(this_1, u_1) else call callback_forUnitsInRect_MGSlide_MGSlide(this_1, u_1) endif else call callback_forUnitsInRect_MGSlide_MGSlide_2040(this_1, u_1) endif elseif ForGroupCallback_typeId[this_1] <= 877 then if ForGroupCallback_typeId[this_1] <= 876 then call callback_forUnitsInRect_SetupBox_SetupBox(this_1, u_1) else call callback_forUnitsOfPlayer_SecondDesertMaze_SecondDesert(this_1, u_1) endif else call callback_forUnitsOfPlayer_SecondDesertMaze_SecondDesert_2043(this_1, u_1) endif elseif ForGroupCallback_typeId[this_1] <= 881 then if ForGroupCallback_typeId[this_1] <= 880 then if ForGroupCallback_typeId[this_1] <= 879 then call callback_forUnitsOfPlayer_Startmazes(this_1, u_1) else call callback_forUnitsOfPlayer_Texter(this_1, u_1) endif else call callback_forUnitsOfPlayer_Texter_Texter(this_1, u_1) endif elseif ForGroupCallback_typeId[this_1] <= 883 then if ForGroupCallback_typeId[this_1] <= 882 then call callback_forUnitsOfPlayer_Texter_Texter_2047(this_1, u_1) else call callback_forUnitsOfPlayer_add_Texter(this_1, u_1) endif else call callback_forUnitsSelected_add_Pointer(this_1, u_1) endif endfunction function forUnitsInRange_3286 takes real pos_x_1, real pos_y_1, real radius, boolean collisionSizeFiltering, integer c returns nothing local unit u_1 local group from if collisionSizeFiltering then call pushCallback(c) call GroupEnumUnitsInRange(Group_ENUM_GROUP, pos_x_1, pos_y_1, radius + Basics_MAX_COLLISION_SIZE, null) set from = Group_ENUM_GROUP loop exitwhen not group_hasNext(from) set u_1 = group_next(from) if IsUnitInRangeXY(u_1, pos_x_1, pos_y_1, radius) then call dispatch_ForGroupCallback_ClosureForGroups_ForGroupCallback_callback(c, u_1) endif endloop call popCallback() else call pushCallback(c) call GroupEnumUnitsInRange(ClosureForGroups_DUMMY_GROUP, pos_x_1, pos_y_1, radius, ClosureForGroups_filter) call popCallback() endif endfunction function forUnitsInRange takes real pos_x_1, real pos_y_1, real radius, integer c returns nothing call forUnitsInRange_3286(pos_x_1, pos_y_1, radius, false, c) endfunction function Spinner_onCast takes integer this_1 returns nothing local integer id = GetSpellAbilityId() local integer temp = id local unit u_1 local integer data_1 local integer clVar local real temp_x local real temp_y local real tuple_temp local real tuple_temp_1 if temp == BuilderConstants_TURN_ON_ID then call dispatch_SetupObject_SetupObject_SetupObject_setEnabled(this_1, true) elseif temp == BuilderConstants_TURN_OFF_ID then call dispatch_SetupObject_SetupObject_SetupObject_setEnabled(this_1, false) elseif temp == SpinnerObjects_SPIN_ADD_SINGLE_ID then set u_1 = GetSpellTargetUnit() set data_1 = unit_getEntity(u_1) if Entity_owner[this_1] == Entity_owner[this_1] then call dispatch_Spinner_Spinner_Spinner_checkObj(this_1, data_1) endif elseif temp == SpinnerObjects_SPIN_ADD_GROUP_ID then set tuple_temp = EventData_getSpellTargetPos() set tuple_temp_1 = EventData_getSpellTargetPos_return_y set temp_x = tuple_temp set temp_y = tuple_temp_1 set clVar = alloc_ForGroupCallback_forUnitsInRange_Spinner_Spinner() set this_2997[clVar] = this_1 call forUnitsInRange(temp_x, temp_y, 300., clVar) elseif temp == SpinnerObjects_SPIN_INC_SPEED_ID then call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(Spinner_spinSpeed[this_1], this_1, 10. * Angle_DEGTORAD) elseif temp == SpinnerObjects_SPIN_DEC_SPEED_ID then call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(Spinner_spinSpeed[this_1], this_1, - (10. * Angle_DEGTORAD)) elseif temp == SpinnerObjects_SPIN_COS_INC_ID then call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(Spinner_cosFactor[this_1], this_1, 1.) elseif temp == SpinnerObjects_SPIN_COS_DEC_ID then if dispatch_ConfigValue_ConfigValue_ConfigValue_get(Spinner_cosFactor[this_1]) == 0. and dispatch_ConfigValue_ConfigValue_ConfigValue_get(Spinner_sinFactor[this_1]) == 0. then set Spinner_useSuperFormula[this_1] = not Spinner_useSuperFormula[this_1] else call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(Spinner_cosFactor[this_1], this_1, 0.) endif elseif temp == SpinnerObjects_SPIN_SIN_INC_ID then call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(Spinner_sinFactor[this_1], this_1, 1.) elseif temp == SpinnerObjects_SPIN_SIN_DEC_ID then call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(Spinner_sinFactor[this_1], this_1, 0.) endif endfunction function dispatch_Spinner_Spinner_Spinner_onCast takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Spinner.onCast") else call error("Called Spinner.onCast on invalid object.") endif endif call Spinner_onCast(this_1) endfunction function onEvent_add_Spinner_Spinner takes integer this_1 returns nothing call dispatch_Spinner_Spinner_Spinner_onCast(this_2995[this_1]) endfunction function onEvent_add_Spinner_Spinner_3855 takes integer this_1 returns nothing call dispatch_Spinner_Spinner_Spinner_onCast(this_2996[this_1]) endfunction function StaticBaseObject_setRallyPoint takes integer this_1, real tpos_x_1, real tpos_y_1 returns nothing local real tuple_temp = vec2_toVec3(tpos_x_1, tpos_y_1) local real tuple_temp_1 = vec2_toVec3_return_y local real tuple_temp_2 = vec2_toVec3_return_z local real tuple_temp_3 set StaticBaseObject_rallyPoint_x[this_1] = tuple_temp set StaticBaseObject_rallyPoint_y[this_1] = tuple_temp_1 set StaticBaseObject_rallyPoint_z[this_1] = tuple_temp_2 set StaticBaseObject_rallyUnit[this_1] = null set tuple_temp_3 = vec3_angleTo2d_4259(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], StaticBaseObject_rallyPoint_x[this_1], StaticBaseObject_rallyPoint_y[this_1], StaticBaseObject_rallyPoint_z[this_1]) set StaticBaseObject_rallyAngle_radians[this_1] = tuple_temp_3 call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(this_1) endfunction function dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint takes integer this_1, real tpos_x_1, real tpos_y_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling StaticBaseObject.setRallyPoint") else call error("Called StaticBaseObject.setRallyPoint on invalid object.") endif endif call StaticBaseObject_setRallyPoint(this_1, tpos_x_1, tpos_y_1) endfunction function StaticBaseObject_adjustRally takes integer this_1 returns nothing local widget target = GetOrderTarget() local unit utarget = GetOrderTargetUnit() local item itm = GetOrderTargetItem() local real tuple_temp = GetOrderPointX() local real tuple_temp_1 = GetOrderPointY() local real targetPoint_x = tuple_temp local real targetPoint_y = tuple_temp_1 local integer orderid = GetIssuedOrderId() local integer data_1 local integer instanceOfTemp local boolean andLeft local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 if orderid == 851980 or orderid == 851971 then if target == null then if itm == null then call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(this_1, targetPoint_x, targetPoint_y) else call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(this_1, item_getPos(itm), item_getPos_return_y) endif else if utarget != null then set data_1 = unit_getEntity(utarget) if data_1 != 0 then set instanceOfTemp = Serializable_typeId[data_1] set andLeft = instanceOfTemp >= 1171 and instanceOfTemp <= 1191 else set andLeft = false endif if andLeft then set StaticBaseObject_rallyUnit[this_1] = UnitEntity_actor[data_1] else set StaticBaseObject_rallyUnit[this_1] = utarget endif call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(this_1) endif set tuple_temp_2 = vec2_toVec3(widget_getPos(target), widget_getPos_return_y) set tuple_temp_3 = vec2_toVec3_return_y set tuple_temp_4 = vec2_toVec3_return_z set StaticBaseObject_rallyPoint_x[this_1] = tuple_temp_2 set StaticBaseObject_rallyPoint_y[this_1] = tuple_temp_3 set StaticBaseObject_rallyPoint_z[this_1] = tuple_temp_4 endif if StaticBaseObject_noRally[this_1] != null then call effect_destr(StaticBaseObject_noRally[this_1]) set StaticBaseObject_noRally[this_1] = null endif endif endfunction function dispatch_StaticBaseObject_BaseObject_StaticBaseObject_adjustRally takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling StaticBaseObject.adjustRally") else call error("Called StaticBaseObject.adjustRally on invalid object.") endif endif call StaticBaseObject_adjustRally(this_1) endfunction function onEvent_add_StaticBaseObject_BaseObject takes integer this_1 returns nothing call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_adjustRally(unit_getEntity(GetOrderedUnit())) endfunction function onEvent_add_StaticBaseObject_BaseObject_3857 takes integer this_1 returns nothing call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_adjustRally(unit_getEntity(GetOrderedUnit())) endfunction function StaticBaseObject_setEnabled takes integer this_1, boolean flag returns nothing local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local string path if flag and ( not StaticBaseObject_enabled[this_1]) then set StaticBaseObject_enabled[this_1] = true call dispatch_Entity_Entity_Entity_DupletListModule_activate(this_1) set receiver = UnitEntity_actor[this_1] call unit_removeAbility(receiver, BuilderConstants_TURN_ON_ID) set receiver_1 = receiver call unit_addAbility(receiver_1, BuilderConstants_TURN_OFF_ID) call flashEffect(Abilities_ancestralSpiritCaster, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) if StaticBaseObject_disFx[this_1] != null then call effect_destr(StaticBaseObject_disFx[this_1]) endif elseif StaticBaseObject_enabled[this_1] then set StaticBaseObject_enabled[this_1] = false call dispatch_Entity_Entity_Entity_DupletListModule_deactivate(this_1) set receiver_2 = UnitEntity_actor[this_1] call unit_removeAbility(receiver_2, BuilderConstants_TURN_OFF_ID) set receiver_3 = receiver_2 call unit_addAbility(receiver_3, BuilderConstants_TURN_ON_ID) if StaticBaseObject_disFx[this_1] != null then call effect_destr(StaticBaseObject_disFx[this_1]) endif set path = "" if Player_localPlayer == Entity_owner[this_1] then set path = Abilities_sleepTarget endif set StaticBaseObject_disFx[this_1] = addEffect_1563(path, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) endif endfunction function dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setEnabled takes integer this_1, boolean flag returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling StaticBaseObject.setEnabled") else call error("Called StaticBaseObject.setEnabled on invalid object.") endif endif call StaticBaseObject_setEnabled(this_1, flag) endfunction function StaticBaseObject_onCast takes integer this_1 returns nothing local integer id = GetSpellAbilityId() local integer temp = id if temp == BuilderConstants_TURN_ON_ID then call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setEnabled(this_1, true) elseif temp == BuilderConstants_TURN_OFF_ID then call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setEnabled(this_1, false) endif endfunction function Booster_onCast takes integer this_1 returns nothing local integer id local integer temp call StaticBaseObject_onCast(this_1) set id = GetSpellAbilityId() set temp = id if temp == Booster_SPEED_UP_ID then call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(Booster_boostspeed[this_1], this_1, 525.) elseif temp == Booster_SPEED_DOWN_ID then call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(Booster_boostspeed[this_1], this_1, 25.) endif endfunction function Jumper_goos_set takes integer instanceId, integer arrayIndex, integer value returns nothing if arrayIndex < 0 or arrayIndex >= 5 then call error("Index out of Bounds") elseif arrayIndex <= 2 then if arrayIndex <= 1 then if arrayIndex <= 0 then set Jumper_goos_0[instanceId] = value else set Jumper_goos_1[instanceId] = value endif else set Jumper_goos_2[instanceId] = value endif elseif arrayIndex <= 3 then set Jumper_goos_3[instanceId] = value else set Jumper_goos_4[instanceId] = value endif endfunction function createImage takes string path, real pos_x_1, real pos_y_1, real sizeX, real sizeY returns image return CreateImage(path, sizeX, sizeY, 0., pos_x_1, pos_y_1, 0., sizeX / 2., sizeY / 2., 0., 1) endfunction function image_show takes image this_1 returns nothing call SetImageRenderAlways(this_1, true) endfunction function alloc_Goo takes nothing returns integer local integer this_1 if Goo_firstFree == 0 then if Goo_maxIndex < JASS_MAX_ARRAY_SIZE then set Goo_maxIndex = Goo_maxIndex + 1 set this_1 = Goo_maxIndex set Goo_typeId[this_1] = 890 else call error("Out of memory: Could not create Goo.") set this_1 = 0 endif else set Goo_firstFree = Goo_firstFree - 1 set this_1 = Goo_nextFree[Goo_firstFree] set Goo_typeId[this_1] = 890 endif return this_1 endfunction function Goo_init takes integer this_1 returns nothing endfunction function construct_Goo takes integer this_1, image img, real pos_x_1, real pos_y_1 returns nothing local real tuple_temp local real tuple_temp_1 call Goo_init(this_1) set Goo_img[this_1] = img set tuple_temp = pos_x_1 set tuple_temp_1 = pos_y_1 set Goo_pos_x[this_1] = tuple_temp set Goo_pos_y[this_1] = tuple_temp_1 endfunction function new_Goo takes image img, real pos_x_1, real pos_y_1 returns integer local integer this_1 = alloc_Goo() call construct_Goo(this_1, img, pos_x_1, pos_y_1) return this_1 endfunction function Jumper_onCast takes integer this_1 returns nothing local integer id local integer temp local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local unit receiver_4 local unit receiver_5 local real tpos_x_1 local real tpos_y_1 local image goo local image receiver_6 local unit receiver_7 local unit receiver_8 local unit receiver_9 local unit receiver_10 local unit receiver_11 local unit receiver_12 local real tuple_temp local real tuple_temp_1 call StaticBaseObject_onCast(this_1) set id = GetSpellAbilityId() set temp = id if temp == Jumper_MODE_FORCED_ID then set receiver = UnitEntity_actor[this_1] call unit_removeAbility(receiver, Jumper_MODE_FORCED_ID) set receiver_1 = receiver call unit_addAbility(receiver_1, Jumper_MODE_UNFORCED_ID) set receiver_2 = receiver_1 call unit_setVertexColor_4203(receiver_2, 75, 95, 205) set Jumper_mode[this_1] = 1 call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(this_1) elseif temp == Jumper_MODE_UNFORCED_ID then set receiver_3 = UnitEntity_actor[this_1] call unit_removeAbility(receiver_3, Jumper_MODE_UNFORCED_ID) set receiver_4 = receiver_3 call unit_addAbility(receiver_4, Jumper_MODE_FORCED_ID) set receiver_5 = receiver_4 call unit_setVertexColor_4203(receiver_5, 50, 50, 255) set Jumper_mode[this_1] = 0 elseif temp == Jumper_DECREASE_FORCE_ID then call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(Jumper_jumpForce[this_1], this_1, 6.) elseif temp == Jumper_INCREASE_FORCE_ID then call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(Jumper_jumpForce[this_1], this_1, 30.) elseif temp == Jumper_SPECIAL_ID then if Jumper_goocounter[this_1] < 5 then set tuple_temp = EventData_getSpellTargetPos() set tuple_temp_1 = EventData_getSpellTargetPos_return_y set tpos_x_1 = tuple_temp set tpos_y_1 = tuple_temp_1 set receiver_6 = createImage("textures\\blugoo.blp", tpos_x_1, tpos_y_1, 128., 128.) call image_show(receiver_6) set goo = receiver_6 call Jumper_goos_set(this_1, Jumper_goocounter[this_1], new_Goo(goo, tpos_x_1, tpos_y_1)) set Jumper_goocounter[this_1] = Jumper_goocounter[this_1] + 1 call ebrtile_addModifier(vec2_getEBRTile(EventData_getSpellTargetPos(), EventData_getSpellTargetPos_return_y), vec2_getEBRTile_return_y, vec2_getEBRTile_return_key, vec2_getEBRTile_return_currentType, vec2_getEBRTile_return_lastType, vec2_getEBRTile_return_modifiers_val, 2) endif elseif temp == BuilderConstants_MODE_BOTH_ID then set receiver_7 = UnitEntity_actor[this_1] call unit_removeAbility(receiver_7, BuilderConstants_MODE_BOTH_ID) set receiver_8 = receiver_7 call unit_addAbility(receiver_8, BuilderConstants_MODE_ESCAPERS_ID) set Jumper_permission[this_1] = 0 elseif temp == BuilderConstants_MODE_ESCAPERS_ID then set receiver_9 = UnitEntity_actor[this_1] call unit_removeAbility(receiver_9, BuilderConstants_MODE_ESCAPERS_ID) set receiver_10 = receiver_9 call unit_addAbility(receiver_10, BuilderConstants_MODE_KILLERS_ID) set Jumper_permission[this_1] = 1 elseif temp == BuilderConstants_MODE_KILLERS_ID then set receiver_11 = UnitEntity_actor[this_1] call unit_removeAbility(receiver_11, BuilderConstants_MODE_KILLERS_ID) set receiver_12 = receiver_11 call unit_addAbility(receiver_12, BuilderConstants_MODE_BOTH_ID) set Jumper_permission[this_1] = 2 endif endfunction function alloc_ForGroupCallback_forUnitsInRange_MemoryAccessPedestal_Pedestal takes nothing returns integer local integer this_1 if ForGroupCallback_firstFree == 0 then if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1 set this_1 = ForGroupCallback_maxIndex set ForGroupCallback_typeId[this_1] = 863 else call error("Out of memory: Could not create ForGroupCallback_forUnitsInRange_MemoryAccessPedestal_Pedestal.") set this_1 = 0 endif else set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1 set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree] set ForGroupCallback_typeId[this_1] = 863 endif return this_1 endfunction function getTileFromType takes real pos_x_1, real pos_y_1 returns integer local integer ttype_1 = GetTerrainType(pos_x_1, pos_y_1) local integer rdat = getRegionData_3302(pos_x_1, pos_y_1) local integer temp = ttype_1 local integer temp_1 = temp local integer temp_tuple_walkableId local integer tuple_temp call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdat) set tuple_temp = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_walkableId set temp_tuple_walkableId = tuple_temp if temp_1 == temp_tuple_walkableId then return 1 elseif temp == BuilderConstants_REVICE then return 6 elseif temp == BuilderConstants_CONTROLLABLEICE then return 4 elseif temp == BuilderConstants_UNCONTROLLABLEICE then return 5 elseif temp == 1147958883 then return 2 elseif temp == BuilderConstants_POISON then return 3 endif return 0 endfunction function alloc_TileData takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1227 else call error("Out of memory: Could not create TileData.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1227 endif return this_1 endfunction function TileData_init takes integer this_1 returns nothing set TileData_tile[this_1] = 1 endfunction function construct_TileData2 takes integer this_1, real realpos_x, real realpos_y, integer xoff, integer yoff, player owner returns nothing local real tuple_temp local real tuple_temp_1 call TileData_init(this_1) set tuple_temp = realpos_x set tuple_temp_1 = realpos_y set TileData_pos_x[this_1] = tuple_temp set TileData_pos_y[this_1] = tuple_temp_1 set TileData_xoff[this_1] = xoff set TileData_yoff[this_1] = yoff set TileData_owner[this_1] = owner set TileData_fx[this_1] = addEffect(Abilities_vengeanceMissile, TileData_pos_x[this_1], TileData_pos_y[this_1]) endfunction function new_TileData_3771 takes real realpos_x, real realpos_y, integer xoff, integer yoff, player owner returns integer local integer this_1 = alloc_TileData() call construct_TileData2(this_1, realpos_x, realpos_y, xoff, yoff, owner) return this_1 endfunction function vec2_toTile takes real this_x, real this_y returns real set vec2_toTile_return_x = real_round(this_x / 128.) * 128. set vec2_toTile_return_y = real_round(this_y / 128.) * 128. return vec2_toTile_return_x endfunction function MemoryAccessPedestal_addTile takes integer this_1, real tpos_x_1, real tpos_y_1, boolean w_removeIfExists returns nothing local real tuple_temp = vec2_toTile(tpos_x_1, tpos_y_1) local real tuple_temp_1 = vec2_toTile_return_y local real targPos_x = tuple_temp local real targPos_y = tuple_temp_1 local integer mtile_x local integer mtile_y local integer mtile_key local integer tdata local integer tuple_temp_2 local integer tuple_temp_3 local integer tuple_temp_4 if dispatch_RegionData_RegionData_RegionData_canBuild(getRegionData_3302(targPos_x, targPos_y), Entity_owner[this_1]) then set tuple_temp_2 = vec2_getEBRTile(targPos_x, targPos_y) set tuple_temp_3 = vec2_getEBRTile_return_y set tuple_temp_4 = vec2_getEBRTile_return_key set mtile_x = tuple_temp_2 set mtile_y = tuple_temp_3 set mtile_key = tuple_temp_4 if not dispatch_HashMap_HashMap_HashMap_has(MemoryAccessPedestal_tileMap[this_1], mtile_key) then if getTileFromType(targPos_x, targPos_y) != 0 then set tdata = new_TileData_3771(targPos_x, targPos_y, mtile_x, mtile_y, Entity_owner[this_1]) call dispatch_LinkedList_LinkedList_LinkedList_add_1(MemoryAccessPedestal_tiles[this_1], tdata) call dispatch_HashMap_HashMap_HashMap_put(MemoryAccessPedestal_tileMap[this_1], mtile_key, tdata) endif endif endif endfunction function dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_addTile takes integer this_1, real tpos_x_1, real tpos_y_1, boolean w_removeIfExists returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling MemoryAccessPedestal.addTile") else call error("Called MemoryAccessPedestal.addTile on invalid object.") endif endif call MemoryAccessPedestal_addTile(this_1, tpos_x_1, tpos_y_1, w_removeIfExists) endfunction function alloc_CallbackSingle_nullTimer_MemoryAccessPedestal_Pedestal takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 712 else call error("Out of memory: Could not create CallbackSingle_nullTimer_MemoryAccessPedestal_Pedestal.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 712 endif return this_1 endfunction function MemoryAccessPedestal_loadSlot takes integer this_1, integer slotId_1 returns nothing local integer clVar = alloc_CallbackSingle_nullTimer_MemoryAccessPedestal_Pedestal() call construct_CallbackSingle(clVar) set this_3000[clVar] = this_1 set slotId[clVar] = slotId_1 call nullTimer(clVar) endfunction function dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_loadSlot takes integer this_1, integer slotId_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling MemoryAccessPedestal.loadSlot") else call error("Called MemoryAccessPedestal.loadSlot on invalid object.") endif endif call MemoryAccessPedestal_loadSlot(this_1, slotId_1) endfunction function alloc_CallbackSingle_nullTimer_MemoryAccessPedestal_Pedestal_1638 takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 713 else call error("Out of memory: Could not create CallbackSingle_nullTimer_MemoryAccessPedestal_Pedestal.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 713 endif return this_1 endfunction function MemoryAccessPedestal_saveSlot takes integer this_1, integer slotId_1 returns nothing local integer clVar call Log_debug("Save slot " + int_toString(slotId_1)) set clVar = alloc_CallbackSingle_nullTimer_MemoryAccessPedestal_Pedestal_1638() call construct_CallbackSingle(clVar) set this_3007[clVar] = this_1 set slotId_2878[clVar] = slotId_1 call nullTimer(clVar) endfunction function dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_saveSlot takes integer this_1, integer slotId_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling MemoryAccessPedestal.saveSlot") else call error("Called MemoryAccessPedestal.saveSlot on invalid object.") endif endif call MemoryAccessPedestal_saveSlot(this_1, slotId_1) endfunction function MemoryAccessPedestal_onCast takes integer this_1 returns nothing local integer id local real tpos_x_1 local real tpos_y_1 local integer temp local integer clVar local integer wval local integer x local integer temp_1 local integer y local integer temp_2 local real temp_x local real temp_y local real temp_3 local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 call StaticBaseObject_onCast(this_1) set id = GetSpellAbilityId() set tuple_temp = EventData_getSpellTargetPos() set tuple_temp_1 = EventData_getSpellTargetPos_return_y set tpos_x_1 = tuple_temp set tpos_y_1 = tuple_temp_1 set temp = id if temp == PedestalObjects_SELECT_AOE_ID then set tuple_temp_2 = tpos_x_1 set tuple_temp_3 = tpos_y_1 set temp_x = tuple_temp_2 set temp_y = tuple_temp_3 set temp_3 = PedestalObjects_AOE_PICK_RANGE set clVar = alloc_ForGroupCallback_forUnitsInRange_MemoryAccessPedestal_Pedestal() set this_3011[clVar] = this_1 call forUnitsInRange(temp_x, temp_y, temp_3, clVar) elseif temp == PedestalObjects_SELECT_SINGLE_ID then if Entity_owner[unit_getEntity(GetSpellTargetUnit())] == Entity_owner[this_1] then call dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_addObj(this_1, unit_getEntity(GetSpellTargetUnit()), true) endif elseif temp == PedestalObjects_SELECT_TILE_ID then call dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_addTile(this_1, tpos_x_1, tpos_y_1, true) elseif temp == PedestalObjects_SAVE1_ID then call dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_saveSlot(this_1, 1) elseif temp == PedestalObjects_SAVE2_ID then call dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_saveSlot(this_1, 2) elseif temp == PedestalObjects_SAVE3_ID then call dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_saveSlot(this_1, 3) elseif temp == PedestalObjects_SAVE4_ID then call dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_saveSlot(this_1, 4) elseif temp == PedestalObjects_LOAD1_ID then call dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_loadSlot(this_1, 1) elseif temp == PedestalObjects_LOAD2_ID then call dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_loadSlot(this_1, 2) elseif temp == PedestalObjects_LOAD3_ID then call dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_loadSlot(this_1, 3) elseif temp == PedestalObjects_LOAD4_ID then call dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_loadSlot(this_1, 4) elseif temp == PedestalObjects_SELECT_AOE_TILE_ID then set wval = real_round(PedestalObjects_AOE_PICK_RANGE / 128.) set x = - wval set temp_1 = wval loop exitwhen x > temp_1 set y = - wval set temp_2 = wval loop exitwhen y > temp_2 call dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_addTile(this_1, vec2_op_plus(tpos_x_1, tpos_y_1, x * 128., y * 128.), vec2_op_plus_return_y, false) set y = y + 1 endloop set x = x + 1 endloop endif endfunction function Teleporter_onCast takes integer this_1 returns nothing local integer id local integer temp local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local unit receiver_4 local unit receiver_5 call StaticBaseObject_onCast(this_1) set id = GetSpellAbilityId() set temp = id if temp == BuilderConstants_MODE_BOTH_ID then set receiver = UnitEntity_actor[this_1] call unit_removeAbility(receiver, BuilderConstants_MODE_BOTH_ID) set receiver_1 = receiver call unit_addAbility(receiver_1, BuilderConstants_MODE_ESCAPERS_ID) set Teleporter_mode[this_1] = 0 elseif temp == BuilderConstants_MODE_ESCAPERS_ID then set receiver_2 = UnitEntity_actor[this_1] call unit_removeAbility(receiver_2, BuilderConstants_MODE_ESCAPERS_ID) set receiver_3 = receiver_2 call unit_addAbility(receiver_3, BuilderConstants_MODE_KILLERS_ID) set Teleporter_mode[this_1] = 1 elseif temp == BuilderConstants_MODE_KILLERS_ID then set receiver_4 = UnitEntity_actor[this_1] call unit_removeAbility(receiver_4, BuilderConstants_MODE_KILLERS_ID) set receiver_5 = receiver_4 call unit_addAbility(receiver_5, BuilderConstants_MODE_BOTH_ID) set Teleporter_mode[this_1] = 2 endif endfunction function realToIndex takes real r returns integer return real_toInt(r * TypeCasting_R2I_PRECISION) endfunction function UnitCreator_refreshDelays takes integer this_1 returns nothing local integer i local integer temp if UnitCreator_tmode[this_1] == 1 then call dispatch_LinkedList_LinkedList_LinkedList_clear(UnitCreator_delays[this_1]) set i = 2 + GetRandomInt(0, 1) set temp = real_toInt(UnitCreator_interval[this_1]) * 4 loop exitwhen i > temp call dispatch_LinkedList_LinkedList_LinkedList_add_1(UnitCreator_delays[this_1], realToIndex(i * 0.25)) set i = i + 1 endloop call dispatch_LinkedList_LinkedList_LinkedList_shuffle(UnitCreator_delays[this_1]) call dispatch_LinkedList_LinkedList_LinkedList_shuffle(UnitCreator_delays[this_1]) endif endfunction function dispatch_UnitCreator_Unitcreator_UnitCreator_refreshDelays takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling UnitCreator.refreshDelays") else call error("Called UnitCreator.refreshDelays on invalid object.") endif endif call UnitCreator_refreshDelays(this_1) endfunction function UnitCreator_onCast takes integer this_1 returns nothing local integer id local integer temp local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 call StaticBaseObject_onCast(this_1) set id = GetSpellAbilityId() set temp = id if temp == Unitcreator_INCREASE_INTERVAL_ID then if UnitCreator_interval[this_1] >= 15. then call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Max", 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) else set UnitCreator_interval[this_1] = UnitCreator_interval[this_1] + 0.25 call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Intervall " + R2SW(UnitCreator_interval[this_1], 1, 2), 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) endif call dispatch_UnitCreator_Unitcreator_UnitCreator_refreshDelays(this_1) elseif temp == Unitcreator_DECREASE_INTERVAL_ID then if UnitCreator_interval[this_1] < 0.75 then call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Min", 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) else set UnitCreator_interval[this_1] = UnitCreator_interval[this_1] - 0.25 call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Intervall " + R2SW(UnitCreator_interval[this_1], 1, 2), 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) endif call dispatch_UnitCreator_Unitcreator_UnitCreator_refreshDelays(this_1) elseif temp == Unitcreator_UTYPE_BK then set UnitCreator_spawnUnitType[this_1] = 1112098635 elseif temp == Unitcreator_UTYPE_SK then set UnitCreator_spawnUnitType[this_1] = 1397571916 elseif temp == Unitcreator_UTYPE_BRK then set UnitCreator_spawnUnitType[this_1] = EscaperKillers_BIG_RANDOM_KILLER_ID elseif temp == Unitcreator_UTYPE_POINTER then set UnitCreator_spawnUnitType[this_1] = Pointer_POINTER_ID elseif temp == Unitcreator_UTYPE_GLAIVE then set UnitCreator_spawnUnitType[this_1] = EscaperKillers_GLAIVE_KILLER_ID elseif temp == Unitcreator_UTYPE_TANK then set UnitCreator_spawnUnitType[this_1] = EscaperKillers_TANK_KILLER_ID elseif temp == Unitcreator_UTYPE_SRK then set UnitCreator_spawnUnitType[this_1] = EscaperKillers_SMALL_RANDOM_KILLER_ID elseif temp == Unitcreator_UTYPE_KNOCKER then set UnitCreator_spawnUnitType[this_1] = Knockbacker_KNOCKBACKER_ID elseif temp == Unitcreator_FIXED_ID then set receiver = UnitEntity_actor[this_1] call unit_removeAbility(receiver, Unitcreator_FIXED_ID) set receiver_1 = receiver call unit_addAbility(receiver_1, Unitcreator_RANDOM_ID) set UnitCreator_tmode[this_1] = 1 call dispatch_UnitCreator_Unitcreator_UnitCreator_refreshDelays(this_1) elseif temp == Unitcreator_RANDOM_ID then set receiver_2 = UnitEntity_actor[this_1] call unit_removeAbility(receiver_2, Unitcreator_RANDOM_ID) set receiver_3 = receiver_2 call unit_addAbility(receiver_3, Unitcreator_FIXED_ID) set UnitCreator_tmode[this_1] = 0 endif endfunction function alloc_HLItrClosure_forEach_Waypoint_Waypoint takes nothing returns integer local integer this_1 if HLItrClosure_firstFree == 0 then if HLItrClosure_maxIndex < JASS_MAX_ARRAY_SIZE then set HLItrClosure_maxIndex = HLItrClosure_maxIndex + 1 set this_1 = HLItrClosure_maxIndex set HLItrClosure_typeId[this_1] = 893 else call error("Out of memory: Could not create HLItrClosure_forEach_Waypoint_Waypoint.") set this_1 = 0 endif else set HLItrClosure_firstFree = HLItrClosure_firstFree - 1 set this_1 = HLItrClosure_nextFree[HLItrClosure_firstFree] set HLItrClosure_typeId[this_1] = 893 endif return this_1 endfunction function HashList_addAll takes integer this_1, integer elems returns nothing local integer iterator = HashList_iterator(elems) local integer elem loop exitwhen not HLIterator_hasNext(iterator) set elem = HLIterator_next(iterator) call dispatch_HashList_HashList_HashList_add_1(this_1, elem) endloop call HLIterator_close(iterator) endfunction function dispatch_HashList_HashList_HashList_addAll takes integer this_1, integer elems returns nothing if HashList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashList.addAll") else call error("Called HashList.addAll on invalid object.") endif endif call HashList_addAll(this_1, elems) endfunction function run_forEach_Waypoint_Waypoint takes integer this_1, integer waypoint returns nothing if waypoint != 0 then call dispatch_HashSet_HashSet_HashSet_remove(Waypoint_linked[waypoint], this_2962[this_1]) endif endfunction function dispatch_HLItrClosure_HashList_HLItrClosure_run takes integer this_1, integer t returns nothing if HLItrClosure_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HLItrClosure.run") else call error("Called HLItrClosure.run on invalid object.") endif endif call run_forEach_Waypoint_Waypoint(this_1, t) endfunction function dealloc_HLItrClosure takes integer obj_1 returns nothing if HLItrClosure_typeId[obj_1] == 0 then call error("Double free: object of type HLItrClosure") else set HLItrClosure_nextFree[HLItrClosure_firstFree] = obj_1 set HLItrClosure_firstFree = HLItrClosure_firstFree + 1 set HLItrClosure_typeId[obj_1] = 0 endif endfunction function destroyHLItrClosure takes integer this_1 returns nothing call dealloc_HLItrClosure(this_1) endfunction function dispatch_HLItrClosure_destroyHLItrClosure takes integer this_1 returns nothing if HLItrClosure_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HLItrClosure.HLItrClosure") else call error("Called HLItrClosure.HLItrClosure on invalid object.") endif endif call destroyHLItrClosure(this_1) endfunction function HashList_forEach takes integer this_1, integer itr_1 returns integer local integer i = 0 local integer temp = dispatch_HashList_HashList_HashList_size(this_1) - 1 loop exitwhen i > temp call dispatch_HLItrClosure_HashList_HLItrClosure_run(itr_1, dispatch_HashList_HashList_HashList_get(this_1, i)) set i = i + 1 endloop call dispatch_HLItrClosure_destroyHLItrClosure(itr_1) return this_1 endfunction function dispatch_HashList_HashList_HashList_forEach takes integer this_1, integer itr_1 returns integer local integer HashList_HashList_forEach_result if HashList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashList.forEach") else call error("Called HashList.forEach on invalid object.") endif endif set HashList_HashList_forEach_result = HashList_forEach(this_1, itr_1) return HashList_HashList_forEach_result endfunction function dispatch_HashSet_HashSet_HashSet_add_1 takes integer this_1, integer elems_0 returns nothing if HashList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashSet.add") else call error("Called HashSet.add on invalid object.") endif endif call HashSet_add_1(this_1, elems_0) endfunction function dispatch_HashSet_HashSet_HashSet_clear takes integer this_1 returns nothing if HashList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashSet.clear") else call error("Called HashSet.clear on invalid object.") endif endif call HashSet_clear(this_1) endfunction function alloc_HashSet takes nothing returns integer local integer this_1 if HashList_firstFree == 0 then if HashList_maxIndex < JASS_MAX_ARRAY_SIZE then set HashList_maxIndex = HashList_maxIndex + 1 set this_1 = HashList_maxIndex set HashList_typeId[this_1] = 895 else call error("Out of memory: Could not create HashSet.") set this_1 = 0 endif else set HashList_firstFree = HashList_firstFree - 1 set this_1 = HashList_nextFree[HashList_firstFree] set HashList_typeId[this_1] = 895 endif return this_1 endfunction function HashSet_init takes integer this_1 returns nothing endfunction function construct_HashSet takes integer this_1 returns nothing call construct_HashList(this_1) call HashSet_init(this_1) endfunction function new_HashSet takes nothing returns integer local integer this_1 = alloc_HashSet() call construct_HashSet(this_1) return this_1 endfunction function Waypoint_onCast takes integer this_1 returns nothing local integer id local integer temp local integer target local integer twp local integer iterator local integer link local integer clVar local integer temp_1 call StaticBaseObject_onCast(this_1) set id = GetSpellAbilityId() set temp = id if temp == WaypointObjects_INCREASE_DELAY_ID then call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(Waypoint_delay[this_1], this_1, 5.) elseif temp == WaypointObjects_DECREASE_DELAY_ID then call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(Waypoint_delay[this_1], this_1, 0.) elseif temp == WaypointObjects_NO_WISPS_ID then if Waypoint_wisps[this_1] then set Waypoint_wisps[this_1] = false call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "Wisps |cffAD0821inactive", 10., 2., Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, Entity_owner[this_1]) else set Waypoint_wisps[this_1] = true call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "Wisps |cff08BD52active", 10., 2., Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, Entity_owner[this_1]) endif elseif temp == WaypointObjects_AND_CONNECTION_ID then if Waypoint_linked[this_1] == 0 then set Waypoint_linked[this_1] = new_HashSet() endif set target = unit_getEntity(GetSpellTargetUnit()) if target != 0 and Serializable_typeId[target] == 1210 then set twp = target if dispatch_HashList_HashList_HashList_has(Waypoint_linked[this_1], twp) then call createFText_2344(dispatch_UnitEntity_Entity_UnitEntity_getPos(target), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, 0., 0.08, "|cff0873C5Unlinked", 9., 1.75, Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, Entity_owner[this_1]) call dispatch_HashSet_HashSet_HashSet_remove(Waypoint_linked[this_1], twp) else if Waypoint_linked[twp] == 0 then set Waypoint_linked[twp] = new_HashSet() endif call dispatch_HashList_HashList_HashList_addAll(Waypoint_linked[twp], Waypoint_linked[this_1]) set iterator = HashList_iterator(Waypoint_linked[this_1]) loop exitwhen not HLIterator_hasNext(iterator) set link = HLIterator_next(iterator) call dispatch_HashSet_HashSet_HashSet_add_1(Waypoint_linked[link], twp) endloop call HLIterator_close(iterator) call dispatch_HashSet_HashSet_HashSet_add_1(Waypoint_linked[this_1], twp) call dispatch_HashSet_HashSet_HashSet_add_1(Waypoint_linked[twp], this_1) call createFText_2344(dispatch_UnitEntity_Entity_UnitEntity_getPos(target), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, 0., 0.08, "|cff0873C5Linked", 9., 1.75, Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, Entity_owner[this_1]) endif endif elseif temp == WaypointObjects_CLEAR_CONNECTION_ID then if Waypoint_linked[this_1] != 0 then set temp_1 = Waypoint_linked[this_1] set clVar = alloc_HLItrClosure_forEach_Waypoint_Waypoint() set this_2962[clVar] = this_1 call dispatch_HashList_HashList_HashList_forEach(temp_1, clVar) call dispatch_HashSet_HashSet_HashSet_clear(Waypoint_linked[this_1]) endif endif endfunction function dispatch_StaticBaseObject_BaseObject_StaticBaseObject_onCast takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling StaticBaseObject.onCast") else call error("Called StaticBaseObject.onCast on invalid object.") endif endif if Serializable_typeId[this_1] <= 1201 then if Serializable_typeId[this_1] <= 1198 then if Serializable_typeId[this_1] <= 1196 then if Serializable_typeId[this_1] <= 1195 then call StaticBaseObject_onCast(this_1) else call Booster_onCast(this_1) endif else call StaticBaseObject_onCast(this_1) endif elseif Serializable_typeId[this_1] <= 1200 then if Serializable_typeId[this_1] <= 1199 then call Jumper_onCast(this_1) else call StaticBaseObject_onCast(this_1) endif else call MemoryAccessPedestal_onCast(this_1) endif elseif Serializable_typeId[this_1] <= 1206 then if Serializable_typeId[this_1] <= 1203 then if Serializable_typeId[this_1] <= 1202 then call StaticBaseObject_onCast(this_1) else call Teleporter_onCast(this_1) endif else call StaticBaseObject_onCast(this_1) endif elseif Serializable_typeId[this_1] <= 1209 then if Serializable_typeId[this_1] <= 1207 then call UnitCreator_onCast(this_1) else call StaticBaseObject_onCast(this_1) endif else call Waypoint_onCast(this_1) endif endfunction function onEvent_add_StaticBaseObject_BaseObject_3858 takes integer this_1 returns nothing call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_onCast(this_2908[this_1]) endfunction function StrongEscaper_onSkill takes integer this_1 returns nothing local integer learnedId = GetLearnedSkill() local integer lvl = GetLearnedSkillLevel() local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local unit receiver_4 if learnedId == EscaperClasses_INNER_STRENGTH_ID then if lvl == 1 then set receiver = UnitEntity_actor[this_1] call unit_addAbility(receiver, EscaperObjects_HP_GAIN_50) elseif lvl == 2 then set receiver_1 = UnitEntity_actor[this_1] call unit_removeAbility(receiver_1, EscaperObjects_HP_GAIN_50) set receiver_2 = receiver_1 call unit_addAbility(receiver_2, EscaperObjects_HP_GAIN_75) elseif lvl == 3 then set receiver_3 = UnitEntity_actor[this_1] call unit_removeAbility(receiver_3, EscaperObjects_HP_GAIN_75) set receiver_4 = receiver_3 call unit_addAbility(receiver_4, EscaperObjects_HP_GAIN_100) endif endif endfunction function dispatch_StrongEscaper_EscaperClasses_StrongEscaper_onSkill takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling StrongEscaper.onSkill") else call error("Called StrongEscaper.onSkill on invalid object.") endif endif call StrongEscaper_onSkill(this_1) endfunction function onEvent_add_StrongEscaper_EscaperClasses takes integer this_1 returns nothing call dispatch_StrongEscaper_EscaperClasses_StrongEscaper_onSkill(this_2939[this_1]) endfunction function SetupObject_checkReposition takes integer this_1 returns nothing if SetupObject_time[this_1] < 0. then call unit_setXY_4206(SetupObject_setup[this_1], dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z) call unit_setFacing(SetupObject_setup[this_1], unit_getFacingAngle(UnitEntity_actor[this_1])) set SetupObject_time[this_1] = GetRandomReal(30., 45.) endif endfunction function dispatch_SetupObject_SetupObject_SetupObject_checkReposition takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SetupObject.checkReposition") else call error("Called SetupObject.checkReposition on invalid object.") endif endif call SetupObject_checkReposition(this_1) endfunction function SetupObject_update takes integer this_1 returns nothing call UnitEntity_update(this_1) set SetupObject_time[this_1] = SetupObject_time[this_1] - Basics_ANIMATION_PERIOD call dispatch_SetupObject_SetupObject_SetupObject_checkReposition(this_1) endfunction function ConfigValue_getInt takes integer this_1 returns integer return real_toInt(ConfigValue_value[this_1]) endfunction function dispatch_ConfigValue_ConfigValue_ConfigValue_getInt takes integer this_1 returns integer local integer ConfigValue_ConfigValue_getInt_result if ConfigValue_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling ConfigValue.getInt") else call error("Called ConfigValue.getInt on invalid object.") endif endif set ConfigValue_ConfigValue_getInt_result = ConfigValue_getInt(this_1) return ConfigValue_ConfigValue_getInt_result endfunction function ebrtile_setType takes integer this_x, integer this_y, integer this_key, integer this_currentType, integer this_lastType, integer this_modifiers_val, integer ttype_1 returns nothing if not ebrtile_hasModifier(this_x, this_y, this_key, this_currentType, this_lastType, this_modifiers_val, 4) then call SetTerrainType(this_x * 128., this_y * 128., ttype_1, -1, 1, 0) call hashtable_saveInt(TerrainData_tileMap, this_key, 2, this_currentType) call hashtable_saveInt(TerrainData_tileMap, this_key, 1, ttype_1) endif endfunction function getTile takes integer x, integer y returns integer set getTile_return_x = hashtable_loadTile(TerrainData_tileMap, x, y) set getTile_return_y = hashtable_loadTile_return_y set getTile_return_key = hashtable_loadTile_return_key set getTile_return_currentType = hashtable_loadTile_return_currentType set getTile_return_lastType = hashtable_loadTile_return_lastType set getTile_return_modifiers_val = hashtable_loadTile_return_modifiers_val return getTile_return_x endfunction function TerrainChanger_checkAndSetTile takes integer this_1, integer rdata, integer x, integer y, integer id returns nothing local integer tuple_temp = getTile(x, y) local integer tuple_temp_1 = getTile_return_y local integer tuple_temp_2 = getTile_return_key local integer tuple_temp_3 = getTile_return_currentType local integer tuple_temp_4 = getTile_return_lastType local integer tuple_temp_5 = getTile_return_modifiers_val local integer tile_x = tuple_temp local integer tile_y = tuple_temp_1 local integer tile_key = tuple_temp_2 local integer tile_currentType = tuple_temp_3 local integer tile_lastType = tuple_temp_4 local integer tile_modifiers_val = tuple_temp_5 local real newP_x local real newP_y local real tuple_temp_6 local real tuple_temp_7 if not ebrtile_hasModifier(tile_x, tile_y, tile_key, tile_currentType, tile_lastType, tile_modifiers_val, 1) then set tuple_temp_6 = x * 128. set tuple_temp_7 = y * 128. set newP_x = tuple_temp_6 set newP_y = tuple_temp_7 if rect_contains(RegionData_theRect[rdata], newP_x, newP_y) then call ebrtile_setType(tile_x, tile_y, tile_key, tile_currentType, tile_lastType, tile_modifiers_val, id) endif endif endfunction function dispatch_TerrainChanger_TerrainChanger_TerrainChanger_checkAndSetTile takes integer this_1, integer rdata, integer x, integer y, integer id returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling TerrainChanger.checkAndSetTile") else call error("Called TerrainChanger.checkAndSetTile on invalid object.") endif endif call TerrainChanger_checkAndSetTile(this_1, rdata, x, y, id) endfunction function TerrainChanger_update takes integer this_1 returns nothing local integer rdata local integer tileID local integer tX local integer tY local integer sizeXI local integer sizeYI local integer xoffset local integer yoffset local integer i local integer temp local integer i_1 local integer temp_1 local integer j local integer temp_2 local integer j_1 local integer temp_3 local integer i_2 local integer temp_4 local integer j_2 local integer temp_5 local integer stile_x local integer stile_y local integer stile_key local integer stile_currentType local integer stile_lastType local integer stile_modifiers_val local integer tuple_temp local integer tuple_temp_1 local integer tuple_temp_2 local integer tuple_temp_3 local integer tuple_temp_4 local integer tuple_temp_5 local integer tuple_temp_6 local integer tuple_temp_7 call SetupObject_update(this_1) set rdata = getRegionData(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) if not dispatch_RegionData_RegionData_RegionData_canBuild(rdata, Entity_owner[this_1]) then return endif set tX = real_round(Entity_pos_x[this_1] / 128.) set tY = real_round(Entity_pos_y[this_1] / 128.) if tX != TerrainChanger_currentTile_x[this_1] or tY != TerrainChanger_currentTile_y[this_1] then set sizeXI = dispatch_ConfigValue_ConfigValue_ConfigValue_getInt(TerrainChanger_sizeX[this_1]) set sizeYI = dispatch_ConfigValue_ConfigValue_ConfigValue_getInt(TerrainChanger_sizeY[this_1]) set xoffset = 0 set yoffset = 0 if tX < TerrainChanger_currentTile_x[this_1] then set xoffset = sizeXI * 2 set i = - sizeYI set temp = sizeYI loop exitwhen i > temp call dispatch_TerrainChanger_TerrainChanger_TerrainChanger_checkAndSetTile(this_1, rdata, tX + sizeXI + 1, tY + i, TerrainChanger_outerTile[this_1]) set i = i + 1 endloop elseif tX > TerrainChanger_currentTile_x[this_1] then set xoffset = - (sizeXI * 2) set i_1 = - sizeYI set temp_1 = sizeYI loop exitwhen i_1 > temp_1 call dispatch_TerrainChanger_TerrainChanger_TerrainChanger_checkAndSetTile(this_1, rdata, tX - sizeXI - 1, tY + i_1, TerrainChanger_outerTile[this_1]) set i_1 = i_1 + 1 endloop endif if tY < TerrainChanger_currentTile_y[this_1] then set yoffset = sizeYI * 2 set j = - sizeXI set temp_2 = sizeXI loop exitwhen j > temp_2 call dispatch_TerrainChanger_TerrainChanger_TerrainChanger_checkAndSetTile(this_1, rdata, tX + j, tY + sizeYI + 1, TerrainChanger_outerTile[this_1]) set j = j + 1 endloop elseif tY > TerrainChanger_currentTile_y[this_1] then set yoffset = - (sizeYI * 2) set j_1 = - sizeXI set temp_3 = sizeXI loop exitwhen j_1 > temp_3 call dispatch_TerrainChanger_TerrainChanger_TerrainChanger_checkAndSetTile(this_1, rdata, tX + j_1, tY - sizeYI - 1, TerrainChanger_outerTile[this_1]) set j_1 = j_1 + 1 endloop endif if xoffset != 0 and yoffset != 0 then call dispatch_TerrainChanger_TerrainChanger_TerrainChanger_checkAndSetTile(this_1, rdata, tX + xoffset, tY + yoffset, TerrainChanger_outerTile[this_1]) endif set tuple_temp = vec3_getEBRTile(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) set tuple_temp_1 = vec3_getEBRTile_return_y set TerrainChanger_currentTile_x[this_1] = tuple_temp set TerrainChanger_currentTile_y[this_1] = tuple_temp_1 set i_2 = - sizeYI set temp_4 = sizeYI loop exitwhen i_2 > temp_4 set j_2 = - sizeXI set temp_5 = sizeXI loop exitwhen j_2 > temp_5 set tuple_temp_2 = getTile(tX + j_2, tY + i_2) set tuple_temp_3 = getTile_return_y set tuple_temp_4 = getTile_return_key set tuple_temp_5 = getTile_return_currentType set tuple_temp_6 = getTile_return_lastType set tuple_temp_7 = getTile_return_modifiers_val set stile_x = tuple_temp_2 set stile_y = tuple_temp_3 set stile_key = tuple_temp_4 set stile_currentType = tuple_temp_5 set stile_lastType = tuple_temp_6 set stile_modifiers_val = tuple_temp_7 if not ebrtile_hasModifier(stile_x, stile_y, stile_key, stile_currentType, stile_lastType, stile_modifiers_val, 1) then set tileID = TerrainChanger_innerTile[this_1] call ebrtile_setType(stile_x, stile_y, stile_key, stile_currentType, stile_lastType, stile_modifiers_val, tileID) endif set j_2 = j_2 + 1 endloop set i_2 = i_2 + 1 endloop endif endfunction function dispatch_TerrainChanger_TerrainChanger_TerrainChanger_update takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling TerrainChanger.update") else call error("Called TerrainChanger.update on invalid object.") endif endif call TerrainChanger_update(this_1) endfunction function TerrainChanger_cleanArea takes integer this_1 returns nothing local integer tin = TerrainChanger_innerTile[this_1] local integer tout = TerrainChanger_outerTile[this_1] local integer temp_tuple_unwalkableId local integer temp_tuple_unwalkableId_1 local integer tuple_temp local integer tuple_temp_1 call dispatch_RegionData_RegionData_RegionData_getTypeSet(Entity_getCurrentRegion(this_1)) set tuple_temp = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId set temp_tuple_unwalkableId = tuple_temp set TerrainChanger_innerTile[this_1] = temp_tuple_unwalkableId call dispatch_RegionData_RegionData_RegionData_getTypeSet(Entity_getCurrentRegion(this_1)) set tuple_temp_1 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId set temp_tuple_unwalkableId_1 = tuple_temp_1 set TerrainChanger_outerTile[this_1] = temp_tuple_unwalkableId_1 call dispatch_TerrainChanger_TerrainChanger_TerrainChanger_update(this_1) set TerrainChanger_innerTile[this_1] = tin set TerrainChanger_outerTile[this_1] = tout endfunction function dispatch_TerrainChanger_TerrainChanger_TerrainChanger_cleanArea takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling TerrainChanger.cleanArea") else call error("Called TerrainChanger.cleanArea on invalid object.") endif endif call TerrainChanger_cleanArea(this_1) endfunction function TerrainChanger_onCast takes integer this_1 returns nothing local integer i = GetSpellAbilityId() local integer temp = i local integer temp_tuple_walkableId local integer temp_tuple_unwalkableId local integer temp_tuple_walkableId_1 local integer temp_tuple_unwalkableId_1 local integer tuple_temp local integer tuple_temp_1 local integer tuple_temp_2 local integer tuple_temp_3 if temp == TerrainChanger_TERRAIN_INC_H_ID then call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(TerrainChanger_sizeX[this_1], this_1, 3.) elseif temp == TerrainChanger_TERRAIN_INC_V_ID then call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(TerrainChanger_sizeY[this_1], this_1, 3.) elseif temp == TerrainChanger_TERRAIN_DEC_H_ID then call dispatch_TerrainChanger_TerrainChanger_TerrainChanger_cleanArea(this_1) call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(TerrainChanger_sizeX[this_1], this_1, 0.) elseif temp == TerrainChanger_TERRAIN_DEC_V_ID then call dispatch_TerrainChanger_TerrainChanger_TerrainChanger_cleanArea(this_1) call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(TerrainChanger_sizeY[this_1], this_1, 0.) elseif temp == TerrainChanger_TERRAIN_I_WALKABLE_ID then call dispatch_RegionData_RegionData_RegionData_getTypeSet(Entity_getCurrentRegion(this_1)) set tuple_temp = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_walkableId set temp_tuple_walkableId = tuple_temp set TerrainChanger_innerTile[this_1] = temp_tuple_walkableId elseif temp == TerrainChanger_TERRAIN_I_UNWALKABLE_ID then call dispatch_RegionData_RegionData_RegionData_getTypeSet(Entity_getCurrentRegion(this_1)) set tuple_temp_1 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId set temp_tuple_unwalkableId = tuple_temp_1 set TerrainChanger_innerTile[this_1] = temp_tuple_unwalkableId elseif temp == TerrainChanger_TERRAIN_I_ICE_ID then set TerrainChanger_innerTile[this_1] = BuilderConstants_CONTROLLABLEICE elseif temp == TerrainChanger_TERRAIN_I_UNICE_ID then set TerrainChanger_innerTile[this_1] = BuilderConstants_UNCONTROLLABLEICE elseif temp == TerrainChanger_TERRAIN_O_WALKABLE_ID then call dispatch_RegionData_RegionData_RegionData_getTypeSet(Entity_getCurrentRegion(this_1)) set tuple_temp_2 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_walkableId set temp_tuple_walkableId_1 = tuple_temp_2 set TerrainChanger_outerTile[this_1] = temp_tuple_walkableId_1 elseif temp == TerrainChanger_TERRAIN_O_UNWALKABLE_ID then call dispatch_RegionData_RegionData_RegionData_getTypeSet(Entity_getCurrentRegion(this_1)) set tuple_temp_3 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId set temp_tuple_unwalkableId_1 = tuple_temp_3 set TerrainChanger_outerTile[this_1] = temp_tuple_unwalkableId_1 elseif temp == TerrainChanger_TERRAIN_O_ICE_ID then set TerrainChanger_outerTile[this_1] = BuilderConstants_CONTROLLABLEICE elseif temp == TerrainChanger_TERRAIN_O_UNICE_ID then set TerrainChanger_outerTile[this_1] = BuilderConstants_UNCONTROLLABLEICE endif call dispatch_TerrainChanger_TerrainChanger_TerrainChanger_update(this_1) endfunction function dispatch_TerrainChanger_TerrainChanger_TerrainChanger_onCast takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling TerrainChanger.onCast") else call error("Called TerrainChanger.onCast on invalid object.") endif endif call TerrainChanger_onCast(this_1) endfunction function onEvent_add_TerrainChanger_TerrainChanger takes integer this_1 returns nothing call dispatch_TerrainChanger_TerrainChanger_TerrainChanger_onCast(this_2985[this_1]) endfunction function vec2_setTerrain takes real this_x, real this_y, integer ttype_1, real off_x, real off_y, player caster returns nothing local real tuple_temp = vec2_op_plus(this_x, this_y, off_x, off_y) local real tuple_temp_1 = vec2_op_plus_return_y local real offset_x = tuple_temp local real offset_y = tuple_temp_1 local integer rdata set offset_x = real_round(offset_x / 128.) * 128. set offset_y = real_round(offset_y / 128.) * 128. set rdata = getRegionData_3302(offset_x, offset_y) if rdata != 0 and dispatch_RegionData_RegionData_RegionData_canBuild(rdata, caster) then call ebrtile_setType(vec2_getEBRTile(offset_x, offset_y), vec2_getEBRTile_return_y, vec2_getEBRTile_return_key, vec2_getEBRTile_return_currentType, vec2_getEBRTile_return_lastType, vec2_getEBRTile_return_modifiers_val, ttype_1) endif endfunction function vec2_changeRect takes real this_x, real this_y, integer ttype_1, integer hsize, integer vsize, player caster returns nothing local integer hhalf = hsize * 2 / 2 local integer vhalf = vsize * 2 / 2 local integer i = - hhalf local integer temp = hhalf local integer j local integer temp_1 loop exitwhen i > temp set j = - vhalf set temp_1 = vhalf loop exitwhen j > temp_1 call vec2_setTerrain(this_x, this_y, ttype_1, i * 128., j * 128., caster) set j = j + 1 endloop set i = i + 1 endloop endfunction function vec2_changeCircle takes real this_x, real this_y, integer ttype_1, integer hsize, integer vsize, player caster returns nothing local integer hhalf = hsize * 2 / 2 local integer vhalf = vsize * 2 / 2 local integer i = - hhalf local integer temp = hhalf local integer j local integer temp_1 loop exitwhen i > temp set j = - vhalf set temp_1 = vhalf loop exitwhen j > temp_1 if i == 0 or j == 0 then call vec2_setTerrain(this_x, this_y, ttype_1, i * 128., j * 128., caster) endif set j = j + 1 endloop set i = i + 1 endloop if vsize > 1 and hsize > 1 then call vec2_changeRect(this_x, this_y, ttype_1, 1, 1, caster) endif endfunction function vec2_changeTerrain takes real this_x, real this_y, integer ttype_1, integer hsize, integer vsize, integer shape, player caster returns nothing local integer temp = shape if temp == 0 then call vec2_changeRect(this_x, this_y, ttype_1, hsize, vsize, caster) else call vec2_changeCircle(this_x, this_y, ttype_1, hsize, vsize, caster) endif endfunction function TerrainModder_changeTerrain takes integer this_1 returns nothing local real tuple_temp = EventData_getOrderPos() local real tuple_temp_1 = EventData_getOrderPos_return_y local real orderPos_x_1 = tuple_temp local real orderPos_y_1 = tuple_temp_1 local widget oW = GetOrderTarget() local integer rdata local player owner local integer id local integer temp_tuple_modifiers_val local integer temp_tuple_walkableId local integer temp_tuple_unwalkableId local boolean andLeft local real temp_x local real temp_y local real temp_x_1 local real temp_y_1 local real tuple_temp_2 local real tuple_temp_3 local integer tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 local integer tuple_temp_7 local real tuple_temp_8 local real tuple_temp_9 local integer tuple_temp_10 if oW != null then set tuple_temp_2 = widget_getPos(oW) set tuple_temp_3 = widget_getPos_return_y set orderPos_x_1 = tuple_temp_2 set orderPos_y_1 = tuple_temp_3 endif set rdata = getRegionData_3302(orderPos_x_1, orderPos_y_1) if rdata == 0 then return endif set owner = unit_getOwner(UnitEntity_actor[this_1]) set id = GetUnitTypeId(UnitEntity_actor[this_1]) if dispatch_RegionData_RegionData_RegionData_canBuild(rdata, owner) then call vec2_getEBRTile(orderPos_x_1, orderPos_y_1) set tuple_temp_4 = vec2_getEBRTile_return_modifiers_val set temp_tuple_modifiers_val = tuple_temp_4 set andLeft = not bitset_get(temp_tuple_modifiers_val, 4) else set andLeft = false endif if andLeft then set Entity_idleSeconds[this_1] = 0 if id == TerrainModder_SLIDEABLE_ICE_ID then if TerrainModder_modification[this_1] == 1 then call vec2_changeTerrain(orderPos_x_1, orderPos_y_1, BuilderConstants_REVICE, TerrainModder_brushsize[this_1], TerrainModder_brushsize[this_1], TerrainModder_brushshape[this_1], owner) else call vec2_changeTerrain(orderPos_x_1, orderPos_y_1, BuilderConstants_CONTROLLABLEICE, TerrainModder_brushsize[this_1], TerrainModder_brushsize[this_1], TerrainModder_brushshape[this_1], owner) endif elseif id == TerrainModder_SLIDEABLE_UNC_ICE_ID then call vec2_changeTerrain(orderPos_x_1, orderPos_y_1, BuilderConstants_UNCONTROLLABLEICE, TerrainModder_brushsize[this_1], TerrainModder_brushsize[this_1], TerrainModder_brushshape[this_1], owner) elseif id == TerrainModder_WALKABLE_ID then set tuple_temp_5 = orderPos_x_1 set tuple_temp_6 = orderPos_y_1 set temp_x = tuple_temp_5 set temp_y = tuple_temp_6 call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata) set tuple_temp_7 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_walkableId set temp_tuple_walkableId = tuple_temp_7 call vec2_changeTerrain(temp_x, temp_y, temp_tuple_walkableId, TerrainModder_brushsize[this_1], TerrainModder_brushsize[this_1], TerrainModder_brushshape[this_1], owner) elseif id == TerrainModder_UNWALKABLE_ID then if TerrainModder_modification[this_1] == 0 then set tuple_temp_8 = orderPos_x_1 set tuple_temp_9 = orderPos_y_1 set temp_x_1 = tuple_temp_8 set temp_y_1 = tuple_temp_9 call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata) set tuple_temp_10 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId set temp_tuple_unwalkableId = tuple_temp_10 call vec2_changeTerrain(temp_x_1, temp_y_1, temp_tuple_unwalkableId, TerrainModder_brushsize[this_1], TerrainModder_brushsize[this_1], TerrainModder_brushshape[this_1], owner) elseif TerrainModder_modification[this_1] == 1 then call vec2_changeTerrain(orderPos_x_1, orderPos_y_1, BuilderConstants_LAVA, TerrainModder_brushsize[this_1], TerrainModder_brushsize[this_1], TerrainModder_brushshape[this_1], owner) elseif TerrainModder_modification[this_1] == 2 then call vec2_changeTerrain(orderPos_x_1, orderPos_y_1, BuilderConstants_POISON, TerrainModder_brushsize[this_1], TerrainModder_brushsize[this_1], TerrainModder_brushshape[this_1], owner) endif endif else call DisplayTextToPlayer(owner, 0., 0., "|cffC51019You have no permission to change terrain here!") endif endfunction function dispatch_TerrainModder_TerrainModder_TerrainModder_changeTerrain takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling TerrainModder.changeTerrain") else call error("Called TerrainModder.changeTerrain on invalid object.") endif endif call TerrainModder_changeTerrain(this_1) endfunction function onEvent_add_TerrainModder_TerrainModder takes integer this_1 returns nothing call dispatch_TerrainModder_TerrainModder_TerrainModder_changeTerrain(this_2928[this_1]) endfunction function onEvent_add_TerrainModder_TerrainModder_3862 takes integer this_1 returns nothing call dispatch_TerrainModder_TerrainModder_TerrainModder_changeTerrain(this_2929[this_1]) endfunction function TerrainModder_removeAllActive takes integer this_1 returns nothing if unit_removeAbility(UnitEntity_actor[this_1], TerrainModder_BRUSH_1_ACTIVE_ABILITY) then call unit_addAbility(UnitEntity_actor[this_1], TerrainModder_BRUSH_1_IDLE_ABILITY) endif if unit_removeAbility(UnitEntity_actor[this_1], TerrainModder_BRUSH_3_ACTIVE_ABILITY) then call unit_addAbility(UnitEntity_actor[this_1], TerrainModder_BRUSH_3_IDLE_ABILITY) endif if unit_removeAbility(UnitEntity_actor[this_1], TerrainModder_BRUSH_5_ACTIVE_ABILITY) then call unit_addAbility(UnitEntity_actor[this_1], TerrainModder_BRUSH_5_IDLE_ABILITY) endif endfunction function dispatch_TerrainModder_TerrainModder_TerrainModder_removeAllActive takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling TerrainModder.removeAllActive") else call error("Called TerrainModder.removeAllActive on invalid object.") endif endif call TerrainModder_removeAllActive(this_1) endfunction function TerrainModder_switchMode takes integer this_1 returns nothing local integer spell_id = GetSpellAbilityId() local integer temp local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local unit receiver_4 local unit receiver_5 local unit receiver_6 local unit receiver_7 local unit receiver_8 local unit receiver_9 set Entity_idleSeconds[this_1] = 0 set temp = spell_id if temp == TerrainModder_UNWALKABLE_MOD_ABILITY_ID[1] then call UnitRemoveAbility(UnitEntity_actor[this_1], TerrainModder_UNWALKABLE_MOD_ABILITY_ID[1]) call UnitAddAbility(UnitEntity_actor[this_1], TerrainModder_UNWALKABLE_MOD_ABILITY_ID[TerrainModder_modification[this_1]]) set TerrainModder_modification[this_1] = 1 call DisplayTextToPlayer(GetOwningPlayer(GetSpellAbilityUnit()), 0., 0., "Poison") elseif temp == TerrainModder_UNWALKABLE_MOD_ABILITY_ID[2] then call UnitRemoveAbility(UnitEntity_actor[this_1], TerrainModder_UNWALKABLE_MOD_ABILITY_ID[2]) call UnitAddAbility(UnitEntity_actor[this_1], TerrainModder_UNWALKABLE_MOD_ABILITY_ID[TerrainModder_modification[this_1]]) set TerrainModder_modification[this_1] = 2 call DisplayTextToPlayer(GetOwningPlayer(GetSpellAbilityUnit()), 0., 0., "Lava") elseif temp == TerrainModder_UNWALKABLE_MOD_ABILITY_ID[0] then call UnitRemoveAbility(UnitEntity_actor[this_1], TerrainModder_UNWALKABLE_MOD_ABILITY_ID[0]) call UnitAddAbility(UnitEntity_actor[this_1], TerrainModder_UNWALKABLE_MOD_ABILITY_ID[TerrainModder_modification[this_1]]) set TerrainModder_modification[this_1] = 0 call DisplayTextToPlayer(GetOwningPlayer(GetSpellAbilityUnit()), 0., 0., "Normal") elseif temp == TerrainModder_ICE_ABILITY then call UnitRemoveAbility(UnitEntity_actor[this_1], TerrainModder_ICE_ABILITY) call UnitAddAbility(UnitEntity_actor[this_1], TerrainModder_REVICE_ABILITY) set TerrainModder_modification[this_1] = 0 call DisplayTextToPlayer(GetOwningPlayer(GetSpellAbilityUnit()), 0., 0., "Normal") elseif temp == TerrainModder_REVICE_ABILITY then call UnitRemoveAbility(UnitEntity_actor[this_1], TerrainModder_REVICE_ABILITY) call UnitAddAbility(UnitEntity_actor[this_1], TerrainModder_ICE_ABILITY) set TerrainModder_modification[this_1] = 1 call DisplayTextToPlayer(GetOwningPlayer(GetSpellAbilityUnit()), 0., 0., "Reverse") elseif temp == TerrainModder_BRUSH_1_IDLE_ABILITY then call dispatch_TerrainModder_TerrainModder_TerrainModder_removeAllActive(this_1) set receiver = UnitEntity_actor[this_1] call unit_removeAbility(receiver, TerrainModder_BRUSH_1_IDLE_ABILITY) set receiver_1 = receiver call unit_addAbility(receiver_1, TerrainModder_BRUSH_1_ACTIVE_ABILITY) set TerrainModder_brushsize[this_1] = 0 elseif temp == TerrainModder_BRUSH_3_IDLE_ABILITY then call dispatch_TerrainModder_TerrainModder_TerrainModder_removeAllActive(this_1) set receiver_2 = UnitEntity_actor[this_1] call unit_removeAbility(receiver_2, TerrainModder_BRUSH_3_IDLE_ABILITY) set receiver_3 = receiver_2 call unit_addAbility(receiver_3, TerrainModder_BRUSH_3_ACTIVE_ABILITY) set TerrainModder_brushsize[this_1] = 1 elseif temp == TerrainModder_BRUSH_5_IDLE_ABILITY then call dispatch_TerrainModder_TerrainModder_TerrainModder_removeAllActive(this_1) set receiver_4 = UnitEntity_actor[this_1] call unit_removeAbility(receiver_4, TerrainModder_BRUSH_5_IDLE_ABILITY) set receiver_5 = receiver_4 call unit_addAbility(receiver_5, TerrainModder_BRUSH_5_ACTIVE_ABILITY) set TerrainModder_brushsize[this_1] = 2 elseif temp == TerrainModder_BRUSH_RECT_ID then set TerrainModder_brushshape[this_1] = 1 set receiver_6 = UnitEntity_actor[this_1] call unit_removeAbility(receiver_6, TerrainModder_BRUSH_RECT_ID) set receiver_7 = receiver_6 call unit_addAbility(receiver_7, TerrainModder_BRUSH_CIRCLE_ID) elseif temp == TerrainModder_BRUSH_CIRCLE_ID then set TerrainModder_brushshape[this_1] = 0 set receiver_8 = UnitEntity_actor[this_1] call unit_removeAbility(receiver_8, TerrainModder_BRUSH_CIRCLE_ID) set receiver_9 = receiver_8 call unit_addAbility(receiver_9, TerrainModder_BRUSH_RECT_ID) endif endfunction function dispatch_TerrainModder_TerrainModder_TerrainModder_switchMode takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling TerrainModder.switchMode") else call error("Called TerrainModder.switchMode on invalid object.") endif endif call TerrainModder_switchMode(this_1) endfunction function onEvent_add_TerrainModder_TerrainModder_3863 takes integer this_1 returns nothing call dispatch_TerrainModder_TerrainModder_TerrainModder_switchMode(this_2930[this_1]) endfunction function alloc_ForGroupCallback_forUnitsOfPlayer_add_Texter takes nothing returns integer local integer this_1 if ForGroupCallback_firstFree == 0 then if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1 set this_1 = ForGroupCallback_maxIndex set ForGroupCallback_typeId[this_1] = 883 else call error("Out of memory: Could not create ForGroupCallback_forUnitsOfPlayer_add_Texter.") set this_1 = 0 endif else set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1 set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree] set ForGroupCallback_typeId[this_1] = 883 endif return this_1 endfunction function alloc_TexterClsr_forSelectedTexters_add_Texter takes nothing returns integer local integer this_1 if TexterClsr_firstFree == 0 then if TexterClsr_maxIndex < JASS_MAX_ARRAY_SIZE then set TexterClsr_maxIndex = TexterClsr_maxIndex + 1 set this_1 = TexterClsr_maxIndex set TexterClsr_typeId[this_1] = 1497 else call error("Out of memory: Could not create TexterClsr_forSelectedTexters_add_Texter.") set this_1 = 0 endif else set TexterClsr_firstFree = TexterClsr_firstFree - 1 set this_1 = TexterClsr_nextFree[TexterClsr_firstFree] set TexterClsr_typeId[this_1] = 1497 endif return this_1 endfunction function alloc_TexterClsr_forSelectedTexters_add_Texter_1927 takes nothing returns integer local integer this_1 if TexterClsr_firstFree == 0 then if TexterClsr_maxIndex < JASS_MAX_ARRAY_SIZE then set TexterClsr_maxIndex = TexterClsr_maxIndex + 1 set this_1 = TexterClsr_maxIndex set TexterClsr_typeId[this_1] = 1498 else call error("Out of memory: Could not create TexterClsr_forSelectedTexters_add_Texter.") set this_1 = 0 endif else set TexterClsr_firstFree = TexterClsr_firstFree - 1 set this_1 = TexterClsr_nextFree[TexterClsr_firstFree] set TexterClsr_typeId[this_1] = 1498 endif return this_1 endfunction function alloc_TexterClsr_forSelectedTexters_add_Texter_1928 takes nothing returns integer local integer this_1 if TexterClsr_firstFree == 0 then if TexterClsr_maxIndex < JASS_MAX_ARRAY_SIZE then set TexterClsr_maxIndex = TexterClsr_maxIndex + 1 set this_1 = TexterClsr_maxIndex set TexterClsr_typeId[this_1] = 1499 else call error("Out of memory: Could not create TexterClsr_forSelectedTexters_add_Texter.") set this_1 = 0 endif else set TexterClsr_firstFree = TexterClsr_firstFree - 1 set this_1 = TexterClsr_nextFree[TexterClsr_firstFree] set TexterClsr_typeId[this_1] = 1499 endif return this_1 endfunction function alloc_ForGroupCallback_forUnitsOfPlayer_Texter takes nothing returns integer local integer this_1 if ForGroupCallback_firstFree == 0 then if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1 set this_1 = ForGroupCallback_maxIndex set ForGroupCallback_typeId[this_1] = 880 else call error("Out of memory: Could not create ForGroupCallback_forUnitsOfPlayer_Texter.") set this_1 = 0 endif else set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1 set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree] set ForGroupCallback_typeId[this_1] = 880 endif return this_1 endfunction function forUnitsOfPlayer takes player p, integer c returns nothing call pushCallback(c) call GroupEnumUnitsOfPlayer(ClosureForGroups_DUMMY_GROUP, p, ClosureForGroups_filter) call popCallback() endfunction function forSelectedTexters takes integer cb_1 returns nothing local player p = GetTriggerPlayer() local player temp = p local integer clVar = alloc_ForGroupCallback_forUnitsOfPlayer_Texter() set cb_2284[clVar] = cb_1 call forUnitsOfPlayer(temp, clVar) endfunction function onEvent_add_Texter takes integer this_1 returns nothing local string text = GetEventPlayerChatString() local integer tokens_1 local string temp local integer clVar local integer clVar_1 local string temp_1 local integer clVar_2 local integer clVar_3 local player temp_2 if string_contains(text, " ") then set tokens_1 = string_split(text, " ") set temp = stringFromIndex(dispatch_LinkedList_LinkedList_LinkedList_dequeue(tokens_1)) if temp == "-st" then set clVar = alloc_TexterClsr_forSelectedTexters_add_Texter() set tokens[clVar] = tokens_1 call forSelectedTexters(clVar) elseif temp == "-sc" then set temp_2 = GetTriggerPlayer() set clVar_1 = alloc_ForGroupCallback_forUnitsOfPlayer_add_Texter() set tokens_3016[clVar_1] = tokens_1 call forUnitsOfPlayer(temp_2, clVar_1) endif else set temp_1 = text if temp_1 == "-sht" then set clVar_2 = alloc_TexterClsr_forSelectedTexters_add_Texter_1927() call forSelectedTexters(clVar_2) elseif temp_1 == "-ht" then set clVar_3 = alloc_TexterClsr_forSelectedTexters_add_Texter_1928() call forSelectedTexters(clVar_3) endif endif endfunction function Tracks_recreateDummy takes integer this_1 returns nothing call dispatch_UnitEntity_Entity_UnitEntity_setNewActor(this_1, createUnit_2354(Entity_owner[this_1], Tracks_TRACKS[Tracks_tsize[this_1]], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], angle_op_minus(vec2_getAngle(Tracks_dir_x[this_1], Tracks_dir_y[this_1]), real_asAngleDegrees(90.)))) endfunction function dispatch_Tracks_Tracks_Tracks_recreateDummy takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Tracks.recreateDummy") else call error("Called Tracks.recreateDummy on invalid object.") endif endif call Tracks_recreateDummy(this_1) endfunction function Tracks_updateTrack takes integer this_1 returns nothing local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 local real tuple_temp_7 if (Tracks_dir_x[this_1] == Vectors_UP_x and Tracks_dir_y[this_1] == Vectors_UP_y) or (Tracks_dir_x[this_1] == Vectors_DOWN_x and Tracks_dir_y[this_1] == Vectors_DOWN_y) then set tuple_temp = Entity_pos_x[this_1] - 64. set tuple_temp_1 = Entity_pos_y[this_1] - Tracks_tsize[this_1] * 128 - 64. set tuple_temp_2 = Entity_pos_x[this_1] + 64. set tuple_temp_3 = Entity_pos_y[this_1] + Tracks_tsize[this_1] * 128 + 64. set Tracks_rct_min_x[this_1] = tuple_temp set Tracks_rct_min_y[this_1] = tuple_temp_1 set Tracks_rct_max_x[this_1] = tuple_temp_2 set Tracks_rct_max_y[this_1] = tuple_temp_3 else set tuple_temp_4 = Entity_pos_x[this_1] - Tracks_tsize[this_1] * 128 - 64. set tuple_temp_5 = Entity_pos_y[this_1] - 64. set tuple_temp_6 = Entity_pos_x[this_1] + Tracks_tsize[this_1] * 128 + 64. set tuple_temp_7 = Entity_pos_y[this_1] + 64. set Tracks_rct_min_x[this_1] = tuple_temp_4 set Tracks_rct_min_y[this_1] = tuple_temp_5 set Tracks_rct_max_x[this_1] = tuple_temp_6 set Tracks_rct_max_y[this_1] = tuple_temp_7 endif call dispatch_Tracks_Tracks_Tracks_recreateDummy(this_1) endfunction function dispatch_Tracks_Tracks_Tracks_updateTrack takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Tracks.updateTrack") else call error("Called Tracks.updateTrack on invalid object.") endif endif call Tracks_updateTrack(this_1) endfunction function unit_setTimeScale takes unit this_1, real scale returns nothing call SetUnitTimeScale(this_1, scale) endfunction function Tracks_onCast takes integer this_1 returns nothing local integer id = GetSpellAbilityId() local integer temp = id local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 local real tuple_temp_7 local real tuple_temp_8 local real tuple_temp_9 local real tuple_temp_10 local real tuple_temp_11 local real tuple_temp_12 local real tuple_temp_13 local real tuple_temp_14 local real tuple_temp_15 if temp == Tracks_INC_ID then call dispatch_ConfigValue_ConfigValue_ConfigValue_increment(Tracks_trackSpeed[this_1], this_1, 20.) elseif temp == Tracks_DEC_ID then call dispatch_ConfigValue_ConfigValue_ConfigValue_decrement(Tracks_trackSpeed[this_1], this_1, 1.) elseif temp == Tracks_INCLENGTH_ID then if Tracks_tsize[this_1] < 2 then set Tracks_tsize[this_1] = Tracks_tsize[this_1] + 1 call dispatch_Tracks_Tracks_Tracks_updateTrack(this_1) endif elseif temp == Tracks_DECLENGTH_ID then if Tracks_tsize[this_1] > 0 then set Tracks_tsize[this_1] = Tracks_tsize[this_1] - 1 call dispatch_Tracks_Tracks_Tracks_updateTrack(this_1) endif elseif temp == Tracks_LEFT_ID then if Tracks_dir_x[this_1] == Vectors_UP_x and Tracks_dir_y[this_1] == Vectors_UP_y then set tuple_temp = Vectors_LEFT_x set tuple_temp_1 = Vectors_LEFT_y set Tracks_dir_x[this_1] = tuple_temp set Tracks_dir_y[this_1] = tuple_temp_1 elseif Tracks_dir_x[this_1] == Vectors_LEFT_x and Tracks_dir_y[this_1] == Vectors_LEFT_y then set tuple_temp_2 = Vectors_DOWN_x set tuple_temp_3 = Vectors_DOWN_y set Tracks_dir_x[this_1] = tuple_temp_2 set Tracks_dir_y[this_1] = tuple_temp_3 elseif Tracks_dir_x[this_1] == Vectors_DOWN_x and Tracks_dir_y[this_1] == Vectors_DOWN_y then set tuple_temp_4 = Vectors_RIGHT_x set tuple_temp_5 = Vectors_RIGHT_y set Tracks_dir_x[this_1] = tuple_temp_4 set Tracks_dir_y[this_1] = tuple_temp_5 else set tuple_temp_6 = Vectors_UP_x set tuple_temp_7 = Vectors_UP_y set Tracks_dir_x[this_1] = tuple_temp_6 set Tracks_dir_y[this_1] = tuple_temp_7 endif call dispatch_Tracks_Tracks_Tracks_updateTrack(this_1) elseif temp == Tracks_RIGHT_ID then if Tracks_dir_x[this_1] == Vectors_UP_x and Tracks_dir_y[this_1] == Vectors_UP_y then set tuple_temp_8 = Vectors_RIGHT_x set tuple_temp_9 = Vectors_RIGHT_y set Tracks_dir_x[this_1] = tuple_temp_8 set Tracks_dir_y[this_1] = tuple_temp_9 elseif Tracks_dir_x[this_1] == Vectors_RIGHT_x and Tracks_dir_y[this_1] == Vectors_RIGHT_y then set tuple_temp_10 = Vectors_DOWN_x set tuple_temp_11 = Vectors_DOWN_y set Tracks_dir_x[this_1] = tuple_temp_10 set Tracks_dir_y[this_1] = tuple_temp_11 elseif Tracks_dir_x[this_1] == Vectors_DOWN_x and Tracks_dir_y[this_1] == Vectors_DOWN_y then set tuple_temp_12 = Vectors_LEFT_x set tuple_temp_13 = Vectors_LEFT_y set Tracks_dir_x[this_1] = tuple_temp_12 set Tracks_dir_y[this_1] = tuple_temp_13 else set tuple_temp_14 = Vectors_UP_x set tuple_temp_15 = Vectors_UP_y set Tracks_dir_x[this_1] = tuple_temp_14 set Tracks_dir_y[this_1] = tuple_temp_15 endif call dispatch_Tracks_Tracks_Tracks_updateTrack(this_1) endif call unit_setTimeScale(UnitEntity_actor[this_1], 0.5 + dispatch_ConfigValue_ConfigValue_ConfigValue_get(Tracks_trackSpeed[this_1]) / 6.) endfunction function dispatch_Tracks_Tracks_Tracks_onCast takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Tracks.onCast") else call error("Called Tracks.onCast on invalid object.") endif endif call Tracks_onCast(this_1) endfunction function onEvent_add_Tracks_Tracks takes integer this_1 returns nothing call dispatch_Tracks_Tracks_Tracks_onCast(this_2998[this_1]) endfunction function Trap_addConfiger takes integer this_1, boolean dur, boolean wval returns nothing call UnitRemoveAbility(UnitEntity_actor[this_1], Trap_INSTANT_KILL_ID) call UnitRemoveAbility(UnitEntity_actor[this_1], Trap_STUN_ID) call UnitRemoveAbility(UnitEntity_actor[this_1], Trap_SHAKE_ID) call UnitRemoveAbility(UnitEntity_actor[this_1], Trap_SPEED_ID) call UnitRemoveAbility(UnitEntity_actor[this_1], Trap_KNOCKBACK_ID) call UnitRemoveAbility(UnitEntity_actor[this_1], Trap_POISON_ID) call UnitAddAbility(UnitEntity_actor[this_1], Trap_INCREASE_INTERVAL_ID) call UnitAddAbility(UnitEntity_actor[this_1], Trap_DECREASE_INTERVAL_ID) call UnitAddAbility(UnitEntity_actor[this_1], Trap_START_ID) call UnitAddAbility(UnitEntity_actor[this_1], Trap_NEXT_EFFECT_ID) call UnitAddAbility(UnitEntity_actor[this_1], Trap_PREVIOUS_EFFECT_ID) if dur then call UnitAddAbility(UnitEntity_actor[this_1], Trap_INCREASE_DURATION_ID) call UnitAddAbility(UnitEntity_actor[this_1], Trap_DECREASE_DURATION_ID) endif if wval then call UnitAddAbility(UnitEntity_actor[this_1], Trap_INCREASE_VALUE_ID) call UnitAddAbility(UnitEntity_actor[this_1], Trap_DECREASE_VALUE_ID) endif if StaticBaseObject_noRally[this_1] != null then call effect_destr(StaticBaseObject_noRally[this_1]) set StaticBaseObject_noRally[this_1] = null endif endfunction function dispatch_Trap_Trap_Trap_addConfiger takes integer this_1, boolean dur, boolean wval returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Trap.addConfiger") else call error("Called Trap.addConfiger on invalid object.") endif endif call Trap_addConfiger(this_1, dur, wval) endfunction function Trap_onCast takes integer this_1 returns boolean local integer spell_id = GetSpellAbilityId() local real tuple_temp = EventData_getSpellTargetPos() local real tuple_temp_1 = EventData_getSpellTargetPos_return_y local real tpos_x_1 = tuple_temp local real tpos_y_1 = tuple_temp_1 local integer temp = spell_id local integer temp_1 local integer temp_2 local integer temp_3 local integer temp_4 local integer tile_x local integer tile_y local integer tile_key local integer tile_currentType local integer tile_lastType local integer tile_modifiers_val local image goo local image receiver local integer tuple_temp_2 local integer tuple_temp_3 local integer tuple_temp_4 local integer tuple_temp_5 local integer tuple_temp_6 local integer tuple_temp_7 if temp == Trap_NEXT_EFFECT_ID then if Trap_sfxid[this_1] >= Trap_SFX_COUNT then set Trap_sfxid[this_1] = 0 else set Trap_sfxid[this_1] = Trap_sfxid[this_1] + 1 endif if Trap_sfxid[this_1] < Trap_SFX_COUNT then call DestroyEffect(AddSpecialEffect(Trap_SFX_STRINGS[Trap_sfxid[this_1]], unit_getX(UnitEntity_actor[this_1]), unit_getY(UnitEntity_actor[this_1]))) else call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019No Effect", 14., 2., 255, 255, 255, 0, Entity_owner[this_1]) endif elseif temp == Trap_PREVIOUS_EFFECT_ID then if Trap_sfxid[this_1] <= 0 then set Trap_sfxid[this_1] = Trap_SFX_COUNT else set Trap_sfxid[this_1] = Trap_sfxid[this_1] - 1 endif if Trap_sfxid[this_1] < Trap_SFX_COUNT then call DestroyEffect(AddSpecialEffect(Trap_SFX_STRINGS[Trap_sfxid[this_1]], unit_getX(UnitEntity_actor[this_1]), unit_getY(UnitEntity_actor[this_1]))) else call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019No Effect", 14., 2., 255, 255, 255, 0, Entity_owner[this_1]) endif elseif temp == Trap_INSTANT_KILL_ID then set Trap_a[this_1] = 0 call dispatch_Trap_Trap_Trap_addConfiger(this_1, false, false) elseif temp == Trap_STUN_ID then set Trap_a[this_1] = 1 set Trap_duration[this_1] = 1. call dispatch_Trap_Trap_Trap_addConfiger(this_1, true, false) elseif temp == Trap_SPEED_ID then set Trap_a[this_1] = 3 set Trap_value[this_1] = 120. set Trap_duration[this_1] = 1. call dispatch_Trap_Trap_Trap_addConfiger(this_1, false, true) elseif temp == Trap_SHAKE_ID then set Trap_a[this_1] = 5 set Trap_value[this_1] = 500. set Trap_duration[this_1] = 3. call dispatch_Trap_Trap_Trap_addConfiger(this_1, true, true) elseif temp == Trap_KNOCKBACK_ID then set Trap_a[this_1] = 4 set Trap_value[this_1] = 10. call unit_addAbility(UnitEntity_actor[this_1], 1095917932) call unit_addAbility(UnitEntity_actor[this_1], Trap_KNOCKBACK_PULL_ID) call dispatch_Trap_Trap_Trap_addConfiger(this_1, false, true) elseif temp == Trap_POISON_ID then set Trap_a[this_1] = 2 call dispatch_Trap_Trap_Trap_addConfiger(this_1, false, false) elseif temp == Trap_INCREASE_INTERVAL_ID then if Trap_interval[this_1] >= 10. then call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Max", 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) else set Trap_interval[this_1] = Trap_interval[this_1] + 0.25 call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Intervall " + R2SW(Trap_interval[this_1], 1, 2), 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) endif elseif temp == Trap_DECREASE_INTERVAL_ID then if Trap_interval[this_1] < 0.75 then call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Min", 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) else set Trap_interval[this_1] = Trap_interval[this_1] - 0.25 call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Intervall " + R2SW(Trap_interval[this_1], 1, 2), 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) endif elseif temp == Trap_INCREASE_VALUE_ID then set temp_1 = Trap_a[this_1] if temp_1 == 4 then if Trap_value[this_1] >= 200. then call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Max Force", 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) else set Trap_value[this_1] = Trap_value[this_1] + 5. call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Force " + R2SW(Trap_value[this_1], 1, 0), 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) endif elseif temp_1 == 5 then if Trap_value[this_1] >= 1500. then call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Intensity Max", 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) else set Trap_value[this_1] = Trap_value[this_1] + 100. call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Intensity " + R2SW(Trap_value[this_1], 1, 0), 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) endif elseif temp_1 == 3 then if Trap_value[this_1] >= 180. then set Trap_uptimes[this_1] = Trap_uptimes[this_1] + 1 call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Max Speed", 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) else set Trap_value[this_1] = Trap_value[this_1] + 20. call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Speed Bonus " + R2SW(Trap_value[this_1], 1, 0) + "%", 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) endif if Trap_uptimes[this_1] > 10 then set Trap_uptimes[this_1] = -99999999 call printTimedToPlayer("|cff08C5E6Relax|r, it's already |cffCE2919max|r... |cffFF7B29But maybe this will help you!", 20., Entity_owner[this_1]) call unit_addAbility(UnitEntity_actor[this_1], Trap_SPECIAL_ID) endif endif elseif temp == Trap_DECREASE_VALUE_ID then set temp_2 = Trap_a[this_1] if temp_2 == 4 then if Trap_value[this_1] <= 5. then call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Min Force", 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) else set Trap_value[this_1] = Trap_value[this_1] - 5. call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Force " + int_toString(real_toInt(Trap_value[this_1])), 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) endif elseif temp_2 == 5 then if Trap_value[this_1] <= 100. then call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Min Intensity", 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) else set Trap_value[this_1] = Trap_value[this_1] - 100. call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Intensity " + int_toString(real_toInt(Trap_value[this_1])), 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) endif elseif temp_2 == 3 then if Trap_value[this_1] <= 20. then call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Min Speed", 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) else set Trap_value[this_1] = Trap_value[this_1] - 20. call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Speed Bonus " + int_toString(real_toInt(Trap_value[this_1])) + "%", 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) endif endif elseif temp == Trap_INCREASE_DURATION_ID then set temp_3 = Trap_a[this_1] if temp_3 == 1 then if Trap_duration[this_1] >= 4. then call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Max Duration", 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) else set Trap_duration[this_1] = Trap_duration[this_1] + 1. call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Duration " + R2SW(Trap_duration[this_1], 1, 0), 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) endif elseif temp_3 == 5 then if Trap_duration[this_1] >= 5. then call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Max Duration", 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) else set Trap_duration[this_1] = Trap_duration[this_1] + 1. call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Duration " + R2SW(Trap_duration[this_1], 1, 0), 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) endif elseif temp_3 == 3 then if Trap_duration[this_1] >= 20. then call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Max Duration", 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) else set Trap_duration[this_1] = Trap_duration[this_1] + 1. call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Duration " + R2SW(Trap_duration[this_1], 1, 0), 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) endif endif elseif temp == Trap_DECREASE_DURATION_ID then set temp_4 = Trap_a[this_1] if temp_4 == 1 then if Trap_duration[this_1] <= 1. then call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Min Duration", 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) else set Trap_duration[this_1] = Trap_duration[this_1] - 1. call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Duration " + R2SW(Trap_duration[this_1], 1, 0), 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) endif elseif temp_4 == 5 then if Trap_duration[this_1] <= 1. then call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Min Duration", 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) else set Trap_duration[this_1] = Trap_duration[this_1] - 1. call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Duration " + R2SW(Trap_duration[this_1], 1, 0), 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) endif elseif temp_4 == 3 then if Trap_duration[this_1] <= 1. then call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Min Duration", 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) else set Trap_duration[this_1] = Trap_duration[this_1] - 1. call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "|cffC51019Duration " + R2SW(Trap_duration[this_1], 1, 0), 10., 2., 255, 255, 255, 0, Entity_owner[this_1]) endif endif elseif temp == Trap_START_ID then call dispatch_Entity_Entity_Entity_DupletListModule_activate(this_1) call UnitRemoveAbility(UnitEntity_actor[this_1], Trap_START_ID) call UnitAddAbility(UnitEntity_actor[this_1], Trap_STOP_ID) elseif temp == Trap_STOP_ID then call dispatch_Entity_Entity_Entity_DupletListModule_deactivate(this_1) set Trap_timerreal[this_1] = 0. call UnitRemoveAbility(UnitEntity_actor[this_1], Trap_STOP_ID) call UnitAddAbility(UnitEntity_actor[this_1], Trap_START_ID) elseif temp == Trap_KNOCKBACK_PULL_ID then set Trap_pull[this_1] = true call unit_removeAbility(UnitEntity_actor[this_1], Trap_KNOCKBACK_PULL_ID) call unit_addAbility(UnitEntity_actor[this_1], Trap_KNOCKBACK_PUSH_ID) elseif temp == Trap_KNOCKBACK_PUSH_ID then set Trap_pull[this_1] = false call unit_removeAbility(UnitEntity_actor[this_1], Trap_KNOCKBACK_PUSH_ID) call unit_addAbility(UnitEntity_actor[this_1], Trap_KNOCKBACK_PULL_ID) elseif temp == Trap_SPECIAL_ID then set tuple_temp_2 = vec2_getEBRTile(tpos_x_1, tpos_y_1) set tuple_temp_3 = vec2_getEBRTile_return_y set tuple_temp_4 = vec2_getEBRTile_return_key set tuple_temp_5 = vec2_getEBRTile_return_currentType set tuple_temp_6 = vec2_getEBRTile_return_lastType set tuple_temp_7 = vec2_getEBRTile_return_modifiers_val set tile_x = tuple_temp_2 set tile_y = tuple_temp_3 set tile_key = tuple_temp_4 set tile_currentType = tuple_temp_5 set tile_lastType = tuple_temp_6 set tile_modifiers_val = tuple_temp_7 if ( not ebrtile_hasModifier(tile_x, tile_y, tile_key, tile_currentType, tile_lastType, tile_modifiers_val, 3)) and Trap_goocounter[this_1] < 4 then set receiver = createImage("textures\\orangegoo.blp", tpos_x_1, tpos_y_1, 128., 128.) call image_show(receiver) set goo = receiver call Trap_goos_set(this_1, Trap_goocounter[this_1], new_Goo(goo, tpos_x_1, tpos_y_1)) set Trap_goocounter[this_1] = Trap_goocounter[this_1] + 1 call ebrtile_addModifier(tile_x, tile_y, tile_key, tile_currentType, tile_lastType, tile_modifiers_val, 3) endif endif return false endfunction function dispatch_Trap_Trap_Trap_onCast takes integer this_1 returns boolean local boolean Trap_Trap_onCast_result if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Trap.onCast") else call error("Called Trap.onCast on invalid object.") endif endif set Trap_Trap_onCast_result = Trap_onCast(this_1) return Trap_Trap_onCast_result endfunction function onEvent_add_Trap_Trap takes integer this_1 returns boolean return dispatch_Trap_Trap_Trap_onCast(this_2959[this_1]) endfunction function alloc_AirKiller takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1175 else call error("Out of memory: Could not create AirKiller.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1175 endif return this_1 endfunction function AirKiller_init takes integer this_1 returns nothing endfunction function construct_AirKiller2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing call construct_EscaperSensorSetup3(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, owner, EscaperKillers_AIR_KILLER_ID, EscaperKillers_COLL_SIZE_AIR_XY, EscaperKillers_COLL_SIZE_AIR_Z) call AirKiller_init(this_1) endfunction function new_AirKiller_3606 takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_AirKiller() call construct_AirKiller2(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function EventListener_addSpellInternal takes unit u_1, integer abilId, integer listener_1 returns integer local integer index set OnCastListener_abilId[listener_1] = abilId if u_1 != null then set OnCastListener_eventUnit[listener_1] = u_1 set index = unit_getIndex(u_1) if EventListener_castMapCasters[index] != 0 then set OnCastListener_prev[EventListener_castMapCasters[index]] = listener_1 set OnCastListener_next[listener_1] = EventListener_castMapCasters[index] endif set EventListener_castMapCasters[index] = listener_1 else if dispatch_HashMap_HashMap_HashMap_has(EventListener_castMap, abilId) then set OnCastListener_prev[dispatch_HashMap_HashMap_HashMap_get(EventListener_castMap, abilId)] = listener_1 set OnCastListener_next[listener_1] = dispatch_HashMap_HashMap_HashMap_get(EventListener_castMap, abilId) endif call dispatch_HashMap_HashMap_HashMap_put(EventListener_castMap, abilId, listener_1) endif return listener_1 endfunction function EventListener_onCast takes unit u_1, integer listener_1 returns integer return EventListener_addSpellInternal(u_1, -1, listener_1) endfunction function alloc_OnCast_onCast_Arcanery_Arcanery takes nothing returns integer local integer this_1 if OnCastListener_firstFree == 0 then if OnCastListener_maxIndex < JASS_MAX_ARRAY_SIZE then set OnCastListener_maxIndex = OnCastListener_maxIndex + 1 set this_1 = OnCastListener_maxIndex set OnCastListener_typeId[this_1] = 1020 else call error("Out of memory: Could not create OnCast_onCast_Arcanery_Arcanery.") set this_1 = 0 endif else set OnCastListener_firstFree = OnCastListener_firstFree - 1 set this_1 = OnCastListener_nextFree[OnCastListener_firstFree] set OnCastListener_typeId[this_1] = 1020 endif return this_1 endfunction function OnCast_init takes integer this_1 returns nothing endfunction function OnCastListener_init takes integer this_1 returns nothing set OnCastListener_next[this_1] = 0 set OnCastListener_prev[this_1] = 0 set OnCastListener_eventUnit[this_1] = null endfunction function construct_OnCastListener takes integer this_1 returns nothing call OnCastListener_init(this_1) endfunction function construct_OnCast takes integer this_1 returns nothing call construct_OnCastListener(this_1) call OnCast_init(this_1) endfunction function construct_Arcanery2 takes integer this_1, real position_x, real position_y, player owner returns nothing local integer receiver local integer clVar local unit temp call construct_StaticBaseObject(this_1, position_x, position_y, createUnit(owner, BuilderConstants_ARCANERY_ID, position_x, position_y, 0.), 102., ref_function_Arcanery_onEnterEv, ref_function_code__Arcanery_Arcanery_2635) call Arcanery_init(this_1) call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(this_1) set receiver = new_Fx(vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0., 76.), vec3_op_plus_return_y, vec3_op_plus_return_z, 0.) call dispatch_Fx_Fx_Fx_setScale(receiver, 1.25) set Arcanery_currentEffect[this_1] = receiver call dispatch_Arcanery_Arcanery_Arcanery_recreateEffect(this_1) set temp = UnitEntity_actor[this_1] set clVar = alloc_OnCast_onCast_Arcanery_Arcanery() call construct_OnCast(clVar) set this_2953[clVar] = this_1 call EventListener_onCast(temp, clVar) endfunction function new_Arcanery_3609 takes real position_x, real position_y, player owner returns integer local integer this_1 = alloc_Arcanery() call construct_Arcanery2(this_1, position_x, position_y, owner) return this_1 endfunction function construct_BigKiller2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing local integer temp = this_1 local real tuple_temp = vec2_toVec3(pos_x_1, pos_y_1) local real tuple_temp_1 = vec2_toVec3_return_y local real tuple_temp_2 = vec2_toVec3_return_z local real temp_x = tuple_temp local real temp_y = tuple_temp_1 local real temp_z = tuple_temp_2 local player temp_1 = owner local integer temp_tuple_bigKillerId local integer tuple_temp_3 call dispatch_RegionData_RegionData_RegionData_getTypeSet(getRegionData_3302(pos_x_1, pos_y_1)) set tuple_temp_3 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bigKillerId set temp_tuple_bigKillerId = tuple_temp_3 call construct_EscaperSensorSetup3(temp, temp_x, temp_y, temp_z, temp_1, temp_tuple_bigKillerId, EscaperKillers_COLL_SIZE_BK, EscaperKillers_COLL_SIZE_BK * 0.75) call BigKiller_init(this_1) endfunction function new_BigKiller_3616 takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_BigKiller() call construct_BigKiller2(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_Bomber takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1160 else call error("Out of memory: Could not create Bomber.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1160 endif return this_1 endfunction function Bomber_init takes integer this_1 returns nothing set Bomber_realorder[this_1] = true endfunction function alloc_EventListener_add_Bomber_Bomber takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 756 else call error("Out of memory: Could not create EventListener_add_Bomber_Bomber.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 756 endif return this_1 endfunction function alloc_EventListener_add_Bomber_Bomber_1673 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 757 else call error("Out of memory: Could not create EventListener_add_Bomber_Bomber.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 757 endif return this_1 endfunction function alloc_EventListener_add_Bomber_Bomber_1674 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 758 else call error("Out of memory: Could not create EventListener_add_Bomber_Bomber.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 758 endif return this_1 endfunction function alloc_EventListener_add_Bomber_Bomber_1675 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 759 else call error("Out of memory: Could not create EventListener_add_Bomber_Bomber.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 759 endif return this_1 endfunction function alloc_EventListener_add_Bomber_Bomber_1676 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 760 else call error("Out of memory: Could not create EventListener_add_Bomber_Bomber.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 760 endif return this_1 endfunction function construct_Bomber takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing local unit receiver local unit receiver_1 local unit receiver_2 local integer clVar local integer clVar_1 local integer clVar_2 local integer clVar_3 local integer clVar_4 local unit temp local playerunitevent temp_1 local unit temp_2 local playerunitevent temp_3 local unit temp_4 local playerunitevent temp_5 local unit temp_6 local playerunitevent temp_7 local unit temp_8 local playerunitevent temp_9 call construct_UnitEntity(this_1, createUnit(owner, Bomber_BOMBER_ID, pos_x_1, pos_y_1, 0.)) call Bomber_init(this_1) call Entity_setCurrentRegion(this_1) set receiver = createUnit(owner, Bomber_BOMBER_ID, pos_x_1, pos_y_1, 0.) call unit_addAbility(receiver, Basics_GHOST_INVIS_ID) set receiver_1 = receiver call unit_setEntity(receiver_1, this_1) set Bomber_setup[this_1] = receiver_1 set receiver_2 = UnitEntity_actor[this_1] call unit_addAbility(receiver_2, Basics_LOCUST_ID) call UnitAddType(Bomber_setup[this_1], UNIT_TYPE_PEON) call UnitAddType(UnitEntity_actor[this_1], UNIT_TYPE_PEON) set temp = Bomber_setup[this_1] set temp_1 = EVENT_PLAYER_UNIT_ISSUED_ORDER set clVar = alloc_EventListener_add_Bomber_Bomber() call construct_EventListener(clVar) set this_2970[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) set temp_2 = Bomber_setup[this_1] set temp_3 = EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER set clVar_1 = alloc_EventListener_add_Bomber_Bomber_1673() call construct_EventListener(clVar_1) set this_2971[clVar_1] = this_1 call EventListener_add_435(temp_2, temp_3, clVar_1) set temp_4 = Bomber_setup[this_1] set temp_5 = EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER set clVar_2 = alloc_EventListener_add_Bomber_Bomber_1674() call construct_EventListener(clVar_2) set this_2972[clVar_2] = this_1 call EventListener_add_435(temp_4, temp_5, clVar_2) set temp_6 = Bomber_setup[this_1] set temp_7 = EVENT_PLAYER_UNIT_ATTACKED set clVar_3 = alloc_EventListener_add_Bomber_Bomber_1675() call construct_EventListener(clVar_3) set this_2973[clVar_3] = this_1 call EventListener_add_435(temp_6, temp_7, clVar_3) set temp_8 = Bomber_setup[this_1] set temp_9 = EVENT_PLAYER_UNIT_SPELL_CAST set clVar_4 = alloc_EventListener_add_Bomber_Bomber_1676() call construct_EventListener(clVar_4) set this_2974[clVar_4] = this_1 call EventListener_add_435(temp_8, temp_9, clVar_4) call unit_abortOrder(Bomber_setup[this_1]) call unit_abortOrder(UnitEntity_actor[this_1]) endfunction function new_Bomber takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_Bomber() call construct_Bomber(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_Bombertower takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1195 else call error("Out of memory: Could not create Bombertower.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1195 endif return this_1 endfunction function Bombertower_init takes integer this_1 returns nothing set Bombertower_skipOrder[this_1] = false endfunction function alloc_EventListener_add_Bombertower_Bombertower takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 761 else call error("Out of memory: Could not create EventListener_add_Bombertower_Bombertower.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 761 endif return this_1 endfunction function alloc_EventListener_add_Bombertower_Bombertower_1678 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 762 else call error("Out of memory: Could not create EventListener_add_Bombertower_Bombertower.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 762 endif return this_1 endfunction function alloc_EventListener_add_Bombertower_Bombertower_1679 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 763 else call error("Out of memory: Could not create EventListener_add_Bombertower_Bombertower.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 763 endif return this_1 endfunction function alloc_OnCast_onCast_Bombertower_Bombertower takes nothing returns integer local integer this_1 if OnCastListener_firstFree == 0 then if OnCastListener_maxIndex < JASS_MAX_ARRAY_SIZE then set OnCastListener_maxIndex = OnCastListener_maxIndex + 1 set this_1 = OnCastListener_maxIndex set OnCastListener_typeId[this_1] = 1021 else call error("Out of memory: Could not create OnCast_onCast_Bombertower_Bombertower.") set this_1 = 0 endif else set OnCastListener_firstFree = OnCastListener_firstFree - 1 set this_1 = OnCastListener_nextFree[OnCastListener_firstFree] set OnCastListener_typeId[this_1] = 1021 endif return this_1 endfunction function construct_Bombertower takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local unit receiver_4 local integer clVar local integer clVar_1 local integer clVar_2 local integer clVar_3 local unit temp local playerunitevent temp_1 local unit temp_2 local playerunitevent temp_3 local unit temp_4 local playerunitevent temp_5 local unit temp_6 call construct_StaticBaseObject(this_1, pos_x_1, pos_y_1, createUnit(owner, BuilderConstants_BOMB_TOWER_ID, pos_x_1, pos_y_1, 0.), 0., null, null) call Bombertower_init(this_1) set receiver = UnitEntity_actor[this_1] call unit_addAbility(receiver, Basics_GHOST_VIS_ID) set receiver_1 = receiver call unit_addAbility(receiver_1, Basics_LOCUST_ID) set Bombertower_dummy[this_1] = createUnit(owner, BuilderConstants_BOMB_TOWER_ID, pos_x_1, pos_y_1, 0.) set receiver_2 = Bombertower_dummy[this_1] call unit_addAbility(receiver_2, Basics_GHOST_INVIS_ID) set receiver_3 = receiver_2 call unit_setEntity(receiver_3, this_1) set receiver_4 = receiver_3 call unit_setScale(receiver_4, 0.5) set temp = Bombertower_dummy[this_1] set temp_1 = EVENT_PLAYER_UNIT_ISSUED_ORDER set clVar = alloc_EventListener_add_Bombertower_Bombertower() call construct_EventListener(clVar) set this_2986[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) set temp_2 = Bombertower_dummy[this_1] set temp_3 = EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER set clVar_1 = alloc_EventListener_add_Bombertower_Bombertower_1678() call construct_EventListener(clVar_1) set this_2987[clVar_1] = this_1 call EventListener_add_435(temp_2, temp_3, clVar_1) set temp_4 = Bombertower_dummy[this_1] set temp_5 = EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER set clVar_2 = alloc_EventListener_add_Bombertower_Bombertower_1679() call construct_EventListener(clVar_2) set this_2988[clVar_2] = this_1 call EventListener_add_435(temp_4, temp_5, clVar_2) set temp_6 = Bombertower_dummy[this_1] set clVar_3 = alloc_OnCast_onCast_Bombertower_Bombertower() call construct_OnCast(clVar_3) set this_2989[clVar_3] = this_1 call EventListener_onCast(temp_6, clVar_3) call SetUnitPathing(Bombertower_dummy[this_1], true) endfunction function new_Bombertower takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_Bombertower() call construct_Bombertower(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_Booster takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1196 else call error("Out of memory: Could not create Booster.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1196 endif return this_1 endfunction function alloc_ConfigValue takes nothing returns integer local integer this_1 if ConfigValue_firstFree == 0 then if ConfigValue_maxIndex < JASS_MAX_ARRAY_SIZE then set ConfigValue_maxIndex = ConfigValue_maxIndex + 1 set this_1 = ConfigValue_maxIndex set ConfigValue_typeId[this_1] = 730 else call error("Out of memory: Could not create ConfigValue.") set this_1 = 0 endif else set ConfigValue_firstFree = ConfigValue_firstFree - 1 set this_1 = ConfigValue_nextFree[ConfigValue_firstFree] set ConfigValue_typeId[this_1] = 730 endif return this_1 endfunction function ConfigValue_init takes integer this_1 returns nothing set ConfigValue_value[this_1] = 0. set ConfigValue_increment[this_1] = 0. set ConfigValue_valueName[this_1] = "" endfunction function construct_ConfigValue takes integer this_1, real startValue, real increment, string name returns nothing call ConfigValue_init(this_1) set ConfigValue_value[this_1] = startValue set ConfigValue_increment[this_1] = increment set ConfigValue_valueName[this_1] = name endfunction function new_ConfigValue takes real startValue, real increment, string name returns integer local integer this_1 = alloc_ConfigValue() call construct_ConfigValue(this_1, startValue, increment, name) return this_1 endfunction function Booster_init takes integer this_1 returns nothing set Booster_boostspeed[this_1] = new_ConfigValue(250., 25., "Boostspeed") endfunction function construct_Booster takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing local unit receiver local unit receiver_1 call construct_StaticBaseObject(this_1, pos_x_1, pos_y_1, createUnit(owner, BuilderConstants_BOOSTER_ID, pos_x_1, pos_y_1, 0.), Booster_EVENT_RADIUS, ref_function_Booster_orderMove, null) call Booster_init(this_1) call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(this_1) set receiver = UnitEntity_actor[this_1] call unit_addAbility(receiver, BuilderConstants_TURN_OFF_ID) set receiver_1 = receiver call unit_addAbility(receiver_1, Basics_GHOST_INVIS_ID) endfunction function new_Booster takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_Booster() call construct_Booster(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_CongaLineHead takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1173 else call error("Out of memory: Could not create CongaLineHead.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1173 endif return this_1 endfunction function CongaLineHead_init takes integer this_1 returns nothing set CongaLineHead_firstSegment[this_1] = 0 set CongaLineHead_cmode[this_1] = 1 set CongaLineHead_segLength[this_1] = 75. endfunction function alloc_EventListener_add_CongaLineHead_CongaLineHead takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 773 else call error("Out of memory: Could not create EventListener_add_CongaLineHead_CongaLineHead.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 773 endif return this_1 endfunction function construct_CongaLineHead takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing local integer clVar local unit temp local playerunitevent temp_1 call construct_SetupObject(this_1, createUnit(owner, BuilderConstants_CONGA_LINE_HEAD_ID, pos_x_1, pos_y_1, 0.), createUnit(owner, BuilderConstants_CONGA_LINE_HEAD_ID, pos_x_1, pos_y_1, 0.), 0.) call CongaLineHead_init(this_1) set temp = SetupObject_setup[this_1] set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST set clVar = alloc_EventListener_add_CongaLineHead_CongaLineHead() call construct_EventListener(clVar) set this_2990[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) set Entity_sleeps[this_1] = false call unit_addAbility(SetupObject_setup[this_1], CongaObjects_CONGA_CONFIG_ID) endfunction function new_CongaLineHead takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_CongaLineHead() call construct_CongaLineHead(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_Decoration takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1212 else call error("Out of memory: Could not create Decoration.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1212 endif return this_1 endfunction function Decoration_init takes integer this_1 returns nothing set Decoration_scale[this_1] = new_ConfigValue(1.0, 0.1, "Scale") set Decoration_tid[this_1] = 0 set Decoration_hasBeenChanged[this_1] = false endfunction function alloc_EventListener_add_Decoration_Decoration takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 778 else call error("Out of memory: Could not create EventListener_add_Decoration_Decoration.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 778 endif return this_1 endfunction function construct_Decoration takes integer this_1, real pos_x_1, real pos_y_1, player owner, real a, integer tid returns nothing local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local integer clVar local unit temp local playerunitevent temp_1 call construct_StaticSetupObject(this_1, CreateUnit(owner, InstantBuild_buildorders[tid], pos_x_1, pos_y_1, a), CreateUnit(owner, InstantBuild_buildorders[tid], pos_x_1, pos_y_1, a), 0., null) call Decoration_init(this_1) set Decoration_tid[this_1] = tid set receiver = StaticSetupObject_setup[this_1] call unit_addAbility(receiver, Decoration_CHANGE_FACE_ID) set receiver_1 = receiver call unit_addAbility(receiver_1, Decoration_INC_SCALE) set receiver_2 = receiver_1 call unit_addAbility(receiver_2, Decoration_DEC_SCALE) set receiver_3 = receiver_2 call unit_addAbility(receiver_3, Basics_GHOST_INVIS_ID) set temp = StaticSetupObject_setup[this_1] set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST set clVar = alloc_EventListener_add_Decoration_Decoration() call construct_EventListener(clVar) set this_2968[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) endfunction function new_Decoration takes real pos_x_1, real pos_y_1, player owner, real a, integer tid returns integer local integer this_1 = alloc_Decoration() call construct_Decoration(this_1, pos_x_1, pos_y_1, owner, a, tid) return this_1 endfunction function alloc_EventListener_add_Door_Door takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 779 else call error("Out of memory: Could not create EventListener_add_Door_Door.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 779 endif return this_1 endfunction function construct_Door2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing local integer clVar local unit temp local playerunitevent temp_1 call construct_StaticSetupObject(this_1, createUnit(owner, BuilderConstants_DOORDUMMY_ID, pos_x_1, pos_y_1, real_asAngleDegrees(270.)), createUnit(owner, BuilderConstants_DOORORDER_ID, pos_x_1, pos_y_1, real_fromDeg(0.)), Door_EVENT_RADIUS, ref_function_Door_keyopen) call Door_init(this_1) set Door_pathing[this_1] = createUnit(Entity_owner[this_1], Door_DOORPATH, pos_x_1, pos_y_1, real_fromDeg(270.)) set temp = StaticSetupObject_setup[this_1] set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST set clVar = alloc_EventListener_add_Door_Door() call construct_EventListener(clVar) set this_2991[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) endfunction function new_Door_3650 takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_Door() call construct_Door2(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_Executer takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1198 else call error("Out of memory: Could not create Executer.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1198 endif return this_1 endfunction function Executer_init takes integer this_1 returns nothing set Executer_canKillerTrigger[this_1] = false set Executer_canEscaperTrigger[this_1] = true set Executer_eventRect[this_1] = null set Executer_eventRegion[this_1] = null set Executer_entitiesOnPlate[this_1] = 0 set Executer_eventMode[this_1] = 0 set Executer_actionMode[this_1] = 0 set Executer_ON[this_1] = false set Executer_nottiletype[this_1] = 808464433 set Executer_verticalTileSize[this_1] = 0 set Executer_horizontalTileSize[this_1] = 0 set Executer_unitToMove[this_1] = null set Executer_disabled[this_1] = false set Executer_dummy[this_1] = null endfunction function alloc_EventListener_add_Executer_Executer takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 788 else call error("Out of memory: Could not create EventListener_add_Executer_Executer.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 788 endif return this_1 endfunction function construct_Executer2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing local integer clVar local unit temp local playerunitevent temp_1 call construct_StaticBaseObject(this_1, pos_x_1, pos_y_1, createUnit(owner, BuilderConstants_EXECUTER_ID, pos_x_1, pos_y_1, 0.), Executer_EVENT_RADIUS, ref_function_code__Executer_Executer_2641, null) call Executer_init(this_1) set temp = UnitEntity_actor[this_1] set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST set clVar = alloc_EventListener_add_Executer_Executer() call construct_EventListener(clVar) set this_2954[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) endfunction function new_Executer_3655 takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_Executer() call construct_Executer2(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_Faceless takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1178 else call error("Out of memory: Could not create Faceless.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1178 endif return this_1 endfunction function Faceless_init takes integer this_1 returns nothing local integer tuple_temp local integer tuple_temp_1 local integer tuple_temp_2 local integer tuple_temp_3 set Faceless_visibleDur[this_1] = new_ConfigValue(2., 0.5, "Visible Duration") set Faceless_invisDur[this_1] = new_ConfigValue(.5, 0.5, "Invisible Duration") set tuple_temp = Colors_COLOR_WHITE_red set tuple_temp_1 = Colors_COLOR_WHITE_green set tuple_temp_2 = Colors_COLOR_WHITE_blue set tuple_temp_3 = Colors_COLOR_WHITE_alpha set Faceless_color_red[this_1] = tuple_temp set Faceless_color_green[this_1] = tuple_temp_1 set Faceless_color_blue[this_1] = tuple_temp_2 set Faceless_color_alpha[this_1] = tuple_temp_3 set Faceless_fadeDur[this_1] = 1. set Faceless_mode[this_1] = 0 set Faceless_dur[this_1] = dispatch_ConfigValue_ConfigValue_ConfigValue_get(Faceless_visibleDur[this_1]) endfunction function alloc_EventListener_add_Faceless_Faceless takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 789 else call error("Out of memory: Could not create EventListener_add_Faceless_Faceless.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 789 endif return this_1 endfunction function Faceless_setup takes integer this_1 returns nothing local unit receiver = SetupObject_setup[this_1] local unit receiver_1 local unit receiver_2 local unit receiver_3 local unit receiver_4 local unit receiver_5 local integer clVar local unit temp local playerunitevent temp_1 call unit_setVertexColor_4202(receiver, 55, 55, 55, 55) set receiver_1 = receiver call unit_setScale(receiver_1, 0.5) set receiver_2 = receiver_1 call unit_addAbility(receiver_2, Faceless_UP_VIS_ID) set receiver_3 = receiver_2 call unit_addAbility(receiver_3, Faceless_DOWN_VIS_ID) set receiver_4 = receiver_3 call unit_addAbility(receiver_4, Faceless_UP_INVIS_ID) set receiver_5 = receiver_4 call unit_addAbility(receiver_5, Faceless_DOWN_INVIS_ID) set temp = SetupObject_setup[this_1] set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST set clVar = alloc_EventListener_add_Faceless_Faceless() call construct_EventListener(clVar) set this_2981[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) set Entity_sleeps[this_1] = false endfunction function dispatch_Faceless_Faceless_Faceless_setup takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Faceless.setup") else call error("Called Faceless.setup on invalid object.") endif endif call Faceless_setup(this_1) endfunction function construct_Faceless2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing call construct_EscaperSensorSetup3(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, owner, Faceless_DIMENSION_SHIFTER_ID, Faceless_KILL_RADIUS, Faceless_KILL_RADIUS) call Faceless_init(this_1) call dispatch_Faceless_Faceless_Faceless_setup(this_1) endfunction function new_Faceless_3658 takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_Faceless() call construct_Faceless2(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_FireKiller takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1179 else call error("Out of memory: Could not create FireKiller.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1179 endif return this_1 endfunction function FireKiller_init takes integer this_1 returns nothing endfunction function construct_FireKiller2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing call construct_EscaperSensorSetup3(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, owner, EscaperKillers_FIRE_KILLER_ID, EscaperKillers_COLL_SIZE_FIRE, EscaperKillers_COLL_SIZE_FIRE) call FireKiller_init(this_1) call unit_issueImmediateOrder(UnitEntity_actor[this_1], "immolation") call unit_removeAbility(SetupObject_setup[this_1], 1093679177) endfunction function new_FireKiller_3663 takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_FireKiller() call construct_FireKiller2(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_Fountain takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1214 else call error("Out of memory: Could not create Fountain.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1214 endif return this_1 endfunction function Fountain_init takes integer this_1 returns nothing set Fountain_cure[this_1] = true endfunction function alloc_EventListener_add_Fountain_Fountain_1707 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 791 else call error("Out of memory: Could not create EventListener_add_Fountain_Fountain.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 791 endif return this_1 endfunction function construct_Fountain2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing local integer clVar local unit temp local playerunitevent temp_1 call construct_StaticSetupObject(this_1, createUnit(owner, BuilderConstants_FOUNTAIN_BOTH_ID, pos_x_1, pos_y_1, real_asAngleDegrees(270.)), createUnit(owner, BuilderConstants_FOUNTAIN_BOTH_ID, pos_x_1, pos_y_1, real_asAngleDegrees(270.)), 200., ref_function_Fountain_cure) call Fountain_init(this_1) set temp = StaticSetupObject_setup[this_1] set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST set clVar = alloc_EventListener_add_Fountain_Fountain_1707() call construct_EventListener(clVar) set this_2993[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) endfunction function new_Fountain_3669 takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_Fountain() call construct_Fountain2(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function construct_HighObstacle2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing local integer temp = this_1 local real tuple_temp = vec2_withTerrainZ(pos_x_1, pos_y_1) local real tuple_temp_1 = vec2_withTerrainZ_return_y local real tuple_temp_2 = vec2_withTerrainZ_return_z local real temp_x = tuple_temp local real temp_y = tuple_temp_1 local real temp_z = tuple_temp_2 local player temp_1 = owner local integer temp_tuple_highObstacleId local integer tuple_temp_3 call dispatch_RegionData_RegionData_RegionData_getTypeSet(getRegionData_3302(pos_x_1, pos_y_1)) set tuple_temp_3 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_highObstacleId set temp_tuple_highObstacleId = tuple_temp_3 call construct_StaticEscaperSensorSetup3(temp, temp_x, temp_y, temp_z, temp_1, temp_tuple_highObstacleId, Obstacle_EVENT_RADIUS_HIGH, Obstacle_EVENT_HEIGHT_HIGH) call HighObstacle_init(this_1) endfunction function new_HighObstacle_3685 takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_HighObstacle() call construct_HighObstacle2(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_Jumper takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1199 else call error("Out of memory: Could not create Jumper.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1199 endif return this_1 endfunction function Jumper_init takes integer this_1 returns nothing set Jumper_goocounter[this_1] = 0 set Jumper_mode[this_1] = 0 set Jumper_permission[this_1] = 0 set Jumper_jumpForce[this_1] = new_ConfigValue(12., 0.5, "Jump Force") endfunction function alloc_ForGroupCallback_forUnitsInRange_Jumper_Jumper takes nothing returns integer local integer this_1 if ForGroupCallback_firstFree == 0 then if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1 set this_1 = ForGroupCallback_maxIndex set ForGroupCallback_typeId[this_1] = 862 else call error("Out of memory: Could not create ForGroupCallback_forUnitsInRange_Jumper_Jumper.") set this_1 = 0 endif else set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1 set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree] set ForGroupCallback_typeId[this_1] = 862 endif return this_1 endfunction function construct_Jumper2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing local integer clVar local real temp_x local real temp_y local real tuple_temp local real tuple_temp_1 call construct_StaticBaseObject(this_1, pos_x_1, pos_y_1, createUnit(owner, BuilderConstants_JUMPER_ID, pos_x_1, pos_y_1, 0.), 40., ref_function_Jumper_onInRange, null) call Jumper_init(this_1) call unit_addAbility(UnitEntity_actor[this_1], BuilderConstants_TURN_OFF_ID) set tuple_temp = pos_x_1 set tuple_temp_1 = pos_y_1 set temp_x = tuple_temp set temp_y = tuple_temp_1 set clVar = alloc_ForGroupCallback_forUnitsInRange_Jumper_Jumper() set this_2956[clVar] = this_1 call forUnitsInRange(temp_x, temp_y, 8., clVar) endfunction function new_Jumper_3701 takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_Jumper() call construct_Jumper2(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_Knockbacker takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1181 else call error("Out of memory: Could not create Knockbacker.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1181 endif return this_1 endfunction function Knockbacker_init takes integer this_1 returns nothing set Knockbacker_kforce[this_1] = new_ConfigValue(20., 2.5, "Knockback") set Knockbacker_damage[this_1] = new_ConfigValue(50., 25., "Damage") endfunction function alloc_EventListener_add_Knockbacker_Knockbacker_1719 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 803 else call error("Out of memory: Could not create EventListener_add_Knockbacker_Knockbacker.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 803 endif return this_1 endfunction function construct_Knockbacker2 takes integer this_1, real pos_x_1, real pos_y_1, player owner, real facing_radians returns nothing local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local integer clVar local unit temp local playerunitevent temp_1 call construct_EscaperSensorSetup(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, owner, Knockbacker_KNOCKBACKER_ID, facing_radians, 64., 160.) call Knockbacker_init(this_1) set receiver = SetupObject_setup[this_1] call unit_addAbility(receiver, Knockbacker_KNOCK_INC_ID) set receiver_1 = receiver call unit_addAbility(receiver_1, Knockbacker_KNOCK_DEC_ID) set receiver_2 = receiver_1 call unit_addAbility(receiver_2, Knockbacker_DMG_INC_ID) set receiver_3 = receiver_2 call unit_addAbility(receiver_3, Knockbacker_DMG_DEC_ID) set temp = SetupObject_setup[this_1] set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST set clVar = alloc_EventListener_add_Knockbacker_Knockbacker_1719() call construct_EventListener(clVar) set this_2983[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) endfunction function new_Knockbacker_3704 takes real pos_x_1, real pos_y_1, player owner, real facing_radians returns integer local integer this_1 = alloc_Knockbacker() call construct_Knockbacker2(this_1, pos_x_1, pos_y_1, owner, facing_radians) return this_1 endfunction function alloc_MemoryAccessPedestal takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1201 else call error("Out of memory: Could not create MemoryAccessPedestal.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1201 endif return this_1 endfunction function createFText takes real pos_x_1, real pos_y_1, real pos_z, string text, real size returns integer return createFText_2343(pos_x_1, pos_y_1, pos_z, text, size, 0., Vectors_ZERO2_x, Vectors_ZERO2_y) endfunction function alloc_BigString takes nothing returns integer local integer this_1 if BigString_firstFree == 0 then if BigString_maxIndex < JASS_MAX_ARRAY_SIZE then set BigString_maxIndex = BigString_maxIndex + 1 set this_1 = BigString_maxIndex set BigString_typeId[this_1] = 640 else call error("Out of memory: Could not create BigString.") set this_1 = 0 endif else set BigString_firstFree = BigString_firstFree - 1 set this_1 = BigString_nextFree[BigString_firstFree] set BigString_typeId[this_1] = 640 endif return this_1 endfunction function BigString_init takes integer this_1 returns nothing set BigString_length[this_1] = 0 set BigString_startoffset[this_1] = 0 endfunction function BigString_substrings_set takes integer instanceId, integer arrayIndex, string value returns nothing if arrayIndex < 0 or arrayIndex >= 25 then call error("Index out of Bounds") elseif arrayIndex <= 12 then if arrayIndex <= 6 then if arrayIndex <= 3 then if arrayIndex <= 1 then if arrayIndex <= 0 then set BigString_substrings_0[instanceId] = value else set BigString_substrings_1[instanceId] = value endif elseif arrayIndex <= 2 then set BigString_substrings_2[instanceId] = value else set BigString_substrings_3[instanceId] = value endif elseif arrayIndex <= 5 then if arrayIndex <= 4 then set BigString_substrings_4[instanceId] = value else set BigString_substrings_5[instanceId] = value endif else set BigString_substrings_6[instanceId] = value endif elseif arrayIndex <= 9 then if arrayIndex <= 8 then if arrayIndex <= 7 then set BigString_substrings_7[instanceId] = value else set BigString_substrings_8[instanceId] = value endif else set BigString_substrings_9[instanceId] = value endif elseif arrayIndex <= 11 then if arrayIndex <= 10 then set BigString_substrings_10[instanceId] = value else set BigString_substrings_11[instanceId] = value endif else set BigString_substrings_12[instanceId] = value endif elseif arrayIndex <= 18 then if arrayIndex <= 15 then if arrayIndex <= 14 then if arrayIndex <= 13 then set BigString_substrings_13[instanceId] = value else set BigString_substrings_14[instanceId] = value endif else set BigString_substrings_15[instanceId] = value endif elseif arrayIndex <= 17 then if arrayIndex <= 16 then set BigString_substrings_16[instanceId] = value else set BigString_substrings_17[instanceId] = value endif else set BigString_substrings_18[instanceId] = value endif elseif arrayIndex <= 21 then if arrayIndex <= 20 then if arrayIndex <= 19 then set BigString_substrings_19[instanceId] = value else set BigString_substrings_20[instanceId] = value endif else set BigString_substrings_21[instanceId] = value endif elseif arrayIndex <= 23 then if arrayIndex <= 22 then set BigString_substrings_22[instanceId] = value else set BigString_substrings_23[instanceId] = value endif else set BigString_substrings_24[instanceId] = value endif endfunction function BigString_reset takes integer this_1 returns nothing local integer i = 0 local integer temp = BigString_MAX_SUBSTRINGS - 1 loop exitwhen i > temp call BigString_substrings_set(this_1, i, "") set i = i + 1 endloop set BigString_length[this_1] = 0 set BigString_startoffset[this_1] = 0 endfunction function dispatch_BigString_BigString_BigString_reset takes integer this_1 returns nothing if BigString_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BigString.reset") else call error("Called BigString.reset on invalid object.") endif endif call BigString_reset(this_1) endfunction function construct_BigString takes integer this_1 returns nothing call BigString_init(this_1) call dispatch_BigString_BigString_BigString_reset(this_1) endfunction function new_BigString takes nothing returns integer local integer this_1 = alloc_BigString() call construct_BigString(this_1) return this_1 endfunction function alloc_HashMap takes nothing returns integer local integer this_1 if Table_firstFree == 0 then if Table_maxIndex < JASS_MAX_ARRAY_SIZE then set Table_maxIndex = Table_maxIndex + 1 set this_1 = Table_maxIndex set Table_typeId[this_1] = 1493 else call error("Out of memory: Could not create HashMap.") set this_1 = 0 endif else set Table_firstFree = Table_firstFree - 1 set this_1 = Table_nextFree[Table_firstFree] set Table_typeId[this_1] = 1493 endif return this_1 endfunction function new_HashMap takes nothing returns integer local integer this_1 = alloc_HashMap() call construct_HashMap(this_1) return this_1 endfunction function alloc_JsonParser takes nothing returns integer local integer this_1 if JsonParser_firstFree == 0 then if JsonParser_maxIndex < JASS_MAX_ARRAY_SIZE then set JsonParser_maxIndex = JsonParser_maxIndex + 1 set this_1 = JsonParser_maxIndex set JsonParser_typeId[this_1] = 983 else call error("Out of memory: Could not create JsonParser.") set this_1 = 0 endif else set JsonParser_firstFree = JsonParser_firstFree - 1 set this_1 = JsonParser_nextFree[JsonParser_firstFree] set JsonParser_typeId[this_1] = 983 endif return this_1 endfunction function alloc_Json takes nothing returns integer local integer this_1 if Json_firstFree == 0 then if Json_maxIndex < JASS_MAX_ARRAY_SIZE then set Json_maxIndex = Json_maxIndex + 1 set this_1 = Json_maxIndex set Json_typeId[this_1] = 982 else call error("Out of memory: Could not create Json.") set this_1 = 0 endif else set Json_firstFree = Json_firstFree - 1 set this_1 = Json_nextFree[Json_firstFree] set Json_typeId[this_1] = 982 endif return this_1 endfunction function Json_init takes integer this_1 returns nothing set Json_properties[this_1] = new_HashMap() set Json_plist[this_1] = new_LinkedList() endfunction function construct_Json takes integer this_1 returns nothing call Json_init(this_1) endfunction function new_Json takes nothing returns integer local integer this_1 = alloc_Json() call construct_Json(this_1) return this_1 endfunction function JsonParser_init takes integer this_1 returns nothing set JsonParser_bigInput[this_1] = 0 set JsonParser_currentPosition[this_1] = 0 set JsonParser_propStartPosition[this_1] = 0 set JsonParser_squareBracketLvl[this_1] = 0 set JsonParser_lastType[this_1] = 0 set JsonParser_currentToken[this_1] = null set JsonParser_output[this_1] = new_Json() set JsonParser_outputList[this_1] = 0 set JsonParser_propName[this_1] = 0 set JsonParser_propVal[this_1] = 0 endfunction function construct_JsonParser takes integer this_1 returns nothing call JsonParser_init(this_1) endfunction function new_JsonParser takes nothing returns integer local integer this_1 = alloc_JsonParser() call construct_JsonParser(this_1) return this_1 endfunction function MemoryAccessPedestal_init takes integer this_1 returns nothing set MemoryAccessPedestal_tileMap[this_1] = new_HashMap() set MemoryAccessPedestal_entities[this_1] = new_HashList() set MemoryAccessPedestal_tiles[this_1] = new_LinkedList() set MemoryAccessPedestal_effects[this_1] = new_HashMap() set MemoryAccessPedestal_ttag[this_1] = createFText(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], "", 12.) set MemoryAccessPedestal_bs[this_1] = new_BigString() set MemoryAccessPedestal_parser[this_1] = new_JsonParser() set MemoryAccessPedestal_listparser[this_1] = new_JsonParser() set MemoryAccessPedestal_tileString[this_1] = new_BigString() set MemoryAccessPedestal_entString[this_1] = new_BigString() endfunction function construct_MemoryAccessPedestal takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local unit receiver_4 local unit receiver_5 local unit receiver_6 local unit receiver_7 local unit receiver_8 local unit receiver_9 local unit receiver_10 call construct_StaticBaseObject(this_1, pos_x_1, pos_y_1, createUnit(owner, BuilderConstants_PED_ID, pos_x_1, pos_y_1, bj_UNIT_FACING), 0., null, null) call MemoryAccessPedestal_init(this_1) call dispatch_UnitEntity_Entity_UnitEntity_setPos(this_1, vec2_toVec3(vec2_toTile(pos_x_1, pos_y_1), vec2_toTile_return_y), vec2_toVec3_return_y, vec2_toVec3_return_z) call texttag_center(FText_tt[MemoryAccessPedestal_ttag[this_1]], vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, "|cff4AA542ready", 10.) set receiver = UnitEntity_actor[this_1] call unit_addAbility(receiver, PedestalObjects_SAVE1_ID) set receiver_1 = receiver call unit_addAbility(receiver_1, PedestalObjects_LOAD1_ID) set receiver_2 = receiver_1 call unit_addAbility(receiver_2, PedestalObjects_SAVE2_ID) set receiver_3 = receiver_2 call unit_addAbility(receiver_3, PedestalObjects_SAVE3_ID) set receiver_4 = receiver_3 call unit_addAbility(receiver_4, PedestalObjects_SELECT_TILE_ID) set receiver_5 = receiver_4 call unit_addAbility(receiver_5, PedestalObjects_LOAD2_ID) set receiver_6 = receiver_5 call unit_addAbility(receiver_6, PedestalObjects_SELECT_AOE_TILE_ID) set receiver_7 = receiver_6 call unit_addAbility(receiver_7, PedestalObjects_LOAD3_ID) set receiver_8 = receiver_7 call unit_addAbility(receiver_8, BuilderConstants_REMOVE_OBJECT_ID) set receiver_9 = receiver_8 call unit_addAbility(receiver_9, PedestalObjects_SELECT_SINGLE_ID) set receiver_10 = receiver_9 call unit_addAbility(receiver_10, PedestalObjects_SELECT_AOE_ID) call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(this_1) endfunction function new_MemoryAccessPedestal takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_MemoryAccessPedestal() call construct_MemoryAccessPedestal(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_ObjectTarget takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1187 else call error("Out of memory: Could not create ObjectTarget.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1187 endif return this_1 endfunction function ObjectTarget_init takes integer this_1 returns nothing endfunction function construct_ObjectTarget takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing call construct_SetupObject(this_1, createUnit(owner, ObjectTarget_OBJECT_TARGET_ID, pos_x_1, pos_y_1, 0.), createUnit(owner, ObjectTarget_OBJECT_TARGET_ID, pos_x_1, pos_y_1, 0.), 0.) call ObjectTarget_init(this_1) endfunction function new_ObjectTarget takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_ObjectTarget() call construct_ObjectTarget(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_Pointer takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1183 else call error("Out of memory: Could not create Pointer.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1183 endif return this_1 endfunction function Pointer_init takes integer this_1 returns nothing local real tuple_temp set Pointer_turnspeed[this_1] = 2. set tuple_temp = real_fromDeg(0.) set Pointer_angl_radians[this_1] = tuple_temp set Pointer_turning[this_1] = false endfunction function alloc_EventListener_add_Pointer_Pointer takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 807 else call error("Out of memory: Could not create EventListener_add_Pointer_Pointer.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 807 endif return this_1 endfunction function construct_Pointer takes integer this_1, real pos_x_1, real pos_y_1, player owner, real facing_radians returns nothing local integer clVar local unit temp local playerunitevent temp_1 local real tuple_temp call construct_EscaperSensorSetup(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, owner, Pointer_POINTER_ID, facing_radians, Pointer_POINTER_RADIUS, 16.) call Pointer_init(this_1) set tuple_temp = facing_radians set Pointer_angl_radians[this_1] = tuple_temp set temp = SetupObject_setup[this_1] set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST set clVar = alloc_EventListener_add_Pointer_Pointer() call construct_EventListener(clVar) set this_2984[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) endfunction function new_Pointer takes real pos_x_1, real pos_y_1, player owner, real facing_radians returns integer local integer this_1 = alloc_Pointer() call construct_Pointer(this_1, pos_x_1, pos_y_1, owner, facing_radians) return this_1 endfunction function alloc_Powernode takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1188 else call error("Out of memory: Could not create Powernode.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1188 endif return this_1 endfunction function Powernode_init takes integer this_1 returns nothing set Powernode_bounciness[this_1] = new_ConfigValue(0.75, 0.25, "Bounciness") set Powernode_firstLink[this_1] = 0 endfunction function alloc_EventListener_add_Powernode_Powernode takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 808 else call error("Out of memory: Could not create EventListener_add_Powernode_Powernode.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 808 endif return this_1 endfunction function construct_Powernode takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local integer clVar local unit temp local playerunitevent temp_1 call construct_SetupObject(this_1, createUnit(owner, BuilderConstants_POWER_NODE_ID, pos_x_1, pos_y_1, 0.), createUnit(owner, BuilderConstants_POWER_NODE_ID, pos_x_1, pos_y_1, 0.), 0.) call Powernode_init(this_1) set receiver = SetupObject_setup[this_1] call unit_addAbility(receiver, Powernode_LINK_SPELLBOOK_ID) set receiver_1 = receiver call unit_addAbility(receiver_1, Powernode_INCREASE_BOUNCE_ID) set receiver_2 = receiver_1 call unit_addAbility(receiver_2, Powernode_DECREASE_BOUNCE_ID) set receiver_3 = receiver_2 call unit_addAbility(receiver_3, BuilderConstants_TURN_OFF_ID) set Entity_sleeps[this_1] = false set temp = SetupObject_setup[this_1] set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST set clVar = alloc_EventListener_add_Powernode_Powernode() call construct_EventListener(clVar) set this_2994[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) endfunction function new_Powernode takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_Powernode() call construct_Powernode(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function dispatch_RevivePoint_Revivepoint_RevivePoint_terminate takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling RevivePoint.terminate") else call error("Called RevivePoint.terminate on invalid object.") endif endif call cyc_RevivePoint_terminate(0, this_1) endfunction function construct_RevivePoint2 takes integer this_1, real pos_x_1, real pos_y_1, real pos_z, player owner returns nothing local integer tile_x local integer tile_y local integer tile_key local integer tile_currentType local integer tile_lastType local integer tile_modifiers_val local integer temp_tuple_walkableId local integer temp_x local integer temp_y local integer temp_key local integer temp_currentType local integer temp_lastType local integer temp_modifiers_val local integer tuple_temp local integer tuple_temp_1 local integer tuple_temp_2 local integer tuple_temp_3 local integer tuple_temp_4 local integer tuple_temp_5 local integer tuple_temp_6 local integer tuple_temp_7 local integer tuple_temp_8 local integer tuple_temp_9 local integer tuple_temp_10 local integer tuple_temp_11 local integer tuple_temp_12 call construct_StaticSetupObject(this_1, createUnit(owner, BuilderConstants_REVIVE_POINT_ID, vec3_toVec2(pos_x_1, pos_y_1, pos_z), vec3_toVec2_return_y, 0.), createUnit(owner, BuilderConstants_REVIVE_POINT_ID, vec3_toVec2(pos_x_1, pos_y_1, pos_z), vec3_toVec2_return_y, 0.), Revivepoint_EVENT_RADIUS, ref_function_RevivePoint_onReach) call RevivePoint_init(this_1) set tuple_temp = vec3_getEBRTile(pos_x_1, pos_y_1, pos_z) set tuple_temp_1 = vec3_getEBRTile_return_y set tuple_temp_2 = vec3_getEBRTile_return_key set tuple_temp_3 = vec3_getEBRTile_return_currentType set tuple_temp_4 = vec3_getEBRTile_return_lastType set tuple_temp_5 = vec3_getEBRTile_return_modifiers_val set tile_x = tuple_temp set tile_y = tuple_temp_1 set tile_key = tuple_temp_2 set tile_currentType = tuple_temp_3 set tile_lastType = tuple_temp_4 set tile_modifiers_val = tuple_temp_5 if ebrtile_hasModifier(tile_x, tile_y, tile_key, tile_currentType, tile_lastType, tile_modifiers_val, 4) then call dispatch_RevivePoint_Revivepoint_RevivePoint_terminate(this_1) else call ebrtile_addModifier(tile_x, tile_y, tile_key, tile_currentType, tile_lastType, tile_modifiers_val, 4) set tuple_temp_6 = tile_x set tuple_temp_7 = tile_y set tuple_temp_8 = tile_key set tuple_temp_9 = tile_currentType set tuple_temp_10 = tile_lastType set tuple_temp_11 = tile_modifiers_val set temp_x = tuple_temp_6 set temp_y = tuple_temp_7 set temp_key = tuple_temp_8 set temp_currentType = tuple_temp_9 set temp_lastType = tuple_temp_10 set temp_modifiers_val = tuple_temp_11 call dispatch_RegionData_RegionData_RegionData_getTypeSet(Entity_setCurrentRegion(this_1)) set tuple_temp_12 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_walkableId set temp_tuple_walkableId = tuple_temp_12 call ebrtile_setType(temp_x, temp_y, temp_key, temp_currentType, temp_lastType, temp_modifiers_val, temp_tuple_walkableId) endif endfunction function new_RevivePoint_3733 takes real pos_x_1, real pos_y_1, real pos_z, player owner returns integer local integer this_1 = alloc_RevivePoint() call construct_RevivePoint2(this_1, pos_x_1, pos_y_1, pos_z, owner) return this_1 endfunction function alloc_Spinner takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1190 else call error("Out of memory: Could not create Spinner.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1190 endif return this_1 endfunction function Spinner_init takes integer this_1 returns nothing set Spinner_firstNode[this_1] = 0 set Spinner_spinSpeed[this_1] = new_ConfigValue(2. * Angle_DEGTORAD, 0.25 * Angle_DEGTORAD, "Spinspeed") set Spinner_cosFactor[this_1] = new_ConfigValue(1., 0.1, "Cos-Factor") set Spinner_sinFactor[this_1] = new_ConfigValue(1., 0.1, "Sin-Factor") set Spinner_useSuperFormula[this_1] = false endfunction function alloc_EventListener_add_Spinner_Spinner_1733 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 817 else call error("Out of memory: Could not create EventListener_add_Spinner_Spinner.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 817 endif return this_1 endfunction function construct_Spinner2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing local integer clVar local unit temp local playerunitevent temp_1 call construct_SetupObject(this_1, createUnit(owner, BuilderConstants_SPINNER_ID, pos_x_1, pos_y_1, 0.), createUnit(owner, BuilderConstants_SPINNER_ID, pos_x_1, pos_y_1, 0.), 0.) call Spinner_init(this_1) set Entity_sleeps[this_1] = false call unit_addAbility(SetupObject_setup[this_1], BuilderConstants_TURN_OFF_ID) set temp = SetupObject_setup[this_1] set temp_1 = EVENT_PLAYER_UNIT_SPELL_EFFECT set clVar = alloc_EventListener_add_Spinner_Spinner_1733() call construct_EventListener(clVar) set this_2996[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) endfunction function new_Spinner_3755 takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_Spinner() call construct_Spinner2(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_TankKiller takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1186 else call error("Out of memory: Could not create TankKiller.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1186 endif return this_1 endfunction function TankKiller_init takes integer this_1 returns nothing endfunction function construct_TankKiller2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing call construct_EscaperSensorSetup3(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, owner, EscaperKillers_TANK_KILLER_ID, EscaperKillers_COLL_SIZE_TANK, EscaperKillers_COLL_SIZE_TANK) call TankKiller_init(this_1) endfunction function new_TankKiller_3761 takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_TankKiller() call construct_TankKiller2(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_Teleporter takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1203 else call error("Out of memory: Could not create Teleporter.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1203 endif return this_1 endfunction function Teleporter_init takes integer this_1 returns nothing set Teleporter_mode[this_1] = 0 endfunction function construct_Teleporter takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing call construct_StaticBaseObject(this_1, pos_x_1, pos_y_1, createUnit(owner, BuilderConstants_TELEPORTER_ID, pos_x_1, pos_y_1, 0.), Teleporter_EVENT_RADIUS, ref_function_Teleporter_teleport, null) call Teleporter_init(this_1) call unit_addAbility(UnitEntity_actor[this_1], BuilderConstants_TURN_OFF_ID) endfunction function new_Teleporter takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_Teleporter() call construct_Teleporter(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_TerrainBlocker takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1204 else call error("Out of memory: Could not create TerrainBlocker.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1204 endif return this_1 endfunction function TerrainBlocker_init takes integer this_1 returns nothing set TerrainBlocker_silent[this_1] = false endfunction function construct_TerrainBlocker takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing local integer tile_x local integer tile_y local integer tile_key local integer tile_currentType local integer tile_lastType local integer tile_modifiers_val local integer tuple_temp local integer tuple_temp_1 local integer tuple_temp_2 local integer tuple_temp_3 local integer tuple_temp_4 local integer tuple_temp_5 call construct_StaticBaseObject(this_1, pos_x_1, pos_y_1, createUnit(owner, BuilderConstants_TC_BLOCKER_ID, real_round(pos_x_1 / 128.) * 128., real_round(pos_y_1 / 128.) * 128., 0.), 0., null, null) call TerrainBlocker_init(this_1) set tuple_temp = vec2_getEBRTile(pos_x_1, pos_y_1) set tuple_temp_1 = vec2_getEBRTile_return_y set tuple_temp_2 = vec2_getEBRTile_return_key set tuple_temp_3 = vec2_getEBRTile_return_currentType set tuple_temp_4 = vec2_getEBRTile_return_lastType set tuple_temp_5 = vec2_getEBRTile_return_modifiers_val set tile_x = tuple_temp set tile_y = tuple_temp_1 set tile_key = tuple_temp_2 set tile_currentType = tuple_temp_3 set tile_lastType = tuple_temp_4 set tile_modifiers_val = tuple_temp_5 call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(this_1) if ebrtile_hasModifier(tile_x, tile_y, tile_key, tile_currentType, tile_lastType, tile_modifiers_val, 1) or ebrtile_hasModifier(tile_x, tile_y, tile_key, tile_currentType, tile_lastType, tile_modifiers_val, 4) then set TerrainBlocker_silent[this_1] = true call cyc_RevivePoint_terminate(18, this_1) else call ebrtile_addModifier(tile_x, tile_y, tile_key, tile_currentType, tile_lastType, tile_modifiers_val, 1) endif endfunction function new_TerrainBlocker takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_TerrainBlocker() call construct_TerrainBlocker(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_TerrainChanger takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1191 else call error("Out of memory: Could not create TerrainChanger.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1191 endif return this_1 endfunction function TerrainChanger_init takes integer this_1 returns nothing set TerrainChanger_sizeX[this_1] = new_ConfigValue(1., 1., "Width") set TerrainChanger_sizeY[this_1] = new_ConfigValue(1., 1., "Height") set TerrainChanger_innerTile[this_1] = 808464432 set TerrainChanger_outerTile[this_1] = 808464433 endfunction function alloc_EventListener_add_TerrainChanger_TerrainChanger takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 822 else call error("Out of memory: Could not create EventListener_add_TerrainChanger_TerrainChanger.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 822 endif return this_1 endfunction function construct_TerrainChanger takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing local integer clVar local integer temp_tuple_walkableId local integer temp_tuple_unwalkableId local unit temp local playerunitevent temp_1 local integer tuple_temp local integer tuple_temp_1 local integer tuple_temp_2 local integer tuple_temp_3 call construct_SetupObject(this_1, createUnit(owner, TerrainChanger_TERRAIN_CHANGER_ID, pos_x_1, pos_y_1, 0.), createUnit(owner, TerrainChanger_TERRAIN_CHANGER_ID, pos_x_1, pos_y_1, 0.), 0.) call TerrainChanger_init(this_1) set temp = SetupObject_setup[this_1] set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST set clVar = alloc_EventListener_add_TerrainChanger_TerrainChanger() call construct_EventListener(clVar) set this_2985[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) set tuple_temp = vec2_getEBRTile(pos_x_1, pos_y_1) set tuple_temp_1 = vec2_getEBRTile_return_y set TerrainChanger_currentTile_x[this_1] = tuple_temp set TerrainChanger_currentTile_y[this_1] = tuple_temp_1 call dispatch_RegionData_RegionData_RegionData_getTypeSet(Entity_getCurrentRegion(this_1)) set tuple_temp_2 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_walkableId set temp_tuple_walkableId = tuple_temp_2 set TerrainChanger_innerTile[this_1] = temp_tuple_walkableId call dispatch_RegionData_RegionData_RegionData_getTypeSet(Entity_getCurrentRegion(this_1)) set tuple_temp_3 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId set temp_tuple_unwalkableId = tuple_temp_3 set TerrainChanger_outerTile[this_1] = temp_tuple_unwalkableId set Entity_sleeps[this_1] = false endfunction function new_TerrainChanger takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_TerrainChanger() call construct_TerrainChanger(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_Texter takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1205 else call error("Out of memory: Could not create Texter.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1205 endif return this_1 endfunction function Texter_init takes integer this_1 returns nothing local integer tuple_temp local integer tuple_temp_1 local integer tuple_temp_2 set Texter_hidden[this_1] = true set tuple_temp = 255 set tuple_temp_1 = 255 set tuple_temp_2 = 255 set Texter_col_red[this_1] = tuple_temp set Texter_col_green[this_1] = tuple_temp_1 set Texter_col_blue[this_1] = tuple_temp_2 endfunction function createCenterFText takes real pos_x_1, real pos_y_1, real pos_z, string text, real size returns integer local integer ft = createFText_2343(pos_x_1, pos_y_1, pos_z, text, size, 0., Vectors_ZERO2_x, Vectors_ZERO2_y) local texttag receiver = FText_tt[ft] call texttag_center(receiver, pos_x_1, pos_y_1, pos_z, text, size) return ft endfunction function construct_Texter takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing local texttag receiver local texttag receiver_1 call construct_StaticBaseObject(this_1, pos_x_1, pos_y_1, createUnit(owner, BuilderConstants_TEXTER_ID, pos_x_1, pos_y_1, 0.), Texter_EVENT_RADIUS, ref_function_Texter_onStep, null) call Texter_init(this_1) call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setEnabled(this_1, false) set Texter_text[this_1] = createCenterFText(unit_getPos3Zero(UnitEntity_actor[this_1]), unit_getPos3Zero_return_y, unit_getPos3Zero_return_z, "", 12.) set receiver = FText_tt[Texter_text[this_1]] call texttag_setColor(receiver, Texter_col_red[this_1], Texter_col_green[this_1], Texter_col_blue[this_1], 0) set receiver_1 = receiver call texttag_setVisibility(receiver_1, false) endfunction function new_Texter takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_Texter() call construct_Texter(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_Tracks takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1223 else call error("Out of memory: Could not create Tracks.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1223 endif return this_1 endfunction function Tracks_init takes integer this_1 returns nothing local real tuple_temp local real tuple_temp_1 set Tracks_trackSpeed[this_1] = new_ConfigValue(4., 0.50, "Trackspeed") set Tracks_tsize[this_1] = 0 set tuple_temp = Vectors_UP_x set tuple_temp_1 = Vectors_UP_y set Tracks_dir_x[this_1] = tuple_temp set Tracks_dir_y[this_1] = tuple_temp_1 endfunction function alloc_EventListener_add_Tracks_Tracks takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 827 else call error("Out of memory: Could not create EventListener_add_Tracks_Tracks.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 827 endif return this_1 endfunction function construct_Tracks takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing local integer clVar local unit temp local playerunitevent temp_1 call construct_UnitEntity(this_1, createUnit(owner, Tracks_TRACKS[0], pos_x_1, pos_y_1, 0.)) call Tracks_init(this_1) call Entity_setCurrentRegion(this_1) set Tracks_setup[this_1] = createUnit(owner, Tracks_TRACKS_ID, pos_x_1, pos_y_1, 0.) call unit_setEntity(Tracks_setup[this_1], this_1) set temp = Tracks_setup[this_1] set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST set clVar = alloc_EventListener_add_Tracks_Tracks() call construct_EventListener(clVar) set this_2998[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) call dispatch_Tracks_Tracks_Tracks_updateTrack(this_1) endfunction function new_Tracks takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_Tracks() call construct_Tracks(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_Trap takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1206 else call error("Out of memory: Could not create Trap.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1206 endif return this_1 endfunction function Trap_init takes integer this_1 returns nothing set Trap_sfxid[this_1] = 3 set Trap_interval[this_1] = 2. set Trap_timerreal[this_1] = 0. set Trap_pull[this_1] = false set Trap_uptimes[this_1] = 0 set Trap_goocounter[this_1] = 0 endfunction function alloc_EventListener_add_Trap_Trap takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 828 else call error("Out of memory: Could not create EventListener_add_Trap_Trap.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 828 endif return this_1 endfunction function construct_Trap takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing local integer clVar local unit temp local playerunitevent temp_1 call construct_StaticBaseObject(this_1, pos_x_1, pos_y_1, createUnit(owner, BuilderConstants_TRAP_ID, pos_x_1, pos_y_1, 0.), Trap_EVENT_RADIUS, ref_function_Trap_onStep, null) call Trap_init(this_1) call dispatch_Entity_Entity_Entity_DupletListModule_deactivate(this_1) set temp = UnitEntity_actor[this_1] set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST set clVar = alloc_EventListener_add_Trap_Trap() call construct_EventListener(clVar) set this_2959[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) endfunction function new_Trap takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_Trap() call construct_Trap(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_UnitCreator takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1207 else call error("Out of memory: Could not create UnitCreator.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1207 endif return this_1 endfunction function UnitCreator_init takes integer this_1 returns nothing set UnitCreator_interval[this_1] = 5. set UnitCreator_timerreal[this_1] = .5 set UnitCreator_spawnUnitType[this_1] = EscaperKillers_TANK_KILLER_ID set UnitCreator_delays[this_1] = new_LinkedList() set UnitCreator_tmode[this_1] = 0 endfunction function construct_UnitCreator2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing call construct_StaticBaseObject(this_1, pos_x_1, pos_y_1, createUnit(owner, BuilderConstants_UNIT_CREATOR_ID, pos_x_1, pos_y_1, 0.), 0., null, null) call UnitCreator_init(this_1) call unit_addAbility(UnitEntity_actor[this_1], Unitcreator_FIXED_ID) call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setEnabled(this_1, false) endfunction function new_UnitCreator_3777 takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_UnitCreator() call construct_UnitCreator2(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_UnitRemover takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1209 else call error("Out of memory: Could not create UnitRemover.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1209 endif return this_1 endfunction function UnitRemover_init takes integer this_1 returns nothing endfunction function construct_UnitRemover2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing call construct_StaticBaseObject(this_1, pos_x_1, pos_y_1, createUnit(owner, BuilderConstants_UNIT_REMOVER_ID, pos_x_1, pos_y_1, 0.), 64., ref_function_UnitRemover_removeUnit, null) call UnitRemover_init(this_1) call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(this_1) call unit_addAbility(UnitEntity_actor[this_1], BuilderConstants_TURN_OFF_ID) endfunction function new_UnitRemover_3781 takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_UnitRemover() call construct_UnitRemover2(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_VolcanoObstacle takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1220 else call error("Out of memory: Could not create VolcanoObstacle.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1220 endif return this_1 endfunction function VolcanoObstacle_init takes integer this_1 returns nothing endfunction function construct_VolcanoObstacle2 takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing call construct_StaticEscaperSensorSetup3(this_1, vec2_withTerrainZ(pos_x_1, pos_y_1), vec2_withTerrainZ_return_y, vec2_withTerrainZ_return_z, owner, BuilderConstants_VOLCANO_ID, Obstacle_EVENT_RADIUS_V, Obstacle_EVENT_RADIUS_V) call VolcanoObstacle_init(this_1) endfunction function new_VolcanoObstacle takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_VolcanoObstacle() call construct_VolcanoObstacle2(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_Vortex takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1225 else call error("Out of memory: Could not create Vortex.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1225 endif return this_1 endfunction function Vortex_init takes integer this_1 returns nothing set Vortex_vgravity[this_1] = 2. set Vortex_zMode[this_1] = 0 set Vortex_radiusSq[this_1] = Vortex_GRAV_RADIUS_MEDIUM endfunction function alloc_EventListener_add_Vortex_Vortex takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 830 else call error("Out of memory: Could not create EventListener_add_Vortex_Vortex.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 830 endif return this_1 endfunction function construct_Vortex takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing local integer clVar local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local unit receiver_4 local unit receiver_5 local unit receiver_6 local unit receiver_7 local unit temp local playerunitevent temp_1 call construct_UnitEntity(this_1, CreateUnit(owner, BuilderConstants_VORTEX_ID, pos_x_1, pos_y_1, 0.)) call Vortex_init(this_1) call Entity_setCurrentRegion(this_1) set temp = UnitEntity_actor[this_1] set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST set clVar = alloc_EventListener_add_Vortex_Vortex() call construct_EventListener(clVar) set this_2999[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) set receiver = UnitEntity_actor[this_1] call unit_addAbility(receiver, Vortex_ZMODE_NONE) set receiver_1 = receiver call unit_addAbility(receiver_1, Vortex_ZMODE_CYLI) set receiver_2 = receiver_1 call unit_addAbility(receiver_2, Vortex_ZMODE_HEMI) set receiver_3 = receiver_2 call unit_setVertexColor_4202(receiver_3, 255, 255, 255, 155) set receiver_4 = receiver_3 call unit_addAbility(receiver_4, Vortex_SIZE_SMALL) set receiver_5 = receiver_4 call unit_addAbility(receiver_5, Vortex_SIZE_MED) set receiver_6 = receiver_5 call unit_addAbility(receiver_6, Vortex_SIZE_BIG) set receiver_7 = receiver_6 call unit_addAbility(receiver_7, Basics_GHOST_INVIS_ID) set Vortex_vortexFx[this_1] = new_Fx_3672(vec2_withZ(pos_x_1, pos_y_1, 12.), vec2_withZ_return_y, vec2_withZ_return_z, "models\\vortex256.mdx") endfunction function new_Vortex takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_Vortex() call construct_Vortex(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_Wall takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1221 else call error("Out of memory: Could not create Wall.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1221 endif return this_1 endfunction function Wall_init takes integer this_1 returns nothing set Wall_tId[this_1] = 0 endfunction function construct_Wall takes integer this_1, real pos_x_1, real pos_y_1, player owner, real angle, integer tId returns nothing call construct_StaticSetupObject(this_1, createUnit(owner, InstantBuild_buildorders[tId], pos_x_1, pos_y_1, real_fromDeg(angle)), createUnit(owner, InstantBuild_buildorders[tId], pos_x_1, pos_y_1, real_fromDeg(angle)), 0., null) call Wall_init(this_1) set Wall_tId[this_1] = tId endfunction function new_Wall takes real pos_x_1, real pos_y_1, player owner, real angle, integer tId returns integer local integer this_1 = alloc_Wall() call construct_Wall(this_1, pos_x_1, pos_y_1, owner, angle, tId) return this_1 endfunction function alloc_Waypoint takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1210 else call error("Out of memory: Could not create Waypoint.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1210 endif return this_1 endfunction function Waypoint_init takes integer this_1 returns nothing set Waypoint_delay[this_1] = new_ConfigValue(0., Waypoint_INCREMENT, "Delay") set Waypoint_wisps[this_1] = true set Waypoint_linked[this_1] = 0 set Waypoint_ready[this_1] = false endfunction function construct_Waypoint takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing call construct_StaticBaseObject(this_1, pos_x_1, pos_y_1, CreateUnit(owner, BuilderConstants_WAYPOINT_ID, pos_x_1, pos_y_1, 0.), Waypoint_EVENT_RADIUS, ref_function_Waypoint_onInRange, ref_function_code__Waypoint_Waypoint) call Waypoint_init(this_1) endfunction function new_Waypoint takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_Waypoint() call construct_Waypoint(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function newObjectFromId takes player owner, real tpos_x_1, real tpos_y_1, integer id returns integer local integer temp = id if temp == SerializeIds_JUMPER_INDEX then return new_Jumper_3701(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_REVIVE_INDEX then return new_RevivePoint_3733(tpos_x_1, tpos_y_1, 0., owner) elseif temp == SerializeIds_TEXTER_INDEX then return new_Texter(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_BOMBTOWER_INDEX then return new_Bombertower(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_VORTEX_INDEX then return new_Vortex(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_EXECUTER_INDEX then return new_Executer_3655(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_BOOSTER_INDEX then return new_Booster(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_UNITREMOVER_INDEX then return new_UnitRemover_3781(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_WAYPOINT_INDEX then return new_Waypoint(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_TELEPORTER_INDEX then return new_Teleporter(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_DOOR_INDEX then return new_Door_3650(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_SMALLOBS_INDEX then return new_SmallObstacle_3744(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_BIGOBS_INDEX then return new_BigObstacle_3621(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_HIGH_OBS_INDEX then return new_HighObstacle_3685(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_TREE_INDEX then return new_Tree(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_SPINNER_INDEX then return new_Spinner_3755(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_UNITCREATOR_INDEX then return new_UnitCreator_3777(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_WALL_INDEX then return new_Wall(tpos_x_1, tpos_y_1, owner, 270., SerializeIds_WALL_INDEX) elseif temp == SerializeIds_TRACKS_INDEX then return new_Tracks(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_FOUNTAIN_INDEX then return new_Fountain_3669(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_POWERNODE_INDEX then return new_Powernode(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_TRAP_INDEX then return new_Trap(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_HWALL_INDEX then return new_Wall(tpos_x_1, tpos_y_1, owner, 270., SerializeIds_HWALL_INDEX) elseif temp == SerializeIds_VWALL_INDEX then return new_Wall(tpos_x_1, tpos_y_1, owner, 270., SerializeIds_VWALL_INDEX) elseif temp == SerializeIds_CONGA_INDEX then return new_CongaLineHead(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_TBLOCKER_INDEX then return new_TerrainBlocker(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_VOLCANO_INDEX then return new_VolcanoObstacle(tpos_x_1, tpos_y_1, owner) elseif temp == 140 then return new_Decoration(tpos_x_1, tpos_y_1, owner, GetRandomReal(0., 360.), id) elseif temp == 141 then return new_Decoration(tpos_x_1, tpos_y_1, owner, GetRandomReal(0., 360.), id) elseif temp == 142 then return new_Decoration(tpos_x_1, tpos_y_1, owner, GetRandomReal(0., 360.), id) elseif temp == 143 then return new_Decoration(tpos_x_1, tpos_y_1, owner, GetRandomReal(0., 360.), id) elseif temp == 144 then return new_Decoration(tpos_x_1, tpos_y_1, owner, GetRandomReal(0., 360.), id) elseif temp == 145 then return new_Decoration(tpos_x_1, tpos_y_1, owner, GetRandomReal(0., 360.), id) elseif temp == 146 then return new_Decoration(tpos_x_1, tpos_y_1, owner, GetRandomReal(0., 360.), id) elseif temp == 147 then return new_Decoration(tpos_x_1, tpos_y_1, owner, GetRandomReal(0., 360.), id) elseif temp == 148 then return new_Decoration(tpos_x_1, tpos_y_1, owner, GetRandomReal(0., 360.), id) elseif temp == 149 then return new_Decoration(tpos_x_1, tpos_y_1, owner, GetRandomReal(0., 360.), id) elseif temp == 150 then return new_Decoration(tpos_x_1, tpos_y_1, owner, GetRandomReal(0., 360.), id) elseif temp == 151 then return new_MemoryAccessPedestal(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_ARCANERY_INDEX then return new_Arcanery_3609(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_SMALLKILL_INDEX then return new_SmallKiller_3741(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_BIGKILL_INDEX then return new_BigKiller_3616(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_BOMBER_INDEX then return new_Bomber(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_KEY_INDEX then return new_Key(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_SMALLRANDKILL_INDEX then return new_SmallRandomKiller_3746(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_BIGRANDKILL_INDEX then return new_BigRandomKiller_3623(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_TANKKILL_INDEX then return new_TankKiller_3761(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_GLAIVEKILL_INDEX then return new_GlaiveKiller_3676(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_FIREKILL_INDEX then return new_FireKiller_3663(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_AIRKILL_INDEX then return new_AirKiller_3606(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_KNOCKBACKER_INDEX then return new_Knockbacker_3704(tpos_x_1, tpos_y_1, owner, 0.) elseif temp == SerializeIds_FACELESS_INDEX then return new_Faceless_3658(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_POINTER_INDEX then return new_Pointer(tpos_x_1, tpos_y_1, owner, 0.) elseif temp == SerializeIds_OBJ_TARGET_INDEX then return new_ObjectTarget(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_TC_INDEX then return new_TerrainChanger(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_COIN_INDEX then return new_Coin(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_BOOTS_INDEX then return new_Boots(tpos_x_1, tpos_y_1, owner) elseif temp == SerializeIds_TOME_INDEX then return new_Tome(tpos_x_1, tpos_y_1, owner) endif return 0 endfunction function construct_AirKiller takes integer this_1, real pos_x_1, real pos_y_1, player owner, real facing_radians returns nothing call construct_EscaperSensorSetup(this_1, vec2_withZ(pos_x_1, pos_y_1, 200.), vec2_withZ_return_y, vec2_withZ_return_z, owner, EscaperKillers_AIR_KILLER_ID, facing_radians, EscaperKillers_COLL_SIZE_AIR_XY, EscaperKillers_COLL_SIZE_AIR_Z) call AirKiller_init(this_1) endfunction function new_AirKiller takes real pos_x_1, real pos_y_1, player owner, real facing_radians returns integer local integer this_1 = alloc_AirKiller() call construct_AirKiller(this_1, pos_x_1, pos_y_1, owner, facing_radians) return this_1 endfunction function construct_Faceless takes integer this_1, real pos_x_1, real pos_y_1, player owner, real facing_radians returns nothing call construct_EscaperSensorSetup(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, owner, Faceless_DIMENSION_SHIFTER_ID, facing_radians, Faceless_KILL_RADIUS, Faceless_KILL_RADIUS) call Faceless_init(this_1) call dispatch_Faceless_Faceless_Faceless_setup(this_1) endfunction function new_Faceless takes real pos_x_1, real pos_y_1, player owner, real facing_radians returns integer local integer this_1 = alloc_Faceless() call construct_Faceless(this_1, pos_x_1, pos_y_1, owner, facing_radians) return this_1 endfunction function construct_FireKiller takes integer this_1, real pos_x_1, real pos_y_1, player owner, real facing_radians returns nothing call construct_EscaperSensorSetup(this_1, vec2_withZ(pos_x_1, pos_y_1, 256.), vec2_withZ_return_y, vec2_withZ_return_z, owner, EscaperKillers_FIRE_KILLER_ID, facing_radians, EscaperKillers_COLL_SIZE_FIRE, 64.) call FireKiller_init(this_1) call unit_issueImmediateOrder(UnitEntity_actor[this_1], "immolation") call unit_removeAbility(SetupObject_setup[this_1], 1093679177) endfunction function new_FireKiller takes real pos_x_1, real pos_y_1, player owner, real facing_radians returns integer local integer this_1 = alloc_FireKiller() call construct_FireKiller(this_1, pos_x_1, pos_y_1, owner, facing_radians) return this_1 endfunction function UnitProducer_onCast takes integer this_1 returns boolean local integer id = GetSpellAbilityId() local integer obj_1 = unit_getEntity(GetSpellAbilityUnit()) local real tuple_temp = vec3_toVec2(dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint(obj_1), dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_y, dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_z) local real tuple_temp_1 = vec3_toVec2_return_y local real rallyPos_x_1 = tuple_temp local real rallyPos_y_1 = tuple_temp_1 local integer data_1 = getRegionData_3302(rallyPos_x_1, rallyPos_y_1) local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local unit receiver_4 local unit receiver_5 local unit receiver_6 local unit receiver_7 local unit receiver_8 local unit receiver_9 local unit receiver_10 local unit receiver_11 local unit receiver_12 local unit receiver_13 local unit receiver_14 local unit receiver_15 local unit receiver_16 local unit receiver_17 local unit receiver_18 local unit receiver_19 local unit receiver_20 local unit receiver_21 local unit receiver_22 local unit receiver_23 local unit receiver_24 local unit receiver_25 local unit receiver_26 local unit receiver_27 local unit receiver_28 local unit receiver_29 local unit receiver_30 local unit receiver_31 local integer temp_tuple_bigKillerId local integer index local integer temp local boolean andLeft local integer tuple_temp_2 if id == UnitProducer_SECOND_PAGE then set receiver = UnitEntity_actor[obj_1] call unit_removeAbility(receiver, UnitProducer_BIG_KILLER) set receiver_1 = receiver call unit_removeAbility(receiver_1, UnitProducer_SMALL_KILLER) set receiver_2 = receiver_1 call unit_removeAbility(receiver_2, UnitProducer_SR_KILLER) set receiver_3 = receiver_2 call unit_removeAbility(receiver_3, UnitProducer_BR_KILLER) set receiver_4 = receiver_3 call unit_removeAbility(receiver_4, UnitProducer_TANK_KILLER) set receiver_5 = receiver_4 call unit_removeAbility(receiver_5, UnitProducer_GLAIVE_KILLER) set receiver_6 = receiver_5 call unit_removeAbility(receiver_6, UnitProducer_SECOND_PAGE) set receiver_7 = receiver_6 call unit_removeAbility(receiver_7, UnitProducer_KNOCKBACK) set receiver_8 = receiver_7 call unit_removeAbility(receiver_8, UnitProducer_FACELESS) set receiver_9 = receiver_8 call unit_removeAbility(receiver_9, UnitProducer_AIR_KILLER) set receiver_10 = receiver_9 call unit_removeAbility(receiver_10, UnitProducer_FIRE) set receiver_11 = receiver_10 call unit_addAbility(receiver_11, UnitProducer_OBJ_TARGET) set receiver_12 = receiver_11 call unit_addAbility(receiver_12, UnitProducer_T_CHANGER) set receiver_13 = receiver_12 call unit_addAbility(receiver_13, UnitProducer_POINTER) set receiver_14 = receiver_13 call unit_addAbility(receiver_14, UnitProducer_FIRST_PAGE) set receiver_15 = receiver_14 call unit_addAbility(receiver_15, UnitProducer_BOMBER) return false elseif id == UnitProducer_FIRST_PAGE then set receiver_16 = UnitEntity_actor[obj_1] call unit_addAbility(receiver_16, UnitProducer_BIG_KILLER) set receiver_17 = receiver_16 call unit_addAbility(receiver_17, UnitProducer_SMALL_KILLER) set receiver_18 = receiver_17 call unit_addAbility(receiver_18, UnitProducer_SR_KILLER) set receiver_19 = receiver_18 call unit_addAbility(receiver_19, UnitProducer_BR_KILLER) set receiver_20 = receiver_19 call unit_addAbility(receiver_20, UnitProducer_TANK_KILLER) set receiver_21 = receiver_20 call unit_addAbility(receiver_21, UnitProducer_FIRE) set receiver_22 = receiver_21 call unit_addAbility(receiver_22, UnitProducer_GLAIVE_KILLER) set receiver_23 = receiver_22 call unit_addAbility(receiver_23, UnitProducer_SECOND_PAGE) set receiver_24 = receiver_23 call unit_addAbility(receiver_24, UnitProducer_KNOCKBACK) set receiver_25 = receiver_24 call unit_addAbility(receiver_25, UnitProducer_FACELESS) set receiver_26 = receiver_25 call unit_addAbility(receiver_26, UnitProducer_AIR_KILLER) set receiver_27 = receiver_26 call unit_removeAbility(receiver_27, UnitProducer_OBJ_TARGET) set receiver_28 = receiver_27 call unit_removeAbility(receiver_28, UnitProducer_T_CHANGER) set receiver_29 = receiver_28 call unit_removeAbility(receiver_29, UnitProducer_POINTER) set receiver_30 = receiver_29 call unit_removeAbility(receiver_30, UnitProducer_FIRST_PAGE) set receiver_31 = receiver_30 call unit_removeAbility(receiver_31, UnitProducer_BOMBER) return false endif if data_1 == 0 then return false endif if dispatch_RegionData_RegionData_RegionData_canBuild(data_1, Entity_owner[obj_1]) then call dispatch_RegionData_RegionData_RegionData_getTypeSet(data_1) set tuple_temp_2 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bigKillerId set temp_tuple_bigKillerId = tuple_temp_2 set andLeft = temp_tuple_bigKillerId > 0 else set andLeft = false endif if andLeft then set index = -1 set temp = id if temp == UnitProducer_BIG_KILLER then set index = SerializeIds_BIGKILL_INDEX elseif temp == UnitProducer_SMALL_KILLER then set index = SerializeIds_SMALLKILL_INDEX elseif temp == UnitProducer_BR_KILLER then call new_BigRandomKiller_3623(rallyPos_x_1, rallyPos_y_1, Entity_owner[obj_1]) elseif temp == UnitProducer_SR_KILLER then call new_SmallRandomKiller_3746(rallyPos_x_1, rallyPos_y_1, Entity_owner[obj_1]) elseif temp == UnitProducer_TANK_KILLER then call new_TankKiller_3761(rallyPos_x_1, rallyPos_y_1, Entity_owner[obj_1]) elseif temp == UnitProducer_OBJ_TARGET then call new_ObjectTarget(rallyPos_x_1, rallyPos_y_1, Entity_owner[obj_1]) elseif temp == UnitProducer_GLAIVE_KILLER then call new_GlaiveKiller_3676(rallyPos_x_1, rallyPos_y_1, Entity_owner[obj_1]) elseif temp == UnitProducer_T_CHANGER then call new_TerrainChanger(rallyPos_x_1, rallyPos_y_1, Entity_owner[obj_1]) elseif temp == UnitProducer_POINTER then call new_Pointer(rallyPos_x_1, rallyPos_y_1, Entity_owner[obj_1], 0.) elseif temp == UnitProducer_BOMBER then set index = SerializeIds_BOMBER_INDEX elseif temp == UnitProducer_KNOCKBACK then call new_Knockbacker_3704(rallyPos_x_1, rallyPos_y_1, Entity_owner[obj_1], 0.) elseif temp == UnitProducer_FACELESS then call new_Faceless(rallyPos_x_1, rallyPos_y_1, Entity_owner[obj_1], 0.) elseif temp == UnitProducer_AIR_KILLER then call new_AirKiller(rallyPos_x_1, rallyPos_y_1, Entity_owner[obj_1], 0.) elseif temp == UnitProducer_FIRE then call new_FireKiller(rallyPos_x_1, rallyPos_y_1, Entity_owner[obj_1], 0.) endif if index > 0 then call newObjectFromId(Entity_owner[obj_1], rallyPos_x_1, rallyPos_y_1, index) endif else call DisplayTextToPlayer(Entity_owner[obj_1], 0., 0., "|cffC51019You have no permission to build in this region!") endif return false endfunction function dispatch_UnitProducer_UnitProducer_UnitProducer_onCast takes integer this_1 returns boolean local boolean UnitProducer_UnitProducer_onCast_result if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling UnitProducer.onCast") else call error("Called UnitProducer.onCast on invalid object.") endif endif set UnitProducer_UnitProducer_onCast_result = UnitProducer_onCast(this_1) return UnitProducer_UnitProducer_onCast_result endfunction function onEvent_add_UnitProducer_UnitProducer takes integer this_1 returns boolean return dispatch_UnitProducer_UnitProducer_UnitProducer_onCast(this_2931[this_1]) endfunction function Vortex_onCast takes integer this_1 returns nothing local integer id = GetSpellAbilityId() local integer temp = id if temp == Vortex_INC_GRAV_ID then if Vortex_vgravity[this_1] < 25. then set Vortex_vgravity[this_1] = Vortex_vgravity[this_1] + .5 call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.06, "Gravity : " + real_toString(Vortex_vgravity[this_1]), 12., 2., 255, 255, 255, 0, Entity_owner[this_1]) endif elseif temp == Vortex_DEC_GRAV_ID then if Vortex_vgravity[this_1] > ( - 25.) then set Vortex_vgravity[this_1] = Vortex_vgravity[this_1] - .5 call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.06, "Gravity : " + real_toString(Vortex_vgravity[this_1]), 12., 2., 255, 255, 255, 0, Entity_owner[this_1]) endif elseif temp == Vortex_ZMODE_NONE then set Vortex_zMode[this_1] = 0 call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.06, "Z Mode: None", 12., 2., 255, 255, 255, 0, Entity_owner[this_1]) elseif temp == Vortex_ZMODE_CYLI then set Vortex_zMode[this_1] = 1 call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.06, "Z Mode: Cylinder", 12., 2., 255, 255, 255, 0, Entity_owner[this_1]) elseif temp == Vortex_ZMODE_HEMI then set Vortex_zMode[this_1] = 2 call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.06, "Z Mode: Hemisphere", 12., 2., 255, 255, 255, 0, Entity_owner[this_1]) elseif temp == Vortex_SIZE_SMALL then set Vortex_radiusSq[this_1] = Vortex_GRAV_RADIUS_SMALL call dispatch_Fx_Fx_Fx_hiddenDestroy(Vortex_vortexFx[this_1]) set Vortex_vortexFx[this_1] = new_Fx_3672(vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0., 12.), vec3_op_plus_return_y, vec3_op_plus_return_z, "models\\vortex128.mdx") elseif temp == Vortex_SIZE_MED then set Vortex_radiusSq[this_1] = Vortex_GRAV_RADIUS_MEDIUM call dispatch_Fx_Fx_Fx_hiddenDestroy(Vortex_vortexFx[this_1]) set Vortex_vortexFx[this_1] = new_Fx_3672(vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0., 12.), vec3_op_plus_return_y, vec3_op_plus_return_z, "models\\vortex256.mdx") elseif temp == Vortex_SIZE_BIG then set Vortex_radiusSq[this_1] = Vortex_GRAV_RADIUS_BIG call dispatch_Fx_Fx_Fx_hiddenDestroy(Vortex_vortexFx[this_1]) set Vortex_vortexFx[this_1] = new_Fx_3672(vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0., 12.), vec3_op_plus_return_y, vec3_op_plus_return_z, "models\\vortex512.mdx") endif endfunction function dispatch_Vortex_Vortex_Vortex_onCast takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Vortex.onCast") else call error("Called Vortex.onCast on invalid object.") endif endif call Vortex_onCast(this_1) endfunction function onEvent_add_Vortex_Vortex takes integer this_1 returns nothing call dispatch_Vortex_Vortex_Vortex_onCast(this_2999[this_1]) endfunction function PlayerData_tmods_get takes integer index1, integer index2 returns integer local integer returnVal if index2 < 0 or index2 >= 4 then call error("Index out of Bounds") elseif index2 <= 1 then if index2 <= 0 then set returnVal = PlayerData_tmods_0[index1] else set returnVal = PlayerData_tmods_1[index1] endif elseif index2 <= 2 then set returnVal = PlayerData_tmods_2[index1] else set returnVal = PlayerData_tmods_3[index1] endif return returnVal endfunction function multiboard_display takes multiboard this_1, boolean show returns nothing call MultiboardDisplay(this_1, show) endfunction function multiboarditem_setStyle takes multiboarditem this_1, boolean showValue, boolean showIcon returns nothing call MultiboardSetItemStyle(this_1, showValue, showIcon) endfunction function multiboarditem_setWidth takes multiboarditem this_1, real width returns nothing call MultiboardSetItemWidth(this_1, width) endfunction function alloc_Board takes nothing returns integer local integer this_1 if Board_firstFree == 0 then if Board_maxIndex < JASS_MAX_ARRAY_SIZE then set Board_maxIndex = Board_maxIndex + 1 set this_1 = Board_maxIndex set Board_typeId[this_1] = 642 else call error("Out of memory: Could not create Board.") set this_1 = 0 endif else set Board_firstFree = Board_firstFree - 1 set this_1 = Board_nextFree[Board_firstFree] set Board_typeId[this_1] = 642 endif return this_1 endfunction function Board_init takes integer this_1 returns nothing endfunction function multiboard_setColumnCount takes multiboard this_1, integer count returns nothing call MultiboardSetColumnCount(this_1, count) endfunction function multiboard_setRowCount takes multiboard this_1, integer count returns nothing call MultiboardSetRowCount(this_1, count) endfunction function construct_Board takes integer this_1, integer row, integer column returns nothing local integer i local integer temp local integer j local integer temp_1 call Board_init(this_1) set Board_board[this_1] = CreateMultiboard() call multiboard_setColumnCount(Board_board[this_1], column) call multiboard_setRowCount(Board_board[this_1], row) set Board_mbdata[this_1] = InitHashtable() set i = 1 set temp = row loop exitwhen i > temp set j = 1 set temp_1 = column loop exitwhen j > temp_1 call dispatch_Board_MultiboardClass_Board_setNewItem(this_1, i, j, null, null) call multiboarditem_setStyle(multiboard_getItem(Board_board[this_1], i, j), false, false) set j = j + 1 endloop set i = i + 1 endloop endfunction function new_Board takes integer row, integer column returns integer local integer this_1 = alloc_Board() call construct_Board(this_1, row, column) return this_1 endfunction function rebuildBoard takes nothing returns nothing local integer i local integer iterator local integer pd_1 local multiboarditem receiver local multiboarditem receiver_1 local multiboarditem receiver_2 local multiboarditem receiver_3 local multiboarditem receiver_4 local multiboarditem receiver_5 local multiboarditem receiver_6 local multiboarditem receiver_7 local multiboarditem receiver_8 local multiboarditem receiver_9 local multiboarditem receiver_10 local multiboarditem receiver_11 set PlayerData_playerboard = new_Board(dispatch_LinkedList_LinkedList_LinkedList_size(PlayerData_allPlayers) + 1, 3) set i = 1 set iterator = LinkedList_iterator(PlayerData_allPlayers) loop exitwhen not LLIterator_hasNext(iterator) set pd_1 = LLIterator_next(iterator) set receiver = multiboard_getItem(Board_board[PlayerData_playerboard], i, 0) call multiboarditem_setStyle(receiver, true, true) set receiver_1 = receiver call multiboarditem_setWidth(receiver_1, 0.1) set receiver_2 = multiboard_getItem(Board_board[PlayerData_playerboard], i, 1) call multiboarditem_setStyle(receiver_2, true, false) set receiver_3 = receiver_2 call multiboarditem_setWidth(receiver_3, 0.015) set receiver_4 = multiboard_getItem(Board_board[PlayerData_playerboard], i, 2) call multiboarditem_setStyle(receiver_4, true, false) set receiver_5 = receiver_4 call multiboarditem_setWidth(receiver_5, 0.05) call dispatch_PlayerData_PlayerData_PlayerData_setMBRow(pd_1, i) set i = i + 1 endloop call LLIterator_close(iterator) call CameraSetSmoothingFactor(10.) set receiver_6 = multiboard_getItem(Board_board[PlayerData_playerboard], 0, 0) call multiboarditem_setStyle(receiver_6, true, false) set receiver_7 = receiver_6 call multiboarditem_setWidth(receiver_7, 0.1) call dispatch_Board_MultiboardClass_Board_setNewItem(PlayerData_playerboard, 0, 0, "Player", null) set receiver_8 = multiboard_getItem(Board_board[PlayerData_playerboard], 0, 1) call multiboarditem_setStyle(receiver_8, false, true) set receiver_9 = receiver_8 call multiboarditem_setWidth(receiver_9, 0.02) call dispatch_Board_MultiboardClass_Board_setNewItem(PlayerData_playerboard, 0, 1, null, Icons_bTNAnkh) set receiver_10 = multiboard_getItem(Board_board[PlayerData_playerboard], 0, 2) call multiboarditem_setWidth(receiver_10, 0.05) set receiver_11 = receiver_10 call multiboarditem_setStyle(receiver_11, true, false) call dispatch_Board_MultiboardClass_Board_setNewItem(PlayerData_playerboard, 0, 2, "Rank", null) call multiboard_display(Board_board[PlayerData_playerboard], true) call EnableUserControl(true) call EnableOcclusion(true) endfunction function PlayerData_onDestroy takes integer this_1 returns nothing local integer i local integer i_1 local integer j call printTimed(player_getNameColored_3916(PlayerData_p[this_1]) + "|r |cffFFCC33has left the game!", 20.) call dispatch_SoundDefinition_SoundUtils_SoundDefinition_play(PlayerData_questFailedSound) if PlayerData_selector[this_1] != 0 then call dispatch_Selector_destroySelector(PlayerData_selector[this_1]) endif if PlayerData_escaper[this_1] != 0 then if Escaper_alive[PlayerData_escaper[this_1]] then call Log_debug("PD Terminate") call cyc_RevivePoint_terminate(18, PlayerData_escaper[this_1]) else set Escaper_left[PlayerData_escaper[this_1]] = true endif set PlayerData_escaper[this_1] = 0 endif if PlayerData_prod[this_1] != 0 then call cyc_RevivePoint_terminate(18, PlayerData_prod[this_1]) endif set i = 0 loop exitwhen i > 3 if PlayerData_tmods_get(this_1, i) != 0 then set TerrainModder_legit[PlayerData_tmods_get(this_1, i)] = true call cyc_RevivePoint_terminate(18, PlayerData_tmods_get(this_1, i)) endif set i = i + 1 endloop call dispatch_LinkedList_LinkedList_LinkedList_remove(PlayerData_allPlayers, this_1) if isBuilderPlayer(PlayerData_p[this_1]) then call dispatch_LinkedList_LinkedList_LinkedList_remove(PlayerData_builderPlayers, this_1) else call dispatch_LinkedList_LinkedList_LinkedList_remove(PlayerData_escaperPlayers, this_1) endif if ( not dispatch_LinkedList_LinkedList_LinkedList_isEmpty(PlayerData_builderPlayers)) and isBuilderPlayer(PlayerData_p[this_1]) then if PlayerData_builder[this_1] != 0 then call Log_debug("isEmpty Terminate") call cyc_RevivePoint_terminate(18, PlayerData_builder[this_1]) endif set i_1 = 0 loop exitwhen i_1 > 22 if dispatch_RegionData_RegionData_RegionData_getPermission(RegionData_regions[i_1], PlayerData_p[this_1]) == 2 then set j = 8 loop exitwhen j > 11 call dispatch_RegionData_RegionData_RegionData_allow(RegionData_regions[i_1], Player_players[j]) set Builder_regionCount[PlayerData_builder[PlayerData_pData[j]]] = Builder_regionCount[PlayerData_builder[PlayerData_pData[j]]] + 2 set j = j + 1 endloop endif set i_1 = i_1 + 1 endloop endif set PlayerData_pData[PlayerData_id[this_1]] = 0 call rebuildBoard() if PlayerData_revmod[this_1] != 0 then call dispatch_RevivePointModifier_destroyRevivePointModifier(PlayerData_revmod[this_1]) endif if PlayerData_tagfx[this_1] != null then call effect_destr(PlayerData_tagfx[this_1]) endif set PlayerData_pData[player_getId(PlayerData_p[this_1])] = 0 endfunction function dealloc_PlayerData takes integer obj_1 returns nothing if PlayerData_typeId[obj_1] == 0 then call error("Double free: object of type PlayerData") else set PlayerData_nextFree[PlayerData_firstFree] = obj_1 set PlayerData_firstFree = PlayerData_firstFree + 1 set PlayerData_typeId[obj_1] = 0 endif endfunction function destroyPlayerData takes integer this_1 returns nothing call PlayerData_onDestroy(this_1) call dealloc_PlayerData(this_1) endfunction function dispatch_PlayerData_destroyPlayerData takes integer this_1 returns nothing if PlayerData_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling PlayerData.PlayerData") else call error("Called PlayerData.PlayerData on invalid object.") endif endif call destroyPlayerData(this_1) endfunction function onLeave_onPlayerLeave_PlayerData takes integer this_1, player p returns nothing call dispatch_PlayerData_destroyPlayerData(player_getData(p)) endfunction function onLeave_onPlayerLeave_nullTimer_Players takes integer this_1, player p returns nothing call printTimed(player_getNameColored_3916(p) + " has left the game", 15.) endfunction function dispatch_OnPlayerLeave_Players_OnPlayerLeave_onLeave takes integer this_1, player leaver returns nothing if OnPlayerLeave_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling OnPlayerLeave.onLeave") else call error("Called OnPlayerLeave.onLeave on invalid object.") endif endif if OnPlayerLeave_typeId[this_1] <= 1028 then call onLeave_onPlayerLeave_PlayerData(this_1, leaver) else call onLeave_onPlayerLeave_nullTimer_Players(this_1, leaver) endif endfunction function onEvent_add_nullTimer_Players takes integer this_1 returns nothing call dispatch_LinkedList_LinkedList_LinkedList_remove(Players_ALL_PLAYERS, playerToIndex(GetTriggerPlayer())) call dispatch_OnPlayerLeave_Players_OnPlayerLeave_onLeave(Players_onLeaveListener, GetTriggerPlayer()) endfunction function cyc_onEvent_add_KeyUtils takes integer funcChoice, integer this_1 returns nothing local boolean keyStatus_up local boolean keyStatus_down local boolean keyStatus_left local boolean keyStatus_right local eventid id local integer listener_1 local integer tempIndex local integer tempIndex_1 local boolean tuple_temp local boolean tuple_temp_1 local boolean tuple_temp_2 local boolean tuple_temp_3 local boolean tuple_temp_4 local boolean tuple_temp_5 local boolean tuple_temp_6 local boolean tuple_temp_7 if funcChoice == 0 then call cyc_onEvent_add_KeyUtils(7, 0) elseif funcChoice == 1 then call cyc_onEvent_add_KeyUtils(7, 0) elseif funcChoice == 2 then call cyc_onEvent_add_KeyUtils(7, 0) elseif funcChoice == 3 then call cyc_onEvent_add_KeyUtils(7, 0) elseif funcChoice == 4 then call cyc_onEvent_add_KeyUtils(7, 0) elseif funcChoice == 5 then call cyc_onEvent_add_KeyUtils(7, 0) elseif funcChoice == 6 then call cyc_onEvent_add_KeyUtils(7, 0) elseif funcChoice == 7 then set tempIndex = player_getId(GetTriggerPlayer()) set tuple_temp = KeyUtils_keyStatuses_up[tempIndex] set tuple_temp_1 = KeyUtils_keyStatuses_down[tempIndex] set tuple_temp_2 = KeyUtils_keyStatuses_left[tempIndex] set tuple_temp_3 = KeyUtils_keyStatuses_right[tempIndex] set keyStatus_up = tuple_temp set keyStatus_down = tuple_temp_1 set keyStatus_left = tuple_temp_2 set keyStatus_right = tuple_temp_3 set id = GetTriggerEventId() if id == EVENT_PLAYER_ARROW_DOWN_DOWN then set keyStatus_down = true elseif id == EVENT_PLAYER_ARROW_DOWN_UP then set keyStatus_down = false elseif id == EVENT_PLAYER_ARROW_UP_DOWN then set keyStatus_up = true elseif id == EVENT_PLAYER_ARROW_UP_UP then set keyStatus_up = false elseif id == EVENT_PLAYER_ARROW_LEFT_DOWN then set keyStatus_left = true elseif id == EVENT_PLAYER_ARROW_LEFT_UP then set keyStatus_left = false elseif id == EVENT_PLAYER_ARROW_RIGHT_DOWN then set keyStatus_right = true elseif id == EVENT_PLAYER_ARROW_RIGHT_UP then set keyStatus_right = false endif set tempIndex_1 = player_getId(GetTriggerPlayer()) set tuple_temp_4 = keyStatus_up set tuple_temp_5 = keyStatus_down set tuple_temp_6 = keyStatus_left set tuple_temp_7 = keyStatus_right set KeyUtils_keyStatuses_up[tempIndex_1] = tuple_temp_4 set KeyUtils_keyStatuses_down[tempIndex_1] = tuple_temp_5 set KeyUtils_keyStatuses_left[tempIndex_1] = tuple_temp_6 set KeyUtils_keyStatuses_right[tempIndex_1] = tuple_temp_7 set listener_1 = KeyUtils_firstKeyListener loop exitwhen not (listener_1 != 0) call cyc_onEvent_add_KeyUtils(9, listener_1) set listener_1 = EventListener_next[listener_1] endloop elseif funcChoice == 8 then call cyc_onEvent_add_KeyUtils(7, 0) elseif funcChoice == 9 then if EventListener_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling EventListener.onEvent") else call error("Called EventListener.onEvent on invalid object.") endif endif if EventListener_typeId[this_1] <= 792 then if EventListener_typeId[this_1] <= 773 then if EventListener_typeId[this_1] <= 763 then if EventListener_typeId[this_1] <= 758 then if EventListener_typeId[this_1] <= 756 then if EventListener_typeId[this_1] <= 755 then if EventListener_typeId[this_1] <= 754 then call onEvent_addKeyListener_MGSpacey_MGSpacey(this_1) else call onEvent_add_BasicSpells(this_1) endif else call onEvent_add_Bomber_Bomber(this_1) endif elseif EventListener_typeId[this_1] <= 757 then call onEvent_add_Bomber_Bomber_3803(this_1) else call onEvent_add_Bomber_Bomber_3804(this_1) endif elseif EventListener_typeId[this_1] <= 761 then if EventListener_typeId[this_1] <= 760 then if EventListener_typeId[this_1] <= 759 then call onEvent_add_Bomber_Bomber_3805(this_1) else call onEvent_add_Bomber_Bomber_3806(this_1) endif else call onEvent_add_Bombertower_Bombertower(this_1) endif elseif EventListener_typeId[this_1] <= 762 then call onEvent_add_Bombertower_Bombertower_3808(this_1) else call onEvent_add_Bombertower_Bombertower_3809(this_1) endif elseif EventListener_typeId[this_1] <= 768 then if EventListener_typeId[this_1] <= 766 then if EventListener_typeId[this_1] <= 765 then if EventListener_typeId[this_1] <= 764 then call onEvent_add_BossDamager_BossDamager(this_1) else call onEvent_add_Boss_Boss(this_1) endif else call onEvent_add_Buff(this_1) endif elseif EventListener_typeId[this_1] <= 767 then call onEvent_add_Buff_3813(this_1) else call onEvent_add_Builder_Builder(this_1) endif elseif EventListener_typeId[this_1] <= 771 then if EventListener_typeId[this_1] <= 770 then if EventListener_typeId[this_1] <= 769 then call onEvent_add_Builder_Builder_3815(this_1) else call onEvent_add_Builder_Builder_3816(this_1) endif else call onEvent_add_Builder_Builder_3817(this_1) endif elseif EventListener_typeId[this_1] <= 772 then call onEvent_add_Commands(this_1) else call onEvent_add_CongaLineHead_CongaLineHead(this_1) endif elseif EventListener_typeId[this_1] <= 783 then if EventListener_typeId[this_1] <= 778 then if EventListener_typeId[this_1] <= 776 then if EventListener_typeId[this_1] <= 775 then if EventListener_typeId[this_1] <= 774 then call onEvent_add_DamageEvent(this_1) else call onEvent_add_DamageEvent_3821(this_1) endif else call onEvent_add_DebugInfo(this_1) endif elseif EventListener_typeId[this_1] <= 777 then call onEvent_add_Decoration_Decoration_3824(this_1) else call onEvent_add_Decoration_Decoration(this_1) endif elseif EventListener_typeId[this_1] <= 781 then if EventListener_typeId[this_1] <= 780 then if EventListener_typeId[this_1] <= 779 then call onEvent_add_Door_Door(this_1) else call onEvent_add_Entity(this_1) endif else call onEvent_add_Entity_3827(this_1) endif elseif EventListener_typeId[this_1] <= 782 then call onEvent_add_Entity_3828(this_1) else call onEvent_add_Escaper_Escaper(this_1) endif elseif EventListener_typeId[this_1] <= 788 then if EventListener_typeId[this_1] <= 786 then if EventListener_typeId[this_1] <= 785 then if EventListener_typeId[this_1] <= 784 then call onEvent_add_Escaper_Escaper_3830(this_1) else call onEvent_add_Escaper_Escaper_3831(this_1) endif else call onEvent_add_Escaper_Escaper_3832(this_1) endif elseif EventListener_typeId[this_1] <= 787 then call onEvent_add_Escaper_Escaper_3833(this_1) else call onEvent_add_Executer_Executer(this_1) endif elseif EventListener_typeId[this_1] <= 790 then if EventListener_typeId[this_1] <= 789 then call onEvent_add_Faceless_Faceless(this_1) else call onEvent_add_Fountain_Fountain(this_1) endif elseif EventListener_typeId[this_1] <= 791 then call onEvent_add_Fountain_Fountain_3837(this_1) else call onEvent_add_Invisible(this_1) endif elseif EventListener_typeId[this_1] <= 812 then if EventListener_typeId[this_1] <= 802 then if EventListener_typeId[this_1] <= 797 then if EventListener_typeId[this_1] <= 795 then if EventListener_typeId[this_1] <= 794 then if EventListener_typeId[this_1] <= 793 then call cyc_onEvent_add_KeyUtils(8, this_1) else call cyc_onEvent_add_KeyUtils(6, this_1) endif else call cyc_onEvent_add_KeyUtils(5, this_1) endif elseif EventListener_typeId[this_1] <= 796 then call cyc_onEvent_add_KeyUtils(4, this_1) else call cyc_onEvent_add_KeyUtils(3, this_1) endif elseif EventListener_typeId[this_1] <= 800 then if EventListener_typeId[this_1] <= 799 then if EventListener_typeId[this_1] <= 798 then call cyc_onEvent_add_KeyUtils(2, this_1) else call cyc_onEvent_add_KeyUtils(1, this_1) endif else call cyc_onEvent_add_KeyUtils(0, this_1) endif elseif EventListener_typeId[this_1] <= 801 then call onEvent_add_Key_Key(this_1) else call onEvent_add_Knockbacker_Knockbacker(this_1) endif elseif EventListener_typeId[this_1] <= 807 then if EventListener_typeId[this_1] <= 805 then if EventListener_typeId[this_1] <= 804 then if EventListener_typeId[this_1] <= 803 then call onEvent_add_Knockbacker_Knockbacker_3841(this_1) else call onEvent_add_MGSpacey_MGSpacey(this_1) endif else call onEvent_add_MoveSpeed(this_1) endif elseif EventListener_typeId[this_1] <= 806 then call onEvent_add_Pointer(this_1) else call onEvent_add_Pointer_Pointer(this_1) endif elseif EventListener_typeId[this_1] <= 810 then if EventListener_typeId[this_1] <= 809 then if EventListener_typeId[this_1] <= 808 then call onEvent_add_Powernode_Powernode(this_1) else call onEvent_add_Remove(this_1) endif else call onEvent_add_Selector_PickSystem(this_1) endif elseif EventListener_typeId[this_1] <= 811 then call onEvent_add_SetupBox_SetupBox(this_1) else call onEvent_add_SetupObject_SetupObject(this_1) endif elseif EventListener_typeId[this_1] <= 822 then if EventListener_typeId[this_1] <= 817 then if EventListener_typeId[this_1] <= 815 then if EventListener_typeId[this_1] <= 814 then if EventListener_typeId[this_1] <= 813 then call onEvent_add_SetupObject_SetupObject_3851(this_1) else call onEvent_add_SetupObject_SetupObject_3852(this_1) endif else call onEvent_add_SpellTarget_BossSpellTarget(this_1) endif elseif EventListener_typeId[this_1] <= 816 then call onEvent_add_Spinner_Spinner(this_1) else call onEvent_add_Spinner_Spinner_3855(this_1) endif elseif EventListener_typeId[this_1] <= 820 then if EventListener_typeId[this_1] <= 819 then if EventListener_typeId[this_1] <= 818 then call onEvent_add_StaticBaseObject_BaseObject(this_1) else call onEvent_add_StaticBaseObject_BaseObject_3857(this_1) endif else call onEvent_add_StaticBaseObject_BaseObject_3858(this_1) endif elseif EventListener_typeId[this_1] <= 821 then call onEvent_add_StrongEscaper_EscaperClasses(this_1) else call onEvent_add_TerrainChanger_TerrainChanger(this_1) endif elseif EventListener_typeId[this_1] <= 827 then if EventListener_typeId[this_1] <= 825 then if EventListener_typeId[this_1] <= 824 then if EventListener_typeId[this_1] <= 823 then call onEvent_add_TerrainModder_TerrainModder(this_1) else call onEvent_add_TerrainModder_TerrainModder_3862(this_1) endif else call onEvent_add_TerrainModder_TerrainModder_3863(this_1) endif elseif EventListener_typeId[this_1] <= 826 then call onEvent_add_Texter(this_1) else call onEvent_add_Tracks_Tracks(this_1) endif elseif EventListener_typeId[this_1] <= 829 then if EventListener_typeId[this_1] <= 828 then call onEvent_add_Trap_Trap(this_1) else call onEvent_add_UnitProducer_UnitProducer(this_1) endif elseif EventListener_typeId[this_1] <= 830 then call onEvent_add_Vortex_Vortex(this_1) else call onEvent_add_nullTimer_Players(this_1) endif endif endfunction function EventListener_generalEventCallback takes nothing returns nothing local unit trigUnit = GetTriggerUnit() local integer id = eventid_toIntId(GetTriggerEventId()) local integer listener_1 local integer nextListener local integer listener_2 local integer nextListener_1 if trigUnit != null and fireEvents(trigUnit) and unit_getIndex(trigUnit) > 0 then if EventListener_unitListenersFirsts[unit_getIndex(trigUnit)] != 0 then set listener_1 = EventListener_unitListenersFirsts[unit_getIndex(trigUnit)] loop exitwhen not (listener_1 != 0) set nextListener = EventListener_next[listener_1] if EventListener_eventId[listener_1] == id then call cyc_onEvent_add_KeyUtils(9, listener_1) endif set listener_1 = nextListener endloop endif endif if EventListener_generalListenersFirsts[id] != 0 then set listener_2 = EventListener_generalListenersFirsts[id] loop exitwhen not (listener_2 != 0) set nextListener_1 = EventListener_next[listener_2] call cyc_onEvent_add_KeyUtils(9, listener_2) set listener_2 = nextListener_1 endloop endif endfunction function Fountain_cure_1 takes nothing returns nothing local integer obj_1 = unit_getEntity(trigger_getSource(GetTriggeringTrigger())) local integer e_1 = unit_getEntity(GetTriggerUnit()) local integer instanceOfTemp = Serializable_typeId[e_1] local integer es if instanceOfTemp >= 1162 and instanceOfTemp <= 1167 and Fountain_cure[obj_1] then set es = e_1 if Escaper_poisoned[es] and ( not Entity_flying[es]) then call DestroyEffect(AddSpecialEffect(Fountain_EFFECT_ID, Entity_pos_x[es], Entity_pos_y[es])) call dispatch_Escaper_Escaper_Escaper_setPoison(es, false) endif endif endfunction function vec3_distanceTo2d takes real this_x, real this_y, real this_z, real v_x, real v_y, real v_z returns real return SquareRoot(real_squared(v_x - this_x) + real_squared(v_y - this_y)) endfunction function Entity_setTarget takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z, real speed returns nothing local real t = vec3_distanceTo2d(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], tpos_x_1, tpos_y_1, tpos_z) / speed local real tuple_temp = vec3_angleTo2d_4259(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], tpos_x_1, tpos_y_1, tpos_z) local real tangle_radians = tuple_temp local real e_1 = 0. local real startZVelocity if Frentity_DYNAMIC_Z then set e_1 = vec3_getHeightMap(tpos_x_1, tpos_y_1, tpos_z) endif if t < 1. then set t = 1. / speed endif set startZVelocity = ( - (Entity_gravity[this_1] * t)) / 2. - Entity_pos_z[this_1] / t + e_1 / t call dispatch_Entity_Entity_Entity_setVel(this_1, vec2_withZ(angle_toVec(tangle_radians, speed), angle_toVec_return_y, startZVelocity), vec2_withZ_return_y, vec2_withZ_return_z) endfunction function Escaper_setTarget takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z, real speed returns nothing call dispatch_Escaper_Escaper_Escaper_stop(this_1) call Entity_setTarget(this_1, tpos_x_1, tpos_y_1, tpos_z, speed) endfunction function dispatch_Entity_Entity_Entity_setTarget takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z, real speed returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Entity.setTarget") else call error("Called Entity.setTarget on invalid object.") endif endif if Serializable_typeId[this_1] <= 1167 then if Serializable_typeId[this_1] <= 1161 then call Entity_setTarget(this_1, tpos_x_1, tpos_y_1, tpos_z, speed) else call Escaper_setTarget(this_1, tpos_x_1, tpos_y_1, tpos_z, speed) endif else call Entity_setTarget(this_1, tpos_x_1, tpos_y_1, tpos_z, speed) endif endfunction function vec3_add takes real this_x, real this_y, real this_z, real x, real y, real z returns real set vec3_add_return_x = this_x + x set vec3_add_return_y = this_y + y set vec3_add_return_z = this_z + z return vec3_add_return_x endfunction function Jumper_executeJump takes integer this_1, integer edata returns nothing local unit receiver local integer temp local integer instanceOfTemp call unit_abortOrder(UnitEntity_actor[edata]) set instanceOfTemp = Serializable_typeId[edata] if instanceOfTemp >= 1171 and instanceOfTemp <= 1191 then set receiver = SetupObject_setup[edata] call unit_abortOrder(receiver) endif call dispatch_UnitEntity_Entity_UnitEntity_getPos(edata) set temp = Jumper_mode[this_1] if temp == 0 then set Entity_pos_z[edata] = 1. call dispatch_Entity_Entity_Entity_setTarget(edata, dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint(this_1), dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_y, dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_z, dispatch_ConfigValue_ConfigValue_ConfigValue_get(Jumper_jumpForce[this_1])) else call dispatch_Entity_Entity_Entity_addVel(edata, 0., 0., dispatch_ConfigValue_ConfigValue_ConfigValue_get(Jumper_jumpForce[this_1])) endif call dispatch_UnitEntity_Entity_UnitEntity_setXY(edata, vec3_add(Entity_pos_x[edata], Entity_pos_y[edata], Entity_pos_z[edata], 0., 0., 1.), vec3_add_return_y, vec3_add_return_z) call flashEffect(Jumper_EFFECT_STRING, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) endfunction function dispatch_Jumper_Jumper_Jumper_executeJump takes integer this_1, integer edata returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Jumper.executeJump") else call error("Called Jumper.executeJump on invalid object.") endif endif call Jumper_executeJump(this_1, edata) endfunction function Jumper_inRange takes integer this_1 returns nothing local integer data_1 = unit_getEntity(GetTriggerUnit()) local integer temp local integer instanceOfTemp local integer instanceOfTemp_1 local integer instanceOfTemp_2 local integer instanceOfTemp_3 local boolean andLeft if not dispatch_RegionData_RegionData_RegionData_canBuild(getRegionData(dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint(this_1), dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_y, dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_z), Entity_owner[this_1]) then return endif set temp = Jumper_permission[this_1] if temp == 0 then set instanceOfTemp = Serializable_typeId[data_1] if instanceOfTemp >= 1162 and instanceOfTemp <= 1167 then call dispatch_Jumper_Jumper_Jumper_executeJump(this_1, data_1) endif elseif temp == 1 then set instanceOfTemp_1 = Serializable_typeId[data_1] if instanceOfTemp_1 >= 1174 and instanceOfTemp_1 <= 1186 then call dispatch_Jumper_Jumper_Jumper_executeJump(this_1, data_1) endif else set instanceOfTemp_2 = Serializable_typeId[data_1] if instanceOfTemp_2 >= 1162 and instanceOfTemp_2 <= 1167 then set andLeft = true else set instanceOfTemp_3 = Serializable_typeId[data_1] set andLeft = instanceOfTemp_3 >= 1174 and instanceOfTemp_3 <= 1186 endif if andLeft then call dispatch_Jumper_Jumper_Jumper_executeJump(this_1, data_1) endif endif endfunction function dispatch_Jumper_Jumper_Jumper_inRange takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Jumper.inRange") else call error("Called Jumper.inRange on invalid object.") endif endif call Jumper_inRange(this_1) endfunction function Jumper_onInRange takes nothing returns nothing local integer jdata = unit_getEntity(trigger_getSource(GetTriggeringTrigger())) call dispatch_Jumper_Jumper_Jumper_inRange(jdata) endfunction function LobbyTeleporter_votes_get takes integer index1, integer index2 returns boolean local boolean returnVal if index2 < 0 or index2 >= 12 then call error("Index out of Bounds") elseif index2 <= 5 then if index2 <= 2 then if index2 <= 1 then if index2 <= 0 then set returnVal = LobbyTeleporter_votes_0[index1] else set returnVal = LobbyTeleporter_votes_1[index1] endif else set returnVal = LobbyTeleporter_votes_2[index1] endif elseif index2 <= 4 then if index2 <= 3 then set returnVal = LobbyTeleporter_votes_3[index1] else set returnVal = LobbyTeleporter_votes_4[index1] endif else set returnVal = LobbyTeleporter_votes_5[index1] endif elseif index2 <= 8 then if index2 <= 7 then if index2 <= 6 then set returnVal = LobbyTeleporter_votes_6[index1] else set returnVal = LobbyTeleporter_votes_7[index1] endif else set returnVal = LobbyTeleporter_votes_8[index1] endif elseif index2 <= 10 then if index2 <= 9 then set returnVal = LobbyTeleporter_votes_9[index1] else set returnVal = LobbyTeleporter_votes_10[index1] endif else set returnVal = LobbyTeleporter_votes_11[index1] endif return returnVal endfunction function LobbyTeleporter_teleport takes integer this_1, integer e_1 returns nothing local real tuple_temp = dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint(this_1) local real tuple_temp_1 = dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_y local real tuple_temp_2 = dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_z local real rallyPos_x_1 = tuple_temp local real rallyPos_y_1 = tuple_temp_1 local real rallyPos_z_1 = tuple_temp_2 if StaticBaseObject_noRally[this_1] == null then set LobbyTeleporter_ready[this_1] = false call dispatch_UnitEntity_Entity_UnitEntity_setPos(e_1, rallyPos_x_1, rallyPos_y_1, rallyPos_z_1) call effect_destr(addEffect_1563(LobbyTeleporter_EFFECT_STRING, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1])) call effect_destr(addEffect_1563(LobbyTeleporter_EFFECT_STRING, rallyPos_x_1, rallyPos_y_1, rallyPos_z_1)) if not Escaper_camlock[e_1] then call PanCameraToTimedForPlayer(Entity_owner[e_1], rallyPos_x_1, rallyPos_y_1, 0.03) endif endif endfunction function dispatch_LobbyTeleporter_LobbyTeleporter_LobbyTeleporter_teleport takes integer this_1, integer e_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LobbyTeleporter.teleport") else call error("Called LobbyTeleporter.teleport on invalid object.") endif endif call LobbyTeleporter_teleport(this_1, e_1) endfunction function StaticBaseObject_addQuestionmark takes integer this_1 returns nothing if StaticBaseObject_noRally[this_1] == null then set StaticBaseObject_noRally[this_1] = addEffect_1563(Objects_questionMark1, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) endif endfunction function dispatch_StaticBaseObject_BaseObject_StaticBaseObject_addQuestionmark takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling StaticBaseObject.addQuestionmark") else call error("Called StaticBaseObject.addQuestionmark on invalid object.") endif endif call StaticBaseObject_addQuestionmark(this_1) endfunction function LobbyTeleporter_check takes integer this_1, integer e_1 returns nothing local integer votesNeeded = real_round(dispatch_LinkedList_LinkedList_LinkedList_size(PlayerData_escaperPlayers) * 0.45) local integer ep local integer from local integer i call LobbyTeleporter_votes_set(this_1, player_getId(Entity_owner[e_1]), not LobbyTeleporter_votes_get(this_1, player_getId(Entity_owner[e_1]))) if LobbyTeleporter_votes_get(this_1, player_getId(Entity_owner[e_1])) then set LobbyTeleporter_currentPlus[this_1] = LobbyTeleporter_currentPlus[this_1] + 1 if LobbyTeleporter_currentPlus[this_1] >= votesNeeded then if LobbyTeleporter_startmaze[this_1] or (isEscaperPlayer(Entity_owner[e_1]) and Entity_owner[this_1] == GameConstants_STAFF_PLAYER and ( not unit_hasAbility(UnitEntity_actor[this_1], BuilderConstants_REMOVE_OBJECT_ID))) then call dispatch_LobbyTeleporter_LobbyTeleporter_LobbyTeleporter_teleport(this_1, e_1) call cyc_RevivePoint_terminate(18, this_1) return else set from = dispatch_LinkedList_LinkedList_LinkedList_staticItr(PlayerData_escaperPlayers) loop exitwhen not LLIterator_hasNext(from) set ep = LLIterator_next(from) if PlayerData_escaper[ep] != 0 and Escaper_alive[PlayerData_escaper[ep]] then call dispatch_LobbyTeleporter_LobbyTeleporter_LobbyTeleporter_teleport(this_1, PlayerData_escaper[ep]) endif endloop call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(this_1, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y) call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_addQuestionmark(this_1) set i = 0 loop exitwhen i > 11 call LobbyTeleporter_votes_set(this_1, i, false) set i = i + 1 endloop call texttag_center(FText_tt[LobbyTeleporter_ftext[this_1]], dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, player_getNameColored_3916(Entity_owner[this_1]) + " |cffffcc00building", 6.) set LobbyTeleporter_ready[this_1] = false return endif endif else set LobbyTeleporter_currentPlus[this_1] = LobbyTeleporter_currentPlus[this_1] - 1 endif call flashEffect(UI_confirmation, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) call texttag_center(FText_tt[LobbyTeleporter_ftext[this_1]], dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, "|cff11cc00Ready|r - [" + int_toString(LobbyTeleporter_currentPlus[this_1]) + "/|cffffcc00" + int_toString(votesNeeded) + "|r]", 9.) endfunction function dispatch_LobbyTeleporter_LobbyTeleporter_LobbyTeleporter_check takes integer this_1, integer e_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LobbyTeleporter.check") else call error("Called LobbyTeleporter.check on invalid object.") endif endif call LobbyTeleporter_check(this_1, e_1) endfunction function LobbyTeleporter_checkVote takes nothing returns nothing local unit source = trigger_getSource(GetTriggeringTrigger()) local unit u_1 = GetTriggerUnit() local integer e_1 = unit_getEntity(u_1) local integer obj_1 = unit_getEntity(source) local integer instanceOfTemp local boolean andLeft if LobbyTeleporter_ready[obj_1] then set instanceOfTemp = Serializable_typeId[e_1] set andLeft = instanceOfTemp >= 1162 and instanceOfTemp <= 1167 else set andLeft = false endif if andLeft and isEscaperPlayer(Entity_owner[e_1]) then call dispatch_LobbyTeleporter_LobbyTeleporter_LobbyTeleporter_check(obj_1, e_1) endif endfunction function MinigameTeleporter_votes_get takes integer index1, integer index2 returns boolean local boolean returnVal if index2 < 0 or index2 >= 12 then call error("Index out of Bounds") elseif index2 <= 5 then if index2 <= 2 then if index2 <= 1 then if index2 <= 0 then set returnVal = MinigameTeleporter_votes_0[index1] else set returnVal = MinigameTeleporter_votes_1[index1] endif else set returnVal = MinigameTeleporter_votes_2[index1] endif elseif index2 <= 4 then if index2 <= 3 then set returnVal = MinigameTeleporter_votes_3[index1] else set returnVal = MinigameTeleporter_votes_4[index1] endif else set returnVal = MinigameTeleporter_votes_5[index1] endif elseif index2 <= 8 then if index2 <= 7 then if index2 <= 6 then set returnVal = MinigameTeleporter_votes_6[index1] else set returnVal = MinigameTeleporter_votes_7[index1] endif else set returnVal = MinigameTeleporter_votes_8[index1] endif elseif index2 <= 10 then if index2 <= 9 then set returnVal = MinigameTeleporter_votes_9[index1] else set returnVal = MinigameTeleporter_votes_10[index1] endif else set returnVal = MinigameTeleporter_votes_11[index1] endif return returnVal endfunction function alloc_ReviveListener_Minigame_Minigame takes nothing returns integer local integer this_1 if ReviveListener_firstFree == 0 then if ReviveListener_maxIndex < JASS_MAX_ARRAY_SIZE then set ReviveListener_maxIndex = ReviveListener_maxIndex + 1 set this_1 = ReviveListener_maxIndex set ReviveListener_typeId[this_1] = 1113 else call error("Out of memory: Could not create ReviveListener_Minigame_Minigame.") set this_1 = 0 endif else set ReviveListener_firstFree = ReviveListener_firstFree - 1 set this_1 = ReviveListener_nextFree[ReviveListener_firstFree] set ReviveListener_typeId[this_1] = 1113 endif return this_1 endfunction function MGAgar_getCamBounds takes integer this_1 returns rect return gg_rct_agargamebounds endfunction function MGRandKill_getCamBounds takes integer this_1 returns rect return gg_rct_coingamebounds endfunction function MGSlide_getCamBounds takes integer this_1 returns rect return gg_rct_slidegamebounds endfunction function MGSpacey_getCamBounds takes integer this_1 returns rect return gg_rct_spaceygamebounds endfunction function MGWarlock_getCamBounds takes integer this_1 returns rect return gg_rct_warlockgamebounds endfunction function dispatch_Minigame_Minigame_Minigame_getCamBounds takes integer this_1 returns rect local rect Minigame_Minigame_getCamBounds_result if Minigame_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Minigame.getCamBounds") else call error("Called Minigame.getCamBounds on invalid object.") endif endif if Minigame_typeId[this_1] <= 1013 then if Minigame_typeId[this_1] <= 1012 then if Minigame_typeId[this_1] <= 1011 then set Minigame_Minigame_getCamBounds_result = MGAgar_getCamBounds(this_1) else set Minigame_Minigame_getCamBounds_result = MGRandKill_getCamBounds(this_1) endif else set Minigame_Minigame_getCamBounds_result = MGSlide_getCamBounds(this_1) endif elseif Minigame_typeId[this_1] <= 1014 then set Minigame_Minigame_getCamBounds_result = MGSpacey_getCamBounds(this_1) else set Minigame_Minigame_getCamBounds_result = MGWarlock_getCamBounds(this_1) endif return Minigame_Minigame_getCamBounds_result endfunction function MGAgar_getName takes integer this_1 returns string return "|cff567eecAgario\n\n|r >> |cff8cbfddBe the last one standing!" endfunction function MGRandKill_getName takes integer this_1 returns string return "|cffccaaddRandom Rumble" endfunction function MGSlide_getName takes integer this_1 returns string return "|cff567eecSlide Fun\n\n|r >> |cff8cbfddGet to the other side in 12 seconds!" endfunction function MGSpacey_getName takes integer this_1 returns string return "|cff3322e2Spacey Adventure" endfunction function MGWarlock_getName takes integer this_1 returns string return "|cff3322e2Spacey Adventure" endfunction function dispatch_Minigame_Minigame_Minigame_getName takes integer this_1 returns string local string Minigame_Minigame_getName_result if Minigame_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Minigame.getName") else call error("Called Minigame.getName on invalid object.") endif endif if Minigame_typeId[this_1] <= 1013 then if Minigame_typeId[this_1] <= 1012 then if Minigame_typeId[this_1] <= 1011 then set Minigame_Minigame_getName_result = MGAgar_getName(this_1) else set Minigame_Minigame_getName_result = MGRandKill_getName(this_1) endif else set Minigame_Minigame_getName_result = MGSlide_getName(this_1) endif elseif Minigame_typeId[this_1] <= 1014 then set Minigame_Minigame_getName_result = MGSpacey_getName(this_1) else set Minigame_Minigame_getName_result = MGWarlock_getName(this_1) endif return Minigame_Minigame_getName_result endfunction function dispatch_MGAgar_MGAgar_MGAgar_getCamBounds takes integer this_1 returns rect local rect MGAgar_MGAgar_getCamBounds_result if Minigame_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling MGAgar.getCamBounds") else call error("Called MGAgar.getCamBounds on invalid object.") endif endif set MGAgar_MGAgar_getCamBounds_result = MGAgar_getCamBounds(this_1) return MGAgar_MGAgar_getCamBounds_result endfunction function rect_getCenterX takes rect this_1 returns real return GetRectCenterX(this_1) endfunction function rect_getCenterY takes rect this_1 returns real return GetRectCenterY(this_1) endfunction function rect_getCenter takes rect this_1 returns real set rect_getCenter_return_x = rect_getCenterX(this_1) set rect_getCenter_return_y = rect_getCenterY(this_1) return rect_getCenter_return_x endfunction function MGAgar_getStartPosition takes integer this_1 returns real set MGAgar_getStartPosition_return_x = rect_getCenter(dispatch_MGAgar_MGAgar_MGAgar_getCamBounds(this_1)) set MGAgar_getStartPosition_return_y = rect_getCenter_return_y return MGAgar_getStartPosition_return_x endfunction function MGRandKill_getStartPosition takes integer this_1 returns real set MGRandKill_getStartPosition_return_x = rect_getCenter(dispatch_MGRandKill_MGRandKill_MGRandKill_getGameRect(this_1)) set MGRandKill_getStartPosition_return_y = rect_getCenter_return_y return MGRandKill_getStartPosition_return_x endfunction function MGSlide_getStartPosition takes integer this_1 returns real set MGSlide_getStartPosition_return_x = MGSlide_LEFT_SPOT_x set MGSlide_getStartPosition_return_y = MGSlide_LEFT_SPOT_y return MGSlide_getStartPosition_return_x endfunction function MGSpacey_getGameRect takes integer this_1 returns rect return gg_rct_spaceygamearea endfunction function dispatch_MGSpacey_MGSpacey_MGSpacey_getGameRect takes integer this_1 returns rect local rect MGSpacey_MGSpacey_getGameRect_result if Minigame_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling MGSpacey.getGameRect") else call error("Called MGSpacey.getGameRect on invalid object.") endif endif set MGSpacey_MGSpacey_getGameRect_result = MGSpacey_getGameRect(this_1) return MGSpacey_MGSpacey_getGameRect_result endfunction function MGSpacey_getStartPosition takes integer this_1 returns real set MGSpacey_getStartPosition_return_x = rect_getCenter(dispatch_MGSpacey_MGSpacey_MGSpacey_getGameRect(this_1)) set MGSpacey_getStartPosition_return_y = rect_getCenter_return_y return MGSpacey_getStartPosition_return_x endfunction function MGWarlock_getGameRect takes integer this_1 returns rect return gg_rct_warlockgamearea endfunction function dispatch_MGWarlock_MGWarlock_MGWarlock_getGameRect takes integer this_1 returns rect local rect MGWarlock_MGWarlock_getGameRect_result if Minigame_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling MGWarlock.getGameRect") else call error("Called MGWarlock.getGameRect on invalid object.") endif endif set MGWarlock_MGWarlock_getGameRect_result = MGWarlock_getGameRect(this_1) return MGWarlock_MGWarlock_getGameRect_result endfunction function MGWarlock_getStartPosition takes integer this_1 returns real set MGWarlock_getStartPosition_return_x = rect_getCenter(dispatch_MGWarlock_MGWarlock_MGWarlock_getGameRect(this_1)) set MGWarlock_getStartPosition_return_y = rect_getCenter_return_y return MGWarlock_getStartPosition_return_x endfunction function dispatch_Minigame_Minigame_Minigame_getStartPosition takes integer this_1 returns real local real Minigame_Minigame_getStartPosition_result_x local real Minigame_Minigame_getStartPosition_result_y local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 local real tuple_temp_7 local real tuple_temp_8 local real tuple_temp_9 if Minigame_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Minigame.getStartPosition") else call error("Called Minigame.getStartPosition on invalid object.") endif endif if Minigame_typeId[this_1] <= 1013 then if Minigame_typeId[this_1] <= 1012 then if Minigame_typeId[this_1] <= 1011 then set tuple_temp = MGAgar_getStartPosition(this_1) set tuple_temp_1 = MGAgar_getStartPosition_return_y set Minigame_Minigame_getStartPosition_result_x = tuple_temp set Minigame_Minigame_getStartPosition_result_y = tuple_temp_1 else set tuple_temp_2 = MGRandKill_getStartPosition(this_1) set tuple_temp_3 = MGRandKill_getStartPosition_return_y set Minigame_Minigame_getStartPosition_result_x = tuple_temp_2 set Minigame_Minigame_getStartPosition_result_y = tuple_temp_3 endif else set tuple_temp_4 = MGSlide_getStartPosition(this_1) set tuple_temp_5 = MGSlide_getStartPosition_return_y set Minigame_Minigame_getStartPosition_result_x = tuple_temp_4 set Minigame_Minigame_getStartPosition_result_y = tuple_temp_5 endif elseif Minigame_typeId[this_1] <= 1014 then set tuple_temp_6 = MGSpacey_getStartPosition(this_1) set tuple_temp_7 = MGSpacey_getStartPosition_return_y set Minigame_Minigame_getStartPosition_result_x = tuple_temp_6 set Minigame_Minigame_getStartPosition_result_y = tuple_temp_7 else set tuple_temp_8 = MGWarlock_getStartPosition(this_1) set tuple_temp_9 = MGWarlock_getStartPosition_return_y set Minigame_Minigame_getStartPosition_result_x = tuple_temp_8 set Minigame_Minigame_getStartPosition_result_y = tuple_temp_9 endif set dispatch_Minigame_Minigame_Minigame_getStartPosition_return_x = Minigame_Minigame_getStartPosition_result_x set dispatch_Minigame_Minigame_Minigame_getStartPosition_return_y = Minigame_Minigame_getStartPosition_result_y return dispatch_Minigame_Minigame_Minigame_getStartPosition_return_x endfunction function alloc_CallbackCounted_doPeriodicallyCounted_MGAgar_MGAgar takes nothing returns integer local integer this_1 if CallbackCounted_firstFree == 0 then if CallbackCounted_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackCounted_maxIndex = CallbackCounted_maxIndex + 1 set this_1 = CallbackCounted_maxIndex set CallbackCounted_typeId[this_1] = 661 else call error("Out of memory: Could not create CallbackCounted_doPeriodicallyCounted_MGAgar_MGAgar.") set this_1 = 0 endif else set CallbackCounted_firstFree = CallbackCounted_firstFree - 1 set this_1 = CallbackCounted_nextFree[CallbackCounted_firstFree] set CallbackCounted_typeId[this_1] = 661 endif return this_1 endfunction function alloc_AgarData takes nothing returns integer local integer this_1 if AgarData_firstFree == 0 then if AgarData_maxIndex < JASS_MAX_ARRAY_SIZE then set AgarData_maxIndex = AgarData_maxIndex + 1 set this_1 = AgarData_maxIndex else call error("Out of memory: Could not create AgarData.") set this_1 = 0 endif else set AgarData_firstFree = AgarData_firstFree - 1 set this_1 = AgarData_nextFree[AgarData_firstFree] endif return this_1 endfunction function AgarData_init takes integer this_1 returns nothing set AgarData_size[this_1] = 0.0 endfunction function construct_AgarData takes integer this_1 returns nothing call AgarData_init(this_1) endfunction function new_AgarData takes nothing returns integer local integer this_1 = alloc_AgarData() call construct_AgarData(this_1) return this_1 endfunction function MGAgar_initEscapers takes integer this_1 returns nothing local integer iterator local integer pd_1 local integer clVar set MGAgar_rdata[this_1] = getRegionData_3302(MGAgar_RIGHT_SPOT_x, MGAgar_RIGHT_SPOT_y) set iterator = LinkedList_iterator(PlayerData_escaperPlayers) loop exitwhen not LLIterator_hasNext(iterator) set pd_1 = LLIterator_next(iterator) if PlayerData_escaper[pd_1] != 0 and Escaper_alive[PlayerData_escaper[pd_1]] then call dispatch_HashMap_HashMap_HashMap_put(MGAgar_map, PlayerData_escaper[pd_1], new_AgarData()) call unit_setScale(UnitEntity_actor[PlayerData_escaper[pd_1]], 0.2) call dispatch_RegionData_RegionData_RegionData_revealRegion(MGAgar_rdata[this_1], PlayerData_p[pd_1]) endif endloop call LLIterator_close(iterator) set clVar = alloc_CallbackCounted_doPeriodicallyCounted_MGAgar_MGAgar() call construct_CallbackCounted(clVar) set this_2941[clVar] = this_1 set MGAgar_cbs[this_1] = doPeriodicallyCounted(0.2, 9999, clVar) endfunction function dispatch_MGAgar_MGAgar_MGAgar_initEscapers takes integer this_1 returns nothing if Minigame_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling MGAgar.initEscapers") else call error("Called MGAgar.initEscapers on invalid object.") endif endif call MGAgar_initEscapers(this_1) endfunction function MGAgar_onBegin takes integer this_1 returns nothing call dispatch_MGAgar_MGAgar_MGAgar_initEscapers(this_1) endfunction function alloc_CallbackPeriodic_doPeriodically_MGRandKill_MGRandKill takes nothing returns integer local integer this_1 if CallbackPeriodic_firstFree == 0 then if CallbackPeriodic_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackPeriodic_maxIndex = CallbackPeriodic_maxIndex + 1 set this_1 = CallbackPeriodic_maxIndex set CallbackPeriodic_typeId[this_1] = 664 else call error("Out of memory: Could not create CallbackPeriodic_doPeriodically_MGRandKill_MGRandKill.") set this_1 = 0 endif else set CallbackPeriodic_firstFree = CallbackPeriodic_firstFree - 1 set this_1 = CallbackPeriodic_nextFree[CallbackPeriodic_firstFree] set CallbackPeriodic_typeId[this_1] = 664 endif return this_1 endfunction function alloc_CallbackPeriodic_doPeriodically_MGRandKill_MGRandKill_1595 takes nothing returns integer local integer this_1 if CallbackPeriodic_firstFree == 0 then if CallbackPeriodic_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackPeriodic_maxIndex = CallbackPeriodic_maxIndex + 1 set this_1 = CallbackPeriodic_maxIndex set CallbackPeriodic_typeId[this_1] = 665 else call error("Out of memory: Could not create CallbackPeriodic_doPeriodically_MGRandKill_MGRandKill.") set this_1 = 0 endif else set CallbackPeriodic_firstFree = CallbackPeriodic_firstFree - 1 set this_1 = CallbackPeriodic_nextFree[CallbackPeriodic_firstFree] set CallbackPeriodic_typeId[this_1] = 665 endif return this_1 endfunction function alloc_CallbackPeriodic_doPeriodically_MGRandKill_MGRandKill_1596 takes nothing returns integer local integer this_1 if CallbackPeriodic_firstFree == 0 then if CallbackPeriodic_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackPeriodic_maxIndex = CallbackPeriodic_maxIndex + 1 set this_1 = CallbackPeriodic_maxIndex set CallbackPeriodic_typeId[this_1] = 666 else call error("Out of memory: Could not create CallbackPeriodic_doPeriodically_MGRandKill_MGRandKill.") set this_1 = 0 endif else set CallbackPeriodic_firstFree = CallbackPeriodic_firstFree - 1 set this_1 = CallbackPeriodic_nextFree[CallbackPeriodic_firstFree] set CallbackPeriodic_typeId[this_1] = 666 endif return this_1 endfunction function alloc_CallbackSingle_doAfter_MGRandKill_MGRandKill takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 691 else call error("Out of memory: Could not create CallbackSingle_doAfter_MGRandKill_MGRandKill.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 691 endif return this_1 endfunction function CallbackPeriodic_init takes integer this_1 returns nothing endfunction function construct_CallbackPeriodic takes integer this_1 returns nothing call CallbackPeriodic_init(this_1) endfunction function CallbackPeriodic_start takes integer this_1, timer whichTimer, real time returns nothing local timer receiver = whichTimer local timer receiver_1 call timer_setData(receiver, this_1) set receiver_1 = receiver call timer_startPeriodic(receiver_1, time, ref_function_CallbackPeriodic_staticCallback) set CallbackPeriodic_t[this_1] = receiver_1 endfunction function dispatch_CallbackPeriodic_ClosureTimers_CallbackPeriodic_start takes integer this_1, timer whichTimer, real time returns nothing if CallbackPeriodic_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling CallbackPeriodic.start") else call error("Called CallbackPeriodic.start on invalid object.") endif endif call CallbackPeriodic_start(this_1, whichTimer, time) endfunction function timer_doPeriodically takes timer this_1, real time, integer cb_1 returns integer call dispatch_CallbackPeriodic_ClosureTimers_CallbackPeriodic_start(cb_1, this_1, time) return cb_1 endfunction function doPeriodically takes real time, integer cb_1 returns integer return timer_doPeriodically(getTimer(), time, cb_1) endfunction function effect_playAnimation takes effect this_1, animtype whichAnim returns nothing call BlzPlaySpecialEffect(this_1, whichAnim) endfunction function item_setVisible takes item this_1, boolean flag returns nothing call SetItemVisible(this_1, flag) endfunction function rect_moveTo takes rect this_1, real newCenter_x, real newCenter_y returns nothing call MoveRectTo(this_1, newCenter_x, newCenter_y) endfunction function vec2_isTerrainPathable takes real this_x, real this_y, pathingtype ttype_1 returns boolean return IsTerrainPathable(this_x, this_y, ttype_1) endfunction function vec2_isTerrainWalkable takes real this_x, real this_y returns boolean local real tempPos_x local real tempPos_y local real tuple_temp local real tuple_temp_1 call rect_moveTo(TerrainUtils_itemSearchRect, this_x, this_y) call EnumItemsInRect(TerrainUtils_itemSearchRect, null, ref_function_code__EnumItemsInRect_TerrainUtils) call item_setPos(TerrainUtils_dummyItem, this_x, this_y) set tuple_temp = item_getPos(TerrainUtils_dummyItem) set tuple_temp_1 = item_getPos_return_y set tempPos_x = tuple_temp set tempPos_y = tuple_temp_1 call item_setVisible(TerrainUtils_dummyItem, false) loop exitwhen not (TerrainUtils_hiddenItemsCount > 0) set TerrainUtils_hiddenItemsCount = TerrainUtils_hiddenItemsCount - 1 call item_setVisible(TerrainUtils_hiddenItems[TerrainUtils_hiddenItemsCount], true) set TerrainUtils_hiddenItems[TerrainUtils_hiddenItemsCount] = null endloop return (tempPos_x - this_x) * (tempPos_x - this_x) + (tempPos_y - this_y) * (tempPos_y - this_y) <= TerrainUtils_MAX_RANGE_SQ and ( not vec2_isTerrainPathable(this_x, this_y, PATHING_TYPE_WALKABILITY)) endfunction function MGRandKill_onBegin takes integer this_1 returns nothing local real tuple_temp = rect_randomPoint(dispatch_MGRandKill_MGRandKill_MGRandKill_getGameRect(this_1)) local real tuple_temp_1 = rect_randomPoint_return_y local integer i local integer temp local integer clVar local integer clVar_1 local integer clVar_2 local integer clVar_3 local real tuple_temp_2 local real tuple_temp_3 set MGRandKill_spawn_x[this_1] = tuple_temp set MGRandKill_spawn_y[this_1] = tuple_temp_1 loop exitwhen not not vec2_isTerrainWalkable(MGRandKill_spawn_x[this_1], MGRandKill_spawn_y[this_1]) set tuple_temp_2 = rect_randomPoint(dispatch_MGRandKill_MGRandKill_MGRandKill_getGameRect(this_1)) set tuple_temp_3 = rect_randomPoint_return_y set MGRandKill_spawn_x[this_1] = tuple_temp_2 set MGRandKill_spawn_y[this_1] = tuple_temp_3 endloop set MGRandKill_fx[this_1] = new_Fx2(vec2_toVec3(MGRandKill_spawn_x[this_1], MGRandKill_spawn_y[this_1]), vec2_toVec3_return_y, vec2_toVec3_return_z, Doodads_shimmeringPortal) call effect_setScale(Fx2_eff[MGRandKill_fx[this_1]], 0.5) call effect_playAnimation(Fx2_eff[MGRandKill_fx[this_1]], ANIM_TYPE_STAND) set i = 0 set temp = GetRandomInt(5, 7) loop exitwhen i > temp call new_SmallObstacle_3744(rect_randomPoint(dispatch_MGRandKill_MGRandKill_MGRandKill_getGameRect(this_1)), rect_randomPoint_return_y, GameConstants_STAFF_PLAYER) set i = i + 1 endloop set clVar = alloc_CallbackSingle_doAfter_MGRandKill_MGRandKill() call construct_CallbackSingle(clVar) set this_2942[clVar] = this_1 call doAfter(2.5, clVar) set clVar_1 = alloc_CallbackPeriodic_doPeriodically_MGRandKill_MGRandKill() call construct_CallbackPeriodic(clVar_1) set this_2943[clVar_1] = this_1 set MGRandKill_chickenTimer[this_1] = doPeriodically(5., clVar_1) set clVar_2 = alloc_CallbackPeriodic_doPeriodically_MGRandKill_MGRandKill_1595() call construct_CallbackPeriodic(clVar_2) set this_2944[clVar_2] = this_1 set MGRandKill_bunnyTimer[this_1] = doPeriodically(13., clVar_2) set clVar_3 = alloc_CallbackPeriodic_doPeriodically_MGRandKill_MGRandKill_1596() call construct_CallbackPeriodic(clVar_3) set this_2945[clVar_3] = this_1 set MGRandKill_coinTimer[this_1] = doPeriodically(23., clVar_3) endfunction function alloc_CallbackPeriodic_doPeriodically_MGSlide_MGSlide takes nothing returns integer local integer this_1 if CallbackPeriodic_firstFree == 0 then if CallbackPeriodic_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackPeriodic_maxIndex = CallbackPeriodic_maxIndex + 1 set this_1 = CallbackPeriodic_maxIndex set CallbackPeriodic_typeId[this_1] = 667 else call error("Out of memory: Could not create CallbackPeriodic_doPeriodically_MGSlide_MGSlide.") set this_1 = 0 endif else set CallbackPeriodic_firstFree = CallbackPeriodic_firstFree - 1 set this_1 = CallbackPeriodic_nextFree[CallbackPeriodic_firstFree] set CallbackPeriodic_typeId[this_1] = 667 endif return this_1 endfunction function MGSlide_onBegin takes integer this_1 returns nothing local integer clVar set MGSlide_bcount[this_1] = 0 set MGSlide_goRight[this_1] = true set MGSlide_rdata[this_1] = getRegionData_3302(MGSlide_RIGHT_SPOT_x, MGSlide_RIGHT_SPOT_y) call rect_changeTerrain(gg_rct_slidegamespawn, BuilderConstants_CONTROLLABLEICE) call dispatch_MGSlide_MGSlide_MGSlide_generateNewCourse(this_1) set clVar = alloc_CallbackPeriodic_doPeriodically_MGSlide_MGSlide() call construct_CallbackPeriodic(clVar) set this_2946[clVar] = this_1 set MGSlide_cb[this_1] = doPeriodically(12., clVar) endfunction function EventListener_add takes eventid eventId, integer listener_1 returns integer set EventListener_eventId[listener_1] = eventid_toIntId(eventId) if EventListener_generalListenersFirsts[EventListener_eventId[listener_1]] != 0 then set EventListener_prev[EventListener_generalListenersFirsts[EventListener_eventId[listener_1]]] = listener_1 set EventListener_next[listener_1] = EventListener_generalListenersFirsts[EventListener_eventId[listener_1]] endif set EventListener_generalListenersFirsts[EventListener_eventId[listener_1]] = listener_1 return listener_1 endfunction function addKeyListener takes integer listener_1 returns integer if KeyUtils_firstKeyListener != 0 then set EventListener_prev[KeyUtils_firstKeyListener] = listener_1 set EventListener_next[listener_1] = KeyUtils_firstKeyListener endif set KeyUtils_firstKeyListener = listener_1 return listener_1 endfunction function alloc_EventListener_addKeyListener_MGSpacey_MGSpacey takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 754 else call error("Out of memory: Could not create EventListener_addKeyListener_MGSpacey_MGSpacey.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 754 endif return this_1 endfunction function alloc_EventListener_add_MGSpacey_MGSpacey takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 804 else call error("Out of memory: Could not create EventListener_add_MGSpacey_MGSpacey.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 804 endif return this_1 endfunction function MGSpacey_onBegin takes integer this_1 returns nothing local integer iterator = LinkedList_iterator(PlayerData_escaperPlayers) local integer pd_1 local integer clVar local integer clVar_1 local integer i local playerevent temp loop exitwhen not LLIterator_hasNext(iterator) set pd_1 = LLIterator_next(iterator) if PlayerData_escaper[pd_1] != 0 then if not Escaper_alive[PlayerData_escaper[pd_1]] then call forceRevive(PlayerData_escaper[pd_1]) endif call printTimedToPlayer("Use ARROW KEYS and the ESC key to control your spacecraft.", 15., PlayerData_p[pd_1]) call dispatch_LinkedList_LinkedList_LinkedList_add_1(MGSpacey_ships, new_Spaceship(vec2_op_plus(MGSpacey_ARENA_POS_x, MGSpacey_ARENA_POS_y, dispatch_LinkedList_LinkedList_LinkedList_size(MGSpacey_ships) * 64., -168.), vec2_op_plus_return_y, PlayerData_escaper[pd_1])) endif endloop call LLIterator_close(iterator) set temp = EVENT_PLAYER_END_CINEMATIC set clVar = alloc_EventListener_add_MGSpacey_MGSpacey() call construct_EventListener(clVar) set MGSpacey_listener[this_1] = EventListener_add(temp, clVar) set clVar_1 = alloc_EventListener_addKeyListener_MGSpacey_MGSpacey() call construct_EventListener(clVar_1) set MGSpacey_klistener[this_1] = addKeyListener(clVar_1) set i = 0 loop exitwhen i > 2 call new_SpaceRock(vec2_polarOffset(MGSpacey_ARENA_POS_x, MGSpacey_ARENA_POS_y, real_fromDeg(90. + GetRandomReal(-45., 45.)), GetRandomReal(256., 480.)), vec2_polarOffset_return_y, GetRandomReal(-1., 1.), GetRandomReal(-1., 1.), 4) set i = i + 1 endloop endfunction function alloc_CallbackPeriodic_doPeriodically_MGWarlock_MGWarlock takes nothing returns integer local integer this_1 if CallbackPeriodic_firstFree == 0 then if CallbackPeriodic_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackPeriodic_maxIndex = CallbackPeriodic_maxIndex + 1 set this_1 = CallbackPeriodic_maxIndex set CallbackPeriodic_typeId[this_1] = 668 else call error("Out of memory: Could not create CallbackPeriodic_doPeriodically_MGWarlock_MGWarlock.") set this_1 = 0 endif else set CallbackPeriodic_firstFree = CallbackPeriodic_firstFree - 1 set this_1 = CallbackPeriodic_nextFree[CallbackPeriodic_firstFree] set CallbackPeriodic_typeId[this_1] = 668 endif return this_1 endfunction function alloc_Warlock takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1226 else call error("Out of memory: Could not create Warlock.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1226 endif return this_1 endfunction function EventListener_onPointCast takes unit u_1, integer abilId, integer listener_1 returns integer return EventListener_addSpellInternal(u_1, abilId, listener_1) endfunction function Warlock_init takes integer this_1 returns nothing endfunction function alloc_OnPointCast_onPointCast_Warlock_MGWarlock takes nothing returns integer local integer this_1 if OnCastListener_firstFree == 0 then if OnCastListener_maxIndex < JASS_MAX_ARRAY_SIZE then set OnCastListener_maxIndex = OnCastListener_maxIndex + 1 set this_1 = OnCastListener_maxIndex set OnCastListener_typeId[this_1] = 1023 else call error("Out of memory: Could not create OnPointCast_onPointCast_Warlock_MGWarlock.") set this_1 = 0 endif else set OnCastListener_firstFree = OnCastListener_firstFree - 1 set this_1 = OnCastListener_nextFree[OnCastListener_firstFree] set OnCastListener_typeId[this_1] = 1023 endif return this_1 endfunction function OnPointCast_init takes integer this_1 returns nothing endfunction function construct_OnPointCast takes integer this_1 returns nothing call construct_OnCastListener(this_1) call OnPointCast_init(this_1) endfunction function construct_UnitEntity3 takes integer this_1, unit actor, real pos_x_1, real pos_y_1, real pos_z, real radius returns nothing call construct_Entity5(this_1, unit_getOwner(actor), pos_x_1, pos_y_1, pos_z, radius) call UnitEntity_init(this_1) call dispatch_UnitEntity_Entity_UnitEntity_setupUnitEntity(this_1, actor) endfunction function construct_Warlock takes integer this_1, real pos_x_1, real pos_y_1, integer mounter returns nothing local unit receiver local unit receiver_1 local integer clVar local unit temp local integer temp_1 call construct_UnitEntity3(this_1, createUnit(Entity_owner[mounter], MGWarlock_WARLOCK_ID, pos_x_1, pos_y_1, real_fromDeg(90.)), vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, 32.) call Warlock_init(this_1) set Warlock_mounter[this_1] = mounter set Escaper_alive[Warlock_mounter[this_1]] = false set receiver = UnitEntity_actor[mounter] call unit_pause(receiver) set receiver_1 = receiver call unit_hide(receiver_1) call dispatch_UnitEntity_Entity_UnitEntity_setPos(this_1, vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0., 32.), vec3_op_plus_return_y, vec3_op_plus_return_z) set Entity_sleeps[this_1] = false call player_selectSingle(Entity_owner[mounter], UnitEntity_actor[this_1]) set temp = UnitEntity_actor[this_1] set temp_1 = MGWarlock_FIREBALL_ID set clVar = alloc_OnPointCast_onPointCast_Warlock_MGWarlock() call construct_OnPointCast(clVar) set this_2949[clVar] = this_1 call EventListener_onPointCast(temp, temp_1, clVar) endfunction function new_Warlock takes real pos_x_1, real pos_y_1, integer mounter returns integer local integer this_1 = alloc_Warlock() call construct_Warlock(this_1, pos_x_1, pos_y_1, mounter) return this_1 endfunction function MGWarlock_onBegin takes integer this_1 returns nothing local integer iterator = LinkedList_iterator(PlayerData_escaperPlayers) local integer pd_1 local integer clVar loop exitwhen not LLIterator_hasNext(iterator) set pd_1 = LLIterator_next(iterator) if PlayerData_escaper[pd_1] != 0 then if not Escaper_alive[PlayerData_escaper[pd_1]] then call forceRevive(PlayerData_escaper[pd_1]) endif call printTimedToPlayer("Use your [Q] Spell and be the last warlock standing!", 15., PlayerData_p[pd_1]) call dispatch_LinkedList_LinkedList_LinkedList_add_1(MGWarlock_warlocks, new_Warlock(vec2_op_plus(MGWarlock_ARENA_POS_x, MGWarlock_ARENA_POS_y, GetRandomReal(-16., 16.), GetRandomReal(-16., 16.)), vec2_op_plus_return_y, PlayerData_escaper[pd_1])) endif endloop call LLIterator_close(iterator) set clVar = alloc_CallbackPeriodic_doPeriodically_MGWarlock_MGWarlock() call construct_CallbackPeriodic(clVar) set this_2948[clVar] = this_1 set MGWarlock_cb[this_1] = doPeriodically(1., clVar) endfunction function dispatch_Minigame_Minigame_Minigame_onBegin takes integer this_1 returns nothing if Minigame_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Minigame.onBegin") else call error("Called Minigame.onBegin on invalid object.") endif endif if Minigame_typeId[this_1] <= 1013 then if Minigame_typeId[this_1] <= 1012 then if Minigame_typeId[this_1] <= 1011 then call MGAgar_onBegin(this_1) else call MGRandKill_onBegin(this_1) endif else call MGSlide_onBegin(this_1) endif elseif Minigame_typeId[this_1] <= 1014 then call MGSpacey_onBegin(this_1) else call MGWarlock_onBegin(this_1) endif endfunction function alloc_CallbackSingle_nullTimer_SoundDefinition_SoundUtils_1643 takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 718 else call error("Out of memory: Could not create CallbackSingle_nullTimer_SoundDefinition_SoundUtils.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 718 endif return this_1 endfunction function SoundDefinition_playForPlayer_1307 takes integer this_1, player p, integer duration returns integer local integer snd_1 local integer clVar set SoundDefinition_duration[this_1] = duration set snd_1 = dispatch_SoundDefinition_SoundUtils_SoundDefinition_getSound(this_1) set SoundInstance_p[snd_1] = p set clVar = alloc_CallbackSingle_nullTimer_SoundDefinition_SoundUtils_1643() call construct_CallbackSingle(clVar) set this_2905[clVar] = this_1 set snd_2880[clVar] = snd_1 call nullTimer(clVar) return snd_1 endfunction function dispatch_SoundDefinition_SoundUtils_SoundDefinition_playForPlayer_3161 takes integer this_1, player p, integer duration returns integer local integer SoundUtils_SoundDefinition_playForPlayer_result if SoundDefinition_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SoundDefinition.playForPlayer") else call error("Called SoundDefinition.playForPlayer on invalid object.") endif endif set SoundUtils_SoundDefinition_playForPlayer_result = SoundDefinition_playForPlayer_1307(this_1, p, duration) return SoundUtils_SoundDefinition_playForPlayer_result endfunction function SoundDefinition_playForPlayer takes integer this_1, player p returns integer return dispatch_SoundDefinition_SoundUtils_SoundDefinition_playForPlayer_3161(this_1, p, SoundUtils_DEFAULT_SOUND_DURATION) endfunction function dispatch_SoundDefinition_SoundUtils_SoundDefinition_playForPlayer takes integer this_1, player p returns integer local integer SoundUtils_SoundDefinition_playForPlayer_result if SoundDefinition_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SoundDefinition.playForPlayer") else call error("Called SoundDefinition.playForPlayer on invalid object.") endif endif set SoundUtils_SoundDefinition_playForPlayer_result = SoundDefinition_playForPlayer(this_1, p) return SoundUtils_SoundDefinition_playForPlayer_result endfunction function Minigame_start takes integer this_1 returns nothing local timer receiver local timer receiver_1 local integer clVar local integer pd_1 local integer from local integer receiver_2 if Minigame_tim[this_1] == null then set Minigame_tim[this_1] = getTimer() set receiver = Minigame_tim[this_1] call timer_setData(receiver, this_1) set receiver_1 = receiver call timer_start(receiver_1, Minigame_MAX_TIME, ref_function_code__start_Minigame_Minigame) set Minigame_window[this_1] = CreateTimerDialog(Minigame_tim[this_1]) call TimerDialogSetTitle(Minigame_window[this_1], "Minigame") call TimerDialogDisplay(Minigame_window[this_1], true) call changeRevMode(2) set clVar = alloc_ReviveListener_Minigame_Minigame() set this_2951[clVar] = this_1 set ReviveManager_waitForListener = clVar set from = dispatch_LinkedList_LinkedList_LinkedList_staticItr(PlayerData_escaperPlayers) loop exitwhen not LLIterator_hasNext(from) set pd_1 = LLIterator_next(from) if PlayerData_escaper[pd_1] != 0 then if not Escaper_alive[PlayerData_escaper[pd_1]] then call dispatch_Escaper_Escaper_Escaper_revive(PlayerData_escaper[pd_1]) endif set receiver_2 = PlayerData_escaper[pd_1] call dispatch_UnitEntity_Entity_UnitEntity_setPos(receiver_2, vec2_withZ(dispatch_Minigame_Minigame_Minigame_getStartPosition(this_1), dispatch_Minigame_Minigame_Minigame_getStartPosition_return_y, 0.), vec2_withZ_return_y, vec2_withZ_return_z) call dispatch_RegionData_RegionData_RegionData_revealRegion(Entity_setCurrentRegion(receiver_2), PlayerData_p[pd_1]) if not Escaper_camlock[PlayerData_escaper[pd_1]] then call player_panCamToTimed(PlayerData_p[pd_1], UnitEntity_actor[PlayerData_escaper[pd_1]], 0.) endif call player_select(PlayerData_p[pd_1], UnitEntity_actor[PlayerData_escaper[pd_1]]) endif call printTimedToPlayer("Minigame started: " + dispatch_Minigame_Minigame_Minigame_getName(this_1), 20., PlayerData_p[pd_1]) if Player_localPlayer == PlayerData_p[pd_1] then call SetCameraBoundsToRect(dispatch_Minigame_Minigame_Minigame_getCamBounds(this_1)) endif call dispatch_SoundDefinition_SoundUtils_SoundDefinition_playForPlayer(Minigame_BEGIN_SOUND, PlayerData_p[pd_1]) endloop call dispatch_Minigame_Minigame_Minigame_onBegin(this_1) endif endfunction function dispatch_Minigame_Minigame_Minigame_start takes integer this_1 returns nothing if Minigame_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Minigame.start") else call error("Called Minigame.start on invalid object.") endif endif call Minigame_start(this_1) endfunction function getNextMinigame takes nothing returns integer if dispatch_LinkedList_LinkedList_LinkedList_size(Minigame_minigames_live) == 0 then call dispatch_LinkedList_LinkedList_LinkedList_addAll(Minigame_minigames_live, Minigame_minigames) call dispatch_LinkedList_LinkedList_LinkedList_shuffle(Minigame_minigames_live) endif return dispatch_LinkedList_LinkedList_LinkedList_pop(Minigame_minigames_live) endfunction function MinigameTeleporter_startMinigame takes integer this_1 returns nothing local integer chosenMinigame = getNextMinigame() call dispatch_Minigame_Minigame_Minigame_start(chosenMinigame) endfunction function dispatch_MinigameTeleporter_MinigameTeleporter_MinigameTeleporter_startMinigame takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling MinigameTeleporter.startMinigame") else call error("Called MinigameTeleporter.startMinigame on invalid object.") endif endif call MinigameTeleporter_startMinigame(this_1) endfunction function MinigameTeleporter_check takes integer this_1, integer e_1 returns nothing local integer votesNeeded call MinigameTeleporter_votes_set(this_1, player_getId(Entity_owner[e_1]), not MinigameTeleporter_votes_get(this_1, player_getId(Entity_owner[e_1]))) if MinigameTeleporter_votes_get(this_1, player_getId(Entity_owner[e_1])) then set MinigameTeleporter_currentPlus[this_1] = MinigameTeleporter_currentPlus[this_1] + 1 set votesNeeded = real_round(dispatch_LinkedList_LinkedList_LinkedList_size(PlayerData_escaperPlayers) * 0.65) if MinigameTeleporter_currentPlus[this_1] >= votesNeeded then call dispatch_MinigameTeleporter_MinigameTeleporter_MinigameTeleporter_startMinigame(this_1) call texttag_center(FText_tt[MinigameTeleporter_text[this_1]], dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, "-|cffffcc00Minigame in progress|r-", 10.) set MinigameTeleporter_inprogress[this_1] = true else call flashEffect(UI_confirmation, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) call texttag_center(FText_tt[MinigameTeleporter_text[this_1]], dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, "Votes - [" + int_toString(MinigameTeleporter_currentPlus[this_1]) + "/|cffffcc00" + int_toString(votesNeeded) + "|r]", 10.) endif else set MinigameTeleporter_currentPlus[this_1] = MinigameTeleporter_currentPlus[this_1] - 1 endif endfunction function dispatch_MinigameTeleporter_MinigameTeleporter_MinigameTeleporter_check takes integer this_1, integer e_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling MinigameTeleporter.check") else call error("Called MinigameTeleporter.check on invalid object.") endif endif call MinigameTeleporter_check(this_1, e_1) endfunction function MinigameTeleporter_checkVote takes nothing returns nothing local unit source = trigger_getSource(GetTriggeringTrigger()) local unit u_1 = GetTriggerUnit() local integer e_1 = unit_getEntity(u_1) local integer obj_1 = unit_getEntity(source) local integer instanceOfTemp local boolean andLeft if isEscaperPlayer(Entity_owner[e_1]) then set instanceOfTemp = Serializable_typeId[e_1] set andLeft = instanceOfTemp >= 1162 and instanceOfTemp <= 1167 else set andLeft = false endif if andLeft and ( not MinigameTeleporter_inprogress[obj_1]) then call dispatch_MinigameTeleporter_MinigameTeleporter_MinigameTeleporter_check(obj_1, e_1) endif endfunction function alloc_CallbackSingle_doAfter_RevivePoint_Revivepoint takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 699 else call error("Out of memory: Could not create CallbackSingle_doAfter_RevivePoint_Revivepoint.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 699 endif return this_1 endfunction function unit_setHP takes unit this_1, real hp returns nothing call unit_setState(this_1, UNIT_STATE_LIFE, hp) endfunction function Escaper_onCPReach takes integer this_1 returns nothing if Escaper_revivetomb[this_1] != null then call unit_remove(Escaper_revivetomb[this_1]) set Escaper_revivetomb[this_1] = null endif call unit_setHP(UnitEntity_actor[this_1], 9999.) endfunction function FastEscaper_onCPReach takes integer this_1 returns nothing call Escaper_onCPReach(this_1) if FastEscaper_portal[this_1] != 0 then call cyc_RevivePoint_terminate(18, FastEscaper_portal[this_1]) call Log_debug("portal Terminate") set FastEscaper_portal[this_1] = 0 endif endfunction function dispatch_Escaper_Escaper_Escaper_onCPReach takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Escaper.onCPReach") else call error("Called Escaper.onCPReach on invalid object.") endif endif if Serializable_typeId[this_1] <= 1164 then if Serializable_typeId[this_1] <= 1163 then call Escaper_onCPReach(this_1) else call FastEscaper_onCPReach(this_1) endif else call Escaper_onCPReach(this_1) endif endfunction function unit_getName takes unit this_1 returns string return GetUnitName(this_1) endfunction function vec2_isInRect takes real this_x, real this_y, rect r returns boolean return this_x > rect_getMinX(r) and this_x < rect_getMaxX(r) and this_y > rect_getMinY(r) and this_y < rect_getMaxY(r) endfunction function Startmaze_clearMaze takes integer this_1 returns nothing local unit vicu local group from local integer data_1 call GroupEnumUnitsInRect(Group_ENUM_GROUP, RegionData_theRect[Startmaze_rdata[this_1]], Filter(ref_function_code__Filter_GroupEnumUnitsInRect_Startmaze_Startmaze)) set from = Group_ENUM_GROUP loop exitwhen not group_hasNext(from) set vicu = group_next(from) if unit_isAlive(vicu) and vec2_isInRect(unit_getPos(vicu), unit_getPos_return_y, RegionData_theRect[Startmaze_rdata[this_1]]) then set data_1 = unit_getEntity(vicu) if data_1 != 0 and unit_getName(UnitEntity_actor[data_1]) != null and Serializable_typeId[data_1] > 0 then call Log_debug("clear") call cyc_RevivePoint_terminate(18, data_1) else call unit_remove(vicu) endif endif endloop call EnumDestructablesInRectAll(RegionData_theRect[Startmaze_rdata[this_1]], ref_function_killD) call EnumItemsInRect(RegionData_theRect[Startmaze_rdata[this_1]], null, ref_function_deleteKeys) endfunction function dispatch_Startmaze_Startmaze_Startmaze_clearMaze takes integer this_1 returns nothing if Startmaze_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Startmaze.clearMaze") else call error("Called Startmaze.clearMaze on invalid object.") endif endif call Startmaze_clearMaze(this_1) endfunction function Startmaze_isInit takes integer this_1 returns boolean return Startmaze_inited[this_1] endfunction function dispatch_Startmaze_Startmaze_Startmaze_isInit takes integer this_1 returns boolean local boolean Startmaze_Startmaze_isInit_result if Startmaze_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Startmaze.isInit") else call error("Called Startmaze.isInit on invalid object.") endif endif set Startmaze_Startmaze_isInit_result = Startmaze_isInit(this_1) return Startmaze_Startmaze_isInit_result endfunction function Startmaze_onDestroy takes integer this_1 returns nothing endfunction function dealloc_Startmaze takes integer obj_1 returns nothing if Startmaze_typeId[obj_1] == 0 then call error("Double free: object of type Startmaze") else set Startmaze_nextFree[Startmaze_firstFree] = obj_1 set Startmaze_firstFree = Startmaze_firstFree + 1 set Startmaze_typeId[obj_1] = 0 endif endfunction function destroyStartmaze takes integer this_1 returns nothing call Startmaze_onDestroy(this_1) call dealloc_Startmaze(this_1) endfunction function dispatch_Startmaze_destroyStartmaze takes integer this_1 returns nothing if Startmaze_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Startmaze.Startmaze") else call error("Called Startmaze.Startmaze on invalid object.") endif endif call destroyStartmaze(this_1) endfunction function panCameraToTimed takes real pos_x_1, real pos_y_1, real pos_z, real duration returns nothing call PanCameraToTimedWithZ(pos_x_1, pos_y_1, pos_z - vec2_getTerrainZ(vec3_toVec2(pos_x_1, pos_y_1, pos_z), vec3_toVec2_return_y), duration) endfunction function player_panCameraToTimed_3924 takes player this_1, real pos_x_1, real pos_y_1, real pos_z, real duration returns nothing if Player_localPlayer == this_1 then call panCameraToTimed(pos_x_1, pos_y_1, pos_z, duration) endif endfunction function RevivePoint_reach takes integer this_1, integer reacher returns nothing local integer clVar local boolean getExp local integer pd_1 local integer from local real tuple_temp local real tuple_temp_1 call Log_debug("on reach") if not RevivePoint_reached[this_1] then set RevivePoint_reached[this_1] = true call unit_setColor(UnitEntity_actor[this_1], player_getColor(Entity_owner[reacher])) set tuple_temp = vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) set tuple_temp_1 = vec3_toVec2_return_y set Escaper_currentRevivepoint_x = tuple_temp set Escaper_currentRevivepoint_y = tuple_temp_1 if Revivepoint_currentRevive != 0 then call unit_addAbility(UnitEntity_actor[Revivepoint_currentRevive], BuilderConstants_REMOVE_OBJECT_ID) endif set Revivepoint_currentRevive = this_1 call unit_removeAbility(UnitEntity_actor[this_1], BuilderConstants_REMOVE_OBJECT_ID) call dispatch_SoundDefinition_SoundUtils_SoundDefinition_play(Revivepoint_rescueSound) call printTimed(player_getNameColored_3916(Entity_owner[reacher]) + " advanced to the next |cff086BB5Checkpoint", 15.) call dispatch_Escaper_Escaper_Escaper_onCPReach(reacher) call Entity_setCurrentRegion(this_1) if dispatch_RegionData_RegionData_RegionData_getPermission(Entity_getCurrentRegion(this_1), GameConstants_STAFF_PLAYER) == 2 then if RevivePoint_startmaze[this_1] > -1 then if Startmazes_startmazes[Startmazes_currentMaze] > 0 and dispatch_Startmaze_Startmaze_Startmaze_isInit(Startmazes_startmazes[Startmazes_currentMaze]) then call dispatch_Startmaze_Startmaze_Startmaze_clearMaze(Startmazes_startmazes[Startmazes_currentMaze]) call dispatch_Startmaze_destroyStartmaze(Startmazes_startmazes[Startmazes_currentMaze]) set Startmazes_startmazes[Startmazes_currentMaze] = 0 endif set Startmazes_currentMaze = RevivePoint_startmaze[this_1] if Startmazes_startmazes[Startmazes_currentMaze] > 0 and ( not dispatch_Startmaze_Startmaze_Startmaze_isInit(Startmazes_startmazes[Startmazes_currentMaze])) then set clVar = alloc_CallbackSingle_doAfter_RevivePoint_Revivepoint() call construct_CallbackSingle(clVar) call doAfter(0.5, clVar) set RevivePoint_reached[Startmazes_svRev] = false call unit_setColor(UnitEntity_actor[Startmazes_svRev], PLAYER_COLOR_LIGHT_GRAY) endif endif else set RevivePoint_reached[Startmazes_svRev] = false call unit_setColor(UnitEntity_actor[Startmazes_svRev], PLAYER_COLOR_LIGHT_GRAY) endif set getExp = vec2_distanceTo(Escaper_currentRevivepoint_x, Escaper_currentRevivepoint_y, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y) > 512. set from = dispatch_LinkedList_LinkedList_LinkedList_staticItr(PlayerData_escaperPlayers) loop exitwhen not LLIterator_hasNext(from) set pd_1 = LLIterator_next(from) call dispatch_RegionData_RegionData_RegionData_revealRegion(Entity_getCurrentRegion(this_1), PlayerData_p[pd_1]) if PlayerData_escaper[pd_1] != 0 and Escaper_alive[PlayerData_escaper[pd_1]] then call dispatch_UnitEntity_Entity_UnitEntity_setPos(PlayerData_escaper[pd_1], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) call dispatch_Escaper_Escaper_Escaper_stop(PlayerData_escaper[pd_1]) call unit_abortOrder(UnitEntity_actor[PlayerData_escaper[pd_1]]) if not Escaper_camlock[PlayerData_escaper[pd_1]] then call player_panCameraToTimed_3924(PlayerData_p[pd_1], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0.) endif endif if getExp then call dispatch_PlayerData_PlayerData_PlayerData_addXp(pd_1, 20, false) endif endloop if getExp then call dispatch_PlayerData_PlayerData_PlayerData_addXp(PlayerData_pData[player_getId(Entity_owner[this_1])], 15, false) endif endif endfunction function dispatch_RevivePoint_Revivepoint_RevivePoint_reach takes integer this_1, integer reacher returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling RevivePoint.reach") else call error("Called RevivePoint.reach on invalid object.") endif endif call RevivePoint_reach(this_1, reacher) endfunction function RevivePoint_onReach takes nothing returns nothing local unit source = trigger_getSource(GetTriggeringTrigger()) local unit target = GetTriggerUnit() local integer instanceOfTemp local boolean andLeft if isEscaperPlayer(unit_getOwner(target)) then set instanceOfTemp = Serializable_typeId[unit_getEntity(target)] set andLeft = instanceOfTemp >= 1162 and instanceOfTemp <= 1167 else set andLeft = false endif if andLeft then call dispatch_RevivePoint_Revivepoint_RevivePoint_reach(unit_getEntity(source), unit_getEntity(target)) endif endfunction function StaticBaseObject_isProper takes nothing returns boolean return unit_getFlyHeight(GetTriggerUnit()) < 22. and StaticBaseObject_enabled[unit_getEntity(trigger_getSource(GetTriggeringTrigger()))] endfunction function dispatch_SetupObject_SetupObject_SetupObject_setPos takes integer this_1, real pos_x_1, real pos_y_1, real pos_z returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SetupObject.setPos") else call error("Called SetupObject.setPos on invalid object.") endif endif call SetupObject_setPos(this_1, pos_x_1, pos_y_1, pos_z) endfunction function Teleporter_teleport takes nothing returns nothing local unit source = trigger_getSource(GetTriggeringTrigger()) local unit u_1 = GetTriggerUnit() local integer e_1 = unit_getEntity(u_1) local integer obj_1 = unit_getEntity(source) local real tuple_temp = dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint(obj_1) local real tuple_temp_1 = dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_y local real tuple_temp_2 = dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_z local real rallyPos_x_1 = tuple_temp local real rallyPos_y_1 = tuple_temp_1 local real rallyPos_z_1 = tuple_temp_2 local integer rdata = getRegionData(rallyPos_x_1, rallyPos_y_1, rallyPos_z_1) local integer temp = Teleporter_mode[obj_1] local integer dyn local integer instanceOfTemp local integer instanceOfTemp_1 local integer instanceOfTemp_2 local integer instanceOfTemp_3 local integer instanceOfTemp_4 if temp == 0 then set instanceOfTemp = Serializable_typeId[e_1] if instanceOfTemp >= 1162 and instanceOfTemp <= 1167 then call dispatch_UnitEntity_Entity_UnitEntity_setPos(e_1, rallyPos_x_1, rallyPos_y_1, rallyPos_z_1) call effect_destr(addEffect_1563(Teleporter_EFFECT_STRING, Entity_pos_x[obj_1], Entity_pos_y[obj_1], Entity_pos_z[obj_1])) call effect_destr(addEffect_1563(Teleporter_EFFECT_STRING, rallyPos_x_1, rallyPos_y_1, rallyPos_z_1)) if not Escaper_camlock[e_1] then call player_panCameraToTimed_3924(Entity_owner[e_1], rallyPos_x_1, rallyPos_y_1, rallyPos_z_1, 0.03) endif endif elseif temp == 1 then set instanceOfTemp_1 = Serializable_typeId[e_1] if instanceOfTemp_1 >= 1171 and instanceOfTemp_1 <= 1191 and dispatch_RegionData_RegionData_RegionData_canBuild(rdata, Entity_owner[obj_1]) then set dyn = e_1 call dispatch_SetupObject_SetupObject_SetupObject_setPos(dyn, rallyPos_x_1, rallyPos_y_1, rallyPos_z_1) call effect_destr(addEffect_1563(Teleporter_EFFECT_STRING, Entity_pos_x[obj_1], Entity_pos_y[obj_1], Entity_pos_z[obj_1])) call effect_destr(addEffect_1563(Teleporter_EFFECT_STRING, rallyPos_x_1, rallyPos_y_1, rallyPos_z_1)) endif else set instanceOfTemp_2 = Serializable_typeId[e_1] if instanceOfTemp_2 >= 1171 and instanceOfTemp_2 <= 1191 and dispatch_RegionData_RegionData_RegionData_canBuild(rdata, Entity_owner[obj_1]) then set dyn = e_1 call dispatch_SetupObject_SetupObject_SetupObject_setPos(dyn, rallyPos_x_1, rallyPos_y_1, rallyPos_z_1) call effect_destr(addEffect_1563(Teleporter_EFFECT_STRING, Entity_pos_x[obj_1], Entity_pos_y[obj_1], Entity_pos_z[obj_1])) call effect_destr(addEffect_1563(Teleporter_EFFECT_STRING, rallyPos_x_1, rallyPos_y_1, rallyPos_z_1)) else set instanceOfTemp_3 = Serializable_typeId[e_1] if instanceOfTemp_3 >= 1162 and instanceOfTemp_3 <= 1167 then call unit_setPos_4192(u_1, rallyPos_x_1, rallyPos_y_1) call effect_destr(addEffect_1563(Teleporter_EFFECT_STRING, Entity_pos_x[obj_1], Entity_pos_y[obj_1], Entity_pos_z[obj_1])) call effect_destr(addEffect_1563(Teleporter_EFFECT_STRING, rallyPos_x_1, rallyPos_y_1, rallyPos_z_1)) if not Escaper_camlock[e_1] then call player_panCameraToTimed_3924(Entity_owner[e_1], rallyPos_x_1, rallyPos_y_1, rallyPos_z_1, 0.03) endif endif endif endif set instanceOfTemp_4 = Serializable_typeId[e_1] if instanceOfTemp_4 >= 1162 and instanceOfTemp_4 <= 1167 and isEscaperPlayer(Entity_owner[e_1]) and Entity_owner[obj_1] == GameConstants_STAFF_PLAYER and ( not unit_hasAbility(UnitEntity_actor[obj_1], BuilderConstants_REMOVE_OBJECT_ID)) then call Log_debug("Teleport term") call cyc_RevivePoint_terminate(18, obj_1) endif endfunction function Texter_onStep takes nothing returns nothing local unit u_1 = GetTriggerUnit() local integer e_1 = unit_getEntity(u_1) local integer obj_1 = unit_getEntity(trigger_getSource(GetTriggeringTrigger())) local integer instanceOfTemp = Serializable_typeId[e_1] if instanceOfTemp >= 1162 and instanceOfTemp <= 1167 then call dispatch_Texter_Texter_Texter_show(obj_1) endif endfunction function Trap_onStep takes nothing returns nothing local unit source = trigger_getSource(GetTriggeringTrigger()) local unit u_1 = GetTriggerUnit() local integer e_1 = unit_getEntity(u_1) local integer obj_1 = unit_getEntity(source) local integer escaper local integer instanceOfTemp local boolean andLeft if not Entity_DupletListModule_active[obj_1] then set instanceOfTemp = Serializable_typeId[e_1] set andLeft = instanceOfTemp >= 1162 and instanceOfTemp <= 1167 else set andLeft = false endif if andLeft then call DestroyEffect(AddSpecialEffect(Trap_SFX_STRINGS[Trap_sfxid[obj_1]], unit_getX(UnitEntity_actor[obj_1]), unit_getY(UnitEntity_actor[obj_1]))) set escaper = e_1 call dispatch_Trap_Trap_Trap_doEffect(obj_1, escaper) endif endfunction function Trig_Untitled_Trigger_005_Actions takes nothing returns nothing call MoveRectToLoc(gg_rct_coingamebounds, GetRectCenter(GetPlayableMapRect())) call MoveRectToLoc(gg_rct_spaceygamearea, GetRectCenter(GetPlayableMapRect())) call MoveRectToLoc(gg_rct_spaceygamebounds, GetRectCenter(GetPlayableMapRect())) call MoveRectToLoc(gg_rct_coingamearea, GetRectCenter(GetPlayableMapRect())) call MoveRectToLoc(gg_rct_Region_026, GetRectCenter(GetPlayableMapRect())) call MoveRectToLoc(gg_rct_spaceygamearea, GetRectCenter(GetPlayableMapRect())) call MoveRectToLoc(gg_rct_warlockgamearea, GetRectCenter(GetPlayableMapRect())) call MoveRectToLoc(gg_rct_warlockgamebounds, GetRectCenter(GetPlayableMapRect())) call ShowUnitHide(gg_unit_fnt2_0074) call ShowUnitHide(gg_unit_arca_0050) call ShowUnitHide(gg_unit_revp_0322) call ShowUnitHide(gg_unit_spnr_0129) call ShowUnitHide(gg_unit_revp_0002) call ShowUnitHide(gg_unit_sick_0014) call ShowUnitHide(gg_unit_sick_0013) call ShowUnitHide(gg_unit_dor2_0023) call ShowUnitHide(gg_unit_dor2_0011) call ShowUnitHide(gg_unit_bisk_0018) call ShowUnitHide(gg_unit_sick_0036) call ShowUnitHide(gg_unit_revp_0059) call ShowUnitHide(gg_unit_bisk_0020) call ShowUnitHide(gg_unit_sick_0012) call ShowUnitHide(gg_unit_tele_0061) call ShowUnitHide(gg_unit_revp_0085) call ShowUnitHide(gg_unit_fnt2_0067) call ShowUnitHide(gg_unit_dor2_0087) call ShowUnitHide(gg_unit_dor2_0136) call ShowUnitHide(gg_unit_jump_0151) call ShowUnitHide(gg_unit_jump_0152) call ShowUnitHide(gg_unit_tele_0141) call ShowUnitHide(gg_unit_bsak_0080) call ShowUnitHide(gg_unit_bsak_0104) call ShowUnitHide(gg_unit_bsak_0081) call ShowUnitHide(gg_unit_ssak_0123) call ShowUnitHide(gg_unit_ssak_0125) call ShowUnitHide(gg_unit_ssak_0120) call ShowUnitHide(gg_unit_ssak_0122) call ShowUnitHide(gg_unit_ssak_0121) call ShowUnitHide(gg_unit_bsak_0127) call ShowUnitHide(gg_unit_ssak_0124) call ShowUnitHide(gg_unit_bsak_0128) call ShowUnitHide(gg_unit_knck_0034) call ShowUnitHide(gg_unit_knck_0033) call ShowUnitHide(gg_unit_fnt2_0065) call ShowUnitHide(gg_unit_bsak_0127) call ShowUnitHide(gg_unit_exec_0076) call ShowUnitHide(gg_unit_spnr_0147) call ShowUnitHide(gg_unit_spnr_0130) call ShowUnitHide(gg_unit_spnr_0157) call ShowUnitHide(gg_unit_spnr_0161) call ShowUnitHide(gg_unit_spnr_0162) call ShowUnitHide(gg_unit_sick_0014) call ShowUnitHide(gg_unit_airk_0149) call ShowUnitHide(gg_unit_arca_0050) call ShowUnitHide(gg_unit_sgrk_0153) call ShowUnitHide(gg_unit_sgrk_0153) call ShowUnitHide(gg_unit_tele_0234) call ShowUnitHide(gg_unit_glve_0160) call ShowUnitHide(gg_unit_glve_0159) call ShowUnitHide(gg_unit_glve_0156) call ShowUnitHide(gg_unit_glve_0158) call ShowUnitHide(gg_unit_scik_0222) call ShowUnitHide(gg_unit_wayp_0068) call ShowUnitHide(gg_unit_wayp_0066) call ShowUnitHide(gg_unit_wayp_0099) call ShowUnitHide(gg_unit_wayp_0078) endfunction function UnitRemover_removeUnit takes nothing returns nothing local unit u_1 = GetTriggerUnit() local integer data_1 = unit_getEntity(u_1) local integer sdata = unit_getEntity(trigger_getSource(GetTriggeringTrigger())) local integer instanceOfTemp local integer instanceOfTemp_1 local boolean andLeft if data_1 != 0 and Entity_owner[data_1] == Entity_owner[sdata] and unit_hasAbility(u_1, BuilderConstants_REMOVE_OBJECT_ID) then set instanceOfTemp = Serializable_typeId[data_1] if instanceOfTemp >= 1171 and instanceOfTemp <= 1191 then set instanceOfTemp_1 = Serializable_typeId[data_1] set andLeft = not (instanceOfTemp_1 >= 1216 and instanceOfTemp_1 <= 1220) else set andLeft = false endif if andLeft and ( not (Serializable_typeId[data_1] == 1212)) then call Log_debug("UnitRemover Terminate") call cyc_RevivePoint_terminate(18, data_1) endif endif endfunction function alloc_CallbackSingle_doAfter_Waypoint_Waypoint takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 703 else call error("Out of memory: Could not create CallbackSingle_doAfter_Waypoint_Waypoint.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 703 endif return this_1 endfunction function HashList_isEmpty takes integer this_1 returns boolean return HashList_size[this_1] == 0 endfunction function dispatch_HashList_HashList_HashList_isEmpty takes integer this_1 returns boolean local boolean HashList_HashList_isEmpty_result if HashList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashList.isEmpty") else call error("Called HashList.isEmpty on invalid object.") endif endif set HashList_HashList_isEmpty_result = HashList_isEmpty(this_1) return HashList_HashList_isEmpty_result endfunction function alloc_ForGroupCallback_forUnitsInRange_Waypoint_Waypoint takes nothing returns integer local integer this_1 if ForGroupCallback_firstFree == 0 then if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1 set this_1 = ForGroupCallback_maxIndex set ForGroupCallback_typeId[this_1] = 867 else call error("Out of memory: Could not create ForGroupCallback_forUnitsInRange_Waypoint_Waypoint.") set this_1 = 0 endif else set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1 set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree] set ForGroupCallback_typeId[this_1] = 867 endif return this_1 endfunction function Waypoint_orderLogicMove takes integer this_1 returns nothing local real tuple_temp = vec3_op_plus_4280(dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint(this_1), dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_y, dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_z, 0.001, 0.) local real tuple_temp_1 = vec3_op_plus_return_y_3134 local real tuple_temp_2 = vec3_op_plus_return_z_3136 local real rallyPos_x_1 = tuple_temp local real rallyPos_y_1 = tuple_temp_1 local real rallyPos_z_1 = tuple_temp_2 local real tuple_temp_3 = vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) local real tuple_temp_4 = vec3_toVec2_return_y local real temp_x = tuple_temp_3 local real temp_y = tuple_temp_4 local real temp = Entity_radius[this_1] + 48. local integer clVar = alloc_ForGroupCallback_forUnitsInRange_Waypoint_Waypoint() local real tuple_temp_5 local real tuple_temp_6 local real tuple_temp_7 set this_2961[clVar] = this_1 set tuple_temp_5 = rallyPos_x_1 set tuple_temp_6 = rallyPos_y_1 set tuple_temp_7 = rallyPos_z_1 set rallyPos_x[clVar] = tuple_temp_5 set rallyPos_y[clVar] = tuple_temp_6 set rallyPos_z[clVar] = tuple_temp_7 call forUnitsInRange(temp_x, temp_y, temp, clVar) endfunction function dispatch_Waypoint_Waypoint_Waypoint_orderLogicMove takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Waypoint.orderLogicMove") else call error("Called Waypoint.orderLogicMove on invalid object.") endif endif call Waypoint_orderLogicMove(this_1) endfunction function Waypoint_onEnter takes integer this_1, unit entry returns nothing local integer entity_1 = unit_getEntity(entry) local real tuple_temp = vec3_op_plus_4280(dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint(this_1), dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_y, dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_z, 0.001, 0.) local real tuple_temp_1 = vec3_op_plus_return_y_3134 local real tuple_temp_2 = vec3_op_plus_return_z_3136 local real rallyPos_x_1 = tuple_temp local real rallyPos_y_1 = tuple_temp_1 local real rallyPos_z_1 = tuple_temp_2 local boolean allReady local integer iterator local integer andPartner local integer iterator_1 local integer andPartner_1 local integer clVar local integer instanceOfTemp local integer instanceOfTemp_1 local integer instanceOfTemp_2 local boolean andLeft local real temp local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 if Entity_owner[this_1] == Entity_owner[entity_1] then set instanceOfTemp = Serializable_typeId[entity_1] set andLeft = not (instanceOfTemp >= 1162 and instanceOfTemp <= 1167) else set andLeft = false endif if andLeft and ( not (Serializable_typeId[entity_1] == 1161)) then set instanceOfTemp_1 = Serializable_typeId[entity_1] if instanceOfTemp_1 >= 1171 and instanceOfTemp_1 <= 1191 then if not unit_hasAbility(SetupObject_setup[entity_1], BuilderConstants_REMOVE_OBJECT_ID) then return endif endif if ( not Waypoint_wisps[this_1]) and Serializable_typeId[entity_1] == 1187 then return endif if Waypoint_linked[this_1] != 0 and ( not dispatch_HashList_HashList_HashList_isEmpty(Waypoint_linked[this_1])) then if not Waypoint_ready[this_1] then set Waypoint_ready[this_1] = true set allReady = true set iterator = HashList_iterator(Waypoint_linked[this_1]) loop exitwhen not HLIterator_hasNext(iterator) set andPartner = HLIterator_next(iterator) if not Waypoint_ready[andPartner] then set allReady = false exitwhen true endif endloop call HLIterator_close(iterator) if allReady then set iterator_1 = HashList_iterator(Waypoint_linked[this_1]) loop exitwhen not HLIterator_hasNext(iterator_1) set andPartner_1 = HLIterator_next(iterator_1) call dispatch_Waypoint_Waypoint_Waypoint_orderLogicMove(andPartner_1) set Waypoint_ready[andPartner_1] = false endloop call HLIterator_close(iterator_1) call dispatch_Waypoint_Waypoint_Waypoint_orderLogicMove(this_1) set Waypoint_ready[this_1] = false endif endif elseif dispatch_ConfigValue_ConfigValue_ConfigValue_get(Waypoint_delay[this_1]) < Waypoint_INCREMENT then set instanceOfTemp_2 = Serializable_typeId[entity_1] if instanceOfTemp_2 >= 1171 and instanceOfTemp_2 <= 1191 and SetupObject_setup[entity_1] != UnitEntity_actor[entity_1] then call unit_issuePointOrder(SetupObject_setup[entity_1], "move", vec3_toVec2(rallyPos_x_1, rallyPos_y_1, rallyPos_z_1), vec3_toVec2_return_y) else call unit_issuePointOrder(UnitEntity_actor[entity_1], "move", vec3_toVec2(rallyPos_x_1, rallyPos_y_1, rallyPos_z_1), vec3_toVec2_return_y) endif else set temp = dispatch_ConfigValue_ConfigValue_ConfigValue_get(Waypoint_delay[this_1]) set clVar = alloc_CallbackSingle_doAfter_Waypoint_Waypoint() call construct_CallbackSingle(clVar) set entity[clVar] = entity_1 set tuple_temp_3 = rallyPos_x_1 set tuple_temp_4 = rallyPos_y_1 set tuple_temp_5 = rallyPos_z_1 set rallyPos_x_2587[clVar] = tuple_temp_3 set rallyPos_y_2589[clVar] = tuple_temp_4 set rallyPos_z_2591[clVar] = tuple_temp_5 call doAfter(temp, clVar) endif endif endfunction function dispatch_Waypoint_Waypoint_Waypoint_onEnter takes integer this_1, unit entry returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Waypoint.onEnter") else call error("Called Waypoint.onEnter on invalid object.") endif endif call Waypoint_onEnter(this_1, entry) endfunction function Waypoint_onInRange takes nothing returns nothing local unit source = trigger_getSource(GetTriggeringTrigger()) local integer obj_1 = unit_getEntity(source) call dispatch_Waypoint_Waypoint_Waypoint_onEnter(obj_1, GetTriggerUnit()) endfunction function code__Arcanery_Arcanery takes nothing returns boolean return true endfunction function code__Arcanery_Arcanery_2059 takes nothing returns boolean return true endfunction function code__Condition_Startmaze takes nothing returns boolean return unit_getOwner(GetFilterUnit()) == GameConstants_STAFF_PLAYER endfunction function Executer_canTrigger takes integer this_1, integer e_1 returns boolean local integer instanceOfTemp local integer instanceOfTemp_1 local boolean andLeft local boolean andLeft_1 if Executer_canEscaperTrigger[this_1] then set instanceOfTemp = Serializable_typeId[e_1] set andLeft = instanceOfTemp >= 1162 and instanceOfTemp <= 1167 else set andLeft = false endif if andLeft then return true endif if Executer_canKillerTrigger[this_1] then set instanceOfTemp_1 = Serializable_typeId[e_1] set andLeft_1 = instanceOfTemp_1 >= 1174 and instanceOfTemp_1 <= 1186 else set andLeft_1 = false endif if andLeft_1 then return true endif return false endfunction function dispatch_Executer_Executer_Executer_canTrigger takes integer this_1, integer e_1 returns boolean local boolean Executer_Executer_canTrigger_result if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Executer.canTrigger") else call error("Called Executer.canTrigger on invalid object.") endif endif set Executer_Executer_canTrigger_result = Executer_canTrigger(this_1, e_1) return Executer_Executer_canTrigger_result endfunction function Executer_changeTerrain takes integer this_1, boolean isAction returns nothing local real tuple_temp = dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint(this_1) local real tuple_temp_1 = dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_y local real tuple_temp_2 = dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_z local real rallyPos_x_1 = tuple_temp local real rallyPos_y_1 = tuple_temp_1 local real rallyPos_z_1 = tuple_temp_2 local integer data_1 = getRegionData(rallyPos_x_1, rallyPos_y_1, rallyPos_z_1) local integer tileID local integer temp_tuple_walkableId local integer temp_tuple_unwalkableId local integer tuple_temp_3 local integer tuple_temp_4 if isAction then set tileID = Executer_tiletype[this_1] else set tileID = Executer_nottiletype[this_1] endif if tileID == 808464432 then call dispatch_RegionData_RegionData_RegionData_getTypeSet(data_1) set tuple_temp_3 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_walkableId set temp_tuple_walkableId = tuple_temp_3 set tileID = temp_tuple_walkableId elseif tileID == 808464433 then call dispatch_RegionData_RegionData_RegionData_getTypeSet(data_1) set tuple_temp_4 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId set temp_tuple_unwalkableId = tuple_temp_4 set tileID = temp_tuple_unwalkableId endif call vec2_changeRect(vec3_toVec2(rallyPos_x_1, rallyPos_y_1, rallyPos_z_1), vec3_toVec2_return_y, tileID, Executer_horizontalTileSize[this_1], Executer_verticalTileSize[this_1], Entity_owner[this_1]) endfunction function dispatch_Executer_Executer_Executer_changeTerrain takes integer this_1, boolean isAction returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Executer.changeTerrain") else call error("Called Executer.changeTerrain on invalid object.") endif endif call Executer_changeTerrain(this_1, isAction) endfunction function StaticBaseObject_getRallyUnit takes integer this_1 returns unit return StaticBaseObject_rallyUnit[this_1] endfunction function dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyUnit takes integer this_1 returns unit local unit BaseObject_StaticBaseObject_getRallyUnit_result if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling StaticBaseObject.getRallyUnit") else call error("Called StaticBaseObject.getRallyUnit on invalid object.") endif endif set BaseObject_StaticBaseObject_getRallyUnit_result = StaticBaseObject_getRallyUnit(this_1) return BaseObject_StaticBaseObject_getRallyUnit_result endfunction function Executer_negativeAction takes integer this_1 returns nothing local integer target = unit_getEntity(dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyUnit(this_1)) local integer temp = Executer_actionMode[this_1] local integer door local integer instanceOfTemp local integer instanceOfTemp_1 local integer instanceOfTemp_2 local integer instanceOfTemp_3 local integer instanceOfTemp_4 local integer instanceOfTemp_5 if temp == 2 then if target == 0 then call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019Must select an object with the Executer") endif set instanceOfTemp = Serializable_typeId[target] if instanceOfTemp >= 1193 and instanceOfTemp <= 1210 then call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setEnabled(target, true) else set instanceOfTemp_1 = Serializable_typeId[target] if instanceOfTemp_1 >= 1171 and instanceOfTemp_1 <= 1191 then call dispatch_SetupObject_SetupObject_SetupObject_setEnabled(target, true) elseif Serializable_typeId[target] == 1213 then call dispatch_Door_Door_Door_openDoor(target) else call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019Invalid object selected") endif endif elseif temp == 3 then if target == 0 then call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019Must select an object with the Executer") endif set instanceOfTemp_2 = Serializable_typeId[target] if instanceOfTemp_2 >= 1193 and instanceOfTemp_2 <= 1210 then call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setEnabled(target, not StaticBaseObject_enabled[target]) else set instanceOfTemp_3 = Serializable_typeId[target] if instanceOfTemp_3 >= 1171 and instanceOfTemp_3 <= 1191 then call dispatch_SetupObject_SetupObject_SetupObject_setEnabled(target, not SetupObject_enabled[target]) elseif Serializable_typeId[target] == 1213 then set door = target if Door_opened[door] then call dispatch_Door_Door_Door_closeDoor(door) else call dispatch_Door_Door_Door_openDoor(door) endif else call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019Invalid object selected") endif endif elseif temp == 1 then if target == 0 then call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019Must select an object with the Executer") endif set instanceOfTemp_4 = Serializable_typeId[target] if instanceOfTemp_4 >= 1193 and instanceOfTemp_4 <= 1210 then call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setEnabled(target, false) else set instanceOfTemp_5 = Serializable_typeId[target] if instanceOfTemp_5 >= 1171 and instanceOfTemp_5 <= 1191 then call dispatch_SetupObject_SetupObject_SetupObject_setEnabled(target, false) elseif Serializable_typeId[target] == 1213 then call dispatch_Door_Door_Door_closeDoor(target) else call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019Invalid object selected") endif endif elseif temp == 6 then call dispatch_Executer_Executer_Executer_changeTerrain(this_1, false) else call printTimedToPlayer("Executer has no action set", 15., Entity_owner[this_1]) endif endfunction function dispatch_Executer_Executer_Executer_negativeAction takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Executer.negativeAction") else call error("Called Executer.negativeAction on invalid object.") endif endif call Executer_negativeAction(this_1) endfunction function Executer_onLeave takes integer this_1 returns nothing local integer leftEntity = unit_getEntity(GetLeavingUnit()) if StaticBaseObject_enabled[this_1] and dispatch_Executer_Executer_Executer_canTrigger(this_1, leftEntity) then call dispatch_LinkedList_LinkedList_LinkedList_remove(Executer_entitiesOnPlate[this_1], leftEntity) if dispatch_LinkedList_LinkedList_LinkedList_isEmpty(Executer_entitiesOnPlate[this_1]) and Executer_ON[this_1] then call dispatch_Executer_Executer_Executer_negativeAction(this_1) set Executer_ON[this_1] = false if Executer_dummy[this_1] != null then call SetDestructableAnimation(Executer_dummy[this_1], "stand alternate") endif endif endif endfunction function dispatch_Executer_Executer_Executer_onLeave takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Executer.onLeave") else call error("Called Executer.onLeave on invalid object.") endif endif call Executer_onLeave(this_1) endfunction function region_loadRegionData takes region this_1 returns integer return dispatch_HashMap_HashMap_HashMap_get(EventHelper_regionMap, regionToIndex(this_1)) endfunction function code__Condition_addCondition_Executer_Executer takes nothing returns nothing call dispatch_Executer_Executer_Executer_onLeave(region_loadRegionData(GetTriggeringRegion())) endfunction function StaticBaseObject_getRallyAngle takes integer this_1 returns real local real tuple_temp if StaticBaseObject_rallyUnit[this_1] != null then set tuple_temp = vec3_angleTo2d(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], unit_getPos(StaticBaseObject_rallyUnit[this_1]), unit_getPos_return_y) set StaticBaseObject_rallyAngle_radians[this_1] = tuple_temp endif set StaticBaseObject_getRallyAngle_return_radians = StaticBaseObject_rallyAngle_radians[this_1] return StaticBaseObject_getRallyAngle_return_radians endfunction function dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle takes integer this_1 returns real local real BaseObject_StaticBaseObject_getRallyAngle_result_radians local real tuple_temp if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling StaticBaseObject.getRallyAngle") else call error("Called StaticBaseObject.getRallyAngle on invalid object.") endif endif set tuple_temp = StaticBaseObject_getRallyAngle(this_1) set BaseObject_StaticBaseObject_getRallyAngle_result_radians = tuple_temp set dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle_return_radians = BaseObject_StaticBaseObject_getRallyAngle_result_radians return dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle_return_radians endfunction function construct_BigKiller takes integer this_1, real pos_x_1, real pos_y_1, player owner, real facing_radians returns nothing local integer temp = this_1 local real tuple_temp = vec2_toVec3(pos_x_1, pos_y_1) local real tuple_temp_1 = vec2_toVec3_return_y local real tuple_temp_2 = vec2_toVec3_return_z local real temp_x = tuple_temp local real temp_y = tuple_temp_1 local real temp_z = tuple_temp_2 local player temp_1 = owner local integer temp_tuple_bigKillerId local integer tuple_temp_3 call dispatch_RegionData_RegionData_RegionData_getTypeSet(getRegionData_3302(pos_x_1, pos_y_1)) set tuple_temp_3 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bigKillerId set temp_tuple_bigKillerId = tuple_temp_3 call construct_EscaperSensorSetup(temp, temp_x, temp_y, temp_z, temp_1, temp_tuple_bigKillerId, facing_radians, EscaperKillers_COLL_SIZE_BK, EscaperKillers_COLL_SIZE_BK * 0.75) call BigKiller_init(this_1) endfunction function new_BigKiller takes real pos_x_1, real pos_y_1, player owner, real facing_radians returns integer local integer this_1 = alloc_BigKiller() call construct_BigKiller(this_1, pos_x_1, pos_y_1, owner, facing_radians) return this_1 endfunction function construct_BigRandomKiller takes integer this_1, real pos_x_1, real pos_y_1, player owner, real facing_radians returns nothing call construct_EscaperSensorSetup(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, owner, EscaperKillers_BIG_RANDOM_KILLER_ID, facing_radians, EscaperKillers_COLL_SIZE_BRK, EscaperKillers_COLL_SIZE_BRK) call BigRandomKiller_init(this_1) call dispatch_BigRandomKiller_EscaperKillers_BigRandomKiller_setupRandKiller(this_1) endfunction function new_BigRandomKiller takes real pos_x_1, real pos_y_1, player owner, real facing_radians returns integer local integer this_1 = alloc_BigRandomKiller() call construct_BigRandomKiller(this_1, pos_x_1, pos_y_1, owner, facing_radians) return this_1 endfunction function construct_GlaiveKiller takes integer this_1, real pos_x_1, real pos_y_1, player owner, real facing_radians returns nothing call construct_EscaperSensorSetup(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, owner, EscaperKillers_GLAIVE_KILLER_ID, facing_radians, EscaperKillers_COLL_SIZE_GLAIVE, EscaperKillers_COLL_SIZE_GLAIVE) call GlaiveKiller_init(this_1) endfunction function new_GlaiveKiller takes real pos_x_1, real pos_y_1, player owner, real facing_radians returns integer local integer this_1 = alloc_GlaiveKiller() call construct_GlaiveKiller(this_1, pos_x_1, pos_y_1, owner, facing_radians) return this_1 endfunction function construct_SmallKiller takes integer this_1, real pos_x_1, real pos_y_1, player owner, real facing_radians returns nothing local integer temp = this_1 local real tuple_temp = vec2_toVec3(pos_x_1, pos_y_1) local real tuple_temp_1 = vec2_toVec3_return_y local real tuple_temp_2 = vec2_toVec3_return_z local real temp_x = tuple_temp local real temp_y = tuple_temp_1 local real temp_z = tuple_temp_2 local player temp_1 = owner local integer temp_tuple_smallKillerId local integer tuple_temp_3 call dispatch_RegionData_RegionData_RegionData_getTypeSet(getRegionData_3302(pos_x_1, pos_y_1)) set tuple_temp_3 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_smallKillerId set temp_tuple_smallKillerId = tuple_temp_3 call construct_EscaperSensorSetup(temp, temp_x, temp_y, temp_z, temp_1, temp_tuple_smallKillerId, facing_radians, EscaperKillers_COLL_SIZE_SK, EscaperKillers_COLL_SIZE_SK + 4.) call SmallKiller_init(this_1) endfunction function new_SmallKiller takes real pos_x_1, real pos_y_1, player owner, real facing_radians returns integer local integer this_1 = alloc_SmallKiller() call construct_SmallKiller(this_1, pos_x_1, pos_y_1, owner, facing_radians) return this_1 endfunction function construct_SmallRandomKiller takes integer this_1, real pos_x_1, real pos_y_1, player owner, real facing_radians returns nothing call construct_EscaperSensorSetup(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, owner, EscaperKillers_SMALL_RANDOM_KILLER_ID, facing_radians, EscaperKillers_COLL_SIZE_SRK, EscaperKillers_COLL_SIZE_SRK) call SmallRandomKiller_init(this_1) call dispatch_SmallRandomKiller_EscaperKillers_SmallRandomKiller_setupRandKiller(this_1) endfunction function new_SmallRandomKiller takes real pos_x_1, real pos_y_1, player owner, real facing_radians returns integer local integer this_1 = alloc_SmallRandomKiller() call construct_SmallRandomKiller(this_1, pos_x_1, pos_y_1, owner, facing_radians) return this_1 endfunction function construct_TankKiller takes integer this_1, real pos_x_1, real pos_y_1, player owner, real facing_radians returns nothing call construct_EscaperSensorSetup(this_1, vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z, owner, EscaperKillers_TANK_KILLER_ID, facing_radians, EscaperKillers_COLL_SIZE_TANK, EscaperKillers_COLL_SIZE_TANK) call TankKiller_init(this_1) endfunction function new_TankKiller takes real pos_x_1, real pos_y_1, player owner, real facing_radians returns integer local integer this_1 = alloc_TankKiller() call construct_TankKiller(this_1, pos_x_1, pos_y_1, owner, facing_radians) return this_1 endfunction function Executer_createUnitInternal takes integer this_1 returns nothing local real tuple_temp = vec3_toVec2(dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint(this_1), dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_y, dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_z) local real tuple_temp_1 = vec3_toVec2_return_y local real rallyPos_x_1 = tuple_temp local real rallyPos_y_1 = tuple_temp_1 local integer data_1 = getRegionData_3302(rallyPos_x_1, rallyPos_y_1) local integer temp if dispatch_RegionData_RegionData_RegionData_canBuild(data_1, Entity_owner[this_1]) then set temp = Executer_actionUnit[this_1] if temp == 3 then call new_SmallKiller(rallyPos_x_1, rallyPos_y_1, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1)) elseif temp == 4 then call new_BigKiller(rallyPos_x_1, rallyPos_y_1, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1)) elseif temp == 5 then call new_SmallRandomKiller(rallyPos_x_1, rallyPos_y_1, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1)) elseif temp == 6 then call new_BigRandomKiller(rallyPos_x_1, rallyPos_y_1, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1)) elseif temp == 1 then call new_TankKiller(rallyPos_x_1, rallyPos_y_1, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1)) elseif temp == 2 then call new_GlaiveKiller(rallyPos_x_1, rallyPos_y_1, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1)) elseif temp == 7 then call new_Pointer(rallyPos_x_1, rallyPos_y_1, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1)) elseif temp == 8 then call new_Knockbacker_3704(rallyPos_x_1, rallyPos_y_1, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1)) else call error("Unitcreator - Wrong Unittype") endif else call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019You have no permission to place units in this region!") endif endfunction function dispatch_Executer_Executer_Executer_createUnitInternal takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Executer.createUnitInternal") else call error("Called Executer.createUnitInternal on invalid object.") endif endif call Executer_createUnitInternal(this_1) endfunction function Executer_moveUnit takes integer this_1 returns nothing local real tuple_temp = dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint(this_1) local real tuple_temp_1 = dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_y local real rallyPos_x_1 = tuple_temp local real rallyPos_y_1 = tuple_temp_1 if Executer_moveOrderString[this_1] == "stop" then call IssueImmediateOrder(Executer_unitToMove[this_1], Executer_moveOrderString[this_1]) else call IssuePointOrder(Executer_unitToMove[this_1], Executer_moveOrderString[this_1], rallyPos_x_1, rallyPos_y_1) endif endfunction function dispatch_Executer_Executer_Executer_moveUnit takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Executer.moveUnit") else call error("Called Executer.moveUnit on invalid object.") endif endif call Executer_moveUnit(this_1) endfunction function Executer_findAction takes integer this_1 returns nothing local integer target = unit_getEntity(dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyUnit(this_1)) local integer temp = Executer_actionMode[this_1] local integer door local integer instanceOfTemp local integer instanceOfTemp_1 local integer instanceOfTemp_2 local integer instanceOfTemp_3 local integer instanceOfTemp_4 local integer instanceOfTemp_5 if temp == 0 then call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019Please select an Action Mode for the Executer") elseif temp == 2 then if target == 0 then call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019Must select an object with the Executer") else set instanceOfTemp = Serializable_typeId[target] if instanceOfTemp >= 1193 and instanceOfTemp <= 1210 then call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setEnabled(target, false) else set instanceOfTemp_1 = Serializable_typeId[target] if instanceOfTemp_1 >= 1171 and instanceOfTemp_1 <= 1191 then call dispatch_SetupObject_SetupObject_SetupObject_setEnabled(target, true) elseif Serializable_typeId[target] == 1213 then call dispatch_Door_Door_Door_closeDoor(target) else call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019Invalid object selected") endif endif endif elseif temp == 3 then if target == 0 then call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019Must select an object with the Executer") else set instanceOfTemp_2 = Serializable_typeId[target] if instanceOfTemp_2 >= 1193 and instanceOfTemp_2 <= 1210 then call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setEnabled(target, not StaticBaseObject_enabled[target]) else set instanceOfTemp_3 = Serializable_typeId[target] if instanceOfTemp_3 >= 1171 and instanceOfTemp_3 <= 1191 then call dispatch_SetupObject_SetupObject_SetupObject_setEnabled(target, not SetupObject_enabled[target]) elseif Serializable_typeId[target] == 1213 then set door = target if Door_opened[door] then call dispatch_Door_Door_Door_closeDoor(door) else call dispatch_Door_Door_Door_openDoor(door) endif else call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019Invalid object selected") endif endif endif elseif temp == 1 then if target == 0 then call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019Must select an object with the Executer") else set instanceOfTemp_4 = Serializable_typeId[target] if instanceOfTemp_4 >= 1193 and instanceOfTemp_4 <= 1210 then call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setEnabled(target, true) else set instanceOfTemp_5 = Serializable_typeId[target] if instanceOfTemp_5 >= 1171 and instanceOfTemp_5 <= 1191 then call dispatch_SetupObject_SetupObject_SetupObject_setEnabled(target, true) elseif Serializable_typeId[target] == 1213 then call dispatch_Door_Door_Door_openDoor(target) else call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019Invalid object selected") endif endif endif elseif temp == 6 then call dispatch_Executer_Executer_Executer_changeTerrain(this_1, true) elseif temp == 5 then call dispatch_Executer_Executer_Executer_moveUnit(this_1) elseif temp == 4 then call dispatch_Executer_Executer_Executer_createUnitInternal(this_1) else call printTimedToPlayer("Executer has no action set", 15., Entity_owner[this_1]) endif endfunction function dispatch_Executer_Executer_Executer_findAction takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Executer.findAction") else call error("Called Executer.findAction on invalid object.") endif endif call Executer_findAction(this_1) endfunction function Executer_onEnter takes integer this_1 returns nothing local integer e_1 = unit_getEntity(GetEnteringUnit()) if StaticBaseObject_enabled[this_1] and dispatch_Executer_Executer_Executer_canTrigger(this_1, e_1) then call dispatch_LinkedList_LinkedList_LinkedList_add_1(Executer_entitiesOnPlate[this_1], e_1) if not Executer_ON[this_1] then call dispatch_Executer_Executer_Executer_findAction(this_1) set Executer_ON[this_1] = true if Executer_dummy[this_1] != null then call SetDestructableAnimation(Executer_dummy[this_1], "death") endif endif endif endfunction function dispatch_Executer_Executer_Executer_onEnter takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Executer.onEnter") else call error("Called Executer.onEnter on invalid object.") endif endif call Executer_onEnter(this_1) endfunction function code__Condition_addCondition_Executer_Executer_2062 takes nothing returns nothing call dispatch_Executer_Executer_Executer_onEnter(region_loadRegionData(GetTriggeringRegion())) endfunction function item_isVisible takes item this_1 returns boolean return IsItemVisible(this_1) endfunction function code__EnumItemsInRect_TerrainUtils takes nothing returns nothing if item_isVisible(GetEnumItem()) then set TerrainUtils_hiddenItems[TerrainUtils_hiddenItemsCount] = GetEnumItem() call item_setVisible(TerrainUtils_hiddenItems[TerrainUtils_hiddenItemsCount], false) set TerrainUtils_hiddenItemsCount = TerrainUtils_hiddenItemsCount + 1 endif endfunction function Executer_disable takes integer this_1 returns nothing call unit_setVertexColor(UnitEntity_actor[this_1], 44, 44, 44, 255) set Executer_disabled[this_1] = true call unit_addAbility(UnitEntity_actor[this_1], Executer_REACTIVATE_ABIL) call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., 0.05, "Deactivated", 10., 2., 50, 50, 50, 0, Entity_owner[this_1]) endfunction function dispatch_Executer_Executer_Executer_disable takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Executer.disable") else call error("Called Executer.disable on invalid object.") endif endif call Executer_disable(this_1) endfunction function Executer_onEvent takes integer this_1 returns nothing local integer entity_1 = unit_getEntity(GetTriggerUnit()) local integer temp if dispatch_Executer_Executer_Executer_canTrigger(this_1, entity_1) then set temp = Executer_eventMode[this_1] if temp == 0 then call DisplayTextToPlayer(Entity_owner[this_1], 0., 0., "|cffC51019Please select an Event Mode for the Executer") elseif temp == 1 then call dispatch_Executer_Executer_Executer_findAction(this_1) elseif temp == 2 then if not Executer_disabled[this_1] then call flashEffect(Abilities_charmTarget, dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z) call dispatch_Executer_Executer_Executer_findAction(this_1) call dispatch_Executer_Executer_Executer_disable(this_1) endif elseif temp == 3 then if Executer_ON[this_1] then call dispatch_Executer_Executer_Executer_negativeAction(this_1) set Executer_ON[this_1] = false if Executer_dummy[this_1] != null then call SetDestructableAnimation(Executer_dummy[this_1], "death") endif else call dispatch_Executer_Executer_Executer_findAction(this_1) set Executer_ON[this_1] = true if Executer_dummy[this_1] != null then call SetDestructableAnimation(Executer_dummy[this_1], "stand") endif endif endif endif endfunction function dispatch_Executer_Executer_Executer_onEvent takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Executer.onEvent") else call error("Called Executer.onEvent on invalid object.") endif endif call Executer_onEvent(this_1) endfunction function code__Executer_Executer takes nothing returns nothing call dispatch_Executer_Executer_Executer_onEvent(unit_getEntity(trigger_getSource(GetTriggeringTrigger()))) endfunction function code__Executer_Executer_2065 takes nothing returns nothing call dispatch_Executer_Executer_Executer_onEvent(unit_getEntity(trigger_getSource(GetTriggeringTrigger()))) endfunction function currentCallback takes nothing returns integer return ClosureForGroups_tempCallbacks[ClosureForGroups_tempCallbacksCount - 1] endfunction function filterCallback takes unit filter returns nothing if ClosureForGroups_iterCount < ClosureForGroups_maxCount then call dispatch_ForGroupCallback_ClosureForGroups_ForGroupCallback_callback(currentCallback(), filter) endif set ClosureForGroups_iterCount = ClosureForGroups_iterCount + 1 endfunction function code__Filter_ClosureForGroups takes nothing returns nothing call filterCallback(GetFilterUnit()) endfunction function code__Filter_GroupEnumUnitsInRect_MGRandKill_MGRandKill takes nothing returns boolean return unit_getOwner(GetFilterUnit()) == GameConstants_STAFF_PLAYER endfunction function code__Filter_GroupEnumUnitsInRect_Startmaze_Startmaze takes nothing returns boolean return unit_getOwner(GetFilterUnit()) == GameConstants_STAFF_PLAYER endfunction function popUnit takes nothing returns nothing set OnUnitEnterLeave_tempUnitsCount = OnUnitEnterLeave_tempUnitsCount - 1 endfunction function pushUnit takes unit u_1 returns nothing set OnUnitEnterLeave_tempUnits[OnUnitEnterLeave_tempUnitsCount] = u_1 set OnUnitEnterLeave_tempUnitsCount = OnUnitEnterLeave_tempUnitsCount + 1 endfunction function trigger_evaluate takes trigger this_1 returns boolean return TriggerEvaluate(this_1) endfunction function unit_makeAbilityPermanent takes unit this_1, integer abil, boolean flag returns boolean return UnitMakeAbilityPermanent(this_1, flag, abil) endfunction function prepareUnit takes unit u_1 returns nothing local unit receiver = u_1 local unit receiver_1 call unit_addAbility(receiver, OnUnitEnterLeave_ABILITY_ID) set receiver_1 = receiver call unit_makeAbilityPermanent(receiver_1, OnUnitEnterLeave_ABILITY_ID, true) call pushUnit(u_1) call trigger_evaluate(OnUnitEnterLeave_eventTrigger) call popUnit() endfunction function code__Filter_registerEnterRegion_nullTimer_OnUnitEnterLeave takes nothing returns nothing call prepareUnit(GetFilterUnit()) endfunction function code__ForGroup_nullTimer_OnUnitEnterLeave takes nothing returns nothing call prepareUnit(GetEnumUnit()) endfunction function real_abs takes real this_1 returns real local real cond_result if this_1 < 0. then set cond_result = - this_1 else set cond_result = this_1 endif return cond_result endfunction function StaticEscaperSensorSetup_onSensor takes integer this_1 returns nothing local integer target = unit_getEntity(GetTriggerUnit()) local integer instanceOfTemp = Serializable_typeId[target] local real zdelta local real temp_tuple_z local integer escaper local real tuple_temp if instanceOfTemp >= 1162 and instanceOfTemp <= 1167 then call dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1) set tuple_temp = dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z set temp_tuple_z = tuple_temp set zdelta = temp_tuple_z - Entity_pos_z[target] if real_abs(zdelta) <= StaticEscaperSensorSetup_sensorHeight[this_1] then set escaper = target call dispatch_Escaper_Escaper_Escaper_kill(escaper, this_1) endif endif endfunction function dispatch_StaticEscaperSensorSetup_EscaperSensor_StaticEscaperSensorSetup_onSensor takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling StaticEscaperSensorSetup.onSensor") else call error("Called StaticEscaperSensorSetup.onSensor on invalid object.") endif endif call StaticEscaperSensorSetup_onSensor(this_1) endfunction function StaticEscaperSensorSetup_onSensorEvent takes nothing returns nothing local integer obj_1 = unit_getEntity(trigger_getSource(GetTriggeringTrigger())) call dispatch_StaticEscaperSensorSetup_EscaperSensor_StaticEscaperSensorSetup_onSensor(obj_1) endfunction function code__StaticEscaperSensorSetup_EscaperSensor takes nothing returns nothing call StaticEscaperSensorSetup_onSensorEvent() endfunction function code__StaticEscaperSensorSetup_EscaperSensor_2072 takes nothing returns nothing call StaticEscaperSensorSetup_onSensorEvent() endfunction function code__Waypoint_Waypoint takes nothing returns boolean return unit_getFlyHeight(GetTriggerUnit()) < 64. and StaticBaseObject_enabled[unit_getEntity(trigger_getSource(GetTriggeringTrigger()))] endfunction function code__Waypoint_Waypoint_2074 takes nothing returns boolean return true endfunction function multiboard_isDisplayed takes multiboard this_1 returns boolean return IsMultiboardDisplayed(this_1) endfunction function startDebug takes nothing returns nothing call timer_startPeriodic(CreateTimer(), 1., ref_function_code__startPeriodic_DebugInfo) endfunction function code__addAction_DebugInfo takes nothing returns nothing if DebugInfo_isFirst then set DebugInfo_isFirst = false call startDebug() endif if GetLocalPlayer() == GetTriggerPlayer() then call multiboard_display(DebugInfo_mb, not multiboard_isDisplayed(DebugInfo_mb)) endif endfunction function print takes string msg returns nothing call DisplayTimedTextToPlayer(Player_localPlayer, 0., 0., Printing_DEBUG_MSG_DURATION, msg) endfunction function code__addAction_RegionData takes nothing returns nothing local integer entity_1 = unit_getEntity(GetTriggerUnit()) local integer instanceOfTemp = Serializable_typeId[entity_1] if instanceOfTemp >= 1162 and instanceOfTemp <= 1167 then call dispatch_Escaper_Escaper_Escaper_stop(entity_1) call dispatch_Escaper_Escaper_Escaper_kill(entity_1, 0) elseif entity_1 != 0 and unit_getTypeId(GetTriggerUnit()) != DummyRecycler_DUMMY_UNIT_ID then call print(unit_getName(UnitEntity_actor[entity_1])) call Log_debug("RegionDataDelete") call cyc_RevivePoint_terminate(18, entity_1) endif endfunction function rectToIndex takes rect object returns integer return handle_getTCHandleId(object) endfunction function hashtable_loadRectHandle takes hashtable this_1, integer parentKey, integer childKey returns rect return LoadRectHandle(this_1, parentKey, childKey) endfunction function Table_loadRect takes integer this_1, integer parentKey returns rect return hashtable_loadRectHandle(Table_ht, this_1, parentKey) endfunction function dispatch_Table_Table_Table_loadRect takes integer this_1, integer parentKey returns rect local rect Table_Table_loadRect_result if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Table.loadRect") else call error("Called Table.loadRect on invalid object.") endif endif set Table_Table_loadRect_result = Table_loadRect(this_1, parentKey) return Table_Table_loadRect_result endfunction function rectFromIndex takes integer index returns rect call dispatch_Table_Table_Table_saveFogState(TypeCasting_typecastdata, 0, ConvertFogState(index)) return dispatch_Table_Table_Table_loadRect(TypeCasting_typecastdata, 0) endfunction function trigger_getSourceRect takes trigger this_1 returns rect return rectFromIndex(dispatch_HashMap_HashMap_HashMap_get(EventHelper_rectMap, triggerToIndex(this_1))) endfunction function RegionData_enterRect takes nothing returns nothing local unit u_1 = GetTriggerUnit() local integer data_1 = unit_getEntity(u_1) local integer rdata = dispatch_HashMap_HashMap_HashMap_get(RegionData_regionMap, rectToIndex(trigger_getSourceRect(GetTriggeringTrigger()))) local integer edata local integer instanceOfTemp if data_1 != 0 then set instanceOfTemp = Serializable_typeId[data_1] if instanceOfTemp >= 1162 and instanceOfTemp <= 1167 then set edata = data_1 if dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata) == RegionType_getTypeSet(0) and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_walkableId == RegionType_getTypeSet_return_walkableId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId == RegionType_getTypeSet_return_unwalkableId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_smallKillerId == RegionType_getTypeSet_return_smallKillerId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bigKillerId == RegionType_getTypeSet_return_bigKillerId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_treeId == RegionType_getTypeSet_return_treeId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_smallObstacleId == RegionType_getTypeSet_return_smallObstacleId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bigObstacleId == RegionType_getTypeSet_return_bigObstacleId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_bossId == RegionType_getTypeSet_return_bossId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_minionId == RegionType_getTypeSet_return_minionId and dispatch_RegionData_RegionData_RegionData_getTypeSet_return_highObstacleId == RegionType_getTypeSet_return_highObstacleId then call dispatch_UnitEntity_Entity_UnitEntity_setPos(edata, vec3_op_minus(dispatch_UnitEntity_Entity_UnitEntity_getPos(edata), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, dispatch_Escaper_Escaper_Escaper_getRealVel(edata), dispatch_Escaper_Escaper_Escaper_getRealVel_return_y, dispatch_Escaper_Escaper_Escaper_getRealVel_return_z), vec3_op_minus_return_y, vec3_op_minus_return_z) call dispatch_Escaper_Escaper_Escaper_stop(edata) call dispatch_Escaper_Escaper_Escaper_kill(edata, 0) call Entity_setCurrentRegion(edata) elseif isEscaperPlayer(Entity_owner[data_1]) then call dispatch_RegionData_RegionData_RegionData_revealRegion(rdata, Entity_owner[data_1]) call dispatch_Escaper_Escaper_Escaper_updateRegionData(edata) endif elseif ( not dispatch_RegionData_RegionData_RegionData_canBuild(rdata, Entity_owner[data_1])) and ( not (Serializable_typeId[data_1] == 1161)) and ( not (Serializable_typeId[data_1] == 1169)) and ( not (Serializable_typeId[data_1] == 1192)) and ( not (Serializable_typeId[data_1] == 1226)) and ( not (Serializable_typeId[data_1] == 1222)) and ( not (Serializable_typeId[data_1] == 1208)) then call printTimedToPlayer("|cffC51019You have no permission to move units into this region", 15., Entity_owner[data_1]) call Log_debug("no permission") if data_1 == 0 then call unit_kill(u_1) else call cyc_RevivePoint_terminate(18, data_1) endif endif endif endfunction function code__addAction_RegionData_RegionData takes nothing returns nothing call RegionData_enterRect() endfunction function EscaperSensorSetup_onSensor takes integer this_1, integer source, integer target returns nothing local integer instanceOfTemp = Serializable_typeId[target] local real zdelta local real temp_tuple_z local integer escaper local real tuple_temp if instanceOfTemp >= 1162 and instanceOfTemp <= 1167 then call dispatch_UnitEntity_Entity_UnitEntity_getPos(source) set tuple_temp = dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z set temp_tuple_z = tuple_temp set zdelta = temp_tuple_z - Entity_pos_z[target] if real_abs(zdelta) <= EscaperSensorSetup_sensorHeight[this_1] then set escaper = target call dispatch_Escaper_Escaper_Escaper_kill(escaper, this_1) endif endif endfunction function Knockbacker_onSensor takes integer this_1, integer source, integer target returns nothing local integer instanceOfTemp = Serializable_typeId[target] local integer escaper local real epos_x local real epos_y local real epos_z local real epos2_x local real epos2_y local real epos2_z local real ang_radians local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 if instanceOfTemp >= 1162 and instanceOfTemp <= 1167 then if Entity_pos_z[target] <= EscaperSensorSetup_sensorHeight[this_1] then set escaper = target set tuple_temp = vec3_op_minus(dispatch_UnitEntity_Entity_UnitEntity_getPos(escaper), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, dispatch_Escaper_Escaper_Escaper_getRealVel(escaper), dispatch_Escaper_Escaper_Escaper_getRealVel_return_y, dispatch_Escaper_Escaper_Escaper_getRealVel_return_z) set tuple_temp_1 = vec3_op_minus_return_y set tuple_temp_2 = vec3_op_minus_return_z set epos_x = tuple_temp set epos_y = tuple_temp_1 set epos_z = tuple_temp_2 set tuple_temp_3 = vec3_op_plus(dispatch_UnitEntity_Entity_UnitEntity_getPos(escaper), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, dispatch_Escaper_Escaper_Escaper_getRealVel(escaper), dispatch_Escaper_Escaper_Escaper_getRealVel_return_y, dispatch_Escaper_Escaper_Escaper_getRealVel_return_z) set tuple_temp_4 = vec3_op_plus_return_y set tuple_temp_5 = vec3_op_plus_return_z set epos2_x = tuple_temp_3 set epos2_y = tuple_temp_4 set epos2_z = tuple_temp_5 set tuple_temp_6 = vec3_angleTo2d_4259(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], vec3_op_mult(vec3_op_plus(epos_x, epos_y, epos_z, epos2_x, epos2_y, epos2_z), vec3_op_plus_return_y, vec3_op_plus_return_z, 0.5), vec3_op_mult_return_y, vec3_op_mult_return_z) set ang_radians = tuple_temp_6 call dispatch_Entity_Entity_Entity_addVel(escaper, vec2_toVec3(angle_toVec(ang_radians, dispatch_ConfigValue_ConfigValue_ConfigValue_get(Knockbacker_kforce[this_1])), angle_toVec_return_y), vec2_toVec3_return_y, vec2_toVec3_return_z) call unit_damageTarget_4133(UnitEntity_actor[this_1], UnitEntity_actor[escaper], dispatch_ConfigValue_ConfigValue_ConfigValue_get(Knockbacker_damage[this_1])) call unit_setAnimation(UnitEntity_actor[this_1], "attack") call unit_setAnimation(SetupObject_setup[this_1], "attack") call effect_destr(addEffect_1563(Abilities_warStompCaster, Entity_pos_x[escaper], Entity_pos_y[escaper], Entity_pos_z[escaper])) endif endif endfunction function Pointer_onSensor takes integer this_1, integer source, integer target returns nothing local integer edata = target local integer data_1 = source local integer instanceOfTemp = Serializable_typeId[edata] local integer es local real tuple_temp if instanceOfTemp >= 1162 and instanceOfTemp <= 1167 then set es = edata if not Entity_DupletListModule_active[data_1] then set tuple_temp = unit_getFacingAngle(UnitEntity_actor[data_1]) set Pointer_angl_radians[data_1] = tuple_temp endif call unit_setFacing(UnitEntity_actor[es], Pointer_angl_radians[data_1]) endif endfunction function dispatch_EscaperSensorSetup_EscaperSensor_EscaperSensorSetup_onSensor takes integer this_1, integer source, integer target returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling EscaperSensorSetup.onSensor") else call error("Called EscaperSensorSetup.onSensor on invalid object.") endif endif if Serializable_typeId[this_1] <= 1182 then if Serializable_typeId[this_1] <= 1181 then if Serializable_typeId[this_1] <= 1180 then call EscaperSensorSetup_onSensor(this_1, source, target) else call Knockbacker_onSensor(this_1, source, target) endif else call EscaperSensorSetup_onSensor(this_1, source, target) endif elseif Serializable_typeId[this_1] <= 1183 then call Pointer_onSensor(this_1, source, target) else call EscaperSensorSetup_onSensor(this_1, source, target) endif endfunction function onSensor_addSensorListener_EscaperSensorSetup_EscaperSensor takes integer this_1, integer source, integer target returns nothing call dispatch_EscaperSensorSetup_EscaperSensor_EscaperSensorSetup_onSensor(this_2977[this_1], source, target) endfunction function onSensor_addSensorListener_EscaperSensorSetup_EscaperSensor_3894 takes integer this_1, integer source, integer target returns nothing call dispatch_EscaperSensorSetup_EscaperSensor_EscaperSensorSetup_onSensor(this_2978[this_1], source, target) endfunction function onSensor_addSensorListener_EscaperSensorSetup_EscaperSensor_3895 takes integer this_1, integer source, integer target returns nothing call dispatch_EscaperSensorSetup_EscaperSensor_EscaperSensorSetup_onSensor(this_2979[this_1], source, target) endfunction function onSensor_addSensorListener_EscaperSensorSetup_EscaperSensor_3896 takes integer this_1, integer source, integer target returns nothing call dispatch_EscaperSensorSetup_EscaperSensor_EscaperSensorSetup_onSensor(this_2980[this_1], source, target) endfunction function player_panCameraToTimed takes player this_1, real pos_x_1, real pos_y_1, real duration returns nothing call PanCameraToTimedForPlayer(this_1, pos_x_1, pos_y_1, duration) endfunction function onSensor_addSensorListener_Portal_EscaperClasses takes integer this_1, integer w_source, integer target returns nothing local boolean teleport local integer i local integer ie local integer instanceOfTemp local boolean andLeft if Portal_destiny_x[this_2938[this_1]] != Vectors_ZERO2_x or Portal_destiny_y[this_2938[this_1]] != Vectors_ZERO2_y then set instanceOfTemp = Serializable_typeId[target] set andLeft = instanceOfTemp >= 1162 and instanceOfTemp <= 1167 else set andLeft = false endif if andLeft then set teleport = true set i = 0 loop exitwhen i > 5 set ie = item_getEntity(UnitItemInSlot(UnitEntity_actor[target], i)) if ie != 0 and Serializable_typeId[ie] == 1156 then set teleport = false exitwhen true endif set i = i + 1 endloop if teleport then call dispatch_UnitEntity_Entity_UnitEntity_setPos(target, vec2_withZ(Portal_destiny_x[this_2938[this_1]], Portal_destiny_y[this_2938[this_1]], Entity_pos_z[target]), vec2_withZ_return_y, vec2_withZ_return_z) call flashEffect(Abilities_blinkCaster, Entity_pos_x[this_2938[this_1]], Entity_pos_y[this_2938[this_1]], Entity_pos_z[this_2938[this_1]]) call flashEffect_3280(Abilities_blinkTarget, Portal_destiny_x[this_2938[this_1]], Portal_destiny_y[this_2938[this_1]]) if not Escaper_camlock[target] then call player_panCameraToTimed(unit_getOwner(UnitEntity_actor[target]), Portal_destiny_x[this_2938[this_1]], Portal_destiny_y[this_2938[this_1]], 0.03) endif endif endif endfunction function dispatch_SensorListener_Sensor_SensorListener_onSensor takes integer this_1, integer source, integer target returns nothing if SensorListener_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SensorListener.onSensor") else call error("Called SensorListener.onSensor on invalid object.") endif endif if SensorListener_typeId[this_1] <= 1121 then if SensorListener_typeId[this_1] <= 1120 then if SensorListener_typeId[this_1] <= 1119 then call onSensor_addSensorListener_EscaperSensorSetup_EscaperSensor(this_1, source, target) else call onSensor_addSensorListener_EscaperSensorSetup_EscaperSensor_3894(this_1, source, target) endif else call onSensor_addSensorListener_EscaperSensorSetup_EscaperSensor_3895(this_1, source, target) endif elseif SensorListener_typeId[this_1] <= 1122 then call onSensor_addSensorListener_EscaperSensorSetup_EscaperSensor_3896(this_1, source, target) else call onSensor_addSensorListener_Portal_EscaperClasses(this_1, source, target) endif endfunction function code__addAction_Sensor_EscaperSensorSetup_EscaperSensor takes nothing returns nothing local trigger trig = GetTriggeringTrigger() local unit u_1 = GetTriggerUnit() local integer target local integer slistener if unit_getUserData(u_1) > 0 then set target = unit_getEntity(u_1) if target != 0 and ( not Entity_done[target]) then set slistener = dispatch_HashMap_HashMap_HashMap_get(EscaperSensorSetup_Sensor_sensorListeners, triggerToIndex(trig)) if slistener != 0 then call dispatch_SensorListener_Sensor_SensorListener_onSensor(slistener, unit_getEntity(trigger_getSource(trig)), target) endif endif endif endfunction function code__addAction_Sensor_Portal_EscaperClasses takes nothing returns nothing local trigger trig = GetTriggeringTrigger() local unit u_1 = GetTriggerUnit() local integer target local integer slistener if unit_getUserData(u_1) > 0 then set target = unit_getEntity(u_1) if target != 0 and ( not Entity_done[target]) then set slistener = dispatch_HashMap_HashMap_HashMap_get(Portal_Sensor_sensorListeners, triggerToIndex(trig)) if slistener != 0 then call dispatch_SensorListener_Sensor_SensorListener_onSensor(slistener, unit_getEntity(trigger_getSource(trig)), target) endif endif endif endfunction function ChunkedString_hasChunk takes integer this_1 returns boolean return ChunkedString_readIndex[this_1] < ChunkedString_chunkCount[this_1] endfunction function dispatch_ChunkedString_ChunkedString_ChunkedString_hasChunk takes integer this_1 returns boolean local boolean ChunkedString_ChunkedString_hasChunk_result if ChunkedString_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling ChunkedString.hasChunk") else call error("Called ChunkedString.hasChunk on invalid object.") endif endif set ChunkedString_ChunkedString_hasChunk_result = ChunkedString_hasChunk(this_1) return ChunkedString_ChunkedString_hasChunk_result endfunction function ChunkedString_getChunk takes integer this_1, integer index returns string if index == ChunkedString_chunkCount[this_1] then return ChunkedString_buffer[this_1] endif return dispatch_Table_Table_Table_loadString(ChunkedString_table[this_1], index) endfunction function dispatch_ChunkedString_ChunkedString_ChunkedString_getChunk takes integer this_1, integer index returns string local string ChunkedString_ChunkedString_getChunk_result if ChunkedString_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling ChunkedString.getChunk") else call error("Called ChunkedString.getChunk on invalid object.") endif endif set ChunkedString_ChunkedString_getChunk_result = ChunkedString_getChunk(this_1, index) return ChunkedString_ChunkedString_getChunk_result endfunction function ChunkedString_readChunk takes integer this_1 returns string set ChunkedString_readIndex[this_1] = ChunkedString_readIndex[this_1] + 1 return dispatch_ChunkedString_ChunkedString_ChunkedString_getChunk(this_1, ChunkedString_readIndex[this_1]) endfunction function dispatch_ChunkedString_ChunkedString_ChunkedString_readChunk takes integer this_1 returns string local string ChunkedString_ChunkedString_readChunk_result if ChunkedString_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling ChunkedString.readChunk") else call error("Called ChunkedString.readChunk on invalid object.") endif endif set ChunkedString_ChunkedString_readChunk_result = ChunkedString_readChunk(this_1) return ChunkedString_ChunkedString_readChunk_result endfunction function LinkedList_getFirst takes integer this_1 returns integer return LLEntry_elem[LLEntry_next[LinkedList_dummy[this_1]]] endfunction function dispatch_LinkedList_LinkedList_LinkedList_getFirst takes integer this_1 returns integer local integer LinkedList_LinkedList_getFirst_result if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.getFirst") else call error("Called LinkedList.getFirst on invalid object.") endif endif set LinkedList_LinkedList_getFirst_result = LinkedList_getFirst(this_1) return LinkedList_LinkedList_getFirst_result endfunction function checkQueue takes nothing returns nothing local integer syncData local string data_1 local boolean hasChunk if not dispatch_LinkedList_LinkedList_LinkedList_isEmpty(SyncSimple_syncQueue) then set syncData = dispatch_LinkedList_LinkedList_LinkedList_getFirst(SyncSimple_syncQueue) if SyncData_data[syncData] != null then if Player_localPlayer == SyncData_syncer[syncData] then call BlzSendSyncData(SyncSimple_DEFAULT_PREFIX, SyncData_data[syncData]) endif else set data_1 = dispatch_ChunkedString_ChunkedString_ChunkedString_readChunk(SyncData_buffer[syncData]) set hasChunk = dispatch_ChunkedString_ChunkedString_ChunkedString_hasChunk(SyncData_buffer[syncData]) if Player_localPlayer == SyncData_syncer[syncData] then if hasChunk then call BlzSendSyncData(SyncSimple_DEFAULT_PREFIX, data_1) else call BlzSendSyncData(SyncSimple_LAST_CHUNK_PREFIX, data_1) endif endif endif endif endfunction function ChunkedString_getChunkCount takes integer this_1 returns integer return ChunkedString_chunkCount[this_1] + 1 endfunction function dispatch_ChunkedString_ChunkedString_ChunkedString_getChunkCount takes integer this_1 returns integer local integer ChunkedString_ChunkedString_getChunkCount_result if ChunkedString_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling ChunkedString.getChunkCount") else call error("Called ChunkedString.getChunkCount on invalid object.") endif endif set ChunkedString_ChunkedString_getChunkCount_result = ChunkedString_getChunkCount(this_1) return ChunkedString_ChunkedString_getChunkCount_result endfunction function ChunkedString_length takes integer this_1 returns integer local integer len local integer i local integer temp if String_ENABLE_MULTIBYTE_SUPPORT then set len = 0 set i = 0 set temp = dispatch_ChunkedString_ChunkedString_ChunkedString_getChunkCount(this_1) - 1 loop exitwhen i > temp set len = len + string_length(dispatch_ChunkedString_ChunkedString_ChunkedString_getChunk(this_1, i)) set i = i + 1 endloop return len else return ChunkedString_chunkCount[this_1] * ChunkedString_chunkSize[this_1] + string_length(ChunkedString_buffer[this_1]) endif endfunction function dispatch_ChunkedString_ChunkedString_ChunkedString_length takes integer this_1 returns integer local integer ChunkedString_ChunkedString_length_result if ChunkedString_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling ChunkedString.length") else call error("Called ChunkedString.length on invalid object.") endif endif set ChunkedString_ChunkedString_length_result = ChunkedString_length(this_1) return ChunkedString_ChunkedString_length_result endfunction function ChunkedString_resetRead takes integer this_1 returns nothing set ChunkedString_readIndex[this_1] = -1 endfunction function dispatch_ChunkedString_ChunkedString_ChunkedString_resetRead takes integer this_1 returns nothing if ChunkedString_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling ChunkedString.resetRead") else call error("Called ChunkedString.resetRead on invalid object.") endif endif call ChunkedString_resetRead(this_1) endfunction function alloc_PayloadCallback_decompress_loadData_nullTimer_MemoryAccessPedestal_Pedestal takes nothing returns integer local integer this_1 if PayloadCallback_firstFree == 0 then if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1 set this_1 = PayloadCallback_maxIndex set PayloadCallback_typeId[this_1] = 1037 else call error("Out of memory: Could not create PayloadCallback_decompress_loadData_nullTimer_MemoryAccessPedestal_Pedestal.") set this_1 = 0 endif else set PayloadCallback_firstFree = PayloadCallback_firstFree - 1 set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree] set PayloadCallback_typeId[this_1] = 1037 endif return this_1 endfunction function PayloadCallback_init takes integer this_1 returns nothing set PayloadCallback_customData[this_1] = 0 endfunction function construct_PayloadCallback takes integer this_1 returns nothing call PayloadCallback_init(this_1) endfunction function alloc_PayloadCallback_decodePositions_LZW takes nothing returns integer local integer this_1 if PayloadCallback_firstFree == 0 then if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1 set this_1 = PayloadCallback_maxIndex set PayloadCallback_typeId[this_1] = 1036 else call error("Out of memory: Could not create PayloadCallback_decodePositions_LZW.") set this_1 = 0 endif else set PayloadCallback_firstFree = PayloadCallback_firstFree - 1 set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree] set PayloadCallback_typeId[this_1] = 1036 endif return this_1 endfunction function alloc_PayloadCallback_load_LZW takes nothing returns integer local integer this_1 if PayloadCallback_firstFree == 0 then if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1 set this_1 = PayloadCallback_maxIndex set PayloadCallback_typeId[this_1] = 1043 else call error("Out of memory: Could not create PayloadCallback_load_LZW.") set this_1 = 0 endif else set PayloadCallback_firstFree = PayloadCallback_firstFree - 1 set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree] set PayloadCallback_typeId[this_1] = 1043 endif return this_1 endfunction function BigString_substrings_get takes integer index1, integer index2 returns string local string returnVal if index2 < 0 or index2 >= 25 then call error("Index out of Bounds") elseif index2 <= 12 then if index2 <= 6 then if index2 <= 3 then if index2 <= 1 then if index2 <= 0 then set returnVal = BigString_substrings_0[index1] else set returnVal = BigString_substrings_1[index1] endif elseif index2 <= 2 then set returnVal = BigString_substrings_2[index1] else set returnVal = BigString_substrings_3[index1] endif elseif index2 <= 5 then if index2 <= 4 then set returnVal = BigString_substrings_4[index1] else set returnVal = BigString_substrings_5[index1] endif else set returnVal = BigString_substrings_6[index1] endif elseif index2 <= 9 then if index2 <= 8 then if index2 <= 7 then set returnVal = BigString_substrings_7[index1] else set returnVal = BigString_substrings_8[index1] endif else set returnVal = BigString_substrings_9[index1] endif elseif index2 <= 11 then if index2 <= 10 then set returnVal = BigString_substrings_10[index1] else set returnVal = BigString_substrings_11[index1] endif else set returnVal = BigString_substrings_12[index1] endif elseif index2 <= 18 then if index2 <= 15 then if index2 <= 14 then if index2 <= 13 then set returnVal = BigString_substrings_13[index1] else set returnVal = BigString_substrings_14[index1] endif else set returnVal = BigString_substrings_15[index1] endif elseif index2 <= 17 then if index2 <= 16 then set returnVal = BigString_substrings_16[index1] else set returnVal = BigString_substrings_17[index1] endif else set returnVal = BigString_substrings_18[index1] endif elseif index2 <= 21 then if index2 <= 20 then if index2 <= 19 then set returnVal = BigString_substrings_19[index1] else set returnVal = BigString_substrings_20[index1] endif else set returnVal = BigString_substrings_21[index1] endif elseif index2 <= 23 then if index2 <= 22 then set returnVal = BigString_substrings_22[index1] else set returnVal = BigString_substrings_23[index1] endif else set returnVal = BigString_substrings_24[index1] endif return returnVal endfunction function BigString_getLength takes integer this_1 returns integer return BigString_length[this_1] - BigString_startoffset[this_1] endfunction function dispatch_BigString_BigString_BigString_getLength takes integer this_1 returns integer local integer BigString_BigString_getLength_result if BigString_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BigString.getLength") else call error("Called BigString.getLength on invalid object.") endif endif set BigString_BigString_getLength_result = BigString_getLength(this_1) return BigString_BigString_getLength_result endfunction function BigString_debugPrint takes integer this_1 returns nothing local integer i local integer temp if Printing_config_DEBUG_LEVEL == 0 then call Log_debug("BigString length: " + int_toString(dispatch_BigString_BigString_BigString_getLength(this_1)) + " lines: ") set i = 0 set temp = BigString_MAX_SUBSTRINGS - 1 loop exitwhen i > temp if string_length(BigString_substrings_get(this_1, i)) > 0 then call Log_debug("\n\tLine " + int_toString(i) + " : " + BigString_substrings_get(this_1, i)) else exitwhen true endif set i = i + 1 endloop endif endfunction function dispatch_BigString_BigString_BigString_debugPrint takes integer this_1 returns nothing if BigString_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BigString.debugPrint") else call error("Called BigString.debugPrint on invalid object.") endif endif call BigString_debugPrint(this_1) endfunction function alloc_PayloadCallback_fromString_Encoder_Encoder takes nothing returns integer local integer this_1 if PayloadCallback_firstFree == 0 then if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1 set this_1 = PayloadCallback_maxIndex set PayloadCallback_typeId[this_1] = 1039 else call error("Out of memory: Could not create PayloadCallback_fromString_Encoder_Encoder.") set this_1 = 0 endif else set PayloadCallback_firstFree = PayloadCallback_firstFree - 1 set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree] set PayloadCallback_typeId[this_1] = 1039 endif return this_1 endfunction function alloc_SeqCallback_doSeq_Encoder_Encoder_1892 takes nothing returns integer local integer this_1 if SeqCallback_firstFree == 0 then if SeqCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set SeqCallback_maxIndex = SeqCallback_maxIndex + 1 set this_1 = SeqCallback_maxIndex set SeqCallback_typeId[this_1] = 1126 else call error("Out of memory: Could not create SeqCallback_doSeq_Encoder_Encoder.") set this_1 = 0 endif else set SeqCallback_firstFree = SeqCallback_firstFree - 1 set this_1 = SeqCallback_nextFree[SeqCallback_firstFree] set SeqCallback_typeId[this_1] = 1126 endif return this_1 endfunction function SeqCallback_init takes integer this_1 returns nothing set SeqCallback_done[this_1] = false set SeqCallback_ref[this_1] = null endfunction function construct_SeqCallback takes integer this_1 returns nothing call SeqCallback_init(this_1) endfunction function doSeq takes integer cb_1 returns nothing local timer receiver = getTimer() local timer receiver_1 call timer_setData(receiver, cb_1) set SeqCallback_ref[cb_1] = receiver set receiver_1 = SeqCallback_ref[cb_1] call timer_start(receiver_1, 0.001, ref_function_code__start_SeqWorker) endfunction function alloc_BigNum_l takes nothing returns integer local integer this_1 if BigNum_l_firstFree == 0 then if BigNum_l_maxIndex < JASS_MAX_ARRAY_SIZE then set BigNum_l_maxIndex = BigNum_l_maxIndex + 1 set this_1 = BigNum_l_maxIndex set BigNum_l_typeId[this_1] = 639 else call error("Out of memory: Could not create BigNum_l.") set this_1 = 0 endif else set BigNum_l_firstFree = BigNum_l_firstFree - 1 set this_1 = BigNum_l_nextFree[BigNum_l_firstFree] set BigNum_l_typeId[this_1] = 639 endif return this_1 endfunction function BigNum_l_init takes integer this_1 returns nothing set BigNum_l_leaf[this_1] = 0 set BigNum_l_next[this_1] = 0 endfunction function construct_BigNum_l takes integer this_1 returns nothing call BigNum_l_init(this_1) set BigNum_l_count = BigNum_l_count + 1 endfunction function new_BigNum_l takes nothing returns integer local integer this_1 = alloc_BigNum_l() call construct_BigNum_l(this_1) return this_1 endfunction function Encoder_fromString takes integer this_1, integer bs_1, integer onFinishString_1 returns nothing local integer w_i_1 = 0 local integer w_cur_1 = new_BigNum_l() local integer clVar set BigNum_list[Encoder_bignum[this_1]] = w_cur_1 call Log_debug("from String") set clVar = alloc_SeqCallback_doSeq_Encoder_Encoder_1892() call construct_SeqCallback(clVar) set w_cur_2188[clVar] = w_cur_1 set this_2889[clVar] = this_1 set bs[clVar] = bs_1 set w_i[clVar] = w_i_1 set onFinishString[clVar] = onFinishString_1 call doSeq(clVar) endfunction function dispatch_Encoder_Encoder_Encoder_fromString takes integer this_1, integer bs_1, integer onFinishString_1 returns nothing if Encoder_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Encoder.fromString") else call error("Called Encoder.fromString on invalid object.") endif endif call Encoder_fromString(this_1, bs_1, onFinishString_1) endfunction function Encoder_load takes integer this_1, integer bs_1, integer onFinishLoad_1 returns nothing local integer clVar local integer temp local integer temp_1 set Encoder_inputhash[this_1] = -1 set Encoder_comparehash[this_1] = -1 set temp = this_1 set temp_1 = bs_1 set clVar = alloc_PayloadCallback_fromString_Encoder_Encoder() call construct_PayloadCallback(clVar) set this_2897[clVar] = this_1 set onFinishLoad[clVar] = onFinishLoad_1 call dispatch_Encoder_Encoder_Encoder_fromString(temp, temp_1, clVar) endfunction function dispatch_Encoder_Encoder_Encoder_load takes integer this_1, integer bs_1, integer onFinishLoad_1 returns nothing if Encoder_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Encoder.load") else call error("Called Encoder.load on invalid object.") endif endif call Encoder_load(this_1, bs_1, onFinishLoad_1) endfunction function alloc_Encoder takes nothing returns integer local integer this_1 if Encoder_firstFree == 0 then if Encoder_maxIndex < JASS_MAX_ARRAY_SIZE then set Encoder_maxIndex = Encoder_maxIndex + 1 set this_1 = Encoder_maxIndex set Encoder_typeId[this_1] = 743 else call error("Out of memory: Could not create Encoder.") set this_1 = 0 endif else set Encoder_firstFree = Encoder_firstFree - 1 set this_1 = Encoder_nextFree[Encoder_firstFree] set Encoder_typeId[this_1] = 743 endif return this_1 endfunction function Encoder_init takes integer this_1 returns nothing set Encoder_digits[this_1] = 0. set Encoder_hash[this_1] = -1 set Encoder_inputhash[this_1] = -1 set Encoder_comparehash[this_1] = -1 endfunction function alloc_BigNum takes nothing returns integer local integer this_1 if BigNum_firstFree == 0 then if BigNum_maxIndex < JASS_MAX_ARRAY_SIZE then set BigNum_maxIndex = BigNum_maxIndex + 1 set this_1 = BigNum_maxIndex set BigNum_typeId[this_1] = 638 else call error("Out of memory: Could not create BigNum.") set this_1 = 0 endif else set BigNum_firstFree = BigNum_firstFree - 1 set this_1 = BigNum_nextFree[BigNum_firstFree] set BigNum_typeId[this_1] = 638 endif return this_1 endfunction function BigNum_init takes integer this_1 returns nothing set BigNum_list[this_1] = 0 endfunction function construct_BigNum takes integer this_1, integer base returns nothing call BigNum_init(this_1) set BigNum_base[this_1] = base endfunction function new_BigNum takes integer base returns integer local integer this_1 = alloc_BigNum() call construct_BigNum(this_1, base) return this_1 endfunction function construct_Encoder takes integer this_1, string charset returns nothing call Encoder_init(this_1) set Encoder_charset[this_1] = charset set Encoder_base[this_1] = string_length(charset) set Encoder_bignum[this_1] = new_BigNum(Encoder_base[this_1]) endfunction function new_Encoder takes string charset returns integer local integer this_1 = alloc_Encoder() call construct_Encoder(this_1, charset) return this_1 endfunction function decodePositions takes integer input, integer onFinish_1 returns nothing local integer encoder_1 = new_Encoder(LZW_ALLOWED_PLAYER_CHARS) local integer clVar local integer temp local integer temp_1 call dispatch_BigString_BigString_BigString_debugPrint(input) set temp = encoder_1 set temp_1 = input set clVar = alloc_PayloadCallback_load_LZW() call construct_PayloadCallback(clVar) set encoder_2346[clVar] = encoder_1 set onFinish_2554[clVar] = onFinish_1 call dispatch_Encoder_Encoder_Encoder_load(temp, temp_1, clVar) endfunction function StringIterator_onDestroy takes integer this_1 returns nothing endfunction function dealloc_StringIterator takes integer obj_1 returns nothing if StringIterator_typeId[obj_1] == 0 then call error("Double free: object of type StringIterator") else set StringIterator_nextFree[StringIterator_firstFree] = obj_1 set StringIterator_firstFree = StringIterator_firstFree + 1 set StringIterator_typeId[obj_1] = 0 endif endfunction function destroyStringIterator takes integer this_1 returns nothing call StringIterator_onDestroy(this_1) call dealloc_StringIterator(this_1) endfunction function dispatch_StringIterator_destroyStringIterator takes integer this_1 returns nothing if StringIterator_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling StringIterator.StringIterator") else call error("Called StringIterator.StringIterator on invalid object.") endif endif call destroyStringIterator(this_1) endfunction function StringIterator_close takes integer this_1 returns nothing call dispatch_StringIterator_destroyStringIterator(this_1) endfunction function StringIterator_hasNext takes integer this_1 returns boolean return StringIterator_currentpos[this_1] < StringIterator_stringLen[this_1] endfunction function StringIterator_next takes integer this_1 returns string local string wval = string_substring(StringIterator_s[this_1], StringIterator_currentpos[this_1], StringIterator_currentpos[this_1] + 1) if String_ENABLE_MULTIBYTE_SUPPORT and string_getHash(wval) == 1843378377 then set wval = string_substring(StringIterator_s[this_1], StringIterator_currentpos[this_1], StringIterator_currentpos[this_1] + 2) set StringIterator_currentpos[this_1] = StringIterator_currentpos[this_1] + 2 else set StringIterator_currentpos[this_1] = StringIterator_currentpos[this_1] + 1 endif return wval endfunction function dispatch_HashMap_HashMap_HashMap_flush takes integer this_1 returns nothing if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HashMap.flush") else call error("Called HashMap.flush on invalid object.") endif endif if Table_typeId[this_1] <= 1493 then call HashMap_flush(this_1) else call IterableMap_flush(this_1) endif endfunction function putDict takes string s returns nothing call dispatch_HashMap_HashMap_HashMap_put(LZW_dictionary, stringToIndex(s), LZW_dictSize) call dispatch_Table_Table_Table_saveString(LZW_dictionary, LZW_dictSize, s) set LZW_dictSize = LZW_dictSize + 1 endfunction function alloc_StringIterator takes nothing returns integer local integer this_1 if StringIterator_firstFree == 0 then if StringIterator_maxIndex < JASS_MAX_ARRAY_SIZE then set StringIterator_maxIndex = StringIterator_maxIndex + 1 set this_1 = StringIterator_maxIndex set StringIterator_typeId[this_1] = 1243 else call error("Out of memory: Could not create StringIterator.") set this_1 = 0 endif else set StringIterator_firstFree = StringIterator_firstFree - 1 set this_1 = StringIterator_nextFree[StringIterator_firstFree] set StringIterator_typeId[this_1] = 1243 endif return this_1 endfunction function StringIterator_init takes integer this_1 returns nothing endfunction function construct_StringIterator takes integer this_1, string s, integer currentpos, integer stringLen returns nothing call StringIterator_init(this_1) set StringIterator_s[this_1] = s set StringIterator_currentpos[this_1] = currentpos set StringIterator_stringLen[this_1] = stringLen endfunction function new_StringIterator takes string s, integer currentpos, integer stringLen returns integer local integer this_1 = alloc_StringIterator() call construct_StringIterator(this_1, s, currentpos, stringLen) return this_1 endfunction function string_iterator takes string this_1 returns integer return new_StringIterator(this_1, 0, string_length(this_1)) endfunction function initDict takes nothing returns nothing local integer iterator local string c set LZW_dictSize = 0 call dispatch_HashMap_HashMap_HashMap_flush(LZW_dictionary) set iterator = string_iterator(LZW_DICT_INIT) loop exitwhen not StringIterator_hasNext(iterator) set c = StringIterator_next(iterator) call putDict(c) endloop call StringIterator_close(iterator) endfunction function decompress takes integer input, integer onFinish_1 returns nothing local integer output_1 local integer clVar local integer temp call Log_debug("Start decompress") set output_1 = new_BigString() call initDict() set temp = input set clVar = alloc_PayloadCallback_decodePositions_LZW() call construct_PayloadCallback(clVar) set output[clVar] = output_1 set onFinish_2559[clVar] = onFinish_1 call decodePositions(temp, clVar) endfunction function BigString_addString takes integer this_1, string sp returns nothing local integer idx local integer off if string_length(sp) > BigString_BIG_SUBSTRING_LEN then call error("adding too long string") endif set idx = real_toInt(dispatch_BigString_BigString_BigString_getLength(this_1) * 1. / BigString_BIG_SUBSTRING_LEN) if string_length(BigString_substrings_get(this_1, idx)) + string_length(sp) > BigString_BIG_SUBSTRING_LEN then set off = BigString_BIG_SUBSTRING_LEN - string_length(BigString_substrings_get(this_1, idx)) call BigString_substrings_set(this_1, idx, BigString_substrings_get(this_1, idx) + string_substring(sp, 0, off)) set idx = idx + 1 call BigString_substrings_set(this_1, idx, BigString_substrings_get(this_1, idx) + string_substring_4063(sp, off)) else call BigString_substrings_set(this_1, idx, BigString_substrings_get(this_1, idx) + sp) endif set BigString_length[this_1] = BigString_length[this_1] + string_length(sp) endfunction function dispatch_BigString_BigString_BigString_addString takes integer this_1, string sp returns nothing if BigString_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BigString.addString") else call error("Called BigString.addString on invalid object.") endif endif call BigString_addString(this_1, sp) endfunction function dealloc_Table takes integer obj_1 returns nothing if Table_typeId[obj_1] == 0 then call error("Double free: object of type Table") else set Table_nextFree[Table_firstFree] = obj_1 set Table_firstFree = Table_firstFree + 1 set Table_typeId[obj_1] = 0 endif endfunction function destroyTable takes integer this_1 returns nothing call Table_onDestroy(this_1) call dealloc_Table(this_1) endfunction function dispatch_Table_destroyTable takes integer this_1 returns nothing if Table_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Table.Table") else call error("Called Table.Table on invalid object.") endif endif if Table_typeId[this_1] <= 1493 then call destroyTable(this_1) else call destroyIterableMap(this_1) endif endfunction function ChunkedString_onDestroy takes integer this_1 returns nothing call dispatch_Table_destroyTable(ChunkedString_table[this_1]) endfunction function dealloc_ChunkedString takes integer obj_1 returns nothing if ChunkedString_typeId[obj_1] == 0 then call error("Double free: object of type ChunkedString") else set ChunkedString_nextFree[ChunkedString_firstFree] = obj_1 set ChunkedString_firstFree = ChunkedString_firstFree + 1 set ChunkedString_typeId[obj_1] = 0 endif endfunction function destroyChunkedString takes integer this_1 returns nothing call ChunkedString_onDestroy(this_1) call dealloc_ChunkedString(this_1) endfunction function dispatch_ChunkedString_destroyChunkedString takes integer this_1 returns nothing if ChunkedString_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling ChunkedString.ChunkedString") else call error("Called ChunkedString.ChunkedString on invalid object.") endif endif call destroyChunkedString(this_1) endfunction function onLoad_loadData_nullTimer_MemoryAccessPedestal_Pedestal takes integer this_1, integer status, integer data_1 returns nothing local integer temp = status local integer ref_1 local texttag receiver local integer compressedString local integer i local integer temp_1 local integer clVar local integer temp_2 local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 if temp == 0 then call printLog(1, "synced") set ref_1 = MemoryAccessPedestal_lastRef[PlayerData_id[pd_2570[this_1]]] set receiver = FText_tt[MemoryAccessPedestal_ttag[ref_1]] call texttag_center(receiver, Entity_pos_x[ref_1], Entity_pos_y[ref_1], Entity_pos_z[ref_1], "|cff0884CEdecompressing...", 10.) set compressedString = new_BigString() set i = 0 set temp_1 = dispatch_ChunkedString_ChunkedString_ChunkedString_getChunkCount(data_1) loop exitwhen i > temp_1 call dispatch_BigString_BigString_BigString_addString(compressedString, dispatch_ChunkedString_ChunkedString_ChunkedString_getChunk(data_1, i)) set i = i + 1 endloop call dispatch_ChunkedString_destroyChunkedString(data_1) call printLog(1, "Reconstructed") call dispatch_BigString_BigString_BigString_debugPrint(compressedString) set tuple_temp = vec2_toVec3(vec2_toTile(vec3_toVec2(Entity_pos_x[ref_1], Entity_pos_y[ref_1], Entity_pos_z[ref_1]), vec3_toVec2_return_y), vec2_toTile_return_y) set tuple_temp_1 = vec2_toVec3_return_y set tuple_temp_2 = vec2_toVec3_return_z set Entity_serializeOrigin_x = tuple_temp set Entity_serializeOrigin_y = tuple_temp_1 set Entity_serializeOrigin_z = tuple_temp_2 set temp_2 = compressedString set clVar = alloc_PayloadCallback_decompress_loadData_nullTimer_MemoryAccessPedestal_Pedestal() call construct_PayloadCallback(clVar) set ref[clVar] = ref_1 call decompress(temp_2, clVar) else call Log_error("ERROR: " + int_toString(status)) endif endfunction function dispatch_LoadListener_SaveLoadData_LoadListener_onLoad takes integer this_1, integer status, integer data_1 returns nothing if LoadListener_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LoadListener.onLoad") else call error("Called LoadListener.onLoad on invalid object.") endif endif call onLoad_loadData_nullTimer_MemoryAccessPedestal_Pedestal(this_1, status, data_1) endfunction function onDataSynced_sync_SaveLoadData takes integer this_1, integer syncedBuffer returns nothing if dispatch_ChunkedString_ChunkedString_ChunkedString_length(syncedBuffer) == 0 then call dispatch_LoadListener_SaveLoadData_LoadListener_onLoad(listener[this_1], 2, syncedBuffer) elseif dispatch_ChunkedString_ChunkedString_ChunkedString_readChunk(syncedBuffer) == "-" then call dispatch_LoadListener_SaveLoadData_LoadListener_onLoad(listener[this_1], 3, syncedBuffer) else call dispatch_ChunkedString_ChunkedString_ChunkedString_resetRead(syncedBuffer) call dispatch_LoadListener_SaveLoadData_LoadListener_onLoad(listener[this_1], 0, syncedBuffer) endif endfunction function dispatch_BufferSyncListener_SyncSimple_BufferSyncListener_onDataSynced takes integer this_1, integer buffer returns nothing if BufferSyncListener_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BufferSyncListener.onDataSynced") else call error("Called BufferSyncListener.onDataSynced on invalid object.") endif endif call onDataSynced_sync_SaveLoadData(this_1, buffer) endfunction function min_2 takes integer numbers_0, integer numbers_1 returns integer local integer minNumber = Integer_INT_MAX local integer cond_result if numbers_0 < minNumber then set cond_result = numbers_0 else set cond_result = minNumber endif set minNumber = cond_result if numbers_1 < minNumber then set cond_result = numbers_1 else set cond_result = minNumber endif set minNumber = cond_result return minNumber endfunction function ChunkedString_append takes integer this_1, string pdata returns nothing local string data_1 = pdata local integer remain loop exitwhen not true set remain = ChunkedString_chunkSize[this_1] - string_length(ChunkedString_buffer[this_1]) if String_ENABLE_MULTIBYTE_SUPPORT and remain > 0 and string_length(data_1) >= remain and string_getHash(string_substring(data_1, remain - 1, remain)) == 1843378377 then set remain = remain + 1 endif set ChunkedString_buffer[this_1] = ChunkedString_buffer[this_1] + string_substring(data_1, 0, remain) if string_length(ChunkedString_buffer[this_1]) >= ChunkedString_chunkSize[this_1] then call dispatch_Table_Table_Table_saveString(ChunkedString_table[this_1], ChunkedString_chunkCount[this_1], ChunkedString_buffer[this_1]) set ChunkedString_buffer[this_1] = "" set ChunkedString_chunkCount[this_1] = ChunkedString_chunkCount[this_1] + 1 endif set data_1 = string_substring_4063(data_1, min_2(remain, string_length(data_1))) if string_length(data_1) == 0 then exitwhen true endif endloop endfunction function dispatch_ChunkedString_ChunkedString_ChunkedString_append takes integer this_1, string pdata returns nothing if ChunkedString_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling ChunkedString.append") else call error("Called ChunkedString.append on invalid object.") endif endif call ChunkedString_append(this_1, pdata) endfunction function dispatch_BoolSyncListener_SyncSimple_BoolSyncListener_onDataSynced takes integer this_1, boolean data_1 returns nothing endfunction function dealloc_BoolSyncListener takes integer obj_1 returns nothing if BoolSyncListener_typeId[obj_1] == 0 then call error("Double free: object of type BoolSyncListener") else set BoolSyncListener_firstFree = BoolSyncListener_firstFree + 1 set BoolSyncListener_typeId[obj_1] = 0 endif endfunction function destroyBoolSyncListener takes integer this_1 returns nothing call dealloc_BoolSyncListener(this_1) endfunction function dispatch_BoolSyncListener_destroyBoolSyncListener takes integer this_1 returns nothing if BoolSyncListener_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BoolSyncListener.BoolSyncListener") else call error("Called BoolSyncListener.BoolSyncListener on invalid object.") endif endif call destroyBoolSyncListener(this_1) endfunction function string_toBool takes string this_1 returns boolean local boolean cond_result if this_1 == "1" or this_1 == "true" then set cond_result = true else set cond_result = false endif return cond_result endfunction function onDataSynced_sync_SyncSimple takes integer this_1, string data_1 returns nothing call dispatch_BoolSyncListener_SyncSimple_BoolSyncListener_onDataSynced(listener_2540[this_1], string_toBool(data_1)) call dispatch_BoolSyncListener_destroyBoolSyncListener(listener_2540[this_1]) endfunction function dispatch_IntSyncListener_SyncSimple_IntSyncListener_onDataSynced takes integer this_1, integer data_1 returns nothing endfunction function dealloc_IntSyncListener takes integer obj_1 returns nothing if IntSyncListener_typeId[obj_1] == 0 then call error("Double free: object of type IntSyncListener") else set IntSyncListener_firstFree = IntSyncListener_firstFree + 1 set IntSyncListener_typeId[obj_1] = 0 endif endfunction function destroyIntSyncListener takes integer this_1 returns nothing call dealloc_IntSyncListener(this_1) endfunction function dispatch_IntSyncListener_destroyIntSyncListener takes integer this_1 returns nothing if IntSyncListener_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling IntSyncListener.IntSyncListener") else call error("Called IntSyncListener.IntSyncListener on invalid object.") endif endif call destroyIntSyncListener(this_1) endfunction function onDataSynced_sync_SyncSimple_3796 takes integer this_1, string data_1 returns nothing call dispatch_IntSyncListener_SyncSimple_IntSyncListener_onDataSynced(listener_2541[this_1], string_toInt(data_1)) call dispatch_IntSyncListener_destroyIntSyncListener(listener_2541[this_1]) endfunction function dispatch_RealSyncListener_SyncSimple_RealSyncListener_onDataSynced takes integer this_1, real data_1 returns nothing endfunction function dealloc_RealSyncListener takes integer obj_1 returns nothing if RealSyncListener_typeId[obj_1] == 0 then call error("Double free: object of type RealSyncListener") else set RealSyncListener_firstFree = RealSyncListener_firstFree + 1 set RealSyncListener_typeId[obj_1] = 0 endif endfunction function destroyRealSyncListener takes integer this_1 returns nothing call dealloc_RealSyncListener(this_1) endfunction function dispatch_RealSyncListener_destroyRealSyncListener takes integer this_1 returns nothing if RealSyncListener_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling RealSyncListener.RealSyncListener") else call error("Called RealSyncListener.RealSyncListener on invalid object.") endif endif call destroyRealSyncListener(this_1) endfunction function onDataSynced_sync_SyncSimple_3797 takes integer this_1, string data_1 returns nothing call dispatch_RealSyncListener_SyncSimple_RealSyncListener_onDataSynced(listener_2542[this_1], string_toReal(data_1)) call dispatch_RealSyncListener_destroyRealSyncListener(listener_2542[this_1]) endfunction function dispatch_StringSyncListener_SyncSimple_StringSyncListener_onDataSynced takes integer this_1, string data_1 returns nothing if StringSyncListener_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling StringSyncListener.onDataSynced") else call error("Called StringSyncListener.onDataSynced on invalid object.") endif endif if StringSyncListener_typeId[this_1] <= 1489 then if StringSyncListener_typeId[this_1] <= 1488 then call onDataSynced_sync_SyncSimple(this_1, data_1) else call onDataSynced_sync_SyncSimple_3796(this_1, data_1) endif else call onDataSynced_sync_SyncSimple_3797(this_1, data_1) endif endfunction function dealloc_BufferSyncListener takes integer obj_1 returns nothing if BufferSyncListener_typeId[obj_1] == 0 then call error("Double free: object of type BufferSyncListener") else set BufferSyncListener_nextFree[BufferSyncListener_firstFree] = obj_1 set BufferSyncListener_firstFree = BufferSyncListener_firstFree + 1 set BufferSyncListener_typeId[obj_1] = 0 endif endfunction function destroyBufferSyncListener takes integer this_1 returns nothing call dealloc_BufferSyncListener(this_1) endfunction function dispatch_BufferSyncListener_destroyBufferSyncListener takes integer this_1 returns nothing if BufferSyncListener_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BufferSyncListener.BufferSyncListener") else call error("Called BufferSyncListener.BufferSyncListener on invalid object.") endif endif call destroyBufferSyncListener(this_1) endfunction function dealloc_StringSyncListener takes integer obj_1 returns nothing if StringSyncListener_typeId[obj_1] == 0 then call error("Double free: object of type StringSyncListener") else set StringSyncListener_firstFree = StringSyncListener_firstFree + 1 set StringSyncListener_typeId[obj_1] = 0 endif endfunction function destroyStringSyncListener takes integer this_1 returns nothing call dealloc_StringSyncListener(this_1) endfunction function dispatch_StringSyncListener_destroyStringSyncListener takes integer this_1 returns nothing if StringSyncListener_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling StringSyncListener.StringSyncListener") else call error("Called StringSyncListener.StringSyncListener on invalid object.") endif endif call destroyStringSyncListener(this_1) endfunction function SyncData_onDestroy takes integer this_1 returns nothing if SyncData_slistener[this_1] != 0 then call dispatch_StringSyncListener_destroyStringSyncListener(SyncData_slistener[this_1]) endif if SyncData_blistener[this_1] != 0 then call dispatch_BufferSyncListener_destroyBufferSyncListener(SyncData_blistener[this_1]) endif if SyncData_buffer[this_1] != 0 then call dispatch_ChunkedString_destroyChunkedString(SyncData_buffer[this_1]) endif endfunction function dealloc_SyncData takes integer obj_1 returns nothing if SyncData_typeId[obj_1] == 0 then call error("Double free: object of type SyncData") else set SyncData_nextFree[SyncData_firstFree] = obj_1 set SyncData_firstFree = SyncData_firstFree + 1 set SyncData_typeId[obj_1] = 0 endif endfunction function destroySyncData takes integer this_1 returns nothing call SyncData_onDestroy(this_1) call dealloc_SyncData(this_1) endfunction function dispatch_SyncData_destroySyncData takes integer this_1 returns nothing if SyncData_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SyncData.SyncData") else call error("Called SyncData.SyncData on invalid object.") endif endif call destroySyncData(this_1) endfunction function shouldSync takes nothing returns boolean return SyncSimple_SYNC_IN_REPLAYS or GameStatus_gameStatus != 3 endfunction function code__addAction_SyncSimple takes nothing returns nothing local string eventData = BlzGetTriggerSyncData() local string eventPrefix = BlzGetTriggerSyncPrefix() local integer syncData = dispatch_LinkedList_LinkedList_LinkedList_getFirst(SyncSimple_syncQueue) if SyncData_data[syncData] != null then call dispatch_StringSyncListener_SyncSimple_StringSyncListener_onDataSynced(SyncData_slistener[syncData], eventData) call dispatch_LinkedList_LinkedList_LinkedList_dequeue(SyncSimple_syncQueue) call dispatch_SyncData_destroySyncData(syncData) else call dispatch_ChunkedString_ChunkedString_ChunkedString_append(SyncData_syncBuffer[syncData], eventData) if eventPrefix == SyncSimple_LAST_CHUNK_PREFIX then call dispatch_BufferSyncListener_SyncSimple_BufferSyncListener_onDataSynced(SyncData_blistener[syncData], SyncData_syncBuffer[syncData]) call dispatch_LinkedList_LinkedList_LinkedList_dequeue(SyncSimple_syncQueue) call dispatch_SyncData_destroySyncData(syncData) endif endif if shouldSync() then call checkQueue() endif endfunction function code__addAction_nullTimer_ClosureEvents takes nothing returns nothing call EventListener_generalEventCallback() endfunction function code__addAction_nullTimer_ClosureEvents_2082 takes nothing returns nothing call EventListener_generalEventCallback() endfunction function code__addAction_nullTimer_ClosureEvents_2083 takes nothing returns nothing call EventListener_generalEventCallback() endfunction function getEnterLeaveUnit takes nothing returns unit return OnUnitEnterLeave_tempUnits[OnUnitEnterLeave_tempUnitsCount - 1] endfunction function shouldIndex takes unit w_u returns boolean return true endfunction function alloc_UnitIndex takes nothing returns integer local integer this_1 if UnitIndex_firstFree == 0 then if UnitIndex_maxIndex < JASS_MAX_ARRAY_SIZE then set UnitIndex_maxIndex = UnitIndex_maxIndex + 1 set this_1 = UnitIndex_maxIndex set UnitIndex_typeId[this_1] = 1506 else call error("Out of memory: Could not create UnitIndex.") set this_1 = 0 endif else set UnitIndex_firstFree = UnitIndex_firstFree - 1 set this_1 = UnitIndex_nextFree[UnitIndex_firstFree] set UnitIndex_typeId[this_1] = 1506 endif return this_1 endfunction function UnitIndex_init takes integer this_1 returns nothing endfunction function popUnit_3935 takes nothing returns nothing set UnitIndexer_tempUnitsCount = UnitIndexer_tempUnitsCount - 1 endfunction function pushUnit_3949 takes unit u_1 returns nothing set UnitIndexer_tempUnits[UnitIndexer_tempUnitsCount] = u_1 set UnitIndexer_tempUnitsCount = UnitIndexer_tempUnitsCount + 1 endfunction function unit_setUserData takes unit this_1, integer data_1 returns nothing call SetUnitUserData(this_1, data_1) endfunction function construct_UnitIndex takes integer this_1, unit whichUnit returns nothing call UnitIndex_init(this_1) set UnitIndex__unit[this_1] = whichUnit call unit_setUserData(UnitIndex__unit[this_1], this_1) call pushUnit_3949(whichUnit) call trigger_evaluate(UnitIndexer_onIndexTrigger) call popUnit_3935() endfunction function new_UnitIndex takes unit whichUnit returns integer local integer this_1 = alloc_UnitIndex() call construct_UnitIndex(this_1, whichUnit) return this_1 endfunction function unit_toUnitIndex takes unit this_1 returns integer local integer instance_1 = unit_getUserData(this_1) if instance_1 == 0 then set instance_1 = new_UnitIndex(this_1) endif return instance_1 endfunction function code__onEnter_UnitIndexer takes nothing returns nothing if shouldIndex(getEnterLeaveUnit()) then call unit_toUnitIndex(getEnterLeaveUnit()) endif endfunction function UnitIndex_onDestroy takes integer this_1 returns nothing call pushUnit_3949(UnitIndex__unit[this_1]) call trigger_evaluate(UnitIndexer_onDeindexTrigger) call popUnit_3935() call unit_setUserData(UnitIndex__unit[this_1], 0) endfunction function dealloc_UnitIndex takes integer obj_1 returns nothing if UnitIndex_typeId[obj_1] == 0 then call error("Double free: object of type UnitIndex") else set UnitIndex_nextFree[UnitIndex_firstFree] = obj_1 set UnitIndex_firstFree = UnitIndex_firstFree + 1 set UnitIndex_typeId[obj_1] = 0 endif endfunction function destroyUnitIndex takes integer this_1 returns nothing call UnitIndex_onDestroy(this_1) call dealloc_UnitIndex(this_1) endfunction function dispatch_UnitIndex_destroyUnitIndex takes integer this_1 returns nothing if UnitIndex_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling UnitIndex.UnitIndex") else call error("Called UnitIndex.UnitIndex on invalid object.") endif endif call destroyUnitIndex(this_1) endfunction function unit_deindex takes unit this_1 returns boolean if unit_getUserData(this_1) == 0 then return false else call dispatch_UnitIndex_destroyUnitIndex(unit_toUnitIndex(this_1)) return true endif endfunction function code__onLeave_UnitIndexer takes nothing returns nothing if shouldIndex(getEnterLeaveUnit()) then call unit_deindex(getEnterLeaveUnit()) endif endfunction function getIndexingUnit takes nothing returns unit return UnitIndexer_tempUnits[UnitIndexer_tempUnitsCount - 1] endfunction function code__onUnitDeindex_ClosureEvents takes nothing returns nothing call unregisterEventsForUnit(getIndexingUnit()) endfunction function code__onUnitDeindex_EntityManagement takes nothing returns nothing local integer e_1 = unit_getEntity(getIndexingUnit()) if e_1 != 0 then call cyc_RevivePoint_terminate(18, e_1) endif endfunction function trigger_registerUnitEvent takes trigger this_1, unit whichUnit, unitevent whichEvent returns event return TriggerRegisterUnitEvent(this_1, whichUnit, whichEvent) endfunction function registerEventsForUnit takes unit u_1 returns nothing if fireEvents(u_1) then call trigger_registerUnitEvent(ClosureEvents_unitTrig, u_1, EVENT_UNIT_DAMAGED) endif endfunction function code__onUnitIndex_ClosureEvents takes nothing returns nothing call registerEventsForUnit(getIndexingUnit()) endfunction function triggerFromIndex takes integer index returns trigger call dispatch_Table_Table_Table_saveFogState(TypeCasting_typecastdata, 0, ConvertFogState(index)) return dispatch_Table_Table_Table_loadTrigger(TypeCasting_typecastdata, 0) endfunction function code__registerPlayerUnitEvent_RegisterEvents takes nothing returns boolean return trigger_evaluate(triggerFromIndex(dispatch_HashMap_HashMap_HashMap_get(RegisterEvents_onCastMap, GetSpellAbilityId()))) endfunction function RegionData_setOwner takes integer this_1, player p returns nothing call dispatch_HashMap_HashMap_HashMap_put(RegionData_permissions[this_1], playerToIndex(p), 2) endfunction function dispatch_RegionData_RegionData_RegionData_setOwner takes integer this_1, player p returns nothing if RegionData_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling RegionData.setOwner") else call error("Called RegionData.setOwner on invalid object.") endif endif call RegionData_setOwner(this_1, p) endfunction function RegionData_setType takes integer this_1, integer rtype, boolean changeTerrain returns nothing local integer temp_tuple_unwalkableId local rect temp local integer tuple_temp set RegionData_rtype[this_1] = rtype if rtype != 0 and changeTerrain then set temp = RegionData_theRect[this_1] call RegionType_getTypeSet(rtype) set tuple_temp = RegionType_getTypeSet_return_unwalkableId set temp_tuple_unwalkableId = tuple_temp call rect_changeTerrain(temp, temp_tuple_unwalkableId) endif endfunction function dispatch_RegionData_RegionData_RegionData_setType takes integer this_1, integer rtype, boolean changeTerrain returns nothing if RegionData_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling RegionData.setType") else call error("Called RegionData.setType on invalid object.") endif endif call RegionData_setType(this_1, rtype, changeTerrain) endfunction function getRegionTypeFromItem takes integer itemId returns integer local integer i = 1 local integer reg local integer temp_tuple_regionItemId local integer tuple_temp loop exitwhen i > 5 set reg = i set tuple_temp = RegionType_getTypeSet(reg) set temp_tuple_regionItemId = tuple_temp if temp_tuple_regionItemId == itemId then return reg endif set i = i + 1 endloop return 0 endfunction function alloc_SetupBox takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1170 else call error("Out of memory: Could not create SetupBox.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1170 endif return this_1 endfunction function SetupBox_init takes integer this_1 returns nothing endfunction function alloc_EventListener_add_SetupBox_SetupBox takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 811 else call error("Out of memory: Could not create EventListener_add_SetupBox_SetupBox.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 811 endif return this_1 endfunction function construct_SetupBox takes integer this_1, real pos_x_1, real pos_y_1, player owner, integer data_1 returns nothing local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local unit receiver_4 local unit receiver_5 local unit receiver_6 local unit receiver_7 local unit receiver_8 local unit receiver_9 local integer clVar local unit temp local playerunitevent temp_1 call construct_UnitEntity(this_1, createUnit(owner, SetupBox_SETUP_BOX_ID, pos_x_1, pos_y_1, 0.)) call SetupBox_init(this_1) call Entity_setCurrentRegion(this_1) set SetupBox_rdata[this_1] = data_1 set receiver = UnitEntity_actor[this_1] call unit_addAbility(receiver, SetupBox_ALLOW_ID) set receiver_1 = receiver call unit_addAbility(receiver_1, SetupBox_CLEAR_ID) set receiver_2 = receiver_1 call unit_addAbility(receiver_2, SetupBox_SECOND_PAGE) set receiver_3 = receiver_2 call unit_addAbility(receiver_3, SetupBox_INC_GRAVITY) set receiver_4 = receiver_3 call unit_addAbility(receiver_4, SetupBox_DEC_GRAVITY) set receiver_5 = receiver_4 call unit_addAbility(receiver_5, SetupBox_TURND_ID) set receiver_6 = receiver_5 call unit_addAbility(receiver_6, SetupBox_TURNI_ID) set receiver_7 = receiver_6 call unit_addAbility(receiver_7, SetupBox_ABIL_WIZARD) set receiver_8 = receiver_7 call unit_addAbility(receiver_8, SetupBox_CUT_ALLOW) set receiver_9 = receiver_8 call unit_addAbility(receiver_9, SetupBox_EASY_ENABLE) set temp = UnitEntity_actor[this_1] set temp_1 = EVENT_PLAYER_UNIT_SPELL_EFFECT set clVar = alloc_EventListener_add_SetupBox_SetupBox() call construct_EventListener(clVar) set this_2926[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) endfunction function new_SetupBox takes real pos_x_1, real pos_y_1, player owner, integer data_1 returns integer local integer this_1 = alloc_SetupBox() call construct_SetupBox(this_1, pos_x_1, pos_y_1, owner, data_1) return this_1 endfunction function claimRegion takes nothing returns nothing local unit seller = GetTriggerUnit() local unit buyer = GetBuyingUnit() local item itm = GetSoldItem() local integer id = GetItemTypeId(itm) local integer entity_1 = unit_getEntity(buyer) local integer rdata = getRegionData_3302(unit_getPos(seller), unit_getPos_return_y) local integer rtype = getRegionTypeFromItem(id) local integer builder if Serializable_typeId[entity_1] == 1161 then call item_remove(itm) if RegionData_rtype[rdata] == 0 and rtype != 0 then set builder = entity_1 if Builder_regionCount[builder] > 0 then set Builder_regionCount[builder] = Builder_regionCount[builder] - 1 call dispatch_RegionData_RegionData_RegionData_setType(rdata, rtype, true) call dispatch_RegionData_RegionData_RegionData_setOwner(rdata, Entity_owner[builder]) call item_remove(GetManipulatedItem()) call effect_destr(addEffect("Abilities\\Spells\\Other\\Charm\\CharmTarget.mdl", unit_getPos(seller), unit_getPos_return_y)) call unit_remove(seller) call DisplayTextToPlayer(Entity_owner[builder], 0., 0., "|cff6BC54AYou claimed this region!\nA |cffFFCC00Setupunit|cff6BC54A has been created at the |cffFFCC00left top corner|cff6BC54A of your region.") call new_SetupBox(GetRectMinX(RegionData_theRect[rdata]) + 192., GetRectMaxY(RegionData_theRect[rdata]) - 192., Entity_owner[builder], rdata) if GetLocalPlayer() == Entity_owner[builder] then call SelectUnit(UnitEntity_actor[builder], true) endif else call printTimedToPlayer("|cff3187CBYou have used up all your regions. Leave some for the other builders", 15., Entity_owner[builder]) endif endif endif endfunction function code__registerPlayerUnitEvent_SetupBox takes nothing returns nothing call claimRegion() endfunction function fireEx_onCast_Arcanery_Arcanery takes integer this_1, integer id returns nothing local integer temp if not Entity_done[this_2953[this_1]] then set temp = id if temp == Arcanery_JUMP_MODE_ID then set Arcanery_arcMode[this_2953[this_1]] = 1 elseif temp == Arcanery_ORB_MODE_ID then set Arcanery_arcMode[this_2953[this_1]] = 2 elseif temp == Arcanery_SILENCE_MODE_ID then set Arcanery_arcMode[this_2953[this_1]] = 0 endif call dispatch_Arcanery_Arcanery_Arcanery_recreateEffect(this_2953[this_1]) endif endfunction function fireEx_onCast_Bombertower_Bombertower takes integer this_1, integer id returns nothing call onAttackspeedCast(id, UnitEntity_actor[this_2989[this_1]]) endfunction function dispatch_OnCast_ClosureEvents_OnCast_fireEx takes integer this_1, integer id returns nothing if OnCastListener_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling OnCast.fireEx") else call error("Called OnCast.fireEx on invalid object.") endif endif if OnCastListener_typeId[this_1] <= 1020 then call fireEx_onCast_Arcanery_Arcanery(this_1, id) else call fireEx_onCast_Bombertower_Bombertower(this_1, id) endif endfunction function OnCast_fire takes integer this_1, unit caster returns nothing call dispatch_OnCast_ClosureEvents_OnCast_fireEx(this_1, GetSpellAbilityId()) endfunction function alloc_Fireball takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1142 else call error("Out of memory: Could not create Fireball.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1142 endif return this_1 endfunction function Fireball_init takes integer this_1 returns nothing endfunction function construct_Fireball takes integer this_1, integer caster, real direction_radians returns nothing call construct_Projectile(this_1, vec3_op_plus_4280(vec2_withZ(vec3_toVec2(Entity_pos_x[caster], Entity_pos_y[caster], Entity_pos_z[caster]), vec3_toVec2_return_y, 42.), vec2_withZ_return_y, vec2_withZ_return_z, angle_toVec(direction_radians, 20.), angle_toVec_return_y), vec3_op_plus_return_y_3134, vec3_op_plus_return_z_3136, 46., GameConstants_STAFF_PLAYER, direction_radians, Abilities_fireBallMissile) call Fireball_init(this_1) set Fireball_caster[this_1] = caster call dispatch_Projectile_Projectile_Projectile_setSpeed(this_1, 12.) call dispatch_Projectile_Projectile_Projectile_setRanged(this_1, 800.) call Entity_setCurrentRegion(this_1) endfunction function new_Fireball takes integer caster, real direction_radians returns integer local integer this_1 = alloc_Fireball() call construct_Fireball(this_1, caster, direction_radians) return this_1 endfunction function fireEx_onPointCast_Warlock_MGWarlock takes integer this_1, unit caster, real target_x, real target_y returns nothing call new_Fireball(this_2949[this_1], vec2_angleTo(unit_getPos(caster), unit_getPos_return_y, target_x, target_y)) endfunction function dispatch_OnPointCast_ClosureEvents_OnPointCast_fireEx takes integer this_1, unit caster, real target_x, real target_y returns nothing if OnCastListener_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling OnPointCast.fireEx") else call error("Called OnPointCast.fireEx on invalid object.") endif endif call fireEx_onPointCast_Warlock_MGWarlock(this_1, caster, target_x, target_y) endfunction function OnPointCast_fire takes integer this_1, unit caster returns nothing call dispatch_OnPointCast_ClosureEvents_OnPointCast_fireEx(this_1, caster, EventData_getSpellTargetPos(), EventData_getSpellTargetPos_return_y) endfunction function dispatch_OnUnitCast_ClosureEvents_OnUnitCast_fireEx takes integer this_1, unit caster, unit target returns nothing endfunction function OnUnitCast_fire takes integer this_1, unit caster returns nothing call dispatch_OnUnitCast_ClosureEvents_OnUnitCast_fireEx(this_1, caster, GetSpellTargetUnit()) endfunction function dispatch_OnCastListener_ClosureEvents_OnCastListener_fire takes integer this_1, unit caster returns nothing if OnCastListener_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling OnCastListener.fire") else call error("Called OnCastListener.fire on invalid object.") endif endif if OnCastListener_typeId[this_1] <= 1023 then if OnCastListener_typeId[this_1] <= 1021 then call OnCast_fire(this_1, caster) else call OnPointCast_fire(this_1, caster) endif else call OnUnitCast_fire(this_1, caster) endif endfunction function EventListener_onSpellEffect takes nothing returns nothing local unit trigUnit = GetTriggerUnit() local integer abilId = GetSpellAbilityId() local integer index = unit_getIndex(trigUnit) local integer listener_1 local integer nextListener local integer listener_2 local integer nextListener_1 if EventListener_castMapCasters[index] != 0 then set listener_1 = EventListener_castMapCasters[index] loop exitwhen not (listener_1 != 0) set nextListener = OnCastListener_next[listener_1] if OnCastListener_abilId[listener_1] == -1 or OnCastListener_abilId[listener_1] == abilId then call dispatch_OnCastListener_ClosureEvents_OnCastListener_fire(listener_1, GetSpellAbilityUnit()) endif set listener_1 = nextListener endloop endif if dispatch_HashMap_HashMap_HashMap_has(EventListener_castMap, abilId) then set listener_2 = dispatch_HashMap_HashMap_HashMap_get(EventListener_castMap, abilId) loop exitwhen not (listener_2 != 0) set nextListener_1 = OnCastListener_next[listener_2] if OnCastListener_eventUnit[listener_2] == null or OnCastListener_eventUnit[listener_2] == trigUnit then call dispatch_OnCastListener_ClosureEvents_OnCastListener_fire(listener_2, GetSpellAbilityUnit()) endif set listener_2 = nextListener_1 endloop endif endfunction function code__registerPlayerUnitEvent_nullTimer_ClosureEvents takes nothing returns nothing call EventListener_onSpellEffect() endfunction function trigger_execute takes trigger this_1 returns nothing call TriggerExecute(this_1) endfunction function code__registerPlayerUnitEvent_nullTimer_OnUnitEnterLeave takes nothing returns nothing local unit leavingUnit = GetTriggerUnit() if unit_getAbilityLevel(leavingUnit, OnUnitEnterLeave_ABILITY_ID) == 0 and GetIssuedOrderId() == OrderIds_undefend then call pushUnit(leavingUnit) call trigger_execute(OnUnitEnterLeave_eventTrigger) call popUnit() endif endfunction function multiboard_setItemsStyle takes multiboard this_1, boolean showValues, boolean showIcons returns nothing call MultiboardSetItemsStyle(this_1, showValues, showIcons) endfunction function multiboard_setItemsWidth takes multiboard this_1, real width returns nothing call MultiboardSetItemsWidth(this_1, width) endfunction function createMultiboard takes nothing returns nothing local multiboarditem mbi local multiboarditem receiver local multiboarditem receiver_1 local multiboarditem receiver_2 local multiboarditem receiver_3 local multiboarditem receiver_4 local multiboarditem receiver_5 set DebugInfo_mb = CreateMultiboard() call multiboard_setColumnCount(DebugInfo_mb, DebugInfo_columns) call multiboard_setRowCount(DebugInfo_mb, DebugInfo_rows) call multiboard_setItemsStyle(DebugInfo_mb, true, false) call multiboard_setItemsWidth(DebugInfo_mb, 0.04) call multiboard_setTitle(DebugInfo_mb, "Debug Info") set mbi = multiboard_getItem(DebugInfo_mb, 0, 0) set receiver = mbi call multiboarditem_setValue(receiver, "Allocations") set receiver_1 = receiver call multiboarditem_setWidth(receiver_1, 0.10) set mbi = multiboard_getItem(DebugInfo_mb, 1, 0) set receiver_2 = mbi call multiboarditem_setValue(receiver_2, "Callbacks") set receiver_3 = receiver_2 call multiboarditem_setWidth(receiver_3, 0.10) set mbi = multiboard_getItem(DebugInfo_mb, 2, 0) set receiver_4 = mbi call multiboarditem_setValue(receiver_4, "Entites") set receiver_5 = receiver_4 call multiboarditem_setWidth(receiver_5, 0.10) endfunction function code__startPeriodic_DebugInfo takes nothing returns nothing if DebugInfo_mb == null then call createMultiboard() endif set DebugInfo_seconds = DebugInfo_seconds + 1 set DebugInfo_totalEventCallbacks = DebugInfo_totalEventCallbacks + DebugInfo_eventCallbacksPerSecond set DebugInfo_totalAllocations = DebugInfo_totalAllocations + DebugInfo_allocationsPerSecond call multiboarditem_setValue(multiboard_getItem(DebugInfo_mb, 0, 1), int_toString(DebugInfo_allocationsPerSecond)) call multiboarditem_setValue(multiboard_getItem(DebugInfo_mb, 0, 2), real_toString(DebugInfo_totalAllocations * 1. / DebugInfo_seconds)) call multiboarditem_setValue(multiboard_getItem(DebugInfo_mb, 1, 1), int_toString(DebugInfo_eventCallbacksPerSecond)) call multiboarditem_setValue(multiboard_getItem(DebugInfo_mb, 1, 2), real_toString(DebugInfo_totalEventCallbacks * 1. / DebugInfo_seconds)) call multiboarditem_setValue(multiboard_getItem(DebugInfo_mb, 2, 1), int_toString(Entity_DupletListModule_activeSize)) call multiboarditem_setValue(multiboard_getItem(DebugInfo_mb, 2, 2), int_toString(Entity_DupletListModule_inactiveSize)) set DebugInfo_eventCallbacksPerSecond = 0 set DebugInfo_allocationsPerSecond = 0 endfunction function code__startPeriodic_GameTimer takes nothing returns nothing set GameTimer_currentTime = GameTimer_currentTime + Basics_ANIMATION_PERIOD endfunction function code__startPeriodic_ReviveManager takes nothing returns nothing call update() endfunction function call_doAfter_Bomber_Bomber takes integer this_1 returns boolean return unit_issueImmediateOrder(UnitEntity_actor[this_2975[this_1]], "stop") endfunction function call_doAfter_Bomber_Bomber_1967 takes integer this_1 returns boolean return unit_issueImmediateOrder(UnitEntity_actor[this_2976[this_1]], "stop") endfunction function call_doAfter_Bombertower_Bombertower takes integer this_1 returns boolean return unit_issueImmediateOrder(Bombertower_dummy[obj[this_1]], "stop") endfunction function call_doAfter_Bombertower_Bombertower_1969 takes integer this_1 returns boolean return unit_issueImmediateOrder(Bombertower_dummy[obj_2548[this_1]], "stop") endfunction function instantBuild takes integer b, real tpos_x_1, real tpos_y_1, integer id returns nothing local integer rdata = getRegionData_3302(tpos_x_1, tpos_y_1) local integer i local integer i2 if rdata != 0 and dispatch_RegionData_RegionData_RegionData_canBuild(rdata, Entity_owner[b]) then set i = 1 loop exitwhen not (InstantBuild_buildorders[i] > 0) if id == InstantBuild_buildorders[i] then call newObjectFromId(Entity_owner[b], tpos_x_1, tpos_y_1, i) exitwhen true endif set i = i + 1 endloop set i2 = 139 loop exitwhen i2 > 152 if id == InstantBuild_buildorders[i2] then call newObjectFromId(Entity_owner[b], tpos_x_1, tpos_y_1, i2) exitwhen true endif set i2 = i2 + 1 endloop else call DisplayTextToPlayer(Entity_owner[b], 0., 0., "|cffC51019You have no permission to build in this region!") endif call unit_abortOrder(UnitEntity_actor[b]) endfunction function call_doAfter_Builder_Builder takes integer this_1 returns nothing call instantBuild(this_2924[this_1], orderPos_x[this_1], orderPos_y[this_1], orderId[this_1]) endfunction function dispatch_Callback_ClosureTimers_Callback_call takes integer this_1 returns nothing endfunction function dealloc_Callback takes integer obj_1 returns nothing if Callback_typeId[obj_1] == 0 then call error("Double free: object of type Callback") else set Callback_firstFree = Callback_firstFree + 1 set Callback_typeId[obj_1] = 0 endif endfunction function destroyCallback takes integer this_1 returns nothing call dealloc_Callback(this_1) endfunction function dispatch_Callback_destroyCallback takes integer this_1 returns nothing if Callback_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Callback.Callback") else call error("Called Callback.Callback on invalid object.") endif endif call destroyCallback(this_1) endfunction function timerdialog_destr takes timerdialog this_1 returns nothing call DestroyTimerDialog(this_1) endfunction function call_doAfter_ClosureTimers takes integer this_1 returns nothing call dispatch_Callback_ClosureTimers_Callback_call(cb[this_1]) call dispatch_Callback_destroyCallback(cb[this_1]) call timerdialog_destr(dia[this_1]) endfunction function call_doAfter_ClosureTimers_1972 takes integer this_1 returns nothing set ClosureTimers_x = ClosureTimers_x + 50 endfunction function call_doAfter_ClosureTimers_1973 takes integer this_1 returns nothing set ClosureTimers_x = ClosureTimers_x * 2 endfunction function call_doAfter_ClosureTimers_1974 takes integer this_1 returns nothing set ClosureTimers_x = ClosureTimers_x / 2 call int_assertEquals(ClosureTimers_x, 250) endfunction function call_doAfter_Commands takes integer this_1 returns nothing set PlayerData_escaper[pd_2571[this_1]] = new_HolyEscaper(vec2_toVec3(Escaper_currentRevivepoint_x, Escaper_currentRevivepoint_y), vec2_toVec3_return_y, vec2_toVec3_return_z, PlayerData_p[pd_2571[this_1]]) endfunction function call_doAfter_DummyRecycler_DummyRecycler takes integer this_1 returns nothing call DummyRecycler_recycle(u[this_1]) endfunction function vec2_distanceToSq takes real this_x, real this_y, real v_x, real v_y returns real return real_squared(v_x - this_x) + real_squared(v_y - this_y) endfunction function call_doAfter_Escaper_Escaper takes integer this_1 returns nothing local real smallestDist = 9999999. local integer target = 0 local integer iterator = LinkedList_iterator(Escaper_escapers) local integer e_1 local real dist loop exitwhen not LLIterator_hasNext(iterator) set e_1 = LLIterator_next(iterator) if e_1 != this_2937[this_1] then set dist = vec2_distanceToSq(tpos_x_3019[this_1], tpos_y_3022[this_1], vec3_toVec2(dispatch_UnitEntity_Entity_UnitEntity_getPos(e_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z), vec3_toVec2_return_y) if dist < smallestDist then set smallestDist = dist set target = e_1 endif endif endloop call LLIterator_close(iterator) if target == 0 then set target = this_2937[this_1] endif call flashEffect(Abilities_blinkCaster, dispatch_UnitEntity_Entity_UnitEntity_getPos(this_2937[this_1]), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z) call dispatch_UnitEntity_Entity_UnitEntity_setPos(this_2937[this_1], dispatch_UnitEntity_Entity_UnitEntity_getPos(target), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z) call flashEffect(Abilities_blinkCaster, dispatch_UnitEntity_Entity_UnitEntity_getPos(target), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z) endfunction function call_doAfter_FText_FText takes integer this_1 returns nothing call dispatch_FText_FText_FText_recycle(this_2901[this_1]) endfunction function call_doAfter_FourthCitadelleMaze_FourthCitadelle takes integer this_1 returns boolean return unit_issuePointOrder(gg_unit_spnr_0161, "patrol", -3900., -4604.) endfunction function alloc_CallbackSingle_doAfter_GameInit_1611 takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 686 else call error("Out of memory: Could not create CallbackSingle_doAfter_GameInit.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 686 endif return this_1 endfunction function alloc_CallbackPeriodic_doPeriodically_PlayerData takes nothing returns integer local integer this_1 if CallbackPeriodic_firstFree == 0 then if CallbackPeriodic_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackPeriodic_maxIndex = CallbackPeriodic_maxIndex + 1 set this_1 = CallbackPeriodic_maxIndex set CallbackPeriodic_typeId[this_1] = 669 else call error("Out of memory: Could not create CallbackPeriodic_doPeriodically_PlayerData.") set this_1 = 0 endif else set CallbackPeriodic_firstFree = CallbackPeriodic_firstFree - 1 set this_1 = CallbackPeriodic_nextFree[CallbackPeriodic_firstFree] set CallbackPeriodic_typeId[this_1] = 669 endif return this_1 endfunction function alloc_CallbackSingle_doAfter_PlayerData takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 698 else call error("Out of memory: Could not create CallbackSingle_doAfter_PlayerData.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 698 endif return this_1 endfunction function alloc_LLItrClosure_forEach_PlayerData_1833 takes nothing returns integer local integer this_1 if LLItrClosure_firstFree == 0 then if LLItrClosure_maxIndex < JASS_MAX_ARRAY_SIZE then set LLItrClosure_maxIndex = LLItrClosure_maxIndex + 1 set this_1 = LLItrClosure_maxIndex set LLItrClosure_typeId[this_1] = 994 else call error("Out of memory: Could not create LLItrClosure_forEach_PlayerData.") set this_1 = 0 endif else set LLItrClosure_firstFree = LLItrClosure_firstFree - 1 set this_1 = LLItrClosure_nextFree[LLItrClosure_firstFree] set LLItrClosure_typeId[this_1] = 994 endif return this_1 endfunction function alloc_OnPlayerLeave_onPlayerLeave_PlayerData takes nothing returns integer local integer this_1 if OnPlayerLeave_firstFree == 0 then if OnPlayerLeave_maxIndex < JASS_MAX_ARRAY_SIZE then set OnPlayerLeave_maxIndex = OnPlayerLeave_maxIndex + 1 set this_1 = OnPlayerLeave_maxIndex set OnPlayerLeave_typeId[this_1] = 1028 else call error("Out of memory: Could not create OnPlayerLeave_onPlayerLeave_PlayerData.") set this_1 = 0 endif else set OnPlayerLeave_firstFree = OnPlayerLeave_firstFree - 1 set this_1 = OnPlayerLeave_nextFree[OnPlayerLeave_firstFree] set OnPlayerLeave_typeId[this_1] = 1028 endif return this_1 endfunction function onPlayerLeave takes integer onLeave returns nothing set Players_onLeaveListener = onLeave endfunction function initPlayers takes nothing returns nothing local integer temp = Players_ALL_PLAYERS local integer clVar = alloc_LLItrClosure_forEach_PlayerData_1833() local integer clVar_1 local integer clVar_2 local integer clVar_3 local integer iterator local integer pd_1 local unit receiver local unit receiver_1 local unit receiver_2 local integer i call dispatch_LinkedList_LinkedList_LinkedList_forEach(temp, clVar) set clVar_1 = alloc_OnPlayerLeave_onPlayerLeave_PlayerData() call onPlayerLeave(clVar_1) set clVar_2 = alloc_CallbackSingle_doAfter_PlayerData() call construct_CallbackSingle(clVar_2) call doAfter(.1, clVar_2) set clVar_3 = alloc_CallbackPeriodic_doPeriodically_PlayerData() call construct_CallbackPeriodic(clVar_3) call doPeriodically(1., clVar_3) set iterator = LinkedList_iterator(PlayerData_builderPlayers) loop exitwhen not LLIterator_hasNext(iterator) set pd_1 = LLIterator_next(iterator) call PlayerData_tmods_set(pd_1, 0, new_TerrainModder(createUnit(PlayerData_p[pd_1], TerrainModder_WALKABLE_ID, BuilderConstants_hidden_x, BuilderConstants_hidden_y, 0.))) call PlayerData_tmods_set(pd_1, 1, new_TerrainModder(createUnit(PlayerData_p[pd_1], TerrainModder_UNWALKABLE_ID, BuilderConstants_hidden_x, BuilderConstants_hidden_y, 0.))) call PlayerData_tmods_set(pd_1, 2, new_TerrainModder(createUnit(PlayerData_p[pd_1], TerrainModder_SLIDEABLE_ICE_ID, BuilderConstants_hidden_x, BuilderConstants_hidden_y, 0.))) call PlayerData_tmods_set(pd_1, 3, new_TerrainModder(createUnit(PlayerData_p[pd_1], TerrainModder_SLIDEABLE_UNC_ICE_ID, BuilderConstants_hidden_x, BuilderConstants_hidden_y, 0.))) set PlayerData_prod[pd_1] = new_UnitProducer(BuilderConstants_hidden_x, BuilderConstants_hidden_y, PlayerData_p[pd_1]) set PlayerData_builder[pd_1] = new_Builder(PlayerData_p[pd_1]) set receiver = UnitEntity_actor[PlayerData_builder[pd_1]] call unit_addItemById(receiver, 1227894833) set receiver_1 = receiver call unit_addItemById(receiver_1, 1227894834) set receiver_2 = receiver_1 call unit_addItemById(receiver_2, 1227894835) set Builder_regionCount[PlayerData_builder[pd_1]] = real_round(17. / dispatch_LinkedList_LinkedList_LinkedList_size(PlayerData_builderPlayers)) set i = 0 loop exitwhen i > 28 call dispatch_RegionData_RegionData_RegionData_revealRegion(RegionData_regions[i], PlayerData_p[pd_1]) set i = i + 1 endloop endloop call LLIterator_close(iterator) endfunction function initGame takes nothing returns nothing local integer clVar call printTimed("Initializing map..", 10.) call initPlayers() call CinematicFadeBJ(bj_CINEFADETYPE_FADEOUT, 0.00, Textures_black_mask, 0., 0., 0., 0.) call CreateFogModifierRect(GameConstants_STAFF_PLAYER, FOG_OF_WAR_VISIBLE, MapBounds_playableMapRect, false, false) call VolumeGroupReset() call EndThematicMusic() set clVar = alloc_CallbackSingle_doAfter_GameInit_1611() call construct_CallbackSingle(clVar) call doAfter(0.01, clVar) endfunction function call_doAfter_GameInit takes integer this_1 returns nothing call initGame() endfunction function alloc_CallbackSingle_doAfter_GameInit_1612 takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 687 else call error("Out of memory: Could not create CallbackSingle_doAfter_GameInit.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 687 endif return this_1 endfunction function alloc_ForForceCallback_execute_Startmazes takes nothing returns integer local integer this_1 if ForForceCallback_firstFree == 0 then if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1 set this_1 = ForForceCallback_maxIndex set ForForceCallback_typeId[this_1] = 848 else call error("Out of memory: Could not create ForForceCallback_execute_Startmazes.") set this_1 = 0 endif else set ForForceCallback_firstFree = ForForceCallback_firstFree - 1 set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree] set ForForceCallback_typeId[this_1] = 848 endif return this_1 endfunction function alloc_ForForceCallback_try_Startmazes takes nothing returns integer local integer this_1 if ForForceCallback_firstFree == 0 then if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1 set this_1 = ForForceCallback_maxIndex set ForForceCallback_typeId[this_1] = 858 else call error("Out of memory: Could not create ForForceCallback_try_Startmazes.") set this_1 = 0 endif else set ForForceCallback_firstFree = ForForceCallback_firstFree - 1 set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree] set ForForceCallback_typeId[this_1] = 858 endif return this_1 endfunction function alloc_ForGroupCallback_forUnitsOfPlayer_Startmazes takes nothing returns integer local integer this_1 if ForGroupCallback_firstFree == 0 then if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1 set this_1 = ForGroupCallback_maxIndex set ForGroupCallback_typeId[this_1] = 879 else call error("Out of memory: Could not create ForGroupCallback_forUnitsOfPlayer_Startmazes.") set this_1 = 0 endif else set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1 set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree] set ForGroupCallback_typeId[this_1] = 879 endif return this_1 endfunction function initStartmazes takes nothing returns nothing local player temp = GameConstants_STAFF_PLAYER local integer clVar = alloc_ForGroupCallback_forUnitsOfPlayer_Startmazes() local integer clVar_1 local integer clVar_2 call forUnitsOfPlayer(temp, clVar) set clVar_1 = alloc_ForForceCallback_execute_Startmazes() call execute(clVar_1) set clVar_2 = alloc_ForForceCallback_try_Startmazes() call try(clVar_2) endfunction function partThree takes nothing returns nothing local integer clVar call initStartmazes() set clVar = alloc_CallbackSingle_doAfter_GameInit_1612() call construct_CallbackSingle(clVar) call doAfter(0.5, clVar) endfunction function call_doAfter_GameInit_1981 takes integer this_1 returns nothing call partThree() endfunction function alloc_CallbackSingle_doAfter_GameInit_1613 takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 688 else call error("Out of memory: Could not create CallbackSingle_doAfter_GameInit.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 688 endif return this_1 endfunction function alloc_Selector takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1169 else call error("Out of memory: Could not create Selector.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1169 endif return this_1 endfunction function Selector_init takes integer this_1 returns nothing endfunction function alloc_EventListener_add_Selector_PickSystem takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 810 else call error("Out of memory: Could not create EventListener_add_Selector_PickSystem.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 810 endif return this_1 endfunction function real_fromRad takes real this_1 returns real set real_fromRad_return_radians = this_1 return real_fromRad_return_radians endfunction function construct_Selector takes integer this_1, integer pd_1 returns nothing local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local integer clVar local unit temp local playerunitevent temp_1 call construct_UnitEntity(this_1, createUnit_2354(PlayerData_p[pd_1], PickSystem_PICK_DUMMY_ID, PickSystem_PICK_x, PickSystem_PICK_y, PickSystem_PICK_z, real_fromRad(0.))) call Selector_init(this_1) set Selector_pd[this_1] = pd_1 set receiver = UnitEntity_actor[this_1] call unit_addAbility(receiver, PickSystem_PREV_ID) set receiver_1 = receiver call unit_addAbility(receiver_1, PickSystem_NEXT_ID) set receiver_2 = receiver_1 call unit_addAbility(receiver_2, PickSystem_PICK_ID) set receiver_3 = receiver_2 call unit_setVertexColor_4202(receiver_3, Colors_COLOR_BLACK_red, Colors_COLOR_BLACK_green, Colors_COLOR_BLACK_blue, Colors_COLOR_BLACK_alpha) call player_selectSingle(PlayerData_p[pd_1], UnitEntity_actor[this_1]) set PlayerData_selector[pd_1] = this_1 set temp = UnitEntity_actor[this_1] set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST set clVar = alloc_EventListener_add_Selector_PickSystem() call construct_EventListener(clVar) set this_2940[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) call dispatch_Entity_Entity_Entity_DupletListModule_deactivate(this_1) endfunction function new_Selector takes integer pd_1 returns integer local integer this_1 = alloc_Selector() call construct_Selector(this_1, pd_1) return this_1 endfunction function startChoose takes nothing returns nothing local integer pd_1 local integer from if not PickSystem_hastStartedYet then set PickSystem_hastStartedYet = true call CinematicFadeBJ(bj_CINEFADETYPE_FADEIN, 2.00, "ReplaceableTextures\\CameraMasks\\Black_mask.blp", 0., 0., 0., 0.) call CameraSetupApplyForceDuration(gg_cam_Camera_001, true, 0.30) set from = dispatch_LinkedList_LinkedList_LinkedList_staticItr(PlayerData_allPlayers) loop exitwhen not LLIterator_hasNext(from) set pd_1 = LLIterator_next(from) call dispatch_RegionData_RegionData_RegionData_revealRegion(RegionData_regions[22], PlayerData_p[pd_1]) call new_Selector(pd_1) endloop call EnablePreSelect(true, false) endif endfunction function alloc_LLItrClosure_forEach_PickSystem takes nothing returns integer local integer this_1 if LLItrClosure_firstFree == 0 then if LLItrClosure_maxIndex < JASS_MAX_ARRAY_SIZE then set LLItrClosure_maxIndex = LLItrClosure_maxIndex + 1 set this_1 = LLItrClosure_maxIndex set LLItrClosure_typeId[this_1] = 992 else call error("Out of memory: Could not create LLItrClosure_forEach_PickSystem.") set this_1 = 0 endif else set LLItrClosure_firstFree = LLItrClosure_firstFree - 1 set this_1 = LLItrClosure_nextFree[LLItrClosure_firstFree] set LLItrClosure_typeId[this_1] = 992 endif return this_1 endfunction function startPick takes nothing returns nothing local integer temp = Players_ALL_PLAYERS local integer clVar = alloc_LLItrClosure_forEach_PickSystem() call dispatch_LinkedList_LinkedList_LinkedList_forEach(temp, clVar) endfunction function syncInitial takes nothing returns nothing local integer clVar call startChoose() call ClearMapMusic() call StopMusic(false) set clVar = alloc_CallbackSingle_doAfter_GameInit_1613() call construct_CallbackSingle(clVar) call doAfter(1., clVar) call startPick() endfunction function call_doAfter_GameInit_1982 takes integer this_1 returns nothing call syncInitial() endfunction function call_doAfter_GameInit_1983 takes integer this_1 returns nothing call dispatch_JukeBox_JukeBox_JukeBox_playNextMusic(JukeBox_jukeBox) endfunction function alloc_JukeBox takes nothing returns integer local integer this_1 if JukeBox_firstFree == 0 then if JukeBox_maxIndex < JASS_MAX_ARRAY_SIZE then set JukeBox_maxIndex = JukeBox_maxIndex + 1 set this_1 = JukeBox_maxIndex set JukeBox_typeId[this_1] = 984 else call error("Out of memory: Could not create JukeBox.") set this_1 = 0 endif else set JukeBox_firstFree = JukeBox_firstFree - 1 set this_1 = JukeBox_nextFree[JukeBox_firstFree] set JukeBox_typeId[this_1] = 984 endif return this_1 endfunction function JukeBox_init takes integer this_1 returns nothing set JukeBox_requests[this_1] = new_LinkedList() set JukeBox_randomQueue[this_1] = new_LinkedList() set JukeBox_lastWasRequest[this_1] = false set JukeBox_cb[this_1] = 0 endfunction function construct_JukeBox takes integer this_1 returns nothing call JukeBox_init(this_1) endfunction function new_JukeBox takes nothing returns integer local integer this_1 = alloc_JukeBox() call construct_JukeBox(this_1) return this_1 endfunction function alloc_Music takes nothing returns integer local integer this_1 if Music_firstFree == 0 then if Music_maxIndex < JASS_MAX_ARRAY_SIZE then set Music_maxIndex = Music_maxIndex + 1 set this_1 = Music_maxIndex set Music_typeId[this_1] = 1016 else call error("Out of memory: Could not create Music.") set this_1 = 0 endif else set Music_firstFree = Music_firstFree - 1 set this_1 = Music_nextFree[Music_firstFree] set Music_typeId[this_1] = 1016 endif return this_1 endfunction function Music_init takes integer this_1 returns nothing endfunction function string_lastIndexOf takes string this_1, string s returns integer local integer i = string_length(this_1) - string_length(s) loop exitwhen i < 0 if string_substring(this_1, i, i + string_length(s)) == s then return i endif set i = i - 1 endloop return -1 endfunction function construct_Music takes integer this_1, integer id, string path, real duration returns nothing call Music_init(this_1) set Music_spellid[this_1] = id set Music_path[this_1] = path set Music_name[this_1] = string_substring(path, string_lastIndexOf(path, "\\") + 1, string_lastIndexOf(path, ".")) set Music_duration[this_1] = duration endfunction function new_Music takes integer id, string path, real duration returns integer local integer this_1 = alloc_Music() call construct_Music(this_1, id, path, duration) return this_1 endfunction function call_doAfter_JukeBox takes integer this_1 returns nothing call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(1093677908, "Sound\\Music\\mp3Music\\Doom.mp3", 66.125)) call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(808464432, "Sound\\Music\\mp3Music\\Human1.mp3", 273.032)) call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(808464432, "Sound\\Music\\mp3Music\\Human2.mp3", 236.983)) call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(1093677900, "Sound\\Music\\mp3Music\\HumanX1.mp3", 284.646)) call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(808464432, "Sound\\Music\\mp3Music\\Orc1.mp3", 311.954)) call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(808464432, "Sound\\Music\\mp3Music\\Orc2.mp3", 313.496)) call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(808464432, "Sound\\Music\\mp3Music\\Orc3.mp3", 282.706)) call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(808464432, "Sound\\Music\\mp3Music\\OrcX1.mp3", 324.953)) call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(1093677650, "Sound\\Music\\mp3Music\\PursuitTheme.mp3", 86.537)) call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(1093677904, "Sound\\Music\\mp3Music\\SadMystery.mp3", 84.515)) call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(808464432, "Sound\\Music\\mp3Music\\Tension.mp3", 19.540)) call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(1093677909, "Sound\\Music\\mp3Music\\TragicConfrontation.mp3", 72.264)) call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(808464432, "Sound\\Music\\mp3Music\\Undead1.mp3", 303.507)) call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(808464432, "Sound\\Music\\mp3Music\\Undead2.mp3", 309.242)) call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(1093677903, "Sound\\Music\\mp3Music\\PH1.mp3", 281.582)) call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(1093677901, "Sound\\Music\\mp3Music\\ArthasTheme.mp3", 122.295)) call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(808464432, "Sound\\Music\\mp3Music\\BloodElfTheme.mp3", 144.552)) call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(1093677907, "Sound\\Music\\mp3Music\\War2IntroMusic.mp3", 81.136)) call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(1093677905, "Sound\\Music\\mp3Music\\Credits.mp3", 83.017)) call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(808464432, "Sound\\Music\\mp3Music\\Comradeship.mp3", 124.927)) call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(1093677902, "Sound\\Music\\mp3Music\\DarkAgents.mp3", 64.950)) call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(808464432, "Sound\\Music\\mp3Music\\IllidansTheme.mp3", 108.006)) call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(808464432, "Sound\\Music\\mp3Music\\LichKingTheme.mp3", 79.193)) call dispatch_LinkedList_LinkedList_LinkedList_add_1(JukeBox_musics, new_Music(1093677906, "Sound\\Music\\mp3Music\\NagaTheme.mp3", 87.1877)) set JukeBox_jukeBox = new_JukeBox() endfunction function call_doAfter_JukeBox_JukeBox takes integer this_1 returns nothing set JukeBox_cb[this_2925[this_1]] = 0 call JukeBox_playNextMusic(this_2925[this_1]) endfunction function call_doAfter_MGRandKill_MGRandKill takes integer this_1 returns nothing if MGRandKill_fx[this_2942[this_1]] != 0 then call new_SmallRandomKiller_3746(MGRandKill_spawn_x[this_2942[this_1]], MGRandKill_spawn_y[this_2942[this_1]], GameConstants_STAFF_PLAYER) call new_SmallRandomKiller_3746(MGRandKill_spawn_x[this_2942[this_1]], MGRandKill_spawn_y[this_2942[this_1]], GameConstants_STAFF_PLAYER) call new_SmallRandomKiller_3746(MGRandKill_spawn_x[this_2942[this_1]], MGRandKill_spawn_y[this_2942[this_1]], GameConstants_STAFF_PLAYER) endif endfunction function alloc_PayloadCallback_getStringList_doAfter_MemoryAccessPedestal_Pedestal takes nothing returns integer local integer this_1 if PayloadCallback_firstFree == 0 then if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1 set this_1 = PayloadCallback_maxIndex set PayloadCallback_typeId[this_1] = 1040 else call error("Out of memory: Could not create PayloadCallback_getStringList_doAfter_MemoryAccessPedestal_Pedestal.") set this_1 = 0 endif else set PayloadCallback_firstFree = PayloadCallback_firstFree - 1 set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree] set PayloadCallback_typeId[this_1] = 1040 endif return this_1 endfunction function alloc_CallbackSingle_doAfter_MemoryAccessPedestal_Pedestal takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 692 else call error("Out of memory: Could not create CallbackSingle_doAfter_MemoryAccessPedestal_Pedestal.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 692 endif return this_1 endfunction function alloc_ForForceCallback_execute_fromString_Encoder_Encoder takes nothing returns integer local integer this_1 if ForForceCallback_firstFree == 0 then if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1 set this_1 = ForForceCallback_maxIndex set ForForceCallback_typeId[this_1] = 851 else call error("Out of memory: Could not create ForForceCallback_execute_fromString_Encoder_Encoder.") set this_1 = 0 endif else set ForForceCallback_firstFree = ForForceCallback_firstFree - 1 set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree] set ForForceCallback_typeId[this_1] = 851 endif return this_1 endfunction function alloc_ForForceCallback_execute_fromString_Encoder_Encoder_1772 takes nothing returns integer local integer this_1 if ForForceCallback_firstFree == 0 then if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1 set this_1 = ForForceCallback_maxIndex set ForForceCallback_typeId[this_1] = 852 else call error("Out of memory: Could not create ForForceCallback_execute_fromString_Encoder_Encoder.") set this_1 = 0 endif else set ForForceCallback_firstFree = ForForceCallback_firstFree - 1 set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree] set ForForceCallback_typeId[this_1] = 852 endif return this_1 endfunction function alloc_ForForceCallback_execute_fromString_Encoder_Encoder_1773 takes nothing returns integer local integer this_1 if ForForceCallback_firstFree == 0 then if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1 set this_1 = ForForceCallback_maxIndex set ForForceCallback_typeId[this_1] = 853 else call error("Out of memory: Could not create ForForceCallback_execute_fromString_Encoder_Encoder.") set this_1 = 0 endif else set ForForceCallback_firstFree = ForForceCallback_firstFree - 1 set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree] set ForForceCallback_typeId[this_1] = 853 endif return this_1 endfunction function alloc_PayloadCallback_MemoryAccessPedestal_Pedestal takes nothing returns integer local integer this_1 if PayloadCallback_firstFree == 0 then if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1 set this_1 = PayloadCallback_maxIndex set PayloadCallback_typeId[this_1] = 1033 else call error("Out of memory: Could not create PayloadCallback_MemoryAccessPedestal_Pedestal.") set this_1 = 0 endif else set PayloadCallback_firstFree = PayloadCallback_firstFree - 1 set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree] set PayloadCallback_typeId[this_1] = 1033 endif return this_1 endfunction function alloc_PayloadCallback_MemoryAccessPedestal_Pedestal_1860 takes nothing returns integer local integer this_1 if PayloadCallback_firstFree == 0 then if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1 set this_1 = PayloadCallback_maxIndex set PayloadCallback_typeId[this_1] = 1034 else call error("Out of memory: Could not create PayloadCallback_MemoryAccessPedestal_Pedestal.") set this_1 = 0 endif else set PayloadCallback_firstFree = PayloadCallback_firstFree - 1 set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree] set PayloadCallback_typeId[this_1] = 1034 endif return this_1 endfunction function alloc_PayloadCallback_getStringList_parse_decompress_loadData_nullTimer_MemoryAccessPedestal_Pedestal takes nothing returns integer local integer this_1 if PayloadCallback_firstFree == 0 then if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1 set this_1 = PayloadCallback_maxIndex set PayloadCallback_typeId[this_1] = 1041 else call error("Out of memory: Could not create PayloadCallback_getStringList_parse_decompress_loadData_nullTimer_MemoryAccessPedestal_Pedestal.") set this_1 = 0 endif else set PayloadCallback_firstFree = PayloadCallback_firstFree - 1 set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree] set PayloadCallback_typeId[this_1] = 1041 endif return this_1 endfunction function alloc_PayloadCallback_getStringList_parse_decompress_loadData_nullTimer_MemoryAccessPedestal_Pedestal_1868 takes nothing returns integer local integer this_1 if PayloadCallback_firstFree == 0 then if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1 set this_1 = PayloadCallback_maxIndex set PayloadCallback_typeId[this_1] = 1042 else call error("Out of memory: Could not create PayloadCallback_getStringList_parse_decompress_loadData_nullTimer_MemoryAccessPedestal_Pedestal.") set this_1 = 0 endif else set PayloadCallback_firstFree = PayloadCallback_firstFree - 1 set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree] set PayloadCallback_typeId[this_1] = 1042 endif return this_1 endfunction function alloc_PayloadCallback_parse_MemoryAccessPedestal_Pedestal takes nothing returns integer local integer this_1 if PayloadCallback_firstFree == 0 then if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1 set this_1 = PayloadCallback_maxIndex set PayloadCallback_typeId[this_1] = 1044 else call error("Out of memory: Could not create PayloadCallback_parse_MemoryAccessPedestal_Pedestal.") set this_1 = 0 endif else set PayloadCallback_firstFree = PayloadCallback_firstFree - 1 set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree] set PayloadCallback_typeId[this_1] = 1044 endif return this_1 endfunction function alloc_PayloadCallback_parse_MemoryAccessPedestal_Pedestal_1871 takes nothing returns integer local integer this_1 if PayloadCallback_firstFree == 0 then if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1 set this_1 = PayloadCallback_maxIndex set PayloadCallback_typeId[this_1] = 1045 else call error("Out of memory: Could not create PayloadCallback_parse_MemoryAccessPedestal_Pedestal.") set this_1 = 0 endif else set PayloadCallback_firstFree = PayloadCallback_firstFree - 1 set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree] set PayloadCallback_typeId[this_1] = 1045 endif return this_1 endfunction function alloc_PayloadCallback_parse_decompress_loadData_nullTimer_MemoryAccessPedestal_Pedestal takes nothing returns integer local integer this_1 if PayloadCallback_firstFree == 0 then if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1 set this_1 = PayloadCallback_maxIndex set PayloadCallback_typeId[this_1] = 1046 else call error("Out of memory: Could not create PayloadCallback_parse_decompress_loadData_nullTimer_MemoryAccessPedestal_Pedestal.") set this_1 = 0 endif else set PayloadCallback_firstFree = PayloadCallback_firstFree - 1 set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree] set PayloadCallback_typeId[this_1] = 1046 endif return this_1 endfunction function alloc_SeqCallback_doSeq_JsonParser_JsonParser takes nothing returns integer local integer this_1 if SeqCallback_firstFree == 0 then if SeqCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set SeqCallback_maxIndex = SeqCallback_maxIndex + 1 set this_1 = SeqCallback_maxIndex set SeqCallback_typeId[this_1] = 1127 else call error("Out of memory: Could not create SeqCallback_doSeq_JsonParser_JsonParser.") set this_1 = 0 endif else set SeqCallback_firstFree = SeqCallback_firstFree - 1 set this_1 = SeqCallback_nextFree[SeqCallback_firstFree] set SeqCallback_typeId[this_1] = 1127 endif return this_1 endfunction function alloc_SeqCallback_doSeq_JsonParser_JsonParser_1894 takes nothing returns integer local integer this_1 if SeqCallback_firstFree == 0 then if SeqCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set SeqCallback_maxIndex = SeqCallback_maxIndex + 1 set this_1 = SeqCallback_maxIndex set SeqCallback_typeId[this_1] = 1128 else call error("Out of memory: Could not create SeqCallback_doSeq_JsonParser_JsonParser.") set this_1 = 0 endif else set SeqCallback_firstFree = SeqCallback_firstFree - 1 set this_1 = SeqCallback_nextFree[SeqCallback_firstFree] set SeqCallback_typeId[this_1] = 1128 endif return this_1 endfunction function cyc_BigSubString_getCombinedLength takes integer funcChoice, integer this_1 returns nothing local integer BigString_BigSubString_getCombinedLength_result local integer temp if funcChoice == 0 then if BigSubString_next[this_1] != 0 and BigSubString_next[this_1] != this_1 then set temp = BigSubString_length[this_1] call cyc_BigSubString_getCombinedLength(1, BigSubString_next[this_1]) set tempReturn_integer = temp + tempReturn_integer return endif set tempReturn_integer = BigSubString_length[this_1] return elseif funcChoice == 1 then if BigSubString_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BigSubString.getCombinedLength") else call error("Called BigSubString.getCombinedLength on invalid object.") endif endif call cyc_BigSubString_getCombinedLength(0, this_1) set BigString_BigSubString_getCombinedLength_result = tempReturn_integer set tempReturn_integer = BigString_BigSubString_getCombinedLength_result return endif endfunction function BigSubString_getSingleLength takes integer this_1 returns integer return BigSubString_length[this_1] endfunction function dispatch_BigSubString_BigString_BigSubString_getSingleLength takes integer this_1 returns integer local integer BigString_BigSubString_getSingleLength_result if BigSubString_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BigSubString.getSingleLength") else call error("Called BigSubString.getSingleLength on invalid object.") endif endif set BigString_BigSubString_getSingleLength_result = BigSubString_getSingleLength(this_1) return BigString_BigSubString_getSingleLength_result endfunction function BigSubString_getStart takes integer this_1 returns integer return BigSubString_start[this_1] endfunction function dispatch_BigSubString_BigString_BigSubString_getStart takes integer this_1 returns integer local integer BigString_BigSubString_getStart_result if BigSubString_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BigSubString.getStart") else call error("Called BigSubString.getStart on invalid object.") endif endif set BigString_BigSubString_getStart_result = BigSubString_getStart(this_1) return BigString_BigSubString_getStart_result endfunction function BigString_getSubStringData takes integer this_1, integer substring returns string local integer idx local integer offsetstart local integer offsetend if dispatch_BigSubString_BigString_BigSubString_getStart(substring) + dispatch_BigSubString_BigString_BigSubString_getSingleLength(substring) > BigString_length[this_1] then call error("string out of bounds: length: " + int_toString(BigString_length[this_1]) + " s.length: " + int_toString(dispatch_BigSubString_BigString_BigSubString_getSingleLength(substring)) + " s.start: " + int_toString(dispatch_BigSubString_BigString_BigSubString_getStart(substring))) endif if dispatch_BigSubString_BigString_BigSubString_getSingleLength(substring) > BigString_BIG_SUBSTRING_LEN then call error("substring is longer than maxsize") endif set idx = real_toInt(dispatch_BigSubString_BigString_BigSubString_getStart(substring) * 1. / BigString_BIG_SUBSTRING_LEN) set offsetstart = ModuloInteger(dispatch_BigSubString_BigString_BigSubString_getStart(substring), BigString_BIG_SUBSTRING_LEN) set offsetend = offsetstart + dispatch_BigSubString_BigString_BigSubString_getSingleLength(substring) if offsetend > BigString_BIG_SUBSTRING_LEN then return string_substring(BigString_substrings_get(this_1, idx), offsetstart, BigString_BIG_SUBSTRING_LEN) + string_substring(BigString_substrings_get(this_1, idx + 1), 0, offsetend - BigString_BIG_SUBSTRING_LEN) endif return string_substring(BigString_substrings_get(this_1, idx), offsetstart, offsetend) endfunction function dispatch_BigString_BigString_BigString_getSubStringData takes integer this_1, integer substring returns string local string BigString_BigString_getSubStringData_result if BigString_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BigString.getSubStringData") else call error("Called BigString.getSubStringData on invalid object.") endif endif set BigString_BigString_getSubStringData_result = BigString_getSubStringData(this_1, substring) return BigString_BigString_getSubStringData_result endfunction function cyc_BigSubString_getCombined takes integer funcChoice, integer this_1 returns nothing local string s local string BigString_BigSubString_getCombined_result local string temp if funcChoice == 0 then call cyc_BigSubString_getCombinedLength(1, this_1) if tempReturn_integer > BigString_BIG_SUBSTRING_LEN then call error("cannot use getCombined on oversized SubStrings. You need to iterate through the chunks") endif if BigSubString_parent[this_1] == 0 and BigSubString_preinit[this_1] == null then call error("cannot generate new cache without parent") endif set s = "" if BigSubString_preinit[this_1] != null then set s = s + BigSubString_preinit[this_1] else set s = s + dispatch_BigString_BigString_BigString_getSubStringData(BigSubString_parent[this_1], this_1) endif if BigSubString_next[this_1] != 0 then set temp = s call cyc_BigSubString_getCombined(1, BigSubString_next[this_1]) set s = temp + tempReturn_string endif set tempReturn_string = s return elseif funcChoice == 1 then if BigSubString_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BigSubString.getCombined") else call error("Called BigSubString.getCombined on invalid object.") endif endif call cyc_BigSubString_getCombined(0, this_1) set BigString_BigSubString_getCombined_result = tempReturn_string set tempReturn_string = BigString_BigSubString_getCombined_result return endif endfunction function BigString_getString takes integer this_1, integer startpos, integer plength returns string local integer modpos local integer idx local integer offsetstart local integer offsetend if startpos + plength > dispatch_BigString_BigString_BigString_getLength(this_1) then call error("2Trying to get string out of bounds") endif if plength > BigString_BIG_SUBSTRING_LEN then call error("Trying to get oversized string") endif set modpos = startpos + BigString_startoffset[this_1] set idx = real_toInt(modpos * 1. / BigString_BIG_SUBSTRING_LEN) set offsetstart = ModuloInteger(modpos, BigString_BIG_SUBSTRING_LEN) set offsetend = offsetstart + plength if offsetend > BigString_BIG_SUBSTRING_LEN then return string_substring(BigString_substrings_get(this_1, idx), offsetstart, string_length(BigString_substrings_get(this_1, idx))) + string_substring(BigString_substrings_get(this_1, idx + 1), 0, offsetend - BigString_BIG_SUBSTRING_LEN) endif return string_substring(BigString_substrings_get(this_1, idx), offsetstart, offsetend) endfunction function dispatch_BigString_BigString_BigString_getString takes integer this_1, integer startpos, integer plength returns string local string BigString_BigString_getString_result if BigString_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BigString.getString") else call error("Called BigString.getString on invalid object.") endif endif set BigString_BigString_getString_result = BigString_getString(this_1, startpos, plength) return BigString_BigString_getString_result endfunction function cyc_BigSubString_addToBigString takes integer funcChoice, integer this_1, integer target returns nothing local integer off if funcChoice == 0 then if BigSubString_preinit[this_1] != null then call dispatch_BigString_BigString_BigString_addString(target, BigSubString_preinit[this_1]) else set off = 0 loop exitwhen not (BigSubString_length[this_1] - off > BigString_BIG_SUBSTRING_LEN) call dispatch_BigString_BigString_BigString_addString(target, dispatch_BigString_BigString_BigString_getString(BigSubString_parent[this_1], BigSubString_start[this_1] + off, BigString_BIG_SUBSTRING_LEN)) set off = off + BigString_BIG_SUBSTRING_LEN endloop call dispatch_BigString_BigString_BigString_addString(target, dispatch_BigString_BigString_BigString_getString(BigSubString_parent[this_1], BigSubString_start[this_1] + off, BigSubString_length[this_1] - off)) endif if BigSubString_next[this_1] != 0 then call cyc_BigSubString_addToBigString(1, BigSubString_next[this_1], target) endif elseif funcChoice == 1 then if BigSubString_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BigSubString.addToBigString") else call error("Called BigSubString.addToBigString on invalid object.") endif endif call cyc_BigSubString_addToBigString(0, this_1, target) endif endfunction function BigString_addSubString takes integer this_1, integer substring returns nothing call cyc_BigSubString_addToBigString(1, substring, this_1) endfunction function dispatch_BigString_BigString_BigString_addSubString takes integer this_1, integer substring returns nothing if BigString_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BigString.addSubString") else call error("Called BigString.addSubString on invalid object.") endif endif call BigString_addSubString(this_1, substring) endfunction function BigNum_l_onDestroy takes integer this_1 returns nothing set BigNum_l_count = BigNum_l_count - 1 endfunction function dealloc_BigNum_l takes integer obj_1 returns nothing if BigNum_l_typeId[obj_1] == 0 then call error("Double free: object of type BigNum_l") else set BigNum_l_nextFree[BigNum_l_firstFree] = obj_1 set BigNum_l_firstFree = BigNum_l_firstFree + 1 set BigNum_l_typeId[obj_1] = 0 endif endfunction function destroyBigNum_l takes integer this_1 returns nothing call BigNum_l_onDestroy(this_1) call dealloc_BigNum_l(this_1) endfunction function dispatch_BigNum_l_destroyBigNum_l takes integer this_1 returns nothing if BigNum_l_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BigNum_l.BigNum_l") else call error("Called BigNum_l.BigNum_l on invalid object.") endif endif call destroyBigNum_l(this_1) endfunction function BigNum_onDestroy takes integer this_1 returns nothing local integer cur = BigNum_list[this_1] local integer next loop exitwhen not (cur != 0) set next = BigNum_l_next[cur] call dispatch_BigNum_l_destroyBigNum_l(cur) set cur = next endloop endfunction function dealloc_BigNum takes integer obj_1 returns nothing if BigNum_typeId[obj_1] == 0 then call error("Double free: object of type BigNum") else set BigNum_nextFree[BigNum_firstFree] = obj_1 set BigNum_firstFree = BigNum_firstFree + 1 set BigNum_typeId[obj_1] = 0 endif endfunction function destroyBigNum takes integer this_1 returns nothing call BigNum_onDestroy(this_1) call dealloc_BigNum(this_1) endfunction function dispatch_BigNum_destroyBigNum takes integer this_1 returns nothing if BigNum_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BigNum.BigNum") else call error("Called BigNum.BigNum on invalid object.") endif endif call destroyBigNum(this_1) endfunction function Encoder_onDestroy takes integer this_1 returns nothing call dispatch_BigNum_destroyBigNum(Encoder_bignum[this_1]) endfunction function dealloc_Encoder takes integer obj_1 returns nothing if Encoder_typeId[obj_1] == 0 then call error("Double free: object of type Encoder") else set Encoder_nextFree[Encoder_firstFree] = obj_1 set Encoder_firstFree = Encoder_firstFree + 1 set Encoder_typeId[obj_1] = 0 endif endfunction function destroyEncoder takes integer this_1 returns nothing call Encoder_onDestroy(this_1) call dealloc_Encoder(this_1) endfunction function dispatch_Encoder_destroyEncoder takes integer this_1 returns nothing if Encoder_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Encoder.Encoder") else call error("Called Encoder.Encoder on invalid object.") endif endif call destroyEncoder(this_1) endfunction function BigSubString_getSingle takes integer this_1 returns string if dispatch_BigSubString_BigString_BigSubString_getSingleLength(this_1) > BigString_BIG_SUBSTRING_LEN then call error("cannot use getSingle on oversized SubStrings. You need to iterate through the chunks") endif if BigSubString_parent[this_1] == 0 and BigSubString_preinit[this_1] == null then call error("cannot generate new cache without parent") endif if BigSubString_preinit[this_1] != null then return BigSubString_preinit[this_1] else return dispatch_BigString_BigString_BigString_getSubStringData(BigSubString_parent[this_1], this_1) endif endfunction function dispatch_BigSubString_BigString_BigSubString_getSingle takes integer this_1 returns string local string BigString_BigSubString_getSingle_result if BigSubString_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BigSubString.getSingle") else call error("Called BigSubString.getSingle on invalid object.") endif endif set BigString_BigSubString_getSingle_result = BigSubString_getSingle(this_1) return BigString_BigSubString_getSingle_result endfunction function Json_getString takes integer this_1, string key returns integer return Property_value[dispatch_HashMap_HashMap_HashMap_get(Json_properties[this_1], string_getHash(key))] endfunction function dispatch_Json_Json_Json_getString takes integer this_1, string key returns integer local integer Json_Json_getString_result if Json_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Json.getString") else call error("Called Json.getString on invalid object.") endif endif set Json_Json_getString_result = Json_getString(this_1, key) return Json_Json_getString_result endfunction function Json_getInt takes integer this_1, string key returns integer local integer s = dispatch_Json_Json_Json_getString(this_1, key) local string ss if s == 0 or dispatch_BigSubString_BigString_BigSubString_getSingleLength(s) == 0 then return 0 endif set ss = dispatch_BigSubString_BigString_BigSubString_getSingle(s) return string_toInt(ss) endfunction function dispatch_Json_Json_Json_getInt takes integer this_1, string key returns integer local integer Json_Json_getInt_result if Json_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Json.getInt") else call error("Called Json.getInt on invalid object.") endif endif set Json_Json_getInt_result = Json_getInt(this_1, key) return Json_Json_getInt_result endfunction function Booster_deserialize takes integer this_1, integer json returns nothing local integer speed = dispatch_Json_Json_Json_getInt(json, Booster_BOOST_SPEED_KEY) if speed > 0 then call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Booster_boostspeed[this_1], speed * 1.) endif endfunction function Decoration_deserialize takes integer this_1, integer json returns nothing local integer sc call dispatch_Decoration_Decoration_Decoration_changeAngle(this_1, real_fromDeg(int_toReal(dispatch_Json_Json_Json_getInt(json, Decoration_KEY_ANGLE)))) set sc = dispatch_Json_Json_Json_getInt(json, Decoration_KEY_SCALE) if sc > 0. then call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Decoration_scale[this_1], sc / 100.) call unit_setScale(UnitEntity_actor[this_1], dispatch_ConfigValue_ConfigValue_ConfigValue_get(Decoration_scale[this_1])) call unit_setScale(StaticSetupObject_setup[this_1], dispatch_ConfigValue_ConfigValue_ConfigValue_get(Decoration_scale[this_1])) endif endfunction function Entity_deserialize takes integer this_1, integer json returns nothing endfunction function Door_deserialize takes integer this_1, integer json returns nothing call Entity_deserialize(this_1, json) set Door_col[this_1] = dispatch_Json_Json_Json_getInt(json, Door_KEY_COLOR) call unit_setVertexColor_4202(UnitEntity_actor[this_1], EBRColor_toColor(Door_col[this_1]), EBRColor_toColor_return_green, EBRColor_toColor_return_blue, EBRColor_toColor_return_alpha) if dispatch_Json_Json_Json_getInt(json, Door_KEY_ROTATION) == 1 then call dispatch_Door_Door_Door_turn(this_1) endif endfunction function Json_getReal takes integer this_1, string key returns real return int_toReal(dispatch_Json_Json_Json_getInt(this_1, key)) endfunction function dispatch_Json_Json_Json_getReal takes integer this_1, string key returns real local real Json_Json_getReal_result if Json_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Json.getReal") else call error("Called Json.getReal on invalid object.") endif endif set Json_Json_getReal_result = Json_getReal(this_1, key) return Json_Json_getReal_result endfunction function StaticBaseObject_deserialize takes integer this_1, integer json returns nothing local real rpos_x local real rpos_y local real tuple_temp local real tuple_temp_1 call Entity_deserialize(this_1, json) set tuple_temp = Entity_serializeOrigin_x + dispatch_Json_Json_Json_getReal(json, BaseObject_KEY_RALLY_X) set tuple_temp_1 = Entity_serializeOrigin_y + dispatch_Json_Json_Json_getReal(json, BaseObject_KEY_RALLY_Y) set rpos_x = tuple_temp set rpos_y = tuple_temp_1 call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(this_1, rpos_x, rpos_y) endfunction function Jumper_deserialize takes integer this_1, integer json returns nothing call StaticBaseObject_deserialize(this_1, json) call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Jumper_jumpForce[this_1], dispatch_Json_Json_Json_getReal(json, "f") / 100.) endfunction function Key_deserialize takes integer this_1, integer json returns nothing set Key_col[this_1] = dispatch_Json_Json_Json_getInt(json, Key_KEY_COLOR) call dispatch_Key_Key_Key_recolor(this_1) endfunction function UnitCreator_deserialize takes integer this_1, integer json returns nothing set UnitCreator_spawnUnitType[this_1] = dispatch_Json_Json_Json_getInt(json, Unitcreator_KEY_SPAWN) endfunction function dispatch_Entity_Entity_Entity_deserialize takes integer this_1, integer json returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Entity.deserialize") else call error("Called Entity.deserialize on invalid object.") endif endif if Serializable_typeId[this_1] <= 1199 then if Serializable_typeId[this_1] <= 1195 then if Serializable_typeId[this_1] <= 1156 then if Serializable_typeId[this_1] <= 1155 then call Entity_deserialize(this_1, json) else call Key_deserialize(this_1, json) endif elseif Serializable_typeId[this_1] <= 1192 then call Entity_deserialize(this_1, json) else call StaticBaseObject_deserialize(this_1, json) endif elseif Serializable_typeId[this_1] <= 1198 then if Serializable_typeId[this_1] <= 1196 then call Booster_deserialize(this_1, json) else call StaticBaseObject_deserialize(this_1, json) endif else call Jumper_deserialize(this_1, json) endif elseif Serializable_typeId[this_1] <= 1211 then if Serializable_typeId[this_1] <= 1207 then if Serializable_typeId[this_1] <= 1206 then call StaticBaseObject_deserialize(this_1, json) else call UnitCreator_deserialize(this_1, json) endif elseif Serializable_typeId[this_1] <= 1210 then call StaticBaseObject_deserialize(this_1, json) else call Entity_deserialize(this_1, json) endif elseif Serializable_typeId[this_1] <= 1213 then if Serializable_typeId[this_1] <= 1212 then call Decoration_deserialize(this_1, json) else call Door_deserialize(this_1, json) endif else call Entity_deserialize(this_1, json) endif endfunction function JsonParser_setInput takes integer this_1, integer bs_1 returns nothing set JsonParser_bigInput[this_1] = bs_1 set JsonParser_currentPosition[this_1] = 0 set JsonParser_propStartPosition[this_1] = 0 set JsonParser_squareBracketLvl[this_1] = 0 set JsonParser_lastType[this_1] = 0 set JsonParser_currentToken[this_1] = null endfunction function dispatch_JsonParser_JsonParser_JsonParser_setInput takes integer this_1, integer bs_1 returns nothing if JsonParser_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling JsonParser.setInput") else call error("Called JsonParser.setInput on invalid object.") endif endif call JsonParser_setInput(this_1, bs_1) endfunction function Json_hasKey takes integer this_1, string key returns boolean local integer s = dispatch_Json_Json_Json_getString(this_1, key) return not (s == 0 or dispatch_BigSubString_BigString_BigSubString_getSingleLength(s) == 0) endfunction function dispatch_Json_Json_Json_hasKey takes integer this_1, string key returns boolean local boolean Json_Json_hasKey_result if Json_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Json.hasKey") else call error("Called Json.hasKey on invalid object.") endif endif set Json_Json_hasKey_result = Json_hasKey(this_1, key) return Json_Json_hasKey_result endfunction function Json_reset takes integer this_1 returns nothing local integer itr_1 local integer from call dispatch_HashMap_HashMap_HashMap_flush(Json_properties[this_1]) set itr_1 = dispatch_LinkedList_LinkedList_LinkedList_staticItr(Json_plist[this_1]) set from = itr_1 loop exitwhen not LLIterator_hasNext(from) call LLIterator_next(from) call dispatch_Property_destroyProperty(dispatch_LLIterator_LinkedList_LLIterator_remove(itr_1)) endloop endfunction function dispatch_Json_Json_Json_reset takes integer this_1 returns nothing if Json_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Json.reset") else call error("Called Json.reset on invalid object.") endif endif call Json_reset(this_1) endfunction function TileData_deserialize takes integer this_1, integer json returns nothing local integer rdat local integer temp local integer temp_tuple_walkableId local integer temp_tuple_walkableId_1 local real temp_x local real temp_y local real temp_x_1 local real temp_y_1 local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 local integer tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 local integer tuple_temp_7 set TileData_xoff[this_1] = dispatch_Json_Json_Json_getInt(json, Entity_KEY_X) set TileData_yoff[this_1] = dispatch_Json_Json_Json_getInt(json, Entity_KEY_Y) set tuple_temp = vec2_toTile(Entity_serializeOrigin_x + TileData_xoff[this_1] * 128., Entity_serializeOrigin_y + TileData_yoff[this_1] * 128.) set tuple_temp_1 = vec2_toTile_return_y set TileData_pos_x[this_1] = tuple_temp set TileData_pos_y[this_1] = tuple_temp_1 if not dispatch_RegionData_RegionData_RegionData_canBuild(getRegionData_3302(TileData_pos_x[this_1], TileData_pos_y[this_1]), TileData_owner[this_1]) then return endif set TileData_tile[this_1] = dispatch_Json_Json_Json_getInt(json, Entity_KEY_TYPE) if TileData_tile[this_1] == 0 then set TileData_tile[this_1] = 1 endif set rdat = getRegionData_3302(TileData_pos_x[this_1], TileData_pos_y[this_1]) set temp = TileData_tile[this_1] if temp == 1 then set tuple_temp_2 = TileData_pos_x[this_1] set tuple_temp_3 = TileData_pos_y[this_1] set temp_x = tuple_temp_2 set temp_y = tuple_temp_3 call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdat) set tuple_temp_4 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_walkableId set temp_tuple_walkableId = tuple_temp_4 call vec2_setTerrainType(temp_x, temp_y, temp_tuple_walkableId, -1, 1, 0) elseif temp == 4 then call vec2_setTerrainType(TileData_pos_x[this_1], TileData_pos_y[this_1], BuilderConstants_CONTROLLABLEICE, -1, 1, 0) elseif temp == 5 then call vec2_setTerrainType(TileData_pos_x[this_1], TileData_pos_y[this_1], BuilderConstants_UNCONTROLLABLEICE, -1, 1, 0) elseif temp == 6 then call vec2_setTerrainType(TileData_pos_x[this_1], TileData_pos_y[this_1], BuilderConstants_REVICE, -1, 1, 0) elseif temp == 2 then call vec2_setTerrainType(TileData_pos_x[this_1], TileData_pos_y[this_1], BuilderConstants_LAVA, -1, 1, 0) elseif temp == 3 then call vec2_setTerrainType(TileData_pos_x[this_1], TileData_pos_y[this_1], BuilderConstants_POISON, -1, 1, 0) else set tuple_temp_5 = TileData_pos_x[this_1] set tuple_temp_6 = TileData_pos_y[this_1] set temp_x_1 = tuple_temp_5 set temp_y_1 = tuple_temp_6 call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdat) set tuple_temp_7 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_walkableId set temp_tuple_walkableId_1 = tuple_temp_7 call vec2_setTerrainType(temp_x_1, temp_y_1, temp_tuple_walkableId_1, -1, 1, 0) endif endfunction function dispatch_TileData_TileData_TileData_deserialize takes integer this_1, integer json returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling TileData.deserialize") else call error("Called TileData.deserialize on invalid object.") endif endif call TileData_deserialize(this_1, json) endfunction function construct_TileData takes integer this_1 returns nothing call TileData_init(this_1) endfunction function new_TileData takes nothing returns integer local integer this_1 = alloc_TileData() call construct_TileData(this_1) return this_1 endfunction function alloc_ChunkedString takes nothing returns integer local integer this_1 if ChunkedString_firstFree == 0 then if ChunkedString_maxIndex < JASS_MAX_ARRAY_SIZE then set ChunkedString_maxIndex = ChunkedString_maxIndex + 1 set this_1 = ChunkedString_maxIndex set ChunkedString_typeId[this_1] = 721 else call error("Out of memory: Could not create ChunkedString.") set this_1 = 0 endif else set ChunkedString_firstFree = ChunkedString_firstFree - 1 set this_1 = ChunkedString_nextFree[ChunkedString_firstFree] set ChunkedString_typeId[this_1] = 721 endif return this_1 endfunction function alloc_Table takes nothing returns integer local integer this_1 if Table_firstFree == 0 then if Table_maxIndex < JASS_MAX_ARRAY_SIZE then set Table_maxIndex = Table_maxIndex + 1 set this_1 = Table_maxIndex set Table_typeId[this_1] = 1492 else call error("Out of memory: Could not create Table.") set this_1 = 0 endif else set Table_firstFree = Table_firstFree - 1 set this_1 = Table_nextFree[Table_firstFree] set Table_typeId[this_1] = 1492 endif return this_1 endfunction function new_Table takes nothing returns integer local integer this_1 = alloc_Table() call construct_Table(this_1) return this_1 endfunction function ChunkedString_init takes integer this_1 returns nothing set ChunkedString_table[this_1] = new_Table() set ChunkedString_chunkSize[this_1] = ChunkedString_DEFAULT_CHUNK_SIZE set ChunkedString_chunkCount[this_1] = 0 set ChunkedString_readIndex[this_1] = -1 set ChunkedString_buffer[this_1] = "" endfunction function construct_ChunkedString takes integer this_1 returns nothing call ChunkedString_init(this_1) endfunction function new_ChunkedString takes nothing returns integer local integer this_1 = alloc_ChunkedString() call construct_ChunkedString(this_1) return this_1 endfunction function File_onDestroy takes integer this_1 returns nothing endfunction function dealloc_File takes integer obj_1 returns nothing if File_typeId[obj_1] == 0 then call error("Double free: object of type File") else set File_nextFree[File_firstFree] = obj_1 set File_firstFree = File_firstFree + 1 set File_typeId[obj_1] = 0 endif endfunction function destroyFile takes integer this_1 returns nothing call File_onDestroy(this_1) call dealloc_File(this_1) endfunction function dispatch_File_destroyFile takes integer this_1 returns nothing if File_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling File.File") else call error("Called File.File on invalid object.") endif endif call destroyFile(this_1) endfunction function File_close takes integer this_1 returns nothing call dispatch_File_destroyFile(this_1) endfunction function dispatch_File_FileIO_File_close takes integer this_1 returns nothing if File_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling File.close") else call error("Called File.close on invalid object.") endif endif call File_close(this_1) endfunction function File_validateInput takes string content returns string local integer iterator = string_iterator(content) local string char_1 loop exitwhen not StringIterator_hasNext(iterator) set char_1 = StringIterator_next(iterator) if char_1 == "\\" then call StringIterator_close(iterator) return char_1 elseif char_1 == "\"" then call StringIterator_close(iterator) return char_1 endif endloop call StringIterator_close(iterator) return null endfunction function File_writePreload takes integer this_1, player p, integer buffer returns nothing local integer i local integer temp local string chunk if Player_localPlayer == p then call PreloadGenClear() call PreloadGenStart() if dispatch_ChunkedString_ChunkedString_ChunkedString_getChunkCount(buffer) >= FileIO_CHUNKS_PER_FILE then call error("FileIO(" + File_filename[this_1] + ") ERROR: String's chunk count exceeds the limit (" + int_toString(FileIO_CHUNKS_PER_FILE) + ").|r") endif set i = 0 set temp = dispatch_ChunkedString_ChunkedString_ChunkedString_getChunkCount(buffer) - 1 loop exitwhen i > temp set chunk = dispatch_ChunkedString_ChunkedString_ChunkedString_getChunk(buffer, i) call Preload("\" )\ncall BlzSetAbilityTooltip('" + FileIO_FILE_IO_ABIL_ID_STR + "', \"" + chunk + "\", " + int_toString(i) + ")\n//") set i = i + 1 endloop call Preload("\" )\nendfunction\nfunction a takes nothing returns nothing\n //") call PreloadGenEnd(File_filename[this_1]) endif endfunction function dispatch_File_FileIO_File_writePreload takes integer this_1, player p, integer buffer returns nothing if File_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling File.writePreload") else call error("Called File.writePreload on invalid object.") endif endif call File_writePreload(this_1, p, buffer) endfunction function File_write_492 takes integer this_1, player p, integer buffer returns nothing local integer i local integer temp local string str if SafetyChecks_SAFETY_CHECKS_ENABLED then set i = 0 set temp = dispatch_ChunkedString_ChunkedString_ChunkedString_getChunkCount(buffer) - 1 loop exitwhen i > temp set str = dispatch_ChunkedString_ChunkedString_ChunkedString_getChunk(buffer, i) if File_validateInput(str) != null then call error("FileIO(" + File_filename[this_1] + ") ERROR: Invalid character |cffffcc00" + File_validateInput(str) + "|r") endif set i = i + 1 endloop endif call dispatch_File_FileIO_File_writePreload(this_1, p, buffer) endfunction function dispatch_File_FileIO_File_write_2898 takes integer this_1, player p, integer buffer returns nothing if File_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling File.write") else call error("Called File.write on invalid object.") endif endif call File_write_492(this_1, p, buffer) endfunction function alloc_File takes nothing returns integer local integer this_1 if File_firstFree == 0 then if File_maxIndex < JASS_MAX_ARRAY_SIZE then set File_maxIndex = File_maxIndex + 1 set this_1 = File_maxIndex set File_typeId[this_1] = 833 else call error("Out of memory: Could not create File.") set this_1 = 0 endif else set File_firstFree = File_firstFree - 1 set this_1 = File_nextFree[File_firstFree] set File_typeId[this_1] = 833 endif return this_1 endfunction function File_init takes integer this_1 returns nothing set File_filename[this_1] = "" endfunction function construct_File takes integer this_1, string filename returns nothing call File_init(this_1) set File_filename[this_1] = filename endfunction function new_File takes string filename returns integer local integer this_1 = alloc_File() call construct_File(this_1, filename) return this_1 endfunction function player_getController takes player this_1 returns mapcontrol return GetPlayerController(this_1) endfunction function player_getSlotState takes player this_1 returns playerslotstate return GetPlayerSlotState(this_1) endfunction function player_isIngame takes player this_1 returns boolean return player_getSlotState(this_1) == PLAYER_SLOT_STATE_PLAYING and player_getController(this_1) == MAP_CONTROL_USER endfunction function string_endsWith takes string this_1, string s returns boolean local integer len if s == "" then return true endif set len = string_length(this_1) if string_length(s) > len then return false endif return string_substring(this_1, len - string_length(s), len) == s endfunction function player_saveData takes player this_1, string slotName, integer data_1 returns nothing local string cond_result local integer receiver local integer receiver_1 if not player_isIngame(this_1) then call error("Attempting to save data for player who isn't ingame! id: " + int_toString(player_getId(this_1))) endif if string_endsWith(slotName, ".pld") then set cond_result = slotName else set cond_result = slotName + ".pld" endif set receiver = new_File(cond_result) call dispatch_File_FileIO_File_write_2898(receiver, this_1, data_1) set receiver_1 = receiver call dispatch_File_FileIO_File_close(receiver_1) endfunction function onExecute_compress_MemoryAccessPedestal_Pedestal takes integer this_1, integer cb_1 returns nothing local integer compressedData = PayloadCallback_customData[cb_1] local integer cstring = new_ChunkedString() local integer i = 0 local integer temp = dispatch_BigString_BigString_BigString_getLength(compressedData) / BigString_BIG_SUBSTRING_LEN local integer remain local texttag receiver loop exitwhen i > temp set remain = min_2(BigString_BIG_SUBSTRING_LEN, dispatch_BigString_BigString_BigString_getLength(compressedData) - i * BigString_BIG_SUBSTRING_LEN) call dispatch_ChunkedString_ChunkedString_ChunkedString_append(cstring, dispatch_BigString_BigString_BigString_getString(compressedData, i * BigString_BIG_SUBSTRING_LEN, remain)) set i = i + 1 endloop call player_saveData(Entity_owner[this_3010[this_1]], "EBR\\savedata\\dataSlot" + int_toString(MemoryAccessPedestal_currentSlotId[this_3010[this_1]]) + ".pld", cstring) call dispatch_ChunkedString_destroyChunkedString(cstring) set receiver = FText_tt[MemoryAccessPedestal_ttag[this_3010[this_1]]] call texttag_center(receiver, Entity_pos_x[this_3010[this_1]], Entity_pos_y[this_3010[this_1]], Entity_pos_z[this_3010[this_1]], "|cffFFBD21save finished!", 10.) call dispatch_BigString_destroyBigString(big_2202[this_1]) call dispatch_HashMap_HashMap_HashMap_flush(MemoryAccessPedestal_tileMap[this_3010[this_1]]) call unit_unpause(UnitEntity_actor[this_3010[this_1]]) endfunction function alloc_SeqCallback_doSeq_decodePositions_LZW takes nothing returns integer local integer this_1 if SeqCallback_firstFree == 0 then if SeqCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set SeqCallback_maxIndex = SeqCallback_maxIndex + 1 set this_1 = SeqCallback_maxIndex set SeqCallback_typeId[this_1] = 1132 else call error("Out of memory: Could not create SeqCallback_doSeq_decodePositions_LZW.") set this_1 = 0 endif else set SeqCallback_firstFree = SeqCallback_firstFree - 1 set this_1 = SeqCallback_nextFree[SeqCallback_firstFree] set SeqCallback_typeId[this_1] = 1132 endif return this_1 endfunction function onExecute_decodePositions_LZW takes integer this_1, integer cb1_1 returns nothing local integer positions_1 = PayloadCallback_customData[cb1_1] local integer itr_1 = dispatch_LinkedList_LinkedList_LinkedList_staticItr(positions_1) local string A_2 = "" local string B_1 = "" local integer clVar = alloc_SeqCallback_doSeq_decodePositions_LZW() call construct_SeqCallback(clVar) set itr_2534[clVar] = itr_1 set A_1[clVar] = A_2 set B_70[clVar] = B_1 set output_2567[clVar] = output[this_1] set onFinish_2560[clVar] = onFinish_2559[this_1] call doSeq(clVar) endfunction function alloc_CallbackSingle_nullTimer_load_LZW takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 720 else call error("Out of memory: Could not create CallbackSingle_nullTimer_load_LZW.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 720 endif return this_1 endfunction function PayloadCallback_onDestroy takes integer this_1 returns nothing endfunction function dealloc_PayloadCallback takes integer obj_1 returns nothing if PayloadCallback_typeId[obj_1] == 0 then call error("Double free: object of type PayloadCallback") else set PayloadCallback_nextFree[PayloadCallback_firstFree] = obj_1 set PayloadCallback_firstFree = PayloadCallback_firstFree + 1 set PayloadCallback_typeId[obj_1] = 0 endif endfunction function destroyPayloadCallback takes integer this_1 returns nothing call PayloadCallback_onDestroy(this_1) call dealloc_PayloadCallback(this_1) endfunction function dispatch_PayloadCallback_destroyPayloadCallback takes integer this_1 returns nothing if PayloadCallback_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling PayloadCallback.PayloadCallback") else call error("Called PayloadCallback.PayloadCallback on invalid object.") endif endif call destroyPayloadCallback(this_1) endfunction function onExecute_load_LZW takes integer this_1, integer cb_1 returns nothing local integer clVar if PayloadCallback_customData[cb_1] == 1 then set clVar = alloc_CallbackSingle_nullTimer_load_LZW() call construct_CallbackSingle(clVar) set encoder_2347[clVar] = encoder_2346[this_1] set onFinish_2555[clVar] = onFinish_2554[this_1] call nullTimer(clVar) else call error("loaded input is invalid") endif call dispatch_PayloadCallback_destroyPayloadCallback(cb_1) endfunction function cyc_onExecute_save_doSeq_LZW takes integer funcChoice, integer this_1, integer pc, string key, integer parser, integer finalCallback_1 returns nothing local integer clVar local integer str local integer receiver local integer temp local integer clVar_1 local integer clVar_2 local integer temp_1 local string temp_2 local integer temp_3 local integer temp_4 local string temp_5 local integer temp_6 local integer receiver_1 local integer json local real npos_x local real npos_y local integer tId local integer obj_1 local real tuple_temp local real tuple_temp_1 local texttag receiver_2 local integer pcb local integer clVar_3 local texttag receiver_3 local integer td_1 local integer bs_1 local integer itr_1 local integer pcb_1 local integer clVar_4 local integer clVar_5 local integer clVar_6 local integer clVar_7 local integer encoded local integer clVar_8 local integer temp_7 local boolean continue local integer next local integer receiver_4 local integer clVar_9 local texttag receiver_5 local integer temp_8 local integer temp_9 local integer clVar_10 local integer next_1 local integer receiver_6 local integer clVar_11 local texttag receiver_7 local integer clVar_12 local integer temp_10 local integer temp_11 if funcChoice == 0 then set PayloadCallback_customData[onFinish_2553[this_1]] = PayloadCallback_customData[pc] call dispatch_Encoder_destroyEncoder(encoder_2345[this_1]) call cyc_onExecute_save_doSeq_LZW(24, onFinish_2553[this_1], 0, null, 0, 0) elseif funcChoice == 1 then if JsonParser_outputList[this_1] != 0 then call dispatch_LinkedList_destroyLinkedList(JsonParser_outputList[this_1]) endif set JsonParser_outputList[this_1] = new_LinkedList() if dispatch_BigString_BigString_BigString_getLength(JsonParser_bigInput[this_1]) <= 2 then call Log_debug("skip empty list") call cyc_onExecute_save_doSeq_LZW(24, pc, 0, null, 0, 0) else set clVar = alloc_SeqCallback_doSeq_JsonParser_JsonParser() call construct_SeqCallback(clVar) set this_2902[clVar] = this_1 set finalCallback[clVar] = pc call doSeq(clVar) endif elseif funcChoice == 2 then if JsonParser_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling JsonParser.parseList") else call error("Called JsonParser.parseList on invalid object.") endif endif call cyc_onExecute_save_doSeq_LZW(1, this_1, pc, null, 0, 0) elseif funcChoice == 3 then set str = dispatch_Json_Json_Json_getString(this_1, key) set BigSubString_next[str] = 0 set PayloadCallback_customData[finalCallback_1] = parser set temp = parser set receiver = new_BigString() call dispatch_BigString_BigString_BigString_addSubString(receiver, str) call dispatch_JsonParser_JsonParser_JsonParser_setInput(temp, receiver) if Printing_config_DEBUG_LEVEL == 0 then call dispatch_BigString_BigString_BigString_debugPrint(JsonParser_bigInput[parser]) endif call cyc_onExecute_save_doSeq_LZW(2, parser, finalCallback_1, null, 0, 0) elseif funcChoice == 4 then if Json_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Json.getStringList") else call error("Called Json.getStringList on invalid object.") endif endif call cyc_onExecute_save_doSeq_LZW(3, this_1, 0, key, parser, finalCallback_1) elseif funcChoice == 5 then call printLog(1, "on finish parse") if dispatch_Json_Json_Json_hasKey(JsonParser_output[MemoryAccessPedestal_parser[ref_2610[this_1]]], MemoryAccessPedestal_ENTITIES_KEY) then set temp_1 = JsonParser_output[MemoryAccessPedestal_parser[ref_2610[this_1]]] set temp_2 = MemoryAccessPedestal_ENTITIES_KEY set temp_3 = MemoryAccessPedestal_listparser[ref_2610[this_1]] set clVar_1 = alloc_PayloadCallback_getStringList_parse_decompress_loadData_nullTimer_MemoryAccessPedestal_Pedestal() call construct_PayloadCallback(clVar_1) set ref_2611[clVar_1] = ref_2610[this_1] call cyc_onExecute_save_doSeq_LZW(4, temp_1, 0, temp_2, temp_3, clVar_1) elseif dispatch_Json_Json_Json_hasKey(JsonParser_output[MemoryAccessPedestal_parser[ref_2610[this_1]]], MemoryAccessPedestal_TILES_KEY) then set temp_4 = JsonParser_output[MemoryAccessPedestal_parser[ref_2610[this_1]]] set temp_5 = MemoryAccessPedestal_TILES_KEY set temp_6 = MemoryAccessPedestal_listparser[ref_2610[this_1]] set clVar_2 = alloc_PayloadCallback_getStringList_parse_decompress_loadData_nullTimer_MemoryAccessPedestal_Pedestal_1868() call construct_PayloadCallback(clVar_2) set ref_2612[clVar_2] = ref_2610[this_1] call cyc_onExecute_save_doSeq_LZW(4, temp_4, 0, temp_5, temp_6, clVar_2) endif elseif funcChoice == 6 then call printLog(1, "doSeq loadTile2s") set receiver_1 = td_2883[this_1] call dispatch_TileData_TileData_TileData_deserialize(receiver_1, JsonParser_output[MemoryAccessPedestal_parser[this_3006[this_1]]]) call dispatch_Json_Json_Json_reset(JsonParser_output[MemoryAccessPedestal_parser[this_3006[this_1]]]) call cyc_onExecute_save_doSeq_LZW(24, cb1[this_1], 0, null, 0, 0) elseif funcChoice == 7 then set json = JsonParser_output[MemoryAccessPedestal_listparser[this_3002[this_1]]] set tuple_temp = dispatch_Json_Json_Json_getReal(json, Entity_KEY_X) set tuple_temp_1 = dispatch_Json_Json_Json_getReal(json, Entity_KEY_Y) set npos_x = tuple_temp set npos_y = tuple_temp_1 set tId = dispatch_Json_Json_Json_getInt(json, Entity_KEY_TYPE) set obj_1 = newObjectFromId(Entity_owner[this_3002[this_1]], vec2_op_plus(vec3_toVec2(Entity_serializeOrigin_x, Entity_serializeOrigin_y, Entity_serializeOrigin_z), vec3_toVec2_return_y, npos_x, npos_y), vec2_op_plus_return_y, tId) if obj_1 != 0 and Serializable_typeId[obj_1] > 0 then call dispatch_Entity_Entity_Entity_deserialize(obj_1, JsonParser_output[MemoryAccessPedestal_listparser[this_3002[this_1]]]) else call Log_debug("couldn't fine serializable type") endif call dispatch_Json_Json_Json_reset(JsonParser_output[MemoryAccessPedestal_listparser[this_3002[this_1]]]) call cyc_onExecute_save_doSeq_LZW(24, cb_2285[this_1], 0, null, 0, 0) elseif funcChoice == 8 then call printLog(1, "load tiles1") call cyc_onExecute_save_doSeq_LZW(13, ref_2612[this_1], JsonParser_outputList[PayloadCallback_customData[pc]], null, 0, 0) elseif funcChoice == 9 then set receiver_2 = FText_tt[MemoryAccessPedestal_ttag[this_1]] call texttag_center(receiver_2, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], "|cff0884CEloading Entities...", 10.) set MemoryAccessPedestal_itr[this_1] = dispatch_LinkedList_LinkedList_LinkedList_staticItr(pc) set clVar_3 = alloc_PayloadCallback_MemoryAccessPedestal_Pedestal() call construct_PayloadCallback(clVar_3) set this_3001[clVar_3] = this_1 set pcb = clVar_3 call cyc_onExecute_save_doSeq_LZW(24, pcb, 0, null, 0, 0) elseif funcChoice == 10 then if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling MemoryAccessPedestal.loadEntities") else call error("Called MemoryAccessPedestal.loadEntities on invalid object.") endif endif call cyc_onExecute_save_doSeq_LZW(9, this_1, pc, null, 0, 0) elseif funcChoice == 11 then call cyc_onExecute_save_doSeq_LZW(10, ref_2611[this_1], JsonParser_outputList[MemoryAccessPedestal_listparser[ref_2611[this_1]]], null, 0, 0) elseif funcChoice == 12 then call printLog(1, "load tiles2") set receiver_3 = FText_tt[MemoryAccessPedestal_ttag[this_1]] call texttag_center(receiver_3, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], "|cff0884CEloading Tiles...", 10.) set td_1 = new_TileData() set bs_1 = new_BigString() set TileData_owner[td_1] = Entity_owner[this_1] set itr_1 = dispatch_LinkedList_LinkedList_LinkedList_staticItr(pc) set clVar_4 = alloc_PayloadCallback_MemoryAccessPedestal_Pedestal_1860() call construct_PayloadCallback(clVar_4) set itr_2536[clVar_4] = itr_1 set bs_2277[clVar_4] = bs_1 set this_3005[clVar_4] = this_1 set td[clVar_4] = td_1 set pcb_1 = clVar_4 call cyc_onExecute_save_doSeq_LZW(24, pcb_1, 0, null, 0, 0) elseif funcChoice == 13 then if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling MemoryAccessPedestal.loadTiles") else call error("Called MemoryAccessPedestal.loadTiles on invalid object.") endif endif call cyc_onExecute_save_doSeq_LZW(12, this_1, pc, null, 0, 0) elseif funcChoice == 14 then call printLog(1, "load tiles1") call cyc_onExecute_save_doSeq_LZW(13, this_3004[this_1], JsonParser_outputList[PayloadCallback_customData[pc]], null, 0, 0) elseif funcChoice == 15 then call Log_debug("loaded..") set clVar_5 = alloc_ForForceCallback_execute_fromString_Encoder_Encoder() set this_2898[clVar_5] = this_2897[this_1] call execute(clVar_5) call Log_debug("decoded..") set clVar_6 = alloc_ForForceCallback_execute_fromString_Encoder_Encoder_1772() set this_2899[clVar_6] = this_2897[this_1] call execute(clVar_6) call Log_debug("claned..") set clVar_7 = alloc_ForForceCallback_execute_fromString_Encoder_Encoder_1773() set this_2900[clVar_7] = this_2897[this_1] call execute(clVar_7) call Log_debug("hashed..") set PayloadCallback_customData[onFinishLoad[this_1]] = boolean_toInt(Encoder_inputhash[this_2897[this_1]] == Encoder_comparehash[this_2897[this_1]]) call cyc_onExecute_save_doSeq_LZW(24, onFinishLoad[this_1], 0, null, 0, 0) elseif funcChoice == 16 then call Log_debug("positions encoded") set encoded = PayloadCallback_customData[pc] call dispatch_BigString_BigString_BigString_debugPrint(encoded) set PayloadCallback_customData[onFinish_2558[this_1]] = encoded call cyc_onExecute_save_doSeq_LZW(24, onFinish_2558[this_1], 0, null, 0, 0) elseif funcChoice == 17 then call printLog(1, "on finish decompress") call dispatch_JsonParser_JsonParser_JsonParser_setInput(MemoryAccessPedestal_parser[ref[this_1]], PayloadCallback_customData[pc]) set temp_7 = MemoryAccessPedestal_parser[ref[this_1]] set clVar_8 = alloc_PayloadCallback_parse_decompress_loadData_nullTimer_MemoryAccessPedestal_Pedestal() call construct_PayloadCallback(clVar_8) set ref_2610[clVar_8] = ref[this_1] call cyc_onExecute_save_doSeq_LZW(20, temp_7, clVar_8, null, 0, 0) elseif funcChoice == 18 then set continue = true call printLog(1, "doSeq loadTiles") if dispatch_LLIterator_LinkedList_LLIterator_hasNext(itr_2536[this_1]) then call dispatch_BigString_BigString_BigString_reset(bs_2277[this_1]) set next = dispatch_LLIterator_LinkedList_LLIterator_next(itr_2536[this_1]) set BigSubString_next[next] = 0 call cyc_BigSubString_getCombined(1, next) call printLog(1, "doSeq loadTiles1: " + tempReturn_string) set temp_8 = MemoryAccessPedestal_parser[this_3005[this_1]] set receiver_4 = bs_2277[this_1] call dispatch_BigString_BigString_BigString_addSubString(receiver_4, next) call dispatch_JsonParser_JsonParser_JsonParser_setInput(temp_8, receiver_4) set temp_9 = MemoryAccessPedestal_parser[this_3005[this_1]] set clVar_9 = alloc_PayloadCallback_parse_MemoryAccessPedestal_Pedestal_1871() call construct_PayloadCallback(clVar_9) set td_2883[clVar_9] = td[this_1] set this_3006[clVar_9] = this_3005[this_1] set cb1[clVar_9] = pc call cyc_onExecute_save_doSeq_LZW(20, temp_9, clVar_9, null, 0, 0) else set continue = false call printLog(1, "load finished") set receiver_5 = FText_tt[MemoryAccessPedestal_ttag[this_3005[this_1]]] call texttag_center(receiver_5, Entity_pos_x[this_3005[this_1]], Entity_pos_y[this_3005[this_1]], Entity_pos_z[this_3005[this_1]], "|cffFFBD21load finished!", 10.) call dispatch_TileData_destroyTileData(td[this_1]) call unit_unpause(UnitEntity_actor[this_3005[this_1]]) endif set tempReturn_boolean = continue return elseif funcChoice == 19 then if JsonParser_bigInput[this_1] == 0 or dispatch_BigString_BigString_BigString_getLength(JsonParser_bigInput[this_1]) <= 0 then call Log_debug("skip empty input") call cyc_onExecute_save_doSeq_LZW(24, pc, 0, null, 0, 0) return endif call dispatch_BigString_BigString_BigString_debugPrint(JsonParser_bigInput[this_1]) call dispatch_Json_Json_Json_reset(JsonParser_output[this_1]) set clVar_10 = alloc_SeqCallback_doSeq_JsonParser_JsonParser_1894() call construct_SeqCallback(clVar_10) set this_2903[clVar_10] = this_1 set callback[clVar_10] = pc call doSeq(clVar_10) elseif funcChoice == 20 then if JsonParser_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling JsonParser.parse") else call error("Called JsonParser.parse on invalid object.") endif endif call cyc_onExecute_save_doSeq_LZW(19, this_1, pc, null, 0, 0) elseif funcChoice == 21 then if dispatch_LLIterator_LinkedList_LLIterator_hasNext(MemoryAccessPedestal_itr[this_3001[this_1]]) then call dispatch_BigString_BigString_BigString_reset(MemoryAccessPedestal_bs[this_3001[this_1]]) set next_1 = dispatch_LLIterator_LinkedList_LLIterator_next(MemoryAccessPedestal_itr[this_3001[this_1]]) set BigSubString_next[next_1] = 0 set temp_10 = MemoryAccessPedestal_listparser[this_3001[this_1]] set receiver_6 = MemoryAccessPedestal_bs[this_3001[this_1]] call dispatch_BigString_BigString_BigString_addSubString(receiver_6, next_1) call dispatch_JsonParser_JsonParser_JsonParser_setInput(temp_10, receiver_6) set temp_11 = MemoryAccessPedestal_listparser[this_3001[this_1]] set clVar_11 = alloc_PayloadCallback_parse_MemoryAccessPedestal_Pedestal() call construct_PayloadCallback(clVar_11) set this_3002[clVar_11] = this_3001[this_1] set cb_2285[clVar_11] = pc call cyc_onExecute_save_doSeq_LZW(20, temp_11, clVar_11, null, 0, 0) else set receiver_7 = FText_tt[MemoryAccessPedestal_ttag[this_3001[this_1]]] call texttag_center(receiver_7, Entity_pos_x[this_3001[this_1]], Entity_pos_y[this_3001[this_1]], Entity_pos_z[this_3001[this_1]], "|cff0884CEEntites loaded!", 10.) call printLog(1, "entities loaded") set clVar_12 = alloc_CallbackSingle_doAfter_MemoryAccessPedestal_Pedestal() call construct_CallbackSingle(clVar_12) set this_3003[clVar_12] = this_3001[this_1] call doAfter(0.5, clVar_12) endif elseif funcChoice == 22 then if PayloadCallback_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling PayloadCallback.onExecute") else call error("Called PayloadCallback.onExecute on invalid object.") endif endif if PayloadCallback_typeId[this_1] <= 1040 then if PayloadCallback_typeId[this_1] <= 1036 then if PayloadCallback_typeId[this_1] <= 1034 then if PayloadCallback_typeId[this_1] <= 1033 then call cyc_onExecute_save_doSeq_LZW(21, this_1, pc, null, 0, 0) else call cyc_onExecute_save_doSeq_LZW(18, this_1, pc, null, 0, 0) endif elseif PayloadCallback_typeId[this_1] <= 1035 then call onExecute_compress_MemoryAccessPedestal_Pedestal(this_1, pc) else call onExecute_decodePositions_LZW(this_1, pc) endif elseif PayloadCallback_typeId[this_1] <= 1038 then if PayloadCallback_typeId[this_1] <= 1037 then call cyc_onExecute_save_doSeq_LZW(17, this_1, pc, null, 0, 0) else call cyc_onExecute_save_doSeq_LZW(16, this_1, pc, null, 0, 0) endif elseif PayloadCallback_typeId[this_1] <= 1039 then call cyc_onExecute_save_doSeq_LZW(15, this_1, pc, null, 0, 0) else call cyc_onExecute_save_doSeq_LZW(14, this_1, pc, null, 0, 0) endif elseif PayloadCallback_typeId[this_1] <= 1044 then if PayloadCallback_typeId[this_1] <= 1042 then if PayloadCallback_typeId[this_1] <= 1041 then call cyc_onExecute_save_doSeq_LZW(11, this_1, pc, null, 0, 0) else call cyc_onExecute_save_doSeq_LZW(8, this_1, pc, null, 0, 0) endif elseif PayloadCallback_typeId[this_1] <= 1043 then call onExecute_load_LZW(this_1, pc) else call cyc_onExecute_save_doSeq_LZW(7, this_1, pc, null, 0, 0) endif elseif PayloadCallback_typeId[this_1] <= 1046 then if PayloadCallback_typeId[this_1] <= 1045 then call cyc_onExecute_save_doSeq_LZW(6, this_1, pc, null, 0, 0) else call cyc_onExecute_save_doSeq_LZW(5, this_1, pc, null, 0, 0) endif else call cyc_onExecute_save_doSeq_LZW(0, this_1, pc, null, 0, 0) endif elseif funcChoice == 23 then call cyc_onExecute_save_doSeq_LZW(22, this_1, this_1, null, 0, 0) elseif funcChoice == 24 then if PayloadCallback_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling PayloadCallback.doStep") else call error("Called PayloadCallback.doStep on invalid object.") endif endif call cyc_onExecute_save_doSeq_LZW(23, this_1, 0, null, 0, 0) endif endfunction function call_doAfter_MemoryAccessPedestal_Pedestal takes integer this_1 returns nothing local integer clVar local texttag receiver local integer temp local string temp_1 local integer temp_2 if dispatch_Json_Json_Json_hasKey(JsonParser_output[MemoryAccessPedestal_parser[this_3003[this_1]]], MemoryAccessPedestal_TILES_KEY) then set temp = JsonParser_output[MemoryAccessPedestal_parser[this_3003[this_1]]] set temp_1 = MemoryAccessPedestal_TILES_KEY set temp_2 = MemoryAccessPedestal_listparser[this_3003[this_1]] set clVar = alloc_PayloadCallback_getStringList_doAfter_MemoryAccessPedestal_Pedestal() call construct_PayloadCallback(clVar) set this_3004[clVar] = this_3003[this_1] call cyc_onExecute_save_doSeq_LZW(4, temp, 0, temp_1, temp_2, clVar) else call printLog(1, "load finished") set receiver = FText_tt[MemoryAccessPedestal_ttag[this_3003[this_1]]] call texttag_center(receiver, Entity_pos_x[this_3003[this_1]], Entity_pos_y[this_3003[this_1]], Entity_pos_z[this_3003[this_1]], "|cffFFBD21load finished!", 10.) call unit_unpause(UnitEntity_actor[this_3003[this_1]]) endif endfunction function call_doAfter_Minigame_Minigame takes integer this_1 returns nothing call dispatch_Minigame_Minigame_Minigame_reset(this_2952[this_1]) endfunction function call_doAfter_Minigame_Minigame_1989 takes integer this_1 returns nothing if not Escaper_camlock[PlayerData_escaper[pd[this_1]]] then call player_panCamToTimed(PlayerData_p[pd[this_1]], UnitEntity_actor[PlayerData_escaper[pd[this_1]]], 0.) endif call player_select(PlayerData_p[pd[this_1]], UnitEntity_actor[PlayerData_escaper[pd[this_1]]]) endfunction function call_doAfter_Minion_Minion takes integer this_1 returns nothing call cyc_RevivePoint_terminate(18, this_2916[this_1]) endfunction function call_doAfter_Minion_Minion_1991 takes integer this_1 returns nothing call effect_destr(fearEffect[this_1]) set Minion_state[this_2917[this_1]] = 0 endfunction function alloc_CallbackSingle_doAfter_doAfter_Minion_Minion takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 705 else call error("Out of memory: Could not create CallbackSingle_doAfter_doAfter_Minion_Minion.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 705 endif return this_1 endfunction function alloc_ForGroupCallback_forUnitsInRange_doAfter_Minion_Minion takes nothing returns integer local integer this_1 if ForGroupCallback_firstFree == 0 then if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1 set this_1 = ForGroupCallback_maxIndex set ForGroupCallback_typeId[this_1] = 871 else call error("Out of memory: Could not create ForGroupCallback_forUnitsInRange_doAfter_Minion_Minion.") set this_1 = 0 endif else set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1 set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree] set ForGroupCallback_typeId[this_1] = 871 endif return this_1 endfunction function call_doAfter_Minion_Minion_1992 takes integer this_1 returns nothing local real facing_radians local real tpos_x_1 local real tpos_y_1 local integer clVar local integer clVar_1 local real temp_x local real temp_y local real temp local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 if Minion_currentHP[this_2918[this_1]] > 0. then set tuple_temp = unit_getFacingAngle(UnitEntity_actor[this_2918[this_1]]) set facing_radians = tuple_temp set tuple_temp_1 = vec2_polarOffset(vec3_toVec2(dispatch_UnitEntity_Entity_UnitEntity_getPos(this_2918[this_1]), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z), vec3_toVec2_return_y, facing_radians, 80.) set tuple_temp_2 = vec2_polarOffset_return_y set tpos_x_1 = tuple_temp_1 set tpos_y_1 = tuple_temp_2 call flashEffect_3280(Abilities_manaFlareBoltImpact, tpos_x_1, tpos_y_1) set tuple_temp_3 = tpos_x_1 set tuple_temp_4 = tpos_y_1 set temp_x = tuple_temp_3 set temp_y = tuple_temp_4 set temp = Minion_ATTACK_RANGE set clVar = alloc_ForGroupCallback_forUnitsInRange_doAfter_Minion_Minion() set this_2919[clVar] = this_2918[this_1] call forUnitsInRange(temp_x, temp_y, temp, clVar) set clVar_1 = alloc_CallbackSingle_doAfter_doAfter_Minion_Minion() call construct_CallbackSingle(clVar_1) set this_2920[clVar_1] = this_2918[this_1] call doAfter(1.3, clVar_1) endif endfunction function call_doAfter_PlayerData takes integer this_1 returns nothing call rebuildBoard() endfunction function FirstSnowMaze_initMaze takes integer this_1 returns nothing local integer tealDoor local integer receiver local integer purpleDoor local integer receiver_1 local integer receiver_2 local integer k1 local integer k2 local integer receiver_3 local unit receiver_4 local integer receiver_5 local unit receiver_6 set Startmaze_inited[this_1] = true set tealDoor = new_Door(gg_unit_dor2_0023) set receiver = tealDoor call dispatch_Door_Door_Door_changeColor(receiver, 1093678423) set purpleDoor = new_Door(gg_unit_dor2_0011) set receiver_1 = purpleDoor call dispatch_Door_Door_Door_changeColor(receiver_1, 1093678419) set receiver_2 = receiver_1 call dispatch_Door_Door_Door_turn(receiver_2) set k1 = new_Knockbacker_3704(unit_getPos(gg_unit_knck_0033), unit_getPos_return_y, unit_getOwner(gg_unit_knck_0033), 0.) call unit_remove(gg_unit_knck_0033) set k2 = new_Knockbacker_3704(unit_getPos(gg_unit_knck_0034), unit_getPos_return_y, unit_getOwner(gg_unit_knck_0034), 0.) call unit_remove(gg_unit_knck_0034) call unit_issuePointOrder(SetupObject_setup[k1], "patrol", 5920.01, -4320.) call unit_issuePointOrder(SetupObject_setup[k2], "patrol", 5110.01, -3830.) call unit_issuePointOrder(gg_unit_bisk_0020, "patrol", 6800.01, -5237.) call unit_issuePointOrder(gg_unit_bisk_0018, "patrol", 6000.01, -6000.) set receiver_3 = unit_getEntity(gg_unit_sick_0013) call dispatch_UnitEntity_Entity_UnitEntity_setPos(receiver_3, 5300.01, -6100., 0.) set receiver_4 = gg_unit_sick_0013 call unit_issuePointOrder(receiver_4, "patrol", 5300.01, -5700.) set receiver_5 = unit_getEntity(gg_unit_sick_0014) call dispatch_UnitEntity_Entity_UnitEntity_setPos(receiver_5, 5100.01, -6100., 0.) set receiver_6 = gg_unit_sick_0014 call unit_issuePointOrder(receiver_6, "patrol", 5100.01, -5700.) call unit_issuePointOrder(gg_unit_sick_0012, "patrol", 6500.01, -4400.) call unit_issuePointOrder(gg_unit_sick_0036, "patrol", 4320.01, -5200.) endfunction function alloc_CallbackSingle_doAfter_FourthCitadelleMaze_FourthCitadelle takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 684 else call error("Out of memory: Could not create CallbackSingle_doAfter_FourthCitadelleMaze_FourthCitadelle.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 684 endif return this_1 endfunction function alloc_EventListener_add_Spinner_Spinner takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 816 else call error("Out of memory: Could not create EventListener_add_Spinner_Spinner.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 816 endif return this_1 endfunction function construct_Spinner takes integer this_1, unit existing returns nothing local unit receiver local unit receiver_1 local integer clVar local unit temp local playerunitevent temp_1 call construct_SetupObject(this_1, createUnit(unit_getOwner(existing), BuilderConstants_SPINNER_ID, unit_getPos(existing), unit_getPos_return_y, 0.), existing, 0.) call Spinner_init(this_1) set Entity_sleeps[this_1] = false set receiver = SetupObject_setup[this_1] call unit_addAbility(receiver, BuilderConstants_TURN_OFF_ID) set receiver_1 = receiver call unit_addAbility(receiver_1, Basics_GHOST_INVIS_ID) set temp = SetupObject_setup[this_1] set temp_1 = EVENT_PLAYER_UNIT_SPELL_EFFECT set clVar = alloc_EventListener_add_Spinner_Spinner() call construct_EventListener(clVar) set this_2995[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) endfunction function new_Spinner takes unit existing returns integer local integer this_1 = alloc_Spinner() call construct_Spinner(this_1, existing) return this_1 endfunction function construct_Teleporter2 takes integer this_1, unit existing returns nothing call construct_StaticBaseObject(this_1, unit_getPos(existing), unit_getPos_return_y, existing, Teleporter_EVENT_RADIUS, ref_function_Teleporter_teleport, null) call Teleporter_init(this_1) call unit_addAbility(UnitEntity_actor[this_1], BuilderConstants_TURN_OFF_ID) endfunction function new_Teleporter_3763 takes unit existing returns integer local integer this_1 = alloc_Teleporter() call construct_Teleporter2(this_1, existing) return this_1 endfunction function FourthCitadelleMaze_initMaze takes integer this_1 returns nothing local integer s local integer clVar local integer t set Startmaze_inited[this_1] = true set s = new_Spinner(gg_unit_spnr_0147) call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_scik_0260)) call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_scik_0261)) call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Spinner_spinSpeed[s], 4.5 * Angle_DEGTORAD) set s = new_Spinner(gg_unit_spnr_0161) call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_scik_0215)) call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_scik_0216)) call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_scik_0217)) call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Spinner_spinSpeed[s], 4. * Angle_DEGTORAD) set clVar = alloc_CallbackSingle_doAfter_FourthCitadelleMaze_FourthCitadelle() call construct_CallbackSingle(clVar) call doAfter(0.2, clVar) set s = new_Spinner(gg_unit_spnr_0157) call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_scik_0271)) call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_scik_0272)) call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_scik_0273)) call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_scik_0274)) call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_scik_0275)) call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_scik_0276)) call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_scik_0277)) call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_scik_0278)) call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Spinner_spinSpeed[s], 1.5 * Angle_DEGTORAD) set s = new_Spinner(gg_unit_spnr_0162) call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_bcik_0220)) call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Spinner_spinSpeed[s], 7.5 * Angle_DEGTORAD) set s = new_Spinner(gg_unit_spnr_0129) call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Spinner_sinFactor[s], 0.) call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_glve_0156)) call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Spinner_spinSpeed[s], 4. * Angle_DEGTORAD) set s = new_Spinner(gg_unit_spnr_0130) call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_glve_0158)) call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_glve_0159)) call dispatch_Spinner_Spinner_Spinner_checkObj(s, unit_getEntity(gg_unit_glve_0160)) call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Spinner_spinSpeed[s], 1.25 * Angle_DEGTORAD) call unit_issuePointOrder(gg_unit_scik_0263, "patrol", -2765., -6283.) call unit_issuePointOrder(gg_unit_scik_0268, "patrol", -3552., -6419.) call unit_issuePointOrder(gg_unit_scik_0269, "patrol", -4317., -5883.) call unit_issuePointOrder(gg_unit_scik_0267, "patrol", -4045., -6441.) call unit_issuePointOrder(gg_unit_scik_0270, "patrol", -4719., -6655.) call unit_issuePointOrder(gg_unit_scik_0210, "patrol", -4544., -6881.) call unit_issuePointOrder(gg_unit_scik_0211, "patrol", -4553., -7000.) call unit_issuePointOrder(gg_unit_scik_0219, "patrol", -4754., -7185.) call unit_issuePointOrder(gg_unit_scik_0218, "patrol", -4720., -7060.) call unit_issuePointOrder(gg_unit_scik_0214, "patrol", -2710., -5120.) call unit_issuePointOrder(gg_unit_scik_0213, "patrol", -2728., -5100.) call unit_issuePointOrder(gg_unit_scik_0221, "patrol", -4576., -4748.) call unit_issuePointOrder(gg_unit_scik_0222, "patrol", -4320., -5164.) call unit_issuePointOrder(gg_unit_bcik_0266, "patrol", -3312., -6793.) call unit_issuePointOrder(gg_unit_bcik_0262, "patrol", -3502., -6077.) call unit_issuePointOrder(gg_unit_bcik_0280, "patrol", -3953., -5678.) call unit_issuePointOrder(gg_unit_bcik_0225, "patrol", -4648., -3995.) set t = new_Teleporter_3763(gg_unit_tele_0234) call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(t, RegionData_LOUNGE_x, RegionData_LOUNGE_y) endfunction function alloc_ForGroupCallback_forUnitsOfPlayer_SecondDesertMaze_SecondDesert takes nothing returns integer local integer this_1 if ForGroupCallback_firstFree == 0 then if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1 set this_1 = ForGroupCallback_maxIndex set ForGroupCallback_typeId[this_1] = 877 else call error("Out of memory: Could not create ForGroupCallback_forUnitsOfPlayer_SecondDesertMaze_SecondDesert.") set this_1 = 0 endif else set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1 set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree] set ForGroupCallback_typeId[this_1] = 877 endif return this_1 endfunction function alloc_ForGroupCallback_forUnitsOfPlayer_SecondDesertMaze_SecondDesert_1793 takes nothing returns integer local integer this_1 if ForGroupCallback_firstFree == 0 then if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1 set this_1 = ForGroupCallback_maxIndex set ForGroupCallback_typeId[this_1] = 878 else call error("Out of memory: Could not create ForGroupCallback_forUnitsOfPlayer_SecondDesertMaze_SecondDesert.") set this_1 = 0 endif else set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1 set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree] set ForGroupCallback_typeId[this_1] = 878 endif return this_1 endfunction function alloc_EventListener_add_Fountain_Fountain takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 790 else call error("Out of memory: Could not create EventListener_add_Fountain_Fountain.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 790 endif return this_1 endfunction function construct_Fountain takes integer this_1, unit existing returns nothing local integer clVar local unit temp local playerunitevent temp_1 call construct_StaticSetupObject(this_1, existing, createUnit(unit_getOwner(existing), BuilderConstants_FOUNTAIN_BOTH_ID, unit_getPos(existing), unit_getPos_return_y, real_asAngleDegrees(270.)), 200., ref_function_Fountain_cure) call Fountain_init(this_1) set temp = StaticSetupObject_setup[this_1] set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST set clVar = alloc_EventListener_add_Fountain_Fountain() call construct_EventListener(clVar) set this_2992[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) endfunction function new_Fountain takes unit existing returns integer local integer this_1 = alloc_Fountain() call construct_Fountain(this_1, existing) return this_1 endfunction function construct_Jumper takes integer this_1, unit existing returns nothing call construct_StaticBaseObject(this_1, unit_getPos(existing), unit_getPos_return_y, existing, 40., ref_function_Jumper_onInRange, null) call Jumper_init(this_1) call unit_addAbility(UnitEntity_actor[this_1], BuilderConstants_TURN_OFF_ID) endfunction function new_Jumper takes unit existing returns integer local integer this_1 = alloc_Jumper() call construct_Jumper(this_1, existing) return this_1 endfunction function SecondDesertMaze_initMaze takes integer this_1 returns nothing local integer clVar local integer clVar_1 local integer t local integer j local player temp local player temp_1 set Startmaze_inited[this_1] = true set temp = GameConstants_STAFF_PLAYER set clVar = alloc_ForGroupCallback_forUnitsOfPlayer_SecondDesertMaze_SecondDesert() call forUnitsOfPlayer(temp, clVar) set temp_1 = GameConstants_STAFF_PLAYER set clVar_1 = alloc_ForGroupCallback_forUnitsOfPlayer_SecondDesertMaze_SecondDesert_1793() call forUnitsOfPlayer(temp_1, clVar_1) call IssuePointOrder(gg_unit_ssak_0121, "patrol", 3612.01, -4650.) call IssuePointOrder(gg_unit_ssak_0122, "patrol", 3574.01, -5253.) call IssuePointOrder(gg_unit_ssak_0120, "patrol", 3834.01, -5380.) call IssuePointOrder(gg_unit_ssak_0123, "patrol", 2932.01, -5615.) call IssuePointOrder(gg_unit_ssak_0125, "patrol", 3747.01, -5848.) call IssuePointOrder(gg_unit_ssak_0124, "patrol", 4000.01, -6340.) call IssuePointOrder(gg_unit_bsak_0127, "patrol", 3900.01, -5952.) call IssuePointOrder(gg_unit_bsak_0128, "patrol", 2618.01, -6917.) call IssuePointOrder(gg_unit_bsak_0081, "patrol", 1840.01, -6537.) call IssuePointOrder(gg_unit_bsak_0080, "patrol", 1293.01, -6286.) call IssuePointOrder(gg_unit_bsak_0104, "patrol", 1293.01, -6286.) set t = new_Teleporter_3763(gg_unit_tele_0141) call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(t, RegionData_LOUNGE_x, RegionData_LOUNGE_y) set j = new_Jumper(gg_unit_jump_0151) call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(j, 3329., -6557.) call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Jumper_jumpForce[j], 5.) set j = new_Jumper(gg_unit_jump_0152) call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(j, 3434., -6245.) call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Jumper_jumpForce[j], 6.) call new_Fountain(gg_unit_fnt2_0065) call new_Fountain(gg_unit_fnt2_0067) call new_Fountain(gg_unit_fnt2_0074) endfunction function alloc_CallbackSingle_doAfter_ThirdForestMaze_ThirdForest takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 702 else call error("Out of memory: Could not create CallbackSingle_doAfter_ThirdForestMaze_ThirdForest.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 702 endif return this_1 endfunction function construct_AirKiller3 takes integer this_1, unit existing returns nothing call construct_EscaperSensorSetup4(this_1, existing, EscaperKillers_COLL_SIZE_AIR_XY, EscaperKillers_COLL_SIZE_AIR_Z) call AirKiller_init(this_1) endfunction function new_AirKiller_3607 takes unit existing returns integer local integer this_1 = alloc_AirKiller() call construct_AirKiller3(this_1, existing) return this_1 endfunction function construct_Executer takes integer this_1, unit existing returns nothing call construct_StaticBaseObject(this_1, unit_getPos(existing), unit_getPos_return_y, existing, Executer_EVENT_RADIUS, ref_function_code__Executer_Executer, null) call Executer_init(this_1) endfunction function new_Executer takes unit existing returns integer local integer this_1 = alloc_Executer() call construct_Executer(this_1, existing) return this_1 endfunction function construct_Faceless3 takes integer this_1, unit existing returns nothing call construct_EscaperSensorSetup4(this_1, existing, Faceless_KILL_RADIUS, Faceless_KILL_RADIUS) call Faceless_init(this_1) call dispatch_Faceless_Faceless_Faceless_setup(this_1) endfunction function new_Faceless_3659 takes unit existing returns integer local integer this_1 = alloc_Faceless() call construct_Faceless3(this_1, existing) return this_1 endfunction function alloc_EventListener_add_Knockbacker_Knockbacker takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 802 else call error("Out of memory: Could not create EventListener_add_Knockbacker_Knockbacker.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 802 endif return this_1 endfunction function construct_Knockbacker takes integer this_1, unit existing returns nothing local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local integer clVar local unit temp local playerunitevent temp_1 call construct_EscaperSensorSetup4(this_1, existing, 78., 164.) call Knockbacker_init(this_1) set receiver = SetupObject_setup[this_1] call unit_addAbility(receiver, Knockbacker_KNOCK_INC_ID) set receiver_1 = receiver call unit_addAbility(receiver_1, Knockbacker_KNOCK_DEC_ID) set receiver_2 = receiver_1 call unit_addAbility(receiver_2, Knockbacker_DMG_INC_ID) set receiver_3 = receiver_2 call unit_addAbility(receiver_3, Knockbacker_DMG_DEC_ID) set temp = SetupObject_setup[this_1] set temp_1 = EVENT_PLAYER_UNIT_SPELL_CAST set clVar = alloc_EventListener_add_Knockbacker_Knockbacker() call construct_EventListener(clVar) set this_2982[clVar] = this_1 call EventListener_add_435(temp, temp_1, clVar) endfunction function new_Knockbacker takes unit existing returns integer local integer this_1 = alloc_Knockbacker() call construct_Knockbacker(this_1, existing) return this_1 endfunction function construct_UnitCreator takes integer this_1, unit existing returns nothing call construct_StaticBaseObject(this_1, unit_getPos(existing), unit_getPos_return_y, existing, 0., null, null) call UnitCreator_init(this_1) call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setEnabled(this_1, false) endfunction function new_UnitCreator takes unit existing returns integer local integer this_1 = alloc_UnitCreator() call construct_UnitCreator(this_1, existing) return this_1 endfunction function construct_UnitRemover takes integer this_1, unit existing returns nothing call construct_StaticBaseObject(this_1, unit_getPos(existing), unit_getPos_return_y, existing, 64., ref_function_UnitRemover_removeUnit, null) call UnitRemover_init(this_1) call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(this_1) call unit_addAbility(UnitEntity_actor[this_1], BuilderConstants_TURN_OFF_ID) endfunction function new_UnitRemover takes unit existing returns integer local integer this_1 = alloc_UnitRemover() call construct_UnitRemover(this_1, existing) return this_1 endfunction function construct_Waypoint2 takes integer this_1, unit existing returns nothing call construct_StaticBaseObject(this_1, unit_getPos(existing), unit_getPos_return_y, existing, Waypoint_EVENT_RADIUS, ref_function_Waypoint_onInRange, ref_function_code__Waypoint_Waypoint_2650) call Waypoint_init(this_1) endfunction function new_Waypoint_3787 takes unit existing returns integer local integer this_1 = alloc_Waypoint() call construct_Waypoint2(this_1, existing) return this_1 endfunction function ThirdForestMaze_initMaze takes integer this_1 returns nothing local integer data_1 local integer t local integer k1 local integer k2 local integer uk local integer wp local integer receiver local integer receiver_1 local integer receiver_2 local integer receiver_3 local integer vw_1 local integer clVar local integer exec set Startmaze_inited[this_1] = true set data_1 = getRegionData_3302(368., -6647.) call dispatch_RegionData_RegionData_RegionData_setOwner(data_1, GameConstants_STAFF_PLAYER) set t = new_Teleporter_3763(gg_unit_tele_0044) call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(t, RegionData_LOUNGE_x, RegionData_LOUNGE_y) call unit_issuePointOrder(gg_unit_sgrk_0038, "patrol", - 122.01, -5897.) call unit_issuePointOrder(gg_unit_sgrk_0039, "patrol", 122.01, -5888.) call unit_issuePointOrder(gg_unit_sgrk_0153, "patrol", 660.01, - 5500.01) set k1 = new_Knockbacker(gg_unit_knck_0053) set k2 = new_Knockbacker(gg_unit_knck_0054) call unit_issuePointOrder(SetupObject_setup[k1], "patrol", - 1000.01, -6150.) call unit_issuePointOrder(SetupObject_setup[k2], "patrol", - 900.01, -7200.) call unit_issuePointOrder(gg_unit_bgrk_0145, "patrol", 635.001, -3835.) set uk = new_UnitCreator(gg_unit_uncr_0117) call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(uk, unit_getPos(gg_unit_wayp_0116), unit_getPos_return_y) set UnitCreator_tmode[uk] = 1 call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setEnabled(uk, true) set wp = new_Waypoint_3787(gg_unit_wayp_0116) call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(wp, unit_getPos(gg_unit_wayp_0101), unit_getPos_return_y) set wp = new_Waypoint_3787(gg_unit_wayp_0101) call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(wp, unit_getPos(gg_unit_wayp_0102), unit_getPos_return_y) set wp = new_Waypoint_3787(gg_unit_wayp_0102) call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(wp, unit_getPos(gg_unit_wayp_0114), unit_getPos_return_y) set wp = new_Waypoint_3787(gg_unit_wayp_0114) call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(wp, unit_getPos(gg_unit_unre_0118), unit_getPos_return_y) call new_UnitRemover(gg_unit_unre_0118) call new_AirKiller_3607(gg_unit_airk_0149) call unit_issuePointOrder(gg_unit_airk_0149, "patrol", -1025., -4565.) set receiver = new_Waypoint_3787(gg_unit_wayp_0068) call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(receiver, unit_getPos(gg_unit_wayp_0066), unit_getPos_return_y) call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Waypoint_delay[receiver], 1.) set receiver_1 = new_Waypoint_3787(gg_unit_wayp_0066) call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(receiver_1, unit_getPos(gg_unit_wayp_0099), unit_getPos_return_y) call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Waypoint_delay[receiver_1], 1.) set receiver_2 = new_Waypoint_3787(gg_unit_wayp_0078) call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(receiver_2, unit_getPos(gg_unit_wayp_0068), unit_getPos_return_y) call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Waypoint_delay[receiver_2], 1.) set receiver_3 = new_Waypoint_3787(gg_unit_wayp_0099) call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(receiver_3, unit_getPos(gg_unit_wayp_0078), unit_getPos_return_y) call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Waypoint_delay[receiver_3], 1.) set vw_1 = new_Faceless_3659(gg_unit_dims_0100) set clVar = alloc_CallbackSingle_doAfter_ThirdForestMaze_ThirdForest() call construct_CallbackSingle(clVar) set vw[clVar] = vw_1 call doAfter(1.5, clVar) call dispatch_ConfigValue_ConfigValue_ConfigValue_setVal(Faceless_invisDur[vw_1], 1.) set exec = new_Executer(gg_unit_exec_0076) set Executer_eventMode[exec] = 2 set Executer_actionMode[exec] = 6 set Executer_tiletype[exec] = 808464432 call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(exec, -387., -4600.) set Executer_horizontalTileSize[exec] = 1 endfunction function dispatch_Startmaze_Startmaze_Startmaze_initMaze takes integer this_1 returns nothing if Startmaze_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Startmaze.initMaze") else call error("Called Startmaze.initMaze on invalid object.") endif endif if Startmaze_typeId[this_1] <= 1240 then if Startmaze_typeId[this_1] <= 1239 then call FirstSnowMaze_initMaze(this_1) else call FourthCitadelleMaze_initMaze(this_1) endif elseif Startmaze_typeId[this_1] <= 1241 then call SecondDesertMaze_initMaze(this_1) else call ThirdForestMaze_initMaze(this_1) endif endfunction function call_doAfter_RevivePoint_Revivepoint takes integer this_1 returns nothing call dispatch_Startmaze_Startmaze_Startmaze_initMaze(Startmazes_startmazes[Startmazes_currentMaze]) endfunction function LinkedList_push takes integer this_1, integer elem returns nothing call dispatch_LinkedList_LinkedList_LinkedList_add_1(this_1, elem) endfunction function dispatch_LinkedList_LinkedList_LinkedList_push takes integer this_1, integer elem returns nothing if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.push") else call error("Called LinkedList.push on invalid object.") endif endif call LinkedList_push(this_1, elem) endfunction function Sim3DSound_onDestroy takes integer this_1 returns nothing endfunction function dealloc_Sim3DSound takes integer obj_1 returns nothing if Sim3DSound_typeId[obj_1] == 0 then call error("Double free: object of type Sim3DSound") else set Sim3DSound_firstFree = Sim3DSound_firstFree + 1 set Sim3DSound_typeId[obj_1] = 0 endif endfunction function destroySim3DSound takes integer this_1 returns nothing call Sim3DSound_onDestroy(this_1) call dealloc_Sim3DSound(this_1) endfunction function dispatch_Sim3DSound_destroySim3DSound takes integer this_1 returns nothing if Sim3DSound_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Sim3DSound.Sim3DSound") else call error("Called Sim3DSound.Sim3DSound on invalid object.") endif endif call destroySim3DSound(this_1) endfunction function sound_stop takes sound this_1, boolean killWhenDone, boolean fadeOut returns nothing call StopSound(this_1, killWhenDone, fadeOut) endfunction function SoundInstance_onDestroy takes integer this_1 returns nothing call sound_stop(SoundInstance_snd[this_1], true, false) endfunction function dealloc_SoundInstance takes integer obj_1 returns nothing if SoundInstance_typeId[obj_1] == 0 then call error("Double free: object of type SoundInstance") else set SoundInstance_nextFree[SoundInstance_firstFree] = obj_1 set SoundInstance_firstFree = SoundInstance_firstFree + 1 set SoundInstance_typeId[obj_1] = 0 endif endfunction function destroySoundInstance takes integer this_1 returns nothing call SoundInstance_onDestroy(this_1) call dealloc_SoundInstance(this_1) endfunction function dispatch_SoundInstance_destroySoundInstance takes integer this_1 returns nothing if SoundInstance_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SoundInstance.SoundInstance") else call error("Called SoundInstance.SoundInstance on invalid object.") endif endif call destroySoundInstance(this_1) endfunction function SoundDefinition_recycle takes integer this_1, integer instance_1 returns nothing set SoundInstance_p[instance_1] = null if SoundInstance_s3s[instance_1] != 0 then call dispatch_Sim3DSound_destroySim3DSound(SoundInstance_s3s[instance_1]) endif if dispatch_LinkedList_LinkedList_LinkedList_size(SoundDefinition_soundStack[SoundInstance_soundDef[instance_1]]) < 4 then call dispatch_LinkedList_LinkedList_LinkedList_push(SoundDefinition_soundStack[SoundInstance_soundDef[instance_1]], instance_1) else call dispatch_SoundInstance_destroySoundInstance(instance_1) endif endfunction function dispatch_SoundDefinition_SoundUtils_SoundDefinition_recycle takes integer this_1, integer instance_1 returns nothing if SoundDefinition_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SoundDefinition.recycle") else call error("Called SoundDefinition.recycle on invalid object.") endif endif call SoundDefinition_recycle(this_1, instance_1) endfunction function call_doAfter_SoundDefinition_SoundUtils takes integer this_1 returns nothing call dispatch_SoundDefinition_SoundUtils_SoundDefinition_recycle(this_2907[this_1], instance[this_1]) endfunction function alloc_ForGroupCallback_forUnitsInRange_doAfter_SpellTarget_BossSpellTarget takes nothing returns integer local integer this_1 if ForGroupCallback_firstFree == 0 then if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1 set this_1 = ForGroupCallback_maxIndex set ForGroupCallback_typeId[this_1] = 872 else call error("Out of memory: Could not create ForGroupCallback_forUnitsInRange_doAfter_SpellTarget_BossSpellTarget.") set this_1 = 0 endif else set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1 set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree] set ForGroupCallback_typeId[this_1] = 872 endif return this_1 endfunction function call_doAfter_SpellTarget_BossSpellTarget takes integer this_1 returns nothing local real tuple_temp = tpos_x[this_1] local real tuple_temp_1 = tpos_y[this_1] local real temp_x = tuple_temp local real temp_y = tuple_temp_1 local integer clVar = alloc_ForGroupCallback_forUnitsInRange_doAfter_SpellTarget_BossSpellTarget() local real tuple_temp_2 local real tuple_temp_3 set this_2915[clVar] = this_2914[this_1] set tuple_temp_2 = tpos_x[this_1] set tuple_temp_3 = tpos_y[this_1] set tpos_x_3018[clVar] = tuple_temp_2 set tpos_y_3021[clVar] = tuple_temp_3 call forUnitsInRange(temp_x, temp_y, 200., clVar) endfunction function call_doAfter_ThirdForestMaze_ThirdForest takes integer this_1 returns boolean return unit_issuePointOrder(UnitEntity_actor[vw[this_1]], "move", unit_getPos(gg_unit_wayp_0078), unit_getPos_return_y) endfunction function Waypoint_delayMove takes integer entity_1, real pos_x_1, real pos_y_1 returns nothing local integer instanceOfTemp = Serializable_typeId[entity_1] if instanceOfTemp >= 1171 and instanceOfTemp <= 1191 then call unit_issuePointOrder(SetupObject_setup[entity_1], "move", pos_x_1, pos_y_1) else call unit_issuePointOrder(UnitEntity_actor[entity_1], "move", pos_x_1, pos_y_1) endif endfunction function call_doAfter_Waypoint_Waypoint takes integer this_1 returns nothing call Waypoint_delayMove(entity[this_1], vec3_toVec2(rallyPos_x_2587[this_1], rallyPos_y_2589[this_1], rallyPos_z_2591[this_1]), vec3_toVec2_return_y) endfunction function call_doAfter_add_Buff takes integer this_1 returns nothing local integer iterator local integer bff if unit_hasBuffs(upg[this_1]) then set iterator = LinkedList_iterator(unit_getBuffs(upg[this_1])) loop exitwhen not LLIterator_hasNext(iterator) set bff = LLIterator_next(iterator) call dispatch_Buff_Buff_Buff_refresh_2735(bff, true) endloop call LLIterator_close(iterator) endif endfunction function call_doAfter_doAfter_Minion_Minion takes integer this_1 returns nothing if Minion_state[this_2920[this_1]] == 2 then set Minion_state[this_2920[this_1]] = 1 endif endfunction function call_nullTimer_BallItem_Ball takes integer this_1 returns nothing call item_remove(ItemEntity_actor[this_2963[this_1]]) set ItemEntity_actor[this_2963[this_1]] = CreateItem(BasicSpells_BALL_ITEM_ID, Entity_pos_x[this_2963[this_1]], Entity_pos_y[this_2963[this_1]]) call item_setEntity(ItemEntity_actor[this_2963[this_1]], this_2963[this_1]) endfunction function call_nullTimer_BallItem_Ball_2011 takes integer this_1 returns nothing call item_remove(ItemEntity_actor[this_2964[this_1]]) endfunction function call_nullTimer_BallItem_Ball_2012 takes integer this_1 returns nothing call item_remove(ItemEntity_actor[this_2965[this_1]]) set ItemEntity_actor[this_2965[this_1]] = CreateItem(BasicSpells_BALL_ITEM_ID, pos_x[this_1], pos_y[this_1]) call item_setEntity(ItemEntity_actor[this_2965[this_1]], this_2965[this_1]) endfunction function trigger_registerPlayerChatEvent takes trigger this_1, player whichPlayer, string chatMessageToDetect, boolean exactMatchOnly returns event return TriggerRegisterPlayerChatEvent(this_1, whichPlayer, chatMessageToDetect, exactMatchOnly) endfunction function call_nullTimer_ClosureEvents takes integer this_1 returns nothing local integer i local integer temp local trigger receiver local trigger receiver_1 local trigger receiver_2 local trigger receiver_3 local trigger receiver_4 local trigger receiver_5 local trigger receiver_6 local trigger receiver_7 local trigger receiver_8 local trigger receiver_9 call trigger_addAction(ClosureEvents_unitTrig, ref_function_code__addAction_nullTimer_ClosureEvents) call trigger_addAction(ClosureEvents_leaveTrig, ref_function_code__addAction_nullTimer_ClosureEvents_2658) call trigger_addAction(ClosureEvents_keyTrig, ref_function_code__addAction_nullTimer_ClosureEvents_2659) set i = 0 set temp = bj_MAX_PLAYERS - 1 loop exitwhen i > temp call trigger_registerPlayerEvent(ClosureEvents_leaveTrig, Player_players[i], EVENT_PLAYER_LEAVE) set receiver = ClosureEvents_keyTrig call trigger_registerPlayerEvent(receiver, Player_players[i], EVENT_PLAYER_ARROW_DOWN_DOWN) set receiver_1 = receiver call trigger_registerPlayerEvent(receiver_1, Player_players[i], EVENT_PLAYER_ARROW_DOWN_UP) set receiver_2 = receiver_1 call trigger_registerPlayerEvent(receiver_2, Player_players[i], EVENT_PLAYER_ARROW_UP_DOWN) set receiver_3 = receiver_2 call trigger_registerPlayerEvent(receiver_3, Player_players[i], EVENT_PLAYER_ARROW_UP_UP) set receiver_4 = receiver_3 call trigger_registerPlayerEvent(receiver_4, Player_players[i], EVENT_PLAYER_ARROW_LEFT_DOWN) set receiver_5 = receiver_4 call trigger_registerPlayerEvent(receiver_5, Player_players[i], EVENT_PLAYER_ARROW_LEFT_UP) set receiver_6 = receiver_5 call trigger_registerPlayerEvent(receiver_6, Player_players[i], EVENT_PLAYER_ARROW_RIGHT_DOWN) set receiver_7 = receiver_6 call trigger_registerPlayerEvent(receiver_7, Player_players[i], EVENT_PLAYER_ARROW_RIGHT_UP) set receiver_8 = receiver_7 call trigger_registerPlayerEvent(receiver_8, Player_players[i], EVENT_PLAYER_END_CINEMATIC) set receiver_9 = receiver_8 call trigger_registerPlayerChatEvent(receiver_9, Player_players[i], "", false) set i = i + 1 endloop call registerPlayerUnitEvent_3994(EVENT_PLAYER_UNIT_SPELL_EFFECT, null, ref_function_code__registerPlayerUnitEvent_nullTimer_ClosureEvents, null) endfunction function alloc_ForForceCallback_execute_nullTimer_Encoder_Encoder takes nothing returns integer local integer this_1 if ForForceCallback_firstFree == 0 then if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1 set this_1 = ForForceCallback_maxIndex set ForForceCallback_typeId[this_1] = 854 else call error("Out of memory: Could not create ForForceCallback_execute_nullTimer_Encoder_Encoder.") set this_1 = 0 endif else set ForForceCallback_firstFree = ForForceCallback_firstFree - 1 set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree] set ForForceCallback_typeId[this_1] = 854 endif return this_1 endfunction function alloc_ForForceCallback_execute_nullTimer_Encoder_Encoder_1775 takes nothing returns integer local integer this_1 if ForForceCallback_firstFree == 0 then if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1 set this_1 = ForForceCallback_maxIndex set ForForceCallback_typeId[this_1] = 855 else call error("Out of memory: Could not create ForForceCallback_execute_nullTimer_Encoder_Encoder.") set this_1 = 0 endif else set ForForceCallback_firstFree = ForForceCallback_firstFree - 1 set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree] set ForForceCallback_typeId[this_1] = 855 endif return this_1 endfunction function alloc_ForForceCallback_execute_nullTimer_Encoder_Encoder_1776 takes nothing returns integer local integer this_1 if ForForceCallback_firstFree == 0 then if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1 set this_1 = ForForceCallback_maxIndex set ForForceCallback_typeId[this_1] = 856 else call error("Out of memory: Could not create ForForceCallback_execute_nullTimer_Encoder_Encoder.") set this_1 = 0 endif else set ForForceCallback_firstFree = ForForceCallback_firstFree - 1 set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree] set ForForceCallback_typeId[this_1] = 856 endif return this_1 endfunction function alloc_ForForceCallback_execute_nullTimer_Encoder_Encoder_1777 takes nothing returns integer local integer this_1 if ForForceCallback_firstFree == 0 then if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1 set this_1 = ForForceCallback_maxIndex set ForForceCallback_typeId[this_1] = 857 else call error("Out of memory: Could not create ForForceCallback_execute_nullTimer_Encoder_Encoder.") set this_1 = 0 endif else set ForForceCallback_firstFree = ForForceCallback_firstFree - 1 set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree] set ForForceCallback_typeId[this_1] = 857 endif return this_1 endfunction function call_nullTimer_Encoder_Encoder takes integer this_1 returns nothing local integer clVar local integer clVar_1 local integer clVar_2 local integer clVar_3 call Log_debug("hash: " + int_toString(Encoder_hash[this_2892[this_1]])) set clVar = alloc_ForForceCallback_execute_nullTimer_Encoder_Encoder() set this_2893[clVar] = this_2892[this_1] call execute(clVar) call Log_debug("encoded hash") set clVar_1 = alloc_ForForceCallback_execute_nullTimer_Encoder_Encoder_1775() set this_2894[clVar_1] = this_2892[this_1] call execute(clVar_1) call Log_debug("clean") set clVar_2 = alloc_ForForceCallback_execute_nullTimer_Encoder_Encoder_1776() set this_2895[clVar_2] = this_2892[this_1] call execute(clVar_2) call Log_debug("before toString bs: " + int_toString(dispatch_BigString_BigString_BigString_getLength(bs_2275[this_1]))) set clVar_3 = alloc_ForForceCallback_execute_nullTimer_Encoder_Encoder_1777() set this_2896[clVar_3] = this_2892[this_1] set bs_2276[clVar_3] = bs_2275[this_1] set onFinish_2551[clVar_3] = onFinish_2550[this_1] call execute(clVar_3) endfunction function call_nullTimer_Key_Key takes integer this_1 returns nothing local item receiver = ItemEntity_actor[this_2967[this_1]] local item receiver_1 call item_setEntity(receiver, 0) set receiver_1 = receiver call item_remove(receiver_1) set ItemEntity_actor[this_2967[this_1]] = createItem_2351(Key_keyIds[Key_col[this_2967[this_1]]], Entity_pos_x[this_2967[this_1]], Entity_pos_y[this_2967[this_1]], Entity_pos_z[this_2967[this_1]]) call item_setEntity(ItemEntity_actor[this_2967[this_1]], this_2967[this_1]) endfunction function alloc_LoadListener_loadData_nullTimer_MemoryAccessPedestal_Pedestal takes nothing returns integer local integer this_1 if LoadListener_firstFree == 0 then if LoadListener_maxIndex < JASS_MAX_ARRAY_SIZE then set LoadListener_maxIndex = LoadListener_maxIndex + 1 set this_1 = LoadListener_maxIndex set LoadListener_typeId[this_1] = 1006 else call error("Out of memory: Could not create LoadListener_loadData_nullTimer_MemoryAccessPedestal_Pedestal.") set this_1 = 0 endif else set LoadListener_firstFree = LoadListener_firstFree - 1 set this_1 = LoadListener_nextFree[LoadListener_firstFree] set LoadListener_typeId[this_1] = 1006 endif return this_1 endfunction function alloc_SyncData takes nothing returns integer local integer this_1 if SyncData_firstFree == 0 then if SyncData_maxIndex < JASS_MAX_ARRAY_SIZE then set SyncData_maxIndex = SyncData_maxIndex + 1 set this_1 = SyncData_maxIndex set SyncData_typeId[this_1] = 1491 else call error("Out of memory: Could not create SyncData.") set this_1 = 0 endif else set SyncData_firstFree = SyncData_firstFree - 1 set this_1 = SyncData_nextFree[SyncData_firstFree] set SyncData_typeId[this_1] = 1491 endif return this_1 endfunction function SyncData_init takes integer this_1 returns nothing set SyncData_slistener[this_1] = 0 set SyncData_blistener[this_1] = 0 set SyncData_syncer[this_1] = null set SyncData_data[this_1] = null set SyncData_buffer[this_1] = 0 set SyncData_syncBuffer[this_1] = 0 endfunction function construct_SyncData2 takes integer this_1, player syncer, integer blistener, integer data_1 returns nothing call SyncData_init(this_1) set SyncData_blistener[this_1] = blistener set SyncData_buffer[this_1] = data_1 set SyncData_syncer[this_1] = syncer set SyncData_syncBuffer[this_1] = new_ChunkedString() endfunction function new_SyncData takes player syncer, integer blistener, integer data_1 returns integer local integer this_1 = alloc_SyncData() call construct_SyncData2(this_1, syncer, blistener, data_1) return this_1 endfunction function ChunkedString_sync takes integer this_1, player p, integer listener_1 returns nothing call dispatch_LinkedList_LinkedList_LinkedList_enqueue(SyncSimple_syncQueue, new_SyncData(p, listener_1, this_1)) if dispatch_LinkedList_LinkedList_LinkedList_size(SyncSimple_syncQueue) == 1 and shouldSync() then call checkQueue() endif endfunction function alloc_BufferSyncListener_sync_SaveLoadData takes nothing returns integer local integer this_1 if BufferSyncListener_firstFree == 0 then if BufferSyncListener_maxIndex < JASS_MAX_ARRAY_SIZE then set BufferSyncListener_maxIndex = BufferSyncListener_maxIndex + 1 set this_1 = BufferSyncListener_maxIndex set BufferSyncListener_typeId[this_1] = 656 else call error("Out of memory: Could not create BufferSyncListener_sync_SaveLoadData.") set this_1 = 0 endif else set BufferSyncListener_firstFree = BufferSyncListener_firstFree - 1 set this_1 = BufferSyncListener_nextFree[BufferSyncListener_firstFree] set BufferSyncListener_typeId[this_1] = 656 endif return this_1 endfunction function File_readPreload takes integer this_1, integer output_1 returns nothing local integer i local integer temp local string chunk call Preloader(File_filename[this_1]) set i = 0 set temp = FileIO_CHUNKS_PER_FILE - 1 loop exitwhen i > temp set chunk = BlzGetAbilityTooltip(FileIO_FILE_IO_ABIL_ID, i) if chunk == " " then exitwhen true endif call BlzSetAbilityTooltip(FileIO_FILE_IO_ABIL_ID, " ", i) call dispatch_ChunkedString_ChunkedString_ChunkedString_append(output_1, chunk) set i = i + 1 endloop endfunction function dispatch_File_FileIO_File_readPreload takes integer this_1, integer output_1 returns nothing if File_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling File.readPreload") else call error("Called File.readPreload on invalid object.") endif endif call File_readPreload(this_1, output_1) endfunction function construct_ChunkedString2 takes integer this_1, integer chunkSize returns nothing call ChunkedString_init(this_1) set ChunkedString_chunkSize[this_1] = chunkSize endfunction function new_ChunkedString_3638 takes integer chunkSize returns integer local integer this_1 = alloc_ChunkedString() call construct_ChunkedString2(this_1, chunkSize) return this_1 endfunction function File_read takes integer this_1, player p returns integer local integer out = new_ChunkedString_3638(ChunkedString_DEFAULT_CHUNK_SIZE) if Player_localPlayer == p then call dispatch_File_FileIO_File_readPreload(this_1, out) endif return out endfunction function dispatch_File_FileIO_File_read takes integer this_1, player p returns integer local integer FileIO_File_read_result if File_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling File.read") else call error("Called File.read on invalid object.") endif endif set FileIO_File_read_result = File_read(this_1, p) return FileIO_File_read_result endfunction function shouldReadFile takes nothing returns boolean return SaveLoadData_READ_FILES_IN_REPLAYS or GameStatus_gameStatus != 3 endfunction function player_loadData takes player this_1, string slotName, integer listener_1 returns nothing local integer file local string cond_result local integer buffer local integer clVar local integer temp local player temp_1 if not player_isIngame(this_1) then call dispatch_LoadListener_SaveLoadData_LoadListener_onLoad(listener_1, 1, 0) return endif if string_endsWith(slotName, ".pld") then set cond_result = slotName else set cond_result = slotName + ".pld" endif set file = new_File(cond_result) if shouldReadFile() then set buffer = dispatch_File_FileIO_File_read(file, this_1) else set buffer = new_ChunkedString() endif call dispatch_File_FileIO_File_close(file) set temp = buffer set temp_1 = this_1 set clVar = alloc_BufferSyncListener_sync_SaveLoadData() set listener[clVar] = listener_1 call ChunkedString_sync(temp, temp_1, clVar) endfunction function call_nullTimer_MemoryAccessPedestal_Pedestal takes integer this_1 returns nothing local texttag receiver local integer pd_1 local integer clVar local player temp local string temp_1 call unit_pause(UnitEntity_actor[this_3000[this_1]]) set receiver = FText_tt[MemoryAccessPedestal_ttag[this_3000[this_1]]] call texttag_center(receiver, Entity_pos_x[this_3000[this_1]], Entity_pos_y[this_3000[this_1]], Entity_pos_z[this_3000[this_1]], "|cff0884CEloading...", 10.) set MemoryAccessPedestal_lastRef[player_getId(Entity_owner[this_3000[this_1]])] = this_3000[this_1] set pd_1 = PlayerData_pData[player_getId(Entity_owner[this_3000[this_1]])] set temp = PlayerData_p[pd_1] set temp_1 = "EBR\\savedata\\dataSlot" + int_toString(slotId[this_1]) + ".pld" set clVar = alloc_LoadListener_loadData_nullTimer_MemoryAccessPedestal_Pedestal() set pd_2570[clVar] = pd_1 call player_loadData(temp, temp_1, clVar) endfunction function alloc_SeqCallback_doSeq_nullTimer_MemoryAccessPedestal_Pedestal takes nothing returns integer local integer this_1 if SeqCallback_firstFree == 0 then if SeqCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set SeqCallback_maxIndex = SeqCallback_maxIndex + 1 set this_1 = SeqCallback_maxIndex set SeqCallback_typeId[this_1] = 1133 else call error("Out of memory: Could not create SeqCallback_doSeq_nullTimer_MemoryAccessPedestal_Pedestal.") set this_1 = 0 endif else set SeqCallback_firstFree = SeqCallback_firstFree - 1 set this_1 = SeqCallback_nextFree[SeqCallback_firstFree] set SeqCallback_typeId[this_1] = 1133 endif return this_1 endfunction function call_nullTimer_MemoryAccessPedestal_Pedestal_2017 takes integer this_1 returns nothing local unit receiver = UnitEntity_actor[this_3007[this_1]] local unit receiver_1 local texttag receiver_2 local integer itr_1 local integer clVar local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 call unit_abortOrder(receiver) set receiver_1 = receiver call unit_pause(receiver_1) set receiver_2 = FText_tt[MemoryAccessPedestal_ttag[this_3007[this_1]]] call texttag_center(receiver_2, Entity_pos_x[this_3007[this_1]], Entity_pos_y[this_3007[this_1]], Entity_pos_z[this_3007[this_1]], "|cff0884CEsaving...", 10.) set tuple_temp = vec2_toVec3(vec2_toTile(vec3_toVec2(Entity_pos_x[this_3007[this_1]], Entity_pos_y[this_3007[this_1]], Entity_pos_z[this_3007[this_1]]), vec3_toVec2_return_y), vec2_toTile_return_y) set tuple_temp_1 = vec2_toVec3_return_y set tuple_temp_2 = vec2_toVec3_return_z set Entity_serializeOrigin_x = tuple_temp set Entity_serializeOrigin_y = tuple_temp_1 set Entity_serializeOrigin_z = tuple_temp_2 set itr_1 = dispatch_HashList_HashList_HashList_iterator(MemoryAccessPedestal_entities[this_3007[this_1]]) set MemoryAccessPedestal_currentSlotId[this_3007[this_1]] = slotId_2878[this_1] call dispatch_BigString_BigString_BigString_reset(MemoryAccessPedestal_entString[this_3007[this_1]]) call dispatch_BigString_BigString_BigString_addString(MemoryAccessPedestal_entString[this_3007[this_1]], Delimiter_token[Json_JSON_OPEN_ARRAY]) set clVar = alloc_SeqCallback_doSeq_nullTimer_MemoryAccessPedestal_Pedestal() call construct_SeqCallback(clVar) set itr_2537[clVar] = itr_1 set this_3008[clVar] = this_3007[this_1] call doSeq(clVar) endfunction function group_enumUnitsInRect_3317 takes group this_1, rect rec, boolexpr filter returns nothing call GroupEnumUnitsInRect(this_1, rec, filter) endfunction function group_enumUnitsInRect takes group this_1, rect rec returns nothing call group_enumUnitsInRect_3317(this_1, rec, null) endfunction function trigger_registerEnterRegion takes trigger this_1, region whichRegion, boolexpr filter returns event return TriggerRegisterEnterRegion(this_1, whichRegion, filter) endfunction function call_nullTimer_OnUnitEnterLeave takes integer this_1 returns nothing local trigger receiver = CreateTrigger() local group receiver_1 local group receiver_2 call trigger_registerEnterRegion(receiver, MapBounds_boundRegion, Filter(ref_function_code__Filter_registerEnterRegion_nullTimer_OnUnitEnterLeave)) call registerPlayerUnitEvent(EVENT_PLAYER_UNIT_ISSUED_ORDER, ref_function_code__registerPlayerUnitEvent_nullTimer_OnUnitEnterLeave) call group_enumUnitsInRect(OnUnitEnterLeave_preplacedUnits, MapBounds_boundRect) call ForGroup(OnUnitEnterLeave_preplacedUnits, ref_function_code__ForGroup_nullTimer_OnUnitEnterLeave) set receiver_1 = OnUnitEnterLeave_preplacedUnits call group_clear(receiver_1) set receiver_2 = receiver_1 call group_destr(receiver_2) endfunction function alloc_EventListener_add_nullTimer_Players takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 831 else call error("Out of memory: Could not create EventListener_add_nullTimer_Players.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 831 endif return this_1 endfunction function alloc_OnPlayerLeave_onPlayerLeave_nullTimer_Players takes nothing returns integer local integer this_1 if OnPlayerLeave_firstFree == 0 then if OnPlayerLeave_maxIndex < JASS_MAX_ARRAY_SIZE then set OnPlayerLeave_maxIndex = OnPlayerLeave_maxIndex + 1 set this_1 = OnPlayerLeave_maxIndex set OnPlayerLeave_typeId[this_1] = 1029 else call error("Out of memory: Could not create OnPlayerLeave_onPlayerLeave_nullTimer_Players.") set this_1 = 0 endif else set OnPlayerLeave_firstFree = OnPlayerLeave_firstFree - 1 set this_1 = OnPlayerLeave_nextFree[OnPlayerLeave_firstFree] set OnPlayerLeave_typeId[this_1] = 1029 endif return this_1 endfunction function call_nullTimer_Players takes integer this_1 returns nothing local integer i = 0 local integer temp = bj_MAX_PLAYER_SLOTS - 1 local integer clVar local integer clVar_1 local playerevent temp_1 loop exitwhen i > temp if player_isIngame(Player_players[i]) then call dispatch_LinkedList_LinkedList_LinkedList_add_1(Players_ALL_PLAYERS, playerToIndex(Player_players[i])) endif set i = i + 1 endloop set temp_1 = EVENT_PLAYER_LEAVE set clVar = alloc_EventListener_add_nullTimer_Players() call construct_EventListener(clVar) call EventListener_add(temp_1, clVar) set clVar_1 = alloc_OnPlayerLeave_onPlayerLeave_nullTimer_Players() call onPlayerLeave(clVar_1) endfunction function alloc_ForGroupCallback_forEachFrom_Preloader takes nothing returns integer local integer this_1 if ForGroupCallback_firstFree == 0 then if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1 set this_1 = ForGroupCallback_maxIndex set ForGroupCallback_typeId[this_1] = 861 else call error("Out of memory: Could not create ForGroupCallback_forEachFrom_Preloader.") set this_1 = 0 endif else set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1 set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree] set ForGroupCallback_typeId[this_1] = 861 endif return this_1 endfunction function group_forEachFrom takes group this_1, integer cb_1 returns nothing local group from = this_1 local unit u_1 loop exitwhen not group_hasNext(from) set u_1 = group_next(from) call dispatch_ForGroupCallback_ClosureForGroups_ForGroupCallback_callback(cb_1, u_1) endloop call dispatch_ForGroupCallback_destroyForGroupCallback(cb_1) endfunction function finishPreload takes nothing returns nothing local integer clVar local group temp call unit_remove(Preloader_dum) set temp = Preloader_dumg set clVar = alloc_ForGroupCallback_forEachFrom_Preloader() call group_forEachFrom(temp, clVar) call group_destr(Preloader_dumg) set Preloader_dumg = null endfunction function call_nullTimer_Preloader takes integer this_1 returns nothing call finishPreload() endfunction function alloc_CallbackSingle_doAfter_SoundDefinition_SoundUtils takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 700 else call error("Out of memory: Could not create CallbackSingle_doAfter_SoundDefinition_SoundUtils.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 700 endif return this_1 endfunction function sound_play takes sound this_1 returns nothing call StartSound(this_1) endfunction function SoundDefinition_playSound takes integer this_1, integer instance_1 returns nothing local integer clVar local real temp if SoundInstance_onUnit[instance_1] != null then call AttachSoundToUnit(SoundInstance_snd[instance_1], SoundInstance_onUnit[instance_1]) endif if SoundInstance_pos_x[instance_1] != 0. or SoundInstance_pos_y[instance_1] != 0. then call SetSoundPosition(SoundInstance_snd[instance_1], SoundInstance_pos_x[instance_1], SoundInstance_pos_y[instance_1], SoundInstance_pos_z[instance_1]) endif if SoundInstance_p[instance_1] != null then if GetLocalPlayer() == SoundInstance_p[instance_1] then call StartSound(SoundInstance_snd[instance_1]) endif else call sound_play(SoundInstance_snd[instance_1]) endif set temp = SoundDefinition_duration[SoundInstance_soundDef[instance_1]] * 0.001 set clVar = alloc_CallbackSingle_doAfter_SoundDefinition_SoundUtils() call construct_CallbackSingle(clVar) set this_2907[clVar] = this_1 set instance[clVar] = instance_1 call doAfter(temp, clVar) endfunction function dispatch_SoundDefinition_SoundUtils_SoundDefinition_playSound takes integer this_1, integer instance_1 returns nothing if SoundDefinition_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SoundDefinition.playSound") else call error("Called SoundDefinition.playSound on invalid object.") endif endif call SoundDefinition_playSound(this_1, instance_1) endfunction function call_nullTimer_SoundDefinition_SoundUtils takes integer this_1 returns nothing call dispatch_SoundDefinition_SoundUtils_SoundDefinition_playSound(this_2904[this_1], snd[this_1]) endfunction function call_nullTimer_SoundDefinition_SoundUtils_2022 takes integer this_1 returns nothing call dispatch_SoundDefinition_SoundUtils_SoundDefinition_playSound(this_2905[this_1], snd_2880[this_1]) endfunction function call_nullTimer_SoundDefinition_SoundUtils_2023 takes integer this_1 returns nothing call dispatch_SoundDefinition_SoundUtils_SoundDefinition_playSound(this_2906[this_1], snd_2881[this_1]) endfunction function alloc_SeqCallback_doSeq_nullTimer_load_LZW takes nothing returns integer local integer this_1 if SeqCallback_firstFree == 0 then if SeqCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set SeqCallback_maxIndex = SeqCallback_maxIndex + 1 set this_1 = SeqCallback_maxIndex set SeqCallback_typeId[this_1] = 1134 else call error("Out of memory: Could not create SeqCallback_doSeq_nullTimer_load_LZW.") set this_1 = 0 endif else set SeqCallback_firstFree = SeqCallback_firstFree - 1 set this_1 = SeqCallback_nextFree[SeqCallback_firstFree] set SeqCallback_typeId[this_1] = 1134 endif return this_1 endfunction function cyc_BigNum_l_divSmall takes integer funcChoice, integer this_1, integer base, integer denom returns nothing local integer remainder local integer num local integer quotient local integer BigNum_BigNum_l_divSmall_result if funcChoice == 0 then set remainder = 0 if BigNum_l_next[this_1] != 0 then call cyc_BigNum_l_divSmall(1, BigNum_l_next[this_1], base, denom) set remainder = tempReturn_integer endif set num = BigNum_l_leaf[this_1] + remainder * base set quotient = num / denom set remainder = num - quotient * denom set BigNum_l_leaf[this_1] = quotient set tempReturn_integer = remainder return elseif funcChoice == 1 then if BigNum_l_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BigNum_l.divSmall") else call error("Called BigNum_l.divSmall on invalid object.") endif endif call cyc_BigNum_l_divSmall(0, this_1, base, denom) set BigNum_BigNum_l_divSmall_result = tempReturn_integer set tempReturn_integer = BigNum_BigNum_l_divSmall_result return endif endfunction function BigNum_divSmall takes integer this_1, integer denom returns integer call cyc_BigNum_l_divSmall(1, BigNum_list[this_1], BigNum_base[this_1], denom) return tempReturn_integer endfunction function dispatch_BigNum_BigNum_BigNum_divSmall takes integer this_1, integer denom returns integer local integer BigNum_BigNum_divSmall_result if BigNum_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BigNum.divSmall") else call error("Called BigNum.divSmall on invalid object.") endif endif set BigNum_BigNum_divSmall_result = BigNum_divSmall(this_1, denom) return BigNum_BigNum_divSmall_result endfunction function Encoder_decode takes integer this_1, integer max returns integer return dispatch_BigNum_BigNum_BigNum_divSmall(Encoder_bignum[this_1], max + 1) endfunction function dispatch_Encoder_Encoder_Encoder_decode takes integer this_1, integer max returns integer local integer Encoder_Encoder_decode_result if Encoder_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Encoder.decode") else call error("Called Encoder.decode on invalid object.") endif endif set Encoder_Encoder_decode_result = Encoder_decode(this_1, max) return Encoder_Encoder_decode_result endfunction function call_nullTimer_load_LZW takes integer this_1 returns nothing local integer dictSize_1 local integer positions_1 local integer clVar call Log_debug("file valid2") set dictSize_1 = dispatch_Encoder_Encoder_Encoder_decode(encoder_2347[this_1], LZW_maxDictSize) call Log_debug("dictSize: " + int_toString(dictSize_1)) set positions_1 = new_LinkedList() call Log_debug("start decoding pos") set clVar = alloc_SeqCallback_doSeq_nullTimer_load_LZW() call construct_SeqCallback(clVar) set encoder_2348[clVar] = encoder_2347[this_1] set dictSize_2304[clVar] = dictSize_1 set positions[clVar] = positions_1 set onFinish_2556[clVar] = onFinish_2555[this_1] call doSeq(clVar) endfunction function dispatch_CallbackSingle_ClosureTimers_CallbackSingle_call takes integer this_1 returns nothing if CallbackSingle_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling CallbackSingle.call") else call error("Called CallbackSingle.call on invalid object.") endif endif if CallbackSingle_typeId[this_1] <= 695 then if CallbackSingle_typeId[this_1] <= 683 then if CallbackSingle_typeId[this_1] <= 677 then if CallbackSingle_typeId[this_1] <= 674 then if CallbackSingle_typeId[this_1] <= 672 then if CallbackSingle_typeId[this_1] <= 671 then call call_doAfter_Bomber_Bomber(this_1) else call call_doAfter_Bomber_Bomber_1967(this_1) endif elseif CallbackSingle_typeId[this_1] <= 673 then call call_doAfter_Bombertower_Bombertower(this_1) else call call_doAfter_Bombertower_Bombertower_1969(this_1) endif elseif CallbackSingle_typeId[this_1] <= 676 then if CallbackSingle_typeId[this_1] <= 675 then call call_doAfter_Builder_Builder(this_1) else call call_doAfter_ClosureTimers(this_1) endif else call call_doAfter_ClosureTimers_1972(this_1) endif elseif CallbackSingle_typeId[this_1] <= 680 then if CallbackSingle_typeId[this_1] <= 679 then if CallbackSingle_typeId[this_1] <= 678 then call call_doAfter_ClosureTimers_1973(this_1) else call call_doAfter_ClosureTimers_1974(this_1) endif else call call_doAfter_Commands(this_1) endif elseif CallbackSingle_typeId[this_1] <= 682 then if CallbackSingle_typeId[this_1] <= 681 then call call_doAfter_DummyRecycler_DummyRecycler(this_1) else call call_doAfter_Escaper_Escaper(this_1) endif else call call_doAfter_FText_FText(this_1) endif elseif CallbackSingle_typeId[this_1] <= 689 then if CallbackSingle_typeId[this_1] <= 686 then if CallbackSingle_typeId[this_1] <= 685 then if CallbackSingle_typeId[this_1] <= 684 then call call_doAfter_FourthCitadelleMaze_FourthCitadelle(this_1) else call call_doAfter_GameInit(this_1) endif else call call_doAfter_GameInit_1981(this_1) endif elseif CallbackSingle_typeId[this_1] <= 688 then if CallbackSingle_typeId[this_1] <= 687 then call call_doAfter_GameInit_1982(this_1) else call call_doAfter_GameInit_1983(this_1) endif else call call_doAfter_JukeBox(this_1) endif elseif CallbackSingle_typeId[this_1] <= 692 then if CallbackSingle_typeId[this_1] <= 691 then if CallbackSingle_typeId[this_1] <= 690 then call call_doAfter_JukeBox_JukeBox(this_1) else call call_doAfter_MGRandKill_MGRandKill(this_1) endif else call call_doAfter_MemoryAccessPedestal_Pedestal(this_1) endif elseif CallbackSingle_typeId[this_1] <= 694 then if CallbackSingle_typeId[this_1] <= 693 then call call_doAfter_Minigame_Minigame(this_1) else call call_doAfter_Minigame_Minigame_1989(this_1) endif else call call_doAfter_Minion_Minion(this_1) endif elseif CallbackSingle_typeId[this_1] <= 708 then if CallbackSingle_typeId[this_1] <= 702 then if CallbackSingle_typeId[this_1] <= 699 then if CallbackSingle_typeId[this_1] <= 697 then if CallbackSingle_typeId[this_1] <= 696 then call call_doAfter_Minion_Minion_1991(this_1) else call call_doAfter_Minion_Minion_1992(this_1) endif elseif CallbackSingle_typeId[this_1] <= 698 then call call_doAfter_PlayerData(this_1) else call call_doAfter_RevivePoint_Revivepoint(this_1) endif elseif CallbackSingle_typeId[this_1] <= 701 then if CallbackSingle_typeId[this_1] <= 700 then call call_doAfter_SoundDefinition_SoundUtils(this_1) else call call_doAfter_SpellTarget_BossSpellTarget(this_1) endif else call call_doAfter_ThirdForestMaze_ThirdForest(this_1) endif elseif CallbackSingle_typeId[this_1] <= 705 then if CallbackSingle_typeId[this_1] <= 704 then if CallbackSingle_typeId[this_1] <= 703 then call call_doAfter_Waypoint_Waypoint(this_1) else call call_doAfter_add_Buff(this_1) endif else call call_doAfter_doAfter_Minion_Minion(this_1) endif elseif CallbackSingle_typeId[this_1] <= 707 then if CallbackSingle_typeId[this_1] <= 706 then call call_nullTimer_BallItem_Ball(this_1) else call call_nullTimer_BallItem_Ball_2011(this_1) endif else call call_nullTimer_BallItem_Ball_2012(this_1) endif elseif CallbackSingle_typeId[this_1] <= 714 then if CallbackSingle_typeId[this_1] <= 711 then if CallbackSingle_typeId[this_1] <= 710 then if CallbackSingle_typeId[this_1] <= 709 then call call_nullTimer_ClosureEvents(this_1) else call call_nullTimer_Encoder_Encoder(this_1) endif else call call_nullTimer_Key_Key(this_1) endif elseif CallbackSingle_typeId[this_1] <= 713 then if CallbackSingle_typeId[this_1] <= 712 then call call_nullTimer_MemoryAccessPedestal_Pedestal(this_1) else call call_nullTimer_MemoryAccessPedestal_Pedestal_2017(this_1) endif else call call_nullTimer_OnUnitEnterLeave(this_1) endif elseif CallbackSingle_typeId[this_1] <= 717 then if CallbackSingle_typeId[this_1] <= 716 then if CallbackSingle_typeId[this_1] <= 715 then call call_nullTimer_Players(this_1) else call call_nullTimer_Preloader(this_1) endif else call call_nullTimer_SoundDefinition_SoundUtils(this_1) endif elseif CallbackSingle_typeId[this_1] <= 719 then if CallbackSingle_typeId[this_1] <= 718 then call call_nullTimer_SoundDefinition_SoundUtils_2022(this_1) else call call_nullTimer_SoundDefinition_SoundUtils_2023(this_1) endif else call call_nullTimer_load_LZW(this_1) endif endfunction function CallbackSingle_staticCallback takes nothing returns nothing local timer t = GetExpiredTimer() local integer cb_1 = timer_getData(t) call dispatch_CallbackSingle_ClosureTimers_CallbackSingle_call(cb_1) call dispatch_CallbackSingle_destroyCallbackSingle(cb_1) endfunction function code__start_CallbackSingle_ClosureTimers takes nothing returns nothing call CallbackSingle_staticCallback() endfunction function Minigame_onEndEvt takes nothing returns nothing call dispatch_Minigame_Minigame_Minigame_reset(timer_getData(GetExpiredTimer())) endfunction function code__start_Minigame_Minigame takes nothing returns nothing call Minigame_onEndEvt() endfunction function Encoder_itochar takes integer this_1, integer i returns string return SubString(Encoder_charset[this_1], i, i + 1) endfunction function dispatch_Encoder_Encoder_Encoder_itochar takes integer this_1, integer i returns string local string Encoder_Encoder_itochar_result if Encoder_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Encoder.itochar") else call error("Called Encoder.itochar on invalid object.") endif endif set Encoder_Encoder_itochar_result = Encoder_itochar(this_1, i) return Encoder_Encoder_itochar_result endfunction function onExecute_doSeq_Encoder_Encoder takes integer this_1, integer cb_1 returns boolean local boolean continue = true if w_cur[this_1] != 0 then call dispatch_BigString_BigString_BigString_addString(big[this_1], dispatch_Encoder_Encoder_Encoder_itochar(this_2888[this_1], BigNum_l_leaf[w_cur[this_1]])) set w_cur[this_1] = BigNum_l_next[w_cur[this_1]] else set continue = false set PayloadCallback_customData[onFinish[this_1]] = big[this_1] call cyc_onExecute_save_doSeq_LZW(24, onFinish[this_1], 0, null, 0, 0) endif return continue endfunction function Encoder_chartoi takes integer this_1, string c returns integer local integer i = 0 local string cs = Encoder_charset[this_1] local integer len = Encoder_base[this_1] loop exitwhen not (i < len and c != SubString(cs, i, i + 1)) set i = i + 1 endloop return i endfunction function dispatch_Encoder_Encoder_Encoder_chartoi takes integer this_1, string c returns integer local integer Encoder_Encoder_chartoi_result if Encoder_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Encoder.chartoi") else call error("Called Encoder.chartoi on invalid object.") endif endif set Encoder_Encoder_chartoi_result = Encoder_chartoi(this_1, c) return Encoder_Encoder_chartoi_result endfunction function onExecute_doSeq_Encoder_Encoder_3873 takes integer this_1, integer cb_1 returns boolean local boolean continue = true set BigNum_l_leaf[w_cur_2188[this_1]] = dispatch_Encoder_Encoder_Encoder_chartoi(this_2889[this_1], dispatch_BigString_BigString_BigString_getString(bs[this_1], w_i[this_1], 1)) if w_i[this_1] < dispatch_BigString_BigString_BigString_getLength(bs[this_1]) - 1 then set BigNum_l_next[w_cur_2188[this_1]] = new_BigNum_l() set w_cur_2188[this_1] = BigNum_l_next[w_cur_2188[this_1]] set w_i[this_1] = w_i[this_1] + 1 else set continue = false call dispatch_BigString_destroyBigString(bs[this_1]) call cyc_onExecute_save_doSeq_LZW(24, onFinishString[this_1], 0, null, 0, 0) endif return continue endfunction function alloc_BigSubString takes nothing returns integer local integer this_1 if BigSubString_firstFree == 0 then if BigSubString_maxIndex < JASS_MAX_ARRAY_SIZE then set BigSubString_maxIndex = BigSubString_maxIndex + 1 set this_1 = BigSubString_maxIndex set BigSubString_typeId[this_1] = 641 else call error("Out of memory: Could not create BigSubString.") set this_1 = 0 endif else set BigSubString_firstFree = BigSubString_firstFree - 1 set this_1 = BigSubString_nextFree[BigSubString_firstFree] set BigSubString_typeId[this_1] = 641 endif return this_1 endfunction function BigSubString_init takes integer this_1 returns nothing set BigSubString_parent[this_1] = 0 set BigSubString_next[this_1] = 0 set BigSubString_start[this_1] = 0 set BigSubString_length[this_1] = 0 set BigSubString_preinit[this_1] = null endfunction function construct_BigSubString2 takes integer this_1, integer parent, integer start, integer length returns nothing call BigSubString_init(this_1) set BigSubString_parent[this_1] = parent set BigSubString_start[this_1] = start set BigSubString_length[this_1] = length endfunction function new_BigSubString_3626 takes integer parent, integer start, integer length returns integer local integer this_1 = alloc_BigSubString() call construct_BigSubString2(this_1, parent, start, length) return this_1 endfunction function JsonParser_parseListSeq takes integer this_1 returns nothing local string temp local integer bss local integer bss_1 set JsonParser_currentToken[this_1] = dispatch_BigString_BigString_BigString_getString(JsonParser_bigInput[this_1], JsonParser_currentPosition[this_1], 1) set temp = JsonParser_currentToken[this_1] if temp == Delimiter_token[Json_JSON_OPEN_ARRAY] then set JsonParser_squareBracketLvl[this_1] = JsonParser_squareBracketLvl[this_1] + 1 if JsonParser_squareBracketLvl[this_1] == 1 then set JsonParser_propStartPosition[this_1] = JsonParser_currentPosition[this_1] + 1 endif elseif temp == Delimiter_token[Json_JSON_CLOSE_ARRAY] then set JsonParser_squareBracketLvl[this_1] = JsonParser_squareBracketLvl[this_1] - 1 if JsonParser_squareBracketLvl[this_1] == 0 then set bss = new_BigSubString_3626(JsonParser_bigInput[this_1], JsonParser_propStartPosition[this_1], JsonParser_currentPosition[this_1] - JsonParser_propStartPosition[this_1]) call dispatch_LinkedList_LinkedList_LinkedList_add_1(JsonParser_outputList[this_1], bss) set JsonParser_propStartPosition[this_1] = JsonParser_currentPosition[this_1] + 1 endif elseif temp == Delimiter_token[Json_JSON_SIGN_COMMA] then if JsonParser_squareBracketLvl[this_1] == 1 then set bss_1 = new_BigSubString_3626(JsonParser_bigInput[this_1], JsonParser_propStartPosition[this_1], JsonParser_currentPosition[this_1] - JsonParser_propStartPosition[this_1]) call dispatch_LinkedList_LinkedList_LinkedList_add_1(JsonParser_outputList[this_1], bss_1) set JsonParser_propStartPosition[this_1] = JsonParser_currentPosition[this_1] + 1 endif endif set JsonParser_currentPosition[this_1] = JsonParser_currentPosition[this_1] + 1 endfunction function dispatch_JsonParser_JsonParser_JsonParser_parseListSeq takes integer this_1 returns nothing if JsonParser_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling JsonParser.parseListSeq") else call error("Called JsonParser.parseListSeq on invalid object.") endif endif call JsonParser_parseListSeq(this_1) endfunction function onExecute_doSeq_JsonParser_JsonParser takes integer this_1, integer cb_1 returns boolean local boolean continue = true if JsonParser_currentPosition[this_2902[this_1]] < dispatch_BigString_BigString_BigString_getLength(JsonParser_bigInput[this_2902[this_1]]) then call dispatch_JsonParser_JsonParser_JsonParser_parseListSeq(this_2902[this_1]) else set continue = false call Log_debug("parsed list") call cyc_onExecute_save_doSeq_LZW(24, finalCallback[this_1], 0, null, 0, 0) endif return continue endfunction function Json_addProperty takes integer this_1, integer p returns nothing if Property_name[p] != 0 and BigSubString_length[Property_name[p]] >= 0 then call dispatch_LinkedList_LinkedList_LinkedList_add_1(Json_plist[this_1], p) set BigSubString_next[Property_name[p]] = 0 set BigSubString_next[Property_value[p]] = 0 call dispatch_HashMap_HashMap_HashMap_put(Json_properties[this_1], string_getHash(dispatch_BigSubString_BigString_BigSubString_getSingle(Property_name[p])), p) endif endfunction function dispatch_Json_Json_Json_addProperty takes integer this_1, integer p returns nothing if Json_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Json.addProperty") else call error("Called Json.addProperty on invalid object.") endif endif call Json_addProperty(this_1, p) endfunction function alloc_Property takes nothing returns integer local integer this_1 if Property_firstFree == 0 then if Property_maxIndex < JASS_MAX_ARRAY_SIZE then set Property_maxIndex = Property_maxIndex + 1 set this_1 = Property_maxIndex set Property_typeId[this_1] = 1049 else call error("Out of memory: Could not create Property.") set this_1 = 0 endif else set Property_firstFree = Property_firstFree - 1 set this_1 = Property_nextFree[Property_firstFree] set Property_typeId[this_1] = 1049 endif return this_1 endfunction function Property_init takes integer this_1 returns nothing endfunction function construct_Property takes integer this_1, integer name, integer value returns nothing call Property_init(this_1) set Property_name[this_1] = name set Property_value[this_1] = value endfunction function new_Property takes integer name, integer value returns integer local integer this_1 = alloc_Property() call construct_Property(this_1, name, value) return this_1 endfunction function JsonParser_onLetter takes integer this_1 returns nothing local integer temp = JsonParser_lastType[this_1] if temp == 0 then set JsonParser_propName[this_1] = new_BigSubString_3626(JsonParser_bigInput[this_1], JsonParser_currentPosition[this_1], 1) set JsonParser_propStartPosition[this_1] = JsonParser_currentPosition[this_1] + 1 elseif temp == 2 then set JsonParser_propVal[this_1] = new_BigSubString_3626(JsonParser_bigInput[this_1], JsonParser_propStartPosition[this_1], JsonParser_currentPosition[this_1] - JsonParser_propStartPosition[this_1]) call dispatch_Json_Json_Json_addProperty(JsonParser_output[this_1], new_Property(JsonParser_propName[this_1], JsonParser_propVal[this_1])) set JsonParser_propName[this_1] = new_BigSubString_3626(JsonParser_bigInput[this_1], JsonParser_currentPosition[this_1], 1) set JsonParser_propStartPosition[this_1] = JsonParser_currentPosition[this_1] + 1 elseif temp == 4 then set JsonParser_propName[this_1] = new_BigSubString_3626(JsonParser_bigInput[this_1], JsonParser_currentPosition[this_1], 1) set JsonParser_propStartPosition[this_1] = JsonParser_currentPosition[this_1] + 1 endif set JsonParser_lastType[this_1] = 1 endfunction function dispatch_JsonParser_JsonParser_JsonParser_onLetter takes integer this_1 returns nothing if JsonParser_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling JsonParser.onLetter") else call error("Called JsonParser.onLetter on invalid object.") endif endif call JsonParser_onLetter(this_1) endfunction function JsonParser_onNumber takes integer this_1 returns nothing local integer temp = JsonParser_lastType[this_1] if temp == 1 then set JsonParser_propStartPosition[this_1] = JsonParser_currentPosition[this_1] endif set JsonParser_lastType[this_1] = 2 endfunction function dispatch_JsonParser_JsonParser_JsonParser_onNumber takes integer this_1 returns nothing if JsonParser_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling JsonParser.onNumber") else call error("Called JsonParser.onNumber on invalid object.") endif endif call JsonParser_onNumber(this_1) endfunction function JsonParser_parseSeq takes integer this_1 returns nothing local string temp set JsonParser_currentToken[this_1] = dispatch_BigString_BigString_BigString_getString(JsonParser_bigInput[this_1], JsonParser_currentPosition[this_1], 1) set temp = JsonParser_currentToken[this_1] if temp == Delimiter_token[Json_JSON_OPEN_ARRAY] then set JsonParser_squareBracketLvl[this_1] = JsonParser_squareBracketLvl[this_1] + 1 if JsonParser_squareBracketLvl[this_1] == 1 then set JsonParser_propStartPosition[this_1] = JsonParser_currentPosition[this_1] endif set JsonParser_lastType[this_1] = 3 elseif temp == Delimiter_token[Json_JSON_CLOSE_ARRAY] then set JsonParser_squareBracketLvl[this_1] = JsonParser_squareBracketLvl[this_1] - 1 if JsonParser_squareBracketLvl[this_1] == 0 then set JsonParser_propVal[this_1] = new_BigSubString_3626(JsonParser_bigInput[this_1], JsonParser_propStartPosition[this_1], JsonParser_currentPosition[this_1] - JsonParser_propStartPosition[this_1] + 1) call dispatch_Json_Json_Json_addProperty(JsonParser_output[this_1], new_Property(JsonParser_propName[this_1], JsonParser_propVal[this_1])) set JsonParser_propStartPosition[this_1] = JsonParser_currentPosition[this_1] + 1 endif set JsonParser_lastType[this_1] = 4 elseif JsonParser_squareBracketLvl[this_1] == 0 then if string_contains(JsonParser_lettermap, JsonParser_currentToken[this_1]) then call dispatch_JsonParser_JsonParser_JsonParser_onLetter(this_1) elseif string_contains(JsonParser_numbermap, JsonParser_currentToken[this_1]) then call dispatch_JsonParser_JsonParser_JsonParser_onNumber(this_1) endif endif set JsonParser_currentPosition[this_1] = JsonParser_currentPosition[this_1] + 1 endfunction function dispatch_JsonParser_JsonParser_JsonParser_parseSeq takes integer this_1 returns nothing if JsonParser_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling JsonParser.parseSeq") else call error("Called JsonParser.parseSeq on invalid object.") endif endif call JsonParser_parseSeq(this_1) endfunction function onExecute_doSeq_JsonParser_JsonParser_3875 takes integer this_1, integer cb_1 returns boolean local boolean continue = true if JsonParser_currentPosition[this_2903[this_1]] < dispatch_BigString_BigString_BigString_getLength(JsonParser_bigInput[this_2903[this_1]]) then call dispatch_JsonParser_JsonParser_JsonParser_parseSeq(this_2903[this_1]) else set continue = false if JsonParser_propStartPosition[this_2903[this_1]] < JsonParser_currentPosition[this_2903[this_1]] then set JsonParser_propVal[this_2903[this_1]] = new_BigSubString_3626(JsonParser_bigInput[this_2903[this_1]], JsonParser_propStartPosition[this_2903[this_1]], JsonParser_currentPosition[this_2903[this_1]] - JsonParser_propStartPosition[this_2903[this_1]]) call dispatch_Json_Json_Json_addProperty(JsonParser_output[this_2903[this_1]], new_Property(JsonParser_propName[this_2903[this_1]], JsonParser_propVal[this_2903[this_1]])) endif call cyc_onExecute_save_doSeq_LZW(24, callback[this_1], 0, null, 0, 0) endif return continue endfunction function alloc_PayloadCallback_save_doSeq_LZW takes nothing returns integer local integer this_1 if PayloadCallback_firstFree == 0 then if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1 set this_1 = PayloadCallback_maxIndex set PayloadCallback_typeId[this_1] = 1047 else call error("Out of memory: Could not create PayloadCallback_save_doSeq_LZW.") set this_1 = 0 endif else set PayloadCallback_firstFree = PayloadCallback_firstFree - 1 set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree] set PayloadCallback_typeId[this_1] = 1047 endif return this_1 endfunction function BigNum_addSmall takes integer this_1, integer pcarry returns nothing local integer cur = BigNum_list[this_1] local integer carry = pcarry local integer sum if cur == 0 then set cur = new_BigNum_l() set BigNum_list[this_1] = cur endif loop exitwhen not (carry != 0) set sum = BigNum_l_leaf[cur] + carry set carry = sum / BigNum_base[this_1] set sum = sum - carry * BigNum_base[this_1] set BigNum_l_leaf[cur] = sum if BigNum_l_next[cur] == 0 then set BigNum_l_next[cur] = new_BigNum_l() endif set cur = BigNum_l_next[cur] endloop endfunction function dispatch_BigNum_BigNum_BigNum_addSmall takes integer this_1, integer pcarry returns nothing if BigNum_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BigNum.addSmall") else call error("Called BigNum.addSmall on invalid object.") endif endif call BigNum_addSmall(this_1, pcarry) endfunction function BigNum_mulSmall takes integer this_1, integer x returns nothing local integer cur = BigNum_list[this_1] local integer carry = 0 local integer product local integer remainder loop exitwhen not (cur != 0 or carry != 0) set product = x * BigNum_l_leaf[cur] + carry set carry = product / BigNum_base[this_1] set remainder = product - carry * BigNum_base[this_1] set BigNum_l_leaf[cur] = remainder if BigNum_l_next[cur] == 0 and carry != 0 then set BigNum_l_next[cur] = new_BigNum_l() endif set cur = BigNum_l_next[cur] endloop endfunction function dispatch_BigNum_BigNum_BigNum_mulSmall takes integer this_1, integer x returns nothing if BigNum_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BigNum.mulSmall") else call error("Called BigNum.mulSmall on invalid object.") endif endif call BigNum_mulSmall(this_1, x) endfunction function log takes real py, real pbase returns real local real y = py local real base = pbase local real factor = 1.0 local real logy = 0.0 local real sign = 1.0 if y < 0. then return 0.0 endif if y < 1. then set y = 1.0 / y set sign = - 1.0 endif loop exitwhen not (y >= 1.0001) if y > base then set y = y / base set logy = logy + factor else set base = SquareRoot(base) set factor = factor / 2. endif endloop return sign * logy endfunction function Encoder_encode takes integer this_1, integer wval, integer max returns nothing set Encoder_digits[this_1] = Encoder_digits[this_1] + log(max + 1., Encoder_base[this_1] + 0.) call dispatch_BigNum_BigNum_BigNum_mulSmall(Encoder_bignum[this_1], max + 1) call dispatch_BigNum_BigNum_BigNum_addSmall(Encoder_bignum[this_1], wval) call Log_trace("encoded val: " + int_toString(wval) + " max: " + int_toString(max)) endfunction function dispatch_Encoder_Encoder_Encoder_encode takes integer this_1, integer wval, integer max returns nothing if Encoder_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Encoder.encode") else call error("Called Encoder.encode on invalid object.") endif endif call Encoder_encode(this_1, wval, max) endfunction function alloc_CallbackSingle_nullTimer_Encoder_Encoder takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 710 else call error("Out of memory: Could not create CallbackSingle_nullTimer_Encoder_Encoder.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 710 endif return this_1 endfunction function alloc_ForForceCallback_execute_Encoder_Encoder takes nothing returns integer local integer this_1 if ForForceCallback_firstFree == 0 then if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1 set this_1 = ForForceCallback_maxIndex set ForForceCallback_typeId[this_1] = 838 else call error("Out of memory: Could not create ForForceCallback_execute_Encoder_Encoder.") set this_1 = 0 endif else set ForForceCallback_firstFree = ForForceCallback_firstFree - 1 set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree] set ForForceCallback_typeId[this_1] = 838 endif return this_1 endfunction function alloc_ForForceCallback_execute_Encoder_Encoder_1759 takes nothing returns integer local integer this_1 if ForForceCallback_firstFree == 0 then if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1 set this_1 = ForForceCallback_maxIndex set ForForceCallback_typeId[this_1] = 839 else call error("Out of memory: Could not create ForForceCallback_execute_Encoder_Encoder.") set this_1 = 0 endif else set ForForceCallback_firstFree = ForForceCallback_firstFree - 1 set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree] set ForForceCallback_typeId[this_1] = 839 endif return this_1 endfunction function Encoder_save takes integer this_1, integer bs_1, integer onFinish_1 returns nothing local integer clVar local integer clVar_1 local integer clVar_2 call Log_debug("save1") set clVar = alloc_ForForceCallback_execute_Encoder_Encoder() set this_2890[clVar] = this_1 call execute(clVar) call Log_debug("save2") set Encoder_hash[this_1] = -1 set clVar_1 = alloc_ForForceCallback_execute_Encoder_Encoder_1759() set this_2891[clVar_1] = this_1 call execute(clVar_1) set clVar_2 = alloc_CallbackSingle_nullTimer_Encoder_Encoder() call construct_CallbackSingle(clVar_2) set this_2892[clVar_2] = this_1 set bs_2275[clVar_2] = bs_1 set onFinish_2550[clVar_2] = onFinish_1 call nullTimer(clVar_2) endfunction function dispatch_Encoder_Encoder_Encoder_save takes integer this_1, integer bs_1, integer onFinish_1 returns nothing if Encoder_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Encoder.save") else call error("Called Encoder.save on invalid object.") endif endif call Encoder_save(this_1, bs_1, onFinish_1) endfunction function onExecute_doSeq_LZW takes integer this_1, integer cb_1 returns boolean local boolean continue = true local integer clVar local integer temp local integer temp_1 if dispatch_LLIterator_LinkedList_LLIterator_hasNext(itr[this_1]) then call dispatch_Encoder_Encoder_Encoder_encode(encoder[this_1], dispatch_LLIterator_LinkedList_LLIterator_next(itr[this_1]), dictSize[this_1]) else set continue = false call dispatch_Encoder_Encoder_Encoder_encode(encoder[this_1], dictSize[this_1], LZW_maxDictSize) call dispatch_LinkedList_destroyLinkedList(intList[this_1]) set temp = encoder[this_1] set temp_1 = new_BigString() set clVar = alloc_PayloadCallback_save_doSeq_LZW() call construct_PayloadCallback(clVar) set onFinish_2553[clVar] = onFinish_2552[this_1] set encoder_2345[clVar] = encoder[this_1] call dispatch_Encoder_Encoder_Encoder_save(temp, temp_1, clVar) endif return continue endfunction function alloc_PayloadCallback_encodePositions_doSeq_LZW takes nothing returns integer local integer this_1 if PayloadCallback_firstFree == 0 then if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1 set this_1 = PayloadCallback_maxIndex set PayloadCallback_typeId[this_1] = 1038 else call error("Out of memory: Could not create PayloadCallback_encodePositions_doSeq_LZW.") set this_1 = 0 endif else set PayloadCallback_firstFree = PayloadCallback_firstFree - 1 set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree] set PayloadCallback_typeId[this_1] = 1038 endif return this_1 endfunction function BigString_charAt takes integer this_1, integer offset returns integer return new_BigSubString_3626(this_1, offset, 1) endfunction function dispatch_BigString_BigString_BigString_charAt takes integer this_1, integer offset returns integer local integer BigString_BigString_charAt_result if BigString_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BigString.charAt") else call error("Called BigString.charAt on invalid object.") endif endif set BigString_BigString_charAt_result = BigString_charAt(this_1, offset) return BigString_BigString_charAt_result endfunction function BigSubString_concat takes integer this_1, integer next returns integer local integer t if next == 0 then call error("null") endif set t = this_1 loop exitwhen not (BigSubString_next[t] != 0) set t = BigSubString_next[t] endloop set BigSubString_next[t] = next return this_1 endfunction function dispatch_BigSubString_BigString_BigSubString_concat takes integer this_1, integer next returns integer local integer BigString_BigSubString_concat_result if BigSubString_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BigSubString.concat") else call error("Called BigSubString.concat on invalid object.") endif endif set BigString_BigSubString_concat_result = BigSubString_concat(this_1, next) return BigString_BigSubString_concat_result endfunction function alloc_SeqCallback_doSeq_LZW takes nothing returns integer local integer this_1 if SeqCallback_firstFree == 0 then if SeqCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set SeqCallback_maxIndex = SeqCallback_maxIndex + 1 set this_1 = SeqCallback_maxIndex set SeqCallback_typeId[this_1] = 1129 else call error("Out of memory: Could not create SeqCallback_doSeq_LZW.") set this_1 = 0 endif else set SeqCallback_firstFree = SeqCallback_firstFree - 1 set this_1 = SeqCallback_nextFree[SeqCallback_firstFree] set SeqCallback_typeId[this_1] = 1129 endif return this_1 endfunction function encodePositions takes integer intList_1, integer dictSize_1, integer onFinish_1 returns nothing local string st local integer iterator local integer s local integer encoder_1 local integer itr_1 local integer clVar if dictSize_1 > LZW_maxDictSize then call error("dictionary size exceeds max size") endif if Printing_config_DEBUG_LEVEL == 0 then set st = "" set iterator = LinkedList_iterator(intList_1) loop exitwhen not LLIterator_hasNext(iterator) set s = LLIterator_next(iterator) set st = st + int_toString(s) + "," endloop call LLIterator_close(iterator) call printLog(0, "encoding positions: " + st) endif set encoder_1 = new_Encoder(LZW_ALLOWED_PLAYER_CHARS) set itr_1 = dispatch_LinkedList_LinkedList_LinkedList_staticItr(intList_1) set clVar = alloc_SeqCallback_doSeq_LZW() call construct_SeqCallback(clVar) set itr[clVar] = itr_1 set encoder[clVar] = encoder_1 set dictSize[clVar] = dictSize_1 set intList[clVar] = intList_1 set onFinish_2552[clVar] = onFinish_1 call doSeq(clVar) endfunction function construct_BigSubString takes integer this_1, string preInit returns nothing call BigSubString_init(this_1) set BigSubString_preinit[this_1] = preInit set BigSubString_length[this_1] = string_length(BigSubString_preinit[this_1]) endfunction function new_BigSubString takes string preInit returns integer local integer this_1 = alloc_BigSubString() call construct_BigSubString(this_1, preInit) return this_1 endfunction function onExecute_doSeq_LZW_3877 takes integer this_1, integer cb_1 returns boolean local boolean continue = true local string sng local integer clVar local integer temp local integer temp_1 local integer temp_2 if inc[this_1] < dispatch_BigString_BigString_BigString_getLength(data[this_1]) - 1 then if A[this_1] != 0 then call dispatch_BigSubString_destroyBigSubString(A[this_1]) endif set A[this_1] = dispatch_BigString_BigString_BigString_charAt(data[this_1], inc[this_1]) set inc[this_1] = inc[this_1] + 1 if B[this_1] != 0 then call dispatch_BigSubString_destroyBigSubString(B[this_1]) endif set B[this_1] = dispatch_BigString_BigString_BigString_charAt(data[this_1], inc[this_1]) call dispatch_BigSubString_BigString_BigSubString_concat(A[this_1], B[this_1]) loop exitwhen not true set temp_2 = LZW_dictionary call cyc_BigSubString_getCombined(1, A[this_1]) if not dispatch_HashMap_HashMap_HashMap_has(temp_2, stringToIndex(tempReturn_string)) then exitwhen true endif set sng = dispatch_BigSubString_BigString_BigSubString_getSingle(A[this_1]) if A[this_1] != 0 then call dispatch_BigSubString_destroyBigSubString(A[this_1]) endif set A[this_1] = new_BigSubString(sng + dispatch_BigSubString_BigString_BigSubString_getSingle(B[this_1])) set inc[this_1] = inc[this_1] + 1 if inc[this_1] < dispatch_BigString_BigString_BigString_getLength(data[this_1]) then if B[this_1] != 0 then call dispatch_BigSubString_destroyBigSubString(B[this_1]) endif set B[this_1] = dispatch_BigString_BigString_BigString_charAt(data[this_1], inc[this_1]) call dispatch_BigSubString_BigString_BigSubString_concat(A[this_1], B[this_1]) else exitwhen true endif endloop call dispatch_LinkedList_LinkedList_LinkedList_add_1(intList_2530[this_1], dispatch_HashMap_HashMap_HashMap_get(LZW_dictionary, stringToIndex(dispatch_BigSubString_BigString_BigSubString_getSingle(A[this_1])))) call cyc_BigSubString_getCombined(1, A[this_1]) call putDict(tempReturn_string) else call Log_debug("Compressed") set continue = false if B[this_1] != 0 and string_charAt(dispatch_BigSubString_BigString_BigSubString_getSingle(A[this_1]), dispatch_BigSubString_BigString_BigSubString_getSingleLength(A[this_1]) - 1) != dispatch_BigSubString_BigString_BigSubString_getSingle(B[this_1]) then call dispatch_LinkedList_LinkedList_LinkedList_add_1(intList_2530[this_1], dispatch_HashMap_HashMap_HashMap_get(LZW_dictionary, stringToIndex(dispatch_BigSubString_BigString_BigSubString_getSingle(B[this_1])))) endif set temp = intList_2530[this_1] set temp_1 = LZW_dictSize set clVar = alloc_PayloadCallback_encodePositions_doSeq_LZW() call construct_PayloadCallback(clVar) set onFinish_2558[clVar] = onFinish_2557[this_1] call encodePositions(temp, temp_1, clVar) endif return continue endfunction function Json_addToBigString takes integer this_1, integer big_1 returns integer local integer from = dispatch_LinkedList_LinkedList_LinkedList_staticItr(Json_plist[this_1]) local integer p loop exitwhen not LLIterator_hasNext(from) set p = LLIterator_next(from) call dispatch_BigString_BigString_BigString_addString(big_1, dispatch_BigSubString_BigString_BigSubString_getSingle(Property_name[p])) call cyc_BigSubString_addToBigString(1, Property_value[p], big_1) endloop return big_1 endfunction function dispatch_Json_Json_Json_addToBigString takes integer this_1, integer big_1 returns integer local integer Json_Json_addToBigString_result if Json_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Json.addToBigString") else call error("Called Json.addToBigString on invalid object.") endif endif set Json_Json_addToBigString_result = Json_addToBigString(this_1, big_1) return Json_Json_addToBigString_result endfunction function alloc_PayloadCallback_compress_MemoryAccessPedestal_Pedestal takes nothing returns integer local integer this_1 if PayloadCallback_firstFree == 0 then if PayloadCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set PayloadCallback_maxIndex = PayloadCallback_maxIndex + 1 set this_1 = PayloadCallback_maxIndex set PayloadCallback_typeId[this_1] = 1035 else call error("Out of memory: Could not create PayloadCallback_compress_MemoryAccessPedestal_Pedestal.") set this_1 = 0 endif else set PayloadCallback_firstFree = PayloadCallback_firstFree - 1 set this_1 = PayloadCallback_nextFree[PayloadCallback_firstFree] set PayloadCallback_typeId[this_1] = 1035 endif return this_1 endfunction function alloc_SeqCallback_doSeq_LZW_1896 takes nothing returns integer local integer this_1 if SeqCallback_firstFree == 0 then if SeqCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set SeqCallback_maxIndex = SeqCallback_maxIndex + 1 set this_1 = SeqCallback_maxIndex set SeqCallback_typeId[this_1] = 1130 else call error("Out of memory: Could not create SeqCallback_doSeq_LZW.") set this_1 = 0 endif else set SeqCallback_firstFree = SeqCallback_firstFree - 1 set this_1 = SeqCallback_nextFree[SeqCallback_firstFree] set SeqCallback_typeId[this_1] = 1130 endif return this_1 endfunction function compress takes integer data_1, integer onFinish_1 returns nothing local integer intList_1 local integer inc_1 local integer A_2 local integer B_1 local integer clVar call Log_debug("Compressing:") call dispatch_BigString_BigString_BigString_debugPrint(data_1) set intList_1 = new_LinkedList() call initDict() set inc_1 = 0 set A_2 = 0 set B_1 = 0 set clVar = alloc_SeqCallback_doSeq_LZW_1896() call construct_SeqCallback(clVar) set inc[clVar] = inc_1 set data[clVar] = data_1 set A[clVar] = A_2 set B[clVar] = B_1 set intList_2530[clVar] = intList_1 set onFinish_2557[clVar] = onFinish_1 call doSeq(clVar) endfunction function BigString_asSubstring takes integer this_1 returns integer return new_BigSubString_3626(this_1, 0, BigString_length[this_1]) endfunction function dispatch_BigString_BigString_BigString_asSubstring takes integer this_1 returns integer local integer BigString_BigString_asSubstring_result if BigString_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BigString.asSubstring") else call error("Called BigString.asSubstring on invalid object.") endif endif set BigString_BigString_asSubstring_result = BigString_asSubstring(this_1) return BigString_BigString_asSubstring_result endfunction function MemoryAccessPedestal_saveFile takes integer this_1 returns nothing local texttag receiver local integer json local integer big_1 local texttag receiver_1 local integer clVar local integer temp call Log_debug("Save file") set receiver = FText_tt[MemoryAccessPedestal_ttag[this_1]] call texttag_center(receiver, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], "|cff0884CEpreparing...", 10.) set json = new_Json() set big_1 = new_BigString() call dispatch_Json_Json_Json_addProperty(json, new_Property(new_BigSubString(MemoryAccessPedestal_ENTITIES_KEY), dispatch_BigString_BigString_BigString_asSubstring(MemoryAccessPedestal_entString[this_1]))) call dispatch_Json_Json_Json_addProperty(json, new_Property(new_BigSubString(MemoryAccessPedestal_TILES_KEY), dispatch_BigString_BigString_BigString_asSubstring(MemoryAccessPedestal_tileString[this_1]))) call dispatch_Json_Json_Json_addToBigString(json, big_1) call dispatch_Json_destroyJson(json) set receiver_1 = FText_tt[MemoryAccessPedestal_ttag[this_1]] call texttag_center(receiver_1, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], "|cff0884CEcompressing...", 10.) call printLog(1, "start compress") set temp = big_1 set clVar = alloc_PayloadCallback_compress_MemoryAccessPedestal_Pedestal() call construct_PayloadCallback(clVar) set this_3010[clVar] = this_1 set big_2202[clVar] = big_1 call compress(temp, clVar) endfunction function dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_saveFile takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling MemoryAccessPedestal.saveFile") else call error("Called MemoryAccessPedestal.saveFile on invalid object.") endif endif call MemoryAccessPedestal_saveFile(this_1) endfunction function construct_Property2 takes integer this_1, string name, string value returns nothing call Property_init(this_1) set Property_name[this_1] = new_BigSubString(name) set Property_value[this_1] = new_BigSubString(value) endfunction function new_Property_3728 takes string name, string value returns integer local integer this_1 = alloc_Property() call construct_Property2(this_1, name, value) return this_1 endfunction function TileData_serialize takes integer this_1 returns integer local integer json local integer receiver local integer receiver_1 local integer receiver_2 set TileData_tile[this_1] = getTileFromType(TileData_pos_x[this_1], TileData_pos_y[this_1]) set receiver = new_Json() call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_X, int_toString(real_toInt(TileData_xoff[this_1] - Entity_serializeOrigin_x / 128.)))) set receiver_1 = receiver call dispatch_Json_Json_Json_addProperty(receiver_1, new_Property_3728(Entity_KEY_Y, int_toString(real_toInt(TileData_yoff[this_1] - Entity_serializeOrigin_y / 128.)))) set json = receiver_1 if TileData_tile[this_1] != 1 then set receiver_2 = json call dispatch_Json_Json_Json_addProperty(receiver_2, new_Property_3728(Entity_KEY_TYPE, int_toString(TileData_tile[this_1]))) endif return json endfunction function dispatch_TileData_TileData_TileData_serialize takes integer this_1 returns integer local integer TileData_TileData_serialize_result if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling TileData.serialize") else call error("Called TileData.serialize on invalid object.") endif endif set TileData_TileData_serialize_result = TileData_serialize(this_1) return TileData_TileData_serialize_result endfunction function onExecute_doSeq_MemoryAccessPedestal_Pedestal takes integer this_1, integer cb_1 returns boolean local boolean continue = true if dispatch_LLIterator_LinkedList_LLIterator_hasNext(itr_2538[this_1]) then call dispatch_Json_Json_Json_addToBigString(dispatch_TileData_TileData_TileData_serialize(dispatch_LLIterator_LinkedList_LLIterator_next(itr_2538[this_1])), MemoryAccessPedestal_tileString[this_3009[this_1]]) if dispatch_LLIterator_LinkedList_LLIterator_hasNext(itr_2538[this_1]) then call dispatch_BigString_BigString_BigString_addString(MemoryAccessPedestal_tileString[this_3009[this_1]], Delimiter_token[Json_JSON_SIGN_COMMA]) endif call dispatch_TileData_destroyTileData(dispatch_LLIterator_LinkedList_LLIterator_remove(itr_2538[this_1])) else set continue = false call dispatch_BigString_BigString_BigString_addString(MemoryAccessPedestal_tileString[this_3009[this_1]], Delimiter_token[Json_JSON_CLOSE_ARRAY]) call dispatch_BigString_BigString_BigString_debugPrint(MemoryAccessPedestal_tileString[this_3009[this_1]]) call Log_debug("Saved tiles seq") call dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_saveFile(this_3009[this_1]) endif return continue endfunction function LLIterator_lookahead takes integer this_1 returns integer local integer retVal = 0 if dispatch_LLIterator_LinkedList_LLIterator_hasNext(this_1) then set retVal = LLEntry_elem[LLEntry_next[LLIterator_current[this_1]]] endif return retVal endfunction function dispatch_LLIterator_LinkedList_LLIterator_lookahead takes integer this_1 returns integer local integer LinkedList_LLIterator_lookahead_result if LLIterator_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LLIterator.lookahead") else call error("Called LLIterator.lookahead on invalid object.") endif endif set LinkedList_LLIterator_lookahead_result = LLIterator_lookahead(this_1) return LinkedList_LLIterator_lookahead_result endfunction function onExecute_doSeq_decodePositions_LZW takes integer this_1, integer cb2 returns boolean local boolean continue = true local integer idx if dispatch_LLIterator_LinkedList_LLIterator_hasNext(itr_2534[this_1]) then set idx = dispatch_LLIterator_LinkedList_LLIterator_next(itr_2534[this_1]) set A_1[this_1] = dispatch_Table_Table_Table_loadString(LZW_dictionary, idx) if dispatch_LLIterator_LinkedList_LLIterator_hasNext(itr_2534[this_1]) and dispatch_LLIterator_LinkedList_LLIterator_lookahead(itr_2534[this_1]) < LZW_dictSize then set B_70[this_1] = dispatch_Table_Table_Table_loadString(LZW_dictionary, dispatch_LLIterator_LinkedList_LLIterator_lookahead(itr_2534[this_1])) set B_70[this_1] = string_charAt(B_70[this_1], 0) elseif not dispatch_LLIterator_LinkedList_LLIterator_hasNext(itr_2534[this_1]) then set B_70[this_1] = null else set B_70[this_1] = string_charAt(A_1[this_1], 0) endif if B_70[this_1] != null and string_length(B_70[this_1]) > 0 then call putDict(A_1[this_1] + B_70[this_1]) endif call dispatch_BigString_BigString_BigString_addString(output_2567[this_1], A_1[this_1]) else set continue = false call Log_debug("decompressed") call dispatch_BigString_BigString_BigString_debugPrint(output_2567[this_1]) set PayloadCallback_customData[onFinish_2560[this_1]] = output_2567[this_1] call cyc_onExecute_save_doSeq_LZW(24, onFinish_2560[this_1], 0, null, 0, 0) endif return continue endfunction function dispatch_HLIterator_HashList_HLIterator_hasNext takes integer this_1 returns boolean local boolean HashList_HLIterator_hasNext_result if HLIterator_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HLIterator.hasNext") else call error("Called HLIterator.hasNext on invalid object.") endif endif set HashList_HLIterator_hasNext_result = HLIterator_hasNext(this_1) return HashList_HLIterator_hasNext_result endfunction function dispatch_HLIterator_HashList_HLIterator_next takes integer this_1 returns integer local integer HashList_HLIterator_next_result if HLIterator_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HLIterator.next") else call error("Called HLIterator.next on invalid object.") endif endif set HashList_HLIterator_next_result = HLIterator_next(this_1) return HashList_HLIterator_next_result endfunction function HLIterator_remove takes integer this_1 returns nothing call dispatch_HashList_HashList_HashList_removeAt(HLIterator_list[this_1], HLIterator_i[this_1] - 1) set HLIterator_i[this_1] = HLIterator_i[this_1] - 1 endfunction function dispatch_HLIterator_HashList_HLIterator_remove takes integer this_1 returns nothing if HLIterator_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling HLIterator.remove") else call error("Called HLIterator.remove on invalid object.") endif endif call HLIterator_remove(this_1) endfunction function MemoryAccessPedestal_isValid takes integer this_1, integer next returns boolean local integer instanceOfTemp local integer instanceOfTemp_1 local boolean andLeft local boolean andLeft_1 if Serializable_typeId[next] > 0 then set instanceOfTemp = Serializable_typeId[next] set andLeft = not (instanceOfTemp >= 1136 and instanceOfTemp <= 1226) else set andLeft = false endif if andLeft then set andLeft_1 = true else set instanceOfTemp_1 = Serializable_typeId[next] set andLeft_1 = instanceOfTemp_1 >= 1159 and instanceOfTemp_1 <= 1226 and unit_isAlive(UnitEntity_actor[next]) endif return andLeft_1 endfunction function dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_isValid takes integer this_1, integer next returns boolean local boolean Pedestal_MemoryAccessPedestal_isValid_result if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling MemoryAccessPedestal.isValid") else call error("Called MemoryAccessPedestal.isValid on invalid object.") endif endif set Pedestal_MemoryAccessPedestal_isValid_result = MemoryAccessPedestal_isValid(this_1, next) return Pedestal_MemoryAccessPedestal_isValid_result endfunction function alloc_SeqCallback_doSeq_MemoryAccessPedestal_Pedestal takes nothing returns integer local integer this_1 if SeqCallback_firstFree == 0 then if SeqCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set SeqCallback_maxIndex = SeqCallback_maxIndex + 1 set this_1 = SeqCallback_maxIndex set SeqCallback_typeId[this_1] = 1131 else call error("Out of memory: Could not create SeqCallback_doSeq_MemoryAccessPedestal_Pedestal.") set this_1 = 0 endif else set SeqCallback_firstFree = SeqCallback_firstFree - 1 set this_1 = SeqCallback_nextFree[SeqCallback_firstFree] set SeqCallback_typeId[this_1] = 1131 endif return this_1 endfunction function MemoryAccessPedestal_saveTileSeq takes integer this_1 returns nothing local texttag receiver local integer itr_1 local integer clVar call Log_debug("Save tiles seq") set receiver = FText_tt[MemoryAccessPedestal_ttag[this_1]] call texttag_center(receiver, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], "|cff0884CEsaving tiles...", 10.) call dispatch_BigString_BigString_BigString_reset(MemoryAccessPedestal_tileString[this_1]) call dispatch_BigString_BigString_BigString_addString(MemoryAccessPedestal_tileString[this_1], Delimiter_token[Json_JSON_OPEN_ARRAY]) set itr_1 = dispatch_LinkedList_LinkedList_LinkedList_staticItr(MemoryAccessPedestal_tiles[this_1]) set clVar = alloc_SeqCallback_doSeq_MemoryAccessPedestal_Pedestal() call construct_SeqCallback(clVar) set itr_2538[clVar] = itr_1 set this_3009[clVar] = this_1 call doSeq(clVar) endfunction function dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_saveTileSeq takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling MemoryAccessPedestal.saveTileSeq") else call error("Called MemoryAccessPedestal.saveTileSeq on invalid object.") endif endif call MemoryAccessPedestal_saveTileSeq(this_1) endfunction function Entity_serialize takes integer this_1 returns integer local integer json = new_Json() call dispatch_Entity_Entity_Entity_getPos(this_1) call dispatch_Json_Json_Json_addProperty(json, new_Property_3728(Entity_KEY_X, int_toString(real_toInt(Entity_pos_x[this_1] - Entity_serializeOrigin_x)))) call dispatch_Json_Json_Json_addProperty(json, new_Property_3728(Entity_KEY_Y, int_toString(real_toInt(Entity_pos_y[this_1] - Entity_serializeOrigin_y)))) call dispatch_Json_Json_Json_addProperty(json, new_Property_3728(Entity_KEY_Z, int_toString(real_toInt(Entity_pos_z[this_1] - Entity_serializeOrigin_z)))) return json endfunction function AirKiller_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_AIRKILL_INDEX))) return json endfunction function StaticBaseObject_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) local integer receiver local integer receiver_1 local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 if StaticBaseObject_rallyUnit[this_1] != null then set tuple_temp = unit_getPos3Zero(StaticBaseObject_rallyUnit[this_1]) set tuple_temp_1 = unit_getPos3Zero_return_y set tuple_temp_2 = unit_getPos3Zero_return_z set StaticBaseObject_rallyPoint_x[this_1] = tuple_temp set StaticBaseObject_rallyPoint_y[this_1] = tuple_temp_1 set StaticBaseObject_rallyPoint_z[this_1] = tuple_temp_2 endif set receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(BaseObject_KEY_RALLY_X, int_toString(real_toInt(StaticBaseObject_rallyPoint_x[this_1] - Entity_serializeOrigin_x)))) set receiver_1 = receiver call dispatch_Json_Json_Json_addProperty(receiver_1, new_Property_3728(BaseObject_KEY_RALLY_Y, int_toString(real_toInt(StaticBaseObject_rallyPoint_y[this_1] - Entity_serializeOrigin_y)))) return json endfunction function Arcanery_serialize takes integer this_1 returns integer local integer json = StaticBaseObject_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_ARCANERY_INDEX))) return json endfunction function BigKiller_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_BIGKILL_INDEX))) return json endfunction function BigObstacle_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_BIGOBS_INDEX))) return json endfunction function BigRandomKiller_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_BIGRANDKILL_INDEX))) return json endfunction function Bomber_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_BOMBER_INDEX))) return json endfunction function Bombertower_serialize takes integer this_1 returns integer local integer json = StaticBaseObject_serialize(this_1) call dispatch_Json_Json_Json_addProperty(json, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_BOMBTOWER_INDEX))) return json endfunction function Booster_serialize takes integer this_1 returns integer local integer json = StaticBaseObject_serialize(this_1) local integer receiver = json local integer receiver_1 call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_BOOSTER_INDEX))) if dispatch_ConfigValue_ConfigValue_ConfigValue_getInt(Booster_boostspeed[this_1]) != 200 then set receiver_1 = json call dispatch_Json_Json_Json_addProperty(receiver_1, new_Property_3728(Booster_BOOST_SPEED_KEY, int_toString(dispatch_ConfigValue_ConfigValue_ConfigValue_getInt(Booster_boostspeed[this_1])))) endif return json endfunction function Boots_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_BOOTS_INDEX))) return json endfunction function Coin_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_COIN_INDEX))) return json endfunction function CongaLineHead_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_CONGA_INDEX))) return json endfunction function Decoration_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) local integer receiver = json local integer receiver_1 local integer receiver_2 call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(Decoration_tid[this_1]))) if Decoration_hasBeenChanged[this_1] then set receiver_1 = json call dispatch_Json_Json_Json_addProperty(receiver_1, new_Property_3728(Decoration_KEY_ANGLE, int_toString(real_toInt(angle_degrees(unit_getFacingAngle(UnitEntity_actor[this_1])))))) endif if dispatch_ConfigValue_ConfigValue_ConfigValue_get(Decoration_scale[this_1]) != 1.0 then set receiver_2 = json call dispatch_Json_Json_Json_addProperty(receiver_2, new_Property_3728(Decoration_KEY_SCALE, int_toString(real_toInt(dispatch_ConfigValue_ConfigValue_ConfigValue_get(Decoration_scale[this_1]) * 100.)))) endif return json endfunction function Door_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) call dispatch_Json_Json_Json_addProperty(json, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_DOOR_INDEX))) call dispatch_Json_Json_Json_addProperty(json, new_Property_3728(Door_KEY_COLOR, int_toString(Door_col[this_1]))) call dispatch_Json_Json_Json_addProperty(json, new_Property_3728(Door_KEY_ROTATION, int_toString(boolean_toInt(Door_vertical[this_1])))) return json endfunction function Executer_serialize takes integer this_1 returns integer local integer json = StaticBaseObject_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_EXECUTER_INDEX))) return json endfunction function Faceless_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_FACELESS_INDEX))) return json endfunction function FireKiller_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_FIREKILL_INDEX))) return json endfunction function Fountain_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) call dispatch_Json_Json_Json_addProperty(json, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_FOUNTAIN_INDEX))) return json endfunction function GlaiveKiller_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_GLAIVEKILL_INDEX))) return json endfunction function HighObstacle_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_HIGH_OBS_INDEX))) return json endfunction function Jumper_serialize takes integer this_1 returns integer local integer json = StaticBaseObject_serialize(this_1) call dispatch_Json_Json_Json_addProperty(json, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_JUMPER_INDEX))) call dispatch_Json_Json_Json_addProperty(json, new_Property_3728("f", int_toString(real_toInt(dispatch_ConfigValue_ConfigValue_ConfigValue_get(Jumper_jumpForce[this_1]) * 100.)))) return json endfunction function Key_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) call dispatch_Json_Json_Json_addProperty(json, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_KEY_INDEX))) call dispatch_Json_Json_Json_addProperty(json, new_Property_3728(Key_KEY_COLOR, int_toString(Key_col[this_1]))) return json endfunction function Knockbacker_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_KNOCKBACKER_INDEX))) return json endfunction function ObjectTarget_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_OBJ_TARGET_INDEX))) return json endfunction function Pointer_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_POINTER_INDEX))) return json endfunction function Powernode_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) call dispatch_Json_Json_Json_addProperty(json, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_POWERNODE_INDEX))) return json endfunction function RevivePoint_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_REVIVE_INDEX))) return json endfunction function SmallKiller_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_SMALLKILL_INDEX))) return json endfunction function SmallObstacle_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_SMALLOBS_INDEX))) return json endfunction function SmallRandomKiller_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_SMALLRANDKILL_INDEX))) return json endfunction function Spinner_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) call dispatch_Json_Json_Json_addProperty(json, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_SPINNER_INDEX))) return json endfunction function TankKiller_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_TANKKILL_INDEX))) return json endfunction function Teleporter_serialize takes integer this_1 returns integer local integer json = StaticBaseObject_serialize(this_1) call dispatch_Json_Json_Json_addProperty(json, new_Property_3728("t", int_toString(SerializeIds_TELEPORTER_INDEX))) return json endfunction function TerrainBlocker_serialize takes integer this_1 returns integer local integer json = StaticBaseObject_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_TBLOCKER_INDEX))) return json endfunction function TerrainChanger_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_TC_INDEX))) return json endfunction function Texter_serialize takes integer this_1 returns integer local integer json = StaticBaseObject_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_TEXTER_INDEX))) return json endfunction function Tome_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_TOME_INDEX))) return json endfunction function Tracks_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) call dispatch_Json_Json_Json_addProperty(json, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_TRACKS_INDEX))) return json endfunction function Trap_serialize takes integer this_1 returns integer local integer json = StaticBaseObject_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_TRAP_INDEX))) return json endfunction function Tree_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_TREE_INDEX))) return json endfunction function UnitCreator_serialize takes integer this_1 returns integer local integer json = StaticBaseObject_serialize(this_1) local integer receiver = json local integer receiver_1 call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_UNITCREATOR_INDEX))) set receiver_1 = json call dispatch_Json_Json_Json_addProperty(receiver_1, new_Property_3728(Unitcreator_KEY_SPAWN, int_toString(UnitCreator_spawnUnitType[this_1]))) return json endfunction function UnitRemover_serialize takes integer this_1 returns integer local integer json = StaticBaseObject_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_UNITREMOVER_INDEX))) return json endfunction function VolcanoObstacle_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_VOLCANO_INDEX))) return json endfunction function Vortex_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) call dispatch_Json_Json_Json_addProperty(json, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_VORTEX_INDEX))) return json endfunction function Wall_serialize takes integer this_1 returns integer local integer json = Entity_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(Wall_tId[this_1]))) return json endfunction function Waypoint_serialize takes integer this_1 returns integer local integer json = StaticBaseObject_serialize(this_1) local integer receiver = json call dispatch_Json_Json_Json_addProperty(receiver, new_Property_3728(Entity_KEY_TYPE, int_toString(SerializeIds_WAYPOINT_INDEX))) return json endfunction function cyc_dispatch_Entity_Entity_Entity_serialize takes integer funcChoice, integer this_1 returns nothing local integer Entity_Entity_serialize_result if funcChoice == 0 then if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Entity.serialize") else call error("Called Entity.serialize on invalid object.") endif endif if Serializable_typeId[this_1] <= 1193 then if Serializable_typeId[this_1] <= 1178 then if Serializable_typeId[this_1] <= 1167 then if Serializable_typeId[this_1] <= 1156 then if Serializable_typeId[this_1] <= 1154 then if Serializable_typeId[this_1] <= 1153 then set Entity_Entity_serialize_result = Entity_serialize(this_1) else set Entity_Entity_serialize_result = Boots_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1155 then set Entity_Entity_serialize_result = Coin_serialize(this_1) else set Entity_Entity_serialize_result = Key_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1159 then if Serializable_typeId[this_1] <= 1157 then set Entity_Entity_serialize_result = Tome_serialize(this_1) else set Entity_Entity_serialize_result = Entity_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1160 then set Entity_Entity_serialize_result = Bomber_serialize(this_1) else set Entity_Entity_serialize_result = Entity_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1174 then if Serializable_typeId[this_1] <= 1172 then if Serializable_typeId[this_1] <= 1168 then call cyc_dispatch_Entity_Entity_Entity_serialize(1, this_1) set Entity_Entity_serialize_result = tempReturn_integer else set Entity_Entity_serialize_result = Entity_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1173 then set Entity_Entity_serialize_result = CongaLineHead_serialize(this_1) else set Entity_Entity_serialize_result = Entity_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1176 then if Serializable_typeId[this_1] <= 1175 then set Entity_Entity_serialize_result = AirKiller_serialize(this_1) else set Entity_Entity_serialize_result = BigKiller_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1177 then set Entity_Entity_serialize_result = BigRandomKiller_serialize(this_1) else set Entity_Entity_serialize_result = Faceless_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1186 then if Serializable_typeId[this_1] <= 1182 then if Serializable_typeId[this_1] <= 1180 then if Serializable_typeId[this_1] <= 1179 then set Entity_Entity_serialize_result = FireKiller_serialize(this_1) else set Entity_Entity_serialize_result = GlaiveKiller_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1181 then set Entity_Entity_serialize_result = Knockbacker_serialize(this_1) else set Entity_Entity_serialize_result = Entity_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1184 then if Serializable_typeId[this_1] <= 1183 then set Entity_Entity_serialize_result = Pointer_serialize(this_1) else set Entity_Entity_serialize_result = SmallKiller_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1185 then set Entity_Entity_serialize_result = SmallRandomKiller_serialize(this_1) else set Entity_Entity_serialize_result = TankKiller_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1190 then if Serializable_typeId[this_1] <= 1188 then if Serializable_typeId[this_1] <= 1187 then set Entity_Entity_serialize_result = ObjectTarget_serialize(this_1) else set Entity_Entity_serialize_result = Powernode_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1189 then set Entity_Entity_serialize_result = Entity_serialize(this_1) else set Entity_Entity_serialize_result = Spinner_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1192 then if Serializable_typeId[this_1] <= 1191 then set Entity_Entity_serialize_result = TerrainChanger_serialize(this_1) else set Entity_Entity_serialize_result = Entity_serialize(this_1) endif else set Entity_Entity_serialize_result = StaticBaseObject_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1211 then if Serializable_typeId[this_1] <= 1203 then if Serializable_typeId[this_1] <= 1197 then if Serializable_typeId[this_1] <= 1195 then if Serializable_typeId[this_1] <= 1194 then set Entity_Entity_serialize_result = Arcanery_serialize(this_1) else set Entity_Entity_serialize_result = Bombertower_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1196 then set Entity_Entity_serialize_result = Booster_serialize(this_1) else set Entity_Entity_serialize_result = StaticBaseObject_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1199 then if Serializable_typeId[this_1] <= 1198 then set Entity_Entity_serialize_result = Executer_serialize(this_1) else set Entity_Entity_serialize_result = Jumper_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1202 then set Entity_Entity_serialize_result = StaticBaseObject_serialize(this_1) else set Entity_Entity_serialize_result = Teleporter_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1207 then if Serializable_typeId[this_1] <= 1205 then if Serializable_typeId[this_1] <= 1204 then set Entity_Entity_serialize_result = TerrainBlocker_serialize(this_1) else set Entity_Entity_serialize_result = Texter_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1206 then set Entity_Entity_serialize_result = Trap_serialize(this_1) else set Entity_Entity_serialize_result = UnitCreator_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1209 then if Serializable_typeId[this_1] <= 1208 then set Entity_Entity_serialize_result = StaticBaseObject_serialize(this_1) else set Entity_Entity_serialize_result = UnitRemover_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1210 then set Entity_Entity_serialize_result = Waypoint_serialize(this_1) else set Entity_Entity_serialize_result = Entity_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1219 then if Serializable_typeId[this_1] <= 1215 then if Serializable_typeId[this_1] <= 1213 then if Serializable_typeId[this_1] <= 1212 then set Entity_Entity_serialize_result = Decoration_serialize(this_1) else set Entity_Entity_serialize_result = Door_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1214 then set Entity_Entity_serialize_result = Fountain_serialize(this_1) else set Entity_Entity_serialize_result = RevivePoint_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1217 then if Serializable_typeId[this_1] <= 1216 then set Entity_Entity_serialize_result = Entity_serialize(this_1) else set Entity_Entity_serialize_result = BigObstacle_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1218 then set Entity_Entity_serialize_result = HighObstacle_serialize(this_1) else set Entity_Entity_serialize_result = SmallObstacle_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1223 then if Serializable_typeId[this_1] <= 1221 then if Serializable_typeId[this_1] <= 1220 then set Entity_Entity_serialize_result = VolcanoObstacle_serialize(this_1) else set Entity_Entity_serialize_result = Wall_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1222 then set Entity_Entity_serialize_result = Entity_serialize(this_1) else set Entity_Entity_serialize_result = Tracks_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1225 then if Serializable_typeId[this_1] <= 1224 then set Entity_Entity_serialize_result = Tree_serialize(this_1) else set Entity_Entity_serialize_result = Vortex_serialize(this_1) endif else set Entity_Entity_serialize_result = Entity_serialize(this_1) endif set tempReturn_integer = Entity_Entity_serialize_result return elseif funcChoice == 1 then call cyc_dispatch_Entity_Entity_Entity_serialize(0, ItemEntityBridge_obj[this_1]) set tempReturn_integer = tempReturn_integer return endif endfunction function dispatch_Serializable_Entity_Serializable_serialize takes integer this_1 returns integer local integer Entity_Serializable_serialize_result if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Serializable.serialize") else call error("Called Serializable.serialize on invalid object.") endif endif if Serializable_typeId[this_1] <= 1194 then if Serializable_typeId[this_1] <= 1178 then if Serializable_typeId[this_1] <= 1167 then if Serializable_typeId[this_1] <= 1156 then if Serializable_typeId[this_1] <= 1154 then if Serializable_typeId[this_1] <= 1153 then set Entity_Serializable_serialize_result = Entity_serialize(this_1) else set Entity_Serializable_serialize_result = Boots_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1155 then set Entity_Serializable_serialize_result = Coin_serialize(this_1) else set Entity_Serializable_serialize_result = Key_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1159 then if Serializable_typeId[this_1] <= 1157 then set Entity_Serializable_serialize_result = Tome_serialize(this_1) else set Entity_Serializable_serialize_result = Entity_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1160 then set Entity_Serializable_serialize_result = Bomber_serialize(this_1) else set Entity_Serializable_serialize_result = Entity_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1174 then if Serializable_typeId[this_1] <= 1172 then if Serializable_typeId[this_1] <= 1168 then call cyc_dispatch_Entity_Entity_Entity_serialize(1, this_1) set Entity_Serializable_serialize_result = tempReturn_integer else set Entity_Serializable_serialize_result = Entity_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1173 then set Entity_Serializable_serialize_result = CongaLineHead_serialize(this_1) else set Entity_Serializable_serialize_result = Entity_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1176 then if Serializable_typeId[this_1] <= 1175 then set Entity_Serializable_serialize_result = AirKiller_serialize(this_1) else set Entity_Serializable_serialize_result = BigKiller_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1177 then set Entity_Serializable_serialize_result = BigRandomKiller_serialize(this_1) else set Entity_Serializable_serialize_result = Faceless_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1186 then if Serializable_typeId[this_1] <= 1182 then if Serializable_typeId[this_1] <= 1180 then if Serializable_typeId[this_1] <= 1179 then set Entity_Serializable_serialize_result = FireKiller_serialize(this_1) else set Entity_Serializable_serialize_result = GlaiveKiller_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1181 then set Entity_Serializable_serialize_result = Knockbacker_serialize(this_1) else set Entity_Serializable_serialize_result = Entity_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1184 then if Serializable_typeId[this_1] <= 1183 then set Entity_Serializable_serialize_result = Pointer_serialize(this_1) else set Entity_Serializable_serialize_result = SmallKiller_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1185 then set Entity_Serializable_serialize_result = SmallRandomKiller_serialize(this_1) else set Entity_Serializable_serialize_result = TankKiller_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1190 then if Serializable_typeId[this_1] <= 1188 then if Serializable_typeId[this_1] <= 1187 then set Entity_Serializable_serialize_result = ObjectTarget_serialize(this_1) else set Entity_Serializable_serialize_result = Powernode_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1189 then set Entity_Serializable_serialize_result = Entity_serialize(this_1) else set Entity_Serializable_serialize_result = Spinner_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1192 then if Serializable_typeId[this_1] <= 1191 then set Entity_Serializable_serialize_result = TerrainChanger_serialize(this_1) else set Entity_Serializable_serialize_result = Entity_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1193 then set Entity_Serializable_serialize_result = StaticBaseObject_serialize(this_1) else set Entity_Serializable_serialize_result = Arcanery_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1212 then if Serializable_typeId[this_1] <= 1204 then if Serializable_typeId[this_1] <= 1198 then if Serializable_typeId[this_1] <= 1196 then if Serializable_typeId[this_1] <= 1195 then set Entity_Serializable_serialize_result = Bombertower_serialize(this_1) else set Entity_Serializable_serialize_result = Booster_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1197 then set Entity_Serializable_serialize_result = StaticBaseObject_serialize(this_1) else set Entity_Serializable_serialize_result = Executer_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1202 then if Serializable_typeId[this_1] <= 1199 then set Entity_Serializable_serialize_result = Jumper_serialize(this_1) else set Entity_Serializable_serialize_result = StaticBaseObject_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1203 then set Entity_Serializable_serialize_result = Teleporter_serialize(this_1) else set Entity_Serializable_serialize_result = TerrainBlocker_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1208 then if Serializable_typeId[this_1] <= 1206 then if Serializable_typeId[this_1] <= 1205 then set Entity_Serializable_serialize_result = Texter_serialize(this_1) else set Entity_Serializable_serialize_result = Trap_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1207 then set Entity_Serializable_serialize_result = UnitCreator_serialize(this_1) else set Entity_Serializable_serialize_result = StaticBaseObject_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1210 then if Serializable_typeId[this_1] <= 1209 then set Entity_Serializable_serialize_result = UnitRemover_serialize(this_1) else set Entity_Serializable_serialize_result = Waypoint_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1211 then set Entity_Serializable_serialize_result = Entity_serialize(this_1) else set Entity_Serializable_serialize_result = Decoration_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1220 then if Serializable_typeId[this_1] <= 1216 then if Serializable_typeId[this_1] <= 1214 then if Serializable_typeId[this_1] <= 1213 then set Entity_Serializable_serialize_result = Door_serialize(this_1) else set Entity_Serializable_serialize_result = Fountain_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1215 then set Entity_Serializable_serialize_result = RevivePoint_serialize(this_1) else set Entity_Serializable_serialize_result = Entity_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1218 then if Serializable_typeId[this_1] <= 1217 then set Entity_Serializable_serialize_result = BigObstacle_serialize(this_1) else set Entity_Serializable_serialize_result = HighObstacle_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1219 then set Entity_Serializable_serialize_result = SmallObstacle_serialize(this_1) else set Entity_Serializable_serialize_result = VolcanoObstacle_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1224 then if Serializable_typeId[this_1] <= 1222 then if Serializable_typeId[this_1] <= 1221 then set Entity_Serializable_serialize_result = Wall_serialize(this_1) else set Entity_Serializable_serialize_result = Entity_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1223 then set Entity_Serializable_serialize_result = Tracks_serialize(this_1) else set Entity_Serializable_serialize_result = Tree_serialize(this_1) endif elseif Serializable_typeId[this_1] <= 1226 then if Serializable_typeId[this_1] <= 1225 then set Entity_Serializable_serialize_result = Vortex_serialize(this_1) else set Entity_Serializable_serialize_result = Entity_serialize(this_1) endif else set Entity_Serializable_serialize_result = TileData_serialize(this_1) endif return Entity_Serializable_serialize_result endfunction function onExecute_doSeq_nullTimer_MemoryAccessPedestal_Pedestal takes integer this_1, integer cb_1 returns boolean local boolean continue = true local integer next local integer json if dispatch_HLIterator_HashList_HLIterator_hasNext(itr_2537[this_1]) then set next = dispatch_HLIterator_HashList_HLIterator_next(itr_2537[this_1]) if dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_isValid(this_3008[this_1], next) then set json = dispatch_Serializable_Entity_Serializable_serialize(next) call dispatch_Json_Json_Json_addToBigString(json, MemoryAccessPedestal_entString[this_3008[this_1]]) call dispatch_Json_destroyJson(json) if dispatch_HLIterator_HashList_HLIterator_hasNext(itr_2537[this_1]) then call dispatch_BigString_BigString_BigString_addString(MemoryAccessPedestal_entString[this_3008[this_1]], Delimiter_token[Json_JSON_SIGN_COMMA]) endif call effect_destr(effectFromIndex(dispatch_HashMap_HashMap_HashMap_get(MemoryAccessPedestal_effects[this_3008[this_1]], next))) call dispatch_HashMap_HashMap_HashMap_remove(MemoryAccessPedestal_effects[this_3008[this_1]], next) call dispatch_HLIterator_HashList_HLIterator_remove(itr_2537[this_1]) endif else set continue = false call dispatch_BigString_BigString_BigString_addString(MemoryAccessPedestal_entString[this_3008[this_1]], Delimiter_token[Json_JSON_CLOSE_ARRAY]) call Log_debug("Save tiles") call dispatch_MemoryAccessPedestal_Pedestal_MemoryAccessPedestal_saveTileSeq(this_3008[this_1]) endif return continue endfunction function BigNum_isZero takes integer this_1 returns boolean local integer cur = BigNum_list[this_1] loop exitwhen not (cur != 0) if BigNum_l_leaf[cur] != 0 then return false endif set cur = BigNum_l_next[cur] endloop return true endfunction function dispatch_BigNum_BigNum_BigNum_isZero takes integer this_1 returns boolean local boolean BigNum_BigNum_isZero_result if BigNum_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BigNum.isZero") else call error("Called BigNum.isZero on invalid object.") endif endif set BigNum_BigNum_isZero_result = BigNum_isZero(this_1) return BigNum_BigNum_isZero_result endfunction function LinkedList_addtoStart takes integer this_1, integer elem returns nothing local integer entry = new_LLEntry(elem, LinkedList_dummy[this_1], LLEntry_next[LinkedList_dummy[this_1]]) set LLEntry_prev[LLEntry_next[LinkedList_dummy[this_1]]] = entry set LLEntry_next[LinkedList_dummy[this_1]] = entry set LinkedList_size[this_1] = LinkedList_size[this_1] + 1 endfunction function dispatch_LinkedList_LinkedList_LinkedList_addtoStart takes integer this_1, integer elem returns nothing if LinkedList_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling LinkedList.addtoStart") else call error("Called LinkedList.addtoStart on invalid object.") endif endif call LinkedList_addtoStart(this_1, elem) endfunction function onExecute_doSeq_nullTimer_load_LZW takes integer this_1, integer cb1_1 returns boolean local boolean continue = true local integer dec local string st local integer iterator local integer s if not dispatch_BigNum_BigNum_BigNum_isZero(Encoder_bignum[encoder_2348[this_1]]) then set dec = dispatch_Encoder_Encoder_Encoder_decode(encoder_2348[this_1], dictSize_2304[this_1]) call dispatch_LinkedList_LinkedList_LinkedList_addtoStart(positions[this_1], dec) else set continue = false if Printing_config_DEBUG_LEVEL == 0 then set st = "" set iterator = LinkedList_iterator(positions[this_1]) loop exitwhen not LLIterator_hasNext(iterator) set s = LLIterator_next(iterator) set st = st + int_toString(s) + "," endloop call LLIterator_close(iterator) call printLog(0, "decoded positions: " + st) endif set PayloadCallback_customData[onFinish_2556[this_1]] = positions[this_1] call cyc_onExecute_save_doSeq_LZW(24, onFinish_2556[this_1], 0, null, 0, 0) endif return continue endfunction function dispatch_SeqCallback_SeqWorker_SeqCallback_onExecute takes integer this_1, integer cb_1 returns boolean local boolean SeqWorker_SeqCallback_onExecute_result if SeqCallback_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SeqCallback.onExecute") else call error("Called SeqCallback.onExecute on invalid object.") endif endif if SeqCallback_typeId[this_1] <= 1129 then if SeqCallback_typeId[this_1] <= 1127 then if SeqCallback_typeId[this_1] <= 1126 then if SeqCallback_typeId[this_1] <= 1125 then set SeqWorker_SeqCallback_onExecute_result = onExecute_doSeq_Encoder_Encoder(this_1, cb_1) else set SeqWorker_SeqCallback_onExecute_result = onExecute_doSeq_Encoder_Encoder_3873(this_1, cb_1) endif else set SeqWorker_SeqCallback_onExecute_result = onExecute_doSeq_JsonParser_JsonParser(this_1, cb_1) endif elseif SeqCallback_typeId[this_1] <= 1128 then set SeqWorker_SeqCallback_onExecute_result = onExecute_doSeq_JsonParser_JsonParser_3875(this_1, cb_1) else set SeqWorker_SeqCallback_onExecute_result = onExecute_doSeq_LZW(this_1, cb_1) endif elseif SeqCallback_typeId[this_1] <= 1132 then if SeqCallback_typeId[this_1] <= 1131 then if SeqCallback_typeId[this_1] <= 1130 then set SeqWorker_SeqCallback_onExecute_result = onExecute_doSeq_LZW_3877(this_1, cb_1) else set SeqWorker_SeqCallback_onExecute_result = onExecute_doSeq_MemoryAccessPedestal_Pedestal(this_1, cb_1) endif else set SeqWorker_SeqCallback_onExecute_result = onExecute_doSeq_decodePositions_LZW(this_1, cb_1) endif elseif SeqCallback_typeId[this_1] <= 1133 then set SeqWorker_SeqCallback_onExecute_result = onExecute_doSeq_nullTimer_MemoryAccessPedestal_Pedestal(this_1, cb_1) else set SeqWorker_SeqCallback_onExecute_result = onExecute_doSeq_nullTimer_load_LZW(this_1, cb_1) endif return SeqWorker_SeqCallback_onExecute_result endfunction function SeqCallback_doStep takes integer this_1 returns boolean if not SeqCallback_done[this_1] then return dispatch_SeqCallback_SeqWorker_SeqCallback_onExecute(this_1, this_1) endif return false endfunction function dispatch_SeqCallback_SeqWorker_SeqCallback_doStep takes integer this_1 returns boolean local boolean SeqWorker_SeqCallback_doStep_result if SeqCallback_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SeqCallback.doStep") else call error("Called SeqCallback.doStep on invalid object.") endif endif set SeqWorker_SeqCallback_doStep_result = SeqCallback_doStep(this_1) return SeqWorker_SeqCallback_doStep_result endfunction function SeqCallback_onDestroy takes integer this_1 returns nothing if SeqCallback_ref[this_1] != null then call timer_release(SeqCallback_ref[this_1]) set SeqCallback_ref[this_1] = null endif endfunction function dealloc_SeqCallback takes integer obj_1 returns nothing if SeqCallback_typeId[obj_1] == 0 then call error("Double free: object of type SeqCallback") else set SeqCallback_nextFree[SeqCallback_firstFree] = obj_1 set SeqCallback_firstFree = SeqCallback_firstFree + 1 set SeqCallback_typeId[obj_1] = 0 endif endfunction function destroySeqCallback takes integer this_1 returns nothing call SeqCallback_onDestroy(this_1) call dealloc_SeqCallback(this_1) endfunction function dispatch_SeqCallback_destroySeqCallback takes integer this_1 returns nothing if SeqCallback_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SeqCallback.SeqCallback") else call error("Called SeqCallback.SeqCallback on invalid object.") endif endif call destroySeqCallback(this_1) endfunction function SeqCallback_terminate takes integer this_1 returns nothing if ( not SeqCallback_done[this_1]) or SeqCallback_ref[this_1] != null then set SeqCallback_done[this_1] = true call dispatch_SeqCallback_destroySeqCallback(this_1) endif endfunction function dispatch_SeqCallback_SeqWorker_SeqCallback_terminate takes integer this_1 returns nothing if SeqCallback_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling SeqCallback.terminate") else call error("Called SeqCallback.terminate on invalid object.") endif endif call SeqCallback_terminate(this_1) endfunction function onSeq takes nothing returns nothing local timer time = GetExpiredTimer() local integer rcb = timer_getData(time) if ( not SeqCallback_done[rcb]) and SeqCallback_ref[rcb] != null then if dispatch_SeqCallback_SeqWorker_SeqCallback_doStep(rcb) then call timer_start(time, 0.001, ref_function_code__start_SeqWorker_2675) else call dispatch_SeqCallback_SeqWorker_SeqCallback_terminate(rcb) endif endif endfunction function code__start_SeqWorker takes nothing returns nothing call onSeq() endfunction function code__start_SeqWorker_2099 takes nothing returns nothing call onSeq() endfunction function correctKeys takes nothing returns nothing local item itm = GetEnumItem() local integer k local integer k_1 if GetItemTypeId(itm) == 1227894841 then call new_Key(GetItemX(itm), GetItemY(itm), GameConstants_STAFF_PLAYER) call item_remove(itm) elseif GetItemTypeId(itm) == 1227894858 then set k = new_Key(GetItemX(itm), GetItemY(itm), GameConstants_STAFF_PLAYER) set Key_col[k] = 4 call dispatch_Key_Key_Key_recolor(k) call item_remove(itm) elseif GetItemTypeId(itm) == 1227894840 then set k_1 = new_Key(GetItemX(itm), GetItemY(itm), GameConstants_STAFF_PLAYER) set Key_col[k_1] = 3 call dispatch_Key_Key_Key_recolor(k_1) call item_remove(itm) endif endfunction function correctRegion takes nothing returns nothing local integer from = dispatch_LinkedList_LinkedList_LinkedList_staticItr(Escaper_escapers) local integer e_1 loop exitwhen not LLIterator_hasNext(from) set e_1 = LLIterator_next(from) call dispatch_Escaper_Escaper_Escaper_updateRegionData(e_1) endloop endfunction function deleteKeys takes nothing returns nothing local item itm = GetEnumItem() if item_getEntity(itm) != 0 then call Log_debug("Delete Keys") call cyc_RevivePoint_terminate(18, item_getEntity(itm)) else call item_remove(itm) endif endfunction function cyc_BigNum_l_clean takes integer funcChoice, integer this_1 returns nothing local boolean BigNum_BigNum_l_clean_result local boolean andLeft if funcChoice == 0 then if BigNum_l_next[this_1] == 0 and BigNum_l_leaf[this_1] == 0 then set tempReturn_boolean = true return else if BigNum_l_next[this_1] != 0 then call cyc_BigNum_l_clean(1, BigNum_l_next[this_1]) set andLeft = tempReturn_boolean else set andLeft = false endif if andLeft then call dispatch_BigNum_l_destroyBigNum_l(BigNum_l_next[this_1]) set BigNum_l_next[this_1] = 0 set tempReturn_boolean = BigNum_l_leaf[this_1] == 0 return else set tempReturn_boolean = false return endif endif elseif funcChoice == 1 then if BigNum_l_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BigNum_l.clean") else call error("Called BigNum_l.clean on invalid object.") endif endif call cyc_BigNum_l_clean(0, this_1) set BigNum_BigNum_l_clean_result = tempReturn_boolean set tempReturn_boolean = BigNum_BigNum_l_clean_result return endif endfunction function BigNum_clean takes integer this_1 returns nothing call cyc_BigNum_l_clean(1, BigNum_list[this_1]) endfunction function dispatch_BigNum_BigNum_BigNum_clean takes integer this_1 returns nothing if BigNum_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BigNum.clean") else call error("Called BigNum.clean on invalid object.") endif endif call BigNum_clean(this_1) endfunction function Encoder_clean takes integer this_1 returns nothing call dispatch_BigNum_BigNum_BigNum_clean(Encoder_bignum[this_1]) endfunction function dispatch_Encoder_Encoder_Encoder_clean takes integer this_1 returns nothing if Encoder_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Encoder.clean") else call error("Called Encoder.clean on invalid object.") endif endif call Encoder_clean(this_1) endfunction function run_execute_Encoder_Encoder takes integer this_1 returns nothing call dispatch_Encoder_Encoder_Encoder_clean(this_2890[this_1]) endfunction function Encoder_hash_1 takes integer this_1 returns integer local integer hash local integer x local integer cur call Log_debug("hash") set hash = 0 set cur = BigNum_list[Encoder_bignum[this_1]] loop exitwhen not (cur != 0) set x = BigNum_l_leaf[cur] set hash = ModuloInteger(hash + 79 * hash / (x + 1) + 293 * x / (1 + hash - hash / Encoder_base[this_1] * Encoder_base[this_1]) + 479, Encoder_maxHash) set cur = BigNum_l_next[cur] endloop call Log_debug("hashed") return hash endfunction function dispatch_Encoder_Encoder_Encoder_hash takes integer this_1 returns integer local integer Encoder_Encoder_hash_result if Encoder_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Encoder.hash") else call error("Called Encoder.hash on invalid object.") endif endif set Encoder_Encoder_hash_result = Encoder_hash_1(this_1) return Encoder_Encoder_hash_result endfunction function run_execute_Encoder_Encoder_3997 takes integer this_1 returns nothing set Encoder_hash[this_2891[this_1]] = dispatch_Encoder_Encoder_Encoder_hash(this_2891[this_1]) endfunction function dispatch_LimitedExecuteAction_Execute_LimitedExecuteAction_run takes integer this_1 returns nothing endfunction function dispatch_LimitedExecuteCondition_Execute_LimitedExecuteCondition_check takes integer this_1 returns boolean return false endfunction function alloc_ForForceCallback_execute_Execute takes nothing returns integer local integer this_1 if ForForceCallback_firstFree == 0 then if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1 set this_1 = ForForceCallback_maxIndex set ForForceCallback_typeId[this_1] = 840 else call error("Out of memory: Could not create ForForceCallback_execute_Execute.") set this_1 = 0 endif else set ForForceCallback_firstFree = ForForceCallback_firstFree - 1 set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree] set ForForceCallback_typeId[this_1] = 840 endif return this_1 endfunction function executeWhileInternal takes integer resetCount_1, integer condition_1, integer action_1 returns nothing local integer clVar = alloc_ForForceCallback_execute_Execute() set condition[clVar] = condition_1 set resetCount[clVar] = resetCount_1 set action[clVar] = action_1 call execute(clVar) endfunction function run_execute_Execute takes integer this_1 returns nothing local integer i = 0 loop exitwhen not (dispatch_LimitedExecuteCondition_Execute_LimitedExecuteCondition_check(condition[this_1]) and i < resetCount[this_1]) call dispatch_LimitedExecuteAction_Execute_LimitedExecuteAction_run(action[this_1]) set i = i + 1 endloop if dispatch_LimitedExecuteCondition_Execute_LimitedExecuteCondition_check(condition[this_1]) then call executeWhileInternal(resetCount[this_1], condition[this_1], action[this_1]) endif endfunction function booleanToIndex takes boolean u_1 returns integer local integer cond_result if u_1 then set cond_result = 1 else set cond_result = 0 endif return cond_result endfunction function groupToIndex takes group object returns integer return handle_getTCHandleId(object) endfunction function push takes group g returns nothing set GroupUtils_stack[GroupUtils_numStack] = g call dispatch_HashMap_HashMap_HashMap_put(GroupUtils_used, groupToIndex(GroupUtils_stack[GroupUtils_numStack]), booleanToIndex(false)) set GroupUtils_numStack = GroupUtils_numStack + 1 endfunction function run_execute_GroupUtils takes integer this_1 returns nothing local integer i local integer temp set GroupUtils_numTotal = GroupUtils_numTotal + createNow[this_1] set i = 1 set temp = createNow[this_1] loop exitwhen i > temp call push(CreateGroup()) set i = i + 1 endloop endfunction function tile takes integer x, integer y returns integer if x < 0 or x >= TerrainUtils_TILES_X or y < 0 or y >= TerrainUtils_TILES_Y then set tile_return_id = -1 return tile_return_id endif set tile_return_id = y * TerrainUtils_TILES_X + x return tile_return_id endfunction function tile_getX takes integer this_id returns real return ModuloInteger(this_id, TerrainUtils_TILES_X) * 128. + MapBounds_boundMin_x endfunction function tile_getY takes integer this_id returns real return this_id / TerrainUtils_TILES_X * 128. + MapBounds_boundMin_y endfunction function tile_toVec2 takes integer this_id returns real set tile_toVec2_return_x = tile_getX(this_id) set tile_toVec2_return_y = tile_getY(this_id) return tile_toVec2_return_x endfunction function run_execute_Heightmap takes integer this_1 returns nothing local integer y local integer temp local integer tile_id local integer tuple_temp set Reference_val[xRef[this_1]] = Reference_val[xRef[this_1]] + 1 set y = 0 set temp = TerrainUtils_TILES_Y loop exitwhen y > temp set tuple_temp = tile(Reference_val[xRef[this_1]], y) set tile_id = tuple_temp call dispatch_HashMap_HashMap_HashMap_put(zMap[this_1], tile_id, realToIndex(vec2_getTerrainZ(tile_toVec2(tile_id), tile_toVec2_return_y))) set y = y + 1 endloop endfunction function realFromIndex takes integer index returns real return index / TypeCasting_R2I_PRECISION endfunction function run_execute_Heightmap_4001 takes integer this_1 returns nothing local integer x local integer y local integer temp local integer temp_tuple_id local integer temp_tuple_id_1 local integer temp_tuple_id_2 local integer temp_tuple_id_3 local integer temp_1 local integer temp_2 local integer temp_3 local integer temp_4 local integer temp_5 local integer temp_6 local integer temp_7 local real temp_1_1 local real temp_2_1 local real temp_8 local real temp_9 local real temp_10 local real tuple_temp local real tuple_temp_1 local integer tuple_temp_2 local integer tuple_temp_3 local integer tuple_temp_4 local integer tuple_temp_5 local integer tuple_temp_6 local integer tuple_temp_7 local integer tuple_temp_8 local real tuple_temp_9 local real tuple_temp_10 local real tuple_temp_11 local real tuple_temp_12 local real tuple_temp_13 local real tuple_temp_14 set Reference_val[xRef_3153[this_1]] = Reference_val[xRef_3153[this_1]] + 1 set x = Reference_val[xRef_3153[this_1]] set y = 0 set temp = TerrainUtils_TILES_Y loop exitwhen y > temp set temp_5 = x + TerrainUtils_TILES_X * y set temp_6 = x set temp_7 = y set tuple_temp = MapBounds_boundMin_x + x * 128 set tuple_temp_1 = MapBounds_boundMin_y + y * 128 set temp_1_1 = tuple_temp set temp_2_1 = tuple_temp_1 set temp_1 = zMap_3157[this_1] set tuple_temp_2 = tile(x, y) set temp_tuple_id = tuple_temp_2 set temp_8 = realFromIndex(dispatch_HashMap_HashMap_HashMap_get(temp_1, temp_tuple_id)) set temp_2 = zMap_3157[this_1] set tuple_temp_3 = tile(x + 1, y) set temp_tuple_id_1 = tuple_temp_3 set temp_9 = realFromIndex(dispatch_HashMap_HashMap_HashMap_get(temp_2, temp_tuple_id_1)) set temp_3 = zMap_3157[this_1] set tuple_temp_4 = tile(x, y + 1) set temp_tuple_id_2 = tuple_temp_4 set temp_10 = realFromIndex(dispatch_HashMap_HashMap_HashMap_get(temp_3, temp_tuple_id_2)) set temp_4 = zMap_3157[this_1] set tuple_temp_5 = tile(x + 1, y + 1) set temp_tuple_id_3 = tuple_temp_5 set tuple_temp_6 = temp_5 set tuple_temp_7 = temp_6 set tuple_temp_8 = temp_7 set tuple_temp_9 = temp_1_1 set tuple_temp_10 = temp_2_1 set tuple_temp_11 = temp_8 set tuple_temp_12 = temp_9 set tuple_temp_13 = temp_10 set tuple_temp_14 = realFromIndex(dispatch_HashMap_HashMap_HashMap_get(temp_4, temp_tuple_id_3)) set Heightmap_quads_id[x + TerrainUtils_TILES_X * y] = tuple_temp_6 set Heightmap_quads_x[x + TerrainUtils_TILES_X * y] = tuple_temp_7 set Heightmap_quads_y[x + TerrainUtils_TILES_X * y] = tuple_temp_8 set Heightmap_quads_botLeft_x[x + TerrainUtils_TILES_X * y] = tuple_temp_9 set Heightmap_quads_botLeft_y[x + TerrainUtils_TILES_X * y] = tuple_temp_10 set Heightmap_quads_z1[x + TerrainUtils_TILES_X * y] = tuple_temp_11 set Heightmap_quads_z2[x + TerrainUtils_TILES_X * y] = tuple_temp_12 set Heightmap_quads_z3[x + TerrainUtils_TILES_X * y] = tuple_temp_13 set Heightmap_quads_z4[x + TerrainUtils_TILES_X * y] = tuple_temp_14 set y = y + 1 endloop endfunction function run_execute_MGSpacey_MGSpacey takes integer this_1 returns nothing local integer iterator = LinkedList_iterator(MGSpacey_rocks) local integer rock loop exitwhen not LLIterator_hasNext(iterator) set rock = LLIterator_next(iterator) if rock != 0 then call cyc_RevivePoint_terminate(18, rock) endif endloop call LLIterator_close(iterator) call dispatch_LinkedList_LinkedList_LinkedList_clear(MGSpacey_rocks) endfunction function run_execute_MGSpacey_MGSpacey_4003 takes integer this_1 returns nothing local integer iterator = LinkedList_iterator(MGSpacey_ships) local integer ship loop exitwhen not LLIterator_hasNext(iterator) set ship = LLIterator_next(iterator) if ship != 0 and ( not Entity_done[ship]) then call cyc_RevivePoint_terminate(18, ship) endif endloop call LLIterator_close(iterator) call dispatch_LinkedList_LinkedList_LinkedList_clear(MGSpacey_ships) endfunction function run_execute_MGWarlock_MGWarlock takes integer this_1 returns nothing local integer iterator = LinkedList_iterator(MGWarlock_warlocks) local integer warlock loop exitwhen not LLIterator_hasNext(iterator) set warlock = LLIterator_next(iterator) if warlock != 0 and ( not Entity_done[warlock]) then call cyc_RevivePoint_terminate(18, warlock) endif endloop call LLIterator_close(iterator) call dispatch_LinkedList_LinkedList_LinkedList_clear(MGWarlock_warlocks) endfunction function run_execute_RegionData takes integer this_1 returns nothing loop exitwhen not (RegionData_x <= xmax[this_1]) call ebrtile_setType(vec2_getEBRTile(RegionData_x, RegionData_y), vec2_getEBRTile_return_y, vec2_getEBRTile_return_key, vec2_getEBRTile_return_currentType, vec2_getEBRTile_return_lastType, vec2_getEBRTile_return_modifiers_val, ttype[this_1]) set RegionData_x = RegionData_x + 128. endloop set RegionData_x = xmin[this_1] set RegionData_y = RegionData_y + 128. endfunction function alloc_BallItem takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1153 else call error("Out of memory: Could not create BallItem.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1153 endif return this_1 endfunction function BallItem_init takes integer this_1 returns nothing endfunction function construct_BallItem takes integer this_1, real pos_x_1, real pos_y_1, player owner returns nothing call construct_ItemObject(this_1, pos_x_1, pos_y_1, CreateItem(BasicSpells_BALL_ITEM_ID, pos_x_1, pos_y_1), CreateUnit(owner, Key_KEY_DUMMY_ID, pos_x_1, pos_y_1, 0.)) call BallItem_init(this_1) endfunction function new_BallItem takes real pos_x_1, real pos_y_1, player owner returns integer local integer this_1 = alloc_BallItem() call construct_BallItem(this_1, pos_x_1, pos_y_1, owner) return this_1 endfunction function alloc_FirstSnowMaze takes nothing returns integer local integer this_1 if Startmaze_firstFree == 0 then if Startmaze_maxIndex < JASS_MAX_ARRAY_SIZE then set Startmaze_maxIndex = Startmaze_maxIndex + 1 set this_1 = Startmaze_maxIndex set Startmaze_typeId[this_1] = 1239 else call error("Out of memory: Could not create FirstSnowMaze.") set this_1 = 0 endif else set Startmaze_firstFree = Startmaze_firstFree - 1 set this_1 = Startmaze_nextFree[Startmaze_firstFree] set Startmaze_typeId[this_1] = 1239 endif return this_1 endfunction function FirstSnowMaze_init takes integer this_1 returns nothing endfunction function Startmaze_init takes integer this_1 returns nothing set Startmaze_inited[this_1] = false set Startmaze_rdata[this_1] = RegionData_EMPTY_REGION endfunction function construct_Startmaze takes integer this_1 returns nothing call Startmaze_init(this_1) endfunction function construct_FirstSnowMaze takes integer this_1, integer rd returns nothing call construct_Startmaze(this_1) call FirstSnowMaze_init(this_1) set Startmaze_rdata[this_1] = rd call dispatch_RegionData_RegionData_RegionData_setType(Startmaze_rdata[this_1], 4, false) endfunction function new_FirstSnowMaze takes integer rd returns integer local integer this_1 = alloc_FirstSnowMaze() call construct_FirstSnowMaze(this_1, rd) return this_1 endfunction function alloc_FourthCitadelleMaze takes nothing returns integer local integer this_1 if Startmaze_firstFree == 0 then if Startmaze_maxIndex < JASS_MAX_ARRAY_SIZE then set Startmaze_maxIndex = Startmaze_maxIndex + 1 set this_1 = Startmaze_maxIndex set Startmaze_typeId[this_1] = 1240 else call error("Out of memory: Could not create FourthCitadelleMaze.") set this_1 = 0 endif else set Startmaze_firstFree = Startmaze_firstFree - 1 set this_1 = Startmaze_nextFree[Startmaze_firstFree] set Startmaze_typeId[this_1] = 1240 endif return this_1 endfunction function FourthCitadelleMaze_init takes integer this_1 returns nothing endfunction function construct_FourthCitadelleMaze takes integer this_1, integer rd returns nothing call construct_Startmaze(this_1) call FourthCitadelleMaze_init(this_1) set Startmaze_rdata[this_1] = rd call dispatch_RegionData_RegionData_RegionData_setType(Startmaze_rdata[this_1], 1, false) endfunction function new_FourthCitadelleMaze takes integer rd returns integer local integer this_1 = alloc_FourthCitadelleMaze() call construct_FourthCitadelleMaze(this_1, rd) return this_1 endfunction function alloc_MinigameTeleporter takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1202 else call error("Out of memory: Could not create MinigameTeleporter.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1202 endif return this_1 endfunction function MinigameTeleporter_init takes integer this_1 returns nothing set MinigameTeleporter_inprogress[this_1] = false endfunction function construct_MinigameTeleporter takes integer this_1, unit existing returns nothing local unit receiver local unit receiver_1 local unit receiver_2 call construct_StaticBaseObject(this_1, unit_getPos(existing), unit_getPos_return_y, existing, MinigameTeleporter_EVENT_RADIUS, ref_function_MinigameTeleporter_checkVote, null) call MinigameTeleporter_init(this_1) set receiver = UnitEntity_actor[this_1] call unit_removeAbility(receiver, BuilderConstants_REMOVE_OBJECT_ID) set receiver_1 = receiver call unit_removeAbility(receiver_1, BuilderConstants_MAKE_UNIT_INVISIBLE_ID) set receiver_2 = receiver_1 call unit_removeAbility(receiver_2, MinigameTeleporter_ESC_ID) call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_clearQuestionmark(this_1) set MinigameTeleporter_text[this_1] = createCenterFText(vec2_toVec3(unit_getPos(existing), unit_getPos_return_y), vec2_toVec3_return_y, vec2_toVec3_return_z, "|cffffcc00Vote for minigame", 10.) endfunction function new_MinigameTeleporter takes unit existing returns integer local integer this_1 = alloc_MinigameTeleporter() call construct_MinigameTeleporter(this_1, existing) return this_1 endfunction function alloc_SecondDesertMaze takes nothing returns integer local integer this_1 if Startmaze_firstFree == 0 then if Startmaze_maxIndex < JASS_MAX_ARRAY_SIZE then set Startmaze_maxIndex = Startmaze_maxIndex + 1 set this_1 = Startmaze_maxIndex set Startmaze_typeId[this_1] = 1241 else call error("Out of memory: Could not create SecondDesertMaze.") set this_1 = 0 endif else set Startmaze_firstFree = Startmaze_firstFree - 1 set this_1 = Startmaze_nextFree[Startmaze_firstFree] set Startmaze_typeId[this_1] = 1241 endif return this_1 endfunction function SecondDesertMaze_init takes integer this_1 returns nothing endfunction function construct_SecondDesertMaze takes integer this_1, integer rd returns nothing call construct_Startmaze(this_1) call SecondDesertMaze_init(this_1) set Startmaze_rdata[this_1] = rd call dispatch_RegionData_RegionData_RegionData_setType(Startmaze_rdata[this_1], 2, false) endfunction function new_SecondDesertMaze takes integer rd returns integer local integer this_1 = alloc_SecondDesertMaze() call construct_SecondDesertMaze(this_1, rd) return this_1 endfunction function alloc_ThirdForestMaze takes nothing returns integer local integer this_1 if Startmaze_firstFree == 0 then if Startmaze_maxIndex < JASS_MAX_ARRAY_SIZE then set Startmaze_maxIndex = Startmaze_maxIndex + 1 set this_1 = Startmaze_maxIndex set Startmaze_typeId[this_1] = 1242 else call error("Out of memory: Could not create ThirdForestMaze.") set this_1 = 0 endif else set Startmaze_firstFree = Startmaze_firstFree - 1 set this_1 = Startmaze_nextFree[Startmaze_firstFree] set Startmaze_typeId[this_1] = 1242 endif return this_1 endfunction function ThirdForestMaze_init takes integer this_1 returns nothing endfunction function construct_ThirdForestMaze takes integer this_1, integer rd returns nothing call construct_Startmaze(this_1) call ThirdForestMaze_init(this_1) set Startmaze_rdata[this_1] = rd call dispatch_RegionData_RegionData_RegionData_setType(Startmaze_rdata[this_1], 3, false) set RegionData_specialAbil[Startmaze_rdata[this_1]] = SetupBox_JUMP_SPELL_ID set RegionData_allowCut[Startmaze_rdata[this_1]] = true endfunction function new_ThirdForestMaze takes integer rd returns integer local integer this_1 = alloc_ThirdForestMaze() call construct_ThirdForestMaze(this_1, rd) return this_1 endfunction function run_execute_Startmazes takes integer this_1 returns nothing set Startmazes_startmazes[0] = new_FirstSnowMaze(RegionData_regions[0]) set Startmazes_startmazes[1] = new_SecondDesertMaze(RegionData_regions[1]) set Startmazes_startmazes[2] = new_ThirdForestMaze(RegionData_regions[2]) set Startmazes_startmazes[3] = new_FourthCitadelleMaze(RegionData_regions[3]) set MinigameTeleporter_MINI_TP = new_MinigameTeleporter(gg_unit_tele_0150) call createCenterFText(vec2_toVec3(unit_getPos(gg_unit_revp_0322), unit_getPos_return_y), vec2_toVec3_return_y, vec2_toVec3_return_z, "|cff0884D6Lounge", 13.5) call new_BallItem(-5780., -6287., Basics_DUMMY_PLAYER) call EnumItemsInRect(MapBounds_playableMapRect, null, ref_function_correctKeys) endfunction function alloc_ForForceCallback_execute_execute_TerrainData takes nothing returns integer local integer this_1 if ForForceCallback_firstFree == 0 then if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1 set this_1 = ForForceCallback_maxIndex set ForForceCallback_typeId[this_1] = 850 else call error("Out of memory: Could not create ForForceCallback_execute_execute_TerrainData.") set this_1 = 0 endif else set ForForceCallback_firstFree = ForForceCallback_firstFree - 1 set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree] set ForForceCallback_typeId[this_1] = 850 endif return this_1 endfunction function run_execute_TerrainData takes integer this_1 returns nothing local integer clVar local real tuple_temp local real tuple_temp_1 loop exitwhen not (realPos_y[this_1] < MapBounds_playableMax_y) set clVar = alloc_ForForceCallback_execute_execute_TerrainData() set tuple_temp = realPos_x[this_1] set tuple_temp_1 = realPos_y[this_1] set realPos_x_2593[clVar] = tuple_temp set realPos_y_2595[clVar] = tuple_temp_1 call execute(clVar) set realPos_y[this_1] = realPos_y[this_1] + 128. endloop endfunction function hashtable_saveTile takes hashtable this_1, integer tile_x, integer tile_y, integer tile_key, integer tile_currentType, integer tile_lastType, integer tile_modifiers_val returns nothing call hashtable_saveInt(this_1, tile_key, 0, tile_key) call hashtable_saveInt(this_1, tile_key, 1, tile_currentType) call hashtable_saveInt(this_1, tile_key, 2, tile_lastType) call hashtable_saveInt(this_1, tile_key, 3, tile_modifiers_val) endfunction function run_execute_execute_TerrainData takes integer this_1 returns nothing local integer x = real_round(realPos_x_2593[this_1] / 128.) local integer y = real_round(realPos_y_2595[this_1] / 128.) call hashtable_saveTile(TerrainData_tileMap, x, y, x * TerrainData_xCells + y, GetTerrainType(realPos_x_2593[this_1], realPos_y_2595[this_1]), GetTerrainType(realPos_x_2593[this_1], realPos_y_2595[this_1]), 0) endfunction function run_execute_fromString_Encoder_Encoder takes integer this_1 returns nothing set Encoder_inputhash[this_2898[this_1]] = dispatch_Encoder_Encoder_Encoder_decode(this_2898[this_1], Encoder_maxHash) endfunction function run_execute_fromString_Encoder_Encoder_4010 takes integer this_1 returns nothing call dispatch_Encoder_Encoder_Encoder_clean(this_2899[this_1]) endfunction function run_execute_fromString_Encoder_Encoder_4011 takes integer this_1 returns nothing set Encoder_comparehash[this_2900[this_1]] = dispatch_Encoder_Encoder_Encoder_hash(this_2900[this_1]) endfunction function run_execute_nullTimer_Encoder_Encoder takes integer this_1 returns nothing call dispatch_Encoder_Encoder_Encoder_encode(this_2893[this_1], Encoder_hash[this_2893[this_1]], Encoder_maxHash) endfunction function run_execute_nullTimer_Encoder_Encoder_4013 takes integer this_1 returns nothing call dispatch_Encoder_Encoder_Encoder_clean(this_2894[this_1]) endfunction function Encoder_length takes integer this_1 returns real return Encoder_digits[this_1] endfunction function dispatch_Encoder_Encoder_Encoder_length takes integer this_1 returns real local real Encoder_Encoder_length_result if Encoder_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Encoder.length") else call error("Called Encoder.length on invalid object.") endif endif set Encoder_Encoder_length_result = Encoder_length(this_1) return Encoder_Encoder_length_result endfunction function Encoder_pad takes integer this_1 returns nothing local integer cur = BigNum_list[Encoder_bignum[this_1]] local integer prev = 0 local integer maxlen = R2I(1.0 + dispatch_Encoder_Encoder_Encoder_length(this_1)) loop exitwhen not (cur != 0) set prev = cur set cur = BigNum_l_next[cur] set maxlen = maxlen - 1 endloop loop exitwhen not (maxlen > 0) set BigNum_l_next[prev] = new_BigNum_l() set prev = BigNum_l_next[prev] set maxlen = maxlen - 1 endloop endfunction function dispatch_Encoder_Encoder_Encoder_pad takes integer this_1 returns nothing if Encoder_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Encoder.pad") else call error("Called Encoder.pad on invalid object.") endif endif call Encoder_pad(this_1) endfunction function run_execute_nullTimer_Encoder_Encoder_4014 takes integer this_1 returns nothing call dispatch_Encoder_Encoder_Encoder_pad(this_2895[this_1]) endfunction function alloc_SeqCallback_doSeq_Encoder_Encoder takes nothing returns integer local integer this_1 if SeqCallback_firstFree == 0 then if SeqCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set SeqCallback_maxIndex = SeqCallback_maxIndex + 1 set this_1 = SeqCallback_maxIndex set SeqCallback_typeId[this_1] = 1125 else call error("Out of memory: Could not create SeqCallback_doSeq_Encoder_Encoder.") set this_1 = 0 endif else set SeqCallback_firstFree = SeqCallback_firstFree - 1 set this_1 = SeqCallback_nextFree[SeqCallback_firstFree] set SeqCallback_typeId[this_1] = 1125 endif return this_1 endfunction function Encoder_toString takes integer this_1, integer big_1, integer onFinish_1 returns nothing local integer w_cur_1 local integer clVar call Log_debug("toString digits: " + real_toString(Encoder_digits[this_1])) set w_cur_1 = BigNum_list[Encoder_bignum[this_1]] set clVar = alloc_SeqCallback_doSeq_Encoder_Encoder() call construct_SeqCallback(clVar) set w_cur[clVar] = w_cur_1 set big[clVar] = big_1 set this_2888[clVar] = this_1 set onFinish[clVar] = onFinish_1 call doSeq(clVar) endfunction function dispatch_Encoder_Encoder_Encoder_toString takes integer this_1, integer big_1, integer onFinish_1 returns nothing if Encoder_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Encoder.toString") else call error("Called Encoder.toString on invalid object.") endif endif call Encoder_toString(this_1, big_1, onFinish_1) endfunction function run_execute_nullTimer_Encoder_Encoder_4015 takes integer this_1 returns nothing call dispatch_Encoder_Encoder_Encoder_toString(this_2896[this_1], bs_2276[this_1], onFinish_2551[this_1]) endfunction function alloc_LobbyTeleporter takes nothing returns integer local integer this_1 if Serializable_firstFree == 0 then if Serializable_maxIndex < JASS_MAX_ARRAY_SIZE then set Serializable_maxIndex = Serializable_maxIndex + 1 set this_1 = Serializable_maxIndex set Serializable_typeId[this_1] = 1200 else call error("Out of memory: Could not create LobbyTeleporter.") set this_1 = 0 endif else set Serializable_firstFree = Serializable_firstFree - 1 set this_1 = Serializable_nextFree[Serializable_firstFree] set Serializable_typeId[this_1] = 1200 endif return this_1 endfunction function LobbyTeleporter_init takes integer this_1 returns nothing set LobbyTeleporter_ftext[this_1] = 0 set LobbyTeleporter_currentPlus[this_1] = 0 set LobbyTeleporter_ready[this_1] = false set LobbyTeleporter_startmaze[this_1] = false endfunction function construct_LobbyTeleporter takes integer this_1, unit existing, boolean builder returns nothing local unit receiver local unit receiver_1 local unit receiver_2 call construct_StaticBaseObject(this_1, unit_getPos(existing), unit_getPos_return_y, existing, LobbyTeleporter_EVENT_RADIUS, ref_function_LobbyTeleporter_checkVote, null) call LobbyTeleporter_init(this_1) set receiver = UnitEntity_actor[this_1] call unit_removeAbility(receiver, BuilderConstants_REMOVE_OBJECT_ID) set receiver_1 = receiver call unit_removeAbility(receiver_1, BuilderConstants_MAKE_UNIT_INVISIBLE_ID) set receiver_2 = receiver_1 call unit_removeAbility(receiver_2, LobbyTeleporter_ESC_ID) if builder then set LobbyTeleporter_ftext[this_1] = createCenterFText(vec2_toVec3(unit_getPos(existing), unit_getPos_return_y), vec2_toVec3_return_y, vec2_toVec3_return_z, player_getNameColored_3916(unit_getOwner(existing)) + " |cffffcc00building", 6.) else set LobbyTeleporter_startmaze[this_1] = true set LobbyTeleporter_ftext[this_1] = createFText(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], "", 10.) endif endfunction function new_LobbyTeleporter takes unit existing, boolean builder returns integer local integer this_1 = alloc_LobbyTeleporter() call construct_LobbyTeleporter(this_1, existing, builder) return this_1 endfunction function setBuilderTeleporter takes nothing returns nothing if PlayerData_pData[8] != 0 then call new_LobbyTeleporter(gg_unit_tele_0058, true) else call unit_remove(gg_unit_tele_0058) endif if PlayerData_pData[9] != 0 then call new_LobbyTeleporter(gg_unit_tele_0063, true) else call unit_remove(gg_unit_tele_0063) endif if PlayerData_pData[10] != 0 then call new_LobbyTeleporter(gg_unit_tele_0115, true) else call unit_remove(gg_unit_tele_0115) endif if PlayerData_pData[11] != 0 then call new_LobbyTeleporter(gg_unit_tele_0143, true) else call unit_remove(gg_unit_tele_0143) endif endfunction function setStartTeleport takes integer tpid, integer locid returns nothing local integer t = 0 local integer temp = tpid local integer temp_1 if temp == 0 then set t = new_LobbyTeleporter(gg_unit_tele_0061, false) elseif temp == 1 then set t = new_LobbyTeleporter(gg_unit_tele_0324, false) elseif temp == 2 then set t = new_LobbyTeleporter(gg_unit_tele_0323, false) endif call unit_removeAbility(UnitEntity_actor[t], BuilderConstants_REMOVE_OBJECT_ID) set temp_1 = locid if temp_1 == 1 then call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(t, 3456., -4160.) call texttag_center(FText_tt[LobbyTeleporter_ftext[t]], dispatch_UnitEntity_Entity_UnitEntity_getPos(t), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, "|cffE68C19Desert Startmaze", 12.5) elseif temp_1 == 2 then call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(t, 500., -6900.) call texttag_center(FText_tt[LobbyTeleporter_ftext[t]], dispatch_UnitEntity_Entity_UnitEntity_getPos(t), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, "|cff3A9C3AForest Startmaze", 12.5) elseif temp_1 == 3 then call dispatch_StaticBaseObject_BaseObject_StaticBaseObject_setRallyPoint(t, -2433., -6148.) call texttag_center(FText_tt[LobbyTeleporter_ftext[t]], dispatch_UnitEntity_Entity_UnitEntity_getPos(t), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, "|cffA5084ACitadel Startmaze", 12.5) endif set LobbyTeleporter_currentPlus[t] = 999 set LobbyTeleporter_ready[t] = true endfunction function run_try_Startmazes takes integer this_1 returns nothing local integer rand call setBuilderTeleporter() set rand = GetRandomInt(0, 7) if rand < 2 then call setStartTeleport(0, 3) call setStartTeleport(1, 2) call setStartTeleport(2, 1) elseif rand < 5 then call setStartTeleport(0, 1) call setStartTeleport(1, 3) call setStartTeleport(2, 2) elseif rand <= 7 then call setStartTeleport(0, 2) call setStartTeleport(1, 3) call setStartTeleport(2, 1) endif endfunction function dispatch_ForForceCallback_Execute_ForForceCallback_run takes integer this_1 returns nothing if ForForceCallback_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling ForForceCallback.run") else call error("Called ForForceCallback.run on invalid object.") endif endif if ForForceCallback_typeId[this_1] <= 848 then if ForForceCallback_typeId[this_1] <= 843 then if ForForceCallback_typeId[this_1] <= 840 then if ForForceCallback_typeId[this_1] <= 839 then if ForForceCallback_typeId[this_1] <= 838 then call run_execute_Encoder_Encoder(this_1) else call run_execute_Encoder_Encoder_3997(this_1) endif else call run_execute_Execute(this_1) endif elseif ForForceCallback_typeId[this_1] <= 842 then if ForForceCallback_typeId[this_1] <= 841 then call run_execute_GroupUtils(this_1) else call run_execute_Heightmap(this_1) endif else call run_execute_Heightmap_4001(this_1) endif elseif ForForceCallback_typeId[this_1] <= 846 then if ForForceCallback_typeId[this_1] <= 845 then if ForForceCallback_typeId[this_1] <= 844 then call run_execute_MGSpacey_MGSpacey(this_1) else call run_execute_MGSpacey_MGSpacey_4003(this_1) endif else call run_execute_MGWarlock_MGWarlock(this_1) endif elseif ForForceCallback_typeId[this_1] <= 847 then call run_execute_RegionData(this_1) else call run_execute_Startmazes(this_1) endif elseif ForForceCallback_typeId[this_1] <= 853 then if ForForceCallback_typeId[this_1] <= 851 then if ForForceCallback_typeId[this_1] <= 850 then if ForForceCallback_typeId[this_1] <= 849 then call run_execute_TerrainData(this_1) else call run_execute_execute_TerrainData(this_1) endif else call run_execute_fromString_Encoder_Encoder(this_1) endif elseif ForForceCallback_typeId[this_1] <= 852 then call run_execute_fromString_Encoder_Encoder_4010(this_1) else call run_execute_fromString_Encoder_Encoder_4011(this_1) endif elseif ForForceCallback_typeId[this_1] <= 856 then if ForForceCallback_typeId[this_1] <= 855 then if ForForceCallback_typeId[this_1] <= 854 then call run_execute_nullTimer_Encoder_Encoder(this_1) else call run_execute_nullTimer_Encoder_Encoder_4013(this_1) endif else call run_execute_nullTimer_Encoder_Encoder_4014(this_1) endif elseif ForForceCallback_typeId[this_1] <= 857 then call run_execute_nullTimer_Encoder_Encoder_4015(this_1) else call run_try_Startmazes(this_1) endif endfunction function getCurrentCallback takes nothing returns integer return Execute_tempCallbacks[Execute_tempCallbacksCount - 1] endfunction function setCurrentCallbackSuccess takes boolean value returns nothing set Execute_tempCallbacksSuccess[Execute_tempCallbacksCount - 1] = value endfunction function executeCurrentCallback takes nothing returns nothing set ErrorHandling_lastError = "" call dispatch_ForForceCallback_Execute_ForForceCallback_run(getCurrentCallback()) call setCurrentCallbackSuccess(true) endfunction function init_Abilities takes nothing returns boolean set Abilities_aIamTarget = "Abilities\\Spells\\Items\\AIam\\AIamTarget.mdx" set Abilities_ancestralSpiritCaster = "Abilities\\Spells\\Orc\\AncestralSpirit\\AncestralSpiritCaster.mdx" set Abilities_ancientProtectorMissile = "Abilities\\Weapons\\AncientProtectorMissile\\AncientProtectorMissile.mdx" set Abilities_aneuCaster = "Abilities\\Spells\\Other\\Aneu\\AneuCaster.mdx" set Abilities_blinkCaster = "Abilities\\Spells\\NightElf\\Blink\\BlinkCaster.mdx" set Abilities_blinkTarget = "Abilities\\Spells\\NightElf\\Blink\\BlinkTarget.mdx" set Abilities_boltImpact = "Abilities\\Weapons\\Bolt\\BoltImpact.mdx" set Abilities_charmTarget = "Abilities\\Spells\\Other\\Charm\\CharmTarget.mdx" set Abilities_creepSleepTarget = "Abilities\\Spells\\Other\\CreepSleep\\CreepSleepTarget.mdx" set Abilities_demolisherMissile = "Abilities\\Weapons\\DemolisherMissile\\DemolisherMissile.mdx" set Abilities_dispelMagicTarget = "Abilities\\Spells\\Human\\DispelMagic\\DispelMagicTarget.mdx" set Abilities_faerieDragonMissile = "Abilities\\Weapons\\FaerieDragonMissile\\FaerieDragonMissile.mdx" set Abilities_fireBallMissile = "Abilities\\Weapons\\FireBallMissile\\FireBallMissile.mdx" set Abilities_flameStrikeEmbers = "Abilities\\Spells\\Human\\FlameStrike\\FlameStrikeEmbers.mdx" set Abilities_frostNovaTarget = "Abilities\\Spells\\Undead\\FrostNova\\FrostNovaTarget.mdx" set Abilities_generalAuraTarget = "Abilities\\Spells\\Other\\GeneralAuraTarget\\GeneralAuraTarget.mdx" set Abilities_greenDragonMissile = "Abilities\\Weapons\\GreenDragonMissile\\GreenDragonMissile.mdx" set Abilities_healTarget = "Abilities\\Spells\\Human\\Heal\\HealTarget.mdx" set Abilities_innerFireTarget = "Abilities\\Spells\\Human\\InnerFire\\InnerFireTarget.mdx" set Abilities_makuraMissile = "Abilities\\Weapons\\MakuraMissile\\MakuraMissile.mdx" set Abilities_manaBurnTarget = "Abilities\\Spells\\NightElf\\ManaBurn\\ManaBurnTarget.mdx" set Abilities_manaFlareBoltImpact = "Abilities\\Spells\\Human\\ManaFlare\\ManaFlareBoltImpact.mdx" set Abilities_poisonStingTarget = "Abilities\\Weapons\\PoisonSting\\PoisonStingTarget.mdx" set Abilities_polyMorphTarget = "Abilities\\Spells\\Human\\Polymorph\\PolyMorphTarget.mdx" set Abilities_rockBoltMissile = "Abilities\\Weapons\\RockBoltMissile\\RockBoltMissile.mdx" set Abilities_silenceTarget = "Abilities\\Spells\\Other\\Silence\\SilenceTarget.mdx" set Abilities_sleepTarget = "Abilities\\Spells\\Undead\\Sleep\\SleepTarget.mdx" set Abilities_spellBreakerAttack = "Abilities\\Spells\\Human\\Feedback\\SpellBreakerAttack.mdx" set Abilities_spellShieldCaster = "Abilities\\Spells\\Items\\SpellShieldAmulet\\SpellShieldCaster.mdx" set Abilities_vengeanceMissile = "Abilities\\Weapons\\VengeanceMissile\\VengeanceMissile.mdx" set Abilities_warStompCaster = "Abilities\\Spells\\Orc\\WarStomp\\WarStompCaster.mdx" return true endfunction function init_AbilityIds takes nothing returns boolean set AbilityIds_wander = 1098342766 return true endfunction function init_AbilityObjEditing takes nothing returns boolean return true endfunction function init_AirPhysicsModule takes nothing returns boolean set AirPhysicsModule_MAX_MASS = 250 return true endfunction function init_Angle takes nothing returns boolean set Angle_DEGTORAD = 0.017453293 set Angle_RADTODEG = 57.295779513 return true endfunction function init_Arcanery takes nothing returns boolean local integer tuple_temp local integer tuple_temp_1 set Arcanery_SILENCE_ID = 1095577978 set tuple_temp = 1095577979 set tuple_temp_1 = 1112354865 set Arcanery_SILENCE_BUFF_abilId = tuple_temp set Arcanery_SILENCE_BUFF_buffId = tuple_temp_1 set Arcanery_SILENCE_MODE_ID = 1095577980 set Arcanery_JUMP_MODE_ID = 1095577981 set Arcanery_ORB_MODE_ID = 1095577982 return true endfunction function init_AttachmentPoints takes nothing returns boolean return true endfunction function preloadAbility_1 takes integer abilIds_0 returns boolean local boolean result_1 = true call unit_addAbility(Preloader_dum, abilIds_0) if Preloader_dum == null then call error("Do not load abilities after map init when autoFinish = true") elseif not unit_hasAbility(Preloader_dum, abilIds_0) then call Log_trace("PreloadAbility: Ability " + int_toRawCode(abilIds_0) + " does not exist.") set result_1 = false endif return result_1 endfunction function init_Attackspeed takes nothing returns boolean set Attackspeed_ATTACK_SPEED_RATE_POSITIVE_ID = 1093677655 set Attackspeed_ATTACK_SPEED_RATE_NEGATIVE_ID = 1093677654 set Attackspeed_ATTACK_SPEED_DUMMY_ID = 1093677620 set Attackspeed_ATTACK_SPEED_INCREASE = 1095578479 set Attackspeed_ATTACK_SPEED_DECREASE = 1095578478 call preloadAbility_1(Attackspeed_ATTACK_SPEED_RATE_POSITIVE_ID) call preloadAbility_1(Attackspeed_ATTACK_SPEED_RATE_NEGATIVE_ID) call preloadAbility_1(Attackspeed_ATTACK_SPEED_DUMMY_ID) call preloadAbility_1(Attackspeed_ATTACK_SPEED_INCREASE) call preloadAbility_1(Attackspeed_ATTACK_SPEED_DECREASE) return true endfunction function init_AudioTaunts takes nothing returns boolean return true endfunction function init_BaseObject takes nothing returns boolean set BaseObject_KEY_RALLY_X = "r" set BaseObject_KEY_RALLY_Y = "s" return true endfunction function alloc_EventListener_add_BasicSpells takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 755 else call error("Out of memory: Could not create EventListener_add_BasicSpells.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 755 endif return this_1 endfunction function init_BasicSpells takes nothing returns boolean local integer clVar local playerunitevent temp set BasicSpells_BALL_SPELL_ID = 1095577698 set BasicSpells_BALL_ITEM_ID = 1095577699 set temp = EVENT_PLAYER_UNIT_SPELL_CAST set clVar = alloc_EventListener_add_BasicSpells() call construct_EventListener(clVar) call EventListener_add(temp, clVar) return true endfunction function init_Basics takes nothing returns boolean set Basics_ANIMATION_PERIOD = 0.030 set Basics_MAX_COLLISION_SIZE = 197.0 set Basics_HEIGHT_ENABLER = 1097691750 set Basics_LOCUST_ID = 1097625443 set Basics_GHOST_INVIS_ID = 1097295983 set Basics_GHOST_VIS_ID = 1097167976 set Basics_DUMMY_PLAYER = Player_players[PLAYER_NEUTRAL_PASSIVE] return true endfunction function init_BigNum takes nothing returns boolean set BigNum_l_count = 0 return true endfunction function init_BigString takes nothing returns boolean set BigString_BIG_SUBSTRING_LEN = 450 set BigString_MAX_SUBSTRINGS = 25 return true endfunction function int_bitXor takes integer this_1, integer other returns integer return BlzBitXor(this_1, other) endfunction function initPows takes nothing returns nothing local integer allPows local integer i local integer temp local integer i_1 local integer temp_1 set BitSet_pows[0] = 1 set allPows = 1 set i = 1 set temp = BitSet_BITSET_SIZE - 1 loop exitwhen i > temp set BitSet_pows[i] = BitSet_pows[i - 1] * 2 set allPows = int_bitOr(allPows, BitSet_pows[i]) set i = i + 1 endloop set i_1 = 0 set temp_1 = BitSet_BITSET_SIZE - 1 loop exitwhen i_1 > temp_1 set BitSet_reversePows[i_1] = int_bitXor(allPows, BitSet_pows[i_1]) set i_1 = i_1 + 1 endloop endfunction function init_BitSet takes nothing returns boolean set BitSet_BITSET_SIZE = 32 call initPows() return true endfunction function init_Bomber takes nothing returns boolean set Bomber_BOMBER_ID = 1651335794 set Bomber_AUTOATTACK_ID = 1093677890 set Bomber_ATTACK_ORDER = 851983 set Bomber_ATTACK_GROUND_ORDER = 851984 set Bomber_STOP_ORDER = 851972 set Bomber_MOVE_ORDER = 851971 return true endfunction function init_Bombertower takes nothing returns boolean set Bombertower_ATTACK_ORDER = 851983 set Bombertower_ATTACK_GROUND_ORDER = 851984 set Bombertower_STOP_ORDER = 851972 return true endfunction function init_Booster takes nothing returns boolean set Booster_SPEED_UP_ID = 1095578476 set Booster_SPEED_DOWN_ID = 1095578477 set Booster_EVENT_RADIUS = 32. set Booster_BOOST_SPEED_KEY = "b" return true endfunction function init_Boots takes nothing returns boolean set Boots_BOOTS_DUMMY_ID = 2016424042 return true endfunction function alloc_SoundDefinition takes nothing returns integer local integer this_1 if SoundDefinition_firstFree == 0 then if SoundDefinition_maxIndex < JASS_MAX_ARRAY_SIZE then set SoundDefinition_maxIndex = SoundDefinition_maxIndex + 1 set this_1 = SoundDefinition_maxIndex set SoundDefinition_typeId[this_1] = 1229 else call error("Out of memory: Could not create SoundDefinition.") set this_1 = 0 endif else set SoundDefinition_firstFree = SoundDefinition_firstFree - 1 set this_1 = SoundDefinition_nextFree[SoundDefinition_firstFree] set SoundDefinition_typeId[this_1] = 1229 endif return this_1 endfunction function SoundDefinition_init takes integer this_1 returns nothing set SoundDefinition_soundStack[this_1] = new_LinkedList() set SoundDefinition_duration[this_1] = 10000 set SoundDefinition_looping[this_1] = false set SoundDefinition_is3D[this_1] = false set SoundDefinition_stopOnLeaveRange[this_1] = SoundUtils_DEFAULT_SOUND_STOPS_ON_LEAVE_RANGE set SoundDefinition_fadeIn[this_1] = SoundUtils_DEFAULT_SOUND_FADE_IN_RATE set SoundDefinition_fadeOut[this_1] = SoundUtils_DEFAULT_SOUND_FADE_OUT_RATE set SoundDefinition_eaxSetting[this_1] = SoundUtils_DEFAULT_SOUND_EAX_SETTINGS endfunction function construct_SoundDefinition2 takes integer this_1, string file, boolean looping returns nothing call SoundDefinition_init(this_1) set SoundDefinition_file[this_1] = file set SoundDefinition_looping[this_1] = looping endfunction function new_SoundDefinition takes string file, boolean looping returns integer local integer this_1 = alloc_SoundDefinition() call construct_SoundDefinition2(this_1, file, looping) return this_1 endfunction function init_Boss takes nothing returns boolean set Boss_HP_UP_ID = 1093678677 set Boss_HP_DOWN_ID = 1093678676 set Boss_REAL_HP_BIG_ID = 1093678680 set Boss_REAL_HP_SMALL_ID = 1093678681 set Boss_AOE_SPELL_ID = 1093678678 set Boss_MISSILE_SPELL_ID = 1093678679 set Boss_REVIVE_ID = 1093678924 set Boss_SUMMON_MINION_ID = 1095577905 call new_SoundDefinition("Units\\Undead\\Varimathras\\VarimathrasReady1.wav", false) set Boss_MINION_SPAWN_SOUND = new_SoundDefinition("Abilities\\Spells\\Human\\FlameStrike\\FlameStrikeTargetWaveNonLoop1.waw", false) set Boss_REVIVE_SOUND = new_SoundDefinition("Units\\Undead\\Varimathras\\VarimathrasReady1.wav", false) return true endfunction function init_BossDamager takes nothing returns boolean set BossDamager_DAMAGER_ID = 1848652111 set BossDamager_DMG_INC_ID = 1093678923 set BossDamager_DMG_DEC_ID = 1093678922 set BossDamager_EVENT_RADIUS = 32. return true endfunction function init_BossSpellTarget takes nothing returns boolean set BossSpellTarget_SPELLTARGET_ID = 1966092358 set BossSpellTarget_AOE_ID = 1093678678 set BossSpellTarget_MISSILE_ID = 1093678679 set BossSpellTarget_targets = new_HashMap() set BossSpellTarget_MISSILE_RADIUS = 64. set BossSpellTarget_MISSILE_SPEED = 12. return true endfunction function DamageEvent_addListener_284 takes integer priority, integer listener_1 returns integer if DamageEvent_firstListeners[priority] != 0 then set DamageListener_next[listener_1] = DamageEvent_firstListeners[priority] endif set DamageEvent_firstListeners[priority] = listener_1 if DamageEvent_maxPriority < priority then set DamageEvent_maxPriority = priority endif return listener_1 endfunction function DamageEvent_addListener takes integer listener_1 returns integer return DamageEvent_addListener_284(DamageEvent_maxPriority, listener_1) endfunction function alloc_DamageListener_addListener_Buff takes nothing returns integer local integer this_1 if DamageListener_firstFree == 0 then if DamageListener_maxIndex < JASS_MAX_ARRAY_SIZE then set DamageListener_maxIndex = DamageListener_maxIndex + 1 set this_1 = DamageListener_maxIndex set DamageListener_typeId[this_1] = 737 else call error("Out of memory: Could not create DamageListener_addListener_Buff.") set this_1 = 0 endif else set DamageListener_firstFree = DamageListener_firstFree - 1 set this_1 = DamageListener_nextFree[DamageListener_firstFree] set DamageListener_typeId[this_1] = 737 endif return this_1 endfunction function alloc_EventListener_add_Buff takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 766 else call error("Out of memory: Could not create EventListener_add_Buff.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 766 endif return this_1 endfunction function alloc_EventListener_add_Buff_1683 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 767 else call error("Out of memory: Could not create EventListener_add_Buff.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 767 endif return this_1 endfunction function DamageListener_init takes integer this_1 returns nothing set DamageListener_next[this_1] = 0 endfunction function construct_DamageListener takes integer this_1 returns nothing call DamageListener_init(this_1) endfunction function alloc_BackIterator takes nothing returns integer local integer this_1 if BackIterator_firstFree == 0 then if BackIterator_maxIndex < JASS_MAX_ARRAY_SIZE then set BackIterator_maxIndex = BackIterator_maxIndex + 1 set this_1 = BackIterator_maxIndex else call error("Out of memory: Could not create BackIterator.") set this_1 = 0 endif else set BackIterator_firstFree = BackIterator_firstFree - 1 set this_1 = BackIterator_nextFree[BackIterator_firstFree] endif return this_1 endfunction function BackIterator_init takes integer this_1 returns nothing endfunction function construct_BackIterator takes integer this_1, boolean destroyOnClose returns nothing call BackIterator_init(this_1) endfunction function new_BackIterator takes boolean destroyOnClose returns integer local integer this_1 = alloc_BackIterator() call construct_BackIterator(this_1, destroyOnClose) return this_1 endfunction function alloc_Iterator_1818 takes nothing returns integer local integer this_1 if Iterator_firstFree_1035 == 0 then if Iterator_maxIndex_1039 < JASS_MAX_ARRAY_SIZE then set Iterator_maxIndex_1039 = Iterator_maxIndex_1039 + 1 set this_1 = Iterator_maxIndex_1039 set Iterator_typeId_1047[this_1] = 979 else call error("Out of memory: Could not create Iterator.") set this_1 = 0 endif else set Iterator_firstFree_1035 = Iterator_firstFree_1035 - 1 set this_1 = Iterator_nextFree_1043[Iterator_firstFree_1035] set Iterator_typeId_1047[this_1] = 979 endif return this_1 endfunction function Iterator_init_801 takes integer this_1 returns nothing set Iterator_current_1031[this_1] = Buff_LinkedListModule_first endfunction function construct_Iterator_2224 takes integer this_1, boolean destroyOnClose returns nothing call Iterator_init_801(this_1) endfunction function new_Iterator_3693 takes boolean destroyOnClose returns integer local integer this_1 = alloc_Iterator_1818() call construct_Iterator_2224(this_1, destroyOnClose) return this_1 endfunction function init_Buff takes nothing returns boolean local integer clVar local integer clVar_1 local integer clVar_2 local playerunitevent temp local playerunitevent temp_1 set Buff_BUFF_ANIM_PERIOD = 0.25 set Buff_LinkedListModule_first = 0 set Buff_LinkedListModule_last = 0 set Buff_LinkedListModule_size = 0 call new_Iterator_3693(false) call new_BackIterator(false) set clVar = alloc_DamageListener_addListener_Buff() call construct_DamageListener(clVar) call DamageEvent_addListener(clVar) set temp = EVENT_PLAYER_UNIT_UPGRADE_FINISH set clVar_1 = alloc_EventListener_add_Buff() call construct_EventListener(clVar_1) call EventListener_add(temp, clVar_1) set temp_1 = EVENT_PLAYER_UNIT_DEATH set clVar_2 = alloc_EventListener_add_Buff_1683() call construct_EventListener(clVar_2) call EventListener_add(temp_1, clVar_2) return true endfunction function init_BuffIds takes nothing returns boolean return true endfunction function init_Builder takes nothing returns boolean set Builder_BUILDER_CIRCLES_ID = 2016424044 set Builder_MENU_CIRCLES_ID = 1095577710 set Builder_MENU_OBJECTS_ID = 1095577711 set Builder_MENU_ENVIROMENTALS_ID = 1095577712 set Builder_MENU_DECORATIONS_ID = 1095577713 set Builder_CHAOS_BUILDER_1 = 1095577714 set Builder_CHAOS_BUILDER_2 = 1095577715 set Builder_CHAOS_BUILDER_3 = 1095577716 set Builder_CHAOS_BUILDER_4 = 1095577717 return true endfunction function init_BuilderConstants takes nothing returns boolean local integer i local real tuple_temp local real tuple_temp_1 set BuilderConstants_TURN_ON_ID = 1095577650 set BuilderConstants_TURN_OFF_ID = 1095577651 set BuilderConstants_MAKE_UNIT_INVISIBLE_ID = 1095577652 set BuilderConstants_MAKE_UNIT_VISIBLE_ID = 1095577653 set BuilderConstants_REMOVE_OBJECT_ID = 1095577654 set BuilderConstants_MODE_ESCAPERS_ID = 1095577655 set BuilderConstants_MODE_KILLERS_ID = 1095577656 set BuilderConstants_MODE_BOTH_ID = 1095577657 set BuilderConstants_TELEPORTER_ID = 1952803941 set BuilderConstants_WAYPOINT_ID = 2002876784 set BuilderConstants_ARCANERY_ID = 1634886497 set BuilderConstants_EXECUTER_ID = 1702389091 set BuilderConstants_TC_BLOCKER_ID = 1952670316 set BuilderConstants_UNIT_CREATOR_ID = 1970168690 set BuilderConstants_UNIT_REMOVER_ID = 1970172517 set BuilderConstants_REVIVE_POINT_ID = 1919252080 set BuilderConstants_JUMPER_ID = 1786080624 set BuilderConstants_TEXTER_ID = 1952807028 set BuilderConstants_BOOSTER_ID = 1651733618 set BuilderConstants_TRAP_ID = 1953653104 set BuilderConstants_BOMB_TOWER_ID = 1651335796 set BuilderConstants_CONGA_LINE_HEAD_ID = 1668048996 set BuilderConstants_DOORDUMMY_ID = 1685025329 set BuilderConstants_DOORORDER_ID = 1685025330 set BuilderConstants_FOUNTAIN_BOTH_ID = 1718514737 set BuilderConstants_FOUNTAIN_HEAL_ID = 1718514738 set BuilderConstants_FOUNTAIN_CURE_ID = 1718514739 set BuilderConstants_POWER_NODE_ID = 1886875236 set BuilderConstants_SPINNER_ID = 1936748146 set BuilderConstants_BUILD_TRACKS_ID = 1953653091 set BuilderConstants_VORTEX_ID = 1987212408 set BuilderConstants_PED_ID = 2016423985 set BuilderConstants_VOLCANO_ID = 1987013731 set BuilderConstants_HOR_WALL_ID = 1752654188 set BuilderConstants_VER_WALL_ID = 1987535212 set BuilderConstants_WALL_ID = 2002873452 set BuilderConstants_TREE_DUMMY_ID = 1953654117 set BuilderConstants_SOBS_DUMMY_ID = 1936679539 set BuilderConstants_BOBS_DUMMY_ID = 1651466867 set BuilderConstants_HOBS_DUMMY_ID = 2003335526 set BuilderConstants_REMAINS_ID = 2016423986 set BuilderConstants_FARM_ID = 2016423987 set BuilderConstants_ICE_CRYSTAL_ID = 2016423988 set BuilderConstants_OBELISK_ID = 2016423989 set BuilderConstants_POISON_EGGS_ID = 2016423990 set BuilderConstants_LANTERN_ID = 2016423991 set BuilderConstants_MUSHROOM_ID = 2016423992 set BuilderConstants_POST_LANTERN_ID = 2016423993 set BuilderConstants_RUNE_ID = 2016424033 set BuilderConstants_TORCH_ID = 2016424034 set BuilderConstants_SUPERLIGHT_ID = 2016424035 set BuilderConstants_SMALL_GRASS_KILLER_ID = 1936159339 set BuilderConstants_SMALL_ICE_KILLER_ID = 1936286571 set BuilderConstants_SMALL_CITADEL_KILLER_ID = 1935894891 set BuilderConstants_SMALL_SAND_KILLER_ID = 1936941419 set BuilderConstants_SMALL_SUNKEN_KILLER_ID = 1936946539 set BuilderConstants_BIG_GRASS_KILLER_ID = 1650946667 set BuilderConstants_BIG_ICE_KILLER_ID = 1651077995 set BuilderConstants_BIG_CITADEL_KILLER_ID = 1650682219 set BuilderConstants_BIG_SAND_KILLER_ID = 1651728747 set BuilderConstants_BIG_SUNKEN_KILLER_ID = 1651733867 set BuilderConstants_ESC_STRONG_ID = 1213018161 set BuilderConstants_ESC_ICE_ID = 1213018163 set BuilderConstants_ESC_FAST_ID = 1213018164 set BuilderConstants_ESC_HOLY_ID = 1213018165 set BuilderConstants_ESC_BLIND_ID = 1213018166 set tuple_temp = -6000. set tuple_temp_1 = 6000. set BuilderConstants_hidden_x = tuple_temp set BuilderConstants_hidden_y = tuple_temp_1 set BuilderConstants_CONTROLLABLEICE = 1315529573 set BuilderConstants_UNCONTROLLABLEICE = 1231317865 set BuilderConstants_REVICE = 1198285174 set BuilderConstants_LAVA = 1198290531 set BuilderConstants_POISON = 1131442035 set BuilderConstants_RUNES = 1232233067 set BuilderConstants_MENU_2 = 1093677135 set BuilderConstants_MENU_3 = 1093678402 set BuilderConstants_MENU_BOSS = 1093677892 set BuilderConstants_KEY_SPELL_ID = 1093677914 set BuilderConstants_TOME_SPELL_ID = 1093678128 set BuilderConstants_COIN_SPELL_ID = 1093679182 set BuilderConstants_BOOTS_SPELL_ID = 1093677913 set BuilderConstants_BM_BOSS_ID = 1093677894 set BuilderConstants_BM_SPELLTARGET_ID = 1093678673 set BuilderConstants_BM_DAMAGER_ID = 1093678674 set BuilderConstants_BM_WEAPON_ID = 1093678921 set BuilderConstants_TOME_ID = 1227894849 set BuilderConstants_COIN_ID = 1227895088 set BuilderConstants_BOOTS_ID = 1227894861 set BuilderConstants_REGION_ADMIN_ID = 1918985325 set BuilderConstants_colorSpells[0] = 1093678420 set BuilderConstants_colorSpells[1] = 1093678421 set BuilderConstants_colorSpells[2] = 1093678422 set BuilderConstants_colorSpells[3] = 1093678423 set BuilderConstants_colorSpells[4] = 1093678419 set BuilderConstants_colorSpells[5] = 1093678424 set BuilderConstants_colorSpells[6] = 1093678425 set BuilderConstants_colorSpells[7] = 1093678426 set BuilderConstants_colorSpells[8] = 1093678640 set i = 0 loop exitwhen i > 8 call preloadAbility_1(BuilderConstants_colorSpells[i]) set i = i + 1 endloop return true endfunction function init_Buildings takes nothing returns boolean return true endfunction function init_Camerashakes takes nothing returns boolean set Camerashakes_LOOP_PERIOD = 0.10 set Camerashakes_SHAKE_REDUCE_FLAT = 0.50 set Camerashakes_SHAKE_REDUCE_PERCENT = 0.05 set Camerashakes_SHAKE_THRESHOLD = 0.50 set Camerashakes_RICHTER_MAX = 5.0 set Camerashakes_RICHTER_MIN = 2.0 set Camerashakes_shakingPlayers = CreateForce() call timer_startPeriodic(CreateTimer(), Camerashakes_LOOP_PERIOD, ref_function_onLoop) return true endfunction function alloc_OrderStringFactory takes nothing returns integer local integer this_1 if OrderStringFactory_firstFree == 0 then if OrderStringFactory_maxIndex < JASS_MAX_ARRAY_SIZE then set OrderStringFactory_maxIndex = OrderStringFactory_maxIndex + 1 set this_1 = OrderStringFactory_maxIndex else call error("Out of memory: Could not create OrderStringFactory.") set this_1 = 0 endif else set OrderStringFactory_firstFree = OrderStringFactory_firstFree - 1 set this_1 = OrderStringFactory_nextFree[OrderStringFactory_firstFree] endif return this_1 endfunction function OrderStringFactory_init takes integer this_1 returns nothing endfunction function construct_OrderStringFactory takes integer this_1 returns nothing call OrderStringFactory_init(this_1) endfunction function new_OrderStringFactory takes nothing returns integer local integer this_1 = alloc_OrderStringFactory() call construct_OrderStringFactory(this_1) return this_1 endfunction function init_ChannelAbilityPreset takes nothing returns boolean call new_OrderStringFactory() return true endfunction function init_ChunkedString takes nothing returns boolean set ChunkedString_DEFAULT_CHUNK_SIZE = 200 return true endfunction function alloc_CallbackSingle_nullTimer_ClosureEvents takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 709 else call error("Out of memory: Could not create CallbackSingle_nullTimer_ClosureEvents.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 709 endif return this_1 endfunction function onUnitDeindex takes code func returns nothing call trigger_addCondition(UnitIndexer_onDeindexTrigger, Condition(func)) endfunction function onUnitIndex takes code func returns nothing call trigger_addCondition(UnitIndexer_onIndexTrigger, Condition(func)) endfunction function init_ClosureEvents takes nothing returns boolean local integer clVar set ClosureEvents_EVENT_PLAYER_CHAT_FILTER = ConvertPlayerEvent(96) set EventListener_castMap = new_HashMap() set EventListener_useMouseEvents = false set ClosureEvents_unitTrig = CreateTrigger() set ClosureEvents_leaveTrig = CreateTrigger() set ClosureEvents_keyTrig = CreateTrigger() set ClosureEvents_eventTypeCounter = 0 call onUnitIndex(ref_function_code__onUnitIndex_ClosureEvents) call onUnitDeindex(ref_function_code__onUnitDeindex_ClosureEvents) set clVar = alloc_CallbackSingle_nullTimer_ClosureEvents() call construct_CallbackSingle(clVar) call nullTimer(clVar) return true endfunction function init_ClosureForGroups takes nothing returns boolean local real tuple_temp local real tuple_temp_1 set ClosureForGroups_DUMMY_GROUP = CreateGroup() set ClosureForGroups_tempCallbacksCount = 0 set ClosureForGroups_maxCount = Integer_INT_MAX set ClosureForGroups_iterCount = 0 set ClosureForGroups_filter = Filter(ref_function_code__Filter_ClosureForGroups) call Rect(0., 0., 0., 0.) set tuple_temp = Vectors_ZERO2_x set tuple_temp_1 = Vectors_ZERO2_y return true endfunction function init_ClosureTimers takes nothing returns boolean set ClosureTimers_x = 200 return true endfunction function init_CodeGenerator takes nothing returns boolean return true endfunction function init_Coin takes nothing returns boolean set Coin_COIN_DUMMY_ID = 2016424043 return true endfunction function alloc_CollisionWorld takes nothing returns integer local integer this_1 if CollisionWorld_firstFree == 0 then if CollisionWorld_maxIndex < JASS_MAX_ARRAY_SIZE then set CollisionWorld_maxIndex = CollisionWorld_maxIndex + 1 set this_1 = CollisionWorld_maxIndex else call error("Out of memory: Could not create CollisionWorld.") set this_1 = 0 endif else set CollisionWorld_firstFree = CollisionWorld_firstFree - 1 set this_1 = CollisionWorld_nextFree[CollisionWorld_firstFree] endif return this_1 endfunction function CollisionWorld_init takes integer this_1 returns nothing call new_LinkedList() call new_LinkedList() endfunction function construct_CollisionWorld takes integer this_1, rect re returns nothing call CollisionWorld_init(this_1) call rect_getMinX(re) call rect_getMinY(re) call rect_getMaxX(re) call rect_getMaxY(re) endfunction function new_CollisionWorld takes rect re returns integer local integer this_1 = alloc_CollisionWorld() call construct_CollisionWorld(this_1, re) return this_1 endfunction function alloc_SphereShape takes nothing returns integer local integer this_1 if CollisionShape_firstFree == 0 then if CollisionShape_maxIndex < JASS_MAX_ARRAY_SIZE then set CollisionShape_maxIndex = CollisionShape_maxIndex + 1 set this_1 = CollisionShape_maxIndex else call error("Out of memory: Could not create SphereShape.") set this_1 = 0 endif else set CollisionShape_firstFree = CollisionShape_firstFree - 1 set this_1 = CollisionShape_nextFree[CollisionShape_firstFree] endif return this_1 endfunction function SphereShape_init takes integer this_1 returns nothing endfunction function construct_SphereShape takes integer this_1 returns nothing call SphereShape_init(this_1) endfunction function new_SphereShape takes nothing returns integer local integer this_1 = alloc_SphereShape() call construct_SphereShape(this_1) return this_1 endfunction function init_Collision takes nothing returns boolean call new_CollisionWorld(MapBounds_playableMapRect) call new_SphereShape() return true endfunction function initializeTable takes nothing returns nothing local integer i = 0 loop exitwhen i > 15 call dispatch_Table_Table_Table_saveInt(Colors_decs, string_getHash(Colors_hexs[i]), i) set i = i + 1 endloop endfunction function init_Colors takes nothing returns boolean local integer tuple_temp local integer tuple_temp_1 local integer tuple_temp_2 local integer tuple_temp_3 local integer tuple_temp_4 local integer tuple_temp_5 local integer tuple_temp_6 local integer tuple_temp_7 local integer tuple_temp_8 local integer tuple_temp_9 local integer tuple_temp_10 local integer tuple_temp_11 local integer tuple_temp_12 local integer tuple_temp_13 local integer tuple_temp_14 local integer tuple_temp_15 local integer tuple_temp_16 local integer tuple_temp_17 local integer tuple_temp_18 local integer tuple_temp_19 local integer tuple_temp_20 local integer tuple_temp_21 local integer tuple_temp_22 local integer tuple_temp_23 local integer tuple_temp_24 local integer tuple_temp_25 local integer tuple_temp_26 local integer tuple_temp_27 local integer tuple_temp_28 local integer tuple_temp_29 local integer tuple_temp_30 local integer tuple_temp_31 local integer tuple_temp_32 local integer tuple_temp_33 local integer tuple_temp_34 local integer tuple_temp_35 local integer tuple_temp_36 local integer tuple_temp_37 local integer tuple_temp_38 local integer tuple_temp_39 local integer tuple_temp_40 local integer tuple_temp_41 local integer tuple_temp_42 local integer tuple_temp_43 local integer tuple_temp_44 local integer tuple_temp_45 local integer tuple_temp_46 local integer tuple_temp_47 local integer tuple_temp_48 local integer tuple_temp_49 local integer tuple_temp_50 local integer tuple_temp_51 local integer tuple_temp_52 local integer tuple_temp_53 local integer tuple_temp_54 local integer tuple_temp_55 local integer tuple_temp_56 local integer tuple_temp_57 local integer tuple_temp_58 local integer tuple_temp_59 local integer tuple_temp_60 local integer tuple_temp_61 local integer tuple_temp_62 local integer tuple_temp_63 local integer tuple_temp_64 local integer tuple_temp_65 local integer tuple_temp_66 local integer tuple_temp_67 local integer tuple_temp_68 local integer tuple_temp_69 local integer tuple_temp_70 local integer tuple_temp_71 local integer tuple_temp_72 local integer tuple_temp_73 local integer tuple_temp_74 local integer tuple_temp_75 local integer tuple_temp_76 local integer tuple_temp_77 local integer tuple_temp_78 local integer tuple_temp_79 local integer tuple_temp_80 local integer tuple_temp_81 local integer tuple_temp_82 local integer tuple_temp_83 set Colors_hexs[0] = "0" set Colors_hexs[1] = "1" set Colors_hexs[2] = "2" set Colors_hexs[3] = "3" set Colors_hexs[4] = "4" set Colors_hexs[5] = "5" set Colors_hexs[6] = "6" set Colors_hexs[7] = "7" set Colors_hexs[8] = "8" set Colors_hexs[9] = "9" set Colors_hexs[10] = "A" set Colors_hexs[11] = "B" set Colors_hexs[12] = "C" set Colors_hexs[13] = "D" set Colors_hexs[14] = "E" set Colors_hexs[15] = "F" set Colors_decs = new_Table() set tuple_temp = 255 set tuple_temp_1 = 255 set tuple_temp_2 = 255 set tuple_temp_3 = 255 set Colors_COLOR_WHITE_red = tuple_temp set Colors_COLOR_WHITE_green = tuple_temp_1 set Colors_COLOR_WHITE_blue = tuple_temp_2 set Colors_COLOR_WHITE_alpha = tuple_temp_3 set tuple_temp_4 = 0 set tuple_temp_5 = 0 set tuple_temp_6 = 0 set tuple_temp_7 = 0 set Colors_COLOR_BLACK_red = tuple_temp_4 set Colors_COLOR_BLACK_green = tuple_temp_5 set Colors_COLOR_BLACK_blue = tuple_temp_6 set Colors_COLOR_BLACK_alpha = tuple_temp_7 set tuple_temp_8 = 255 set tuple_temp_9 = 204 set tuple_temp_10 = 0 set tuple_temp_11 = 255 set Colors_COLOR_GOLD_red = tuple_temp_8 set Colors_COLOR_GOLD_green = tuple_temp_9 set Colors_COLOR_GOLD_blue = tuple_temp_10 set Colors_COLOR_GOLD_alpha = tuple_temp_11 call colorA_toColorString(Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha) call colorA_toColorString(Colors_COLOR_BLACK_red, Colors_COLOR_BLACK_green, Colors_COLOR_BLACK_blue, Colors_COLOR_BLACK_alpha) call colorA_toColorString(Colors_COLOR_GOLD_red, Colors_COLOR_GOLD_green, Colors_COLOR_GOLD_blue, Colors_COLOR_GOLD_alpha) set Colors_MAX_PLAYER_COLORS = 23 set tuple_temp_12 = 255 set tuple_temp_13 = 2 set tuple_temp_14 = 2 set Colors_PLAYER_COLORS_red[0] = tuple_temp_12 set Colors_PLAYER_COLORS_green[0] = tuple_temp_13 set Colors_PLAYER_COLORS_blue[0] = tuple_temp_14 set tuple_temp_15 = 0 set tuple_temp_16 = 65 set tuple_temp_17 = 255 set Colors_PLAYER_COLORS_red[1] = tuple_temp_15 set Colors_PLAYER_COLORS_green[1] = tuple_temp_16 set Colors_PLAYER_COLORS_blue[1] = tuple_temp_17 set tuple_temp_18 = 27 set tuple_temp_19 = 229 set tuple_temp_20 = 184 set Colors_PLAYER_COLORS_red[2] = tuple_temp_18 set Colors_PLAYER_COLORS_green[2] = tuple_temp_19 set Colors_PLAYER_COLORS_blue[2] = tuple_temp_20 set tuple_temp_21 = 83 set tuple_temp_22 = 0 set tuple_temp_23 = 128 set Colors_PLAYER_COLORS_red[3] = tuple_temp_21 set Colors_PLAYER_COLORS_green[3] = tuple_temp_22 set Colors_PLAYER_COLORS_blue[3] = tuple_temp_23 set tuple_temp_24 = 255 set tuple_temp_25 = 252 set tuple_temp_26 = 0 set Colors_PLAYER_COLORS_red[4] = tuple_temp_24 set Colors_PLAYER_COLORS_green[4] = tuple_temp_25 set Colors_PLAYER_COLORS_blue[4] = tuple_temp_26 set tuple_temp_27 = 254 set tuple_temp_28 = 137 set tuple_temp_29 = 13 set Colors_PLAYER_COLORS_red[5] = tuple_temp_27 set Colors_PLAYER_COLORS_green[5] = tuple_temp_28 set Colors_PLAYER_COLORS_blue[5] = tuple_temp_29 set tuple_temp_30 = 31 set tuple_temp_31 = 191 set tuple_temp_32 = 0 set Colors_PLAYER_COLORS_red[6] = tuple_temp_30 set Colors_PLAYER_COLORS_green[6] = tuple_temp_31 set Colors_PLAYER_COLORS_blue[6] = tuple_temp_32 set tuple_temp_33 = 228 set tuple_temp_34 = 90 set tuple_temp_35 = 175 set Colors_PLAYER_COLORS_red[7] = tuple_temp_33 set Colors_PLAYER_COLORS_green[7] = tuple_temp_34 set Colors_PLAYER_COLORS_blue[7] = tuple_temp_35 set tuple_temp_36 = 148 set tuple_temp_37 = 149 set tuple_temp_38 = 150 set Colors_PLAYER_COLORS_red[8] = tuple_temp_36 set Colors_PLAYER_COLORS_green[8] = tuple_temp_37 set Colors_PLAYER_COLORS_blue[8] = tuple_temp_38 set tuple_temp_39 = 125 set tuple_temp_40 = 190 set tuple_temp_41 = 241 set Colors_PLAYER_COLORS_red[9] = tuple_temp_39 set Colors_PLAYER_COLORS_green[9] = tuple_temp_40 set Colors_PLAYER_COLORS_blue[9] = tuple_temp_41 set tuple_temp_42 = 15 set tuple_temp_43 = 97 set tuple_temp_44 = 69 set Colors_PLAYER_COLORS_red[10] = tuple_temp_42 set Colors_PLAYER_COLORS_green[10] = tuple_temp_43 set Colors_PLAYER_COLORS_blue[10] = tuple_temp_44 set tuple_temp_45 = 77 set tuple_temp_46 = 41 set tuple_temp_47 = 3 set Colors_PLAYER_COLORS_red[11] = tuple_temp_45 set Colors_PLAYER_COLORS_green[11] = tuple_temp_46 set Colors_PLAYER_COLORS_blue[11] = tuple_temp_47 set tuple_temp_48 = 155 set tuple_temp_49 = 0 set tuple_temp_50 = 0 set Colors_PLAYER_COLORS_red[12] = tuple_temp_48 set Colors_PLAYER_COLORS_green[12] = tuple_temp_49 set Colors_PLAYER_COLORS_blue[12] = tuple_temp_50 set tuple_temp_51 = 0 set tuple_temp_52 = 0 set tuple_temp_53 = 195 set Colors_PLAYER_COLORS_red[13] = tuple_temp_51 set Colors_PLAYER_COLORS_green[13] = tuple_temp_52 set Colors_PLAYER_COLORS_blue[13] = tuple_temp_53 set tuple_temp_54 = 0 set tuple_temp_55 = 234 set tuple_temp_56 = 255 set Colors_PLAYER_COLORS_red[14] = tuple_temp_54 set Colors_PLAYER_COLORS_green[14] = tuple_temp_55 set Colors_PLAYER_COLORS_blue[14] = tuple_temp_56 set tuple_temp_57 = 190 set tuple_temp_58 = 0 set tuple_temp_59 = 254 set Colors_PLAYER_COLORS_red[15] = tuple_temp_57 set Colors_PLAYER_COLORS_green[15] = tuple_temp_58 set Colors_PLAYER_COLORS_blue[15] = tuple_temp_59 set tuple_temp_60 = 235 set tuple_temp_61 = 205 set tuple_temp_62 = 135 set Colors_PLAYER_COLORS_red[16] = tuple_temp_60 set Colors_PLAYER_COLORS_green[16] = tuple_temp_61 set Colors_PLAYER_COLORS_blue[16] = tuple_temp_62 set tuple_temp_63 = 248 set tuple_temp_64 = 164 set tuple_temp_65 = 139 set Colors_PLAYER_COLORS_red[17] = tuple_temp_63 set Colors_PLAYER_COLORS_green[17] = tuple_temp_64 set Colors_PLAYER_COLORS_blue[17] = tuple_temp_65 set tuple_temp_66 = 191 set tuple_temp_67 = 255 set tuple_temp_68 = 128 set Colors_PLAYER_COLORS_red[18] = tuple_temp_66 set Colors_PLAYER_COLORS_green[18] = tuple_temp_67 set Colors_PLAYER_COLORS_blue[18] = tuple_temp_68 set tuple_temp_69 = 220 set tuple_temp_70 = 185 set tuple_temp_71 = 235 set Colors_PLAYER_COLORS_red[19] = tuple_temp_69 set Colors_PLAYER_COLORS_green[19] = tuple_temp_70 set Colors_PLAYER_COLORS_blue[19] = tuple_temp_71 set tuple_temp_72 = 40 set tuple_temp_73 = 40 set tuple_temp_74 = 40 set Colors_PLAYER_COLORS_red[20] = tuple_temp_72 set Colors_PLAYER_COLORS_green[20] = tuple_temp_73 set Colors_PLAYER_COLORS_blue[20] = tuple_temp_74 set tuple_temp_75 = 235 set tuple_temp_76 = 240 set tuple_temp_77 = 255 set Colors_PLAYER_COLORS_red[21] = tuple_temp_75 set Colors_PLAYER_COLORS_green[21] = tuple_temp_76 set Colors_PLAYER_COLORS_blue[21] = tuple_temp_77 set tuple_temp_78 = 0 set tuple_temp_79 = 120 set tuple_temp_80 = 30 set Colors_PLAYER_COLORS_red[22] = tuple_temp_78 set Colors_PLAYER_COLORS_green[22] = tuple_temp_79 set Colors_PLAYER_COLORS_blue[22] = tuple_temp_80 set tuple_temp_81 = 164 set tuple_temp_82 = 111 set tuple_temp_83 = 51 set Colors_PLAYER_COLORS_red[23] = tuple_temp_81 set Colors_PLAYER_COLORS_green[23] = tuple_temp_82 set Colors_PLAYER_COLORS_blue[23] = tuple_temp_83 set Colors_PLAYER_COLOR_NAMES[0] = "red" set Colors_PLAYER_COLOR_NAMES[1] = "blue" set Colors_PLAYER_COLOR_NAMES[2] = "teal" set Colors_PLAYER_COLOR_NAMES[3] = "purple" set Colors_PLAYER_COLOR_NAMES[4] = "yellow" set Colors_PLAYER_COLOR_NAMES[5] = "orange" set Colors_PLAYER_COLOR_NAMES[6] = "green" set Colors_PLAYER_COLOR_NAMES[7] = "pink" set Colors_PLAYER_COLOR_NAMES[8] = "gray" set Colors_PLAYER_COLOR_NAMES[9] = "light blue" set Colors_PLAYER_COLOR_NAMES[10] = "dark green" set Colors_PLAYER_COLOR_NAMES[11] = "brown" set Colors_PLAYER_COLOR_NAMES[12] = "maroon" set Colors_PLAYER_COLOR_NAMES[13] = "navy" set Colors_PLAYER_COLOR_NAMES[14] = "turquoise" set Colors_PLAYER_COLOR_NAMES[15] = "violet" set Colors_PLAYER_COLOR_NAMES[16] = "wheat" set Colors_PLAYER_COLOR_NAMES[17] = "peach" set Colors_PLAYER_COLOR_NAMES[18] = "mint" set Colors_PLAYER_COLOR_NAMES[19] = "lavender" set Colors_PLAYER_COLOR_NAMES[20] = "coal" set Colors_PLAYER_COLOR_NAMES[21] = "snow" set Colors_PLAYER_COLOR_NAMES[22] = "emerald" set Colors_PLAYER_COLOR_NAMES[23] = "peanut" call initializeTable() return true endfunction function alloc_EventListener_add_Commands takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 772 else call error("Out of memory: Could not create EventListener_add_Commands.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 772 endif return this_1 endfunction function init_Commands takes nothing returns boolean local playerevent temp = ClosureEvents_EVENT_PLAYER_CHAT_FILTER local integer clVar = alloc_EventListener_add_Commands() call construct_EventListener(clVar) call EventListener_add(temp, clVar) return true endfunction function init_CongaObjects takes nothing returns boolean set CongaObjects_ADD_ID = 1095577906 set CongaObjects_INC_ID = 1095577907 set CongaObjects_DEC_ID = 1095577908 set CongaObjects_CONGA_STRICT_ID = 1095577909 set CongaObjects_CONGA_LOOSE_ID = 1095577910 set CongaObjects_CONGA_CONFIG_ID = 1095577912 return true endfunction function init_CustomBar takes nothing returns boolean set CustomBar_DEFAULT_BACKGROUND = -16777216 set CustomBar_DEFAULT_FOREGROUND = -1 set CustomBar_count = 0 set CustomBar_animationTimer = CreateTimer() return true endfunction function alloc_EventListener_add_DamageEvent takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 774 else call error("Out of memory: Could not create EventListener_add_DamageEvent.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 774 endif return this_1 endfunction function alloc_EventListener_add_DamageEvent_1691 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 775 else call error("Out of memory: Could not create EventListener_add_DamageEvent.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 775 endif return this_1 endfunction function alloc_DamageElement takes nothing returns integer local integer this_1 if DamageElement_firstFree == 0 then if DamageElement_maxIndex < JASS_MAX_ARRAY_SIZE then set DamageElement_maxIndex = DamageElement_maxIndex + 1 set this_1 = DamageElement_maxIndex else call error("Out of memory: Could not create DamageElement.") set this_1 = 0 endif else set DamageElement_firstFree = DamageElement_firstFree - 1 set this_1 = DamageElement_nextFree[DamageElement_firstFree] endif return this_1 endfunction function DamageElement_init takes integer this_1 returns nothing endfunction function construct_DamageElement takes integer this_1, string name, integer color_red, integer color_green, integer color_blue, integer color_alpha returns nothing call DamageElement_init(this_1) endfunction function new_DamageElement takes string name, integer color_red, integer color_green, integer color_blue, integer color_alpha returns integer local integer this_1 = alloc_DamageElement() call construct_DamageElement(this_1, name, color_red, color_green, color_blue, color_alpha) return this_1 endfunction function init_DamageEvent takes nothing returns boolean local integer clVar local integer clVar_1 local playerunitevent temp local playerunitevent temp_1 set DamageEvent_DETECT_NATIVE_ABILITIES = true set DamageEvent_DAMAGE_ELEMENT_ATTACK = new_DamageElement("Physical", 223, 59, 33, 255) set DamageInstance_current = 0 set DamageInstance_count = 0 set DamageEvent_nextDamageId = 0 set DamageEvent_nextDamageType = 4 set DamageEvent_nextDamageElement = 0 set DamageEvent_abort = false set DamageEvent_maxPriority = 0 set DamageEvent_maxUnreducedPriority = 0 set temp = EVENT_PLAYER_UNIT_DAMAGING set clVar = alloc_EventListener_add_DamageEvent() call construct_EventListener(clVar) call EventListener_add(temp, clVar) set temp_1 = EVENT_PLAYER_UNIT_DAMAGED set clVar_1 = alloc_EventListener_add_DamageEvent_1691() call construct_EventListener(clVar_1) call EventListener_add(temp_1, clVar_1) return true endfunction function alloc_EventListener_add_DebugInfo takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 776 else call error("Out of memory: Could not create EventListener_add_DebugInfo.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 776 endif return this_1 endfunction function init_DebugInfo takes nothing returns boolean local integer i local trigger receiver local trigger receiver_1 local integer clVar local playerevent temp set DebugInfo_rows = 3 set DebugInfo_columns = 3 set DebugInfo_seconds = 0 set DebugInfo_eventCallbacksPerSecond = 0 set DebugInfo_totalEventCallbacks = 0 set DebugInfo_allocationsPerSecond = 0 set DebugInfo_totalAllocations = 0 set DebugInfo_isFirst = true set i = 0 loop exitwhen i > 11 set receiver = CreateTrigger() call trigger_registerPlayerChatEvent(receiver, Player_players[i], "-debug", true) set receiver_1 = receiver call trigger_addAction(receiver_1, ref_function_code__addAction_DebugInfo) set i = i + 1 endloop set temp = ClosureEvents_EVENT_PLAYER_CHAT_FILTER set clVar = alloc_EventListener_add_DebugInfo() call construct_EventListener(clVar) call EventListener_add(temp, clVar) return true endfunction function init_Decoration takes nothing returns boolean set Decoration_CHANGE_FACE_ID = 1095578216 set Decoration_INC_SCALE = 1095578217 set Decoration_DEC_SCALE = 1095578218 set Decoration_KEY_SCALE = "d" set Decoration_KEY_ANGLE = "e" return true endfunction function init_Destructable takes nothing returns boolean return true endfunction function init_Doodads takes nothing returns boolean set Doodads_shimmeringPortal = "Doodads\\Cinematic\\ShimmeringPortal\\ShimmeringPortal.mdx" return true endfunction function init_Door takes nothing returns boolean set Door_DOORPATH = 2016424051 set Door_DOORPATH_O = 2016424052 set Door_DOOROPEN_ABILITY_ID = 1093677130 set Door_DOORTURN_ABILITY_ID = 1093677399 set Door_EVENT_RADIUS = 192. set Door_KEY_COLOR_ID[0] = 1227894841 set Door_KEY_COLOR_ID[1] = 1227894851 set Door_KEY_COLOR_ID[2] = 1227894836 set Door_KEY_COLOR_ID[3] = 1227894840 set Door_KEY_COLOR_ID[4] = 1227894858 set Door_KEY_COLOR_ID[5] = 1227894837 set Door_KEY_COLOR_ID[6] = 1227894863 set Door_KEY_COLOR_ID[7] = 1227894850 set Door_KEY_COLOR_ID[8] = 1227894838 set Door_KEY_COLOR = "c" set Door_KEY_ROTATION = "d" return true endfunction function init_DummyRecycler takes nothing returns boolean local integer i local integer temp local real facing_radians local integer j local integer temp_1 local unit dummy local real tuple_temp set DummyRecycler_DUMMY_UNIT_ID = 2016424038 set DummyRecycler_ROOT_ENABLER = 1095577704 set DummyRecycler_DIFFERENT_ANGLES = 8 set DummyRecycler_ANGLE_DEGREE = 360 * 1. / DummyRecycler_DIFFERENT_ANGLES set DummyRecycler_SAVED_UNITS_PER_ANGLE = 6 call realToIndex(1.) set i = 0 set temp = DummyRecycler_DIFFERENT_ANGLES - 1 loop exitwhen i > temp set DummyRecycler_angleQueues[i] = new_LinkedList() set tuple_temp = i * DummyRecycler_ANGLE_DEGREE set facing_radians = tuple_temp set j = 0 set temp_1 = DummyRecycler_SAVED_UNITS_PER_ANGLE - 1 loop exitwhen j > temp_1 set dummy = createDummy(vec2_op_minus(MapBounds_boundMax_x, MapBounds_boundMax_y, 16., 16.), vec2_op_minus_return_y, facing_radians) call dispatch_LinkedList_LinkedList_LinkedList_enqueue(DummyRecycler_angleQueues[i], unitToIndex(dummy)) set j = j + 1 endloop set i = i + 1 endloop return true endfunction function init_Encoder takes nothing returns boolean set Encoder_maxHash = 1000 return true endfunction function alloc_EventListener_add_Entity takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 780 else call error("Out of memory: Could not create EventListener_add_Entity.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 780 endif return this_1 endfunction function alloc_EventListener_add_Entity_1697 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 781 else call error("Out of memory: Could not create EventListener_add_Entity.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 781 endif return this_1 endfunction function alloc_EventListener_add_Entity_1698 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 782 else call error("Out of memory: Could not create EventListener_add_Entity.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 782 endif return this_1 endfunction function init_Entity takes nothing returns boolean local integer clVar local integer clVar_1 local integer clVar_2 local playerunitevent temp local playerunitevent temp_1 local playerunitevent temp_2 local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 set Entity_KEY_X = "x" set Entity_KEY_Y = "y" set Entity_KEY_Z = "z" set Entity_KEY_TYPE = "t" set tuple_temp = Vectors_ZERO3_x set tuple_temp_1 = Vectors_ZERO3_y set tuple_temp_2 = Vectors_ZERO3_z set Entity_serializeOrigin_x = tuple_temp set Entity_serializeOrigin_y = tuple_temp_1 set Entity_serializeOrigin_z = tuple_temp_2 set Entity_DupletListModule_firstActive = 0 set Entity_DupletListModule_lastActive = 0 set Entity_DupletListModule_firstInactive = 0 set Entity_DupletListModule_lastInactive = 0 set Entity_DupletListModule_activeSize = 0 set Entity_DupletListModule_inactiveSize = 0 set temp = EVENT_PLAYER_UNIT_PICKUP_ITEM set clVar = alloc_EventListener_add_Entity() call construct_EventListener(clVar) call EventListener_add(temp, clVar) set temp_1 = EVENT_PLAYER_UNIT_DROP_ITEM set clVar_1 = alloc_EventListener_add_Entity_1697() call construct_EventListener(clVar_1) call EventListener_add(temp_1, clVar_1) set temp_2 = EVENT_PLAYER_UNIT_USE_ITEM set clVar_2 = alloc_EventListener_add_Entity_1698() call construct_EventListener(clVar_2) call EventListener_add(temp_2, clVar_2) return true endfunction function Buff_LinkedListModule_iterator takes nothing returns integer return new_Iterator_3693(true) endfunction function alloc_Iterator takes nothing returns integer local integer this_1 if Iterator_firstFree == 0 then if Iterator_maxIndex < JASS_MAX_ARRAY_SIZE then set Iterator_maxIndex = Iterator_maxIndex + 1 set this_1 = Iterator_maxIndex set Iterator_typeId[this_1] = 978 else call error("Out of memory: Could not create Iterator.") set this_1 = 0 endif else set Iterator_firstFree = Iterator_firstFree - 1 set this_1 = Iterator_nextFree[Iterator_firstFree] set Iterator_typeId[this_1] = 978 endif return this_1 endfunction function Iterator_init takes integer this_1 returns nothing set Iterator_current[this_1] = Entity_DupletListModule_firstActive endfunction function construct_Iterator takes integer this_1 returns nothing call Iterator_init(this_1) endfunction function new_Iterator takes nothing returns integer local integer this_1 = alloc_Iterator() call construct_Iterator(this_1) return this_1 endfunction function Entity_DupletListModule_iterator takes nothing returns integer return new_Iterator() endfunction function init_EntityManagement takes nothing returns boolean set EntityManagement_activeItr = Entity_DupletListModule_iterator() set EntityManagement_buffItr = Buff_LinkedListModule_iterator() return true endfunction function init_Entity_config takes nothing returns boolean return true endfunction function init_Environment takes nothing returns boolean return true endfunction function init_ErrorHandling takes nothing returns boolean set ErrorHandling_MUTE_ERROR_DURATION = 60 set ErrorHandling_PRIMARY_ERROR_KEY = -1 set ErrorHandling_HT = hashtable_compiletime set ErrorHandling_lastError = "" set ErrorHandling_suppressErrorMessages = false return true endfunction function init_Escaper takes nothing returns boolean local real tuple_temp local real tuple_temp_1 set Escaper_SLIDE_ADD = 3.3 set Escaper_ANK_ITEM_ID = 1093679409 set Escaper_TELEPORT_ITEM_ID = 1093679187 set Escaper_JUMP_SPELL = 1093678642 set Escaper_ORB_SPELL = 1093679169 set Escaper_JAUNT_SPELL = 1093679172 set Escaper_POISON_EFFECT = Abilities_poisonStingTarget set Escaper_LAVA_EFFECT = Abilities_flameStrikeEmbers set Escaper_escapers = new_LinkedList() set tuple_temp = unit_getPos(gg_unit_revp_0002) set tuple_temp_1 = unit_getPos_return_y set Escaper_currentRevivepoint_x = tuple_temp set Escaper_currentRevivepoint_y = tuple_temp_1 call timer_startPeriodic(getTimer(), 1., ref_function_correctRegion) return true endfunction function init_EscaperClasses takes nothing returns boolean set EscaperClasses_REINCARNATION_ID = 1093677656 set EscaperClasses_PORTAL_CREATE_ID = 1093679179 set EscaperClasses_SPEEDWAVE_ID = 1093678672 set EscaperClasses_STAGNANCYSHIELD_ID = 1093677112 set EscaperClasses_SLOWWAVE_ID = 1093679160 set EscaperClasses_TEMP_REV_ID = 1093678938 set EscaperClasses_INNER_STRENGTH_ID = 1093679180 set EscaperClasses_FIRE_RESISTANCE = 1093679185 set Portal_Sensor_sensorListeners = new_HashMap() return true endfunction function init_EscaperKillers takes nothing returns boolean set EscaperKillers_COLL_SIZE_SK = 72. set EscaperKillers_COLL_SIZE_BK = 92. set EscaperKillers_COLL_SIZE_SRK = 68. set EscaperKillers_COLL_SIZE_BRK = 88. set EscaperKillers_COLL_SIZE_TANK = 80. set EscaperKillers_COLL_SIZE_GLAIVE = 54. set EscaperKillers_COLL_SIZE_AIR_Z = 78. set EscaperKillers_COLL_SIZE_AIR_XY = 52. set EscaperKillers_COLL_SIZE_FIRE = 8. set EscaperKillers_SMALL_RANDOM_KILLER_ID = 1936878450 set EscaperKillers_BIG_RANDOM_KILLER_ID = 1651665778 set EscaperKillers_GLAIVE_KILLER_ID = 1735161445 set EscaperKillers_TANK_KILLER_ID = 1952542315 set EscaperKillers_FIRE_KILLER_ID = 1718186597 set EscaperKillers_AIR_KILLER_ID = 1634300523 return true endfunction function init_EscaperObjects takes nothing returns boolean set EscaperObjects_HP_GAIN_50 = 1095577701 set EscaperObjects_HP_GAIN_75 = 1095577702 set EscaperObjects_HP_GAIN_100 = 1095577703 set EscaperObjects_TOMB_DUMMY_ID = 2016424037 return true endfunction function init_EscaperSensor takes nothing returns boolean set EscaperSensorSetup_Sensor_sensorListeners = new_HashMap() return true endfunction function init_EventHelper takes nothing returns boolean set EventHelper_rectMap = new_HashMap() set EventHelper_regionMap = new_HashMap() set EventHelper_triggerData = new_Table() return true endfunction function force_addPlayer takes force this_1, player whichPlayer returns nothing call ForceAddPlayer(this_1, whichPlayer) endfunction function init_Execute takes nothing returns boolean set Execute_executeForce = CreateForce() call force_addPlayer(Execute_executeForce, Player_localPlayer) set Execute_tempCallbacksCount = 0 return true endfunction function init_Executer takes nothing returns boolean set Executer_LEVER_DUMMY_ID = 1146383478 set Executer_PLATE_DUMMY_ID = 1110454321 set Executer_EVENT_RADIUS = 42. set Executer_ONESHOT_ABIL = 1093678648 set Executer_REPEATING_ABIL = 1093678649 set Executer_LEVER_ABIL = 1093678647 set Executer_PRESSURE_ABIL = 1093678646 set Executer_REACTIVATE_ABIL = 1093678682 set Executer_TERRAIN_CHANGE_ABIL = 1093677878 set Executer_TERRAIN_WALKABLE_ABIL = 1093677365 set Executer_TERRAIN_UNWALKABLE_ABIL = 1093677366 set Executer_TERRAIN_ICE_ABIL = 1093677369 set Executer_TERRAIN_UNICE_ABIL = 1093677377 set Executer_TERRAIN_REVICE_ABIL = 1093677121 set Executer_TERRAIN_W_O_ABIL = 1093677889 set Executer_TERRAIN_UW_O_ABIL = 1093677881 set Executer_TERRAIN_I_O_ABIL = 1093677880 set Executer_TERRAIN_UI_O_ABIL = 1093677879 set Executer_TERRAIN_RI_O_ABIL = 1093677135 set Executer_TERRAIN_INCREASE_H_ABIL = 1093677387 set Executer_TERRAIN_INCREASE_V_ABIL = 1093677389 set Executer_TERRAIN_DECREASE_H_ABIL = 1093677397 set Executer_TERRAIN_DECREASE_V_ABIL = 1093677396 set Executer_TERRAIN_BOOK_ABIL = 1093677877 set Executer_TERRAIN_ANTIBOOK_ABIL = 1093678658 set Executer_DOOR_OPEN_ABIL = 1093677368 set Executer_DOOR_CLOSE_ABIL = 1093677390 set Executer_DOOR_TOGGLE_ABIL = 1093677393 set Executer_MOVE_UNIT_DIRECT_ABIL = 1093678162 set Executer_MOVE_UNIT_PATROL_ABIL = 1093678644 set Executer_MOVE_UNIT_STOP_ABIL = 1093678645 set Executer_MOVE_UNIT_SELECT_ABIL = 1093678657 set Executer_TRAIN_BOOK_ABIL = 1093678130 set Executer_SPAWN_UNIT_ID = 1093678675 set Executer_TRAIN_BK_ABIL = 1093678133 set Executer_TRAIN_SK_ABIL = 1093678134 set Executer_TRAIN_BRK_ABIL = 1093678136 set Executer_TRAIN_SRK_ABIL = 1093678146 set Executer_TRAIN_TANK_ABIL = 1093678147 set Executer_TRAIN_GLAIVE_ABIL = 1093678167 set Executer_TRAIN_POINTER_ABIL = 1093678148 set Executer_TRAIN_KNOCK_ABIL = 1093678930 set Executer_executerUnitLeave = CreateTrigger() set Executer_executerUnitEnter = CreateTrigger() return true endfunction function alloc_BackIterator_1570 takes nothing returns integer local integer this_1 if BackIterator_firstFree_73 == 0 then if BackIterator_maxIndex_76 < JASS_MAX_ARRAY_SIZE then set BackIterator_maxIndex_76 = BackIterator_maxIndex_76 + 1 set this_1 = BackIterator_maxIndex_76 else call error("Out of memory: Could not create BackIterator.") set this_1 = 0 endif else set BackIterator_firstFree_73 = BackIterator_firstFree_73 - 1 set this_1 = BackIterator_nextFree_79[BackIterator_firstFree_73] endif return this_1 endfunction function BackIterator_init_28 takes integer this_1 returns nothing endfunction function construct_BackIterator_2117 takes integer this_1, boolean destroyOnClose returns nothing call BackIterator_init_28(this_1) endfunction function new_BackIterator_3611 takes boolean destroyOnClose returns integer local integer this_1 = alloc_BackIterator_1570() call construct_BackIterator_2117(this_1, destroyOnClose) return this_1 endfunction function init_FText takes nothing returns boolean set FText_recylcer = new_LinkedList() set FText_LinkedListModule_first = 0 set FText_LinkedListModule_last = 0 set FText_LinkedListModule_size = 0 call new_Iterator_3694(false) call new_BackIterator_3611(false) return true endfunction function init_Faceless takes nothing returns boolean set Faceless_KILL_RADIUS = 64. set Faceless_DIMENSION_SHIFTER_ID = 1684630899 set Faceless_UP_VIS_ID = 1095577723 set Faceless_DOWN_VIS_ID = 1095577724 set Faceless_UP_INVIS_ID = 1095577725 set Faceless_DOWN_INVIS_ID = 1095577726 return true endfunction function ChunkedString_getUnsafeString takes integer this_1 returns string local string out = "" local integer i = 0 local integer temp = dispatch_ChunkedString_ChunkedString_ChunkedString_getChunkCount(this_1) loop exitwhen i > temp set out = out + dispatch_ChunkedString_ChunkedString_ChunkedString_getChunk(this_1, i) set i = i + 1 endloop return out endfunction function dispatch_ChunkedString_ChunkedString_ChunkedString_getUnsafeString takes integer this_1 returns string local string ChunkedString_ChunkedString_getUnsafeString_result if ChunkedString_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling ChunkedString.getUnsafeString") else call error("Called ChunkedString.getUnsafeString on invalid object.") endif endif set ChunkedString_ChunkedString_getUnsafeString_result = ChunkedString_getUnsafeString(this_1) return ChunkedString_ChunkedString_getUnsafeString_result endfunction function File_readAsString takes integer this_1, player p returns string local integer out = dispatch_File_FileIO_File_read(this_1, p) local string str = dispatch_ChunkedString_ChunkedString_ChunkedString_getUnsafeString(out) call dispatch_ChunkedString_destroyChunkedString(out) return str endfunction function dispatch_File_FileIO_File_readAsString takes integer this_1, player p returns string local string FileIO_File_readAsString_result if File_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling File.readAsString") else call error("Called File.readAsString on invalid object.") endif endif set FileIO_File_readAsString_result = File_readAsString(this_1, p) return FileIO_File_readAsString_result endfunction function File_write takes integer this_1, player p, string content returns nothing local integer buffer = new_ChunkedString() call dispatch_ChunkedString_ChunkedString_ChunkedString_append(buffer, content) call dispatch_File_FileIO_File_write_2898(this_1, p, buffer) call dispatch_ChunkedString_destroyChunkedString(buffer) endfunction function dispatch_File_FileIO_File_write takes integer this_1, player p, string content returns nothing if File_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling File.write") else call error("Called File.write on invalid object.") endif endif call File_write(this_1, p, content) endfunction function init_FileIO takes nothing returns boolean local integer receiver set FileIO_CHUNKS_PER_FILE = 64 set FileIO_FILE_IO_ABIL_ID = 611808108 set FileIO_FILE_IO_ABIL_ID_STR = int_toRawCode(FileIO_FILE_IO_ABIL_ID) set receiver = new_File("FileTester.pld") call dispatch_File_FileIO_File_write(receiver, Player_localPlayer, "test") call dispatch_File_FileIO_File_readAsString(receiver, Player_localPlayer) return true endfunction function init_Fountain takes nothing returns boolean set Fountain_EFFECT_ID = "Abilities\\Spells\\Human\\HolyBolt\\HolyBoltSpecialArt.mdl" return true endfunction function verifyFrameNameLength takes string name returns boolean if string_length(name) > Framehandle_BLZ_FRAMENAME_MAXLENGTH then call error("Trying to address frame with exceeding maximum frame name length (" + int_toString(Framehandle_BLZ_FRAMENAME_MAXLENGTH) + ") for: " + name) return false endif return true endfunction function createFrame takes string typeName, string name, framehandle owner, string inherits, integer createContext returns framehandle call verifyFrameNameLength(name) return BlzCreateFrameByType(typeName, name, owner, inherits, createContext) endfunction function framehandle_setSize takes framehandle this_1, real width, real height returns nothing call BlzFrameSetSize(this_1, width, height) endfunction function init_Framehandle takes nothing returns boolean local framehandle receiver local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 set Framehandle_GAME_UI = BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0) call BlzGetOriginFrame(ORIGIN_FRAME_WORLD_FRAME, 0) set tuple_temp = 0.4 set tuple_temp_1 = 0.6 set Framehandle_SCREEN_TOP_x = tuple_temp set Framehandle_SCREEN_TOP_y = tuple_temp_1 set tuple_temp_2 = 0.4 set tuple_temp_3 = 0.0 set Framehandle_SCREEN_BOTTOM_x = tuple_temp_2 set Framehandle_SCREEN_BOTTOM_y = tuple_temp_3 set Framehandle_BLZ_FRAMENAME_MAXLENGTH = 560 set receiver = createFrame("FRAME", "SetMousePositionCage", Framehandle_GAME_UI, null, 0) call framehandle_setSize(receiver, 0.0001, 0.0001) return true endfunction function init_Frentity takes nothing returns boolean set Frentity_DYNAMIC_Z = true set Frentity_KILL_ACTORS = false set Frentity_DISABLE_TEAMATTACK = false set Frentity_SHOW_SQUARE = false return true endfunction function init_Fx2Entity takes nothing returns boolean return true endfunction function init_FxEntity takes nothing returns boolean return true endfunction function init_GameConstants takes nothing returns boolean set GameConstants_MAP_VER = "EBR v0.92" set GameConstants_STAFF_PLAYER = Player_players[PLAYER_NEUTRAL_PASSIVE] set GameConstants_names[0] = "Frotty" set GameConstants_names[1] = "FrottyZ" set GameConstants_names[2] = "Feuerblume" set GameConstants_names[3] = "|cff9C94E6[Tester]" set GameConstants_names[4] = "jkkopp" set GameConstants_names[5] = "fortress_na-f" set GameConstants_names[6] = "Kornblume" set GameConstants_names[7] = "Gamestargamer" set GameConstants_names[8] = "gamestargamer" set GameConstants_names[9] = "mooniii" set GameConstants_names[10] = "Carlor01" set GameConstants_names[11] = "Mo0ni[behh]" set GameConstants_names[12] = "metactylic" set GameConstants_names[13] = "nore.abfl" set GameConstants_names[14] = "kleinerhauck" set GameConstants_names[15] = "kari0003" set GameConstants_names[16] = "Kagu" set GameConstants_names[17] = "pockpoong" set GameConstants_names[18] = "waterknight" set GameConstants_names[19] = "sayack" set GameConstants_tags[0] = "|cffEF6B21[A]" set GameConstants_tags[1] = "|cffEF6B21[A]" set GameConstants_tags[2] = "|cff9C94E6[Tester]" set GameConstants_tags[3] = "|cff9C94E6[Tester]" set GameConstants_tags[4] = "|cff9C94E6[Tester]" set GameConstants_tags[5] = "|cff9C94E6[Tester]" set GameConstants_tags[6] = "|cff9C94E6[Tester]" set GameConstants_tags[7] = "|cff9C94E6[Tester]" set GameConstants_tags[8] = "|cff9C94E6[Tester]" set GameConstants_tags[9] = "|cff9C94E6[Tester]" set GameConstants_tags[10] = "|cff9C94E6[Tester]" set GameConstants_tags[11] = "|cffB5DE42[Art]" set GameConstants_tags[12] = "|cff9C94E6[Tester]" set GameConstants_tags[13] = "|cff9C94E6[Tester]" set GameConstants_tags[14] = "|cffFFE87C[Adept]" set GameConstants_tags[15] = "|cff9C94E6[Tester]" set GameConstants_tags[16] = "|cff9C94E6[Tester]" set GameConstants_tags[17] = "|cffDE3121[Critter]" set GameConstants_tags[18] = "|cff9C94E6[Tester]" set GameConstants_expBounds[0] = 100 set GameConstants_expBounds[1] = 250 set GameConstants_expBounds[2] = 400 set GameConstants_expBounds[3] = 1250 set GameConstants_expBounds[4] = 2750 set GameConstants_expBounds[5] = 5000 set GameConstants_expBounds[6] = 9500 set GameConstants_expBounds[7] = 15500 set GameConstants_expBounds[8] = 20000 set GameConstants_expBounds[9] = 25000 set GameConstants_expBounds[10] = 40000 set GameConstants_expBounds[11] = 75000 set GameConstants_expBounds[12] = 150000 set GameConstants_expBounds[13] = 200000 set GameConstants_ranks[0] = "1:Newbie" set GameConstants_ranks[1] = "|cffBDBDBD2:Beginner" set GameConstants_ranks[2] = "|cffFFE6AD3:Novice" set GameConstants_ranks[3] = "|cffFFD64A4:Rookie" set GameConstants_ranks[4] = "|cffFFCE195:Superior" set GameConstants_ranks[5] = "|cffFFA53A6:Major" set GameConstants_ranks[6] = "7:Pro" set GameConstants_ranks[7] = "|cff5A8CDE8:Expert" set GameConstants_ranks[8] = "|cff087BD69:Craver" set GameConstants_ranks[9] = "|cffD6292110|r|cffB93339:|r|cff9C3D51A|r|cff7F4769d|r|cff625181d|r|cff455B99i|r|cff2865B1c|r|cff0B6FC9t|r" set GameConstants_ranks[10] = "|cffD629211|r|cffB743270|r|cff985D2D:|r|cff797733L|r|cff5A9139e|r|cff3BAB3Fg|r|cff26A182e|r|cff1C9BA2n|r|cff1295C2d|r" set GameConstants_ranks[11] = "|cffC563C512:K|r|cffD353ADo|r|cffE14395r|r|cffEF337De|r|cffFF3B43a|r|cffFF4833n|r" set GameConstants_ranks[12] = "|cff08B5FF13:B|r|cff16A5F4l|r|cff2495E9u|r|cff3285DEe|r|cff4075D3E|r|cff2E73CDy|r|cff1C7BD1e|r|cff0A83D5d|r" set GameConstants_ranks[13] = "|cff94949414: Amazing-|cff949CEF" return true endfunction function alloc_CallbackSingle_doAfter_GameInit takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 685 else call error("Out of memory: Could not create CallbackSingle_doAfter_GameInit.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 685 endif return this_1 endfunction function IdGenerator_isInvalid takes integer this_1, integer char_1 returns boolean return char_1 < 48 or (char_1 > 57 and char_1 < 97) endfunction function dispatch_IdGenerator_ObjectIdGenerator_IdGenerator_isInvalid takes integer this_1, integer char_1 returns boolean local boolean ObjectIdGenerator_IdGenerator_isInvalid_result if IdGenerator_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling IdGenerator.isInvalid") else call error("Called IdGenerator.isInvalid on invalid object.") endif endif set ObjectIdGenerator_IdGenerator_isInvalid_result = IdGenerator_isInvalid(this_1, char_1) return ObjectIdGenerator_IdGenerator_isInvalid_result endfunction function IdGenerator_next takes integer this_1 returns integer local integer id if IdGenerator_i1[this_1] < 126 then set IdGenerator_i1[this_1] = IdGenerator_i1[this_1] + 1 loop exitwhen not dispatch_IdGenerator_ObjectIdGenerator_IdGenerator_isInvalid(this_1, IdGenerator_i1[this_1]) set IdGenerator_i1[this_1] = IdGenerator_i1[this_1] + 1 endloop elseif IdGenerator_i2[this_1] < 126 then set IdGenerator_i1[this_1] = 33 set IdGenerator_i2[this_1] = IdGenerator_i2[this_1] + 1 loop exitwhen not dispatch_IdGenerator_ObjectIdGenerator_IdGenerator_isInvalid(this_1, IdGenerator_i2[this_1]) set IdGenerator_i2[this_1] = IdGenerator_i2[this_1] + 1 endloop elseif IdGenerator_i3[this_1] < 126 then set IdGenerator_i1[this_1] = 33 set IdGenerator_i2[this_1] = 33 set IdGenerator_i3[this_1] = IdGenerator_i3[this_1] + 1 loop exitwhen not dispatch_IdGenerator_ObjectIdGenerator_IdGenerator_isInvalid(this_1, IdGenerator_i3[this_1]) set IdGenerator_i3[this_1] = IdGenerator_i3[this_1] + 1 endloop elseif IdGenerator_i4[this_1] < 126 then set IdGenerator_i1[this_1] = 33 set IdGenerator_i2[this_1] = 33 set IdGenerator_i3[this_1] = 33 set IdGenerator_i4[this_1] = IdGenerator_i4[this_1] + 1 loop exitwhen not dispatch_IdGenerator_ObjectIdGenerator_IdGenerator_isInvalid(this_1, IdGenerator_i4[this_1]) set IdGenerator_i4[this_1] = IdGenerator_i4[this_1] + 1 endloop else call error("No vaild id left") return 0 endif set id = IdGenerator_i1[this_1] + IdGenerator_i2[this_1] * 256 + IdGenerator_i3[this_1] * 65536 + IdGenerator_i4[this_1] * 16777216 if not MagicFunctions_compiletime then call preloadAbility_1(id) endif return id endfunction function dispatch_IdGenerator_ObjectIdGenerator_IdGenerator_next takes integer this_1 returns integer local integer ObjectIdGenerator_IdGenerator_next_result if IdGenerator_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling IdGenerator.next") else call error("Called IdGenerator.next on invalid object.") endif endif set ObjectIdGenerator_IdGenerator_next_result = IdGenerator_next(this_1) return ObjectIdGenerator_IdGenerator_next_result endfunction function IdGenerator_onDestroy takes integer this_1 returns nothing endfunction function dealloc_IdGenerator takes integer obj_1 returns nothing if IdGenerator_typeId[obj_1] == 0 then call error("Double free: object of type IdGenerator") else set IdGenerator_nextFree[IdGenerator_firstFree] = obj_1 set IdGenerator_firstFree = IdGenerator_firstFree + 1 set IdGenerator_typeId[obj_1] = 0 endif endfunction function destroyIdGenerator takes integer this_1 returns nothing call IdGenerator_onDestroy(this_1) call dealloc_IdGenerator(this_1) endfunction function dispatch_IdGenerator_destroyIdGenerator takes integer this_1 returns nothing if IdGenerator_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling IdGenerator.IdGenerator") else call error("Called IdGenerator.IdGenerator on invalid object.") endif endif call destroyIdGenerator(this_1) endfunction function alloc_IdGenerator takes nothing returns integer local integer this_1 if IdGenerator_firstFree == 0 then if IdGenerator_maxIndex < JASS_MAX_ARRAY_SIZE then set IdGenerator_maxIndex = IdGenerator_maxIndex + 1 set this_1 = IdGenerator_maxIndex set IdGenerator_typeId[this_1] = 899 else call error("Out of memory: Could not create IdGenerator.") set this_1 = 0 endif else set IdGenerator_firstFree = IdGenerator_firstFree - 1 set this_1 = IdGenerator_nextFree[IdGenerator_firstFree] set IdGenerator_typeId[this_1] = 899 endif return this_1 endfunction function IdGenerator_init takes integer this_1 returns nothing endfunction function construct_IdGenerator takes integer this_1, integer start returns nothing call IdGenerator_init(this_1) set IdGenerator_i1[this_1] = ModuloInteger(start, 256) set IdGenerator_i2[this_1] = ModuloInteger(start, 65536) / 256 set IdGenerator_i3[this_1] = ModuloInteger(start, 16777216) / 65536 set IdGenerator_i4[this_1] = start / 16777216 endfunction function new_IdGenerator takes integer start returns integer local integer this_1 = alloc_IdGenerator() call construct_IdGenerator(this_1, start) return this_1 endfunction function preloadUnit_1 takes integer unitIds_0 returns boolean local boolean valid local unit u_1 if Preloader_dumg == null then call error("PreloadUnit: Group dumg does not exist") endif set valid = true set u_1 = createUnit(Basics_DUMMY_PLAYER, unitIds_0, 0., 0., 0.) call group_add_1(Preloader_dumg, u_1) set valid = valid and unit_isAlive(u_1) return valid endfunction function preload takes nothing returns nothing local integer abils = new_IdGenerator(1095577648) local integer units loop exitwhen not preloadAbility_1(dispatch_IdGenerator_ObjectIdGenerator_IdGenerator_next(abils)) endloop call dispatch_IdGenerator_destroyIdGenerator(abils) set units = new_IdGenerator(2016423984) loop exitwhen not preloadUnit_1(dispatch_IdGenerator_ObjectIdGenerator_IdGenerator_next(units)) endloop call dispatch_IdGenerator_destroyIdGenerator(units) endfunction function startEntityLoop takes nothing returns boolean call timer_startPeriodic(getTimer(), Basics_ANIMATION_PERIOD, ref_function_updateActiveEntities) call timer_startPeriodic(getTimer(), Buff_BUFF_ANIM_PERIOD, ref_function_updateBuffs) call timer_startPeriodic(getTimer(), 1.0, ref_function_updateInactiveEntities) call onUnitDeindex(ref_function_code__onUnitDeindex_EntityManagement) return true endfunction function init_GameInit takes nothing returns boolean local integer clVar call preload() call startEntityLoop() set clVar = alloc_CallbackSingle_doAfter_GameInit() call construct_CallbackSingle(clVar) call doAfter(0.01, clVar) return true endfunction function init_GameStatus takes nothing returns boolean local player firstPlayer local unit u_1 local boolean selected set GameStatus_gameStatus = 0 set firstPlayer = Player(0) loop exitwhen not not player_isIngame(firstPlayer) set firstPlayer = Player(player_getId(firstPlayer) + 1) endloop set u_1 = CreateUnit(firstPlayer, 1751543663, 0., 0., 0.) call SelectUnit(u_1, true) set selected = IsUnitSelected(u_1, firstPlayer) call RemoveUnit(u_1) if selected then if ReloadGameCachesFromDisk() then set GameStatus_gameStatus = 2 else set GameStatus_gameStatus = 3 endif else set GameStatus_gameStatus = 1 endif return true endfunction function init_GameTimer takes nothing returns boolean local timer receiver = CreateTimer() call timer_start(receiver, 100000., null) set GameTimer_gameTimer = receiver call timer_startPeriodic(CreateTimer(), Basics_ANIMATION_PERIOD, ref_function_code__startPeriodic_GameTimer) return true endfunction function alloc_GlobalShop takes nothing returns integer local integer this_1 if GlobalShop_firstFree == 0 then if GlobalShop_maxIndex < JASS_MAX_ARRAY_SIZE then set GlobalShop_maxIndex = GlobalShop_maxIndex + 1 set this_1 = GlobalShop_maxIndex else call error("Out of memory: Could not create GlobalShop.") set this_1 = 0 endif else set GlobalShop_firstFree = GlobalShop_firstFree - 1 set this_1 = GlobalShop_nextFree[GlobalShop_firstFree] endif return this_1 endfunction function GlobalShop_init takes integer this_1 returns nothing endfunction function construct_GlobalShop takes integer this_1, real x, real y, player owner returns nothing call GlobalShop_init(this_1) call CreateUnit(owner, GlobalShop_GOODS_STORE_ID, x, y, 270.) endfunction function new_GlobalShop takes real x, real y, player owner returns integer local integer this_1 = alloc_GlobalShop() call construct_GlobalShop(this_1, x, y, owner) return this_1 endfunction function init_GlobalShop takes nothing returns boolean set GlobalShop_GOODS_STORE_ID = 2016424060 call new_GlobalShop(-6630., -6150., GameConstants_STAFF_PLAYER) return true endfunction function init_Group takes nothing returns boolean set Group_ENUM_GROUP = CreateGroup() return true endfunction function alloc_ForForceCallback_execute_GroupUtils takes nothing returns integer local integer this_1 if ForForceCallback_firstFree == 0 then if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1 set this_1 = ForForceCallback_maxIndex set ForForceCallback_typeId[this_1] = 841 else call error("Out of memory: Could not create ForForceCallback_execute_GroupUtils.") set this_1 = 0 endif else set ForForceCallback_firstFree = ForForceCallback_firstFree - 1 set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree] set ForForceCallback_typeId[this_1] = 841 endif return this_1 endfunction function max_2 takes integer numbers_0, integer numbers_1 returns integer local integer maxNumber = Integer_INT_MIN local integer cond_result if numbers_0 > maxNumber then set cond_result = numbers_0 else set cond_result = maxNumber endif set maxNumber = cond_result if numbers_1 > maxNumber then set cond_result = numbers_1 else set cond_result = maxNumber endif set maxNumber = cond_result return maxNumber endfunction function createGroups takes integer number returns nothing local integer maxCreatePerCycle = 256 local integer actualLimit = max_2(JASS_MAX_ARRAY_SIZE - 1, GroupUtils_GROUP_NUMBER_LIMIT) local integer numTarget = GroupUtils_numTotal + number local integer overflow = max_2(0, numTarget - actualLimit) local integer toCreate = max_2(0, numTarget - overflow) local integer createNow_1 local integer clVar loop exitwhen not (toCreate > 0) set createNow_1 = min_2(toCreate, maxCreatePerCycle) set toCreate = toCreate - createNow_1 set clVar = alloc_ForForceCallback_execute_GroupUtils() set createNow[clVar] = createNow_1 call execute(clVar) endloop if GroupUtils_numTotal >= GroupUtils_GROUP_NUMBER_LIMIT and ( not GroupUtils_shownMaxError) then call Log_warn("Maximum number of GroupUtils groups (" + int_toString(GroupUtils_GROUP_NUMBER_LIMIT) + ") created. " + "All newly created groups will be non-recyclable.") set GroupUtils_shownMaxError = true endif endfunction function initialize takes nothing returns nothing call createGroups(GroupUtils_START_CREATE_GROUPS) endfunction function init_GroupUtils takes nothing returns boolean set GroupUtils_GROUP_NUMBER_LIMIT = 1024 set GroupUtils_START_CREATE_GROUPS = 64 set GroupUtils_used = new_HashMap() set GroupUtils_numStack = 0 set GroupUtils_numTotal = 0 set GroupUtils_shownMaxError = false call initialize() return true endfunction function init_HashList takes nothing returns boolean set HashList_ht = hashtable_compiletime_2517 set HashList_occurences = hashtable_compiletime_2518 return true endfunction function init_HashSet takes nothing returns boolean set HashSet_position = hashtable_compiletime_2520 return true endfunction function alloc_ForForceCallback_execute_Heightmap takes nothing returns integer local integer this_1 if ForForceCallback_firstFree == 0 then if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1 set this_1 = ForForceCallback_maxIndex set ForForceCallback_typeId[this_1] = 842 else call error("Out of memory: Could not create ForForceCallback_execute_Heightmap.") set this_1 = 0 endif else set ForForceCallback_firstFree = ForForceCallback_firstFree - 1 set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree] set ForForceCallback_typeId[this_1] = 842 endif return this_1 endfunction function alloc_ForForceCallback_execute_Heightmap_1763 takes nothing returns integer local integer this_1 if ForForceCallback_firstFree == 0 then if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1 set this_1 = ForForceCallback_maxIndex set ForForceCallback_typeId[this_1] = 843 else call error("Out of memory: Could not create ForForceCallback_execute_Heightmap.") set this_1 = 0 endif else set ForForceCallback_firstFree = ForForceCallback_firstFree - 1 set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree] set ForForceCallback_typeId[this_1] = 843 endif return this_1 endfunction function Reference_onDestroy takes integer this_1 returns nothing endfunction function dealloc_Reference_integer_u takes integer obj_1 returns nothing if Reference_integer__typeId[obj_1] == 0 then call error("Double free: object of type Reference⟪integer⟫") else set Reference_integer__nextFree[Reference_integer__firstFree] = obj_1 set Reference_integer__firstFree = Reference_integer__firstFree + 1 set Reference_integer__typeId[obj_1] = 0 endif endfunction function destroyReference_integer_u takes integer this_1 returns nothing call Reference_onDestroy(this_1) call dealloc_Reference_integer_u(this_1) endfunction function dispatch_Reference_integer__destroyReference_integer_u takes integer this_1 returns nothing if Reference_integer__typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Reference⟪integer⟫.Reference") else call error("Called Reference⟪integer⟫.Reference on invalid object.") endif endif call destroyReference_integer_u(this_1) endfunction function alloc_Reference_integer_u takes nothing returns integer local integer this_1 if Reference_integer__firstFree == 0 then if Reference_integer__maxIndex < JASS_MAX_ARRAY_SIZE then set Reference_integer__maxIndex = Reference_integer__maxIndex + 1 set this_1 = Reference_integer__maxIndex set Reference_integer__typeId[this_1] = 1109 else call error("Out of memory: Could not create Reference⟪integer⟫.") set this_1 = 0 endif else set Reference_integer__firstFree = Reference_integer__firstFree - 1 set this_1 = Reference_integer__nextFree[Reference_integer__firstFree] set Reference_integer__typeId[this_1] = 1109 endif return this_1 endfunction function Reference_init_integer_u takes integer this_1 returns nothing endfunction function construct_Reference_integer_u takes integer this_1, integer wval returns nothing call Reference_init_integer_u(this_1) set Reference_val[this_1] = wval endfunction function new_Reference_integer_u takes integer wval returns integer local integer this_1 = alloc_Reference_integer_u() call construct_Reference_integer_u(this_1, wval) return this_1 endfunction function init_Heightmap takes nothing returns boolean local integer zMap_1 = new_HashMap() local integer xRef_1 = new_Reference_integer_u(0) local integer clVar local integer clVar_1 loop exitwhen not (Reference_val[xRef_1] < TerrainUtils_TILES_X) set clVar = alloc_ForForceCallback_execute_Heightmap() set xRef[clVar] = xRef_1 set zMap[clVar] = zMap_1 call execute(clVar) endloop set Reference_val[xRef_1] = 0 loop exitwhen not (Reference_val[xRef_1] < TerrainUtils_TILES_X) set clVar_1 = alloc_ForForceCallback_execute_Heightmap_1763() set xRef_3153[clVar_1] = xRef_1 set zMap_3157[clVar_1] = zMap_1 call execute(clVar_1) endloop call dispatch_HashMap_destroyHashMap(zMap_1) call dispatch_Reference_integer__destroyReference_integer_u(xRef_1) return true endfunction function init_Icons takes nothing returns boolean set Icons_bTNAnkh = "ReplaceableTextures\\CommandButtons\\BTNAnkh.blp" set Icons_bTNHuntress = "ReplaceableTextures\\CommandButtons\\BTNHuntress.blp" set Icons_bTNSelectHeroOn = "ReplaceableTextures\\CommandButtons\\BTNSelectHeroOn.blp" return true endfunction function init_InstantBuild takes nothing returns boolean call Log_debug("init buildords") set InstantBuild_buildorders[SerializeIds_JUMPER_INDEX] = BuilderConstants_JUMPER_ID set InstantBuild_buildorders[SerializeIds_REVIVE_INDEX] = BuilderConstants_REVIVE_POINT_ID set InstantBuild_buildorders[SerializeIds_TEXTER_INDEX] = BuilderConstants_TEXTER_ID set InstantBuild_buildorders[SerializeIds_BOMBTOWER_INDEX] = BuilderConstants_BOMB_TOWER_ID set InstantBuild_buildorders[SerializeIds_VORTEX_INDEX] = BuilderConstants_VORTEX_ID set InstantBuild_buildorders[SerializeIds_EXECUTER_INDEX] = BuilderConstants_EXECUTER_ID set InstantBuild_buildorders[SerializeIds_BOOSTER_INDEX] = BuilderConstants_BOOSTER_ID set InstantBuild_buildorders[SerializeIds_UNITREMOVER_INDEX] = BuilderConstants_UNIT_REMOVER_ID set InstantBuild_buildorders[SerializeIds_WAYPOINT_INDEX] = BuilderConstants_WAYPOINT_ID set InstantBuild_buildorders[SerializeIds_TELEPORTER_INDEX] = BuilderConstants_TELEPORTER_ID set InstantBuild_buildorders[SerializeIds_DOOR_INDEX] = BuilderConstants_DOORDUMMY_ID set InstantBuild_buildorders[SerializeIds_SMALLOBS_INDEX] = BuilderConstants_SOBS_DUMMY_ID set InstantBuild_buildorders[SerializeIds_BIGOBS_INDEX] = BuilderConstants_BOBS_DUMMY_ID set InstantBuild_buildorders[SerializeIds_HIGH_OBS_INDEX] = BuilderConstants_HOBS_DUMMY_ID set InstantBuild_buildorders[SerializeIds_TREE_INDEX] = BuilderConstants_TREE_DUMMY_ID set InstantBuild_buildorders[SerializeIds_SPINNER_INDEX] = BuilderConstants_SPINNER_ID set InstantBuild_buildorders[SerializeIds_UNITCREATOR_INDEX] = BuilderConstants_UNIT_CREATOR_ID set InstantBuild_buildorders[SerializeIds_TRACKS_INDEX] = BuilderConstants_BUILD_TRACKS_ID set InstantBuild_buildorders[SerializeIds_FOUNTAIN_INDEX] = BuilderConstants_FOUNTAIN_BOTH_ID set InstantBuild_buildorders[SerializeIds_POWERNODE_INDEX] = BuilderConstants_POWER_NODE_ID set InstantBuild_buildorders[SerializeIds_TRAP_INDEX] = BuilderConstants_TRAP_ID set InstantBuild_buildorders[SerializeIds_CONGA_INDEX] = BuilderConstants_CONGA_LINE_HEAD_ID set InstantBuild_buildorders[SerializeIds_TBLOCKER_INDEX] = BuilderConstants_TC_BLOCKER_ID set InstantBuild_buildorders[SerializeIds_VOLCANO_INDEX] = BuilderConstants_VOLCANO_ID set InstantBuild_buildorders[SerializeIds_WALL_INDEX] = BuilderConstants_WALL_ID set InstantBuild_buildorders[SerializeIds_HWALL_INDEX] = BuilderConstants_HOR_WALL_ID set InstantBuild_buildorders[SerializeIds_VWALL_INDEX] = BuilderConstants_VER_WALL_ID set InstantBuild_buildorders[SerializeIds_ARCANERY_INDEX] = BuilderConstants_ARCANERY_ID set InstantBuild_buildorders[SerializeIds_SMALLKILL_INDEX] = 1093678411 set InstantBuild_buildorders[SerializeIds_BIGKILL_INDEX] = 1093678406 set InstantBuild_buildorders[SerializeIds_BOMBER_INDEX] = 1093678415 set InstantBuild_buildorders[SerializeIds_KEY_INDEX] = 1848651826 set InstantBuild_buildorders[SerializeIds_BIGRANDKILL_INDEX] = 1093678407 set InstantBuild_buildorders[SerializeIds_SMALLRANDKILL_INDEX] = 1093678410 set InstantBuild_buildorders[SerializeIds_TANKKILL_INDEX] = 1093678413 set InstantBuild_buildorders[SerializeIds_GLAIVEKILL_INDEX] = 1093678408 set InstantBuild_buildorders[SerializeIds_AIRKILL_INDEX] = 1093678937 set InstantBuild_buildorders[SerializeIds_FIREKILL_INDEX] = 1097232997 set InstantBuild_buildorders[SerializeIds_FACELESS_INDEX] = 1093678933 set InstantBuild_buildorders[SerializeIds_KNOCKBACKER_INDEX] = 1093678915 set InstantBuild_buildorders[SerializeIds_POINTER_INDEX] = 1093678409 set InstantBuild_buildorders[SerializeIds_OBJ_TARGET_INDEX] = 1093678414 set InstantBuild_buildorders[SerializeIds_TC_INDEX] = 1093678412 set InstantBuild_buildorders[139] = 1718969195 set InstantBuild_buildorders[140] = BuilderConstants_POST_LANTERN_ID set InstantBuild_buildorders[141] = BuilderConstants_MUSHROOM_ID set InstantBuild_buildorders[142] = BuilderConstants_TORCH_ID set InstantBuild_buildorders[143] = BuilderConstants_RUNE_ID set InstantBuild_buildorders[144] = BuilderConstants_SUPERLIGHT_ID set InstantBuild_buildorders[145] = BuilderConstants_LANTERN_ID set InstantBuild_buildorders[146] = BuilderConstants_FARM_ID set InstantBuild_buildorders[147] = BuilderConstants_ICE_CRYSTAL_ID set InstantBuild_buildorders[148] = BuilderConstants_OBELISK_ID set InstantBuild_buildorders[149] = BuilderConstants_POISON_EGGS_ID set InstantBuild_buildorders[150] = BuilderConstants_REMAINS_ID set InstantBuild_buildorders[151] = BuilderConstants_PED_ID set InstantBuild_buildorders[32] = 1 return true endfunction function init_InstantDummyCaster takes nothing returns boolean local unit receiver local unit receiver_1 local unit receiver_2 local unit receiver_3 local unit receiver_4 set InstantDummyCaster_DUMMY_CASTER_UNIT_ID = 2016424053 set InstantDummyCaster_DUMMY_ROOT_ABIL_ID = 1095577977 set receiver = createUnit(Basics_DUMMY_PLAYER, InstantDummyCaster_DUMMY_CASTER_UNIT_ID, MapBounds_boundMax_x, MapBounds_boundMax_y, 0.) call unit_setPathing(receiver, false) set receiver_1 = receiver call unit_addAbility(receiver_1, Basics_HEIGHT_ENABLER) set receiver_2 = receiver_1 call unit_removeAbility(receiver_2, Basics_HEIGHT_ENABLER) set receiver_3 = receiver_2 call unit_addAbility(receiver_3, InstantDummyCaster_DUMMY_ROOT_ABIL_ID) set receiver_4 = receiver_3 call unit_removeAbility(receiver_4, InstantDummyCaster_DUMMY_ROOT_ABIL_ID) set InstantDummyCaster_caster = receiver_4 return true endfunction function init_Integer takes nothing returns boolean set Integer_INT_MAX = 2147483647 set Integer_INT_MIN = -2147483648 return true endfunction function alloc_EventListener_add_Invisible takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 792 else call error("Out of memory: Could not create EventListener_add_Invisible.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 792 endif return this_1 endfunction function init_Invisible takes nothing returns boolean local playerunitevent temp = EVENT_PLAYER_UNIT_SPELL_CAST local integer clVar = alloc_EventListener_add_Invisible() call construct_EventListener(clVar) call EventListener_add(temp, clVar) return true endfunction function init_ItemIds takes nothing returns boolean return true endfunction function alloc_Delimiter takes nothing returns integer local integer this_1 if Delimiter_firstFree == 0 then if Delimiter_maxIndex < JASS_MAX_ARRAY_SIZE then set Delimiter_maxIndex = Delimiter_maxIndex + 1 set this_1 = Delimiter_maxIndex else call error("Out of memory: Could not create Delimiter.") set this_1 = 0 endif else set Delimiter_firstFree = Delimiter_firstFree - 1 set this_1 = Delimiter_nextFree[Delimiter_firstFree] endif return this_1 endfunction function Delimiter_init takes integer this_1 returns nothing endfunction function construct_Delimiter takes integer this_1, string token returns nothing call Delimiter_init(this_1) set Delimiter_token[this_1] = token call string_length(token) endfunction function new_Delimiter takes string token returns integer local integer this_1 = alloc_Delimiter() call construct_Delimiter(this_1, token) return this_1 endfunction function init_Json takes nothing returns boolean call new_Delimiter("=") set Json_JSON_SIGN_COMMA = new_Delimiter("_") call new_Delimiter("(") call new_Delimiter(")") set Json_JSON_OPEN_ARRAY = new_Delimiter("[") set Json_JSON_CLOSE_ARRAY = new_Delimiter("]") call new_Delimiter("J") return true endfunction function init_JsonParser takes nothing returns boolean set JsonParser_numbermap = "-0123456789" set JsonParser_lettermap = "abcdefghijklmnopqrstuvwxyz" return true endfunction function alloc_CallbackSingle_doAfter_JukeBox takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 689 else call error("Out of memory: Could not create CallbackSingle_doAfter_JukeBox.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 689 endif return this_1 endfunction function init_JukeBox takes nothing returns boolean local integer clVar set JukeBox_musics = new_LinkedList() set clVar = alloc_CallbackSingle_doAfter_JukeBox() call construct_CallbackSingle(clVar) call doAfter(0.1, clVar) return true endfunction function init_Jumper takes nothing returns boolean set Jumper_DECREASE_FORCE_ID = 1095578222 set Jumper_INCREASE_FORCE_ID = 1095578223 set Jumper_MODE_FORCED_ID = 1095578224 set Jumper_MODE_UNFORCED_ID = 1095578225 set Jumper_EFFECT_STRING = "Abilities\\Spells\\Human\\FlakCannons\\FlakTarget.mdl" set Jumper_SPECIAL_ID = 1093678927 set Jumper_snd = new_SoundDefinition("Units\\Human\\Priest\\PriestPissed3.wav", false) return true endfunction function init_Key takes nothing returns boolean set Key_KEY_DUMMY_ID = 2016424039 set Key_keyIds[0] = 1227894841 set Key_keyIds[1] = 1227894851 set Key_keyIds[2] = 1227894836 set Key_keyIds[3] = 1227894840 set Key_keyIds[4] = 1227894858 set Key_keyIds[5] = 1227894837 set Key_keyIds[6] = 1227894863 set Key_keyIds[7] = 1227894850 set Key_keyIds[8] = 1227894838 set Key_DYN_ID = 1093677133 set Key_STATIC_ID = 1093677391 set Key_INFINITE_ID = 1095577706 set Key_KEY_COLOR = "c" return true endfunction function alloc_EventListener_add_KeyUtils takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 793 else call error("Out of memory: Could not create EventListener_add_KeyUtils.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 793 endif return this_1 endfunction function alloc_EventListener_add_KeyUtils_1710 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 794 else call error("Out of memory: Could not create EventListener_add_KeyUtils.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 794 endif return this_1 endfunction function alloc_EventListener_add_KeyUtils_1711 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 795 else call error("Out of memory: Could not create EventListener_add_KeyUtils.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 795 endif return this_1 endfunction function alloc_EventListener_add_KeyUtils_1712 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 796 else call error("Out of memory: Could not create EventListener_add_KeyUtils.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 796 endif return this_1 endfunction function alloc_EventListener_add_KeyUtils_1713 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 797 else call error("Out of memory: Could not create EventListener_add_KeyUtils.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 797 endif return this_1 endfunction function alloc_EventListener_add_KeyUtils_1714 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 798 else call error("Out of memory: Could not create EventListener_add_KeyUtils.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 798 endif return this_1 endfunction function alloc_EventListener_add_KeyUtils_1715 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 799 else call error("Out of memory: Could not create EventListener_add_KeyUtils.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 799 endif return this_1 endfunction function alloc_EventListener_add_KeyUtils_1716 takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 800 else call error("Out of memory: Could not create EventListener_add_KeyUtils.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 800 endif return this_1 endfunction function init_KeyUtils takes nothing returns boolean local integer i local integer clVar local integer clVar_1 local integer clVar_2 local integer clVar_3 local integer clVar_4 local integer clVar_5 local integer clVar_6 local integer clVar_7 local playerevent temp local playerevent temp_1 local playerevent temp_2 local playerevent temp_3 local playerevent temp_4 local playerevent temp_5 local playerevent temp_6 local playerevent temp_7 local boolean tuple_temp local boolean tuple_temp_1 local boolean tuple_temp_2 local boolean tuple_temp_3 set KeyUtils_firstKeyListener = 0 set i = 0 loop exitwhen i > 11 set tuple_temp = false set tuple_temp_1 = false set tuple_temp_2 = false set tuple_temp_3 = false set KeyUtils_keyStatuses_up[i] = tuple_temp set KeyUtils_keyStatuses_down[i] = tuple_temp_1 set KeyUtils_keyStatuses_left[i] = tuple_temp_2 set KeyUtils_keyStatuses_right[i] = tuple_temp_3 set i = i + 1 endloop set temp = EVENT_PLAYER_ARROW_DOWN_DOWN set clVar = alloc_EventListener_add_KeyUtils() call construct_EventListener(clVar) call EventListener_add(temp, clVar) set temp_1 = EVENT_PLAYER_ARROW_DOWN_UP set clVar_1 = alloc_EventListener_add_KeyUtils_1710() call construct_EventListener(clVar_1) call EventListener_add(temp_1, clVar_1) set temp_2 = EVENT_PLAYER_ARROW_UP_DOWN set clVar_2 = alloc_EventListener_add_KeyUtils_1711() call construct_EventListener(clVar_2) call EventListener_add(temp_2, clVar_2) set temp_3 = EVENT_PLAYER_ARROW_UP_UP set clVar_3 = alloc_EventListener_add_KeyUtils_1712() call construct_EventListener(clVar_3) call EventListener_add(temp_3, clVar_3) set temp_4 = EVENT_PLAYER_ARROW_LEFT_DOWN set clVar_4 = alloc_EventListener_add_KeyUtils_1713() call construct_EventListener(clVar_4) call EventListener_add(temp_4, clVar_4) set temp_5 = EVENT_PLAYER_ARROW_LEFT_UP set clVar_5 = alloc_EventListener_add_KeyUtils_1714() call construct_EventListener(clVar_5) call EventListener_add(temp_5, clVar_5) set temp_6 = EVENT_PLAYER_ARROW_RIGHT_DOWN set clVar_6 = alloc_EventListener_add_KeyUtils_1715() call construct_EventListener(clVar_6) call EventListener_add(temp_6, clVar_6) set temp_7 = EVENT_PLAYER_ARROW_RIGHT_UP set clVar_7 = alloc_EventListener_add_KeyUtils_1716() call construct_EventListener(clVar_7) call EventListener_add(temp_7, clVar_7) return true endfunction function init_Knockbacker takes nothing returns boolean set Knockbacker_KNOCKBACKER_ID = 1802396523 set Knockbacker_KNOCK_INC_ID = 1095577719 set Knockbacker_KNOCK_DEC_ID = 1095577720 set Knockbacker_DMG_INC_ID = 1095577721 set Knockbacker_DMG_DEC_ID = 1095577722 return true endfunction function init_LZW takes nothing returns boolean set LZW_maxDictSize = 5000 set LZW_DICT_INIT = "_0123456789abcdefghijklmnopqrstuvwxyz-[]" set LZW_ALLOWED_PLAYER_CHARS = "0aUb1GLwR2kHvP3CQIM4npFs5iSW6tzAr7TNxo8JXVjy9OcdEfBKgqeuYDhmlZ" set LZW_dictionary = new_HashMap() set LZW_dictSize = 0 return true endfunction function init_Lightning takes nothing returns boolean return true endfunction function alloc_Comparator_LinkedList takes nothing returns integer local integer this_1 if Comparator_firstFree == 0 then if Comparator_maxIndex < JASS_MAX_ARRAY_SIZE then set Comparator_maxIndex = Comparator_maxIndex + 1 set this_1 = Comparator_maxIndex else call error("Out of memory: Could not create Comparator_LinkedList.") set this_1 = 0 endif else set Comparator_firstFree = Comparator_firstFree - 1 set this_1 = Comparator_nextFree[Comparator_firstFree] endif return this_1 endfunction function alloc_Comparator_LinkedList_1650 takes nothing returns integer local integer this_1 if Comparator_firstFree == 0 then if Comparator_maxIndex < JASS_MAX_ARRAY_SIZE then set Comparator_maxIndex = Comparator_maxIndex + 1 set this_1 = Comparator_maxIndex else call error("Out of memory: Could not create Comparator_LinkedList.") set this_1 = 0 endif else set Comparator_firstFree = Comparator_firstFree - 1 set this_1 = Comparator_nextFree[Comparator_firstFree] endif return this_1 endfunction function alloc_Comparator_LinkedList_1651 takes nothing returns integer local integer this_1 if Comparator_firstFree == 0 then if Comparator_maxIndex < JASS_MAX_ARRAY_SIZE then set Comparator_maxIndex = Comparator_maxIndex + 1 set this_1 = Comparator_maxIndex else call error("Out of memory: Could not create Comparator_LinkedList.") set this_1 = 0 endif else set Comparator_firstFree = Comparator_firstFree - 1 set this_1 = Comparator_nextFree[Comparator_firstFree] endif return this_1 endfunction function init_LinkedList takes nothing returns boolean call alloc_Comparator_LinkedList() call alloc_Comparator_LinkedList_1650() call alloc_Comparator_LinkedList_1651() call realToIndex(0.) return true endfunction function init_LobbyTeleporter takes nothing returns boolean set LobbyTeleporter_EFFECT_STRING = "Abilities\\Spells\\NightElf\\Blink\\BlinkCaster.mdl" set LobbyTeleporter_ESC_ID = 1093677113 set LobbyTeleporter_EVENT_RADIUS = 38. return true endfunction function alloc_MGAgar takes nothing returns integer local integer this_1 if Minigame_firstFree == 0 then if Minigame_maxIndex < JASS_MAX_ARRAY_SIZE then set Minigame_maxIndex = Minigame_maxIndex + 1 set this_1 = Minigame_maxIndex set Minigame_typeId[this_1] = 1011 else call error("Out of memory: Could not create MGAgar.") set this_1 = 0 endif else set Minigame_firstFree = Minigame_firstFree - 1 set this_1 = Minigame_nextFree[Minigame_firstFree] set Minigame_typeId[this_1] = 1011 endif return this_1 endfunction function MGAgar_init takes integer this_1 returns nothing set MGAgar_cbs[this_1] = 0 set MGAgar_flist[this_1] = new_LinkedList() endfunction function Minigame_init takes integer this_1 returns nothing endfunction function construct_Minigame takes integer this_1 returns nothing call Minigame_init(this_1) endfunction function construct_MGAgar takes integer this_1 returns nothing call construct_Minigame(this_1) call MGAgar_init(this_1) endfunction function new_MGAgar takes nothing returns integer local integer this_1 = alloc_MGAgar() call construct_MGAgar(this_1) return this_1 endfunction function init_MGAgar takes nothing returns boolean local real tuple_temp = 640. local real tuple_temp_1 = 7550. set MGAgar_RIGHT_SPOT_x = tuple_temp set MGAgar_RIGHT_SPOT_y = tuple_temp_1 set MGAgar_map = new_HashMap() call dispatch_LinkedList_LinkedList_LinkedList_add_1(Minigame_minigames, new_MGAgar()) return true endfunction function alloc_MGRandKill takes nothing returns integer local integer this_1 if Minigame_firstFree == 0 then if Minigame_maxIndex < JASS_MAX_ARRAY_SIZE then set Minigame_maxIndex = Minigame_maxIndex + 1 set this_1 = Minigame_maxIndex set Minigame_typeId[this_1] = 1012 else call error("Out of memory: Could not create MGRandKill.") set this_1 = 0 endif else set Minigame_firstFree = Minigame_firstFree - 1 set this_1 = Minigame_nextFree[Minigame_firstFree] set Minigame_typeId[this_1] = 1012 endif return this_1 endfunction function MGRandKill_init takes integer this_1 returns nothing set MGRandKill_chickenTimer[this_1] = 0 set MGRandKill_bunnyTimer[this_1] = 0 set MGRandKill_coinTimer[this_1] = 0 endfunction function construct_MGRandKill takes integer this_1 returns nothing call construct_Minigame(this_1) call MGRandKill_init(this_1) endfunction function new_MGRandKill takes nothing returns integer local integer this_1 = alloc_MGRandKill() call construct_MGRandKill(this_1) return this_1 endfunction function init_MGRandKill takes nothing returns boolean call dispatch_LinkedList_LinkedList_LinkedList_add_1(Minigame_minigames, new_MGRandKill()) return true endfunction function alloc_MGSlide takes nothing returns integer local integer this_1 if Minigame_firstFree == 0 then if Minigame_maxIndex < JASS_MAX_ARRAY_SIZE then set Minigame_maxIndex = Minigame_maxIndex + 1 set this_1 = Minigame_maxIndex set Minigame_typeId[this_1] = 1013 else call error("Out of memory: Could not create MGSlide.") set this_1 = 0 endif else set Minigame_firstFree = Minigame_firstFree - 1 set this_1 = Minigame_nextFree[Minigame_firstFree] set Minigame_typeId[this_1] = 1013 endif return this_1 endfunction function MGSlide_init takes integer this_1 returns nothing set MGSlide_goRight[this_1] = true set MGSlide_bcount[this_1] = 0 endfunction function construct_MGSlide takes integer this_1 returns nothing call construct_Minigame(this_1) call MGSlide_init(this_1) endfunction function new_MGSlide takes nothing returns integer local integer this_1 = alloc_MGSlide() call construct_MGSlide(this_1) return this_1 endfunction function init_MGSlide takes nothing returns boolean local real tuple_temp = -1540. local real tuple_temp_1 = 7550. local real tuple_temp_2 local real tuple_temp_3 set MGSlide_LEFT_SPOT_x = tuple_temp set MGSlide_LEFT_SPOT_y = tuple_temp_1 set tuple_temp_2 = 640. set tuple_temp_3 = 7550. set MGSlide_RIGHT_SPOT_x = tuple_temp_2 set MGSlide_RIGHT_SPOT_y = tuple_temp_3 call dispatch_LinkedList_LinkedList_LinkedList_add_1(Minigame_minigames, new_MGSlide()) return true endfunction function alloc_MGSpacey takes nothing returns integer local integer this_1 if Minigame_firstFree == 0 then if Minigame_maxIndex < JASS_MAX_ARRAY_SIZE then set Minigame_maxIndex = Minigame_maxIndex + 1 set this_1 = Minigame_maxIndex set Minigame_typeId[this_1] = 1014 else call error("Out of memory: Could not create MGSpacey.") set this_1 = 0 endif else set Minigame_firstFree = Minigame_firstFree - 1 set this_1 = Minigame_nextFree[Minigame_firstFree] set Minigame_typeId[this_1] = 1014 endif return this_1 endfunction function MGSpacey_init takes integer this_1 returns nothing endfunction function construct_MGSpacey takes integer this_1 returns nothing call construct_Minigame(this_1) call MGSpacey_init(this_1) endfunction function new_MGSpacey takes nothing returns integer local integer this_1 = alloc_MGSpacey() call construct_MGSpacey(this_1) return this_1 endfunction function init_MGSpacey takes nothing returns boolean local real tuple_temp = -2700. local real tuple_temp_1 = 7500. set MGSpacey_ARENA_POS_x = tuple_temp set MGSpacey_ARENA_POS_y = tuple_temp_1 set MGSpacey_ships = new_LinkedList() set MGSpacey_rocks = new_LinkedList() set MGSpacey_minigame = new_MGSpacey() call dispatch_LinkedList_LinkedList_LinkedList_add_1(Minigame_minigames, MGSpacey_minigame) set MGSpacey_SHIP_ID = 2016424049 return true endfunction function alloc_MGWarlock takes nothing returns integer local integer this_1 if Minigame_firstFree == 0 then if Minigame_maxIndex < JASS_MAX_ARRAY_SIZE then set Minigame_maxIndex = Minigame_maxIndex + 1 set this_1 = Minigame_maxIndex set Minigame_typeId[this_1] = 1015 else call error("Out of memory: Could not create MGWarlock.") set this_1 = 0 endif else set Minigame_firstFree = Minigame_firstFree - 1 set this_1 = Minigame_nextFree[Minigame_firstFree] set Minigame_typeId[this_1] = 1015 endif return this_1 endfunction function MGWarlock_init takes integer this_1 returns nothing endfunction function construct_MGWarlock takes integer this_1 returns nothing call construct_Minigame(this_1) call MGWarlock_init(this_1) endfunction function new_MGWarlock takes nothing returns integer local integer this_1 = alloc_MGWarlock() call construct_MGWarlock(this_1) return this_1 endfunction function init_MGWarlock takes nothing returns boolean local real tuple_temp = 3200. local real tuple_temp_1 = 7500. set MGWarlock_ARENA_POS_x = tuple_temp set MGWarlock_ARENA_POS_y = tuple_temp_1 set MGWarlock_warlocks = new_LinkedList() set MGWarlock_minigame = new_MGWarlock() call dispatch_LinkedList_LinkedList_LinkedList_add_1(Minigame_minigames, MGWarlock_minigame) set MGWarlock_WARLOCK_ID = 2016424050 set MGWarlock_FIREBALL_ID = 1095577975 return true endfunction function init_MagicFunctions takes nothing returns boolean set MagicFunctions_compiletime = false return true endfunction function initMapBounds takes nothing returns nothing local rect cond_result local region receiver local rect cond_result_1 local region receiver_1 local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 local real tuple_temp_7 if MagicFunctions_compiletime then set cond_result = Rect(-1024., -1024., 1024., 1024.) else set cond_result = GetPlayableMapRect() endif set MapBounds_playableMapRect = cond_result set receiver = CreateRegion() call region_addRect(receiver, MapBounds_playableMapRect) if MagicFunctions_compiletime then set cond_result_1 = Rect(-1536., -1536., 1536., 1536.) else set cond_result_1 = GetWorldBounds() endif set MapBounds_boundRect = cond_result_1 set receiver_1 = CreateRegion() call region_addRect(receiver_1, MapBounds_boundRect) set MapBounds_boundRegion = receiver_1 set tuple_temp = rect_getMinX(MapBounds_playableMapRect) set tuple_temp_1 = rect_getMinY(MapBounds_playableMapRect) set MapBounds_playableMin_x = tuple_temp set MapBounds_playableMin_y = tuple_temp_1 set tuple_temp_2 = rect_getMaxX(MapBounds_playableMapRect) set tuple_temp_3 = rect_getMaxY(MapBounds_playableMapRect) set MapBounds_playableMax_x = tuple_temp_2 set MapBounds_playableMax_y = tuple_temp_3 set tuple_temp_4 = rect_getMinX(MapBounds_boundRect) set tuple_temp_5 = rect_getMinY(MapBounds_boundRect) set MapBounds_boundMin_x = tuple_temp_4 set MapBounds_boundMin_y = tuple_temp_5 set tuple_temp_6 = rect_getMaxX(MapBounds_boundRect) set tuple_temp_7 = rect_getMaxY(MapBounds_boundRect) set MapBounds_boundMax_x = tuple_temp_6 set MapBounds_boundMax_y = tuple_temp_7 call vec2_op_mult(vec2_op_plus(MapBounds_playableMin_x, MapBounds_playableMin_y, MapBounds_playableMax_x, MapBounds_playableMax_y), vec2_op_plus_return_y, .5) call vec2_op_mult(vec2_op_plus(MapBounds_boundMin_x, MapBounds_boundMin_y, MapBounds_boundMax_x, MapBounds_boundMax_y), vec2_op_plus_return_y, .5) endfunction function init_MapBounds takes nothing returns boolean call initMapBounds() return true endfunction function init_Maths takes nothing returns boolean set Maths_PI = 3.141592654 return true endfunction function init_Matrices takes nothing returns boolean local real tuple_temp = 0. local real tuple_temp_1 = 0. local real tuple_temp_2 = 0. local real tuple_temp_3 = 0. local real tuple_temp_4 = 0. local real tuple_temp_5 = 0. local real tuple_temp_6 = 0. local real tuple_temp_7 = 0. local real tuple_temp_8 = 0. local real tuple_temp_9 = 0. local real tuple_temp_10 = 0. local real tuple_temp_11 = 0. local real tuple_temp_12 = 0. local real tuple_temp_13 = 0. local real tuple_temp_14 = 0. local real tuple_temp_15 = 0. set Matrices_ZERO44_m00 = tuple_temp set Matrices_ZERO44_m01 = tuple_temp_1 set Matrices_ZERO44_m02 = tuple_temp_2 set Matrices_ZERO44_m03 = tuple_temp_3 set Matrices_ZERO44_m10 = tuple_temp_4 set Matrices_ZERO44_m11 = tuple_temp_5 set Matrices_ZERO44_m12 = tuple_temp_6 set Matrices_ZERO44_m13 = tuple_temp_7 set Matrices_ZERO44_m20 = tuple_temp_8 set Matrices_ZERO44_m21 = tuple_temp_9 set Matrices_ZERO44_m22 = tuple_temp_10 set Matrices_ZERO44_m23 = tuple_temp_11 set Matrices_ZERO44_m30 = tuple_temp_12 set Matrices_ZERO44_m31 = tuple_temp_13 set Matrices_ZERO44_m32 = tuple_temp_14 set Matrices_ZERO44_m33 = tuple_temp_15 return true endfunction function init_Minigame takes nothing returns boolean set Minigame_minigames = new_LinkedList() set Minigame_minigames_live = new_LinkedList() set Minigame_MAX_TIME = 1.75 * 60. set Minigame_BEGIN_SOUND = new_SoundDefinition(Sounds_arrangedTeamInvitation, false) return true endfunction function init_MinigameTeleporter takes nothing returns boolean set MinigameTeleporter_ESC_ID = 1093677113 set MinigameTeleporter_EVENT_RADIUS = 38. return true endfunction function init_Minion takes nothing returns boolean set Minion_COLL_SIZE_MINION = 0. set Minion_ATTACK_DISTANCE = 70. set Minion_ATTACK_RANGE = 150. set Minion_ATTACK_DAMAGE = 100. set Minion_FOLLOW_RANGE = 1000. return true endfunction function alloc_EventListener_add_MoveSpeed takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 805 else call error("Out of memory: Could not create EventListener_add_MoveSpeed.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 805 endif return this_1 endfunction function init_MoveSpeed takes nothing returns boolean local integer clVar local playerunitevent temp set MoveSpeed_INC_SPEED_ID = 1093677381 set MoveSpeed_DEC_SPEED_ID = 1093677384 set temp = EVENT_PLAYER_UNIT_SPELL_CAST set clVar = alloc_EventListener_add_MoveSpeed() call construct_EventListener(clVar) call EventListener_add(temp, clVar) return true endfunction function init_MultiboardClass takes nothing returns boolean set MultiboardClass_counter = 0 return true endfunction function init_ObjectIdGenerator takes nothing returns boolean call new_IdGenerator(2016423984) call new_IdGenerator(1213018160) call new_IdGenerator(1095577648) call new_IdGenerator(1112354864) call new_IdGenerator(1229795376) call new_IdGenerator(1380790320) return true endfunction function init_ObjectIds takes nothing returns boolean set ObjectIds_CHARMAP = ".................................!.#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[.]^_`abcdefghijklmnopqrstuvwxyz{|}~................................................................................................................................." return true endfunction function init_ObjectTarget takes nothing returns boolean set ObjectTarget_OBJECT_TARGET_ID = 2003399536 return true endfunction function init_Objects takes nothing returns boolean set Objects_impaleTargetDust = "Objects\\Spawnmodels\\Undead\\ImpaleTargetDust\\ImpaleTargetDust.mdx" set Objects_questionMark1 = "Objects\\InventoryItems\\QuestionMark\\QuestionMark.mdx" return true endfunction function init_Obstacle takes nothing returns boolean set Obstacle_EVENT_RADIUS_SMALL = 34. set Obstacle_EVENT_RADIUS_BIG = 64. set Obstacle_EVENT_RADIUS_HIGH = 52. set Obstacle_EVENT_HEIGHT_HIGH = 256. set Obstacle_EVENT_RADIUS_V = 256. return true endfunction function init_ObstacleObjects takes nothing returns boolean set ObstacleObjects_SOBS_CITADEL_ID = 1936679796 set ObstacleObjects_BOBS_CITADEL_ID = 1651467124 set ObstacleObjects_HOBS_CITADEL_ID = 1752130420 set ObstacleObjects_SOBS_ICE_ID = 1936681315 set ObstacleObjects_BOBS_ICE_ID = 1651468643 set ObstacleObjects_HOBS_ICE_ID = 1752131939 set ObstacleObjects_SOBS_GRASS_ID = 1936680818 set ObstacleObjects_BOBS_GRASS_ID = 1651468146 set ObstacleObjects_HOBS_GRASS_ID = 1752131442 set ObstacleObjects_SOBS_DESERT_ID = 1936680037 set ObstacleObjects_BOBS_DESERT_ID = 1651467365 set ObstacleObjects_HOBS_DESERT_ID = 1752130661 set ObstacleObjects_SOBS_SUNKEN_ID = 1936683893 set ObstacleObjects_BOBS_SUNKEN_ID = 1651471221 set ObstacleObjects_HOBS_SUNKEN_ID = 1752134517 return true endfunction function alloc_CallbackSingle_nullTimer_OnUnitEnterLeave takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 714 else call error("Out of memory: Could not create CallbackSingle_nullTimer_OnUnitEnterLeave.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 714 endif return this_1 endfunction function player_setAbilityAvailable takes player this_1, integer abilityId, boolean avail returns nothing call SetPlayerAbilityAvailable(this_1, abilityId, avail) endfunction function init_OnUnitEnterLeave takes nothing returns boolean local integer i local integer temp local integer clVar set OnUnitEnterLeave_eventTrigger = CreateTrigger() set OnUnitEnterLeave_preplacedUnits = CreateGroup() set OnUnitEnterLeave_tempUnitsCount = 0 set OnUnitEnterLeave_ABILITY_ID = 1095577649 set i = 0 set temp = bj_MAX_PLAYER_SLOTS - 1 loop exitwhen i > temp call player_setAbilityAvailable(Player_players[i], OnUnitEnterLeave_ABILITY_ID, false) set i = i + 1 endloop set clVar = alloc_CallbackSingle_nullTimer_OnUnitEnterLeave() call construct_CallbackSingle(clVar) call nullTimer(clVar) return true endfunction function init_Orders takes nothing returns boolean set OrderIds_patrol = 851990 set OrderIds_soulburn = 852668 set OrderIds_undefend = 852056 return true endfunction function init_Pedestal takes nothing returns boolean set MemoryAccessPedestal_ENTITIES_KEY = "e" set MemoryAccessPedestal_TILES_KEY = "t" return true endfunction function init_PedestalObjects takes nothing returns boolean set PedestalObjects_AOE_PICK_RANGE = 256. set PedestalObjects_SELECT_SINGLE_ID = 1095578480 set PedestalObjects_SELECT_AOE_ID = 1095578482 set PedestalObjects_SELECT_AOE_TILE_ID = 1095578483 set PedestalObjects_SELECT_TILE_ID = 1095578481 set PedestalObjects_SAVE1_ID = 1095578484 set PedestalObjects_SAVE2_ID = 1095578485 set PedestalObjects_SAVE3_ID = 1095578486 set PedestalObjects_SAVE4_ID = 1095578487 set PedestalObjects_LOAD1_ID = 1095578488 set PedestalObjects_LOAD2_ID = 1095578489 set PedestalObjects_LOAD3_ID = 1095578490 set PedestalObjects_LOAD4_ID = 1095578491 return true endfunction function init_PhysicsConstants takes nothing returns boolean set PhysicsConstants_defaultGravity = - 0.8 return true endfunction function init_PhysicsEntity takes nothing returns boolean return true endfunction function alloc_EscaperClsr_setCallback_PickSystem takes nothing returns integer local integer this_1 if EscaperClsr_firstFree == 0 then if EscaperClsr_maxIndex < JASS_MAX_ARRAY_SIZE then set EscaperClsr_maxIndex = EscaperClsr_maxIndex + 1 set this_1 = EscaperClsr_maxIndex set EscaperClsr_typeId[this_1] = 746 else call error("Out of memory: Could not create EscaperClsr_setCallback_PickSystem.") set this_1 = 0 endif else set EscaperClsr_firstFree = EscaperClsr_firstFree - 1 set this_1 = EscaperClsr_nextFree[EscaperClsr_firstFree] set EscaperClsr_typeId[this_1] = 746 endif return this_1 endfunction function alloc_EscaperClsr_setCallback_PickSystem_1665 takes nothing returns integer local integer this_1 if EscaperClsr_firstFree == 0 then if EscaperClsr_maxIndex < JASS_MAX_ARRAY_SIZE then set EscaperClsr_maxIndex = EscaperClsr_maxIndex + 1 set this_1 = EscaperClsr_maxIndex set EscaperClsr_typeId[this_1] = 747 else call error("Out of memory: Could not create EscaperClsr_setCallback_PickSystem.") set this_1 = 0 endif else set EscaperClsr_firstFree = EscaperClsr_firstFree - 1 set this_1 = EscaperClsr_nextFree[EscaperClsr_firstFree] set EscaperClsr_typeId[this_1] = 747 endif return this_1 endfunction function alloc_EscaperClsr_setCallback_PickSystem_1666 takes nothing returns integer local integer this_1 if EscaperClsr_firstFree == 0 then if EscaperClsr_maxIndex < JASS_MAX_ARRAY_SIZE then set EscaperClsr_maxIndex = EscaperClsr_maxIndex + 1 set this_1 = EscaperClsr_maxIndex set EscaperClsr_typeId[this_1] = 748 else call error("Out of memory: Could not create EscaperClsr_setCallback_PickSystem.") set this_1 = 0 endif else set EscaperClsr_firstFree = EscaperClsr_firstFree - 1 set this_1 = EscaperClsr_nextFree[EscaperClsr_firstFree] set EscaperClsr_typeId[this_1] = 748 endif return this_1 endfunction function alloc_EscaperClsr_setCallback_PickSystem_1667 takes nothing returns integer local integer this_1 if EscaperClsr_firstFree == 0 then if EscaperClsr_maxIndex < JASS_MAX_ARRAY_SIZE then set EscaperClsr_maxIndex = EscaperClsr_maxIndex + 1 set this_1 = EscaperClsr_maxIndex set EscaperClsr_typeId[this_1] = 749 else call error("Out of memory: Could not create EscaperClsr_setCallback_PickSystem.") set this_1 = 0 endif else set EscaperClsr_firstFree = EscaperClsr_firstFree - 1 set this_1 = EscaperClsr_nextFree[EscaperClsr_firstFree] set EscaperClsr_typeId[this_1] = 749 endif return this_1 endfunction function alloc_EscaperClsr_setCallback_PickSystem_1668 takes nothing returns integer local integer this_1 if EscaperClsr_firstFree == 0 then if EscaperClsr_maxIndex < JASS_MAX_ARRAY_SIZE then set EscaperClsr_maxIndex = EscaperClsr_maxIndex + 1 set this_1 = EscaperClsr_maxIndex set EscaperClsr_typeId[this_1] = 750 else call error("Out of memory: Could not create EscaperClsr_setCallback_PickSystem.") set this_1 = 0 endif else set EscaperClsr_firstFree = EscaperClsr_firstFree - 1 set this_1 = EscaperClsr_nextFree[EscaperClsr_firstFree] set EscaperClsr_typeId[this_1] = 750 endif return this_1 endfunction function EscaperDefinition_setCallback takes integer this_1, integer closure returns nothing set EscaperDefinition_cb[this_1] = closure endfunction function dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setCallback takes integer this_1, integer closure returns nothing if EscaperDefinition_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling EscaperDefinition.setCallback") else call error("Called EscaperDefinition.setCallback on invalid object.") endif endif call EscaperDefinition_setCallback(this_1, closure) endfunction function EscaperDefinition_setIcon takes integer this_1, string path returns nothing set EscaperDefinition_mbicon[this_1] = path endfunction function dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setIcon takes integer this_1, string path returns nothing if EscaperDefinition_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling EscaperDefinition.setIcon") else call error("Called EscaperDefinition.setIcon on invalid object.") endif endif call EscaperDefinition_setIcon(this_1, path) endfunction function EscaperDefinition_setName takes integer this_1, string name returns nothing local texttag receiver = FText_tt[EscaperDefinition_nameTt[this_1]] call texttag_setText(receiver, name, 12.) endfunction function dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setName takes integer this_1, string name returns nothing if EscaperDefinition_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling EscaperDefinition.setName") else call error("Called EscaperDefinition.setName on invalid object.") endif endif call EscaperDefinition_setName(this_1, name) endfunction function alloc_BackIterator_1571 takes nothing returns integer local integer this_1 if BackIterator_firstFree_74 == 0 then if BackIterator_maxIndex_77 < JASS_MAX_ARRAY_SIZE then set BackIterator_maxIndex_77 = BackIterator_maxIndex_77 + 1 set this_1 = BackIterator_maxIndex_77 else call error("Out of memory: Could not create BackIterator.") set this_1 = 0 endif else set BackIterator_firstFree_74 = BackIterator_firstFree_74 - 1 set this_1 = BackIterator_nextFree_80[BackIterator_firstFree_74] endif return this_1 endfunction function BackIterator_init_29 takes integer this_1 returns nothing endfunction function construct_BackIterator_2118 takes integer this_1, boolean destroyOnClose returns nothing call BackIterator_init_29(this_1) endfunction function new_BackIterator_3612 takes boolean destroyOnClose returns integer local integer this_1 = alloc_BackIterator_1571() call construct_BackIterator_2118(this_1, destroyOnClose) return this_1 endfunction function alloc_EscaperDefinition takes nothing returns integer local integer this_1 if EscaperDefinition_firstFree == 0 then if EscaperDefinition_maxIndex < JASS_MAX_ARRAY_SIZE then set EscaperDefinition_maxIndex = EscaperDefinition_maxIndex + 1 set this_1 = EscaperDefinition_maxIndex set EscaperDefinition_typeId[this_1] = 751 else call error("Out of memory: Could not create EscaperDefinition.") set this_1 = 0 endif else set EscaperDefinition_firstFree = EscaperDefinition_firstFree - 1 set this_1 = EscaperDefinition_nextFree[EscaperDefinition_firstFree] set EscaperDefinition_typeId[this_1] = 751 endif return this_1 endfunction function construct_EscaperDefinition_LinkedListModule takes integer this_1 returns nothing set EscaperDefinition_LinkedListModule_size = EscaperDefinition_LinkedListModule_size + 1 if EscaperDefinition_LinkedListModule_size == 1 then set EscaperDefinition_LinkedListModule_first = this_1 set EscaperDefinition_LinkedListModule_prev[this_1] = 0 else set EscaperDefinition_LinkedListModule_prev[this_1] = EscaperDefinition_LinkedListModule_last set EscaperDefinition_LinkedListModule_next[EscaperDefinition_LinkedListModule_last] = this_1 set EscaperDefinition_LinkedListModule_prev[EscaperDefinition_LinkedListModule_first] = this_1 endif set EscaperDefinition_LinkedListModule_next[this_1] = 0 set EscaperDefinition_LinkedListModule_last = this_1 endfunction function EscaperDefinition_init takes integer this_1 returns nothing call construct_EscaperDefinition_LinkedListModule(this_1) endfunction function construct_EscaperDefinition takes integer this_1, integer escaperId returns nothing local unit receiver local unit receiver_1 call EscaperDefinition_init(this_1) set EscaperDefinition_nameTt[this_1] = createFText(vec3_op_minus_4277(PickSystem_PICK_x, PickSystem_PICK_y, PickSystem_PICK_z, 64., 64.), vec3_op_minus_return_y_3125, vec3_op_minus_return_z_3127, "", 12.) call texttag_setVisibility(FText_tt[EscaperDefinition_nameTt[this_1]], false) set EscaperDefinition_escaper[this_1] = createUnit_2354(Basics_DUMMY_PLAYER, escaperId, PickSystem_PICK_x, PickSystem_PICK_y, PickSystem_PICK_z, real_fromDeg(315.)) set receiver = EscaperDefinition_escaper[this_1] call unit_addAbility(receiver, Basics_LOCUST_ID) set receiver_1 = receiver call unit_setVertexColor_4202(receiver_1, Colors_COLOR_BLACK_red, Colors_COLOR_BLACK_green, Colors_COLOR_BLACK_blue, Colors_COLOR_BLACK_alpha) endfunction function new_EscaperDefinition takes integer escaperId returns integer local integer this_1 = alloc_EscaperDefinition() call construct_EscaperDefinition(this_1, escaperId) return this_1 endfunction function alloc_Iterator_1820 takes nothing returns integer local integer this_1 if Iterator_firstFree_1037 == 0 then if Iterator_maxIndex_1041 < JASS_MAX_ARRAY_SIZE then set Iterator_maxIndex_1041 = Iterator_maxIndex_1041 + 1 set this_1 = Iterator_maxIndex_1041 else call error("Out of memory: Could not create Iterator.") set this_1 = 0 endif else set Iterator_firstFree_1037 = Iterator_firstFree_1037 - 1 set this_1 = Iterator_nextFree_1045[Iterator_firstFree_1037] endif return this_1 endfunction function Iterator_init_803 takes integer this_1 returns nothing endfunction function construct_Iterator_2226 takes integer this_1, boolean destroyOnClose returns nothing call Iterator_init_803(this_1) endfunction function new_Iterator_3695 takes boolean destroyOnClose returns integer local integer this_1 = alloc_Iterator_1820() call construct_Iterator_2226(this_1, destroyOnClose) return this_1 endfunction function init_PickSystem takes nothing returns boolean local real tuple_temp = unit_getPos3Real(gg_unit_revp_0002) local real tuple_temp_1 = unit_getPos3Real_return_y local integer receiver local integer receiver_1 local integer clVar local integer receiver_2 local integer receiver_3 local integer receiver_4 local integer clVar_1 local integer receiver_5 local integer receiver_6 local integer receiver_7 local integer clVar_2 local integer receiver_8 local integer receiver_9 local integer receiver_10 local integer clVar_3 local integer receiver_11 local integer receiver_12 local integer receiver_13 local integer clVar_4 local integer receiver_14 local integer temp local integer temp_1 local integer temp_2 local integer temp_3 local integer temp_4 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 set PickSystem_START_x = tuple_temp set PickSystem_START_y = tuple_temp_1 set tuple_temp_2 = -6743. set tuple_temp_3 = 6616. set tuple_temp_4 = 100. set PickSystem_PICK_x = tuple_temp_2 set PickSystem_PICK_y = tuple_temp_3 set PickSystem_PICK_z = tuple_temp_4 set PickSystem_BLINK_ID = 1093677105 set PickSystem_PICK_DUMMY_ID = 2016424040 set PickSystem_PREV_ID = 1095577707 set PickSystem_NEXT_ID = 1095577708 set PickSystem_PICK_ID = 1095577709 set EscaperDefinition_LinkedListModule_first = 0 set EscaperDefinition_LinkedListModule_last = 0 set EscaperDefinition_LinkedListModule_size = 0 call new_Iterator_3695(false) call new_BackIterator_3612(false) set PickSystem_hastStartedYet = false set receiver = new_EscaperDefinition(BuilderConstants_ESC_HOLY_ID) call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setName(receiver, "|cffFFC521Holy Escaper|r\nIn years of studies this priest mastered the art of healing and reincarnation.") set receiver_1 = receiver call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setIcon(receiver_1, "ReplaceableTextures\\CommandButtons\\BTNPriest.blp") set receiver_2 = receiver_1 set temp = receiver_2 set clVar = alloc_EscaperClsr_setCallback_PickSystem() call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setCallback(temp, clVar) set receiver_3 = new_EscaperDefinition(BuilderConstants_ESC_STRONG_ID) call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setName(receiver_3, "|cffAD4208Strong Escaper|r\nThis brave baronet perfected his defense abilites and will never retreat.") set receiver_4 = receiver_3 call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setIcon(receiver_4, "ReplaceableTextures\\CommandButtons\\BTNFootman.blp") set receiver_5 = receiver_4 set temp_1 = receiver_5 set clVar_1 = alloc_EscaperClsr_setCallback_PickSystem_1665() call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setCallback(temp_1, clVar_1) set receiver_6 = new_EscaperDefinition(BuilderConstants_ESC_FAST_ID) call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setName(receiver_6, "|cff08CEEFFast Escaper|r\nThis blazing fast hero inceases the movementspeed of himself and his mates and can create a portal.") set receiver_7 = receiver_6 call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setIcon(receiver_7, "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp") set receiver_8 = receiver_7 set temp_2 = receiver_8 set clVar_2 = alloc_EscaperClsr_setCallback_PickSystem_1666() call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setCallback(temp_2, clVar_2) set receiver_9 = new_EscaperDefinition(BuilderConstants_ESC_ICE_ID) call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setName(receiver_9, "|cff08D6FFIce Escaper|r\nBy living in the arctic snows for so long, this escaper knows how to handle sliding on ice.") set receiver_10 = receiver_9 call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setIcon(receiver_10, "ReplaceableTextures\\CommandButtons\\BTNIceTrollBeserker.blp") set receiver_11 = receiver_10 set temp_3 = receiver_11 set clVar_3 = alloc_EscaperClsr_setCallback_PickSystem_1667() call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setCallback(temp_3, clVar_3) set receiver_12 = new_EscaperDefinition(BuilderConstants_ESC_BLIND_ID) call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setName(receiver_12, "|cff6B6BCEFemale Escaper|r\nA cold heart and years of bitching grant her some protection from lava.") set receiver_13 = receiver_12 call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setIcon(receiver_13, Icons_bTNHuntress) set receiver_14 = receiver_13 set temp_4 = receiver_14 set clVar_4 = alloc_EscaperClsr_setCallback_PickSystem_1668() call dispatch_EscaperDefinition_PickSystem_EscaperDefinition_setCallback(temp_4, clVar_4) return true endfunction function initPlayerArray takes nothing returns nothing local integer i = 0 local integer temp = bj_MAX_PLAYER_SLOTS - 1 loop exitwhen i > temp set Player_players[i] = Player(i) set i = i + 1 endloop endfunction function init_Player takes nothing returns boolean set Player_localPlayer = GetLocalPlayer() call initPlayerArray() return true endfunction function init_PlayerData takes nothing returns boolean set PlayerData_allPlayers = new_LinkedList() set PlayerData_escaperPlayers = new_LinkedList() set PlayerData_builderPlayers = new_LinkedList() set PlayerData_questFailedSound = new_SoundDefinition(Sounds_questFailed, false) set PlayerData_minutes = 0 set PlayerData_seconds = 0 return true endfunction function init_Playercolor takes nothing returns boolean set Playercolor_PLAYER_COLOR_BLACK_AGGRESSIVE = ConvertPlayerColor(24) set Playercolor_PLAYER_COLOR_UNKNOWN1 = ConvertPlayerColor(25) set Playercolor_PLAYER_COLOR_UNKNOWN2 = ConvertPlayerColor(26) set Playercolor_PLAYER_COLOR_BLACK_PASSIVE = ConvertPlayerColor(27) set Playercolor_LOOKUP[0] = PLAYER_COLOR_RED set Playercolor_LOOKUP[1] = PLAYER_COLOR_BLUE set Playercolor_LOOKUP[2] = PLAYER_COLOR_CYAN set Playercolor_LOOKUP[3] = PLAYER_COLOR_PURPLE set Playercolor_LOOKUP[4] = PLAYER_COLOR_YELLOW set Playercolor_LOOKUP[5] = PLAYER_COLOR_ORANGE set Playercolor_LOOKUP[6] = PLAYER_COLOR_GREEN set Playercolor_LOOKUP[7] = PLAYER_COLOR_PINK set Playercolor_LOOKUP[8] = PLAYER_COLOR_LIGHT_GRAY set Playercolor_LOOKUP[9] = PLAYER_COLOR_LIGHT_BLUE set Playercolor_LOOKUP[10] = PLAYER_COLOR_AQUA set Playercolor_LOOKUP[11] = PLAYER_COLOR_BROWN set Playercolor_LOOKUP[12] = PLAYER_COLOR_MAROON set Playercolor_LOOKUP[13] = PLAYER_COLOR_NAVY set Playercolor_LOOKUP[14] = PLAYER_COLOR_TURQUOISE set Playercolor_LOOKUP[15] = PLAYER_COLOR_VIOLET set Playercolor_LOOKUP[16] = PLAYER_COLOR_WHEAT set Playercolor_LOOKUP[17] = PLAYER_COLOR_PEACH set Playercolor_LOOKUP[18] = PLAYER_COLOR_MINT set Playercolor_LOOKUP[19] = PLAYER_COLOR_LAVENDER set Playercolor_LOOKUP[20] = PLAYER_COLOR_COAL set Playercolor_LOOKUP[21] = PLAYER_COLOR_SNOW set Playercolor_LOOKUP[22] = PLAYER_COLOR_EMERALD set Playercolor_LOOKUP[23] = PLAYER_COLOR_PEANUT set Playercolor_LOOKUP[24] = Playercolor_PLAYER_COLOR_BLACK_AGGRESSIVE set Playercolor_LOOKUP[25] = Playercolor_PLAYER_COLOR_UNKNOWN1 set Playercolor_LOOKUP[26] = Playercolor_PLAYER_COLOR_UNKNOWN2 set Playercolor_LOOKUP[27] = Playercolor_PLAYER_COLOR_BLACK_PASSIVE return true endfunction function alloc_CallbackSingle_nullTimer_Players takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 715 else call error("Out of memory: Could not create CallbackSingle_nullTimer_Players.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 715 endif return this_1 endfunction function init_Players takes nothing returns boolean local integer clVar set Players_ALL_PLAYERS = new_LinkedList() set clVar = alloc_CallbackSingle_nullTimer_Players() call construct_CallbackSingle(clVar) call nullTimer(clVar) return true endfunction function alloc_EventListener_add_Pointer takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 806 else call error("Out of memory: Could not create EventListener_add_Pointer.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 806 endif return this_1 endfunction function init_Pointer takes nothing returns boolean local integer clVar local playerevent temp set Pointer_POINTER_ID = 1886286962 set Pointer_POINTER_RADIUS = 64. set Pointer_INC_ID = 1093677382 set Pointer_DEC_ID = 1093677383 set Pointer_START_ID = 1093677873 set Pointer_STOP_ID = 1093677874 set temp = ClosureEvents_EVENT_PLAYER_CHAT_FILTER set clVar = alloc_EventListener_add_Pointer() call construct_EventListener(clVar) call EventListener_add(temp, clVar) call preloadAbility_1(Pointer_START_ID) call preloadAbility_1(Pointer_STOP_ID) call preloadAbility_1(Pointer_INC_ID) call preloadAbility_1(Pointer_DEC_ID) return true endfunction function init_Powernode takes nothing returns boolean set Powernode_EFFECT_STRING = "DRAM" set Powernode_EFFECT_BOUNCE_STRING = "LGRO" set Powernode_EFFECT_DIODE_STRING = "LONE" set Powernode_EFFECT_TETHER_BOTH_STRING = "LBOT" set Powernode_EFFECT_TETHER_AIR_STRING = "BAIR" set Powernode_EFFECT_ORB_STRING = "LORB" set Powernode_KILL_EFFECT = "Abilities\\Spells\\Human\\ManaFlare\\ManaFlareBoltImpact.mdl" set Powernode_ACTIVATION_DIST = 22. set Powernode_INCREASE_BOUNCE_ID = 1095578232 set Powernode_DECREASE_BOUNCE_ID = 1095578233 set Powernode_LINK_B_GROUND_ID = 1095578236 set Powernode_LINK_B_AIR_ID = 1095578234 set Powernode_LINK_B_BOTH_ID = 1095578401 set Powernode_LINK_KILL_ID = 1095578235 set Powernode_LINK_SPELLBOOK_ID = 1095578416 set Powernode_LINK_DIODE_GROUND_ID = 1095578237 set Powernode_LINK_ORB_ID = 1095578238 return true endfunction function alloc_CallbackSingle_nullTimer_Preloader takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 716 else call error("Out of memory: Could not create CallbackSingle_nullTimer_Preloader.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 716 endif return this_1 endfunction function unit_setInvulnerable takes unit this_1, boolean flag returns nothing call SetUnitInvulnerable(this_1, flag) endfunction function init_Preloader takes nothing returns boolean local integer clVar set Preloader_autoFinish = true set Preloader_dumg = CreateGroup() set Preloader_dum = createUnit(Basics_DUMMY_PLAYER, UnitIds_shade, MapBounds_playableMin_x, MapBounds_playableMin_y, 0.) call unit_setInvulnerable(Preloader_dum, true) if Preloader_dum == null then call error("DUMMY_UNITID not added correctly to the map.") endif if Preloader_autoFinish then set clVar = alloc_CallbackSingle_nullTimer_Preloader() call construct_CallbackSingle(clVar) call nullTimer(clVar) endif return true endfunction function init_Printing takes nothing returns boolean set Printing_DEBUG_MSG_DURATION = 45. return true endfunction function init_Printing_config takes nothing returns boolean set Printing_config_DEBUG_LEVEL = 2 return true endfunction function init_Quaternion takes nothing returns boolean local real tuple_temp = 0. local real tuple_temp_1 = 0. local real tuple_temp_2 = 0. local real tuple_temp_3 = 1. set Quaternion_IDENTITYQ_x = tuple_temp set Quaternion_IDENTITYQ_y = tuple_temp_1 set Quaternion_IDENTITYQ_z = tuple_temp_2 set Quaternion_IDENTITYQ_w = tuple_temp_3 set Quaternion_EPSILON = 0.001 return true endfunction function init_Questlog takes nothing returns boolean local quest q = CreateQuest() call QuestSetTitle(q, "|cffFFD700Commands") call QuestSetIconPath(q, "ReplaceableTextures\\CommandButtons\\BTNOrcCaptureFlag.blp") call QuestSetDescription(q, "|cff4d50ddJoin our discord|r: discord.gg/yr3ZyYQ\n\n" + "|cff787888Available Commands:|r\n" + "-|cffFFD700clear|r (clears textmessages)\n" + "-|cffFFD700smode|r (Toggles revive selection, also effects camera pan)\n" + "-|cffFFD700cam |r[|cffFFD700select|r | |cffFFD700cam|r | |cffFFD700both|r] (sets camera distance)\n" + "-|cffFFD700cam lock|r (locks the camera onto your escaper)\n" + "-|cffFFD700cam unlock|r (unlocks the camera)\n" + "-|cffFFD700frev|r (revives your escaper, in case of bugs)\n" + "-|cffFFD700info|r (shows basic information about the current Area)\n") set q = CreateQuest() call QuestSetTitle(q, "|cff0084ffCredits") call QuestSetRequired(q, false) call QuestSetIconPath(q, "ReplaceableTextures\\CommandButtons\\BTNtemp.blp") call QuestSetDescription(q, "|cff4d50ddJoin our discord|r: discord.gg/yr3ZyYQ\n\n" + "|cff787888Special thanks in unsorted manner|r:\n" + "-kari0003\n" + "-menag\n" + "-Crigges\n" + "-WaterKnight\n" + "-Hiveworkshop ppl\n" + "-old b.net friends whose names I forgot ;( good ol' times\n" + "-Geronimo\n" + "-The koreans: pockpoong, kagu, sayack\n" + "-Gamestargamer" + "-Garfield1337\n" + "-Masterstryke\n" + "-SFan042\n") return true endfunction function init_Real takes nothing returns boolean set Real_REAL_MAX = 340282366920938000000000000000000000000. set Real_REAL_MIN = - 340282366920938000000000000000000000000. return true endfunction function RegionData_createSetup takes integer this_1 returns nothing call createUnit(GameConstants_STAFF_PLAYER, BuilderConstants_REGION_ADMIN_ID, rect_getCenter(RegionData_theRect[this_1]), rect_getCenter_return_y, real_asAngleDegrees(270.)) endfunction function dispatch_RegionData_RegionData_RegionData_createSetup takes integer this_1 returns nothing if RegionData_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling RegionData.createSetup") else call error("Called RegionData.createSetup on invalid object.") endif endif call RegionData_createSetup(this_1) endfunction function alloc_RegionData takes nothing returns integer local integer this_1 if RegionData_firstFree == 0 then if RegionData_maxIndex < JASS_MAX_ARRAY_SIZE then set RegionData_maxIndex = RegionData_maxIndex + 1 set this_1 = RegionData_maxIndex set RegionData_typeId[this_1] = 1110 else call error("Out of memory: Could not create RegionData.") set this_1 = 0 endif else set RegionData_firstFree = RegionData_firstFree - 1 set this_1 = RegionData_nextFree[RegionData_firstFree] set RegionData_typeId[this_1] = 1110 endif return this_1 endfunction function RegionData_init takes integer this_1 returns nothing set RegionData_escapers[this_1] = new_LinkedList() set RegionData_permissions[this_1] = new_HashMap() set RegionData_rtype[this_1] = 0 set RegionData_slidespeed[this_1] = 3. set RegionData_poisonDmg[this_1] = 1. set RegionData_lavaDmg[this_1] = 1. set RegionData_turnSpeed[this_1] = 2.55 set RegionData_gravity[this_1] = - 0.8 set RegionData_easyMode[this_1] = false set RegionData_specialAbil[this_1] = 0 set RegionData_bossRegion[this_1] = false set RegionData_allowCut[this_1] = false set RegionData_boss[this_1] = 0 endfunction function trigger_registerRectEnterEventSource takes trigger this_1, rect r returns nothing call TriggerRegisterEnterRectSimple(this_1, r) call dispatch_HashMap_HashMap_HashMap_put(EventHelper_rectMap, triggerToIndex(this_1), rectToIndex(r)) endfunction function construct_RegionData takes integer this_1, rect r returns nothing local trigger receiver local trigger receiver_1 call RegionData_init(this_1) set RegionData_theRect[this_1] = r if r != null then set receiver = CreateTrigger() call trigger_registerRectEnterEventSource(receiver, r) set receiver_1 = receiver call trigger_addAction(receiver_1, ref_function_code__addAction_RegionData_RegionData) call dispatch_HashMap_HashMap_HashMap_put(RegionData_regionMap, rectToIndex(r), this_1) call dispatch_RegionData_RegionData_RegionData_setBossRegion(this_1) endif endfunction function new_RegionData takes rect r returns integer local integer this_1 = alloc_RegionData() call construct_RegionData(this_1, r) return this_1 endfunction function trigger_registerRectLeaveEventSource takes trigger this_1, rect r returns nothing call TriggerRegisterLeaveRectSimple(this_1, r) call dispatch_HashMap_HashMap_HashMap_put(EventHelper_rectMap, triggerToIndex(this_1), rectToIndex(r)) endfunction function init_RegionData takes nothing returns boolean local real tuple_temp = unit_getPos(gg_unit_revp_0322) local real tuple_temp_1 = unit_getPos_return_y local integer receiver local integer receiver_1 local integer receiver_2 local integer receiver_3 local integer receiver_4 local integer receiver_5 local integer receiver_6 local integer receiver_7 local integer receiver_8 local integer receiver_9 local integer receiver_10 local integer receiver_11 local integer receiver_12 local integer receiver_13 local integer receiver_14 local integer receiver_15 local integer receiver_16 local integer receiver_17 local trigger receiver_18 local trigger receiver_19 set RegionData_LOUNGE_x = tuple_temp set RegionData_LOUNGE_y = tuple_temp_1 set RegionData_regionMap = new_HashMap() set RegionData_EMPTY_REGION = new_RegionData(null) set RegionData_x = 0. set RegionData_y = 0. set RegionData_regions[0] = new_RegionData(gg_rct_Region_024) call dispatch_RegionData_RegionData_RegionData_setType(RegionData_regions[0], getRegionTypeFromItem(1227894852), false) call dispatch_RegionData_RegionData_RegionData_setOwner(RegionData_regions[0], GameConstants_STAFF_PLAYER) set RegionData_regions[1] = new_RegionData(gg_rct_Region_018) call dispatch_RegionData_RegionData_RegionData_setType(RegionData_regions[1], getRegionTypeFromItem(1227894855), false) call dispatch_RegionData_RegionData_RegionData_setOwner(RegionData_regions[1], GameConstants_STAFF_PLAYER) set RegionData_regions[2] = new_RegionData(gg_rct_Region_000) call dispatch_RegionData_RegionData_RegionData_setType(RegionData_regions[2], getRegionTypeFromItem(1227894853), false) call dispatch_RegionData_RegionData_RegionData_setOwner(RegionData_regions[2], GameConstants_STAFF_PLAYER) set RegionData_regions[3] = new_RegionData(gg_rct_Region_001) call dispatch_RegionData_RegionData_RegionData_setType(RegionData_regions[3], getRegionTypeFromItem(1227894856), false) call dispatch_RegionData_RegionData_RegionData_setOwner(RegionData_regions[3], GameConstants_STAFF_PLAYER) set receiver = new_RegionData(gg_rct_Region_004) call dispatch_RegionData_RegionData_RegionData_createSetup(receiver) set RegionData_regions[4] = receiver set receiver_1 = new_RegionData(gg_rct_Region_005) call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_1) set RegionData_regions[5] = receiver_1 set receiver_2 = new_RegionData(gg_rct_Region_006) call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_2) set RegionData_regions[6] = receiver_2 set receiver_3 = new_RegionData(gg_rct_Region_007) call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_3) set RegionData_regions[7] = receiver_3 set receiver_4 = new_RegionData(gg_rct_Region_008) call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_4) set RegionData_regions[8] = receiver_4 set receiver_5 = new_RegionData(gg_rct_Region_009) call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_5) set RegionData_regions[9] = receiver_5 set receiver_6 = new_RegionData(gg_rct_Region_010) call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_6) set RegionData_regions[10] = receiver_6 set receiver_7 = new_RegionData(gg_rct_Region_011) call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_7) set RegionData_regions[11] = receiver_7 set receiver_8 = new_RegionData(gg_rct_Region_012) call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_8) set RegionData_regions[12] = receiver_8 set receiver_9 = new_RegionData(gg_rct_Region_013) call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_9) set RegionData_regions[13] = receiver_9 set receiver_10 = new_RegionData(gg_rct_Region_014) call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_10) set RegionData_regions[14] = receiver_10 set receiver_11 = new_RegionData(gg_rct_Region_015) call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_11) set RegionData_regions[15] = receiver_11 set receiver_12 = new_RegionData(gg_rct_Region_016) call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_12) set RegionData_regions[16] = receiver_12 set receiver_13 = new_RegionData(gg_rct_Region_017) call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_13) set RegionData_regions[17] = receiver_13 set receiver_14 = new_RegionData(gg_rct_Region_002) call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_14) set RegionData_regions[18] = receiver_14 set receiver_15 = new_RegionData(gg_rct_Region_003) call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_15) set RegionData_regions[19] = receiver_15 set receiver_16 = new_RegionData(gg_rct_Region_026) call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_16) set RegionData_regions[20] = receiver_16 set RegionData_regions[21] = new_RegionData(gg_rct_Start) call dispatch_RegionData_RegionData_RegionData_setOwner(RegionData_regions[21], GameConstants_STAFF_PLAYER) call dispatch_RegionData_RegionData_RegionData_setType(RegionData_regions[21], getRegionTypeFromItem(1227894852), false) set RegionData_regions[22] = new_RegionData(gg_rct_Choose) call dispatch_RegionData_RegionData_RegionData_setType(RegionData_regions[22], getRegionTypeFromItem(1227894852), false) call dispatch_RegionData_RegionData_RegionData_setOwner(RegionData_regions[22], GameConstants_STAFF_PLAYER) set RegionData_regions[23] = new_RegionData(gg_rct_coingamearea) call dispatch_RegionData_RegionData_RegionData_setType(RegionData_regions[23], getRegionTypeFromItem(1227894855), false) call dispatch_RegionData_RegionData_RegionData_setOwner(RegionData_regions[23], GameConstants_STAFF_PLAYER) set RegionData_easyMode[RegionData_regions[23]] = true set RegionData_regions[24] = new_RegionData(gg_rct_spaceygamearea) call dispatch_RegionData_RegionData_RegionData_setType(RegionData_regions[24], getRegionTypeFromItem(1227894855), false) call dispatch_RegionData_RegionData_RegionData_setOwner(RegionData_regions[24], GameConstants_STAFF_PLAYER) set RegionData_regions[25] = new_RegionData(gg_rct_slidegamearea) call dispatch_RegionData_RegionData_RegionData_setType(RegionData_regions[25], getRegionTypeFromItem(1227894852), false) call dispatch_RegionData_RegionData_RegionData_setOwner(RegionData_regions[25], GameConstants_STAFF_PLAYER) set receiver_17 = new_RegionData(gg_rct_Region_027) call dispatch_RegionData_RegionData_RegionData_createSetup(receiver_17) set RegionData_regions[26] = receiver_17 set RegionData_regions[27] = new_RegionData(gg_rct_agargamearea) call dispatch_RegionData_RegionData_RegionData_setType(RegionData_regions[27], getRegionTypeFromItem(1227894853), false) call dispatch_RegionData_RegionData_RegionData_setOwner(RegionData_regions[27], GameConstants_STAFF_PLAYER) set RegionData_regions[28] = new_RegionData(gg_rct_warlockgamearea) call dispatch_RegionData_RegionData_RegionData_setType(RegionData_regions[28], getRegionTypeFromItem(1227894853), false) call dispatch_RegionData_RegionData_RegionData_setOwner(RegionData_regions[28], GameConstants_STAFF_PLAYER) set receiver_18 = CreateTrigger() call trigger_registerRectLeaveEventSource(receiver_18, gg_rct_Region_023) set receiver_19 = receiver_18 call trigger_addAction(receiver_19, ref_function_code__addAction_RegionData) return true endfunction function init_RegisterEvents takes nothing returns boolean set RegisterEvents_onCastMap = new_HashMap() call registerPlayerUnitEvent(EVENT_PLAYER_UNIT_SPELL_EFFECT, ref_function_code__registerPlayerUnitEvent_RegisterEvents) return true endfunction function alloc_EventListener_add_Remove takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 809 else call error("Out of memory: Could not create EventListener_add_Remove.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 809 endif return this_1 endfunction function init_Remove takes nothing returns boolean local playerunitevent temp = EVENT_PLAYER_UNIT_SPELL_EFFECT local integer clVar = alloc_EventListener_add_Remove() call construct_EventListener(clVar) call EventListener_add(temp, clVar) return true endfunction function init_ReviveManager takes nothing returns boolean set ReviveManager_TIMER_PERIOD = 0.1 set ReviveManager_revMode = 0 set ReviveManager_waitForCount = 0 call timer_startPeriodic(CreateTimer(), ReviveManager_TIMER_PERIOD, ref_function_code__startPeriodic_ReviveManager) return true endfunction function init_RevivePointModifier takes nothing returns boolean set RevivePointModifier_REV_MODIFIER_DUMMY_ID = 2016424036 set RevivePointModifier_CREATE_REV_MOD_ID = 1093678925 set RevivePointModifier_REMOVE_REV_MOD_ID = 1093678926 return true endfunction function init_Revivepoint takes nothing returns boolean set Revivepoint_EVENT_RADIUS = 90. set Revivepoint_rescueSound = new_SoundDefinition("Sound\\Interface\\Rescue.wav", false) set Revivepoint_currentRevive = 0 return true endfunction function init_SafetyChecks takes nothing returns boolean set SafetyChecks_SAFETY_CHECKS_ENABLED = true return true endfunction function init_SaveLoadData takes nothing returns boolean set SaveLoadData_READ_FILES_IN_REPLAYS = false return true endfunction function init_SerializeIds takes nothing returns boolean set SerializeIds_JUMPER_INDEX = 1 set SerializeIds_REVIVE_INDEX = 2 set SerializeIds_TEXTER_INDEX = 3 set SerializeIds_BOMBTOWER_INDEX = 4 set SerializeIds_VORTEX_INDEX = 5 set SerializeIds_EXECUTER_INDEX = 6 set SerializeIds_BOOSTER_INDEX = 7 set SerializeIds_UNITREMOVER_INDEX = 8 set SerializeIds_WAYPOINT_INDEX = 9 set SerializeIds_TELEPORTER_INDEX = 10 set SerializeIds_DOOR_INDEX = 11 set SerializeIds_SMALLOBS_INDEX = 12 set SerializeIds_BIGOBS_INDEX = 13 set SerializeIds_TREE_INDEX = 14 set SerializeIds_SPINNER_INDEX = 15 set SerializeIds_UNITCREATOR_INDEX = 16 set SerializeIds_TRACKS_INDEX = 17 set SerializeIds_FOUNTAIN_INDEX = 18 set SerializeIds_POWERNODE_INDEX = 19 set SerializeIds_TRAP_INDEX = 20 set SerializeIds_CONGA_INDEX = 21 set SerializeIds_TBLOCKER_INDEX = 22 set SerializeIds_VOLCANO_INDEX = 23 set SerializeIds_WALL_INDEX = 24 set SerializeIds_HWALL_INDEX = 25 set SerializeIds_VWALL_INDEX = 26 set SerializeIds_ARCANERY_INDEX = 27 set SerializeIds_SMALLKILL_INDEX = 28 set SerializeIds_BIGKILL_INDEX = 29 set SerializeIds_BOMBER_INDEX = 30 set SerializeIds_KEY_INDEX = 31 set SerializeIds_BIGRANDKILL_INDEX = 33 set SerializeIds_SMALLRANDKILL_INDEX = 34 set SerializeIds_TANKKILL_INDEX = 35 set SerializeIds_GLAIVEKILL_INDEX = 36 set SerializeIds_AIRKILL_INDEX = 37 set SerializeIds_FIREKILL_INDEX = 38 set SerializeIds_FACELESS_INDEX = 39 set SerializeIds_KNOCKBACKER_INDEX = 40 set SerializeIds_POINTER_INDEX = 41 set SerializeIds_OBJ_TARGET_INDEX = 42 set SerializeIds_TC_INDEX = 43 set SerializeIds_HIGH_OBS_INDEX = 44 set SerializeIds_COIN_INDEX = 48 set SerializeIds_TOME_INDEX = 49 set SerializeIds_BOOTS_INDEX = 50 return true endfunction function init_SetupBox takes nothing returns boolean set SetupBox_SETUP_BOX_ID = 2016424054 set SetupBox_EASY_ENABLE = 1095578161 set SetupBox_EASY_DISABLE = 1095578162 set SetupBox_ICEI_ID = 1093678391 set SetupBox_ICED_ID = 1093677110 set SetupBox_PI_ID = 1093677361 set SetupBox_PD_ID = 1093678393 set SetupBox_LI_ID = 1093678392 set SetupBox_LD_ID = 1093678401 set SetupBox_TURND_ID = 1093679158 set SetupBox_TURNI_ID = 1093679159 set SetupBox_ALLOW_ID = 1093677400 set SetupBox_CLEAR_ID = 1093677616 set SetupBox_BOSS_MODE_ID = 1093677893 set SetupBox_JUMP_TOGGLE_ID = 1093678931 set SetupBox_JUMP_SPELL_ID = 1093678642 set SetupBox_FIRST_PAGE = 1093678914 set SetupBox_SECOND_PAGE = 1093678913 set SetupBox_INC_GRAVITY = 1093678936 set SetupBox_DEC_GRAVITY = 1093678935 set SetupBox_ABIL_WIZARD = 1093678671 set SetupBox_ORB_TOGGLE_ID = 1093679170 set SetupBox_ORB_SPELL_ID = 1093679169 set SetupBox_CANCEL_TOGGLE_ID = 1093679171 set SetupBox_CUT_ALLOW = 1093679174 set SetupBox_CUT_DISABLE = 1093679175 set SetupBox_MAX_SLIDESPEED = 15. set SetupBox_MAX_DOT_DMG = 20. set SetupBox_BOSS_SOUND = new_SoundDefinition("Sound\\Dialogue\\Extra\\MuradinTaunt1.mp3", false) call registerPlayerUnitEvent(EVENT_PLAYER_UNIT_SELL_ITEM, ref_function_code__registerPlayerUnitEvent_SetupBox) call preloadAbility_1(SetupBox_ICEI_ID) call preloadAbility_1(SetupBox_ICED_ID) call preloadAbility_1(SetupBox_PI_ID) call preloadAbility_1(SetupBox_PD_ID) call preloadAbility_1(SetupBox_LI_ID) call preloadAbility_1(SetupBox_LD_ID) call preloadAbility_1(SetupBox_TURND_ID) call preloadAbility_1(SetupBox_TURNI_ID) call preloadAbility_1(SetupBox_ALLOW_ID) call preloadAbility_1(SetupBox_CLEAR_ID) call preloadAbility_1(SetupBox_BOSS_MODE_ID) call preloadAbility_1(SetupBox_JUMP_TOGGLE_ID) call preloadAbility_1(SetupBox_JUMP_SPELL_ID) call preloadAbility_1(SetupBox_FIRST_PAGE) call preloadAbility_1(SetupBox_SECOND_PAGE) call preloadAbility_1(SetupBox_INC_GRAVITY) call preloadAbility_1(SetupBox_DEC_GRAVITY) call preloadAbility_1(SetupBox_ABIL_WIZARD) call preloadAbility_1(SetupBox_ORB_TOGGLE_ID) call preloadAbility_1(SetupBox_ORB_SPELL_ID) call preloadAbility_1(SetupBox_CANCEL_TOGGLE_ID) call preloadAbility_1(SetupBox_CUT_ALLOW) call preloadAbility_1(SetupBox_CUT_DISABLE) return true endfunction function init_SetupObject takes nothing returns boolean local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 local real tuple_temp_7 local real tuple_temp_8 local real tuple_temp_9 local real tuple_temp_10 local real tuple_temp_11 local real tuple_temp_12 local real tuple_temp_13 local real tuple_temp_14 local real tuple_temp_15 local real tuple_temp_16 local real tuple_temp_17 local real tuple_temp_18 local real tuple_temp_19 local real tuple_temp_20 local real tuple_temp_21 local real tuple_temp_22 local real tuple_temp_23 local real tuple_temp_24 local real tuple_temp_25 local real tuple_temp_26 local real tuple_temp_27 local real tuple_temp_28 local real tuple_temp_29 local real tuple_temp_30 local real tuple_temp_31 local real tuple_temp_32 local real tuple_temp_33 local real tuple_temp_34 local real tuple_temp_35 local real tuple_temp_36 local real tuple_temp_37 local real tuple_temp_38 local real tuple_temp_39 local real tuple_temp_40 local real tuple_temp_41 local real tuple_temp_42 local real tuple_temp_43 local real tuple_temp_44 local real tuple_temp_45 local real tuple_temp_46 local real tuple_temp_47 local real tuple_temp_48 local real tuple_temp_49 local real tuple_temp_50 local real tuple_temp_51 local real tuple_temp_52 local real tuple_temp_53 local real tuple_temp_54 local real tuple_temp_55 local real tuple_temp_56 local real tuple_temp_57 local real tuple_temp_58 local real tuple_temp_59 local real tuple_temp_60 local real tuple_temp_61 local real tuple_temp_62 local real tuple_temp_63 local real tuple_temp_64 local real tuple_temp_65 local real tuple_temp_66 local real tuple_temp_67 local real tuple_temp_68 local real tuple_temp_69 local real tuple_temp_70 local real tuple_temp_71 local real tuple_temp_72 local real tuple_temp_73 local real tuple_temp_74 local real tuple_temp_75 local real tuple_temp_76 local real tuple_temp_77 local real tuple_temp_78 local real tuple_temp_79 local real tuple_temp_80 local real tuple_temp_81 local real tuple_temp_82 local real tuple_temp_83 local real tuple_temp_84 local real tuple_temp_85 local real tuple_temp_86 local real tuple_temp_87 local real tuple_temp_88 local real tuple_temp_89 local real tuple_temp_90 local real tuple_temp_91 local real tuple_temp_92 local real tuple_temp_93 local real tuple_temp_94 local real tuple_temp_95 local real tuple_temp_96 local real tuple_temp_97 local real tuple_temp_98 local real tuple_temp_99 local real tuple_temp_100 local real tuple_temp_101 local real tuple_temp_102 local real tuple_temp_103 local real tuple_temp_104 local real tuple_temp_105 local real tuple_temp_106 local real tuple_temp_107 local real tuple_temp_108 local real tuple_temp_109 local real tuple_temp_110 local real tuple_temp_111 local real tuple_temp_112 local real tuple_temp_113 local real tuple_temp_114 local real tuple_temp_115 local real tuple_temp_116 local real tuple_temp_117 local real tuple_temp_118 local real tuple_temp_119 call CreateTimer() set SetupObject_count = -1 set tuple_temp = 0.049 set tuple_temp_1 = 0.001 set SetupObject_offsets_x[0] = tuple_temp set SetupObject_offsets_y[0] = tuple_temp_1 set tuple_temp_2 = 0.048 set tuple_temp_3 = 0.002 set SetupObject_offsets_x[1] = tuple_temp_2 set SetupObject_offsets_y[1] = tuple_temp_3 set tuple_temp_4 = 0.047 set tuple_temp_5 = 0.003 set SetupObject_offsets_x[2] = tuple_temp_4 set SetupObject_offsets_y[2] = tuple_temp_5 set tuple_temp_6 = 0.046 set tuple_temp_7 = 0.004 set SetupObject_offsets_x[3] = tuple_temp_6 set SetupObject_offsets_y[3] = tuple_temp_7 set tuple_temp_8 = 0.045 set tuple_temp_9 = 0.005 set SetupObject_offsets_x[4] = tuple_temp_8 set SetupObject_offsets_y[4] = tuple_temp_9 set tuple_temp_10 = 0.044 set tuple_temp_11 = 0.006 set SetupObject_offsets_x[5] = tuple_temp_10 set SetupObject_offsets_y[5] = tuple_temp_11 set tuple_temp_12 = 0.043 set tuple_temp_13 = 0.007 set SetupObject_offsets_x[6] = tuple_temp_12 set SetupObject_offsets_y[6] = tuple_temp_13 set tuple_temp_14 = 0.041 set tuple_temp_15 = 0.008 set SetupObject_offsets_x[7] = tuple_temp_14 set SetupObject_offsets_y[7] = tuple_temp_15 set tuple_temp_16 = 0.040 set tuple_temp_17 = 0.009 set SetupObject_offsets_x[8] = tuple_temp_16 set SetupObject_offsets_y[8] = tuple_temp_17 set tuple_temp_18 = 0.039 set tuple_temp_19 = 0.008 set SetupObject_offsets_x[9] = tuple_temp_18 set SetupObject_offsets_y[9] = tuple_temp_19 set tuple_temp_20 = 0.038 set tuple_temp_21 = 0.007 set SetupObject_offsets_x[10] = tuple_temp_20 set SetupObject_offsets_y[10] = tuple_temp_21 set tuple_temp_22 = 0.037 set tuple_temp_23 = 0.006 set SetupObject_offsets_x[11] = tuple_temp_22 set SetupObject_offsets_y[11] = tuple_temp_23 set tuple_temp_24 = 0.036 set tuple_temp_25 = 0.005 set SetupObject_offsets_x[12] = tuple_temp_24 set SetupObject_offsets_y[12] = tuple_temp_25 set tuple_temp_26 = 0.035 set tuple_temp_27 = 0.004 set SetupObject_offsets_x[13] = tuple_temp_26 set SetupObject_offsets_y[13] = tuple_temp_27 set tuple_temp_28 = 0.034 set tuple_temp_29 = 0.003 set SetupObject_offsets_x[14] = tuple_temp_28 set SetupObject_offsets_y[14] = tuple_temp_29 set tuple_temp_30 = 0.033 set tuple_temp_31 = 0.002 set SetupObject_offsets_x[15] = tuple_temp_30 set SetupObject_offsets_y[15] = tuple_temp_31 set tuple_temp_32 = 0.032 set tuple_temp_33 = 0.001 set SetupObject_offsets_x[16] = tuple_temp_32 set SetupObject_offsets_y[16] = tuple_temp_33 set tuple_temp_34 = 0.031 set tuple_temp_35 = 0.002 set SetupObject_offsets_x[17] = tuple_temp_34 set SetupObject_offsets_y[17] = tuple_temp_35 set tuple_temp_36 = 0.030 set tuple_temp_37 = 0.003 set SetupObject_offsets_x[18] = tuple_temp_36 set SetupObject_offsets_y[18] = tuple_temp_37 set tuple_temp_38 = 0.029 set tuple_temp_39 = 0.004 set SetupObject_offsets_x[19] = tuple_temp_38 set SetupObject_offsets_y[19] = tuple_temp_39 set tuple_temp_40 = 0.028 set tuple_temp_41 = 0.005 set SetupObject_offsets_x[20] = tuple_temp_40 set SetupObject_offsets_y[20] = tuple_temp_41 set tuple_temp_42 = 0.027 set tuple_temp_43 = 0.006 set SetupObject_offsets_x[21] = tuple_temp_42 set SetupObject_offsets_y[21] = tuple_temp_43 set tuple_temp_44 = 0.026 set tuple_temp_45 = 0.007 set SetupObject_offsets_x[22] = tuple_temp_44 set SetupObject_offsets_y[22] = tuple_temp_45 set tuple_temp_46 = 0.025 set tuple_temp_47 = 0.008 set SetupObject_offsets_x[23] = tuple_temp_46 set SetupObject_offsets_y[23] = tuple_temp_47 set tuple_temp_48 = 0.024 set tuple_temp_49 = 0.009 set SetupObject_offsets_x[24] = tuple_temp_48 set SetupObject_offsets_y[24] = tuple_temp_49 set tuple_temp_50 = 0.023 set tuple_temp_51 = 0.008 set SetupObject_offsets_x[25] = tuple_temp_50 set SetupObject_offsets_y[25] = tuple_temp_51 set tuple_temp_52 = 0.022 set tuple_temp_53 = 0.007 set SetupObject_offsets_x[26] = tuple_temp_52 set SetupObject_offsets_y[26] = tuple_temp_53 set tuple_temp_54 = 0.021 set tuple_temp_55 = 0.006 set SetupObject_offsets_x[27] = tuple_temp_54 set SetupObject_offsets_y[27] = tuple_temp_55 set tuple_temp_56 = 0.020 set tuple_temp_57 = 0.005 set SetupObject_offsets_x[28] = tuple_temp_56 set SetupObject_offsets_y[28] = tuple_temp_57 set tuple_temp_58 = 0.019 set tuple_temp_59 = 0.004 set SetupObject_offsets_x[29] = tuple_temp_58 set SetupObject_offsets_y[29] = tuple_temp_59 set tuple_temp_60 = - 0.049 set tuple_temp_61 = 0.003 set SetupObject_offsets_x[30] = tuple_temp_60 set SetupObject_offsets_y[30] = tuple_temp_61 set tuple_temp_62 = - 0.048 set tuple_temp_63 = 0.002 set SetupObject_offsets_x[31] = tuple_temp_62 set SetupObject_offsets_y[31] = tuple_temp_63 set tuple_temp_64 = - 0.047 set tuple_temp_65 = 0.001 set SetupObject_offsets_x[32] = tuple_temp_64 set SetupObject_offsets_y[32] = tuple_temp_65 set tuple_temp_66 = - 0.046 set tuple_temp_67 = 0.002 set SetupObject_offsets_x[33] = tuple_temp_66 set SetupObject_offsets_y[33] = tuple_temp_67 set tuple_temp_68 = - 0.045 set tuple_temp_69 = 0.003 set SetupObject_offsets_x[34] = tuple_temp_68 set SetupObject_offsets_y[34] = tuple_temp_69 set tuple_temp_70 = - 0.044 set tuple_temp_71 = 0.004 set SetupObject_offsets_x[35] = tuple_temp_70 set SetupObject_offsets_y[35] = tuple_temp_71 set tuple_temp_72 = - 0.043 set tuple_temp_73 = 0.005 set SetupObject_offsets_x[36] = tuple_temp_72 set SetupObject_offsets_y[36] = tuple_temp_73 set tuple_temp_74 = - 0.041 set tuple_temp_75 = 0.006 set SetupObject_offsets_x[37] = tuple_temp_74 set SetupObject_offsets_y[37] = tuple_temp_75 set tuple_temp_76 = - 0.040 set tuple_temp_77 = 0.007 set SetupObject_offsets_x[38] = tuple_temp_76 set SetupObject_offsets_y[38] = tuple_temp_77 set tuple_temp_78 = - 0.039 set tuple_temp_79 = 0.008 set SetupObject_offsets_x[39] = tuple_temp_78 set SetupObject_offsets_y[39] = tuple_temp_79 set tuple_temp_80 = - 0.038 set tuple_temp_81 = 0.009 set SetupObject_offsets_x[40] = tuple_temp_80 set SetupObject_offsets_y[40] = tuple_temp_81 set tuple_temp_82 = - 0.037 set tuple_temp_83 = 0.008 set SetupObject_offsets_x[41] = tuple_temp_82 set SetupObject_offsets_y[41] = tuple_temp_83 set tuple_temp_84 = - 0.036 set tuple_temp_85 = 0.007 set SetupObject_offsets_x[42] = tuple_temp_84 set SetupObject_offsets_y[42] = tuple_temp_85 set tuple_temp_86 = - 0.035 set tuple_temp_87 = 0.006 set SetupObject_offsets_x[43] = tuple_temp_86 set SetupObject_offsets_y[43] = tuple_temp_87 set tuple_temp_88 = - 0.034 set tuple_temp_89 = 0.005 set SetupObject_offsets_x[44] = tuple_temp_88 set SetupObject_offsets_y[44] = tuple_temp_89 set tuple_temp_90 = - 0.033 set tuple_temp_91 = 0.004 set SetupObject_offsets_x[45] = tuple_temp_90 set SetupObject_offsets_y[45] = tuple_temp_91 set tuple_temp_92 = - 0.032 set tuple_temp_93 = 0.003 set SetupObject_offsets_x[46] = tuple_temp_92 set SetupObject_offsets_y[46] = tuple_temp_93 set tuple_temp_94 = - 0.031 set tuple_temp_95 = 0.002 set SetupObject_offsets_x[47] = tuple_temp_94 set SetupObject_offsets_y[47] = tuple_temp_95 set tuple_temp_96 = - 0.030 set tuple_temp_97 = 0.001 set SetupObject_offsets_x[48] = tuple_temp_96 set SetupObject_offsets_y[48] = tuple_temp_97 set tuple_temp_98 = - 0.029 set tuple_temp_99 = 0.002 set SetupObject_offsets_x[49] = tuple_temp_98 set SetupObject_offsets_y[49] = tuple_temp_99 set tuple_temp_100 = - 0.028 set tuple_temp_101 = 0.003 set SetupObject_offsets_x[50] = tuple_temp_100 set SetupObject_offsets_y[50] = tuple_temp_101 set tuple_temp_102 = - 0.027 set tuple_temp_103 = 0.004 set SetupObject_offsets_x[51] = tuple_temp_102 set SetupObject_offsets_y[51] = tuple_temp_103 set tuple_temp_104 = - 0.026 set tuple_temp_105 = 0.005 set SetupObject_offsets_x[52] = tuple_temp_104 set SetupObject_offsets_y[52] = tuple_temp_105 set tuple_temp_106 = - 0.025 set tuple_temp_107 = 0.006 set SetupObject_offsets_x[53] = tuple_temp_106 set SetupObject_offsets_y[53] = tuple_temp_107 set tuple_temp_108 = - 0.024 set tuple_temp_109 = 0.007 set SetupObject_offsets_x[54] = tuple_temp_108 set SetupObject_offsets_y[54] = tuple_temp_109 set tuple_temp_110 = - 0.023 set tuple_temp_111 = 0.008 set SetupObject_offsets_x[55] = tuple_temp_110 set SetupObject_offsets_y[55] = tuple_temp_111 set tuple_temp_112 = - 0.022 set tuple_temp_113 = 0.009 set SetupObject_offsets_x[56] = tuple_temp_112 set SetupObject_offsets_y[56] = tuple_temp_113 set tuple_temp_114 = - 0.021 set tuple_temp_115 = 0.000 set SetupObject_offsets_x[57] = tuple_temp_114 set SetupObject_offsets_y[57] = tuple_temp_115 set tuple_temp_116 = - 0.020 set tuple_temp_117 = 0.009 set SetupObject_offsets_x[58] = tuple_temp_116 set SetupObject_offsets_y[58] = tuple_temp_117 set tuple_temp_118 = - 0.019 set tuple_temp_119 = 0.008 set SetupObject_offsets_x[59] = tuple_temp_118 set SetupObject_offsets_y[59] = tuple_temp_119 return true endfunction function init_Simulate3dSound takes nothing returns boolean return true endfunction function init_SoundUtils takes nothing returns boolean set SoundUtils_DEFAULT_SOUND_STOPS_ON_LEAVE_RANGE = true set SoundUtils_DEFAULT_SOUND_FADE_IN_RATE = 10 set SoundUtils_DEFAULT_SOUND_FADE_OUT_RATE = 10 set SoundUtils_DEFAULT_SOUND_EAX_SETTINGS = "CombatSoundsEAX" set SoundUtils_DEFAULT_SOUND_VOLUME = 127 set SoundUtils_DEFAULT_SOUND_PITCH = 1. set SoundUtils_DEFAULT_SOUND_DURATION = 10000 set SoundUtils_SOUND_CHANNEL = 5 set SoundUtils_SOUND_MIN_DIST = 600. set SoundUtils_SOUND_MAX_DIST = 8000. set SoundUtils_SOUND_DIST_CUT = 1500. return true endfunction function init_Sounds takes nothing returns boolean set Sounds_arrangedTeamInvitation = "Sound\\Interface\\ArrangedTeamInvitation.wav" set Sounds_questFailed = "Sound\\Interface\\QuestFailed.wav" return true endfunction function init_Soundsets takes nothing returns boolean return true endfunction function init_SpinnerObjects takes nothing returns boolean set SpinnerObjects_SPIN_ADD_SINGLE_ID = 1095577913 set SpinnerObjects_SPIN_ADD_GROUP_ID = 1095577953 set SpinnerObjects_SPIN_INC_SPEED_ID = 1095577955 set SpinnerObjects_SPIN_DEC_SPEED_ID = 1095577956 set SpinnerObjects_SPIN_COS_INC_ID = 1095577957 set SpinnerObjects_SPIN_COS_DEC_ID = 1095577958 set SpinnerObjects_SPIN_SIN_INC_ID = 1095577959 set SpinnerObjects_SPIN_SIN_DEC_ID = 1095577960 return true endfunction function init_Squares takes nothing returns boolean set Squares_squares[0] = "Asshat!" set Squares_squares[1] = "gtfo" set Squares_squares[2] = "wtf?" set Squares_squares[3] = "really?" set Squares_squares[4] = "Dumbass!" set Squares_squares[5] = "STOP" set Squares_squares[6] = "Are you serious?" set Squares_squares[7] = "u wot m8" set Squares_squares[8] = "*poke*" set Squares_squares[9] = "wake up!" set Squares_squares[10] = "Heyyyy" set Squares_squares[11] = ":^)" set Squares_squares[12] = "^)^" set Squares_squares[13] = "Juicebag" set Squares_squares[14] = "whoopsie" set Squares_squares[15] = "monkey!" set Squares_squares[16] = "get shrekt" set Squares_squares[17] = "nou" set Squares_squares[18] = "reported!" set Squares_squares[19] = "Bengel.." set Squares_squares[20] = "calm down" return true endfunction function init_Startmaze takes nothing returns boolean call Condition(ref_function_code__Condition_Startmaze) return true endfunction function init_Startmazes takes nothing returns boolean set Startmazes_currentMaze = -1 return true endfunction function init_String takes nothing returns boolean set String_ENABLE_MULTIBYTE_SUPPORT = false set String_charset = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" set String_numberset = "0123456789" call string_length(String_numberset) call string_length(String_charset) return true endfunction function c2sInit takes nothing returns nothing set StringUtils_c2s[0] = "" set StringUtils_c2s[1] = "" set StringUtils_c2s[2] = "" set StringUtils_c2s[3] = "" set StringUtils_c2s[4] = "" set StringUtils_c2s[5] = "" set StringUtils_c2s[6] = "" set StringUtils_c2s[7] = "" set StringUtils_c2s[8] = "" set StringUtils_c2s[9] = "\t" set StringUtils_c2s[10] = "\n" set StringUtils_c2s[11] = "" set StringUtils_c2s[12] = "" set StringUtils_c2s[13] = "\r" set StringUtils_c2s[14] = "" set StringUtils_c2s[15] = "" set StringUtils_c2s[16] = "" set StringUtils_c2s[17] = "" set StringUtils_c2s[18] = "" set StringUtils_c2s[19] = "" set StringUtils_c2s[20] = "" set StringUtils_c2s[21] = "" set StringUtils_c2s[22] = "" set StringUtils_c2s[23] = "" set StringUtils_c2s[24] = "" set StringUtils_c2s[25] = "" set StringUtils_c2s[26] = "" set StringUtils_c2s[27] = "" set StringUtils_c2s[28] = "" set StringUtils_c2s[29] = "" set StringUtils_c2s[30] = "" set StringUtils_c2s[31] = "" set StringUtils_c2s[32] = " " set StringUtils_c2s[33] = "!" set StringUtils_c2s[34] = "\"" set StringUtils_c2s[35] = "#" set StringUtils_c2s[36] = "$" set StringUtils_c2s[37] = "%" set StringUtils_c2s[38] = "&" set StringUtils_c2s[39] = "'" set StringUtils_c2s[40] = "(" set StringUtils_c2s[41] = ")" set StringUtils_c2s[42] = "*" set StringUtils_c2s[43] = "+" set StringUtils_c2s[44] = "," set StringUtils_c2s[45] = "-" set StringUtils_c2s[46] = "." set StringUtils_c2s[47] = "/" set StringUtils_c2s[48] = "0" set StringUtils_c2s[49] = "1" set StringUtils_c2s[50] = "2" set StringUtils_c2s[51] = "3" set StringUtils_c2s[52] = "4" set StringUtils_c2s[53] = "5" set StringUtils_c2s[54] = "6" set StringUtils_c2s[55] = "7" set StringUtils_c2s[56] = "8" set StringUtils_c2s[57] = "9" set StringUtils_c2s[58] = ":" set StringUtils_c2s[59] = ";" set StringUtils_c2s[60] = "<" set StringUtils_c2s[61] = "=" set StringUtils_c2s[62] = ">" set StringUtils_c2s[63] = "?" set StringUtils_c2s[64] = "@" set StringUtils_c2s[65] = "A" set StringUtils_c2s[66] = "B" set StringUtils_c2s[67] = "C" set StringUtils_c2s[68] = "D" set StringUtils_c2s[69] = "E" set StringUtils_c2s[70] = "F" set StringUtils_c2s[71] = "G" set StringUtils_c2s[72] = "H" set StringUtils_c2s[73] = "I" set StringUtils_c2s[74] = "J" set StringUtils_c2s[75] = "K" set StringUtils_c2s[76] = "L" set StringUtils_c2s[77] = "M" set StringUtils_c2s[78] = "N" set StringUtils_c2s[79] = "O" set StringUtils_c2s[80] = "P" set StringUtils_c2s[81] = "Q" set StringUtils_c2s[82] = "R" set StringUtils_c2s[83] = "S" set StringUtils_c2s[84] = "T" set StringUtils_c2s[85] = "U" set StringUtils_c2s[86] = "V" set StringUtils_c2s[87] = "W" set StringUtils_c2s[88] = "X" set StringUtils_c2s[89] = "Y" set StringUtils_c2s[90] = "Z" set StringUtils_c2s[91] = "[" set StringUtils_c2s[92] = "\\" set StringUtils_c2s[93] = "]" set StringUtils_c2s[94] = "^" set StringUtils_c2s[95] = "_" set StringUtils_c2s[96] = "`" set StringUtils_c2s[97] = "a" set StringUtils_c2s[98] = "b" set StringUtils_c2s[99] = "c" set StringUtils_c2s[100] = "d" set StringUtils_c2s[101] = "e" set StringUtils_c2s[102] = "f" set StringUtils_c2s[103] = "g" set StringUtils_c2s[104] = "h" set StringUtils_c2s[105] = "i" set StringUtils_c2s[106] = "j" set StringUtils_c2s[107] = "k" set StringUtils_c2s[108] = "l" set StringUtils_c2s[109] = "m" set StringUtils_c2s[110] = "n" set StringUtils_c2s[111] = "o" set StringUtils_c2s[112] = "p" set StringUtils_c2s[113] = "q" set StringUtils_c2s[114] = "r" set StringUtils_c2s[115] = "s" set StringUtils_c2s[116] = "t" set StringUtils_c2s[117] = "u" set StringUtils_c2s[118] = "v" set StringUtils_c2s[119] = "w" set StringUtils_c2s[120] = "x" set StringUtils_c2s[121] = "y" set StringUtils_c2s[122] = "z" set StringUtils_c2s[123] = "{" set StringUtils_c2s[124] = "|" set StringUtils_c2s[125] = "}" set StringUtils_c2s[126] = "~" set StringUtils_c2s[127] = "" endfunction function string_toUpperCase takes string this_1 returns string return StringCase(this_1, true) endfunction function s2cInit takes nothing returns nothing local integer i = 0 local integer temp = StringUtils_MAX_INDEX loop exitwhen i > temp if string_toUpperCase(StringUtils_c2s[i]) == StringUtils_c2s[i] then set StringUtils_s2c[StringHash(StringUtils_c2s[i]) / 2033480 + 1002] = i endif set i = i + 1 endloop endfunction function widthInit takes nothing returns nothing set StringUtils_width[0] = 0 set StringUtils_width[1] = 0 set StringUtils_width[2] = 0 set StringUtils_width[3] = 0 set StringUtils_width[4] = 0 set StringUtils_width[5] = 0 set StringUtils_width[6] = 0 set StringUtils_width[7] = 0 set StringUtils_width[8] = 0 set StringUtils_width[9] = 0 set StringUtils_width[10] = 1000000000 set StringUtils_width[11] = 0 set StringUtils_width[12] = 0 set StringUtils_width[13] = 0 set StringUtils_width[14] = 0 set StringUtils_width[15] = 0 set StringUtils_width[16] = 0 set StringUtils_width[17] = 0 set StringUtils_width[18] = 0 set StringUtils_width[19] = 0 set StringUtils_width[20] = 0 set StringUtils_width[21] = 0 set StringUtils_width[22] = 0 set StringUtils_width[23] = 0 set StringUtils_width[24] = 0 set StringUtils_width[25] = 0 set StringUtils_width[26] = 0 set StringUtils_width[27] = 0 set StringUtils_width[28] = 0 set StringUtils_width[29] = 0 set StringUtils_width[30] = 0 set StringUtils_width[31] = 0 set StringUtils_width[32] = 70 set StringUtils_width[33] = 60 set StringUtils_width[34] = 80 set StringUtils_width[35] = 180 set StringUtils_width[36] = 140 set StringUtils_width[37] = 199 set StringUtils_width[38] = 219 set StringUtils_width[39] = 40 set StringUtils_width[40] = 80 set StringUtils_width[41] = 80 set StringUtils_width[42] = 121 set StringUtils_width[43] = 140 set StringUtils_width[44] = 55 set StringUtils_width[45] = 104 set StringUtils_width[46] = 51 set StringUtils_width[47] = 121 set StringUtils_width[48] = 160 set StringUtils_width[49] = 60 set StringUtils_width[50] = 160 set StringUtils_width[51] = 160 set StringUtils_width[52] = 180 set StringUtils_width[53] = 160 set StringUtils_width[54] = 160 set StringUtils_width[55] = 140 set StringUtils_width[56] = 160 set StringUtils_width[57] = 160 set StringUtils_width[58] = 60 set StringUtils_width[59] = 60 set StringUtils_width[60] = 140 set StringUtils_width[61] = 140 set StringUtils_width[62] = 140 set StringUtils_width[63] = 140 set StringUtils_width[64] = 199 set StringUtils_width[65] = 206 set StringUtils_width[66] = 162 set StringUtils_width[67] = 183 set StringUtils_width[68] = 193 set StringUtils_width[69] = 153 set StringUtils_width[70] = 122 set StringUtils_width[71] = 204 set StringUtils_width[72] = 200 set StringUtils_width[73] = 77 set StringUtils_width[74] = 80 set StringUtils_width[75] = 183 set StringUtils_width[76] = 148 set StringUtils_width[77] = 264 set StringUtils_width[78] = 200 set StringUtils_width[79] = 225 set StringUtils_width[80] = 156 set StringUtils_width[81] = 237 set StringUtils_width[82] = 179 set StringUtils_width[83] = 156 set StringUtils_width[84] = 151 set StringUtils_width[85] = 187 set StringUtils_width[86] = 183 set StringUtils_width[87] = 282 set StringUtils_width[88] = 204 set StringUtils_width[89] = 179 set StringUtils_width[90] = 179 set StringUtils_width[91] = 80 set StringUtils_width[92] = 100 set StringUtils_width[93] = 80 set StringUtils_width[94] = 140 set StringUtils_width[95] = 140 set StringUtils_width[96] = 100 set StringUtils_width[97] = 151 set StringUtils_width[98] = 159 set StringUtils_width[99] = 147 set StringUtils_width[100] = 162 set StringUtils_width[101] = 159 set StringUtils_width[102] = 98 set StringUtils_width[103] = 176 set StringUtils_width[104] = 159 set StringUtils_width[105] = 65 set StringUtils_width[106] = 77 set StringUtils_width[107] = 147 set StringUtils_width[108] = 68 set StringUtils_width[109] = 227 set StringUtils_width[110] = 156 set StringUtils_width[111] = 166 set StringUtils_width[112] = 162 set StringUtils_width[113] = 162 set StringUtils_width[114] = 98 set StringUtils_width[115] = 126 set StringUtils_width[116] = 100 set StringUtils_width[117] = 159 set StringUtils_width[118] = 159 set StringUtils_width[119] = 229 set StringUtils_width[120] = 159 set StringUtils_width[121] = 159 set StringUtils_width[122] = 147 set StringUtils_width[123] = 80 set StringUtils_width[124] = 60 set StringUtils_width[125] = 80 set StringUtils_width[126] = 140 set StringUtils_width[127] = 0 endfunction function initialize_3548 takes nothing returns nothing call c2sInit() call s2cInit() call widthInit() endfunction function init_StringUtils takes nothing returns boolean set StringUtils_MAX_INDEX = 126 + 1 set StringUtils_DEFAULT_WIDTH = 0 call initialize_3548() call stringToIndex("") return true endfunction function init_SyncSimple takes nothing returns boolean local trigger trig local integer i local integer temp set SyncSimple_DEFAULT_PREFIX = "S" set SyncSimple_LAST_CHUNK_PREFIX = "T" set SyncSimple_SYNC_IN_REPLAYS = false set SyncSimple_syncQueue = new_LinkedList() set trig = CreateTrigger() set i = 0 set temp = bj_MAX_PLAYER_SLOTS - 1 loop exitwhen i > temp call BlzTriggerRegisterPlayerSyncEvent(trig, Player_players[i], SyncSimple_DEFAULT_PREFIX, false) call BlzTriggerRegisterPlayerSyncEvent(trig, Player_players[i], SyncSimple_LAST_CHUNK_PREFIX, false) set i = i + 1 endloop call trigger_addAction(trig, ref_function_code__addAction_SyncSimple) return true endfunction function init_Table takes nothing returns boolean set Table_ht = hashtable_compiletime_2519 return true endfunction function init_TargetsAllowed takes nothing returns boolean return true endfunction function init_Teleporter takes nothing returns boolean set Teleporter_EFFECT_STRING = "Abilities\\Spells\\NightElf\\Blink\\BlinkCaster.mdl" set Teleporter_EVENT_RADIUS = 38. return true endfunction function init_TerrainBlocker takes nothing returns boolean return true endfunction function init_TerrainChanger takes nothing returns boolean set TerrainChanger_TERRAIN_CHANGER_ID = 1953657443 set TerrainChanger_TERRAIN_O_WALKABLE_ID = 1093677639 set TerrainChanger_TERRAIN_O_UNWALKABLE_ID = 1093677635 set TerrainChanger_TERRAIN_O_ICE_ID = 1093677634 set TerrainChanger_TERRAIN_O_UNICE_ID = 1093677637 set TerrainChanger_TERRAIN_I_WALKABLE_ID = 1093677640 set TerrainChanger_TERRAIN_I_UNWALKABLE_ID = 1093677638 set TerrainChanger_TERRAIN_I_ICE_ID = 1093677633 set TerrainChanger_TERRAIN_I_UNICE_ID = 1093677636 set TerrainChanger_TERRAIN_INC_H_ID = 1093677387 set TerrainChanger_TERRAIN_INC_V_ID = 1093677389 set TerrainChanger_TERRAIN_DEC_H_ID = 1093677397 set TerrainChanger_TERRAIN_DEC_V_ID = 1093677396 call preloadAbility_1(TerrainChanger_TERRAIN_O_WALKABLE_ID) call preloadAbility_1(TerrainChanger_TERRAIN_O_UNWALKABLE_ID) call preloadAbility_1(TerrainChanger_TERRAIN_O_ICE_ID) call preloadAbility_1(TerrainChanger_TERRAIN_O_UNICE_ID) call preloadAbility_1(TerrainChanger_TERRAIN_I_WALKABLE_ID) call preloadAbility_1(TerrainChanger_TERRAIN_I_UNWALKABLE_ID) call preloadAbility_1(TerrainChanger_TERRAIN_I_ICE_ID) call preloadAbility_1(TerrainChanger_TERRAIN_I_UNICE_ID) call preloadAbility_1(TerrainChanger_TERRAIN_INC_H_ID) call preloadAbility_1(TerrainChanger_TERRAIN_INC_V_ID) call preloadAbility_1(TerrainChanger_TERRAIN_DEC_H_ID) call preloadAbility_1(TerrainChanger_TERRAIN_DEC_V_ID) return true endfunction function alloc_ForForceCallback_execute_TerrainData takes nothing returns integer local integer this_1 if ForForceCallback_firstFree == 0 then if ForForceCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForForceCallback_maxIndex = ForForceCallback_maxIndex + 1 set this_1 = ForForceCallback_maxIndex set ForForceCallback_typeId[this_1] = 849 else call error("Out of memory: Could not create ForForceCallback_execute_TerrainData.") set this_1 = 0 endif else set ForForceCallback_firstFree = ForForceCallback_firstFree - 1 set this_1 = ForForceCallback_nextFree[ForForceCallback_firstFree] set ForForceCallback_typeId[this_1] = 849 endif return this_1 endfunction function init_TerrainData takes nothing returns boolean local real realPos_x_1 local real realPos_y_1 local integer clVar local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 set TerrainData_xCells = real_round(real_abs(MapBounds_playableMin_x - MapBounds_playableMax_x) / 128.) call real_round(real_abs(MapBounds_playableMin_y - MapBounds_playableMax_y) / 128.) set TerrainData_tileMap = InitHashtable() set tuple_temp = MapBounds_playableMin_x set tuple_temp_1 = MapBounds_playableMin_y set realPos_x_1 = tuple_temp set realPos_y_1 = tuple_temp_1 loop exitwhen not (realPos_x_1 < MapBounds_playableMax_x) set clVar = alloc_ForForceCallback_execute_TerrainData() set tuple_temp_2 = realPos_x_1 set tuple_temp_3 = realPos_y_1 set realPos_x[clVar] = tuple_temp_2 set realPos_y[clVar] = tuple_temp_3 call execute(clVar) set realPos_x_1 = realPos_x_1 + 128. endloop return true endfunction function init_TerrainModder takes nothing returns boolean set TerrainModder_WALKABLE_ID = 1213018168 set TerrainModder_UNWALKABLE_ID = 1213018169 set TerrainModder_SLIDEABLE_ICE_ID = 1213018209 set TerrainModder_SLIDEABLE_UNC_ICE_ID = 1213018210 set TerrainModder_ICE_ABILITY = 1093678643 set TerrainModder_REVICE_ABILITY = 1093677123 set TerrainModder_UNWALKABLE_MOD_ABILITY_ID[0] = 1093678170 set TerrainModder_UNWALKABLE_MOD_ABILITY_ID[1] = 1093678169 set TerrainModder_UNWALKABLE_MOD_ABILITY_ID[2] = 1093678168 set TerrainModder_BRUSH_1_IDLE_ABILITY = 1095577967 set TerrainModder_BRUSH_1_ACTIVE_ABILITY = 1095577968 set TerrainModder_BRUSH_3_IDLE_ABILITY = 1095577969 set TerrainModder_BRUSH_3_ACTIVE_ABILITY = 1095577970 set TerrainModder_BRUSH_5_IDLE_ABILITY = 1095577971 set TerrainModder_BRUSH_5_ACTIVE_ABILITY = 1095577972 set TerrainModder_BRUSH_CIRCLE_ID = 1095577973 set TerrainModder_BRUSH_RECT_ID = 1095577974 return true endfunction function init_TerrainUtils takes nothing returns boolean local item receiver set TerrainUtils_MAX_RANGE_SQ = real_squared(10.) set TerrainUtils_DUMMY_ITEM_ID = 2003790951 set receiver = createItem(TerrainUtils_DUMMY_ITEM_ID, Vectors_ZERO2_x, Vectors_ZERO2_y) call item_setVisible(receiver, false) set TerrainUtils_dummyItem = receiver set TerrainUtils_itemSearchRect = Rect(0., 0., 128., 128.) set TerrainUtils_hiddenItemsCount = 0 set TerrainUtils_TILES_X = real_toInt(MapBounds_boundMax_x - MapBounds_boundMin_x) / 128 + 1 set TerrainUtils_TILES_Y = real_toInt(MapBounds_boundMax_y - MapBounds_boundMin_y) / 128 + 1 return true endfunction function alloc_EventListener_add_Texter takes nothing returns integer local integer this_1 if EventListener_firstFree == 0 then if EventListener_maxIndex < JASS_MAX_ARRAY_SIZE then set EventListener_maxIndex = EventListener_maxIndex + 1 set this_1 = EventListener_maxIndex set EventListener_typeId[this_1] = 826 else call error("Out of memory: Could not create EventListener_add_Texter.") set this_1 = 0 endif else set EventListener_firstFree = EventListener_firstFree - 1 set this_1 = EventListener_nextFree[EventListener_firstFree] set EventListener_typeId[this_1] = 826 endif return this_1 endfunction function init_Texter takes nothing returns boolean local integer clVar local playerevent temp set Texter_EVENT_RADIUS = 32. set Texter_stdcolors[0] = "white" set Texter_stdcolors[1] = "red" set Texter_stdcolors[2] = "blue" set Texter_stdcolors[3] = "teal" set Texter_stdcolors[4] = "purple" set Texter_stdcolors[5] = "yellow" set Texter_stdcolors[6] = "orange" set Texter_stdcolors[7] = "green" set Texter_stdcolors[8] = "pink" set Texter_stdcolors[9] = "gray" set Texter_stdcolors[10] = "lightblue" set Texter_stdcolors[11] = "darkgreen" set Texter_stdcolors[12] = "brown" set temp = ClosureEvents_EVENT_PLAYER_CHAT_FILTER set clVar = alloc_EventListener_add_Texter() call construct_EventListener(clVar) call EventListener_add(temp, clVar) return true endfunction function init_Textures takes nothing returns boolean set Textures_black_mask = "ReplaceableTextures\\CameraMasks\\Black_mask.blp" return true endfunction function init_TimerUtils takes nothing returns boolean set TimerUtils_freeTimersCount = 0 set TimerUtils_timerData = new_Table() set TimerUtils_HELD = 679645218 call new_HashMap() return true endfunction function init_Tome takes nothing returns boolean set Tome_TOME_DUMMY_ID = 2016424041 return true endfunction function init_Tracks takes nothing returns boolean set Tracks_TRACKS_ID = 2016424055 set Tracks_TRACKS_1_ID = 2016424056 set Tracks_TRACKS_2_ID = 2016424057 set Tracks_TRACKS_3_ID = 2016424058 set Tracks_INC_ID = 1093678163 set Tracks_DEC_ID = 1093678164 set Tracks_LEFT_ID = 1093678156 set Tracks_RIGHT_ID = 1093678165 set Tracks_INCLENGTH_ID = 1093678152 set Tracks_DECLENGTH_ID = 1093678384 set Tracks_TRACKS[0] = Tracks_TRACKS_1_ID set Tracks_TRACKS[1] = Tracks_TRACKS_2_ID set Tracks_TRACKS[2] = Tracks_TRACKS_3_ID return true endfunction function init_Trap takes nothing returns boolean set Trap_DECREASE_DURATION_ID = 1095578417 set Trap_INCREASE_DURATION_ID = 1095578418 set Trap_DECREASE_INTERVAL_ID = 1095578419 set Trap_INCREASE_INTERVAL_ID = 1095578420 set Trap_DECREASE_VALUE_ID = 1095578421 set Trap_INCREASE_VALUE_ID = 1095578422 set Trap_POISON_ID = 1095578423 set Trap_SHAKE_ID = 1095578424 set Trap_SPEED_ID = 1095578425 set Trap_INSTANT_KILL_ID = 1095578469 set Trap_STUN_ID = 1095578465 set Trap_KNOCKBACK_ID = 1095578466 set Trap_KNOCKBACK_PULL_ID = 1095578468 set Trap_KNOCKBACK_PUSH_ID = 1095578467 set Trap_NEXT_EFFECT_ID = 1095578472 set Trap_PREVIOUS_EFFECT_ID = 1095578473 set Trap_START_ID = 1095578470 set Trap_STOP_ID = 1095578471 set Trap_EVENT_RADIUS = 65. set Trap_SPECIAL_ID = 1093678934 set Trap_STUN_BUFF = 1093678666 set Trap_SPEED_BUFF_NEG = 1093677898 set Trap_SPEED_BUFF_POS = 1093677897 set Trap_SFX_COUNT = 9 set Trap_SFX_STRINGS[0] = "Abilities\\Spells\\Undead\\AnimateDead\\AnimateDeadTarget.mdl" set Trap_SFX_STRINGS[1] = "Abilities\\Spells\\Undead\\FrostNova\\FrostNovaTarget.mdl" set Trap_SFX_STRINGS[2] = "Abilities\\Spells\\Undead\\Impale\\ImpaleMissTarget.mdl" set Trap_SFX_STRINGS[3] = "Abilities\\Spells\\Other\\Doom\\DoomDeath.mdl" set Trap_SFX_STRINGS[4] = "Abilities\\Spells\\Human\\ManaFlare\\ManaFlareBoltImpact.mdl" set Trap_SFX_STRINGS[5] = "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" set Trap_SFX_STRINGS[6] = "Abilities\\Spells\\Other\\Volcano\\VolcanoDeath.mdl" set Trap_SFX_STRINGS[7] = "Abilities\\Spells\\Demon\\DarkPortal\\DarkPortalTarget.mdl" set Trap_SFX_STRINGS[8] = "Objects\\Spawnmodels\\NightElf\\NEDeathSmall\\NEDeathSmall.mdl" set Trap_SFX_STRINGS[9] = "" return true endfunction function init_Tree takes nothing returns boolean set Tree_TREE_ID = 2016424059 return true endfunction function initTypecastData takes nothing returns nothing call dispatch_Table_Table_Table_saveString(TypeCasting_typecastdata, 0, "") endfunction function init_TypeCasting takes nothing returns boolean set TypeCasting_typecastdata = new_Table() set TypeCasting_R2I_PRECISION = 1000. call InitHashtable() call initTypecastData() return true endfunction function init_UI takes nothing returns boolean set UI_confirmation = "UI\\Feedback\\Confirmation\\Confirmation.mdx" set UI_goldCredit = "UI\\Feedback\\GoldCredit\\GoldCredit.mdx" return true endfunction function init_UnitIds takes nothing returns boolean set UnitIds_shade = 1970497636 return true endfunction function onEnter takes code c returns nothing call trigger_addCondition(OnUnitEnterLeave_eventTrigger, Filter(c)) endfunction function onLeave takes code c returns nothing call trigger_addAction(OnUnitEnterLeave_eventTrigger, c) endfunction function init_UnitIndexer takes nothing returns boolean set UnitIndexer_onIndexTrigger = CreateTrigger() set UnitIndexer_onDeindexTrigger = CreateTrigger() set UnitIndexer_tempUnitsCount = 0 call onEnter(ref_function_code__onEnter_UnitIndexer) call onLeave(ref_function_code__onLeave_UnitIndexer) return true endfunction function init_UnitProducer takes nothing returns boolean set UnitProducer_UNIT_PRODUCER_ID = 1213018167 set UnitProducer_FIRST_PAGE = 1093678914 set UnitProducer_SECOND_PAGE = 1093678913 set UnitProducer_AIR_KILLER = 1093678937 set UnitProducer_BIG_KILLER = 1093678406 set UnitProducer_SMALL_KILLER = 1093678411 set UnitProducer_BR_KILLER = 1093678407 set UnitProducer_SR_KILLER = 1093678410 set UnitProducer_TANK_KILLER = 1093678413 set UnitProducer_OBJ_TARGET = 1093678414 set UnitProducer_GLAIVE_KILLER = 1093678408 set UnitProducer_T_CHANGER = 1093678412 set UnitProducer_POINTER = 1093678409 set UnitProducer_BOMBER = 1093678415 set UnitProducer_KNOCKBACK = 1093678915 set UnitProducer_FACELESS = 1093678933 set UnitProducer_FIRE = 1097232997 call preloadAbility_1(UnitProducer_FIRST_PAGE) call preloadAbility_1(UnitProducer_SECOND_PAGE) call preloadAbility_1(UnitProducer_AIR_KILLER) call preloadAbility_1(UnitProducer_BIG_KILLER) call preloadAbility_1(UnitProducer_SMALL_KILLER) call preloadAbility_1(UnitProducer_BR_KILLER) call preloadAbility_1(UnitProducer_SR_KILLER) call preloadAbility_1(UnitProducer_TANK_KILLER) call preloadAbility_1(UnitProducer_OBJ_TARGET) call preloadAbility_1(UnitProducer_GLAIVE_KILLER) call preloadAbility_1(UnitProducer_T_CHANGER) call preloadAbility_1(UnitProducer_POINTER) call preloadAbility_1(UnitProducer_BOMBER) call preloadAbility_1(UnitProducer_KNOCKBACK) call preloadAbility_1(UnitProducer_FACELESS) return true endfunction function init_UnitRemover takes nothing returns boolean return true endfunction function init_Unitcreator takes nothing returns boolean set Unitcreator_INCREASE_INTERVAL_ID = 1095578164 set Unitcreator_DECREASE_INTERVAL_ID = 1095578165 set Unitcreator_FIXED_ID = 1095578166 set Unitcreator_RANDOM_ID = 1095578167 set Unitcreator_UTYPE_TANK = 1095578168 set Unitcreator_UTYPE_SK = 1095578169 set Unitcreator_UTYPE_BK = 1095578209 set Unitcreator_UTYPE_SRK = 1095578210 set Unitcreator_UTYPE_BRK = 1095578211 set Unitcreator_UTYPE_POINTER = 1095578212 set Unitcreator_UTYPE_KNOCKER = 1095578213 set Unitcreator_UTYPE_GLAIVE = 1095578214 set Unitcreator_KEY_SPAWN = "s" return true endfunction function init_Units takes nothing returns boolean return true endfunction function init_Vectors takes nothing returns boolean local real tuple_temp = 0. local real tuple_temp_1 = 0. local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 local real tuple_temp_7 local real tuple_temp_8 local real tuple_temp_9 local real tuple_temp_10 local real tuple_temp_11 local real tuple_temp_12 set Vectors_ZERO2_x = tuple_temp set Vectors_ZERO2_y = tuple_temp_1 set tuple_temp_2 = 0. set tuple_temp_3 = 0. set tuple_temp_4 = 0. set Vectors_ZERO3_x = tuple_temp_2 set Vectors_ZERO3_y = tuple_temp_3 set Vectors_ZERO3_z = tuple_temp_4 set tuple_temp_5 = 1. set tuple_temp_6 = 0. set Vectors_RIGHT_x = tuple_temp_5 set Vectors_RIGHT_y = tuple_temp_6 set tuple_temp_7 = 0. set tuple_temp_8 = 1. set Vectors_UP_x = tuple_temp_7 set Vectors_UP_y = tuple_temp_8 set tuple_temp_9 = -1. set tuple_temp_10 = 0. set Vectors_LEFT_x = tuple_temp_9 set Vectors_LEFT_y = tuple_temp_10 set tuple_temp_11 = 0. set tuple_temp_12 = -1. set Vectors_DOWN_x = tuple_temp_11 set Vectors_DOWN_y = tuple_temp_12 set Vectors_tempLoc = Location(0., 0.) return true endfunction function init_Vortex takes nothing returns boolean set Vortex_INC_GRAV_ID = 1093678154 set Vortex_DEC_GRAV_ID = 1093678155 set Vortex_GRAV_RADIUS_BIG = 415. * 415. set Vortex_GRAV_RADIUS_MEDIUM = 207. * 207. set Vortex_GRAV_RADIUS_SMALL = 103. * 103. set Vortex_ZMODE_NONE = 1095578226 set Vortex_ZMODE_CYLI = 1095578227 set Vortex_ZMODE_HEMI = 1095578228 set Vortex_SIZE_SMALL = 1095578229 set Vortex_SIZE_MED = 1095578230 set Vortex_SIZE_BIG = 1095578231 return true endfunction function init_Waypoint takes nothing returns boolean set Waypoint_INCREMENT = .25 set Waypoint_EVENT_RADIUS = 32. return true endfunction function init_WaypointObjects takes nothing returns boolean set WaypointObjects_AND_CONNECTION_ID = 1095577962 set WaypointObjects_CLEAR_CONNECTION_ID = 1095577963 set WaypointObjects_DECREASE_DELAY_ID = 1095577964 set WaypointObjects_INCREASE_DELAY_ID = 1095577965 set WaypointObjects_NO_WISPS_ID = 1095577966 return true endfunction function init_Weapon takes nothing returns boolean set Weapon_ATTACK_MELEE = 1093678919 set Weapon_ATTACK_RANGED = 1093678920 return true endfunction function alloc_WeaponListener_WeaponType_WeaponTypes takes nothing returns integer local integer this_1 if WeaponListener_firstFree == 0 then if WeaponListener_maxIndex < JASS_MAX_ARRAY_SIZE then set WeaponListener_maxIndex = WeaponListener_maxIndex + 1 set this_1 = WeaponListener_maxIndex else call error("Out of memory: Could not create WeaponListener_WeaponType_WeaponTypes.") set this_1 = 0 endif else set WeaponListener_firstFree = WeaponListener_firstFree - 1 set this_1 = WeaponListener_nextFree[WeaponListener_firstFree] endif return this_1 endfunction function alloc_WeaponListener_WeaponType_WeaponTypes_1945 takes nothing returns integer local integer this_1 if WeaponListener_firstFree == 0 then if WeaponListener_maxIndex < JASS_MAX_ARRAY_SIZE then set WeaponListener_maxIndex = WeaponListener_maxIndex + 1 set this_1 = WeaponListener_maxIndex else call error("Out of memory: Could not create WeaponListener_WeaponType_WeaponTypes.") set this_1 = 0 endif else set WeaponListener_firstFree = WeaponListener_firstFree - 1 set this_1 = WeaponListener_nextFree[WeaponListener_firstFree] endif return this_1 endfunction function alloc_WeaponListener_WeaponType_WeaponTypes_1946 takes nothing returns integer local integer this_1 if WeaponListener_firstFree == 0 then if WeaponListener_maxIndex < JASS_MAX_ARRAY_SIZE then set WeaponListener_maxIndex = WeaponListener_maxIndex + 1 set this_1 = WeaponListener_maxIndex else call error("Out of memory: Could not create WeaponListener_WeaponType_WeaponTypes.") set this_1 = 0 endif else set WeaponListener_firstFree = WeaponListener_firstFree - 1 set this_1 = WeaponListener_nextFree[WeaponListener_firstFree] endif return this_1 endfunction function alloc_WeaponListener_WeaponType_WeaponTypes_1947 takes nothing returns integer local integer this_1 if WeaponListener_firstFree == 0 then if WeaponListener_maxIndex < JASS_MAX_ARRAY_SIZE then set WeaponListener_maxIndex = WeaponListener_maxIndex + 1 set this_1 = WeaponListener_maxIndex else call error("Out of memory: Could not create WeaponListener_WeaponType_WeaponTypes.") set this_1 = 0 endif else set WeaponListener_firstFree = WeaponListener_firstFree - 1 set this_1 = WeaponListener_nextFree[WeaponListener_firstFree] endif return this_1 endfunction function init_WeaponTypes takes nothing returns boolean local integer clVar = alloc_WeaponListener_WeaponType_WeaponTypes() local integer clVar_1 = alloc_WeaponListener_WeaponType_WeaponTypes_1945() local integer clVar_2 = alloc_WeaponListener_WeaponType_WeaponTypes_1946() local integer clVar_3 = alloc_WeaponListener_WeaponType_WeaponTypes_1947() return true endfunction function init_WeatherEffects takes nothing returns boolean return true endfunction function killD takes nothing returns nothing call RemoveDestructable(GetEnumDestructable()) endfunction function loopPerPlayer takes nothing returns nothing local player p = GetEnumPlayer() local integer i = GetPlayerId(p) local real richter = Camerashakes_playerCurrentShake[i] local real temprichter if richter > Camerashakes_RICHTER_MAX then set richter = Camerashakes_RICHTER_MAX endif if richter < Camerashakes_RICHTER_MIN then set richter = Camerashakes_RICHTER_MIN endif if Player_localPlayer == p then set temprichter = Camerashakes_playerCurrentShake[i] * Pow(10., richter) call CameraSetTargetNoiseEx(Camerashakes_playerCurrentShake[i] * 2.0, temprichter, true) call CameraSetSourceNoiseEx(Camerashakes_playerCurrentShake[i] * 2.0, temprichter, true) set Camerashakes_playerCurrentShake[i] = Camerashakes_playerCurrentShake[i] - Camerashakes_playerCurrentShake[i] * Camerashakes_SHAKE_REDUCE_PERCENT set Camerashakes_playerCurrentShake[i] = Camerashakes_playerCurrentShake[i] - Camerashakes_SHAKE_REDUCE_FLAT endif if Camerashakes_playerCurrentShake[i] < Camerashakes_SHAKE_THRESHOLD then if Player_localPlayer == p then call CameraSetSourceNoise(0., 0.) call CameraSetTargetNoise(0., 0.) endif call ForceRemovePlayer(Camerashakes_shakingPlayers, p) endif endfunction function onLoop takes nothing returns nothing call ForForce(Camerashakes_shakingPlayers, ref_function_loopPerPlayer) endfunction function Iterator_hasNext takes integer this_1 returns boolean return Iterator_current[this_1] != 0 endfunction function Iterator_next takes integer this_1 returns integer local integer res = Iterator_current[this_1] set Iterator_current[this_1] = Entity_DupletListModule_next[Iterator_current[this_1]] return res endfunction function Fx2Entity_update takes integer this_1 returns nothing if vec3_inPlayable(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) then call Entity_update(this_1) call effect_setPos(Fx2_eff[Fx2Entity_fx[this_1]], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) else call cyc_RevivePoint_terminate(18, this_1) endif endfunction function alloc_ForGroupCallback_forUnitsInRange_Projectile_Projectile takes nothing returns integer local integer this_1 if ForGroupCallback_firstFree == 0 then if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1 set this_1 = ForGroupCallback_maxIndex set ForGroupCallback_typeId[this_1] = 864 else call error("Out of memory: Could not create ForGroupCallback_forUnitsInRange_Projectile_Projectile.") set this_1 = 0 endif else set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1 set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree] set ForGroupCallback_typeId[this_1] = 864 endif return this_1 endfunction function vec3_distanceToSq takes real this_x, real this_y, real this_z, real v_x, real v_y, real v_z returns real return real_squared(v_x - this_x) + real_squared(v_y - this_y) + real_squared(v_z - this_z) endfunction function Projectile_update takes integer this_1 returns nothing local real tuple_temp = vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], Projectile_acc[this_1]) local real tuple_temp_1 = vec3_op_mult_return_y local real tuple_temp_2 = vec3_op_mult_return_z local integer clVar local real cond_result local real cond_result_1 local real temp_x local real temp_y local real temp local real tuple_temp_3 local real tuple_temp_4 set Entity_vel_x[this_1] = tuple_temp set Entity_vel_y[this_1] = tuple_temp_1 set Entity_vel_z[this_1] = tuple_temp_2 call Fx2Entity_update(this_1) if not Entity_done[this_1] then if Projectile_onHit[this_1] != 0 then set tuple_temp_3 = vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) set tuple_temp_4 = vec3_toVec2_return_y set temp_x = tuple_temp_3 set temp_y = tuple_temp_4 set temp = Entity_radius[this_1] set clVar = alloc_ForGroupCallback_forUnitsInRange_Projectile_Projectile() set this[clVar] = this_1 call forUnitsInRange(temp_x, temp_y, temp, clVar) endif if Projectile_isPointTarget[this_1] then if Projectile_use3DDistance[this_1] then set cond_result = vec3_distanceToSq(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], Projectile_targetPoint_x[this_1], Projectile_targetPoint_y[this_1], Projectile_targetPoint_z[this_1]) else set cond_result = vec2_distanceToSq(vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, vec3_toVec2(Projectile_targetPoint_x[this_1], Projectile_targetPoint_y[this_1], Projectile_targetPoint_z[this_1]), vec3_toVec2_return_y) endif if cond_result < Entity_radius2[this_1] then call dispatch_Projectile_Projectile_Projectile_terminate(this_1) endif endif if ( not Entity_done[this_1]) and Entity_vel_z[this_1] < 0. and Projectile_killZ[this_1] and Entity_pos_z[this_1] <= Projectile_killBelowZ[this_1] then call dispatch_Projectile_Projectile_Projectile_terminate(this_1) endif if ( not Entity_done[this_1]) and Projectile_timed[this_1] then set Projectile_time[this_1] = Projectile_time[this_1] + Basics_ANIMATION_PERIOD if Projectile_time[this_1] >= Projectile_maxTime[this_1] then call dispatch_Projectile_Projectile_Projectile_terminate(this_1) endif endif if ( not Entity_done[this_1]) and Projectile_ranged[this_1] then if Projectile_use3DDistance[this_1] then set cond_result_1 = vec3_distanceToSq(Projectile_startpos_x[this_1], Projectile_startpos_y[this_1], Projectile_startpos_z[this_1], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) else set cond_result_1 = vec2_distanceToSq(vec3_toVec2(Projectile_startpos_x[this_1], Projectile_startpos_y[this_1], Projectile_startpos_z[this_1]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y) endif if cond_result_1 > Projectile_maxDist[this_1] then call dispatch_Projectile_Projectile_Projectile_terminate(this_1) endif endif if ( not Entity_done[this_1]) and Projectile_target[this_1] != 0 then if vec2_distanceToSq(vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, vec3_toVec2(dispatch_Entity_Entity_Entity_getPos(Projectile_target[this_1]), dispatch_Entity_Entity_Entity_getPos_return_y, dispatch_Entity_Entity_Entity_getPos_return_z), vec3_toVec2_return_y) < Entity_radius2[this_1] then call dispatch_Projectile_Projectile_Projectile_terminate(this_1) endif endif endif endfunction function Entity_scaleVel takes integer this_1, real factor returns nothing local real tuple_temp = vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], factor) local real tuple_temp_1 = vec3_op_mult_return_y local real tuple_temp_2 = vec3_op_mult_return_z set Entity_vel_x[this_1] = tuple_temp set Entity_vel_y[this_1] = tuple_temp_1 set Entity_vel_z[this_1] = tuple_temp_2 endfunction function dispatch_Entity_Entity_Entity_scaleVel takes integer this_1, real factor returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Entity.scaleVel") else call error("Called Entity.scaleVel on invalid object.") endif endif call Entity_scaleVel(this_1, factor) endfunction function AirPhysicsProjectile_AirPhysicsModule_inAir takes integer this_1, integer e_1 returns nothing local real coef = bezier3(0.930, 0.985, 1., AirPhysicsProjectile_AirPhysicsModule_mass[this_1] / AirPhysicsModule_MAX_MASS) local real gcoef = bezier3(0.1, 0.875, 1., AirPhysicsProjectile_AirPhysicsModule_mass[this_1] / AirPhysicsModule_MAX_MASS) if AirPhysicsProjectile_AirPhysicsModule_affectedByGravity[this_1] then call dispatch_Entity_Entity_Entity_addVel(e_1, 0., 0., Entity_gravity[e_1] * gcoef) endif call dispatch_Entity_Entity_Entity_scaleVel(e_1, coef) endfunction function dispatch_AirPhysicsProjectile_PhysicsProjectile_AirPhysicsProjectile_AirPhysicsModule_inAir takes integer this_1, integer e_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling AirPhysicsProjectile.inAir") else call error("Called AirPhysicsProjectile.inAir on invalid object.") endif endif call AirPhysicsProjectile_AirPhysicsModule_inAir(this_1, e_1) endfunction function Entity_getVel takes integer this_1 returns real set Entity_getVel_return_x = Entity_vel_x[this_1] set Entity_getVel_return_y = Entity_vel_y[this_1] set Entity_getVel_return_z = Entity_vel_z[this_1] return Entity_getVel_return_x endfunction function dispatch_Entity_Entity_Entity_getVel takes integer this_1 returns real local real Entity_Entity_getVel_result_x local real Entity_Entity_getVel_result_y local real Entity_Entity_getVel_result_z local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Entity.getVel") else call error("Called Entity.getVel on invalid object.") endif endif set tuple_temp = Entity_getVel(this_1) set tuple_temp_1 = Entity_getVel_return_y set tuple_temp_2 = Entity_getVel_return_z set Entity_Entity_getVel_result_x = tuple_temp set Entity_Entity_getVel_result_y = tuple_temp_1 set Entity_Entity_getVel_result_z = tuple_temp_2 set dispatch_Entity_Entity_Entity_getVel_return_x = Entity_Entity_getVel_result_x set dispatch_Entity_Entity_Entity_getVel_return_y = Entity_Entity_getVel_result_y set dispatch_Entity_Entity_Entity_getVel_return_z = Entity_Entity_getVel_result_z return dispatch_Entity_Entity_Entity_getVel_return_x endfunction function vec2_add takes real this_x, real this_y, real x, real y returns real set vec2_add_return_x = this_x + x set vec2_add_return_y = this_y + y return vec2_add_return_x endfunction function vec2_getTerrainNormal takes real this_x, real this_y, real sampleRadius returns real set vec2_getTerrainNormal_return_x = real_op_mult_3963(2. * sampleRadius, vec2_getTerrainZ(vec2_add(this_x, this_y, - sampleRadius, 0.), vec2_add_return_y) - vec2_getTerrainZ(vec2_add(this_x, this_y, sampleRadius, 0.), vec2_add_return_y), vec2_getTerrainZ(vec2_add(this_x, this_y, - sampleRadius, 0.), vec2_add_return_y) - vec2_getTerrainZ(vec2_add(this_x, this_y, sampleRadius, 0.), vec2_add_return_y), 2. * sampleRadius) set vec2_getTerrainNormal_return_y = real_op_mult_return_y_2603 set vec2_getTerrainNormal_return_z = real_op_mult_return_z return vec2_getTerrainNormal_return_x endfunction function vec3_dot takes real this_x, real this_y, real this_z, real v_x, real v_y, real v_z returns real return this_x * v_x + this_y * v_y + this_z * v_z endfunction function vec3_project takes real this_x, real this_y, real this_z, real direction_x, real direction_y, real direction_z returns real local real l = vec3_lengthSquared(direction_x, direction_y, direction_z) if l == 0.0 then set vec3_project_return_x = 0. set vec3_project_return_y = 0. set vec3_project_return_z = 0. return vec3_project_return_x endif set l = vec3_dot(this_x, this_y, this_z, direction_x, direction_y, direction_z) / l set vec3_project_return_x = direction_x * l set vec3_project_return_y = direction_y * l set vec3_project_return_z = direction_z * l return vec3_project_return_x endfunction function AirPhysicsProjectile_AirPhysicsModule_onGround takes integer this_1, integer e_1 returns nothing local real tuple_temp = dispatch_Entity_Entity_Entity_getPos(e_1) local real tuple_temp_1 = dispatch_Entity_Entity_Entity_getPos_return_y local real tuple_temp_2 = dispatch_Entity_Entity_Entity_getPos_return_z local real pos_x_1 = tuple_temp local real pos_y_1 = tuple_temp_1 local real pos_z = tuple_temp_2 local real tuple_temp_3 = vec3_norm(vec2_getTerrainNormal(vec3_toVec2(pos_x_1, pos_y_1, pos_z), vec3_toVec2_return_y, 2.), vec2_getTerrainNormal_return_y, vec2_getTerrainNormal_return_z) local real tuple_temp_4 = vec3_norm_return_y local real tuple_temp_5 = vec3_norm_return_z local real normal_x = tuple_temp_3 local real normal_y = tuple_temp_4 local real normal_z = tuple_temp_5 local real pv_x local real pv_y local real pv_z local real tuple_temp_6 local real tuple_temp_7 local real tuple_temp_8 local real tuple_temp_9 local real tuple_temp_10 local real tuple_temp_11 if vec3_dot(dispatch_Entity_Entity_Entity_getVel(e_1), dispatch_Entity_Entity_Entity_getVel_return_y, dispatch_Entity_Entity_Entity_getVel_return_z, normal_x, normal_y, normal_z) > 0. then return endif set tuple_temp_6 = vec3_project(dispatch_Entity_Entity_Entity_getVel(e_1), dispatch_Entity_Entity_Entity_getVel_return_y, dispatch_Entity_Entity_Entity_getVel_return_z, normal_x, normal_y, normal_z) set tuple_temp_7 = vec3_project_return_y set tuple_temp_8 = vec3_project_return_z set pv_x = tuple_temp_6 set pv_y = tuple_temp_7 set pv_z = tuple_temp_8 set tuple_temp_9 = vec3_op_mult(pv_x, pv_y, pv_z, ( - 1.) - AirPhysicsProjectile_AirPhysicsModule_restitution[this_1]) set tuple_temp_10 = vec3_op_mult_return_y set tuple_temp_11 = vec3_op_mult_return_z set pv_x = tuple_temp_9 set pv_y = tuple_temp_10 set pv_z = tuple_temp_11 if pv_z > 4. then call dispatch_Entity_Entity_Entity_addVel(e_1, pv_x, pv_y, pv_z) else call dispatch_Entity_Entity_Entity_scaleVel(e_1, AirPhysicsProjectile_AirPhysicsModule_surfaceFriction[this_1] * bezier3(1., 0.85, 0., AirPhysicsProjectile_AirPhysicsModule_mass[this_1] / AirPhysicsModule_MAX_MASS)) endif endfunction function dispatch_AirPhysicsProjectile_PhysicsProjectile_AirPhysicsProjectile_AirPhysicsModule_onGround takes integer this_1, integer e_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling AirPhysicsProjectile.onGround") else call error("Called AirPhysicsProjectile.onGround on invalid object.") endif endif call AirPhysicsProjectile_AirPhysicsModule_onGround(this_1, e_1) endfunction function AirPhysicsProjectile_AirPhysicsModule_physicsUpdate takes integer this_1, integer e_1 returns nothing local real tuple_temp = dispatch_Entity_Entity_Entity_getPos(e_1) local real tuple_temp_1 = dispatch_Entity_Entity_Entity_getPos_return_y local real tuple_temp_2 = dispatch_Entity_Entity_Entity_getPos_return_z local real pos_x_1 = tuple_temp local real pos_y_1 = tuple_temp_1 local real pos_z = tuple_temp_2 set AirPhysicsProjectile_AirPhysicsModule_terrainZ[this_1] = vec3_getTerrainZ(pos_x_1, pos_y_1, pos_z) if pos_z <= AirPhysicsProjectile_AirPhysicsModule_terrainZ[this_1] + .2 then call dispatch_AirPhysicsProjectile_PhysicsProjectile_AirPhysicsProjectile_AirPhysicsModule_onGround(this_1, e_1) else call dispatch_AirPhysicsProjectile_PhysicsProjectile_AirPhysicsProjectile_AirPhysicsModule_inAir(this_1, e_1) endif endfunction function dispatch_AirPhysicsProjectile_PhysicsProjectile_AirPhysicsProjectile_AirPhysicsModule_physicsUpdate takes integer this_1, integer e_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling AirPhysicsProjectile.physicsUpdate") else call error("Called AirPhysicsProjectile.physicsUpdate on invalid object.") endif endif call AirPhysicsProjectile_AirPhysicsModule_physicsUpdate(this_1, e_1) endfunction function effect_setPitch takes effect this_1, real pitch_radians returns nothing call BlzSetSpecialEffectPitch(this_1, angle_radians_1(pitch_radians)) endfunction function Projectile_setZAngle takes integer this_1, real zA_radians returns nothing call effect_setPitch(Fx2_eff[Fx2Entity_fx[this_1]], zA_radians) endfunction function dispatch_Projectile_Projectile_Projectile_setZAngle takes integer this_1, real zA_radians returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Projectile.setZAngle") else call error("Called Projectile.setZAngle on invalid object.") endif endif call Projectile_setZAngle(this_1, zA_radians) endfunction function getSlopeAngle takes real z1, real z2, real dist returns real set getSlopeAngle_return_radians = Atan2(z2 - z1, dist) return getSlopeAngle_return_radians endfunction function AirPhysicsProjectile_update takes integer this_1 returns nothing call Projectile_update(this_1) call dispatch_AirPhysicsProjectile_PhysicsProjectile_AirPhysicsProjectile_AirPhysicsModule_physicsUpdate(this_1, this_1) call dispatch_Projectile_Projectile_Projectile_setXYAngle(this_1, vec3_angleTo2d_4259(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1]), vec3_op_plus_return_y, vec3_op_plus_return_z)) call dispatch_Projectile_Projectile_Projectile_setZAngle(this_1, getSlopeAngle(Entity_pos_z[this_1], Entity_pos_z[this_1] + Entity_vel_z[this_1], 2.)) endfunction function BallItem_update takes integer this_1 returns nothing endfunction function alloc_CallbackSingle_nullTimer_BallItem_Ball_1633 takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 708 else call error("Out of memory: Could not create CallbackSingle_nullTimer_BallItem_Ball.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 708 endif return this_1 endfunction function BallItem_onIdle takes integer this_1, real pos_x_1, real pos_y_1 returns nothing local real tuple_temp = vec2_toVec3(pos_x_1, pos_y_1) local real tuple_temp_1 = vec2_toVec3_return_y local real tuple_temp_2 = vec2_toVec3_return_z local integer clVar local real tuple_temp_3 local real tuple_temp_4 set Entity_pos_x[this_1] = tuple_temp set Entity_pos_y[this_1] = tuple_temp_1 set Entity_pos_z[this_1] = tuple_temp_2 call item_setVisible(ItemEntity_actor[this_1], true) call dispatch_UnitEntity_Entity_UnitEntity_setXY(ItemObject_setup[this_1], vec2_toVec3(pos_x_1, pos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z) call unit_show(UnitEntity_actor[ItemObject_setup[this_1]]) set clVar = alloc_CallbackSingle_nullTimer_BallItem_Ball_1633() call construct_CallbackSingle(clVar) set this_2965[clVar] = this_1 set tuple_temp_3 = pos_x_1 set tuple_temp_4 = pos_y_1 set pos_x[clVar] = tuple_temp_3 set pos_y[clVar] = tuple_temp_4 call nullTimer(clVar) endfunction function dispatch_BallItem_Ball_BallItem_onIdle takes integer this_1, real pos_x_1, real pos_y_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling BallItem.onIdle") else call error("Called BallItem.onIdle on invalid object.") endif endif call BallItem_onIdle(this_1, pos_x_1, pos_y_1) endfunction function BallProjectile_update takes integer this_1 returns nothing local real lensq call AirPhysicsProjectile_update(this_1) set lensq = vec3_lengthSquared(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1]) if lensq < 1. then call dispatch_BallItem_Ball_BallItem_onIdle(BallProjectile_ballitem[this_1], vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y) set Fx2Entity_silent[this_1] = true call dispatch_Projectile_Projectile_Projectile_terminate(this_1) endif endfunction function Fx2Entity_setPos takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z returns nothing local real tuple_temp = tpos_x_1 local real tuple_temp_1 = tpos_y_1 local real tuple_temp_2 = tpos_z set Entity_pos_x[this_1] = tuple_temp set Entity_pos_y[this_1] = tuple_temp_1 set Entity_pos_z[this_1] = tuple_temp_2 call effect_setPos(Fx2_eff[Fx2Entity_fx[this_1]], tpos_x_1, tpos_y_1, tpos_z) endfunction function dispatch_Fx2Entity_Fx2Entity_Fx2Entity_setPos takes integer this_1, real tpos_x_1, real tpos_y_1, real tpos_z returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Fx2Entity.setPos") else call error("Called Fx2Entity.setPos on invalid object.") endif endif call Fx2Entity_setPos(this_1, tpos_x_1, tpos_y_1, tpos_z) endfunction function vec2_bezier3 takes real this_x, real this_y, real mid_x, real mid_y, real stop_x, real stop_y, real p returns real set vec2_bezier3_return_x = bezier3(this_x, mid_x, stop_x, p) set vec2_bezier3_return_y = bezier3(this_y, mid_y, stop_y, p) return vec2_bezier3_return_x endfunction function Boomerang_update takes integer this_1 returns nothing if Projectile_time[this_1] > 2. then call dispatch_Projectile_Projectile_Projectile_terminate(this_1) elseif Projectile_time[this_1] >= 1. then call dispatch_Fx2Entity_Fx2Entity_Fx2Entity_setPos(this_1, vec2_toVec3(vec2_bezier3(Boomerang_target_x[this_1], Boomerang_target_y[this_1], Boomerang_middletwo_x[this_1], Boomerang_middletwo_y[this_1], vec3_toVec2(dispatch_UnitEntity_Entity_UnitEntity_getPos(Boomerang_caster[this_1]), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z), vec3_toVec2_return_y, Projectile_time[this_1] - 1.), vec2_bezier3_return_y), vec2_toVec3_return_y, vec2_toVec3_return_z) set Projectile_time[this_1] = real_lerp(Projectile_time[this_1], 2.3, 0.040) else set Projectile_time[this_1] = real_lerp(Projectile_time[this_1], 1.2, 0.035) call dispatch_Fx2Entity_Fx2Entity_Fx2Entity_setPos(this_1, vec2_toVec3(vec2_bezier3(Boomerang_initialPos_x[this_1], Boomerang_initialPos_y[this_1], Boomerang_middleone_x[this_1], Boomerang_middleone_y[this_1], Boomerang_target_x[this_1], Boomerang_target_y[this_1], Projectile_time[this_1]), vec2_bezier3_return_y), vec2_toVec3_return_y, vec2_toVec3_return_z) endif endfunction function Boots_update takes integer this_1 returns nothing endfunction function HomingProjectile_update takes integer this_1 returns nothing call Projectile_update(this_1) endfunction function BossMissile_update takes integer this_1 returns nothing local integer iterator local integer e_1 call HomingProjectile_update(this_1) set Entity_sleeps[this_1] = false if Entity_getCurrentRegion(this_1) != getRegionData_3302(unit_getPos(BossMissile_caster[this_1]), unit_getPos_return_y) then call dispatch_Projectile_Projectile_Projectile_terminate(this_1) endif set iterator = LinkedList_iterator(Escaper_escapers) loop exitwhen not LLIterator_hasNext(iterator) set e_1 = LLIterator_next(iterator) if vec3_distanceToSq(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1]) < Entity_radius[this_1] * Entity_radius[this_1] then call unit_damageTarget_4133(BossMissile_caster[this_1], UnitEntity_actor[e_1], 100.) call dispatch_Projectile_Projectile_Projectile_terminate(this_1) call LLIterator_close(iterator) return endif endloop call LLIterator_close(iterator) endfunction function CustomBar_setPosXY takes integer this_1, real x, real y returns nothing set CustomBar_position_x[this_1] = x set CustomBar_position_y[this_1] = y if CustomBar_t[this_1] != null and ( not CustomBar_locked[this_1]) then call texttag_setPos(CustomBar_t[this_1], CustomBar_position_x[this_1], CustomBar_position_y[this_1], CustomBar_position_z[this_1]) endif endfunction function dispatch_CustomBar_CustomBar_CustomBar_setPosXY takes integer this_1, real x, real y returns nothing if CustomBar_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling CustomBar.setPosXY") else call error("Called CustomBar.setPosXY on invalid object.") endif endif call CustomBar_setPosXY(this_1, x, y) endfunction function Boss_update takes integer this_1 returns nothing call SetupObject_update(this_1) call dispatch_CustomBar_CustomBar_CustomBar_setPosXY(Boss_hpBar[this_1], Entity_pos_x[this_1] - 100., Entity_pos_y[this_1] + 100.) call dispatch_CustomBar_CustomBar_CustomBar_setValue(Boss_hpBar[this_1], Boss_currentHP[this_1] / Boss_maxHp[this_1] * 100.0) endfunction function UnitEntity_setNewPosA takes integer this_1, real tpos_x_1, real tpos_y_1, real angl_radians returns nothing local integer instanceOfTemp = Serializable_typeId[this_1] if instanceOfTemp >= 1171 and instanceOfTemp <= 1191 then call dispatch_SetupObject_SetupObject_SetupObject_setXY(this_1, vec2_toVec3(tpos_x_1, tpos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z) call dispatch_SetupObject_SetupObject_SetupObject_setFacing(this_1, angl_radians) elseif Serializable_typeId[this_1] == 1190 then call dispatch_SetupObject_SetupObject_SetupObject_setXY(this_1, vec2_toVec3(tpos_x_1, tpos_y_1), vec2_toVec3_return_y, vec2_toVec3_return_z) call unit_setFacing(UnitEntity_actor[this_1], angl_radians) endif endfunction function calculateSegmentPos takes real pos1_x, real pos1_y, real pos2_x, real pos2_y, real segLength returns real local real tuple_temp = vec2_angleTo(pos2_x, pos2_y, pos1_x, pos1_y) local real angl_radians = tuple_temp set calculateSegmentPos_return_x = pos1_x - Cos(angle_radians_1(angl_radians)) * segLength set calculateSegmentPos_return_y = pos1_y - Sin(angle_radians_1(angl_radians)) * segLength return calculateSegmentPos_return_x endfunction function vec2_lerp takes real this_x, real this_y, real target_x, real target_y, real alpha returns real set vec2_lerp_return_x = real_lerp(this_x, target_x, alpha) set vec2_lerp_return_y = real_lerp(this_y, target_y, alpha) return vec2_lerp_return_x endfunction function CongaSegment_calcPos takes integer this_1 returns nothing if CongaLineHead_cmode[CongaSegment_head[this_1]] == 0 then if CongaSegment_prev[this_1] == 0 then call UnitEntity_setNewPosA(CongaSegment_target[this_1], calculateSegmentPos(vec3_toVec2(Entity_pos_x[CongaSegment_head[this_1]], Entity_pos_y[CongaSegment_head[this_1]], Entity_pos_z[CongaSegment_head[this_1]]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[CongaSegment_target[this_1]], Entity_pos_y[CongaSegment_target[this_1]], Entity_pos_z[CongaSegment_target[this_1]]), vec3_toVec2_return_y, 75.), calculateSegmentPos_return_y, vec3_angleTo2d_4259(Entity_pos_x[CongaSegment_target[this_1]], Entity_pos_y[CongaSegment_target[this_1]], Entity_pos_z[CongaSegment_target[this_1]], Entity_pos_x[CongaSegment_head[this_1]], Entity_pos_y[CongaSegment_head[this_1]], Entity_pos_z[CongaSegment_head[this_1]])) else call UnitEntity_setNewPosA(CongaSegment_target[this_1], calculateSegmentPos(vec3_toVec2(Entity_pos_x[CongaSegment_target[CongaSegment_prev[this_1]]], Entity_pos_y[CongaSegment_target[CongaSegment_prev[this_1]]], Entity_pos_z[CongaSegment_target[CongaSegment_prev[this_1]]]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[CongaSegment_target[this_1]], Entity_pos_y[CongaSegment_target[this_1]], Entity_pos_z[CongaSegment_target[this_1]]), vec3_toVec2_return_y, CongaLineHead_segLength[CongaSegment_head[this_1]]), calculateSegmentPos_return_y, vec3_angleTo2d_4259(Entity_pos_x[CongaSegment_target[this_1]], Entity_pos_y[CongaSegment_target[this_1]], Entity_pos_z[CongaSegment_target[this_1]], Entity_pos_x[CongaSegment_target[CongaSegment_prev[this_1]]], Entity_pos_y[CongaSegment_target[CongaSegment_prev[this_1]]], Entity_pos_z[CongaSegment_target[CongaSegment_prev[this_1]]])) endif elseif CongaLineHead_cmode[CongaSegment_head[this_1]] == 1 then if CongaSegment_prev[this_1] == 0 then if vec3_distanceTo2dSq(Entity_pos_x[CongaSegment_target[this_1]], Entity_pos_y[CongaSegment_target[this_1]], Entity_pos_z[CongaSegment_target[this_1]], vec3_toVec2(dispatch_UnitEntity_Entity_UnitEntity_getPos(CongaSegment_head[this_1]), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z), vec3_toVec2_return_y) > 32 * 32 then call UnitEntity_setNewPosA(CongaSegment_target[this_1], vec2_lerp(vec3_toVec2(Entity_pos_x[CongaSegment_target[this_1]], Entity_pos_y[CongaSegment_target[this_1]], Entity_pos_z[CongaSegment_target[this_1]]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[CongaSegment_head[this_1]], Entity_pos_y[CongaSegment_head[this_1]], Entity_pos_z[CongaSegment_head[this_1]]), vec3_toVec2_return_y, CongaLineHead_segLength[CongaSegment_head[this_1]] * 0.001), vec2_lerp_return_y, vec3_angleTo2d_4259(Entity_pos_x[CongaSegment_target[this_1]], Entity_pos_y[CongaSegment_target[this_1]], Entity_pos_z[CongaSegment_target[this_1]], Entity_pos_x[CongaSegment_head[this_1]], Entity_pos_y[CongaSegment_head[this_1]], Entity_pos_z[CongaSegment_head[this_1]])) endif elseif vec3_distanceTo2dSq(Entity_pos_x[CongaSegment_target[this_1]], Entity_pos_y[CongaSegment_target[this_1]], Entity_pos_z[CongaSegment_target[this_1]], vec3_toVec2(Entity_pos_x[CongaSegment_target[CongaSegment_prev[this_1]]], Entity_pos_y[CongaSegment_target[CongaSegment_prev[this_1]]], Entity_pos_z[CongaSegment_target[CongaSegment_prev[this_1]]]), vec3_toVec2_return_y) > 24 * 24 then call UnitEntity_setNewPosA(CongaSegment_target[this_1], vec2_lerp(vec3_toVec2(Entity_pos_x[CongaSegment_target[this_1]], Entity_pos_y[CongaSegment_target[this_1]], Entity_pos_z[CongaSegment_target[this_1]]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[CongaSegment_target[CongaSegment_prev[this_1]]], Entity_pos_y[CongaSegment_target[CongaSegment_prev[this_1]]], Entity_pos_z[CongaSegment_target[CongaSegment_prev[this_1]]]), vec3_toVec2_return_y, CongaLineHead_segLength[CongaSegment_head[this_1]] * 0.001), vec2_lerp_return_y, vec3_angleTo2d_4259(Entity_pos_x[CongaSegment_target[this_1]], Entity_pos_y[CongaSegment_target[this_1]], Entity_pos_z[CongaSegment_target[this_1]], Entity_pos_x[CongaSegment_target[CongaSegment_prev[this_1]]], Entity_pos_y[CongaSegment_target[CongaSegment_prev[this_1]]], Entity_pos_z[CongaSegment_target[CongaSegment_prev[this_1]]])) endif endif endfunction function dispatch_CongaSegment_CongaLineHead_CongaSegment_calcPos takes integer this_1 returns nothing if CongaSegment_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling CongaSegment.calcPos") else call error("Called CongaSegment.calcPos on invalid object.") endif endif call CongaSegment_calcPos(this_1) endfunction function CongaLineHead_update takes integer this_1 returns nothing local integer segment call SetupObject_update(this_1) set segment = CongaLineHead_firstSegment[this_1] loop exitwhen not (segment != 0) call dispatch_CongaSegment_CongaLineHead_CongaSegment_calcPos(segment) set segment = CongaSegment_next[segment] endloop endfunction function Escaper_onEscapeGround takes integer this_1 returns nothing call unit_setPropWindow(UnitEntity_actor[this_1], real_fromDeg(0.)) set Escaper_sliding[this_1] = false endfunction function dispatch_Escaper_Escaper_Escaper_onEscapeGround takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Escaper.onEscapeGround") else call error("Called Escaper.onEscapeGround on invalid object.") endif endif call Escaper_onEscapeGround(this_1) endfunction function Escaper_inAir takes integer this_1, integer e_1 returns nothing if not Entity_flying[e_1] then set Entity_flying[e_1] = true call dispatch_Escaper_Escaper_Escaper_onEscapeGround(this_1) endif call dispatch_Entity_Entity_Entity_addVel(e_1, 0., 0., Entity_gravity[this_1]) endfunction function dispatch_Escaper_Escaper_Escaper_inAir takes integer this_1, integer e_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Escaper.inAir") else call error("Called Escaper.inAir on invalid object.") endif endif call Escaper_inAir(this_1, e_1) endfunction function unit_getState takes unit this_1, unitstate state returns real return GetUnitState(this_1, state) endfunction function unit_getHP takes unit this_1 returns real return unit_getState(this_1, UNIT_STATE_LIFE) endfunction function BlindEscaper_doLavaDamage takes integer this_1 returns nothing local real hp = unit_getHP(UnitEntity_actor[this_1]) local real bias = 1. - unit_getAbilityLevel(UnitEntity_actor[this_1], EscaperClasses_FIRE_RESISTANCE) * 0.1 if hp > .405 then call unit_setHP(UnitEntity_actor[this_1], hp - RegionData_lavaDmg[Entity_getCurrentRegion(this_1)] * bias) elseif Escaper_alive[this_1] then call dispatch_Escaper_Escaper_Escaper_kill(this_1, 0) endif endfunction function Escaper_doLavaDamage takes integer this_1 returns nothing local real hp = unit_getHP(UnitEntity_actor[this_1]) if hp > .405 then call unit_setHP(UnitEntity_actor[this_1], hp - RegionData_lavaDmg[Entity_getCurrentRegion(this_1)]) elseif Escaper_alive[this_1] then call dispatch_Escaper_Escaper_Escaper_kill(this_1, 0) endif endfunction function dispatch_Escaper_Escaper_Escaper_doLavaDamage takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Escaper.doLavaDamage") else call error("Called Escaper.doLavaDamage on invalid object.") endif endif if Serializable_typeId[this_1] <= 1163 then if Serializable_typeId[this_1] <= 1162 then call Escaper_doLavaDamage(this_1) else call BlindEscaper_doLavaDamage(this_1) endif else call Escaper_doLavaDamage(this_1) endif endfunction function Escaper_onGroundHit takes integer this_1 returns nothing local integer temp_tuple_modifiers_val local integer ttype_1 local real angl_radians local real length local integer temp_tuple_unwalkableId local integer temp local integer tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 local real tuple_temp_7 local integer tuple_temp_8 call vec3_getEBRTile(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) set tuple_temp = vec3_getEBRTile_return_modifiers_val set temp_tuple_modifiers_val = tuple_temp if bitset_get(temp_tuple_modifiers_val, 2) and real_abs(Entity_vel_z[this_1]) > 2. then set ttype_1 = GetTerrainType(Entity_pos_x[this_1], Entity_pos_y[this_1]) set tuple_temp_1 = unit_getFacingAngle(UnitEntity_actor[this_1]) set angl_radians = tuple_temp_1 if ttype_1 == BuilderConstants_CONTROLLABLEICE then set length = vec3_length(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1]) set tuple_temp_2 = vec2_withZ(angle_toVec(angl_radians, length), angle_toVec_return_y, Entity_vel_z[this_1]) set tuple_temp_3 = vec2_withZ_return_y set tuple_temp_4 = vec2_withZ_return_z set Entity_vel_x[this_1] = tuple_temp_2 set Entity_vel_y[this_1] = tuple_temp_3 set Entity_vel_z[this_1] = tuple_temp_4 endif set Entity_vel_z[this_1] = - (Entity_vel_z[this_1] * 1.25) else set Entity_pos_z[this_1] = 0. set tuple_temp_5 = vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], 0.175) set tuple_temp_6 = vec3_op_mult_return_y set tuple_temp_7 = vec3_op_mult_return_z set Entity_vel_x[this_1] = tuple_temp_5 set Entity_vel_y[this_1] = tuple_temp_6 set Entity_vel_z[this_1] = tuple_temp_7 set Entity_vel_z[this_1] = 0. set temp = GetTerrainType(Entity_pos_x[this_1], Entity_pos_y[this_1]) call dispatch_RegionData_RegionData_RegionData_getTypeSet(Entity_getCurrentRegion(this_1)) set tuple_temp_8 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId set temp_tuple_unwalkableId = tuple_temp_8 if temp == temp_tuple_unwalkableId then call unit_damageTarget_4133(UnitEntity_actor[this_1], UnitEntity_actor[this_1], 1000.) call dispatch_Escaper_Escaper_Escaper_kill_2852(this_1, 0, 1) endif endif call unit_setPropWindow(UnitEntity_actor[this_1], real_fromDeg(60.)) endfunction function dispatch_Escaper_Escaper_Escaper_onGroundHit takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Escaper.onGroundHit") else call error("Called Escaper.onGroundHit on invalid object.") endif endif call Escaper_onGroundHit(this_1) endfunction function Escaper_onGround takes integer this_1, integer e_1 returns nothing local real rv_x local real rv_y local real rv_z local real lpos_x local real lpos_y local real rpos_x local real rpos_y local integer ttype1 local integer ttype2 local integer rdata local integer ttype_1 local integer newval local integer temp_tuple_unwalkableId local integer temp_tuple_unwalkableId_1 local integer temp_tuple_unwalkableId_2 local integer temp_tuple_unwalkableId_3 local integer temp_tuple_unwalkableId_4 local integer temp_tuple_unwalkableId_5 local real fpos_x local real fpos_y local real bpos_x local real bpos_y local integer t1type local integer t2type local integer temp_tuple_unwalkableId_6 local integer temp_tuple_unwalkableId_7 local real angl_radians local real hp2 local integer temp local integer temp_1 local integer temp_2 local integer temp_3 local integer temp_4 local integer temp_5 local boolean andLeft local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 local integer tuple_temp_7 local integer tuple_temp_8 local integer tuple_temp_9 local integer tuple_temp_10 local integer tuple_temp_11 local real tuple_temp_12 local real tuple_temp_13 local integer tuple_temp_14 local real tuple_temp_15 local real tuple_temp_16 local real tuple_temp_17 local real tuple_temp_18 local integer tuple_temp_19 local integer tuple_temp_20 local real tuple_temp_21 local real tuple_temp_22 local real tuple_temp_23 local real tuple_temp_24 local real tuple_temp_25 local real tuple_temp_26 local real tuple_temp_27 local real tuple_temp_28 local real tuple_temp_29 local real tuple_temp_30 local real tuple_temp_31 local real tuple_temp_32 local real tuple_temp_33 local real tuple_temp_34 if Entity_flying[e_1] then set Entity_flying[e_1] = false call dispatch_Escaper_Escaper_Escaper_onGroundHit(this_1) endif call dispatch_Entity_Entity_Entity_scaleVel(e_1, Escaper_PhysicsModule_surfaceFriction[this_1]) set tuple_temp = dispatch_Escaper_Escaper_Escaper_getRealVel(this_1) set tuple_temp_1 = dispatch_Escaper_Escaper_Escaper_getRealVel_return_y set tuple_temp_2 = dispatch_Escaper_Escaper_Escaper_getRealVel_return_z set rv_x = tuple_temp set rv_y = tuple_temp_1 set rv_z = tuple_temp_2 set tuple_temp_3 = vec2_polarOffset(vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, angle_op_minus(vec2_getAngle(vec3_toVec2(rv_x, rv_y, rv_z), vec3_toVec2_return_y), real_asAngleDegrees(90.)), 16.50) set tuple_temp_4 = vec2_polarOffset_return_y set lpos_x = tuple_temp_3 set lpos_y = tuple_temp_4 set tuple_temp_5 = vec2_polarOffset(vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, angle_op_plus(vec2_getAngle(vec3_toVec2(rv_x, rv_y, rv_z), vec3_toVec2_return_y), real_asAngleDegrees(90.)), 16.50) set tuple_temp_6 = vec2_polarOffset_return_y set rpos_x = tuple_temp_5 set rpos_y = tuple_temp_6 set ttype1 = GetTerrainType(lpos_x, lpos_y) set ttype2 = GetTerrainType(rpos_x, rpos_y) set rdata = Entity_getCurrentRegion(this_1) set newval = -1 set temp = ttype1 call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata) set tuple_temp_7 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId set temp_tuple_unwalkableId = tuple_temp_7 if temp == temp_tuple_unwalkableId then set temp_1 = ttype2 call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata) set tuple_temp_8 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId set temp_tuple_unwalkableId_1 = tuple_temp_8 if temp_1 == temp_tuple_unwalkableId_1 then call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata) set tuple_temp_9 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId set temp_tuple_unwalkableId_2 = tuple_temp_9 set ttype_1 = temp_tuple_unwalkableId_2 else set ttype_1 = GetTerrainType(Entity_pos_x[this_1], Entity_pos_y[this_1]) set newval = 2 endif else set temp_2 = ttype2 call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata) set tuple_temp_10 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId set temp_tuple_unwalkableId_3 = tuple_temp_10 if temp_2 == temp_tuple_unwalkableId_3 then set ttype_1 = ttype1 set newval = 1 else set ttype_1 = GetTerrainType(Entity_pos_x[this_1], Entity_pos_y[this_1]) set newval = 3 endif endif if (Escaper_lastVal[this_1] == 1 and newval == 2) or (Escaper_lastVal[this_1] == 2 and newval == 1) then set Escaper_threshold[this_1] = Escaper_threshold[this_1] + 1 if Escaper_threshold[this_1] > 2 then call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata) set tuple_temp_11 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId set temp_tuple_unwalkableId_4 = tuple_temp_11 set ttype_1 = temp_tuple_unwalkableId_4 else set ttype_1 = GetTerrainType(Entity_pos_x[this_1], Entity_pos_y[this_1]) endif elseif Escaper_threshold[this_1] > 0 then set Escaper_threshold[this_1] = Escaper_threshold[this_1] - 1 endif set Escaper_lastVal[this_1] = newval set tuple_temp_12 = vec2_op_mult(Escaper_slideVelocity_x[this_1], Escaper_slideVelocity_y[this_1], 0.99) set tuple_temp_13 = vec2_op_mult_return_y set Escaper_slideVelocity_x[this_1] = tuple_temp_12 set Escaper_slideVelocity_y[this_1] = tuple_temp_13 set temp_3 = ttype_1 call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata) set tuple_temp_14 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId set temp_tuple_unwalkableId_5 = tuple_temp_14 if temp_3 == temp_tuple_unwalkableId_5 or ttype_1 == 1231186786 or ttype_1 == BuilderConstants_RUNES then if Escaper_alive[this_1] then if RegionData_allowCut[rdata] then set tuple_temp_15 = vec2_polarOffset(vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, vec2_getAngle(vec3_toVec2(rv_x, rv_y, rv_z), vec3_toVec2_return_y), 18.) set tuple_temp_16 = vec2_polarOffset_return_y set fpos_x = tuple_temp_15 set fpos_y = tuple_temp_16 set tuple_temp_17 = vec2_polarOffset(vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, vec2_getAngle(vec3_toVec2(rv_x, rv_y, rv_z), vec3_toVec2_return_y), -18.) set tuple_temp_18 = vec2_polarOffset_return_y set bpos_x = tuple_temp_17 set bpos_y = tuple_temp_18 set t1type = GetTerrainType(fpos_x, fpos_y) set t2type = GetTerrainType(bpos_x, bpos_y) set temp_4 = t2type call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata) set tuple_temp_19 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId set temp_tuple_unwalkableId_6 = tuple_temp_19 if temp_4 == temp_tuple_unwalkableId_6 or t2type == 1231186786 or t2type == BuilderConstants_RUNES then set temp_5 = t1type call dispatch_RegionData_RegionData_RegionData_getTypeSet(rdata) set tuple_temp_20 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId set temp_tuple_unwalkableId_7 = tuple_temp_20 set andLeft = temp_5 == temp_tuple_unwalkableId_7 or t1type == 1231186786 or t1type == BuilderConstants_RUNES else set andLeft = false endif if andLeft then call dispatch_Escaper_Escaper_Escaper_kill(this_1, 0) endif else call dispatch_Escaper_Escaper_Escaper_kill_2852(this_1, 0, 0) endif endif elseif Escaper_alive[this_1] and ttype_1 == BuilderConstants_CONTROLLABLEICE or ttype_1 == BuilderConstants_UNCONTROLLABLEICE or ttype_1 == BuilderConstants_REVICE then set tuple_temp_21 = unit_getFacingAngle(UnitEntity_actor[this_1]) set angl_radians = tuple_temp_21 set tuple_temp_22 = angle_cos(angl_radians) * RegionData_slidespeed[rdata] * Escaper_SLIDE_ADD set tuple_temp_23 = angle_sin(angl_radians) * RegionData_slidespeed[rdata] * Escaper_SLIDE_ADD set Escaper_slideVelocity_x[this_1] = tuple_temp_22 set Escaper_slideVelocity_y[this_1] = tuple_temp_23 if not Escaper_sliding[this_1] then set Entity_speedFactor[this_1] = 1. set Escaper_sliding[this_1] = true endif call dispatch_Escaper_Escaper_Escaper_setLava(this_1, false) else if ebrtile_hasModifier(vec3_getEBRTile(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_getEBRTile_return_y, vec3_getEBRTile_return_key, vec3_getEBRTile_return_currentType, vec3_getEBRTile_return_lastType, vec3_getEBRTile_return_modifiers_val, 3) then if vec3_lengthSquared(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1]) < 1. then set tuple_temp_24 = vec2_toVec3(Escaper_walkVel_x[this_1], Escaper_walkVel_y[this_1]) set tuple_temp_25 = vec2_toVec3_return_y set tuple_temp_26 = vec2_toVec3_return_z set Entity_vel_x[this_1] = tuple_temp_24 set Entity_vel_y[this_1] = tuple_temp_25 set Entity_vel_z[this_1] = tuple_temp_26 endif set tuple_temp_27 = vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], 1.0075) set tuple_temp_28 = vec3_op_mult_return_y set tuple_temp_29 = vec3_op_mult_return_z set Entity_vel_x[this_1] = tuple_temp_27 set Entity_vel_y[this_1] = tuple_temp_28 set Entity_vel_z[this_1] = tuple_temp_29 endif set tuple_temp_30 = vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], 0.96) set tuple_temp_31 = vec3_op_mult_return_y set tuple_temp_32 = vec3_op_mult_return_z set Entity_vel_x[this_1] = tuple_temp_30 set Entity_vel_y[this_1] = tuple_temp_31 set Entity_vel_z[this_1] = tuple_temp_32 set Escaper_sliding[this_1] = false call dispatch_Escaper_Escaper_Escaper_setLava(this_1, false) if ttype_1 == 1147958883 and ( not Escaper_onLava[this_1]) then call dispatch_Escaper_Escaper_Escaper_setLava(this_1, true) elseif ttype_1 == BuilderConstants_POISON then if not Escaper_poisoned[this_1] then call dispatch_Escaper_Escaper_Escaper_setPoison(this_1, true) endif endif endif if Escaper_sliding[this_1] then set Entity_speedFactor[this_1] = Entity_speedFactor[this_1] * 0.9 else set tuple_temp_33 = vec2_op_mult(Escaper_slideVelocity_x[this_1], Escaper_slideVelocity_y[this_1], 0.8) set tuple_temp_34 = vec2_op_mult_return_y set Escaper_slideVelocity_x[this_1] = tuple_temp_33 set Escaper_slideVelocity_y[this_1] = tuple_temp_34 endif if Escaper_onLava[this_1] then call dispatch_Escaper_Escaper_Escaper_doLavaDamage(this_1) endif if Escaper_poisoned[this_1] then set hp2 = unit_getHP(UnitEntity_actor[this_1]) if hp2 > .405 then call unit_setHP(UnitEntity_actor[this_1], hp2 - RegionData_poisonDmg[Entity_getCurrentRegion(this_1)]) elseif Escaper_alive[this_1] then call dispatch_Escaper_Escaper_Escaper_kill(this_1, 0) endif endif endfunction function dispatch_Escaper_Escaper_Escaper_onGround takes integer this_1, integer e_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Escaper.onGround") else call error("Called Escaper.onGround on invalid object.") endif endif call Escaper_onGround(this_1, e_1) endfunction function Escaper_PhysicsModule_physicsUpdate takes integer this_1, integer e_1 returns nothing local real pos_x_1 local real pos_y_1 local real pos_z local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 if ( not Entity_done[e_1]) and Entity_DupletListModule_active[e_1] then set tuple_temp = dispatch_Entity_Entity_Entity_getPos(e_1) set tuple_temp_1 = dispatch_Entity_Entity_Entity_getPos_return_y set tuple_temp_2 = dispatch_Entity_Entity_Entity_getPos_return_z set pos_x_1 = tuple_temp set pos_y_1 = tuple_temp_1 set pos_z = tuple_temp_2 if Frentity_DYNAMIC_Z then set Escaper_PhysicsModule_terrainZ[this_1] = vec3_getHeightMap(pos_x_1, pos_y_1, pos_z) endif if pos_z > Escaper_PhysicsModule_terrainZ[this_1] then call dispatch_Escaper_Escaper_Escaper_inAir(this_1, e_1) else call dispatch_Escaper_Escaper_Escaper_onGround(this_1, e_1) endif endif endfunction function dispatch_Escaper_Escaper_Escaper_PhysicsModule_physicsUpdate takes integer this_1, integer e_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Escaper.physicsUpdate") else call error("Called Escaper.physicsUpdate on invalid object.") endif endif call Escaper_PhysicsModule_physicsUpdate(this_1, e_1) endfunction function Escaper_update takes integer this_1 returns nothing local real tuple_temp = unit_getPos(UnitEntity_actor[this_1]) local real tuple_temp_1 = unit_getPos_return_y local real newPos_x = tuple_temp local real newPos_y = tuple_temp_1 local real tuple_temp_2 = vec2_op_minus(newPos_x, newPos_y, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y) local real tuple_temp_3 = vec2_op_minus_return_y local real tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 local real tuple_temp_7 local real tuple_temp_8 local real tuple_temp_9 local real tuple_temp_10 local real tuple_temp_11 local real tuple_temp_12 local real tuple_temp_13 local real tuple_temp_14 local real tuple_temp_15 local real tuple_temp_16 local real tuple_temp_17 set Escaper_walkVel_x[this_1] = tuple_temp_2 set Escaper_walkVel_y[this_1] = tuple_temp_3 set tuple_temp_4 = vec2_withZ(newPos_x, newPos_y, Entity_pos_z[this_1]) set tuple_temp_5 = vec2_withZ_return_y set tuple_temp_6 = vec2_withZ_return_z set Entity_pos_x[this_1] = tuple_temp_4 set Entity_pos_y[this_1] = tuple_temp_5 set Entity_pos_z[this_1] = tuple_temp_6 call dispatch_Escaper_Escaper_Escaper_PhysicsModule_physicsUpdate(this_1, this_1) set tuple_temp_7 = vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1]) set tuple_temp_8 = vec3_op_plus_return_y set tuple_temp_9 = vec3_op_plus_return_z set Entity_pos_x[this_1] = tuple_temp_7 set Entity_pos_y[this_1] = tuple_temp_8 set Entity_pos_z[this_1] = tuple_temp_9 set tuple_temp_10 = vec3_op_plus_4280(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], vec2_op_mult(Escaper_slideVelocity_x[this_1], Escaper_slideVelocity_y[this_1], 1. - Entity_speedFactor[this_1]), vec2_op_mult_return_y) set tuple_temp_11 = vec3_op_plus_return_y_3134 set tuple_temp_12 = vec3_op_plus_return_z_3136 set Entity_pos_x[this_1] = tuple_temp_10 set Entity_pos_y[this_1] = tuple_temp_11 set Entity_pos_z[this_1] = tuple_temp_12 set tuple_temp_13 = vec3_op_plus_4280(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], Escaper_otherVel_x[this_1], Escaper_otherVel_y[this_1]) set tuple_temp_14 = vec3_op_plus_return_y_3134 set tuple_temp_15 = vec3_op_plus_return_z_3136 set Entity_pos_x[this_1] = tuple_temp_13 set Entity_pos_y[this_1] = tuple_temp_14 set Entity_pos_z[this_1] = tuple_temp_15 set tuple_temp_16 = 0. set tuple_temp_17 = 0. set Escaper_otherVel_x[this_1] = tuple_temp_16 set Escaper_otherVel_y[this_1] = tuple_temp_17 if Escaper_sliding[this_1] then call dispatch_UnitEntity_Entity_UnitEntity_setPos(this_1, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) else call dispatch_Escaper_Escaper_Escaper_setXY(this_1, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) endif endfunction function colorA_mix takes integer this_red, integer this_green, integer this_blue, integer this_alpha, integer c2_red, integer c2_green, integer c2_blue, integer c2_alpha, real s returns integer set colorA_mix_return_red = R2I(c2_red * s + this_red * (1. - s) + 0.5) set colorA_mix_return_green = R2I(c2_green * s + this_green * (1. - s) + 0.5) set colorA_mix_return_blue = R2I(c2_blue * s + this_blue * (1. - s) + 0.5) set colorA_mix_return_alpha = R2I(c2_alpha * s + this_alpha * (1. - s) + 0.5) return colorA_mix_return_red endfunction function Faceless_update takes integer this_1 returns nothing local integer temp local integer tuple_temp local integer tuple_temp_1 local integer tuple_temp_2 local integer tuple_temp_3 local integer tuple_temp_4 local integer tuple_temp_5 local integer tuple_temp_6 local integer tuple_temp_7 local integer tuple_temp_8 local integer tuple_temp_9 local integer tuple_temp_10 local integer tuple_temp_11 local integer tuple_temp_12 local integer tuple_temp_13 local integer tuple_temp_14 local integer tuple_temp_15 call SetupObject_update(this_1) set temp = Faceless_mode[this_1] if temp == 0 then set Faceless_dur[this_1] = Faceless_dur[this_1] - Basics_ANIMATION_PERIOD if Faceless_dur[this_1] <= 0. then set Faceless_mode[this_1] = 3 set Faceless_dur[this_1] = Faceless_fadeDur[this_1] endif elseif temp == 1 then set Faceless_dur[this_1] = Faceless_dur[this_1] - Basics_ANIMATION_PERIOD if Faceless_dur[this_1] <= 0. then set Faceless_mode[this_1] = 2 set Faceless_dur[this_1] = Faceless_fadeDur[this_1] endif elseif temp == 3 then set Faceless_dur[this_1] = Faceless_dur[this_1] - Basics_ANIMATION_PERIOD set tuple_temp = colorA_mix(Faceless_color_red[this_1], Faceless_color_green[this_1], Faceless_color_blue[this_1], Faceless_color_alpha[this_1], Colors_COLOR_BLACK_red, Colors_COLOR_BLACK_green, Colors_COLOR_BLACK_blue, Colors_COLOR_BLACK_alpha, (Faceless_fadeDur[this_1] - Faceless_dur[this_1]) / 3.) set tuple_temp_1 = colorA_mix_return_green set tuple_temp_2 = colorA_mix_return_blue set tuple_temp_3 = colorA_mix_return_alpha set Faceless_color_red[this_1] = tuple_temp set Faceless_color_green[this_1] = tuple_temp_1 set Faceless_color_blue[this_1] = tuple_temp_2 set Faceless_color_alpha[this_1] = tuple_temp_3 if Faceless_dur[this_1] <= 0. then set tuple_temp_4 = Colors_COLOR_BLACK_red set tuple_temp_5 = Colors_COLOR_BLACK_green set tuple_temp_6 = Colors_COLOR_BLACK_blue set tuple_temp_7 = Colors_COLOR_BLACK_alpha set Faceless_color_red[this_1] = tuple_temp_4 set Faceless_color_green[this_1] = tuple_temp_5 set Faceless_color_blue[this_1] = tuple_temp_6 set Faceless_color_alpha[this_1] = tuple_temp_7 set Faceless_mode[this_1] = 1 set Faceless_dur[this_1] = dispatch_ConfigValue_ConfigValue_ConfigValue_get(Faceless_invisDur[this_1]) endif else set Faceless_dur[this_1] = Faceless_dur[this_1] - Basics_ANIMATION_PERIOD set tuple_temp_8 = colorA_mix(Faceless_color_red[this_1], Faceless_color_green[this_1], Faceless_color_blue[this_1], Faceless_color_alpha[this_1], Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, (Faceless_fadeDur[this_1] - Faceless_dur[this_1]) / 3.) set tuple_temp_9 = colorA_mix_return_green set tuple_temp_10 = colorA_mix_return_blue set tuple_temp_11 = colorA_mix_return_alpha set Faceless_color_red[this_1] = tuple_temp_8 set Faceless_color_green[this_1] = tuple_temp_9 set Faceless_color_blue[this_1] = tuple_temp_10 set Faceless_color_alpha[this_1] = tuple_temp_11 if Faceless_dur[this_1] <= 0. then set tuple_temp_12 = Colors_COLOR_WHITE_red set tuple_temp_13 = Colors_COLOR_WHITE_green set tuple_temp_14 = Colors_COLOR_WHITE_blue set tuple_temp_15 = Colors_COLOR_WHITE_alpha set Faceless_color_red[this_1] = tuple_temp_12 set Faceless_color_green[this_1] = tuple_temp_13 set Faceless_color_blue[this_1] = tuple_temp_14 set Faceless_color_alpha[this_1] = tuple_temp_15 set Faceless_mode[this_1] = 0 set Faceless_dur[this_1] = dispatch_ConfigValue_ConfigValue_ConfigValue_get(Faceless_visibleDur[this_1]) endif endif call unit_setVertexColor_4202(UnitEntity_actor[this_1], Faceless_color_red[this_1], Faceless_color_green[this_1], Faceless_color_blue[this_1], Faceless_color_alpha[this_1]) endfunction function alloc_LLItrClosure_forEach_Fireball_MGWarlock takes nothing returns integer local integer this_1 if LLItrClosure_firstFree == 0 then if LLItrClosure_maxIndex < JASS_MAX_ARRAY_SIZE then set LLItrClosure_maxIndex = LLItrClosure_maxIndex + 1 set this_1 = LLItrClosure_maxIndex set LLItrClosure_typeId[this_1] = 990 else call error("Out of memory: Could not create LLItrClosure_forEach_Fireball_MGWarlock.") set this_1 = 0 endif else set LLItrClosure_firstFree = LLItrClosure_firstFree - 1 set this_1 = LLItrClosure_nextFree[LLItrClosure_firstFree] set LLItrClosure_typeId[this_1] = 990 endif return this_1 endfunction function Fireball_update takes integer this_1 returns nothing local integer clVar local integer temp call Projectile_update(this_1) set temp = MGWarlock_warlocks set clVar = alloc_LLItrClosure_forEach_Fireball_MGWarlock() set this_2950[clVar] = this_1 call dispatch_LinkedList_LinkedList_LinkedList_forEach(temp, clVar) endfunction function FxEntity_update takes integer this_1 returns nothing if vec3_inPlayable(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) then call Entity_update(this_1) call dispatch_Fx_Fx_Fx_setXYZ(FxEntity_fx[this_1], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) else call cyc_RevivePoint_terminate(18, this_1) endif endfunction function Key_update takes integer this_1 returns nothing local integer escaper local integer instanceOfTemp local boolean andLeft local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 if Key_followWalkable[this_1] and Key_picked[this_1] then set instanceOfTemp = Serializable_typeId[ItemObject_holder[this_1]] set andLeft = instanceOfTemp >= 1162 and instanceOfTemp <= 1167 else set andLeft = false endif if andLeft then set escaper = ItemObject_holder[this_1] if ( not Entity_flying[ItemObject_holder[this_1]]) and ( not Escaper_sliding[escaper]) and Escaper_alive[escaper] then set tuple_temp = dispatch_UnitEntity_Entity_UnitEntity_getPos(ItemObject_holder[this_1]) set tuple_temp_1 = dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y set tuple_temp_2 = dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z set Entity_pos_x[this_1] = tuple_temp set Entity_pos_y[this_1] = tuple_temp_1 set Entity_pos_z[this_1] = tuple_temp_2 endif else call Entity_update(this_1) endif endfunction function alloc_CallbackSingle_doAfter_Minion_Minion_1621 takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 696 else call error("Out of memory: Could not create CallbackSingle_doAfter_Minion_Minion.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 696 endif return this_1 endfunction function alloc_CallbackSingle_doAfter_Minion_Minion_1622 takes nothing returns integer local integer this_1 if CallbackSingle_firstFree == 0 then if CallbackSingle_maxIndex < JASS_MAX_ARRAY_SIZE then set CallbackSingle_maxIndex = CallbackSingle_maxIndex + 1 set this_1 = CallbackSingle_maxIndex set CallbackSingle_typeId[this_1] = 697 else call error("Out of memory: Could not create CallbackSingle_doAfter_Minion_Minion.") set this_1 = 0 endif else set CallbackSingle_firstFree = CallbackSingle_firstFree - 1 set this_1 = CallbackSingle_nextFree[CallbackSingle_firstFree] set CallbackSingle_typeId[this_1] = 697 endif return this_1 endfunction function Minion_attack takes integer this_1 returns nothing local integer clVar set Minion_state[this_1] = 2 call unit_setAnimation(UnitEntity_actor[this_1], "attack") set clVar = alloc_CallbackSingle_doAfter_Minion_Minion_1622() call construct_CallbackSingle(clVar) set this_2918[clVar] = this_1 call doAfter(0.7, clVar) endfunction function dispatch_Minion_Minion_Minion_attack takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Minion.attack") else call error("Called Minion.attack on invalid object.") endif endif call Minion_attack(this_1) endfunction function Minion_update takes integer this_1 returns nothing local integer receiver local integer receiver_1 local boolean targetInvalid local effect fearEffect_1 local integer clVar call SetupObject_update(this_1) set receiver = Minion_hpBar[this_1] call dispatch_CustomBar_CustomBar_CustomBar_setPosXY(receiver, Entity_pos_x[this_1] - 15., Entity_pos_y[this_1] + 30.) set receiver_1 = receiver call dispatch_CustomBar_CustomBar_CustomBar_setValue(receiver_1, Minion_currentHP[this_1] / Minion_maxHp[this_1] * 100.0) set targetInvalid = Minion_target[this_1] == 0 or ( not Escaper_alive[Minion_target[this_1]]) or Entity_getCurrentRegion(Minion_target[this_1]) != Entity_getCurrentRegion(this_1) or vec3_distanceTo2d_4262(Entity_pos_x[Minion_target[this_1]], Entity_pos_y[Minion_target[this_1]], Entity_pos_z[Minion_target[this_1]], Minion_spawnPoint_x[this_1], Minion_spawnPoint_y[this_1]) > Minion_FOLLOW_RANGE if targetInvalid then if Minion_state[this_1] == 2 or Minion_state[this_1] == 1 then set Minion_state[this_1] = 3 set fearEffect_1 = widget_addEffect(UnitEntity_actor[this_1], Abilities_creepSleepTarget, "overhead") set Minion_target[this_1] = 0 call unit_issuePointOrder(SetupObject_setup[this_1], "move", Minion_spawnPoint_x[this_1], Minion_spawnPoint_y[this_1]) set clVar = alloc_CallbackSingle_doAfter_Minion_Minion_1621() call construct_CallbackSingle(clVar) set fearEffect[clVar] = fearEffect_1 set this_2917[clVar] = this_1 call doAfter(4., clVar) elseif not (Minion_state[this_1] == 3) then set Minion_state[this_1] = 0 call dispatch_Minion_Minion_Minion_selectTarget(this_1) endif else if Minion_state[this_1] == 2 then call unit_setFacing(UnitEntity_actor[this_1], vec3_angleTo2d_4259(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], Entity_pos_x[Minion_target[this_1]], Entity_pos_y[Minion_target[this_1]], Entity_pos_z[Minion_target[this_1]])) endif if ( not (Minion_state[this_1] == 2)) and vec3_distanceTo(Entity_pos_x[Minion_target[this_1]], Entity_pos_y[Minion_target[this_1]], Entity_pos_z[Minion_target[this_1]], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) < Minion_ATTACK_DISTANCE then call dispatch_Minion_Minion_Minion_attack(this_1) elseif not (Minion_state[this_1] == 2) then call unit_issuePointOrder(SetupObject_setup[this_1], "move", vec3_toVec2(Entity_pos_x[Minion_target[this_1]], Entity_pos_y[Minion_target[this_1]], Entity_pos_z[Minion_target[this_1]]), vec3_toVec2_return_y) endif endif endfunction function OrbProjectile_update takes integer this_1 returns nothing call Projectile_update(this_1) if ( not Entity_done[this_1]) and OrbProjectile_rdata[this_1] != Entity_setCurrentRegion(this_1) then call dispatch_Escaper_Escaper_Escaper_kill(OrbProjectile_e[this_1], 0) call dispatch_Projectile_Projectile_Projectile_terminate(this_1) endif endfunction function Pointer_update takes integer this_1 returns nothing local unit receiver local unit receiver_1 local real tuple_temp local real tuple_temp_1 if Pointer_turning[this_1] then set tuple_temp = angle_op_plus(Pointer_angl_radians[this_1], real_asAngleDegrees(Pointer_turnspeed[this_1])) set Pointer_angl_radians[this_1] = tuple_temp set tuple_temp_1 = real_asAngleDegrees(ModuloReal(angle_degrees(Pointer_angl_radians[this_1]), 360.)) set Pointer_angl_radians[this_1] = tuple_temp_1 set receiver = UnitEntity_actor[this_1] call unit_setXY(receiver, unit_getPos(SetupObject_setup[this_1]), unit_getPos_return_y) set receiver_1 = receiver call unit_setFacing(receiver_1, Pointer_angl_radians[this_1]) else call SetupObject_update(this_1) endif endfunction function Fx_getColor takes integer this_1 returns integer set Fx_getColor_return_red = Fx_col_red[this_1] set Fx_getColor_return_green = Fx_col_green[this_1] set Fx_getColor_return_blue = Fx_col_blue[this_1] set Fx_getColor_return_alpha = Fx_col_alpha[this_1] return Fx_getColor_return_red endfunction function dispatch_Fx_Fx_Fx_getColor takes integer this_1 returns integer local integer Fx_Fx_getColor_result_red local integer Fx_Fx_getColor_result_green local integer Fx_Fx_getColor_result_blue local integer Fx_Fx_getColor_result_alpha local integer tuple_temp local integer tuple_temp_1 local integer tuple_temp_2 local integer tuple_temp_3 if Fx_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Fx.getColor") else call error("Called Fx.getColor on invalid object.") endif endif set tuple_temp = Fx_getColor(this_1) set tuple_temp_1 = Fx_getColor_return_green set tuple_temp_2 = Fx_getColor_return_blue set tuple_temp_3 = Fx_getColor_return_alpha set Fx_Fx_getColor_result_red = tuple_temp set Fx_Fx_getColor_result_green = tuple_temp_1 set Fx_Fx_getColor_result_blue = tuple_temp_2 set Fx_Fx_getColor_result_alpha = tuple_temp_3 set dispatch_Fx_Fx_Fx_getColor_return_red = Fx_Fx_getColor_result_red set dispatch_Fx_Fx_Fx_getColor_return_green = Fx_Fx_getColor_result_green set dispatch_Fx_Fx_Fx_getColor_return_blue = Fx_Fx_getColor_result_blue set dispatch_Fx_Fx_Fx_getColor_return_alpha = Fx_Fx_getColor_result_alpha return dispatch_Fx_Fx_Fx_getColor_return_red endfunction function Portal_update takes integer this_1 returns nothing if Portal_destiny_x[this_1] != Vectors_ZERO2_x or Portal_destiny_y[this_1] != Vectors_ZERO2_y and dispatch_Fx_Fx_Fx_getColor(FxEntity_fx[this_1]) != Colors_COLOR_WHITE_red or dispatch_Fx_Fx_Fx_getColor_return_green != Colors_COLOR_WHITE_green or dispatch_Fx_Fx_Fx_getColor_return_blue != Colors_COLOR_WHITE_blue or dispatch_Fx_Fx_Fx_getColor_return_alpha != Colors_COLOR_WHITE_alpha then set Portal_lerpy[this_1] = real_lerp(Portal_lerpy[this_1], 1.05, 0.045) call dispatch_Fx_Fx_Fx_setColor(FxEntity_fx[this_1], colorA_mix(145, 145, 145, 145, Colors_COLOR_WHITE_red, Colors_COLOR_WHITE_green, Colors_COLOR_WHITE_blue, Colors_COLOR_WHITE_alpha, Portal_lerpy[this_1]), colorA_mix_return_green, colorA_mix_return_blue, colorA_mix_return_alpha) else call dispatch_Entity_Entity_Entity_DupletListModule_deactivate(this_1) endif endfunction function Powernode_getBounceVec takes integer this_1, real vel3_x, real vel3_y, real vel3_z, real nor2_x, real nor2_y, real bounceFactor returns real local real tuple_temp = vec2_toVec3(nor2_x, nor2_y) local real tuple_temp_1 = vec2_toVec3_return_y local real tuple_temp_2 = vec2_toVec3_return_z local real nor3_x = tuple_temp local real nor3_y = tuple_temp_1 local real nor3_z = tuple_temp_2 local real dotProduct = vec3_dot(vel3_x, vel3_y, vel3_z, nor3_x, nor3_y, nor3_z) local real tuple_temp_3 = vec3_op_minus(vel3_x, vel3_y, vel3_z, real_op_mult_3963(2. * dotProduct, nor3_x, nor3_y, nor3_z), real_op_mult_return_y_2603, real_op_mult_return_z) local real tuple_temp_4 = vec3_op_minus_return_y local real tuple_temp_5 = vec3_op_minus_return_z local real reflection_x = tuple_temp_3 local real reflection_y = tuple_temp_4 local real reflection_z = tuple_temp_5 local real tuple_temp_6 = vec3_op_mult(reflection_x, reflection_y, reflection_z, bounceFactor) local real tuple_temp_7 = vec3_op_mult_return_y local real tuple_temp_8 = vec3_op_mult_return_z set reflection_x = tuple_temp_6 set reflection_y = tuple_temp_7 set reflection_z = tuple_temp_8 set Powernode_getBounceVec_return_x = reflection_x set Powernode_getBounceVec_return_y = reflection_y set Powernode_getBounceVec_return_z = reflection_z return Powernode_getBounceVec_return_x endfunction function dispatch_Powernode_Powernode_Powernode_getBounceVec takes integer this_1, real vel3_x, real vel3_y, real vel3_z, real nor2_x, real nor2_y, real bounceFactor returns real local real Powernode_Powernode_getBounceVec_result_x local real Powernode_Powernode_getBounceVec_result_y local real Powernode_Powernode_getBounceVec_result_z local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Powernode.getBounceVec") else call error("Called Powernode.getBounceVec on invalid object.") endif endif set tuple_temp = Powernode_getBounceVec(this_1, vel3_x, vel3_y, vel3_z, nor2_x, nor2_y, bounceFactor) set tuple_temp_1 = Powernode_getBounceVec_return_y set tuple_temp_2 = Powernode_getBounceVec_return_z set Powernode_Powernode_getBounceVec_result_x = tuple_temp set Powernode_Powernode_getBounceVec_result_y = tuple_temp_1 set Powernode_Powernode_getBounceVec_result_z = tuple_temp_2 set dispatch_Powernode_Powernode_Powernode_getBounceVec_return_x = Powernode_Powernode_getBounceVec_result_x set dispatch_Powernode_Powernode_Powernode_getBounceVec_return_y = Powernode_Powernode_getBounceVec_result_y set dispatch_Powernode_Powernode_Powernode_getBounceVec_return_z = Powernode_Powernode_getBounceVec_result_z return dispatch_Powernode_Powernode_Powernode_getBounceVec_return_x endfunction function Powernode_calBounceDiode takes integer this_1, real lpos_x, real lpos_y, real lpos_z, integer e_1, real bounceFactor returns nothing local real dx = lpos_x - Entity_pos_x[e_1] local real dy = lpos_y - Entity_pos_y[e_1] local real tuple_temp = vec2_toVec3(vec2_norm( - dy, dx), vec2_norm_return_y) local real tuple_temp_1 = vec2_toVec3_return_y local real tuple_temp_2 = vec2_toVec3_return_z local real normal_x = tuple_temp local real normal_y = tuple_temp_1 local real normal_z = tuple_temp_2 local real tuple_temp_3 = vec3_op_mult(dispatch_Powernode_Powernode_Powernode_getBounceVec(this_1, normal_x, normal_y, normal_z, vec3_toVec2(normal_x, normal_y, normal_z), vec3_toVec2_return_y, - bounceFactor), dispatch_Powernode_Powernode_Powernode_getBounceVec_return_y, dispatch_Powernode_Powernode_Powernode_getBounceVec_return_z, 3) local real tuple_temp_4 = vec3_op_mult_return_y local real tuple_temp_5 = vec3_op_mult_return_z local real b_x = tuple_temp_3 local real b_y = tuple_temp_4 local real b_z = tuple_temp_5 local real tuple_temp_6 local real tuple_temp_7 call dispatch_UnitEntity_Entity_UnitEntity_setPos(e_1, vec3_op_plus(Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1], b_x, b_y, b_z), vec3_op_plus_return_y, vec3_op_plus_return_z) call dispatch_Entity_Entity_Entity_setVel(e_1, b_x, b_y, b_z) set tuple_temp_6 = Vectors_ZERO2_x set tuple_temp_7 = Vectors_ZERO2_y set Escaper_slideVelocity_x[e_1] = tuple_temp_6 set Escaper_slideVelocity_y[e_1] = tuple_temp_7 endfunction function dispatch_Powernode_Powernode_Powernode_calBounceDiode takes integer this_1, real lpos_x, real lpos_y, real lpos_z, integer e_1, real bounceFactor returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Powernode.calBounceDiode") else call error("Called Powernode.calBounceDiode on invalid object.") endif endif call Powernode_calBounceDiode(this_1, lpos_x, lpos_y, lpos_z, e_1, bounceFactor) endfunction function calculateNormal takes real pointA_x, real pointA_y, real pointB_x, real pointB_y, real pointC_x, real pointC_y returns real local real tuple_temp = vec2_op_minus(pointB_x, pointB_y, pointA_x, pointA_y) local real tuple_temp_1 = vec2_op_minus_return_y local real vectorAB_x = tuple_temp local real vectorAB_y = tuple_temp_1 local real tuple_temp_2 = vec2_op_minus(pointC_x, pointC_y, pointA_x, pointA_y) local real tuple_temp_3 = vec2_op_minus_return_y local real vectorAC_x = tuple_temp_2 local real vectorAC_y = tuple_temp_3 local real crossProductZ = vectorAB_x * vectorAC_y - vectorAB_y * vectorAC_x local real normal_x local real normal_y local real tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 local real tuple_temp_7 if crossProductZ > 0. then set tuple_temp_4 = - vectorAB_y set tuple_temp_5 = vectorAB_x set normal_x = tuple_temp_4 set normal_y = tuple_temp_5 else set tuple_temp_6 = vectorAB_y set tuple_temp_7 = - vectorAB_x set normal_x = tuple_temp_6 set normal_y = tuple_temp_7 endif set calculateNormal_return_x = vec2_norm(normal_x, normal_y) set calculateNormal_return_y = vec2_norm_return_y return calculateNormal_return_x endfunction function real_op_mult takes real this_1, real vec_x, real vec_y returns real set real_op_mult_return_x = vec_x * this_1 set real_op_mult_return_y = vec_y * this_1 return real_op_mult_return_x endfunction function vec2_dot takes real this_x, real this_y, real v_x, real v_y returns real return this_x * v_x + this_y * v_y endfunction function reflectVelocity takes real velocity_x, real velocity_y, real normal_x, real normal_y, real reboundFactor returns real local real dotProduct = vec2_dot(velocity_x, velocity_y, normal_x, normal_y) local real tuple_temp = vec2_op_minus(velocity_x, velocity_y, real_op_mult(2. * dotProduct, normal_x, normal_y), real_op_mult_return_y) local real tuple_temp_1 = vec2_op_minus_return_y local real reflection_x = tuple_temp local real reflection_y = tuple_temp_1 local real tuple_temp_2 = vec2_op_mult(reflection_x, reflection_y, reboundFactor) local real tuple_temp_3 = vec2_op_mult_return_y local real reflectedVelocity_x = tuple_temp_2 local real reflectedVelocity_y = tuple_temp_3 set reflectVelocity_return_x = reflectedVelocity_x set reflectVelocity_return_y = reflectedVelocity_y return reflectVelocity_return_x endfunction function Powernode_calBounceSimple takes integer this_1, real lpos_x, real lpos_y, real lpos_z, integer e_1, real bounceFactor returns nothing local real tuple_temp = calculateNormal(vec3_toVec2(lpos_x, lpos_y, lpos_z), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1]), vec3_toVec2_return_y) local real tuple_temp_1 = calculateNormal_return_y local real normal_x = tuple_temp local real normal_y = tuple_temp_1 local real refVel_x local real refVel_y local real temp_tuple_z local real temp_x local real temp_y local integer temp local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 local real tuple_temp_7 local real tuple_temp_8 if Entity_flying[e_1] then set tuple_temp_2 = reflectVelocity(vec2_op_plus(vec2_op_plus(vec2_op_plus(vec3_toVec2(Entity_vel_x[e_1], Entity_vel_y[e_1], Entity_vel_z[e_1]), vec3_toVec2_return_y, Escaper_walkVel_x[e_1], Escaper_walkVel_y[e_1]), vec2_op_plus_return_y, Escaper_slideVelocity_x[e_1], Escaper_slideVelocity_y[e_1]), vec2_op_plus_return_y, Escaper_otherVel_x[e_1], Escaper_otherVel_y[e_1]), vec2_op_plus_return_y, normal_x, normal_y, bounceFactor) set tuple_temp_3 = reflectVelocity_return_y set refVel_x = tuple_temp_2 set refVel_y = tuple_temp_3 call dispatch_Escaper_Escaper_Escaper_setXY(e_1, vec3_op_plus_4280(vec3_op_plus_4280(Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1], normal_x, normal_y), vec3_op_plus_return_y_3134, vec3_op_plus_return_z_3136, refVel_x, refVel_y), vec3_op_plus_return_y_3134, vec3_op_plus_return_z_3136) set temp = e_1 set tuple_temp_4 = refVel_x set tuple_temp_5 = refVel_y set temp_x = tuple_temp_4 set temp_y = tuple_temp_5 call dispatch_Entity_Entity_Entity_getVel(e_1) set tuple_temp_6 = dispatch_Entity_Entity_Entity_getVel_return_z set temp_tuple_z = tuple_temp_6 call dispatch_Entity_Entity_Entity_setVel(temp, vec2_withZ(temp_x, temp_y, temp_tuple_z), vec2_withZ_return_y, vec2_withZ_return_z) else call dispatch_Escaper_Escaper_Escaper_setXY(e_1, vec3_op_plus_4280(vec3_op_minus_4277(vec3_op_minus_4277(Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1], Escaper_walkVel_x[e_1], Escaper_walkVel_y[e_1]), vec3_op_minus_return_y_3125, vec3_op_minus_return_z_3127, Escaper_slideVelocity_x[e_1], Escaper_slideVelocity_y[e_1]), vec3_op_minus_return_y_3125, vec3_op_minus_return_z_3127, vec2_op_mult(normal_x, normal_y, 2), vec2_op_mult_return_y), vec3_op_plus_return_y_3134, vec3_op_plus_return_z_3136) endif set tuple_temp_7 = Vectors_ZERO2_x set tuple_temp_8 = Vectors_ZERO2_y set Escaper_slideVelocity_x[e_1] = tuple_temp_7 set Escaper_slideVelocity_y[e_1] = tuple_temp_8 endfunction function dispatch_Powernode_Powernode_Powernode_calBounceSimple takes integer this_1, real lpos_x, real lpos_y, real lpos_z, integer e_1, real bounceFactor returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Powernode.calBounceSimple") else call error("Called Powernode.calBounceSimple on invalid object.") endif endif call Powernode_calBounceSimple(this_1, lpos_x, lpos_y, lpos_z, e_1, bounceFactor) endfunction function vec2_distanceToSegmentSq takes real this_x, real this_y, real v1_x, real v1_y, real v2_x, real v2_y returns real local real l2 = vec2_distanceToSq(v1_x, v1_y, v2_x, v2_y) local real t if l2 == 0. then return vec2_distanceToSq(this_x, this_y, v1_x, v1_y) endif set t = ((this_x - v1_x) * (v2_x - v1_x) + (this_y - v1_y) * (v2_y - v1_y)) / l2 if t < 0. then return vec2_distanceToSq(this_x, this_y, v1_x, v1_y) endif if t > 1. then return vec2_distanceToSq(this_x, this_y, v2_x, v2_y) endif return vec2_distanceToSq(this_x, this_y, v1_x + t * (v2_x - v1_x), v1_y + t * (v2_y - v1_y)) endfunction function Powernode_update takes integer this_1 returns nothing local integer link local integer tmp local integer e_1 local integer from local integer temp call SetupObject_update(this_1) set link = Powernode_firstLink[this_1] loop exitwhen not (link != 0) if Entity_done[Link_target[link]] then set tmp = link set link = Link_next[link] call dispatch_Link_destroyLink(tmp) else call MoveLightning(Link_sfx[link], false, Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_x[Link_target[link]], Entity_pos_y[Link_target[link]]) set from = dispatch_RegionData_RegionData_RegionData_getEscapers(Entity_getCurrentRegion(this_1)) loop exitwhen not LLIterator_hasNext(from) set e_1 = LLIterator_next(from) if Link_ltype[link] == 5 then if Escaper_orb[e_1] != 0 and vec2_distanceToSegmentSq(vec3_toVec2(Entity_pos_x[Escaper_orb[e_1]], Entity_pos_y[Escaper_orb[e_1]], Entity_pos_z[Escaper_orb[e_1]]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[Link_target[link]], Entity_pos_y[Link_target[link]], Entity_pos_z[Link_target[link]]), vec3_toVec2_return_y) < real_squared(Powernode_ACTIVATION_DIST) then call flashEffect(Abilities_spellBreakerAttack, Entity_pos_x[Escaper_orb[e_1]], Entity_pos_y[Escaper_orb[e_1]], Entity_pos_z[Escaper_orb[e_1]]) call Log_debug("Orb P Terminate") call dispatch_Projectile_Projectile_Projectile_terminate(Escaper_orb[e_1]) endif elseif Escaper_alive[e_1] and vec2_distanceToSegmentSq(vec3_toVec2(Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[Link_target[link]], Entity_pos_y[Link_target[link]], Entity_pos_z[Link_target[link]]), vec3_toVec2_return_y) < real_squared(Powernode_ACTIVATION_DIST) then if Entity_pos_z[e_1] < 24. or Link_ltype[link] == 2 or Link_ltype[link] == 3 then set temp = Link_ltype[link] if temp == 0 then call effect_destr(AddSpecialEffect(Powernode_KILL_EFFECT, Entity_pos_x[e_1], Entity_pos_y[e_1])) call dispatch_Escaper_Escaper_Escaper_kill(e_1, this_1) elseif temp == 1 then call dispatch_Powernode_Powernode_Powernode_calBounceSimple(this_1, Entity_pos_x[Link_target[link]], Entity_pos_y[Link_target[link]], Entity_pos_z[Link_target[link]], e_1, dispatch_ConfigValue_ConfigValue_ConfigValue_get(Powernode_bounciness[this_1])) elseif temp == 4 then call dispatch_Powernode_Powernode_Powernode_calBounceDiode(this_1, Entity_pos_x[Link_target[link]], Entity_pos_y[Link_target[link]], Entity_pos_z[Link_target[link]], e_1, dispatch_ConfigValue_ConfigValue_ConfigValue_get(Powernode_bounciness[this_1])) elseif temp == 2 then if Entity_pos_z[e_1] > 10. then call effect_destr(addEffect_1563(Abilities_dispelMagicTarget, dispatch_UnitEntity_Entity_UnitEntity_getPos(e_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z)) call dispatch_Powernode_Powernode_Powernode_calBounceSimple(this_1, Entity_pos_x[Link_target[link]], Entity_pos_y[Link_target[link]], Entity_pos_z[Link_target[link]], e_1, dispatch_ConfigValue_ConfigValue_ConfigValue_get(Powernode_bounciness[this_1])) endif elseif temp == 3 then if Entity_pos_z[e_1] > 20. then call effect_destr(addEffect_1563(Abilities_dispelMagicTarget, dispatch_UnitEntity_Entity_UnitEntity_getPos(e_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z)) endif call dispatch_Powernode_Powernode_Powernode_calBounceSimple(this_1, Entity_pos_x[Link_target[link]], Entity_pos_y[Link_target[link]], Entity_pos_z[Link_target[link]], e_1, dispatch_ConfigValue_ConfigValue_ConfigValue_get(Powernode_bounciness[this_1])) endif endif endif endloop set link = Link_next[link] endif endloop endfunction function ShipProjectile_update takes integer this_1 returns nothing local integer itr_1 local integer rock local integer from call Projectile_update(this_1) if not rect_contains(gg_rct_spaceygamearea, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y) then call dispatch_Projectile_Projectile_Projectile_terminate(this_1) else set itr_1 = dispatch_LinkedList_LinkedList_LinkedList_staticItr(MGSpacey_rocks) set from = itr_1 loop exitwhen not LLIterator_hasNext(from) set rock = LLIterator_next(from) if vec3_distanceTo2dSq(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], vec3_toVec2(Entity_pos_x[rock], Entity_pos_y[rock], Entity_pos_z[rock]), vec3_toVec2_return_y) < real_squared(21.) + SpaceRock_radiusSq[rock] then set SpaceRock_hp[rock] = SpaceRock_hp[rock] - 1 if SpaceRock_hp[rock] <= 0 then call cyc_RevivePoint_terminate(18, rock) call dispatch_LLIterator_LinkedList_LLIterator_remove(itr_1) call player_addGold(Entity_owner[this_1], SpaceRock_level[rock] / 2) endif call flashEffect(Abilities_manaBurnTarget, dispatch_Entity_Entity_Entity_getPos(this_1), dispatch_Entity_Entity_Entity_getPos_return_y, dispatch_Entity_Entity_Entity_getPos_return_z) call dispatch_Projectile_Projectile_Projectile_terminate(this_1) exitwhen true endif endloop endif endfunction function SpaceRock_update takes integer this_1 returns nothing local real tuple_temp = vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], 6.), vec3_op_mult_return_y, vec3_op_mult_return_z) local real tuple_temp_1 = vec3_op_plus_return_y local real tpos_x_1 = tuple_temp local real tpos_y_1 = tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 local real tuple_temp_7 local real tuple_temp_8 local real tuple_temp_9 local real tuple_temp_10 local real tuple_temp_11 local real tuple_temp_12 local real tuple_temp_13 local real tuple_temp_14 local real tuple_temp_15 local real tuple_temp_16 if tpos_x_1 < rect_getMinX(gg_rct_spaceygamearea) then set Entity_vel_x[this_1] = - Entity_vel_x[this_1] set tuple_temp_2 = vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], 0.95) set tuple_temp_3 = vec3_op_mult_return_y set tuple_temp_4 = vec3_op_mult_return_z set Entity_vel_x[this_1] = tuple_temp_2 set Entity_vel_y[this_1] = tuple_temp_3 set Entity_vel_z[this_1] = tuple_temp_4 elseif tpos_x_1 > rect_getMaxX(gg_rct_spaceygamearea) then set Entity_vel_x[this_1] = - Entity_vel_x[this_1] set tuple_temp_5 = vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], 0.95) set tuple_temp_6 = vec3_op_mult_return_y set tuple_temp_7 = vec3_op_mult_return_z set Entity_vel_x[this_1] = tuple_temp_5 set Entity_vel_y[this_1] = tuple_temp_6 set Entity_vel_z[this_1] = tuple_temp_7 endif if tpos_y_1 < rect_getMinY(gg_rct_spaceygamearea) then set Entity_vel_y[this_1] = - Entity_vel_y[this_1] set tuple_temp_8 = vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], 0.95) set tuple_temp_9 = vec3_op_mult_return_y set tuple_temp_10 = vec3_op_mult_return_z set Entity_vel_x[this_1] = tuple_temp_8 set Entity_vel_y[this_1] = tuple_temp_9 set Entity_vel_z[this_1] = tuple_temp_10 elseif tpos_y_1 > rect_getMaxY(gg_rct_spaceygamearea) then set Entity_vel_y[this_1] = - Entity_vel_y[this_1] set tuple_temp_11 = vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], 0.95) set tuple_temp_12 = vec3_op_mult_return_y set tuple_temp_13 = vec3_op_mult_return_z set Entity_vel_x[this_1] = tuple_temp_11 set Entity_vel_y[this_1] = tuple_temp_12 set Entity_vel_z[this_1] = tuple_temp_13 endif set tuple_temp_14 = vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1]) set tuple_temp_15 = vec3_op_plus_return_y set tuple_temp_16 = vec3_op_plus_return_z set Entity_pos_x[this_1] = tuple_temp_14 set Entity_pos_y[this_1] = tuple_temp_15 set Entity_pos_z[this_1] = tuple_temp_16 call dispatch_Fx2_Fx2_Fx2_setOrientation(Fx2Entity_fx[this_1], angle_toQuat(vec2_getAngle(vec3_toVec2(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1]), vec3_toVec2_return_y), 0., 0., 1.), angle_toQuat_return_y, angle_toQuat_return_z, angle_toQuat_return_w) call Fx2Entity_update(this_1) endfunction function superformulaRadius takes real t, real a, real b, real m, real n1, real n2, real n3 returns real local real part1 = 1. / a * Cos(m * t / 4.) local real part2 = 1. / b * Sin(m * t / 4.) local real absPart1PowN2 = Pow(real_abs(part1), n2) local real absPart2PowN3 = Pow(real_abs(part2), n3) local real r = Pow(absPart1PowN2 + absPart2PowN3, - (1. / n1)) return r endfunction function Spinner_update takes integer this_1 returns nothing local real speed local integer node local real a local real b local real m local real n1 local real n2 local real n3 local real r local integer tmp call SetupObject_update(this_1) set speed = dispatch_ConfigValue_ConfigValue_ConfigValue_get(Spinner_spinSpeed[this_1]) set node = Spinner_firstNode[this_1] loop exitwhen not (node != 0) if ( not Entity_done[SpinNode_obj[node]]) and UnitEntity_actor[SpinNode_obj[node]] != null then if Spinner_useSuperFormula[this_1] then set a = 1.0 set b = 1.0 set m = 4.0 set n1 = 30.0 set n2 = 15.0 set n3 = 15.0 set r = superformulaRadius(SpinNode_angl[node], a, b, m, n1, n2, n3) call dispatch_SetupObject_SetupObject_SetupObject_setXY(SpinNode_obj[node], Entity_pos_x[this_1] + r * SpinNode_dist[node] * Cos(SpinNode_angl[node]) * dispatch_ConfigValue_ConfigValue_ConfigValue_get(Spinner_cosFactor[this_1]), Entity_pos_y[this_1] + r * SpinNode_dist[node] * Sin(SpinNode_angl[node]) * dispatch_ConfigValue_ConfigValue_ConfigValue_get(Spinner_sinFactor[this_1]), 0.) else call dispatch_SetupObject_SetupObject_SetupObject_setXY(SpinNode_obj[node], Entity_pos_x[this_1] + SpinNode_dist[node] * Cos(SpinNode_angl[node]) * dispatch_ConfigValue_ConfigValue_ConfigValue_get(Spinner_cosFactor[this_1]), Entity_pos_y[this_1] + SpinNode_dist[node] * Sin(SpinNode_angl[node]) * dispatch_ConfigValue_ConfigValue_ConfigValue_get(Spinner_sinFactor[this_1]), 0.) endif if SetupObject_enabled[this_1] then set SpinNode_angl[node] = SpinNode_angl[node] + speed endif else set tmp = node if node == Spinner_firstNode[this_1] then set Spinner_firstNode[this_1] = SpinNode_next[node] endif call dispatch_SpinNode_destroySpinNode(tmp) endif set node = SpinNode_next[node] endloop endfunction function StaticSetupObject_update takes integer this_1 returns nothing endfunction function StrongEscaper_update takes integer this_1 returns nothing local integer temp_tuple_currentType local integer temp_tuple_unwalkableId local integer temp local boolean andLeft local integer tuple_temp local integer tuple_temp_1 call Escaper_update(this_1) if StrongEscaper_invulnerable[this_1] then set StrongEscaper_shieldtimer[this_1] = StrongEscaper_shieldtimer[this_1] - Basics_ANIMATION_PERIOD if vec3_distanceTo2dSq(dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z, StrongEscaper_shieldPos_x[this_1], StrongEscaper_shieldPos_y[this_1]) > 16 * 16 or StrongEscaper_shieldtimer[this_1] <= 0. then set andLeft = true else call vec3_getEBRTile(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) set tuple_temp = vec3_getEBRTile_return_currentType set temp_tuple_currentType = tuple_temp set temp = temp_tuple_currentType call dispatch_RegionData_RegionData_RegionData_getTypeSet(Entity_getCurrentRegion(this_1)) set tuple_temp_1 = dispatch_RegionData_RegionData_RegionData_getTypeSet_return_unwalkableId set temp_tuple_unwalkableId = tuple_temp_1 set andLeft = temp == temp_tuple_unwalkableId endif if andLeft then if StrongEscaper_shieldtimer[this_1] > 0. then call createFText_2344(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], 0., .08, "canceled!", 8.5, 2., 255, 0, 0, 255, Entity_owner[this_1]) endif set StrongEscaper_shieldtimer[this_1] = 0. call unit_removeAbility(UnitEntity_actor[this_1], 1098282348) set StrongEscaper_invulnerable[this_1] = false call effect_destr(StrongEscaper_shieldeffect[this_1]) endif endif endfunction function TextTagEntity_update takes integer this_1 returns nothing local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 set Entity_vel_z[this_1] = Entity_vel_z[this_1] + Entity_gravity[this_1] set tuple_temp = vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], Entity_speedFactor[this_1]), vec3_op_mult_return_y, vec3_op_mult_return_z) set tuple_temp_1 = vec3_op_plus_return_y set tuple_temp_2 = vec3_op_plus_return_z set Entity_pos_x[this_1] = tuple_temp set Entity_pos_y[this_1] = tuple_temp_1 set Entity_pos_z[this_1] = tuple_temp_2 call texttag_setPos(FText_tt[TextTagEntity_ftext[this_1]], Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) call texttag_setColor_4077(FText_tt[TextTagEntity_ftext[this_1]], TextTagEntity_col_red[this_1], TextTagEntity_col_green[this_1], TextTagEntity_col_blue[this_1], TextTagEntity_col_alpha[this_1]) set TextTagEntity_dur[this_1] = TextTagEntity_dur[this_1] - Basics_ANIMATION_PERIOD if TextTagEntity_dur[this_1] <= 0. then call cyc_RevivePoint_terminate(18, this_1) endif endfunction function rectangle_contains takes real this_min_x, real this_min_y, real this_max_x, real this_max_y, real point_x, real point_y returns boolean return point_x > this_min_x and point_x < this_max_x and point_y > this_min_y and point_y < this_max_y endfunction function Tracks_update takes integer this_1 returns nothing local integer from = dispatch_RegionData_RegionData_RegionData_getEscapers(Entity_getCurrentRegion(this_1)) local integer escaper local real tuple_temp local real tuple_temp_1 loop exitwhen not LLIterator_hasNext(from) set escaper = LLIterator_next(from) if Entity_pos_z[escaper] < 22. and rectangle_contains(Tracks_rct_min_x[this_1], Tracks_rct_min_y[this_1], Tracks_rct_max_x[this_1], Tracks_rct_max_y[this_1], vec3_toVec2(Entity_pos_x[escaper], Entity_pos_y[escaper], Entity_pos_z[escaper]), vec3_toVec2_return_y) then set tuple_temp = vec2_op_plus(Escaper_otherVel_x[escaper], Escaper_otherVel_y[escaper], vec2_op_mult(Tracks_dir_x[this_1], Tracks_dir_y[this_1], dispatch_ConfigValue_ConfigValue_ConfigValue_get(Tracks_trackSpeed[this_1])), vec2_op_mult_return_y) set tuple_temp_1 = vec2_op_plus_return_y set Escaper_otherVel_x[escaper] = tuple_temp set Escaper_otherVel_y[escaper] = tuple_temp_1 endif endloop endfunction function alloc_ForGroupCallback_forUnitsInRange_Trap_Trap takes nothing returns integer local integer this_1 if ForGroupCallback_firstFree == 0 then if ForGroupCallback_maxIndex < JASS_MAX_ARRAY_SIZE then set ForGroupCallback_maxIndex = ForGroupCallback_maxIndex + 1 set this_1 = ForGroupCallback_maxIndex set ForGroupCallback_typeId[this_1] = 866 else call error("Out of memory: Could not create ForGroupCallback_forUnitsInRange_Trap_Trap.") set this_1 = 0 endif else set ForGroupCallback_firstFree = ForGroupCallback_firstFree - 1 set this_1 = ForGroupCallback_nextFree[ForGroupCallback_firstFree] set ForGroupCallback_typeId[this_1] = 866 endif return this_1 endfunction function Trap_update takes integer this_1 returns nothing local integer clVar local real temp_x local real temp_y local real temp local real tuple_temp local real tuple_temp_1 if Trap_timerreal[this_1] <= 0.0 then call flashEffect_3280(Trap_SFX_STRINGS[Trap_sfxid[this_1]], unit_getPos(UnitEntity_actor[this_1]), unit_getPos_return_y) set tuple_temp = vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]) set tuple_temp_1 = vec3_toVec2_return_y set temp_x = tuple_temp set temp_y = tuple_temp_1 set temp = Trap_EVENT_RADIUS set clVar = alloc_ForGroupCallback_forUnitsInRange_Trap_Trap() set this_2960[clVar] = this_1 call forUnitsInRange(temp_x, temp_y, temp, clVar) set Trap_timerreal[this_1] = Trap_interval[this_1] else set Trap_timerreal[this_1] = Trap_timerreal[this_1] - Basics_ANIMATION_PERIOD endif endfunction function UnitCreator_create takes integer this_1 returns nothing local real tuple_temp = vec2_op_plus(vec3_toVec2(dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint(this_1), dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_y, dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyPoint_return_z), vec3_toVec2_return_y, 0.001, 0.001) local real tuple_temp_1 = vec2_op_plus_return_y local real rPos_x = tuple_temp local real rPos_y = tuple_temp_1 local real tuple_temp_2 = vec2_op_plus(vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, 0.001, 0.001) local real tuple_temp_3 = vec2_op_plus_return_y local real cpos_x = tuple_temp_2 local real cpos_y = tuple_temp_3 local integer ek = 0 local integer temp = UnitCreator_spawnUnitType[this_1] if temp == 1112098635 then set ek = new_BigKiller(cpos_x, cpos_y, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1)) elseif temp == 1397571916 then set ek = new_SmallKiller(cpos_x, cpos_y, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1)) elseif temp == EscaperKillers_GLAIVE_KILLER_ID then set ek = new_GlaiveKiller(cpos_x, cpos_y, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1)) elseif temp == EscaperKillers_TANK_KILLER_ID then set ek = new_TankKiller(cpos_x, cpos_y, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1)) elseif temp == EscaperKillers_BIG_RANDOM_KILLER_ID then set ek = new_BigRandomKiller(cpos_x, cpos_y, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1)) elseif temp == EscaperKillers_SMALL_RANDOM_KILLER_ID then set ek = new_SmallRandomKiller(cpos_x, cpos_y, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1)) elseif temp == Pointer_POINTER_ID then set ek = new_Pointer(cpos_x, cpos_y, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1)) elseif temp == Knockbacker_KNOCKBACKER_ID then set ek = new_Knockbacker_3704(cpos_x, cpos_y, Entity_owner[this_1], dispatch_StaticBaseObject_BaseObject_StaticBaseObject_getRallyAngle(this_1)) endif call unit_issuePointOrder(SetupObject_setup[ek], "move", rPos_x, rPos_y) endfunction function dispatch_UnitCreator_Unitcreator_UnitCreator_create takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling UnitCreator.create") else call error("Called UnitCreator.create on invalid object.") endif endif call UnitCreator_create(this_1) endfunction function UnitCreator_update takes integer this_1 returns nothing if UnitCreator_timerreal[this_1] <= 0.0 then if StaticBaseObject_noRally[this_1] == null then call dispatch_UnitCreator_Unitcreator_UnitCreator_create(this_1) endif if UnitCreator_tmode[this_1] == 0 then set UnitCreator_timerreal[this_1] = UnitCreator_interval[this_1] elseif UnitCreator_tmode[this_1] == 1 then set UnitCreator_timerreal[this_1] = realFromIndex(dispatch_LinkedList_LinkedList_LinkedList_pop(UnitCreator_delays[this_1])) if dispatch_LinkedList_LinkedList_LinkedList_isEmpty(UnitCreator_delays[this_1]) then call dispatch_UnitCreator_Unitcreator_UnitCreator_refreshDelays(this_1) endif endif else set UnitCreator_timerreal[this_1] = UnitCreator_timerreal[this_1] - Basics_ANIMATION_PERIOD endif endfunction function vec2_op_plus_4246 takes real this_x, real this_y, real v_x, real v_y, real v_z returns real set vec2_op_plus_return_x_3077 = this_x + v_x set vec2_op_plus_return_y_3079 = this_y + v_y return vec2_op_plus_return_x_3077 endfunction function Vortex_update takes integer this_1 returns nothing local integer from = dispatch_RegionData_RegionData_RegionData_getEscapers(Entity_getCurrentRegion(this_1)) local integer e_1 local integer temp local real angl_radians local real angl_radians_1 local real angl_radians_2 local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 local real tuple_temp_5 local real tuple_temp_6 local real tuple_temp_7 local real tuple_temp_8 loop exitwhen not LLIterator_hasNext(from) set e_1 = LLIterator_next(from) set temp = Vortex_zMode[this_1] if temp == 0 then if vec2_distanceToSq(vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1]), vec3_toVec2_return_y) < Vortex_radiusSq[this_1] and ( not Entity_flying[e_1]) then set tuple_temp = vec2_angleTo(vec3_toVec2(Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y) set angl_radians = tuple_temp set tuple_temp_1 = vec2_op_plus_4246(Escaper_otherVel_x[e_1], Escaper_otherVel_y[e_1], Cos(angl_radians) * Vortex_vgravity[this_1], Sin(angl_radians) * Vortex_vgravity[this_1], 0.) set tuple_temp_2 = vec2_op_plus_return_y_3079 set Escaper_otherVel_x[e_1] = tuple_temp_1 set Escaper_otherVel_y[e_1] = tuple_temp_2 endif elseif temp == 1 then if vec2_distanceToSq(vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1]), vec3_toVec2_return_y) < Vortex_radiusSq[this_1] then set tuple_temp_3 = vec2_angleTo(vec3_toVec2(Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y) set angl_radians_1 = tuple_temp_3 set tuple_temp_4 = vec2_op_plus_4246(Escaper_otherVel_x[e_1], Escaper_otherVel_y[e_1], Cos(angl_radians_1) * Vortex_vgravity[this_1], Sin(angl_radians_1) * Vortex_vgravity[this_1], 0.) set tuple_temp_5 = vec2_op_plus_return_y_3079 set Escaper_otherVel_x[e_1] = tuple_temp_4 set Escaper_otherVel_y[e_1] = tuple_temp_5 endif elseif vec3_distanceToSq(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1]) < Vortex_radiusSq[this_1] then set tuple_temp_6 = vec2_angleTo(vec3_toVec2(Entity_pos_x[e_1], Entity_pos_y[e_1], Entity_pos_z[e_1]), vec3_toVec2_return_y, vec3_toVec2(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1]), vec3_toVec2_return_y) set angl_radians_2 = tuple_temp_6 set tuple_temp_7 = vec2_op_plus_4246(Escaper_otherVel_x[e_1], Escaper_otherVel_y[e_1], Cos(angl_radians_2) * Vortex_vgravity[this_1], Sin(angl_radians_2) * Vortex_vgravity[this_1], 0.) set tuple_temp_8 = vec2_op_plus_return_y_3079 set Escaper_otherVel_x[e_1] = tuple_temp_7 set Escaper_otherVel_y[e_1] = tuple_temp_8 endif endloop endfunction function vec2_getTerrainType takes real this_x, real this_y returns integer return GetTerrainType(this_x, this_y) endfunction function Warlock_update takes integer this_1 returns nothing local integer receiver local integer receiver_1 local real tpos_x_1 local real tpos_y_1 local real tuple_temp local real tuple_temp_1 local real tuple_temp_2 local real tuple_temp_3 local real tuple_temp_4 call UnitEntity_update(this_1) set tuple_temp = vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], 0.9175) set tuple_temp_1 = vec3_op_mult_return_y set tuple_temp_2 = vec3_op_mult_return_z set Entity_vel_x[this_1] = tuple_temp set Entity_vel_y[this_1] = tuple_temp_1 set Entity_vel_z[this_1] = tuple_temp_2 if not IsUnitSelected(UnitEntity_actor[this_1], Entity_owner[Warlock_mounter[this_1]]) then call player_selectSingle(Entity_owner[Warlock_mounter[this_1]], UnitEntity_actor[this_1]) endif if vec2_getTerrainType(vec3_toVec2(dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z), vec3_toVec2_return_y) == 1147958883 then set receiver = new_DummyDamage() call dispatch_DummyDamage_DummyDamage_DummyDamage_target(receiver, UnitEntity_actor[this_1]) set receiver_1 = receiver call dispatch_DummyDamage_DummyDamage_DummyDamage_amount(receiver_1, 0.5) call dispatch_DummyDamage_DummyDamage_DummyDamage_apply(receiver_1, true) call flashEffect(Abilities_flameStrikeEmbers, dispatch_UnitEntity_Entity_UnitEntity_getPos(this_1), dispatch_UnitEntity_Entity_UnitEntity_getPos_return_y, dispatch_UnitEntity_Entity_UnitEntity_getPos_return_z) if not widget_isAliveTrick(UnitEntity_actor[this_1]) then call dispatch_Escaper_Escaper_Escaper_kill_2852(Warlock_mounter[this_1], 0, 0) endif endif set tuple_temp_3 = vec3_op_plus(Entity_pos_x[this_1], Entity_pos_y[this_1], Entity_pos_z[this_1], vec3_op_mult(Entity_vel_x[this_1], Entity_vel_y[this_1], Entity_vel_z[this_1], 2.), vec3_op_mult_return_y, vec3_op_mult_return_z) set tuple_temp_4 = vec3_op_plus_return_y set tpos_x_1 = tuple_temp_3 set tpos_y_1 = tuple_temp_4 if tpos_x_1 < rect_getMinX(gg_rct_warlockgamearea) then set Entity_vel_x[this_1] = - (0.5 * Entity_vel_x[this_1]) elseif tpos_x_1 > rect_getMaxX(gg_rct_warlockgamearea) then set Entity_vel_x[this_1] = - (0.5 * Entity_vel_x[this_1]) endif if tpos_y_1 < rect_getMinY(gg_rct_warlockgamearea) then set Entity_vel_y[this_1] = - (0.5 * Entity_vel_y[this_1]) elseif tpos_y_1 > rect_getMaxY(gg_rct_warlockgamearea) then set Entity_vel_y[this_1] = - (0.5 * Entity_vel_y[this_1]) endif endfunction function dispatch_Entity_Entity_Entity_update takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Entity.update") else call error("Called Entity.update on invalid object.") endif endif if Serializable_typeId[this_1] <= 1170 then if Serializable_typeId[this_1] <= 1149 then if Serializable_typeId[this_1] <= 1142 then if Serializable_typeId[this_1] <= 1139 then if Serializable_typeId[this_1] <= 1137 then if Serializable_typeId[this_1] <= 1136 then call Entity_update(this_1) else call Fx2Entity_update(this_1) endif elseif Serializable_typeId[this_1] <= 1138 then call Projectile_update(this_1) else call AirPhysicsProjectile_update(this_1) endif elseif Serializable_typeId[this_1] <= 1141 then if Serializable_typeId[this_1] <= 1140 then call BallProjectile_update(this_1) else call Boomerang_update(this_1) endif else call Fireball_update(this_1) endif elseif Serializable_typeId[this_1] <= 1145 then if Serializable_typeId[this_1] <= 1144 then if Serializable_typeId[this_1] <= 1143 then call HomingProjectile_update(this_1) else call BossMissile_update(this_1) endif else call OrbProjectile_update(this_1) endif elseif Serializable_typeId[this_1] <= 1147 then if Serializable_typeId[this_1] <= 1146 then call ShipProjectile_update(this_1) else call SpaceRock_update(this_1) endif else call FxEntity_update(this_1) endif elseif Serializable_typeId[this_1] <= 1156 then if Serializable_typeId[this_1] <= 1153 then if Serializable_typeId[this_1] <= 1152 then if Serializable_typeId[this_1] <= 1150 then call Portal_update(this_1) else call Entity_update(this_1) endif else call BallItem_update(this_1) endif elseif Serializable_typeId[this_1] <= 1155 then if Serializable_typeId[this_1] <= 1154 then call Boots_update(this_1) else call Entity_update(this_1) endif else call Key_update(this_1) endif elseif Serializable_typeId[this_1] <= 1161 then if Serializable_typeId[this_1] <= 1158 then if Serializable_typeId[this_1] <= 1157 then call Entity_update(this_1) else call TextTagEntity_update(this_1) endif else call UnitEntity_update(this_1) endif elseif Serializable_typeId[this_1] <= 1167 then if Serializable_typeId[this_1] <= 1166 then call Escaper_update(this_1) else call StrongEscaper_update(this_1) endif else call UnitEntity_update(this_1) endif elseif Serializable_typeId[this_1] <= 1190 then if Serializable_typeId[this_1] <= 1181 then if Serializable_typeId[this_1] <= 1173 then if Serializable_typeId[this_1] <= 1172 then if Serializable_typeId[this_1] <= 1171 then call SetupObject_update(this_1) else call Boss_update(this_1) endif else call CongaLineHead_update(this_1) endif elseif Serializable_typeId[this_1] <= 1178 then if Serializable_typeId[this_1] <= 1177 then call SetupObject_update(this_1) else call Faceless_update(this_1) endif else call SetupObject_update(this_1) endif elseif Serializable_typeId[this_1] <= 1187 then if Serializable_typeId[this_1] <= 1183 then if Serializable_typeId[this_1] <= 1182 then call Minion_update(this_1) else call Pointer_update(this_1) endif else call SetupObject_update(this_1) endif elseif Serializable_typeId[this_1] <= 1189 then if Serializable_typeId[this_1] <= 1188 then call Powernode_update(this_1) else call SetupObject_update(this_1) endif else call Spinner_update(this_1) endif elseif Serializable_typeId[this_1] <= 1210 then if Serializable_typeId[this_1] <= 1205 then if Serializable_typeId[this_1] <= 1192 then if Serializable_typeId[this_1] <= 1191 then call TerrainChanger_update(this_1) else call Spaceship_update(this_1) endif else call UnitEntity_update(this_1) endif elseif Serializable_typeId[this_1] <= 1207 then if Serializable_typeId[this_1] <= 1206 then call Trap_update(this_1) else call UnitCreator_update(this_1) endif else call UnitEntity_update(this_1) endif elseif Serializable_typeId[this_1] <= 1223 then if Serializable_typeId[this_1] <= 1222 then if Serializable_typeId[this_1] <= 1221 then call StaticSetupObject_update(this_1) else call UnitEntity_update(this_1) endif else call Tracks_update(this_1) endif elseif Serializable_typeId[this_1] <= 1225 then if Serializable_typeId[this_1] <= 1224 then call UnitEntity_update(this_1) else call Vortex_update(this_1) endif else call Warlock_update(this_1) endif endfunction function Iterator_reset takes integer this_1 returns nothing set Iterator_current[this_1] = Entity_DupletListModule_firstActive endfunction function dispatch_Iterator_Entity_Entity_DupletListModule_Iterator_reset takes integer this_1 returns nothing if Iterator_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Iterator.reset") else call error("Called Iterator.reset on invalid object.") endif endif call Iterator_reset(this_1) endfunction function updateActiveEntities takes nothing returns nothing local integer e_1 local integer from call dispatch_Iterator_Entity_Entity_DupletListModule_Iterator_reset(EntityManagement_activeItr) set from = EntityManagement_activeItr loop exitwhen not Iterator_hasNext(from) set e_1 = Iterator_next(from) if not Entity_done[e_1] then call dispatch_Entity_Entity_Entity_update(e_1) endif endloop endfunction function Iterator_hasNext_798 takes integer this_1 returns boolean return Iterator_current_1031[this_1] != 0 endfunction function Iterator_next_805 takes integer this_1 returns integer local integer res = Iterator_current_1031[this_1] set Iterator_current_1031[this_1] = Buff_LinkedListModule_next[Iterator_current_1031[this_1]] return res endfunction function Buff_update takes integer this_1 returns nothing if Buff_duration[this_1] <= 0. then call cyc_NormalBuff_onDestroy(8, this_1, null, 0) else set Buff_duration[this_1] = Buff_duration[this_1] - Buff_BUFF_ANIM_PERIOD endif endfunction function ShieldBuff_update takes integer this_1 returns nothing call Buff_update(this_1) if ShieldBuff_blockAmount[this_1] <= 0. then call cyc_NormalBuff_onDestroy(8, this_1, null, 0) endif endfunction function SilenceBufff_update takes integer this_1 returns nothing local integer temp call Buff_update(this_1) set temp = Arcanery_expMode[SilenceBufff_arcanery[this_1]] if temp == 0 then elseif temp == 1 then if vec3_distanceTo2dSq(Entity_pos_x[SilenceBufff_arcanery[this_1]], Entity_pos_y[SilenceBufff_arcanery[this_1]], Entity_pos_z[SilenceBufff_arcanery[this_1]], unit_getPos(Buff_target[this_1]), unit_getPos_return_y) > SilenceBufff_distance[this_1] then call cyc_NormalBuff_onDestroy(8, this_1, null, 0) endif endif endfunction function dispatch_Buff_Buff_Buff_update takes integer this_1 returns nothing if Buff_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Buff.update") else call error("Called Buff.update on invalid object.") endif endif if Buff_typeId[this_1] <= 650 then if Buff_typeId[this_1] <= 649 then call Buff_update(this_1) else call ShieldBuff_update(this_1) endif elseif Buff_typeId[this_1] <= 651 then call SilenceBufff_update(this_1) else call Buff_update(this_1) endif endfunction function Iterator_reset_809 takes integer this_1 returns nothing set Iterator_current_1031[this_1] = Buff_LinkedListModule_first endfunction function dispatch_Iterator_Buff_Buff_LinkedListModule_Iterator_reset takes integer this_1 returns nothing if Iterator_typeId_1047[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Iterator.reset") else call error("Called Iterator.reset on invalid object.") endif endif call Iterator_reset_809(this_1) endfunction function updateBuffs takes nothing returns nothing local integer b local integer from call dispatch_Iterator_Buff_Buff_LinkedListModule_Iterator_reset(EntityManagement_buffItr) set from = EntityManagement_buffItr loop exitwhen not Iterator_hasNext_798(from) set b = Iterator_next_805(from) if not Buff_done[b] then call dispatch_Buff_Buff_Buff_update(b) endif endloop endfunction function Entity_slowUpdate takes integer this_1 returns nothing set Entity_idleSeconds[this_1] = Entity_idleSeconds[this_1] + 1 endfunction function alloc_LinkedListPredicate_removeIf_Executer_Executer takes nothing returns integer local integer this_1 if LinkedListPredicate_firstFree == 0 then if LinkedListPredicate_maxIndex < JASS_MAX_ARRAY_SIZE then set LinkedListPredicate_maxIndex = LinkedListPredicate_maxIndex + 1 set this_1 = LinkedListPredicate_maxIndex set LinkedListPredicate_typeId[this_1] = 1002 else call error("Out of memory: Could not create LinkedListPredicate_removeIf_Executer_Executer.") set this_1 = 0 endif else set LinkedListPredicate_firstFree = LinkedListPredicate_firstFree - 1 set this_1 = LinkedListPredicate_nextFree[LinkedListPredicate_firstFree] set LinkedListPredicate_typeId[this_1] = 1002 endif return this_1 endfunction function Executer_slowUpdate takes integer this_1 returns nothing local integer clVar local integer temp if Executer_eventMode[this_1] == 4 and Executer_actionMode[this_1] != 0 and Executer_ON[this_1] and ( not dispatch_LinkedList_LinkedList_LinkedList_isEmpty(Executer_entitiesOnPlate[this_1])) then set temp = Executer_entitiesOnPlate[this_1] set clVar = alloc_LinkedListPredicate_removeIf_Executer_Executer() set this_2955[clVar] = this_1 call dispatch_LinkedList_LinkedList_LinkedList_removeIf(temp, clVar) if dispatch_LinkedList_LinkedList_LinkedList_isEmpty(Executer_entitiesOnPlate[this_1]) then call dispatch_Executer_Executer_Executer_negativeAction(this_1) set Executer_ON[this_1] = false if Executer_dummy[this_1] != null then call SetDestructableAnimation(Executer_dummy[this_1], "stand alternate") endif endif endif endfunction function LobbyTeleporter_slowUpdate takes integer this_1 returns nothing call Entity_slowUpdate(this_1) if Entity_owner[this_1] != GameConstants_STAFF_PLAYER and isBuilderPlayer(Entity_owner[this_1]) and ( not player_isIngame(Entity_owner[this_1])) then call cyc_RevivePoint_terminate(18, this_1) endif endfunction function Portal_slowUpdate takes integer this_1 returns nothing if Portal_destiny_x[this_1] != Vectors_ZERO2_x or Portal_destiny_y[this_1] != Vectors_ZERO2_y then call Entity_slowUpdate(this_1) endif if Entity_idleSeconds[this_1] >= Portal_duration[this_1] then call cyc_RevivePoint_terminate(18, this_1) endif endfunction function camerasetup_apply takes camerasetup this_1, boolean doPan, player whichPlayer, real duration returns nothing call CameraSetupApplyForPlayer(doPan, this_1, whichPlayer, duration) endfunction function Selector_slowUpdate takes integer this_1 returns nothing call SetCameraFieldForPlayer(PlayerData_p[Selector_pd[this_1]], CAMERA_FIELD_TARGET_DISTANCE, 1000.00, 0.50) call SetCameraFieldForPlayer(PlayerData_p[Selector_pd[this_1]], CAMERA_FIELD_ANGLE_OF_ATTACK, 343.00, 0.50) call SetCameraTargetControllerNoZForPlayer(PlayerData_p[Selector_pd[this_1]], EscaperDefinition_escaper[EscaperDefinition_LinkedListModule_first], 0., 0., false) call SetCameraFieldForPlayer(PlayerData_p[Selector_pd[this_1]], CAMERA_FIELD_ROTATION, 315. + 180., 0.50) call SetCameraFieldForPlayer(PlayerData_p[Selector_pd[this_1]], CAMERA_FIELD_ZOFFSET, 110., 0.5) call SetCameraFieldForPlayer(PlayerData_p[Selector_pd[this_1]], CAMERA_FIELD_FARZ, 15000.00, 0.5) call camerasetup_apply(gg_cam_Camera_001, true, PlayerData_p[Selector_pd[this_1]], 0.) endfunction function SetupObject_slowUpdate takes integer this_1 returns nothing set SetupObject_time[this_1] = SetupObject_time[this_1] - 1.0 call dispatch_SetupObject_SetupObject_SetupObject_checkReposition(this_1) endfunction function TerrainModder_slowUpdate takes integer this_1 returns nothing local unit receiver local unit receiver_1 call Entity_slowUpdate(this_1) if Entity_idleSeconds[this_1] > 20 and TerrainModder_brushsize[this_1] > 0 then set Entity_idleSeconds[this_1] = 0 call dispatch_TerrainModder_TerrainModder_TerrainModder_removeAllActive(this_1) set receiver = UnitEntity_actor[this_1] call unit_removeAbility(receiver, TerrainModder_BRUSH_1_IDLE_ABILITY) set receiver_1 = receiver call unit_addAbility(receiver_1, TerrainModder_BRUSH_1_ACTIVE_ABILITY) set TerrainModder_brushsize[this_1] = 0 endif endfunction function dispatch_Entity_Entity_Entity_slowUpdate takes integer this_1 returns nothing if Serializable_typeId[this_1] == 0 then if this_1 == 0 then call error("Nullpointer exception when calling Entity.slowUpdate") else call error("Called Entity.slowUpdate on invalid object.") endif endif if Serializable_typeId[this_1] <= 1197 then if Serializable_typeId[this_1] <= 1169 then if Serializable_typeId[this_1] <= 1150 then if Serializable_typeId[this_1] <= 1149 then call Entity_slowUpdate(this_1) else call Portal_slowUpdate(this_1) endif elseif Serializable_typeId[this_1] <= 1168 then call Entity_slowUpdate(this_1) else call Selector_slowUpdate(this_1) endif elseif Serializable_typeId[this_1] <= 1191 then if Serializable_typeId[this_1] <= 1170 then call Entity_slowUpdate(this_1) else call SetupObject_slowUpdate(this_1) endif else call Entity_slowUpdate(this_1) endif elseif Serializable_typeId[this_1] <= 1200 then if Serializable_typeId[this_1] <= 1199 then if Serializable_typeId[this_1] <= 1198 then call Executer_slowUpdate(this_1) else call Entity_slowUpdate(this_1) endif else call LobbyTeleporter_slowUpdate(this_1) endif elseif Serializable_typeId[this_1] <= 1222 then if Serializable_typeId[this_1] <= 1221 then call Entity_slowUpdate(this_1) else call TerrainModder_slowUpdate(this_1) endif else call Entity_slowUpdate(this_1) endif endfunction function updateInactiveEntities takes nothing returns nothing local integer e_1 = Entity_DupletListModule_firstInactive loop exitwhen not (e_1 != 0) call dispatch_Entity_Entity_Entity_slowUpdate(e_1) set e_1 = Entity_DupletListModule_next[e_1] endloop endfunction function initGlobals takes nothing returns nothing set gg_rct_Choose = null set gg_rct_Region_002 = null set gg_rct_Region_014 = null set gg_rct_Region_015 = null set gg_rct_Region_000 = null set gg_rct_Region_001 = null set gg_rct_Region_003 = null set gg_rct_Region_004 = null set gg_rct_Region_005 = null set gg_rct_Region_006 = null set gg_rct_Region_007 = null set gg_rct_Region_008 = null set gg_rct_Region_009 = null set gg_rct_Region_010 = null set gg_rct_Region_011 = null set gg_rct_Region_012 = null set gg_rct_Region_013 = null set gg_rct_Region_016 = null set gg_rct_Region_017 = null set gg_rct_Region_018 = null set gg_rct_Region_024 = null set gg_rct_Region_026 = null set gg_rct_Start = null set gg_rct_Region_023 = null set gg_rct_coingamearea = null set gg_rct_spaceygamearea = null set gg_rct_coingamebounds = null set gg_rct_spaceygamebounds = null set gg_rct_slidegamearea = null set gg_rct_slidegamebounds = null set gg_rct_slidegamespawn = null set gg_rct_Region_027 = null set gg_rct_agargamearea = null set gg_rct_agargamefoodspawn = null set gg_rct_agargamebounds = null set gg_cam_Camera_001 = null set gg_cam_BuilderSetupCam = null set gg_cam_BuilderBuilderCam = null set gg_cam_BlackCam = null set gg_cam_StdCam = null set gg_cam_BuilderTilesCam = null set gg_cam_spaceycam = null set gg_snd_ArrangedTeamInvitation = null set gg_trg_Untitled_Trigger_005 = null set gg_unit_revp_0002 = null set gg_unit_arca_0050 = null set gg_unit_airk_0149 = null set gg_unit_tele_0150 = null set gg_unit_dor2_0011 = null set gg_unit_sick_0014 = null set gg_unit_bisk_0018 = null set gg_unit_bisk_0020 = null set gg_unit_tele_0324 = null set gg_unit_tele_0323 = null set gg_unit_revp_0322 = null set gg_unit_unre_0118 = null set gg_unit_revp_0059 = null set gg_unit_tele_0061 = null set gg_unit_fnt2_0067 = null set gg_unit_glve_0160 = null set gg_unit_bsak_0080 = null set gg_unit_bsak_0081 = null set gg_unit_revp_0085 = null set gg_unit_dor2_0087 = null set gg_unit_glve_0159 = null set gg_unit_glve_0158 = null set gg_unit_glve_0156 = null set gg_unit_bsak_0104 = null set gg_unit_sgrk_0153 = null set gg_unit_jump_0152 = null set gg_unit_jump_0151 = null set gg_unit_ssak_0120 = null set gg_unit_ssak_0121 = null set gg_unit_ssak_0122 = null set gg_unit_ssak_0123 = null set gg_unit_ssak_0124 = null set gg_unit_ssak_0125 = null set gg_unit_bsak_0127 = null set gg_unit_bsak_0128 = null set gg_unit_bgrk_0145 = null set gg_unit_dor2_0136 = null set gg_unit_tele_0141 = null set gg_unit_sick_0012 = null set gg_unit_sick_0013 = null set gg_unit_bcik_0280 = null set gg_unit_scik_0278 = null set gg_unit_scik_0277 = null set gg_unit_scik_0276 = null set gg_unit_scik_0275 = null set gg_unit_scik_0274 = null set gg_unit_scik_0273 = null set gg_unit_scik_0272 = null set gg_unit_scik_0271 = null set gg_unit_scik_0270 = null set gg_unit_scik_0269 = null set gg_unit_scik_0268 = null set gg_unit_scik_0267 = null set gg_unit_bcik_0266 = null set gg_unit_scik_0263 = null set gg_unit_bcik_0262 = null set gg_unit_scik_0261 = null set gg_unit_scik_0260 = null set gg_unit_dims_0100 = null set gg_unit_uncr_0117 = null set gg_unit_wayp_0116 = null set gg_unit_tele_0234 = null set gg_unit_dor2_0023 = null set gg_unit_scik_0210 = null set gg_unit_scik_0211 = null set gg_unit_scik_0213 = null set gg_unit_scik_0214 = null set gg_unit_scik_0215 = null set gg_unit_scik_0216 = null set gg_unit_scik_0217 = null set gg_unit_scik_0218 = null set gg_unit_scik_0219 = null set gg_unit_bcik_0220 = null set gg_unit_scik_0221 = null set gg_unit_scik_0222 = null set gg_unit_bcik_0225 = null set gg_unit_revp_0226 = null set gg_unit_revp_0022 = null set gg_unit_sick_0036 = null set gg_unit_wayp_0114 = null set gg_unit_knck_0033 = null set gg_unit_knck_0034 = null set gg_unit_tele_0044 = null set gg_unit_sgrk_0038 = null set gg_unit_sgrk_0039 = null set gg_unit_fnt2_0065 = null set gg_unit_spnr_0162 = null set gg_unit_knck_0053 = null set gg_unit_knck_0054 = null set gg_unit_tele_0058 = null set gg_unit_tele_0063 = null set gg_unit_tele_0115 = null set gg_unit_tele_0143 = null set gg_unit_fnt2_0074 = null set gg_unit_wayp_0066 = null set gg_unit_wayp_0068 = null set gg_unit_wayp_0078 = null set gg_unit_wayp_0099 = null set gg_unit_wayp_0101 = null set gg_unit_wayp_0102 = null set gg_unit_exec_0076 = null set gg_unit_spnr_0129 = null set gg_unit_spnr_0130 = null set gg_unit_spnr_0147 = null set gg_unit_spnr_0157 = null set gg_unit_spnr_0161 = null set gg_rct_warlockgamearea = null set gg_rct_warlockgamebounds = null set Serializable_firstFree = 0 set Serializable_maxIndex = 0 set OnCastListener_firstFree = 0 set OnCastListener_maxIndex = 0 set Buff_firstFree = 0 set Buff_maxIndex = 0 set CallbackSingle_firstFree = 0 set CallbackSingle_maxIndex = 0 set EventListener_firstFree = 0 set EventListener_maxIndex = 0 set BigNum_firstFree = 0 set BigNum_maxIndex = 0 set BigNum_l_firstFree = 0 set BigNum_l_maxIndex = 0 set BigString_firstFree = 0 set BigString_maxIndex = 0 set BigSubString_firstFree = 0 set BigSubString_maxIndex = 0 set ForGroupCallback_firstFree = 0 set ForGroupCallback_maxIndex = 0 set DamageListener_firstFree = 0 set DamageListener_maxIndex = 0 set BackIterator_firstFree = 0 set BackIterator_maxIndex = 0 set Iterator_firstFree_1035 = 0 set Iterator_maxIndex_1039 = 0 set ChunkedString_firstFree = 0 set ChunkedString_maxIndex = 0 set CallbackCounted_firstFree = 0 set CallbackCounted_maxIndex = 0 set Callback_firstFree = 0 set CallbackPeriodic_firstFree = 0 set CallbackPeriodic_maxIndex = 0 set CollisionShape_firstFree = 0 set CollisionShape_maxIndex = 0 set CollisionWorld_firstFree = 0 set CollisionWorld_maxIndex = 0 set ConfigValue_firstFree = 0 set ConfigValue_maxIndex = 0 set CongaSegment_firstFree = 0 set CongaSegment_maxIndex = 0 set CustomBar_firstFree = 0 set CustomBar_maxIndex = 0 set DamageElement_firstFree = 0 set DamageElement_maxIndex = 0 set DamageInstance_firstFree = 0 set DamageInstance_maxIndex = 0 set DummyDamage_firstFree = 0 set DummyDamage_maxIndex = 0 set Encoder_firstFree = 0 set Encoder_maxIndex = 0 set SeqCallback_firstFree = 0 set SeqCallback_maxIndex = 0 set ForForceCallback_firstFree = 0 set ForForceCallback_maxIndex = 0 set PayloadCallback_firstFree = 0 set PayloadCallback_maxIndex = 0 set Iterator_firstFree = 0 set Iterator_maxIndex = 0 set SensorListener_firstFree = 0 set SensorListener_maxIndex = 0 set LinkedListPredicate_firstFree = 0 set LinkedListPredicate_maxIndex = 0 set FText_firstFree = 0 set FText_maxIndex = 0 set BackIterator_firstFree_73 = 0 set BackIterator_maxIndex_76 = 0 set Iterator_firstFree_1036 = 0 set Iterator_maxIndex_1040 = 0 set File_firstFree = 0 set File_maxIndex = 0 set Startmaze_firstFree = 0 set Startmaze_maxIndex = 0 set Fx2_firstFree = 0 set Fx2_maxIndex = 0 set Fx_firstFree = 0 set Fx_maxIndex = 0 set GlobalShop_firstFree = 0 set GlobalShop_maxIndex = 0 set HLIterator_firstFree = 0 set HLIterator_maxIndex = 0 set HLItrClosure_firstFree = 0 set HLItrClosure_maxIndex = 0 set HashList_firstFree = 0 set HashList_maxIndex = 0 set Table_firstFree = 0 set Table_maxIndex = 0 set JsonParser_firstFree = 0 set JsonParser_maxIndex = 0 set Json_firstFree = 0 set Json_maxIndex = 0 set Property_firstFree = 0 set Property_maxIndex = 0 set JukeBox_firstFree = 0 set JukeBox_maxIndex = 0 set JukeRequest_firstFree = 0 set JukeRequest_maxIndex = 0 set Music_firstFree = 0 set Music_maxIndex = 0 set Goo_firstFree = 0 set Goo_maxIndex = 0 set Comparator_firstFree = 0 set Comparator_maxIndex = 0 set LLBackIterator_firstFree = 0 set LLEntry_firstFree = 0 set LLEntry_maxIndex = 0 set LLIterator_firstFree = 0 set LLIterator_maxIndex = 0 set LLItrClosure_firstFree = 0 set LLItrClosure_maxIndex = 0 set LinkedList_firstFree = 0 set LinkedList_maxIndex = 0 set AgarData_firstFree = 0 set AgarData_maxIndex = 0 set Minigame_firstFree = 0 set Minigame_maxIndex = 0 set ReviveListener_firstFree = 0 set ReviveListener_maxIndex = 0 set Board_firstFree = 0 set Board_maxIndex = 0 set IdGenerator_firstFree = 0 set IdGenerator_maxIndex = 0 set OrderStringFactory_firstFree = 0 set OrderStringFactory_maxIndex = 0 set LoadListener_firstFree = 0 set LoadListener_maxIndex = 0 set EscaperClsr_firstFree = 0 set EscaperClsr_maxIndex = 0 set EscaperDefinition_firstFree = 0 set EscaperDefinition_maxIndex = 0 set BackIterator_firstFree_74 = 0 set BackIterator_maxIndex_77 = 0 set Iterator_firstFree_1037 = 0 set Iterator_maxIndex_1041 = 0 set OnPlayerLeave_firstFree = 0 set OnPlayerLeave_maxIndex = 0 set PlayerData_firstFree = 0 set PlayerData_maxIndex = 0 set Link_firstFree = 0 set Link_maxIndex = 0 set OnEndListener_firstFree = 0 set OnHitListener_firstFree = 0 set FogData_firstFree = 0 set FogData_maxIndex = 0 set RegionData_firstFree = 0 set RegionData_maxIndex = 0 set RevivePod_firstFree = 0 set RevivePod_maxIndex = 0 set RevivePointModifier_firstFree = 0 set RevivePointModifier_maxIndex = 0 set BufferSyncListener_firstFree = 0 set BufferSyncListener_maxIndex = 0 set Delimiter_firstFree = 0 set Delimiter_maxIndex = 0 set Sim3DSound_firstFree = 0 set SoundDefinition_firstFree = 0 set SoundDefinition_maxIndex = 0 set SoundInstance_firstFree = 0 set SoundInstance_maxIndex = 0 set SpinNode_firstFree = 0 set SpinNode_maxIndex = 0 set StringIterator_firstFree = 0 set StringIterator_maxIndex = 0 set StringSyncListener_firstFree = 0 set BoolSyncListener_firstFree = 0 set IntSyncListener_firstFree = 0 set RealSyncListener_firstFree = 0 set SyncData_firstFree = 0 set SyncData_maxIndex = 0 set TexterClsr_firstFree = 0 set TexterClsr_maxIndex = 0 set UnitIndex_firstFree = 0 set UnitIndex_maxIndex = 0 set InventoryIterator_firstFree = 0 set InventoryIterator_maxIndex = 0 set WeaponListener_firstFree = 0 set WeaponListener_maxIndex = 0 set Reference_integer__firstFree = 0 set Reference_integer__maxIndex = 0 set ref_function_Trig_Untitled_Trigger_005_Actions = function Trig_Untitled_Trigger_005_Actions set ref_function_init_Abilities = function init_Abilities set ref_function_init_AbilityIds = function init_AbilityIds set ref_function_init_Real = function init_Real set ref_function_init_Integer = function init_Integer set ref_function_init_BitSet = function init_BitSet set ref_function_init_Angle = function init_Angle set ref_function_init_Maths = function init_Maths set ref_function_init_String = function init_String set ref_function_init_TargetsAllowed = function init_TargetsAllowed set ref_function_init_Vectors = function init_Vectors set ref_function_init_Destructable = function init_Destructable set ref_function_init_Player = function init_Player set ref_function_init_Printing_config = function init_Printing_config set ref_function_init_Printing = function init_Printing set ref_function_init_MagicFunctions = function init_MagicFunctions set ref_function_init_Basics = function init_Basics set ref_function_init_GameTimer = function init_GameTimer set ref_function_init_ErrorHandling = function init_ErrorHandling set ref_function_init_Matrices = function init_Matrices set ref_function_init_Quaternion = function init_Quaternion set ref_function_init_Table = function init_Table set ref_function_init_Playercolor = function init_Playercolor set ref_function_init_Colors = function init_Colors set ref_function_init_Framehandle = function init_Framehandle set ref_function_init_Group = function init_Group set ref_function_init_Lightning = function init_Lightning set ref_function_init_WeatherEffects = function init_WeatherEffects set ref_function_init_TypeCasting = function init_TypeCasting set ref_function_init_HashList = function init_HashList set ref_function_init_EventHelper = function init_EventHelper set ref_function_init_AbilityObjEditing = function init_AbilityObjEditing set ref_function_init_TimerUtils = function init_TimerUtils set ref_function_init_RegisterEvents = function init_RegisterEvents set ref_function_init_ClosureTimers = function init_ClosureTimers set ref_function_init_ClosureForGroups = function init_ClosureForGroups set ref_function_init_LinkedList = function init_LinkedList set ref_function_init_ObjectIds = function init_ObjectIds set ref_function_init_UnitIds = function init_UnitIds set ref_function_init_MapBounds = function init_MapBounds set ref_function_init_Preloader = function init_Preloader set ref_function_init_ObjectIdGenerator = function init_ObjectIdGenerator set ref_function_init_Orders = function init_Orders set ref_function_init_OnUnitEnterLeave = function init_OnUnitEnterLeave set ref_function_init_UnitIndexer = function init_UnitIndexer set ref_function_init_ClosureEvents = function init_ClosureEvents set ref_function_init_TerrainUtils = function init_TerrainUtils set ref_function_init_PhysicsConstants = function init_PhysicsConstants set ref_function_init_StringUtils = function init_StringUtils set ref_function_init_FText = function init_FText set ref_function_init_Frentity = function init_Frentity set ref_function_init_Execute = function init_Execute set ref_function_init_Heightmap = function init_Heightmap set ref_function_init_Entity_config = function init_Entity_config set ref_function_init_Entity = function init_Entity set ref_function_init_AirPhysicsModule = function init_AirPhysicsModule set ref_function_init_BigString = function init_BigString set ref_function_init_BigNum = function init_BigNum set ref_function_init_Encoder = function init_Encoder set ref_function_init_LZW = function init_LZW set ref_function_init_Json = function init_Json set ref_function_init_SerializeIds = function init_SerializeIds set ref_function_init_BuilderConstants = function init_BuilderConstants set ref_function_init_SetupObject = function init_SetupObject set ref_function_init_Icons = function init_Icons set ref_function_init_ChannelAbilityPreset = function init_ChannelAbilityPreset set ref_function_init_BuffIds = function init_BuffIds set ref_function_init_Buildings = function init_Buildings set ref_function_init_Doodads = function init_Doodads set ref_function_init_Environment = function init_Environment set ref_function_init_ItemIds = function init_ItemIds set ref_function_init_Objects = function init_Objects set ref_function_init_Sounds = function init_Sounds set ref_function_init_Soundsets = function init_Soundsets set ref_function_init_Textures = function init_Textures set ref_function_init_UI = function init_UI set ref_function_init_Units = function init_Units set ref_function_init_AttachmentPoints = function init_AttachmentPoints set ref_function_init_BaseObject = function init_BaseObject set ref_function_init_GameConstants = function init_GameConstants set ref_function_init_TerrainData = function init_TerrainData set ref_function_init_PhysicsEntity = function init_PhysicsEntity set ref_function_init_RevivePointModifier = function init_RevivePointModifier set ref_function_init_TerrainBlocker = function init_TerrainBlocker set ref_function_init_Fx2Entity = function init_Fx2Entity set ref_function_init_GroupUtils = function init_GroupUtils set ref_function_init_Players = function init_Players set ref_function_init_JukeBox = function init_JukeBox set ref_function_init_EscaperObjects = function init_EscaperObjects set ref_function_init_Escaper = function init_Escaper set ref_function_init_InstantDummyCaster = function init_InstantDummyCaster set ref_function_init_DummyRecycler = function init_DummyRecycler set ref_function_init_DamageEvent = function init_DamageEvent set ref_function_init_Squares = function init_Squares set ref_function_init_Buff = function init_Buff set ref_function_init_Arcanery = function init_Arcanery set ref_function_init_Attackspeed = function init_Attackspeed set ref_function_init_AudioTaunts = function init_AudioTaunts set ref_function_init_BasicSpells = function init_BasicSpells set ref_function_init_Bomber = function init_Bomber set ref_function_init_Bombertower = function init_Bombertower set ref_function_init_Booster = function init_Booster set ref_function_init_Boots = function init_Boots set ref_function_init_MultiboardClass = function init_MultiboardClass set ref_function_init_Key = function init_Key set ref_function_init_Tome = function init_Tome set ref_function_init_Coin = function init_Coin set ref_function_init_Builder = function init_Builder set ref_function_init_FxEntity = function init_FxEntity set ref_function_init_EscaperSensor = function init_EscaperSensor set ref_function_init_EscaperKillers = function init_EscaperKillers set ref_function_init_ObjectTarget = function init_ObjectTarget set ref_function_init_TerrainChanger = function init_TerrainChanger set ref_function_init_Pointer = function init_Pointer set ref_function_init_Knockbacker = function init_Knockbacker set ref_function_init_Faceless = function init_Faceless set ref_function_init_UnitProducer = function init_UnitProducer set ref_function_init_EscaperClasses = function init_EscaperClasses set ref_function_init_Simulate3dSound = function init_Simulate3dSound set ref_function_init_SoundUtils = function init_SoundUtils set ref_function_init_PickSystem = function init_PickSystem set ref_function_init_PlayerData = function init_PlayerData set ref_function_init_BossSpellTarget = function init_BossSpellTarget set ref_function_init_CustomBar = function init_CustomBar set ref_function_init_Minion = function init_Minion set ref_function_init_Boss = function init_Boss set ref_function_init_BossDamager = function init_BossDamager set ref_function_init_Camerashakes = function init_Camerashakes set ref_function_init_ChunkedString = function init_ChunkedString set ref_function_init_CodeGenerator = function init_CodeGenerator set ref_function_init_Collision = function init_Collision set ref_function_init_SetupBox = function init_SetupBox set ref_function_init_ReviveManager = function init_ReviveManager set ref_function_init_Minigame = function init_Minigame set ref_function_init_KeyUtils = function init_KeyUtils set ref_function_init_MGSpacey = function init_MGSpacey set ref_function_init_Commands = function init_Commands set ref_function_init_MoveSpeed = function init_MoveSpeed set ref_function_init_CongaObjects = function init_CongaObjects set ref_function_init_DebugInfo = function init_DebugInfo set ref_function_init_Decoration = function init_Decoration set ref_function_init_Door = function init_Door set ref_function_init_EntityManagement = function init_EntityManagement set ref_function_init_TerrainModder = function init_TerrainModder set ref_function_init_Executer = function init_Executer set ref_function_init_SafetyChecks = function init_SafetyChecks set ref_function_init_FileIO = function init_FileIO set ref_function_init_Fountain = function init_Fountain set ref_function_init_Obstacle = function init_Obstacle set ref_function_init_LobbyTeleporter = function init_LobbyTeleporter set ref_function_init_MinigameTeleporter = function init_MinigameTeleporter set ref_function_init_Startmazes = function init_Startmazes set ref_function_init_GameInit = function init_GameInit set ref_function_init_GameStatus = function init_GameStatus set ref_function_init_GlobalShop = function init_GlobalShop set ref_function_init_HashSet = function init_HashSet set ref_function_init_Revivepoint = function init_Revivepoint set ref_function_init_Vortex = function init_Vortex set ref_function_init_Powernode = function init_Powernode set ref_function_init_Tracks = function init_Tracks set ref_function_init_Jumper = function init_Jumper set ref_function_init_Teleporter = function init_Teleporter set ref_function_init_WaypointObjects = function init_WaypointObjects set ref_function_init_Waypoint = function init_Waypoint set ref_function_init_SpinnerObjects = function init_SpinnerObjects set ref_function_init_Unitcreator = function init_Unitcreator set ref_function_init_Trap = function init_Trap set ref_function_init_ObstacleObjects = function init_ObstacleObjects set ref_function_init_MGWarlock = function init_MGWarlock set ref_function_init_RegionData = function init_RegionData set ref_function_init_Tree = function init_Tree set ref_function_init_Texter = function init_Texter set ref_function_init_UnitRemover = function init_UnitRemover set ref_function_init_PedestalObjects = function init_PedestalObjects set ref_function_init_JsonParser = function init_JsonParser set ref_function_init_SyncSimple = function init_SyncSimple set ref_function_init_SaveLoadData = function init_SaveLoadData set ref_function_init_Pedestal = function init_Pedestal set ref_function_init_InstantBuild = function init_InstantBuild set ref_function_init_Invisible = function init_Invisible set ref_function_init_MGAgar = function init_MGAgar set ref_function_init_MGRandKill = function init_MGRandKill set ref_function_init_MGSlide = function init_MGSlide set ref_function_init_Questlog = function init_Questlog set ref_function_init_Remove = function init_Remove set ref_function_init_Startmaze = function init_Startmaze set ref_function_init_WeaponTypes = function init_WeaponTypes set ref_function_init_Weapon = function init_Weapon set ref_function_onLoop = function onLoop set ref_function_loopPerPlayer = function loopPerPlayer set ref_function_code__onUnitIndex_ClosureEvents = function code__onUnitIndex_ClosureEvents set ref_function_code__onUnitDeindex_ClosureEvents = function code__onUnitDeindex_ClosureEvents set ref_function_EventListener_generalEventCallback = function EventListener_generalEventCallback set ref_function_code__Filter_ClosureForGroups = function code__Filter_ClosureForGroups set ref_function_code__addAction_DebugInfo = function code__addAction_DebugInfo set ref_function_code__startPeriodic_DebugInfo = function code__startPeriodic_DebugInfo set ref_function_updateActiveEntities = function updateActiveEntities set ref_function_updateBuffs = function updateBuffs set ref_function_updateInactiveEntities = function updateInactiveEntities set ref_function_code__onUnitDeindex_EntityManagement = function code__onUnitDeindex_EntityManagement set ref_function_correctRegion = function correctRegion set ref_function_executeCurrentCallback = function executeCurrentCallback set ref_function_code__startPeriodic_GameTimer = function code__startPeriodic_GameTimer set ref_function_code__addAction_RegionData = function code__addAction_RegionData set ref_function_code__registerPlayerUnitEvent_RegisterEvents = function code__registerPlayerUnitEvent_RegisterEvents set ref_function_code__startPeriodic_ReviveManager = function code__startPeriodic_ReviveManager set ref_function_code__start_SeqWorker = function code__start_SeqWorker set ref_function_code__start_SeqWorker_2675 = function code__start_SeqWorker_2099 set ref_function_code__registerPlayerUnitEvent_SetupBox = function code__registerPlayerUnitEvent_SetupBox set ref_function_code__Condition_Startmaze = function code__Condition_Startmaze set ref_function_code__addAction_SyncSimple = function code__addAction_SyncSimple set ref_function_code__EnumItemsInRect_TerrainUtils = function code__EnumItemsInRect_TerrainUtils set ref_function_code__onEnter_UnitIndexer = function code__onEnter_UnitIndexer set ref_function_code__onLeave_UnitIndexer = function code__onLeave_UnitIndexer set ref_function_Arcanery_onEnterEv = function Arcanery_onEnterEv set ref_function_code__Arcanery_Arcanery = function code__Arcanery_Arcanery set ref_function_code__Arcanery_Arcanery_2635 = function code__Arcanery_Arcanery_2059 set ref_function_StaticBaseObject_isProper = function StaticBaseObject_isProper set ref_function_Bomber_orderSetup = function Bomber_orderSetup set ref_function_Booster_orderMove = function Booster_orderMove set ref_function_BossDamager_onInRange = function BossDamager_onInRange set ref_function_code__addAction_nullTimer_ClosureEvents = function code__addAction_nullTimer_ClosureEvents set ref_function_code__addAction_nullTimer_ClosureEvents_2658 = function code__addAction_nullTimer_ClosureEvents_2082 set ref_function_code__addAction_nullTimer_ClosureEvents_2659 = function code__addAction_nullTimer_ClosureEvents_2083 set ref_function_code__registerPlayerUnitEvent_nullTimer_ClosureEvents = function code__registerPlayerUnitEvent_nullTimer_ClosureEvents set ref_function_CallbackCounted_staticCallback = function CallbackCounted_staticCallback set ref_function_CallbackPeriodic_staticCallback = function CallbackPeriodic_staticCallback set ref_function_code__start_CallbackSingle_ClosureTimers = function code__start_CallbackSingle_ClosureTimers set ref_function_CustomBar_fadeOutCallback = function CustomBar_fadeOutCallback set ref_function_Door_keyopen = function Door_keyopen set ref_function_code__addAction_Sensor_Portal_EscaperClasses = function code__addAction_Sensor_Portal_EscaperClasses set ref_function_code__addAction_Sensor_EscaperSensorSetup_EscaperSensor = function code__addAction_Sensor_EscaperSensorSetup_EscaperSensor set ref_function_code__StaticEscaperSensorSetup_EscaperSensor = function code__StaticEscaperSensorSetup_EscaperSensor set ref_function_code__StaticEscaperSensorSetup_EscaperSensor_2648 = function code__StaticEscaperSensorSetup_EscaperSensor_2072 set ref_function_code__Condition_addCondition_Executer_Executer = function code__Condition_addCondition_Executer_Executer set ref_function_code__Condition_addCondition_Executer_Executer_2638 = function code__Condition_addCondition_Executer_Executer_2062 set ref_function_code__Executer_Executer = function code__Executer_Executer set ref_function_code__Executer_Executer_2641 = function code__Executer_Executer_2065 set ref_function_Fountain_cure = function Fountain_cure_1 set ref_function_Jumper_onInRange = function Jumper_onInRange set ref_function_LobbyTeleporter_checkVote = function LobbyTeleporter_checkVote set ref_function_code__Filter_GroupEnumUnitsInRect_MGRandKill_MGRandKill = function code__Filter_GroupEnumUnitsInRect_MGRandKill_MGRandKill set ref_function_MinigameTeleporter_checkVote = function MinigameTeleporter_checkVote set ref_function_code__start_Minigame_Minigame = function code__start_Minigame_Minigame set ref_function_code__Filter_registerEnterRegion_nullTimer_OnUnitEnterLeave = function code__Filter_registerEnterRegion_nullTimer_OnUnitEnterLeave set ref_function_code__registerPlayerUnitEvent_nullTimer_OnUnitEnterLeave = function code__registerPlayerUnitEvent_nullTimer_OnUnitEnterLeave set ref_function_code__ForGroup_nullTimer_OnUnitEnterLeave = function code__ForGroup_nullTimer_OnUnitEnterLeave set ref_function_code__addAction_RegionData_RegionData = function code__addAction_RegionData_RegionData set ref_function_RevivePoint_onReach = function RevivePoint_onReach set ref_function_code__Filter_GroupEnumUnitsInRect_Startmaze_Startmaze = function code__Filter_GroupEnumUnitsInRect_Startmaze_Startmaze set ref_function_killD = function killD set ref_function_deleteKeys = function deleteKeys set ref_function_correctKeys = function correctKeys set ref_function_Teleporter_teleport = function Teleporter_teleport set ref_function_Texter_onStep = function Texter_onStep set ref_function_Trap_onStep = function Trap_onStep set ref_function_UnitRemover_removeUnit = function UnitRemover_removeUnit set ref_function_Waypoint_onInRange = function Waypoint_onInRange set ref_function_code__Waypoint_Waypoint = function code__Waypoint_Waypoint set ref_function_code__Waypoint_Waypoint_2650 = function code__Waypoint_Waypoint_2074 endfunction function main takes nothing returns nothing local trigger initTrig call initGlobals() call initCompiletimeState() call SetCameraBounds(( - 7424.0) + GetCameraMargin(CAMERA_MARGIN_LEFT), ( - 7680.0) + GetCameraMargin(CAMERA_MARGIN_BOTTOM), 7424.0 - GetCameraMargin(CAMERA_MARGIN_RIGHT), 7936.0 - GetCameraMargin(CAMERA_MARGIN_TOP), ( - 7424.0) + GetCameraMargin(CAMERA_MARGIN_LEFT), 7936.0 - GetCameraMargin(CAMERA_MARGIN_TOP), 7424.0 - GetCameraMargin(CAMERA_MARGIN_RIGHT), ( - 7680.0) + GetCameraMargin(CAMERA_MARGIN_BOTTOM)) call SetDayNightModels("Environment\\DNC\\DNCLordaeron\\DNCLordaeronTerrain\\DNCLordaeronTerrain.mdl", "Environment\\DNC\\DNCLordaeron\\DNCLordaeronUnit\\DNCLordaeronUnit.mdl") call NewSoundEnvironment("Default") call SetAmbientDaySound("IceCrownDay") call SetAmbientNightSound("IceCrownNight") call SetMapMusic("Music", true, 0) call InitSounds() call CreateRegions() call CreateCameras() call CreateAllItems() call CreateAllUnits() call InitBlizzard() call InitGlobals() call InitCustomTriggers() set initTrig = CreateTrigger() call TriggerAddCondition(initTrig, Condition(ref_function_init_Abilities)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Abilities.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_AbilityIds)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package AbilityIds.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Real)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Real.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Integer)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Integer.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_BitSet)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package BitSet.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Angle)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Angle.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Maths)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Maths.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_String)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package String.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_TargetsAllowed)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package TargetsAllowed.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Vectors)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Vectors.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Destructable)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Destructable.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Player)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Player.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Printing_config)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Printing_config.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Printing)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Printing.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_MagicFunctions)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package MagicFunctions.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Basics)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Basics.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_GameTimer)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package GameTimer.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_ErrorHandling)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package ErrorHandling.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Matrices)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Matrices.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Quaternion)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Quaternion.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Table)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Table.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Playercolor)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Playercolor.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Colors)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Colors.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Framehandle)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Framehandle.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Group)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Group.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Lightning)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Lightning.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_WeatherEffects)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package WeatherEffects.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_TypeCasting)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package TypeCasting.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_HashList)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package HashList.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_EventHelper)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package EventHelper.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_AbilityObjEditing)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package AbilityObjEditing.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_TimerUtils)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package TimerUtils.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_RegisterEvents)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package RegisterEvents.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_ClosureTimers)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package ClosureTimers.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_ClosureForGroups)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package ClosureForGroups.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_LinkedList)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package LinkedList.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_ObjectIds)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package ObjectIds.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_UnitIds)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package UnitIds.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_MapBounds)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package MapBounds.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Preloader)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Preloader.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_ObjectIdGenerator)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package ObjectIdGenerator.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Orders)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Orders.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_OnUnitEnterLeave)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package OnUnitEnterLeave.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_UnitIndexer)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package UnitIndexer.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_ClosureEvents)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package ClosureEvents.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_TerrainUtils)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package TerrainUtils.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_PhysicsConstants)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package PhysicsConstants.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_StringUtils)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package StringUtils.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_FText)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package FText.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Frentity)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Frentity.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Execute)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Execute.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Heightmap)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Heightmap.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Entity_config)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Entity_config.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Entity)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Entity.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_AirPhysicsModule)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package AirPhysicsModule.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_BigString)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package BigString.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_BigNum)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package BigNum.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Encoder)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Encoder.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_LZW)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package LZW.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Json)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Json.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_SerializeIds)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package SerializeIds.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_BuilderConstants)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package BuilderConstants.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_SetupObject)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package SetupObject.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Icons)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Icons.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_ChannelAbilityPreset)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package ChannelAbilityPreset.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_BuffIds)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package BuffIds.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Buildings)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Buildings.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Doodads)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Doodads.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Environment)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Environment.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_ItemIds)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package ItemIds.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Objects)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Objects.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Sounds)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Sounds.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Soundsets)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Soundsets.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Textures)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Textures.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_UI)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package UI.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Units)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Units.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_AttachmentPoints)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package AttachmentPoints.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_BaseObject)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package BaseObject.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_GameConstants)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package GameConstants.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_TerrainData)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package TerrainData.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_PhysicsEntity)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package PhysicsEntity.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_RevivePointModifier)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package RevivePointModifier.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_TerrainBlocker)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package TerrainBlocker.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Fx2Entity)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Fx2Entity.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_GroupUtils)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package GroupUtils.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Players)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Players.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_JukeBox)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package JukeBox.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_EscaperObjects)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package EscaperObjects.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Escaper)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Escaper.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_InstantDummyCaster)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package InstantDummyCaster.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_DummyRecycler)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package DummyRecycler.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_DamageEvent)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package DamageEvent.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Squares)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Squares.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Buff)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Buff.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Arcanery)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Arcanery.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Attackspeed)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Attackspeed.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_AudioTaunts)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package AudioTaunts.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_BasicSpells)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package BasicSpells.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Bomber)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Bomber.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Bombertower)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Bombertower.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Booster)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Booster.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Boots)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Boots.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_MultiboardClass)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package MultiboardClass.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Key)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Key.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Tome)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Tome.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Coin)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Coin.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Builder)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Builder.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_FxEntity)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package FxEntity.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_EscaperSensor)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package EscaperSensor.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_EscaperKillers)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package EscaperKillers.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_ObjectTarget)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package ObjectTarget.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_TerrainChanger)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package TerrainChanger.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Pointer)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Pointer.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Knockbacker)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Knockbacker.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Faceless)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Faceless.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_UnitProducer)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package UnitProducer.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_EscaperClasses)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package EscaperClasses.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Simulate3dSound)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Simulate3dSound.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_SoundUtils)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package SoundUtils.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_PickSystem)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package PickSystem.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_PlayerData)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package PlayerData.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_BossSpellTarget)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package BossSpellTarget.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_CustomBar)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package CustomBar.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Minion)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Minion.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Boss)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Boss.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_BossDamager)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package BossDamager.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Camerashakes)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Camerashakes.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_ChunkedString)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package ChunkedString.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_CodeGenerator)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package CodeGenerator.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Collision)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Collision.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_SetupBox)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package SetupBox.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_ReviveManager)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package ReviveManager.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Minigame)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Minigame.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_KeyUtils)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package KeyUtils.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_MGSpacey)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package MGSpacey.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Commands)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Commands.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_MoveSpeed)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package MoveSpeed.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_CongaObjects)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package CongaObjects.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_DebugInfo)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package DebugInfo.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Decoration)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Decoration.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Door)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Door.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_EntityManagement)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package EntityManagement.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_TerrainModder)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package TerrainModder.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Executer)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Executer.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_SafetyChecks)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package SafetyChecks.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_FileIO)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package FileIO.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Fountain)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Fountain.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Obstacle)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Obstacle.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_LobbyTeleporter)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package LobbyTeleporter.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_MinigameTeleporter)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package MinigameTeleporter.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Startmazes)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Startmazes.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_GameInit)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package GameInit.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_GameStatus)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package GameStatus.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_GlobalShop)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package GlobalShop.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_HashSet)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package HashSet.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Revivepoint)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Revivepoint.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Vortex)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Vortex.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Powernode)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Powernode.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Tracks)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Tracks.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Jumper)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Jumper.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Teleporter)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Teleporter.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_WaypointObjects)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package WaypointObjects.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Waypoint)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Waypoint.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_SpinnerObjects)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package SpinnerObjects.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Unitcreator)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Unitcreator.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Trap)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Trap.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_ObstacleObjects)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package ObstacleObjects.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_MGWarlock)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package MGWarlock.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_RegionData)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package RegionData.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Tree)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Tree.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Texter)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Texter.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_UnitRemover)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package UnitRemover.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_PedestalObjects)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package PedestalObjects.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_JsonParser)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package JsonParser.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_SyncSimple)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package SyncSimple.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_SaveLoadData)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package SaveLoadData.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Pedestal)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Pedestal.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_InstantBuild)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package InstantBuild.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Invisible)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Invisible.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_MGAgar)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package MGAgar.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_MGRandKill)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package MGRandKill.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_MGSlide)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package MGSlide.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Questlog)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Questlog.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Remove)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Remove.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Startmaze)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Startmaze.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_WeaponTypes)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package WeaponTypes.") endif call TriggerClearConditions(initTrig) call TriggerAddCondition(initTrig, Condition(ref_function_init_Weapon)) if not TriggerEvaluate(initTrig) then call error("Could not initialize package Weapon.") endif call TriggerClearConditions(initTrig) call DestroyTrigger(initTrig) endfunction function InitAllyPriorities takes nothing returns nothing call SetStartLocPrioCount(0, 11) call SetStartLocPrio(0, 0, 1, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(0, 1, 2, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(0, 2, 3, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(0, 3, 4, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(0, 4, 5, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(0, 5, 6, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(0, 6, 7, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(0, 7, 8, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(0, 8, 9, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(0, 9, 10, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(0, 10, 11, MAP_LOC_PRIO_HIGH) call SetStartLocPrioCount(1, 11) call SetStartLocPrio(1, 0, 0, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(1, 1, 2, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(1, 2, 3, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(1, 3, 4, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(1, 4, 5, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(1, 5, 6, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(1, 6, 7, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(1, 7, 8, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(1, 8, 9, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(1, 9, 10, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(1, 10, 11, MAP_LOC_PRIO_HIGH) call SetStartLocPrioCount(2, 11) call SetStartLocPrio(2, 0, 0, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(2, 1, 1, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(2, 2, 3, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(2, 3, 4, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(2, 4, 5, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(2, 5, 6, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(2, 6, 7, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(2, 7, 8, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(2, 8, 9, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(2, 9, 10, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(2, 10, 11, MAP_LOC_PRIO_HIGH) call SetStartLocPrioCount(3, 11) call SetStartLocPrio(3, 0, 0, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(3, 1, 1, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(3, 2, 2, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(3, 3, 4, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(3, 4, 5, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(3, 5, 6, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(3, 6, 7, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(3, 7, 8, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(3, 8, 9, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(3, 9, 10, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(3, 10, 11, MAP_LOC_PRIO_HIGH) call SetStartLocPrioCount(4, 11) call SetStartLocPrio(4, 0, 0, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(4, 1, 1, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(4, 2, 2, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(4, 3, 3, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(4, 4, 5, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(4, 5, 6, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(4, 6, 7, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(4, 7, 8, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(4, 8, 9, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(4, 9, 10, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(4, 10, 11, MAP_LOC_PRIO_HIGH) call SetStartLocPrioCount(5, 11) call SetStartLocPrio(5, 0, 0, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(5, 1, 1, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(5, 2, 2, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(5, 3, 3, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(5, 4, 4, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(5, 5, 6, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(5, 6, 7, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(5, 7, 8, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(5, 8, 9, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(5, 9, 10, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(5, 10, 11, MAP_LOC_PRIO_HIGH) call SetStartLocPrioCount(6, 11) call SetStartLocPrio(6, 0, 0, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(6, 1, 1, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(6, 2, 2, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(6, 3, 3, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(6, 4, 4, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(6, 5, 5, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(6, 6, 7, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(6, 7, 8, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(6, 8, 9, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(6, 9, 10, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(6, 10, 11, MAP_LOC_PRIO_HIGH) call SetStartLocPrioCount(7, 11) call SetStartLocPrio(7, 0, 0, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(7, 1, 1, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(7, 2, 2, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(7, 3, 3, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(7, 4, 4, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(7, 5, 5, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(7, 6, 6, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(7, 7, 8, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(7, 8, 9, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(7, 9, 10, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(7, 10, 11, MAP_LOC_PRIO_HIGH) call SetStartLocPrioCount(8, 11) call SetStartLocPrio(8, 0, 0, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(8, 1, 1, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(8, 2, 2, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(8, 3, 3, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(8, 4, 4, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(8, 5, 5, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(8, 6, 6, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(8, 7, 7, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(8, 8, 9, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(8, 9, 10, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(8, 10, 11, MAP_LOC_PRIO_HIGH) call SetStartLocPrioCount(9, 11) call SetStartLocPrio(9, 0, 0, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(9, 1, 1, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(9, 2, 2, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(9, 3, 3, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(9, 4, 4, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(9, 5, 5, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(9, 6, 6, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(9, 7, 7, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(9, 8, 8, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(9, 9, 10, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(9, 10, 11, MAP_LOC_PRIO_HIGH) call SetStartLocPrioCount(10, 11) call SetStartLocPrio(10, 0, 0, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(10, 1, 1, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(10, 2, 2, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(10, 3, 3, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(10, 4, 4, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(10, 5, 5, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(10, 6, 6, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(10, 7, 7, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(10, 8, 8, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(10, 9, 9, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(10, 10, 11, MAP_LOC_PRIO_HIGH) call SetStartLocPrioCount(11, 11) call SetStartLocPrio(11, 0, 0, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(11, 1, 1, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(11, 2, 2, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(11, 3, 3, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(11, 4, 4, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(11, 5, 5, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(11, 6, 6, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(11, 7, 7, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(11, 8, 8, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(11, 9, 9, MAP_LOC_PRIO_HIGH) call SetStartLocPrio(11, 10, 10, MAP_LOC_PRIO_HIGH) endfunction function InitCustomPlayerSlots 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_HUMAN) 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_HUMAN) call SetPlayerRaceSelectable(Player(2), false) call SetPlayerController(Player(2), MAP_CONTROL_USER) call SetPlayerStartLocation(Player(3), 3) call ForcePlayerStartLocation(Player(3), 3) call SetPlayerColor(Player(3), ConvertPlayerColor(3)) call SetPlayerRacePreference(Player(3), RACE_PREF_HUMAN) call SetPlayerRaceSelectable(Player(3), false) call SetPlayerController(Player(3), MAP_CONTROL_USER) call SetPlayerStartLocation(Player(4), 4) call ForcePlayerStartLocation(Player(4), 4) call SetPlayerColor(Player(4), ConvertPlayerColor(4)) call SetPlayerRacePreference(Player(4), RACE_PREF_HUMAN) call SetPlayerRaceSelectable(Player(4), false) call SetPlayerController(Player(4), MAP_CONTROL_USER) call SetPlayerStartLocation(Player(5), 5) call ForcePlayerStartLocation(Player(5), 5) call SetPlayerColor(Player(5), ConvertPlayerColor(5)) call SetPlayerRacePreference(Player(5), RACE_PREF_HUMAN) call SetPlayerRaceSelectable(Player(5), false) call SetPlayerController(Player(5), MAP_CONTROL_USER) call SetPlayerStartLocation(Player(6), 6) call ForcePlayerStartLocation(Player(6), 6) call SetPlayerColor(Player(6), ConvertPlayerColor(6)) call SetPlayerRacePreference(Player(6), RACE_PREF_HUMAN) call SetPlayerRaceSelectable(Player(6), false) call SetPlayerController(Player(6), MAP_CONTROL_USER) call SetPlayerStartLocation(Player(7), 7) call ForcePlayerStartLocation(Player(7), 7) call SetPlayerColor(Player(7), ConvertPlayerColor(7)) call SetPlayerRacePreference(Player(7), RACE_PREF_HUMAN) call SetPlayerRaceSelectable(Player(7), false) call SetPlayerController(Player(7), MAP_CONTROL_USER) call SetPlayerStartLocation(Player(8), 8) call ForcePlayerStartLocation(Player(8), 8) call SetPlayerColor(Player(8), ConvertPlayerColor(8)) call SetPlayerRacePreference(Player(8), RACE_PREF_HUMAN) call SetPlayerRaceSelectable(Player(8), false) call SetPlayerController(Player(8), MAP_CONTROL_USER) call SetPlayerStartLocation(Player(9), 9) call ForcePlayerStartLocation(Player(9), 9) call SetPlayerColor(Player(9), ConvertPlayerColor(9)) call SetPlayerRacePreference(Player(9), RACE_PREF_HUMAN) call SetPlayerRaceSelectable(Player(9), false) call SetPlayerController(Player(9), MAP_CONTROL_USER) call SetPlayerStartLocation(Player(10), 10) call ForcePlayerStartLocation(Player(10), 10) call SetPlayerColor(Player(10), ConvertPlayerColor(10)) call SetPlayerRacePreference(Player(10), RACE_PREF_HUMAN) call SetPlayerRaceSelectable(Player(10), false) call SetPlayerController(Player(10), MAP_CONTROL_USER) call SetPlayerStartLocation(Player(11), 11) call ForcePlayerStartLocation(Player(11), 11) call SetPlayerColor(Player(11), ConvertPlayerColor(11)) call SetPlayerRacePreference(Player(11), RACE_PREF_HUMAN) call SetPlayerRaceSelectable(Player(11), false) call SetPlayerController(Player(11), MAP_CONTROL_USER) 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 SetPlayerTeam(Player(3), 0) call SetPlayerState(Player(3), PLAYER_STATE_ALLIED_VICTORY, 1) call SetPlayerTeam(Player(4), 0) call SetPlayerState(Player(4), PLAYER_STATE_ALLIED_VICTORY, 1) call SetPlayerTeam(Player(5), 0) call SetPlayerState(Player(5), PLAYER_STATE_ALLIED_VICTORY, 1) call SetPlayerTeam(Player(6), 0) call SetPlayerState(Player(6), PLAYER_STATE_ALLIED_VICTORY, 1) call SetPlayerTeam(Player(7), 0) call SetPlayerState(Player(7), PLAYER_STATE_ALLIED_VICTORY, 1) call SetPlayerAllianceStateAllyBJ(Player(0), Player(1), true) call SetPlayerAllianceStateAllyBJ(Player(0), Player(2), true) call SetPlayerAllianceStateAllyBJ(Player(0), Player(3), true) call SetPlayerAllianceStateAllyBJ(Player(0), Player(4), true) call SetPlayerAllianceStateAllyBJ(Player(0), Player(5), true) call SetPlayerAllianceStateAllyBJ(Player(0), Player(6), true) call SetPlayerAllianceStateAllyBJ(Player(0), Player(7), true) call SetPlayerAllianceStateAllyBJ(Player(1), Player(0), true) call SetPlayerAllianceStateAllyBJ(Player(1), Player(2), true) call SetPlayerAllianceStateAllyBJ(Player(1), Player(3), true) call SetPlayerAllianceStateAllyBJ(Player(1), Player(4), true) call SetPlayerAllianceStateAllyBJ(Player(1), Player(5), true) call SetPlayerAllianceStateAllyBJ(Player(1), Player(6), true) call SetPlayerAllianceStateAllyBJ(Player(1), Player(7), true) call SetPlayerAllianceStateAllyBJ(Player(2), Player(0), true) call SetPlayerAllianceStateAllyBJ(Player(2), Player(1), true) call SetPlayerAllianceStateAllyBJ(Player(2), Player(3), true) call SetPlayerAllianceStateAllyBJ(Player(2), Player(4), true) call SetPlayerAllianceStateAllyBJ(Player(2), Player(5), true) call SetPlayerAllianceStateAllyBJ(Player(2), Player(6), true) call SetPlayerAllianceStateAllyBJ(Player(2), Player(7), true) call SetPlayerAllianceStateAllyBJ(Player(3), Player(0), true) call SetPlayerAllianceStateAllyBJ(Player(3), Player(1), true) call SetPlayerAllianceStateAllyBJ(Player(3), Player(2), true) call SetPlayerAllianceStateAllyBJ(Player(3), Player(4), true) call SetPlayerAllianceStateAllyBJ(Player(3), Player(5), true) call SetPlayerAllianceStateAllyBJ(Player(3), Player(6), true) call SetPlayerAllianceStateAllyBJ(Player(3), Player(7), true) call SetPlayerAllianceStateAllyBJ(Player(4), Player(0), true) call SetPlayerAllianceStateAllyBJ(Player(4), Player(1), true) call SetPlayerAllianceStateAllyBJ(Player(4), Player(2), true) call SetPlayerAllianceStateAllyBJ(Player(4), Player(3), true) call SetPlayerAllianceStateAllyBJ(Player(4), Player(5), true) call SetPlayerAllianceStateAllyBJ(Player(4), Player(6), true) call SetPlayerAllianceStateAllyBJ(Player(4), Player(7), true) call SetPlayerAllianceStateAllyBJ(Player(5), Player(0), true) call SetPlayerAllianceStateAllyBJ(Player(5), Player(1), true) call SetPlayerAllianceStateAllyBJ(Player(5), Player(2), true) call SetPlayerAllianceStateAllyBJ(Player(5), Player(3), true) call SetPlayerAllianceStateAllyBJ(Player(5), Player(4), true) call SetPlayerAllianceStateAllyBJ(Player(5), Player(6), true) call SetPlayerAllianceStateAllyBJ(Player(5), Player(7), true) call SetPlayerAllianceStateAllyBJ(Player(6), Player(0), true) call SetPlayerAllianceStateAllyBJ(Player(6), Player(1), true) call SetPlayerAllianceStateAllyBJ(Player(6), Player(2), true) call SetPlayerAllianceStateAllyBJ(Player(6), Player(3), true) call SetPlayerAllianceStateAllyBJ(Player(6), Player(4), true) call SetPlayerAllianceStateAllyBJ(Player(6), Player(5), true) call SetPlayerAllianceStateAllyBJ(Player(6), Player(7), true) call SetPlayerAllianceStateAllyBJ(Player(7), Player(0), true) call SetPlayerAllianceStateAllyBJ(Player(7), Player(1), true) call SetPlayerAllianceStateAllyBJ(Player(7), Player(2), true) call SetPlayerAllianceStateAllyBJ(Player(7), Player(3), true) call SetPlayerAllianceStateAllyBJ(Player(7), Player(4), true) call SetPlayerAllianceStateAllyBJ(Player(7), Player(5), true) call SetPlayerAllianceStateAllyBJ(Player(7), Player(6), true) call SetPlayerAllianceStateVisionBJ(Player(0), Player(1), true) call SetPlayerAllianceStateVisionBJ(Player(0), Player(2), true) call SetPlayerAllianceStateVisionBJ(Player(0), Player(3), true) call SetPlayerAllianceStateVisionBJ(Player(0), Player(4), true) call SetPlayerAllianceStateVisionBJ(Player(0), Player(5), true) call SetPlayerAllianceStateVisionBJ(Player(0), Player(6), true) call SetPlayerAllianceStateVisionBJ(Player(0), Player(7), true) call SetPlayerAllianceStateVisionBJ(Player(1), Player(0), true) call SetPlayerAllianceStateVisionBJ(Player(1), Player(2), true) call SetPlayerAllianceStateVisionBJ(Player(1), Player(3), true) call SetPlayerAllianceStateVisionBJ(Player(1), Player(4), true) call SetPlayerAllianceStateVisionBJ(Player(1), Player(5), true) call SetPlayerAllianceStateVisionBJ(Player(1), Player(6), true) call SetPlayerAllianceStateVisionBJ(Player(1), Player(7), true) call SetPlayerAllianceStateVisionBJ(Player(2), Player(0), true) call SetPlayerAllianceStateVisionBJ(Player(2), Player(1), true) call SetPlayerAllianceStateVisionBJ(Player(2), Player(3), true) call SetPlayerAllianceStateVisionBJ(Player(2), Player(4), true) call SetPlayerAllianceStateVisionBJ(Player(2), Player(5), true) call SetPlayerAllianceStateVisionBJ(Player(2), Player(6), true) call SetPlayerAllianceStateVisionBJ(Player(2), Player(7), true) call SetPlayerAllianceStateVisionBJ(Player(3), Player(0), true) call SetPlayerAllianceStateVisionBJ(Player(3), Player(1), true) call SetPlayerAllianceStateVisionBJ(Player(3), Player(2), true) call SetPlayerAllianceStateVisionBJ(Player(3), Player(4), true) call SetPlayerAllianceStateVisionBJ(Player(3), Player(5), true) call SetPlayerAllianceStateVisionBJ(Player(3), Player(6), true) call SetPlayerAllianceStateVisionBJ(Player(3), Player(7), true) call SetPlayerAllianceStateVisionBJ(Player(4), Player(0), true) call SetPlayerAllianceStateVisionBJ(Player(4), Player(1), true) call SetPlayerAllianceStateVisionBJ(Player(4), Player(2), true) call SetPlayerAllianceStateVisionBJ(Player(4), Player(3), true) call SetPlayerAllianceStateVisionBJ(Player(4), Player(5), true) call SetPlayerAllianceStateVisionBJ(Player(4), Player(6), true) call SetPlayerAllianceStateVisionBJ(Player(4), Player(7), true) call SetPlayerAllianceStateVisionBJ(Player(5), Player(0), true) call SetPlayerAllianceStateVisionBJ(Player(5), Player(1), true) call SetPlayerAllianceStateVisionBJ(Player(5), Player(2), true) call SetPlayerAllianceStateVisionBJ(Player(5), Player(3), true) call SetPlayerAllianceStateVisionBJ(Player(5), Player(4), true) call SetPlayerAllianceStateVisionBJ(Player(5), Player(6), true) call SetPlayerAllianceStateVisionBJ(Player(5), Player(7), true) call SetPlayerAllianceStateVisionBJ(Player(6), Player(0), true) call SetPlayerAllianceStateVisionBJ(Player(6), Player(1), true) call SetPlayerAllianceStateVisionBJ(Player(6), Player(2), true) call SetPlayerAllianceStateVisionBJ(Player(6), Player(3), true) call SetPlayerAllianceStateVisionBJ(Player(6), Player(4), true) call SetPlayerAllianceStateVisionBJ(Player(6), Player(5), true) call SetPlayerAllianceStateVisionBJ(Player(6), Player(7), true) call SetPlayerAllianceStateVisionBJ(Player(7), Player(0), true) call SetPlayerAllianceStateVisionBJ(Player(7), Player(1), true) call SetPlayerAllianceStateVisionBJ(Player(7), Player(2), true) call SetPlayerAllianceStateVisionBJ(Player(7), Player(3), true) call SetPlayerAllianceStateVisionBJ(Player(7), Player(4), true) call SetPlayerAllianceStateVisionBJ(Player(7), Player(5), true) call SetPlayerAllianceStateVisionBJ(Player(7), Player(6), true) call SetPlayerTeam(Player(8), 1) call SetPlayerState(Player(8), PLAYER_STATE_ALLIED_VICTORY, 1) call SetPlayerTeam(Player(9), 1) call SetPlayerState(Player(9), PLAYER_STATE_ALLIED_VICTORY, 1) call SetPlayerTeam(Player(10), 1) call SetPlayerState(Player(10), PLAYER_STATE_ALLIED_VICTORY, 1) call SetPlayerTeam(Player(11), 1) call SetPlayerState(Player(11), PLAYER_STATE_ALLIED_VICTORY, 1) call SetPlayerAllianceStateAllyBJ(Player(8), Player(9), true) call SetPlayerAllianceStateAllyBJ(Player(8), Player(10), true) call SetPlayerAllianceStateAllyBJ(Player(8), Player(11), true) call SetPlayerAllianceStateAllyBJ(Player(9), Player(8), true) call SetPlayerAllianceStateAllyBJ(Player(9), Player(10), true) call SetPlayerAllianceStateAllyBJ(Player(9), Player(11), true) call SetPlayerAllianceStateAllyBJ(Player(10), Player(8), true) call SetPlayerAllianceStateAllyBJ(Player(10), Player(9), true) call SetPlayerAllianceStateAllyBJ(Player(10), Player(11), true) call SetPlayerAllianceStateAllyBJ(Player(11), Player(8), true) call SetPlayerAllianceStateAllyBJ(Player(11), Player(9), true) call SetPlayerAllianceStateAllyBJ(Player(11), Player(10), true) endfunction function config takes nothing returns nothing call SetMapName("TRIGSTR_4723") call SetMapDescription("") call SetPlayers(12) call SetTeams(12) call SetGamePlacement(MAP_PLACEMENT_TEAMS_TOGETHER) call DefineStartLocation(0, - 128.0, - 64.0) call DefineStartLocation(1, - 128.0, - 64.0) call DefineStartLocation(2, - 128.0, - 64.0) call DefineStartLocation(3, - 128.0, - 64.0) call DefineStartLocation(4, - 128.0, - 64.0) call DefineStartLocation(5, - 128.0, - 64.0) call DefineStartLocation(6, - 128.0, - 64.0) call DefineStartLocation(7, - 128.0, - 64.0) call DefineStartLocation(8, - 128.0, - 64.0) call DefineStartLocation(9, - 128.0, - 64.0) call DefineStartLocation(10, - 128.0, - 64.0) call DefineStartLocation(11, - 128.0, - 64.0) call InitCustomPlayerSlots() call InitCustomTeams() call InitAllyPriorities() endfunction