SQLite format 3@ Òf  0{0IetableConstantConstantûCREATE TABLE Constant (Name TEXT, Data TEXT)WtableFunctionFunctionCREATE TABLE Function(Name TEXT, code TEXT, isNative NUMERIC DEFAULT 0, isConstant NUMERIC DEFAULT 0)îÄúôîH†Š|…‡b <<ˆíL« lÎ?›J#}ConvertRaceconstant native ConvertRace takes integer i returns racec3ConvertAllianceTypeconstant native ConvertAllianceType takes integer i returns alliancetype]+ConvertRacePrefconstant native ConvertRacePref takes integer i returns racepreference]/ConvertIGameStateconstant native ConvertIGameState takes integer i returns igamestate]/ConvertFGameStateconstant native ConvertFGameState takes integer i returns fgamestate`1ConvertPlayerStateconstant native ConvertPlayerState takes integer i returns playerstate`1ConvertPlayerScoreconstant native ConvertPlayerScore takes integer i returns playerscoreo;-ConvertPlayerGameResultconstant native ConvertPlayerGameResult takes integer i returns playergameresultZ -ConvertUnitStateconstant native ConvertUnitState takes integer i returns unitstatec 3ConvertAIDifficultyconstant native ConvertAIDifficulty takes integer i returns aidifficulty MM© yÛ=™ïH¤Z -ConvertGameEventconstant native ConvertGameEvent takes integer i returns gameevent` 1ConvertPlayerEventconstant native ConvertPlayerEvent takes integer i returns playereventl 9)ConvertPlayerUnitEventconstant native ConvertPlayerUnitEvent takes integer i returns playerunitevent`1ConvertWidgetEventconstant native ConvertWidgetEvent takes integer i returns widgetevent`1ConvertDialogEventconstant native ConvertDialogEvent takes integer i returns dialogeventZ-ConvertUnitEventconstant native ConvertUnitEvent takes integer i returns uniteventT) ConvertLimitOpconstant native ConvertLimitOp takes integer i returns limitopW+ ConvertUnitTypeconstant native ConvertUnitType takes integer i returns unittypeZ-ConvertGameSpeedconstant native ConvertGameSpeed takes integer i returns gamespeedZ-ConvertPlacementconstant native ConvertPlacement takes integer i returns placement ššÿjÃà?žc3ConvertStartLocPrioconstant native ConvertStartLocPrio takes integer i returns startlocprioi7%ConvertGameDifficultyconstant native ConvertGameDifficulty takes integer i returns gamedifficultyW+ ConvertGameTypeconstant native ConvertGameType takes integer i returns gametypeT) ConvertMapFlagconstant native ConvertMapFlag takes integer i returns mapflagf5!ConvertMapVisibilityconstant native ConvertMapVisibility takes integer i returns mapvisibility]/ConvertMapSettingconstant native ConvertMapSetting takes integer i returns mapsetting]/ConvertMapDensityconstant native ConvertMapDensity takes integer i returns mapdensity]/ConvertMapControlconstant native ConvertMapControl takes integer i returns mapcontrol`1ConvertPlayerColorconstant native ConvertPlayerColor takes integer i returns playercolor ššjÌ(òKªl9)ConvertPlayerSlotStateconstant native ConvertPlayerSlotState takes integer i returns playerslotstate`1ConvertVolumeGroupconstant native ConvertVolumeGroup takes integer i returns volumegroup` 1ConvertCameraFieldconstant native ConvertCameraField takes integer i returns camerafieldZ!-ConvertBlendModeconstant native ConvertBlendMode takes integer i returns blendmodef"5!ConvertRarityControlconstant native ConvertRarityControl takes integer i returns raritycontrol`#1ConvertTexMapFlagsconstant native ConvertTexMapFlags takes integer i returns texmapflagsW$+ ConvertFogStateconstant native ConvertFogState takes integer i returns fogstate]%/ConvertEffectTypeconstant native ConvertEffectType takes integer i returns effecttypeT&) ConvertVersionconstant native ConvertVersion takes integer i returns version vvÏ.ìHªýX¨W'+ ConvertItemTypeconstant native ConvertItemType takes integer i returns itemtype](/ConvertAttackTypeconstant native ConvertAttackType takes integer i returns attacktype])/ConvertDamageTypeconstant native ConvertDamageType takes integer i returns damagetype]*/ConvertWeaponTypeconstant native ConvertWeaponType takes integer i returns weapontypeZ+-ConvertSoundTypeconstant native ConvertSoundType takes integer i returns soundtype`,1ConvertPathingTypeconstant native ConvertPathingType takes integer i returns pathingtypeQ-OrderIdconstant native OrderId takes string orderIdString returns integerY.)OrderId2Stringconstant native OrderId2String takes integer orderId returns stringN/ UnitIdconstant native UnitId takes string unitIdString returns integerV0'UnitId2Stringconstant native UnitId2String takes integer unitId returns string OO¨ c¡ßK³åS‘ÍW1AbilityIdconstant native AbilityId takes string abilityIdString returns integer_2-AbilityId2Stringconstant native AbilityId2String takes integer abilityId returns stringX3'GetObjectNameconstant native GetObjectName takes integer objectId returns string<4iDeg2Radnative Deg2Rad takes real degrees returns real<5iRad2Degnative Rad2Deg takes real radians returns real46aSinnative Sin takes real radians returns real47aCosnative Cos takes real radians returns real48aTannative Tan takes real radians returns real09WAsinnative Asin takes real y returns real0:WAcosnative Acos takes real x returns real0;WAtannative Atan takes real x returns real:<iAtan2native Atan2 takes real y, real x returns real<=!cSquareRootnative SquareRoot takes real x returns real:>mPownative Pow takes real x, real power returns real1?[I2Rnative I2R takes integer i returns real UUˆ½ïF{­V­^¤1@[R2Inative R2I takes real r returns integer3A_I2Snative I2S takes integer i returns string0BYR2Snative R2S takes real r returns stringUCR2SWnative R2SW takes real r, integer width, integer precision returns string3D_S2Inative S2I takes string s returns integer0EYS2Rnative S2R takes string s returns real`F+SubStringnative SubString takes string source, integer start, integer end returns stringEG%qStringLengthnative StringLength takes string s returns integerUH!StringCasenative StringCase takes string source, boolean upper returns stringVI1GetLocalizedStringnative GetLocalizedString takes string source returns stringWJ1GetLocalizedHotkeynative GetLocalizedHotkey takes string source returns integerDK!sSetMapNamenative SetMapName takes string name returns nothingZL/SetMapDescriptionnative SetMapDescription takes string description returns nothing bbªùlíi‰FM{SetTeamsnative SetTeams takes integer teamcount returns nothingMN!SetPlayersnative SetPlayers takes integer playercount returns nothingqO39DefineStartLocationnative DefineStartLocation takes integer whichStartLoc, real x, real y returns nothingP9ODefineStartLocationLocnative DefineStartLocationLoc takes integer whichStartLoc, location whichLocation returns nothingzQ5ISetStartLocPrioCountnative SetStartLocPrioCount takes integer whichStartLoc, integer prioSlotCount returns nothing#R+‚%SetStartLocPrionative SetStartLocPrio takes integer whichStartLoc, integer prioSlotIndex, integer otherStartLocIndex, startlocprio priority returns nothingxS3GGetStartLocPrioSlotnative GetStartLocPrioSlot takes integer whichStartLoc, integer prioSlotIndex returns integeruT+IGetStartLocPrionative GetStartLocPrio takes integer whichStartLoc, integer prioSlotIndex returns startlocprio bb×6šîV¹ZœsU5;SetGameTypeSupportednative SetGameTypeSupported takes gametype whichGameType, boolean value returns nothing]V!#SetMapFlagnative SetMapFlag takes mapflag whichMapFlag, boolean value returns nothingbW-!SetGamePlacementnative SetGamePlacement takes placement whichPlacementType returns nothingRX% SetGameSpeednative SetGameSpeed takes gamespeed whichspeed returns nothingfY/'SetGameDifficultynative SetGameDifficulty takes gamedifficulty whichdifficulty returns nothingaZ1SetResourceDensitynative SetResourceDensity takes mapdensity whichdensity returns nothinga[1SetCreatureDensitynative SetCreatureDensity takes mapdensity whichdensity returns nothing<\gGetTeamsnative GetTeams takes nothing returns integer@]!kGetPlayersnative GetPlayers takes nothing returns integerb^3IsGameTypeSupportednative IsGameTypeSupported takes gametype whichGameType returns boolean FF›ïI›ü[º$ŽS_3GetGameTypeSelectednative GetGameTypeSelected takes nothing returns gametypeR`% IsMapFlagSetnative IsMapFlagSet takes mapflag whichMapFlag returns booleanXa- GetGamePlacementconstant native GetGamePlacement takes nothing returns placementPb%GetGameSpeedconstant native GetGameSpeed takes nothing returns gamespeed_c/GetGameDifficultyconstant native GetGameDifficulty takes nothing returns gamedifficulty]d1GetResourceDensityconstant native GetResourceDensity takes nothing returns mapdensity]e1GetCreatureDensityconstant native GetCreatureDensity takes nothing returns mapdensityhf/+GetStartLocationXconstant native GetStartLocationX takes integer whichStartLocation returns realhg/+GetStartLocationYconstant native GetStartLocationY takes integer whichStartLocation returns realph37GetStartLocationLocconstant native GetStartLocationLoc takes integer whichStartLocation returns location hhÏLÍ6Úsei'-SetPlayerTeamnative SetPlayerTeam takes player whichPlayer, integer whichTeam returns nothing{j9GSetPlayerStartLocationnative SetPlayerStartLocation takes player whichPlayer, integer startLocIndex returns nothingk=KForcePlayerStartLocationnative ForcePlayerStartLocation takes player whichPlayer, integer startLocIndex returns nothinggl)/SetPlayerColornative SetPlayerColor takes player whichPlayer, playercolor color returns nothing!m/‚SetPlayerAlliancenative SetPlayerAlliance takes player sourcePlayer, player otherPlayer, alliancetype whichAllianceSetting, boolean value returns nothingn-‚ SetPlayerTaxRatenative SetPlayerTaxRate takes player sourcePlayer, player otherPlayer, playerstate whichResource, integer rate returns nothing o;cSetPlayerRacePreferencenative SetPlayerRacePreference takes player whichPlayer, racepreference whichRacePreference returns nothing eeÜTµ)}ã=up;9SetPlayerRaceSelectablenative SetPlayerRaceSelectable takes player whichPlayer, boolean value returns nothingvq3CSetPlayerControllernative SetPlayerController takes player whichPlayer, mapcontrol controlType returns nothing_r'!SetPlayerNamenative SetPlayerName takes player whichPlayer, string name returns nothingrs95SetPlayerOnScoreScreennative SetPlayerOnScoreScreen takes player whichPlayer, boolean flag returns nothingRt'GetPlayerTeamnative GetPlayerTeam takes player whichPlayer returns integerdu9GetPlayerStartLocationnative GetPlayerStartLocation takes player whichPlayer returns integerXv)GetPlayerColornative GetPlayerColor takes player whichPlayer returns playercolor^w3GetPlayerSelectablenative GetPlayerSelectable takes player whichPlayer returns booleanax3GetPlayerControllernative GetPlayerController takes player whichPlayer returns mapcontrol ‹‹ñ|ñD†ÖT¨dy1!GetPlayerSlotStatenative GetPlayerSlotState takes player whichPlayer returns playerslotstatez-mGetPlayerTaxRatenative GetPlayerTaxRate takes player sourcePlayer, player otherPlayer, playerstate whichResource returns integers{3=IsPlayerRacePrefSetnative IsPlayerRacePrefSet takes player whichPlayer, racepreference pref returns booleanQ|'GetPlayerNamenative GetPlayerName takes player whichPlayer returns string@}#iCreateTimernative CreateTimer takes nothing returns timerN~%DestroyTimernative DestroyTimer takes timer whichTimer returns nothing|!aTimerStartnative TimerStart takes timer whichTimer, real timeout, boolean periodic, code handlerFunc returns nothingQ+TimerGetElapsednative TimerGetElapsed takes timer whichTimer returns realU/TimerGetRemainingnative TimerGetRemaining takes timer whichTimer returns real ››ï;‰ÔhÉ0|Q+TimerGetTimeoutnative TimerGetTimeout takes timer whichTimer returns realI!}PauseTimernative PauseTimer takes timer whichTimer returns nothingK#ResumeTimernative ResumeTimer takes timer whichTimer returns nothingH+qGetExpiredTimernative GetExpiredTimer takes nothing returns timer@#iCreateGroupnative CreateGroup takes nothing returns groupN%DestroyGroupnative DestroyGroup takes group whichGroup returns nothing^%!GroupAddUnitnative GroupAddUnit takes group whichGroup, unit whichUnit returns nothingd +'GroupRemoveUnitnative GroupRemoveUnit takes group whichGroup, unit whichUnit returns nothingI !}GroupClearnative GroupClear takes group whichGroup returns nothing 5UGroupEnumUnitsOfTypenative GroupEnumUnitsOfType takes group whichGroup, string unitname, boolexpr filter returns nothing ‚‚ ³-Ê\ 9_GroupEnumUnitsOfPlayernative GroupEnumUnitsOfPlayer takes group whichGroup, player whichPlayer, boolexpr filter returns nothing" C‚ GroupEnumUnitsOfTypeCountednative GroupEnumUnitsOfTypeCounted takes group whichGroup, string unitname, boolexpr filter, integer countLimit returns nothingw5CGroupEnumUnitsInRectnative GroupEnumUnitsInRect takes group whichGroup, rect r, boolexpr filter returns nothingCyGroupEnumUnitsInRectCountednative GroupEnumUnitsInRectCounted takes group whichGroup, rect r, boolexpr filter, integer countLimit returns nothing7oGroupEnumUnitsInRangenative GroupEnumUnitsInRange takes group whichGroup, real x, real y, real radius, boolexpr filter returns nothing A‚ GroupEnumUnitsInRangeOfLocnative GroupEnumUnitsInRangeOfLoc takes group whichGroup, location whichLocation, real radius, boolexpr filter returns nothing Ó™$‘|0E‚%GroupEnumUnitsInRangeCountednative GroupEnumUnitsInRangeCounted takes group whichGroup, real x, real y, real radius, boolexpr filter, integer countLimit returns nothingBO‚?GroupEnumUnitsInRangeOfLocCountednative GroupEnumUnitsInRangeOfLocCounted takes group whichGroup, location whichLocation, real radius, boolexpr filter, integer countLimit returns nothing9_GroupEnumUnitsSelectednative GroupEnumUnitsSelected takes group whichGroup, player whichPlayer, boolexpr filter returns nothingj3+GroupImmediateOrdernative GroupImmediateOrder takes group whichGroup, string order returns booleans;5GroupImmediateOrderByIdnative GroupImmediateOrderById takes group whichGroup, integer order returns booleanr+CGroupPointOrdernative GroupPointOrder takes group whichGroup, string order, real x, real y returns boolean1YGroupPointOrderLocnative GroupPointOrderLoc takes group whichGroup, string order, location whichLocation returns boolean QQÏ\Ø^¶F—{3MGroupPointOrderByIdnative GroupPointOrderById takes group whichGroup, integer order, real x, real y returns boolean 9cGroupPointOrderByIdLocnative GroupPointOrderByIdLoc takes group whichGroup, integer order, location whichLocation returns booleany-OGroupTargetOrdernative GroupTargetOrder takes group whichGroup, string order, widget targetWidget returns boolean5YGroupTargetOrderByIdnative GroupTargetOrderById takes group whichGroup, integer order, widget targetWidget returns booleanUForGroupnative ForGroup takes group whichGroup, code callback returns nothingJ%{FirstOfGroupnative FirstOfGroup takes group whichGroup returns unit@#iCreateForcenative CreateForce takes nothing returns forceN %DestroyForcenative DestroyForce takes force whichForce returns nothingf!)-ForceAddPlayernative ForceAddPlayer takes force whichForce, player whichPlayer returns nothing NN½ s|úRªl"/3ForceRemovePlayernative ForceRemovePlayer takes force whichForce, player whichPlayer returns nothingI#!}ForceClearnative ForceClear takes force whichForce returns nothingg$-+ForceEnumPlayersnative ForceEnumPlayers takes force whichForce, boolexpr filter returns nothing %;aForceEnumPlayersCountednative ForceEnumPlayersCounted takes force whichForce, boolexpr filter, integer countLimit returns nothingy&+QForceEnumAlliesnative ForceEnumAllies takes force whichForce, player whichPlayer, boolexpr filter returns nothing{'-SForceEnumEnemiesnative ForceEnumEnemies takes force whichForce, player whichPlayer, boolexpr filter returns nothingU(ForForcenative ForForce takes force whichForce, code callback returns nothingU)Rectnative Rect takes real minx, real miny, real maxx, real maxy returns rectS*# RectFromLocnative RectFromLoc takes location min, location max returns rect ˆˆÒC²‡Ö%n·G+!yRemoveRectnative RemoveRect takes rect whichRect returns nothingn,KSetRectnative SetRect takes rect whichRect, real minx, real miny, real maxx, real maxy returns nothingl-)9SetRectFromLocnative SetRectFromLoc takes rect whichRect, location min, location max returns nothingj.!=MoveRectTonative MoveRectTo takes rect whichRect, real newCenterX, real newCenterY returns nothinge/'-MoveRectToLocnative MoveRectToLoc takes rect whichRect, location newCenterLoc returns nothingL0){GetRectCenterXnative GetRectCenterX takes rect whichRect returns realL1){GetRectCenterYnative GetRectCenterY takes rect whichRect returns realF2#uGetRectMinXnative GetRectMinX takes rect whichRect returns realF3#uGetRectMinYnative GetRectMinY takes rect whichRect returns realF4#uGetRectMaxXnative GetRectMaxX takes rect whichRect returns real   é/‚ß@¥…F5#uGetRectMaxYnative GetRectMaxY takes rect whichRect returns realC6%mCreateRegionnative CreateRegion takes nothing returns regionP7%RemoveRegionnative RemoveRegion takes region whichRegion returns nothingZ8'RegionAddRectnative RegionAddRect takes region whichRegion, rect r returns nothing^9+RegionClearRectnative RegionClearRect takes region whichRegion, rect r returns nothingb:''RegionAddCellnative RegionAddCell takes region whichRegion, real x, real y returns nothingt;1ARegionAddCellAtLocnative RegionAddCellAtLoc takes region whichRegion, location whichLocation returns nothingf<++RegionClearCellnative RegionClearCell takes region whichRegion, real x, real y returns nothingx=5ERegionClearCellAtLocnative RegionClearCellAtLoc takes region whichRegion, location whichLocation returns nothing ff­uÉqØA¸D>wLocationnative Location takes real x, real y returns locationX?)RemoveLocationnative RemoveLocation takes location whichLocation returns nothingj@%9MoveLocationnative MoveLocation takes location whichLocation, real newX, real newY returns nothingQA%GetLocationXnative GetLocationX takes location whichLocation returns realQB%GetLocationYnative GetLocationY takes location whichLocation returns realQC%GetLocationZnative GetLocationZ takes location whichLocation returns realdD))IsUnitInRegionnative IsUnitInRegion takes region whichRegion, unit whichUnit returns booleanfE++IsPointInRegionnative IsPointInRegion takes region whichRegion, real x, real y returns booleantF1AIsLocationInRegionnative IsLocationInRegion takes region whichRegion, location whichLocation returns booleanEG)mGetWorldBoundsnative GetWorldBounds takes nothing returns rect ""kÄpÉ&—þM˜FH'qCreateTriggernative CreateTrigger takes nothing returns triggerVI) DestroyTriggernative DestroyTrigger takes trigger whichTrigger returns nothingRJ% ResetTriggernative ResetTrigger takes trigger whichTrigger returns nothingTK' EnableTriggernative EnableTrigger takes trigger whichTrigger returns nothingVL) DisableTriggernative DisableTrigger takes trigger whichTrigger returns nothingZM-IsTriggerEnablednative IsTriggerEnabled takes trigger whichTrigger returns booleannN33TriggerWaitOnSleepsnative TriggerWaitOnSleeps takes trigger whichTrigger, boolean flag returns nothingdO7IsTriggerWaitOnSleepsnative IsTriggerWaitOnSleeps takes trigger whichTrigger returns booleanLP'}GetFilterUnitconstant native GetFilterUnit takes nothing returns unitHQ#yGetEnumUnitconstant native GetEnumUnit takes nothing returns uniteR7GetFilterDestructableconstant native GetFilterDestructable takes nothing returns destructable %%‰Ø#yË,‡ó_¬aS3GetEnumDestructableconstant native GetEnumDestructable takes nothing returns destructableLT'}GetFilterItemconstant native GetFilterItem takes nothing returns itemHU#yGetEnumItemconstant native GetEnumItem takes nothing returns itemSV+GetFilterPlayerconstant native GetFilterPlayer takes nothing returns playerOW'GetEnumPlayerconstant native GetEnumPlayer takes nothing returns player^X5GetTriggeringTriggerconstant native GetTriggeringTrigger takes nothing returns triggerXY/ GetTriggerEventIdconstant native GetTriggerEventId takes nothing returns eventidiZ3)GetTriggerEvalCountconstant native GetTriggerEvalCount takes trigger whichTrigger returns integeri[3)GetTriggerExecCountconstant native GetTriggerExecCount takes trigger whichTrigger returns integerJ\#}ExecuteFuncnative ExecuteFunc takes string funcName returns nothingQ]Andnative And takes boolexpr operandA, boolexpr operandB returns boolexpr ==Îo¯ýMð~O^Ornative Or takes boolexpr operandA, boolexpr operandB returns boolexpr<_qNotnative Not takes boolexpr operand returns boolexprF`yConditionnative Condition takes code func returns conditionfuncUa-DestroyConditionnative DestroyCondition takes conditionfunc c returns nothing=bmFilternative Filter takes code func returns filterfuncKc'{DestroyFilternative DestroyFilter takes filterfunc f returns nothingMd+{DestroyBoolExprnative DestroyBoolExpr takes boolexpr e returns nothingeE‚TriggerRegisterVariableEventnative TriggerRegisterVariableEvent takes trigger whichTrigger, string varName, limitop opcode, real limitval returns event f?_TriggerRegisterTimerEventnative TriggerRegisterTimerEvent takes trigger whichTrigger, real timeout, boolean periodic returns eventgK=TriggerRegisterTimerExpireEventnative TriggerRegisterTimerExpireEvent takes trigger whichTrigger, timer t returns event qq 0k'hG‚TriggerRegisterGameStateEventnative TriggerRegisterGameStateEvent takes trigger whichTrigger, gamestate whichState, limitop opcode, real limitval returns eventiAITriggerRegisterDialogEventnative TriggerRegisterDialogEvent takes trigger whichTrigger, dialog whichDialog returns event jMUTriggerRegisterDialogButtonEventnative TriggerRegisterDialogButtonEvent takes trigger whichTrigger, button whichButton returns eventZk/GetEventGameStateconstant native GetEventGameState takes nothing returns gamestatel=QTriggerRegisterGameEventnative TriggerRegisterGameEvent takes trigger whichTrigger, gameevent whichGameEvent returns eventUm-GetWinningPlayerconstant native GetWinningPlayer takes nothing returns playernAkTriggerRegisterEnterRegionnative TriggerRegisterEnterRegion takes trigger whichTrigger, region whichRegion, boolexpr filter returns event ;;™í‚Ó\éP¨[o3 GetTriggeringRegionconstant native GetTriggeringRegion takes nothing returns regionQp+GetEnteringUnitconstant native GetEnteringUnit takes nothing returns unitqAkTriggerRegisterLeaveRegionnative TriggerRegisterLeaveRegion takes trigger whichTrigger, region whichRegion, boolexpr filter returns eventNr)GetLeavingUnitconstant native GetLeavingUnit takes nothing returns unitsMGTriggerRegisterTrackableHitEventnative TriggerRegisterTrackableHitEvent takes trigger whichTrigger, trackable t returns event tQKTriggerRegisterTrackableTrackEventnative TriggerRegisterTrackableTrackEvent takes trigger whichTrigger, trackable t returns eventdu9GetTriggeringTrackableconstant native GetTriggeringTrackable takes nothing returns trackableUv-GetClickedButtonconstant native GetClickedButton takes nothing returns buttonUw-GetClickedDialogconstant native GetClickedDialog takes nothing returns dialog  ž {ãCå={xU+GetTournamentFinishSoonTimeRemainingconstant native GetTournamentFinishSoonTimeRemaining takes nothing returns realjyAGetTournamentFinishNowRuleconstant native GetTournamentFinishNowRule takes nothing returns integermzEGetTournamentFinishNowPlayerconstant native GetTournamentFinishNowPlayer takes nothing returns playere{1#GetTournamentScoreconstant native GetTournamentScore takes player whichPlayer returns integer]|5GetSaveBasicFilenameconstant native GetSaveBasicFilename takes nothing returns string}A‚TriggerRegisterPlayerEventnative TriggerRegisterPlayerEvent takes trigger whichTrigger, player whichPlayer, playerevent whichPlayerEvent returns eventU~-GetTriggerPlayerconstant native GetTriggerPlayer takes nothing returns player?I‚?TriggerRegisterPlayerUnitEventnative TriggerRegisterPlayerUnitEvent takes trigger whichTrigger, player whichPlayer, playerunitevent whichPlayerUnitEvent, boolexpr filter returns event ppÄoÐ&zÅ[¬Q‚+GetLevelingUnitconstant native GetLevelingUnit takes nothing returns unitQ‚+GetLearningUnitconstant native GetLearningUnit takes nothing returns unitT‚+GetLearnedSkillconstant native GetLearnedSkill takes nothing returns integer^‚5GetLearnedSkillLevelconstant native GetLearnedSkillLevel takes nothing returns integerS‚-GetRevivableUnitconstant native GetRevivableUnit takes nothing returns unitQ‚+GetRevivingUnitconstant native GetRevivingUnit takes nothing returns unitH‚#yGetAttackerconstant native GetAttacker takes nothing returns unitF‚!wGetRescuerconstant native GetRescuer takes nothing returns unitJ‚%{GetDyingUnitconstant native GetDyingUnit takes nothing returns unitN‚ )GetKillingUnitconstant native GetKillingUnit takes nothing returns unitQ‚ +GetDecayingUnitconstant native GetDecayingUnit takes nothing returns unit ''íQ«þ[¬Vªc‚ =GetConstructingStructureconstant native GetConstructingStructure takes nothing returns unit]‚ 7 GetCancelledStructureconstant native GetCancelledStructure takes nothing returns unita‚ ;GetConstructedStructureconstant native GetConstructedStructure takes nothing returns unitW‚1GetResearchingUnitconstant native GetResearchingUnit takes nothing returns unitP‚'GetResearchedconstant native GetResearched takes nothing returns integerZ‚1 GetTrainedUnitTypeconstant native GetTrainedUnitType takes nothing returns integerN‚)GetTrainedUnitconstant native GetTrainedUnit takes nothing returns unitQ‚+GetDetectedUnitconstant native GetDetectedUnit takes nothing returns unitS‚-GetSummoningUnitconstant native GetSummoningUnit takes nothing returns unitQ‚+GetSummonedUnitconstant native GetSummonedUnit takes nothing returns unitS‚-GetTransportUnitconstant native GetTransportUnit takes nothing returns unit __®ÿJ™ä8 üV§L‚'}GetLoadedUnitconstant native GetLoadedUnit takes nothing returns unitN‚)GetSellingUnitconstant native GetSellingUnit takes nothing returns unitH‚#yGetSoldUnitconstant native GetSoldUnit takes nothing returns unitL‚'}GetBuyingUnitconstant native GetBuyingUnit takes nothing returns unitH‚#yGetSoldItemconstant native GetSoldItem takes nothing returns itemQ‚+GetChangingUnitconstant native GetChangingUnit takes nothing returns unite‚=GetChangingUnitPrevOwnerconstant native GetChangingUnitPrevOwner takes nothing returns playerY‚3 GetManipulatingUnitconstant native GetManipulatingUnit takes nothing returns unitW‚1GetManipulatedItemconstant native GetManipulatedItem takes nothing returns itemN‚)GetOrderedUnitconstant native GetOrderedUnit takes nothing returns unitV‚ - GetIssuedOrderIdconstant native GetIssuedOrderId takes nothing returns integer qÂpâ<–òM¤N‚!)GetOrderPointXconstant native GetOrderPointX takes nothing returns realN‚")GetOrderPointYconstant native GetOrderPointY takes nothing returns realW‚#- GetOrderPointLocconstant native GetOrderPointLoc takes nothing returns locationQ‚$)GetOrderTargetconstant native GetOrderTarget takes nothing returns widgeto‚%A'GetOrderTargetDestructableconstant native GetOrderTargetDestructable takes nothing returns destructableW‚&1GetOrderTargetItemconstant native GetOrderTargetItem takes nothing returns itemW‚'1GetOrderTargetUnitconstant native GetOrderTargetUnit takes nothing returns unitY‚(3 GetSpellAbilityUnitconstant native GetSpellAbilityUnit takes nothing returns unitX‚)/ GetSpellAbilityIdconstant native GetSpellAbilityId takes nothing returns integerT‚*+GetSpellAbilityconstant native GetSpellAbility takes nothing returns abilityY‚+/ GetSpellTargetLocconstant native GetSpellTargetLoc takes nothing returns location @@² fÝ@o‚,A'GetSpellTargetDestructableconstant native GetSpellTargetDestructable takes nothing returns destructableW‚-1GetSpellTargetItemconstant native GetSpellTargetItem takes nothing returns itemW‚.1GetSpellTargetUnitconstant native GetSpellTargetUnit takes nothing returns unit.‚/S‚TriggerRegisterPlayerAllianceChangenative TriggerRegisterPlayerAllianceChange takes trigger whichTrigger, player whichPlayer, alliancetype whichAlliance returns eventA‚0K‚ATriggerRegisterPlayerStateEventnative TriggerRegisterPlayerStateEvent takes trigger whichTrigger, player whichPlayer, playerstate whichState, limitop opcode, real limitval returns event`‚13GetEventPlayerStateconstant native GetEventPlayerState takes nothing returns playerstate<‚2I‚9TriggerRegisterPlayerChatEventnative TriggerRegisterPlayerChatEvent takes trigger whichTrigger, player whichPlayer, string chatMessageToDetect, boolean exactMatchOnly returns event UU½3´À¯e‚3=GetEventPlayerChatStringconstant native GetEventPlayerChatString takes nothing returns strings‚4K%GetEventPlayerChatStringMatchedconstant native GetEventPlayerChatStringMatched takes nothing returns string~‚5?GTriggerRegisterDeathEventnative TriggerRegisterDeathEvent takes trigger whichTrigger, widget whichWidget returns eventN‚6)GetTriggerUnitconstant native GetTriggerUnit takes nothing returns unit7‚7G‚1TriggerRegisterUnitStateEventnative TriggerRegisterUnitStateEvent takes trigger whichTrigger, unit whichUnit, unitstate whichState, limitop opcode, real limitval returns eventZ‚8/GetEventUnitStateconstant native GetEventUnitState takes nothing returns unitstate‚9=iTriggerRegisterUnitEventnative TriggerRegisterUnitEvent takes trigger whichTrigger, unit whichUnit, unitevent whichEvent returns eventN‚:)GetEventDamageconstant native GetEventDamage takes nothing returns real ""€æ•ïŒ —[‚;5 GetEventDamageSourceconstant native GetEventDamageSource takes nothing returns unitc‚<;GetEventDetectingPlayerconstant native GetEventDetectingPlayer takes nothing returns player+‚=I‚TriggerRegisterFilterUnitEventnative TriggerRegisterFilterUnitEvent takes trigger whichTrigger, unit whichUnit, unitevent whichEvent, boolexpr filter returns eventW‚>1GetEventTargetUnitconstant native GetEventTargetUnit takes nothing returns unit‚?A{TriggerRegisterUnitInRangenative TriggerRegisterUnitInRange takes trigger whichTrigger, unit whichUnit, real range, boolexpr filter returns event}‚@3QTriggerAddConditionnative TriggerAddCondition takes trigger whichTrigger, boolexpr condition returns triggercondition‚A9_TriggerRemoveConditionnative TriggerRemoveCondition takes trigger whichTrigger, triggercondition whichCondition returns nothingf‚B9TriggerClearConditionsnative TriggerClearConditions takes trigger whichTrigger returns nothing <<°.‘êM¨b±q‚C-?TriggerAddActionnative TriggerAddAction takes trigger whichTrigger, code actionFunc returns triggeraction{‚D3MTriggerRemoveActionnative TriggerRemoveAction takes trigger whichTrigger, triggeraction whichAction returns nothing`‚E3TriggerClearActionsnative TriggerClearActions takes trigger whichTrigger returns nothingV‚F1TriggerSleepActionnative TriggerSleepAction takes real timeout returns nothing`‚G3TriggerWaitForSoundnative TriggerWaitForSound takes sound s, real offset returns nothingX‚H+TriggerEvaluatenative TriggerEvaluate takes trigger whichTrigger returns booleanV‚I) TriggerExecutenative TriggerExecute takes trigger whichTrigger returns nothing^‚J1TriggerExecuteWaitnative TriggerExecuteWait takes trigger whichTrigger returns nothingL‚K-wTriggerSyncStartnative TriggerSyncStart takes nothing returns nothingL‚L-wTriggerSyncReadynative TriggerSyncReady takes nothing returns nothing ttÆ)t¿´[O‚M'GetWidgetLifenative GetWidgetLife takes widget whichWidget returns real`‚N'#SetWidgetLifenative SetWidgetLife takes widget whichWidget, real newLife returns nothingH‚O!{GetWidgetXnative GetWidgetX takes widget whichWidget returns realH‚P!{GetWidgetYnative GetWidgetY takes widget whichWidget returns realU‚Q-GetTriggerWidgetconstant native GetTriggerWidget takes nothing returns widget‚R1‚ CreateDestructablenative CreateDestructable takes integer objectid, real x, real y, real face, real scale, integer variation returns destructable#‚S3‚CreateDestructableZnative CreateDestructableZ takes integer objectid, real x, real y, real z, real face, real scale, integer variation returns destructable!‚T9‚CreateDeadDestructablenative CreateDeadDestructable takes integer objectid, real x, real y, real face, real scale, integer variation returns destructable ††5çbÍL­+‚U;‚%CreateDeadDestructableZnative CreateDeadDestructableZ takes integer objectid, real x, real y, real z, real face, real scale, integer variation returns destructableX‚V1 RemoveDestructablenative RemoveDestructable takes destructable d returns nothingT‚W-KillDestructablenative KillDestructable takes destructable d returns nothingx‚XC7SetDestructableInvulnerablenative SetDestructableInvulnerable takes destructable d, boolean flag returns nothingh‚YAIsDestructableInvulnerablenative IsDestructableInvulnerable takes destructable d returns boolean|‚Z;GEnumDestructablesInRectnative EnumDestructablesInRect takes rect r, boolexpr filter, code actionFunc returns nothing^‚[7GetDestructableTypeIdnative GetDestructableTypeId takes destructable d returns integerP‚\-GetDestructableXnative GetDestructableX takes destructable d returns real nÖ0ý|þ|P‚]-GetDestructableYnative GetDestructableY takes destructable d returns reale‚^3!SetDestructableLifenative SetDestructableLife takes destructable d, real life returns nothingW‚_3GetDestructableLifenative GetDestructableLife takes destructable d returns realj‚`9%SetDestructableMaxLifenative SetDestructableMaxLife takes destructable d, real max returns nothing]‚a9 GetDestructableMaxLifenative GetDestructableMaxLife takes destructable d returns real|‚b;GDestructableRestoreLifenative DestructableRestoreLife takes destructable d, real life, boolean birth returns nothing‚cAGQueueDestructableAnimationnative QueueDestructableAnimation takes destructable d, string whichAnimation returns nothing{‚d=CSetDestructableAnimationnative SetDestructableAnimation takes destructable d, string whichAnimation returns nothing‚eGCSetDestructableAnimationSpeednative SetDestructableAnimationSpeed takes destructable d, real speedFactor returns nothing GG¬˜ôL–å-h£b‚f-!ShowDestructablenative ShowDestructable takes destructable d, boolean flag returns nothingk‚gGGetDestructableOccluderHeightnative GetDestructableOccluderHeight takes destructable d returns real{‚hG9SetDestructableOccluderHeightnative SetDestructableOccluderHeight takes destructable d, real height returns nothingY‚i3 GetDestructableNamenative GetDestructableName takes destructable d returns stringU‚j!CreateItemnative CreateItem takes integer itemid, real x, real y returns itemG‚k!yRemoveItemnative RemoveItem takes item whichItem returns nothingL‚l'}GetItemPlayernative GetItemPlayer takes item whichItem returns playerE‚m'oGetItemTypeIdnative GetItemTypeId takes item i returns integer8‚n_GetItemXnative GetItemX takes item i returns real8‚o_GetItemYnative GetItemY takes item i returns realZ‚p+SetItemPositionnative SetItemPosition takes item i, real x, real y returns nothing RR»síX³d°f‚q1%SetItemDropOnDeathnative SetItemDropOnDeath takes item whichItem, boolean flag returns nothingZ‚r-SetItemDroppablenative SetItemDroppable takes item i, boolean flag returns nothingX‚s+SetItemPawnablenative SetItemPawnable takes item i, boolean flag returns nothingw‚t'QSetItemPlayernative SetItemPlayer takes item whichItem, player whichPlayer, boolean changeColor returns nothingh‚u3'SetItemInvulnerablenative SetItemInvulnerable takes item whichItem, boolean flag returns nothingX‚v1 IsItemInvulnerablenative IsItemInvulnerable takes item whichItem returns boolean^‚w)SetItemVisiblenative SetItemVisible takes item whichItem, boolean show returns nothingM‚x'IsItemVisiblenative IsItemVisible takes item whichItem returns booleanI‚y#{IsItemOwnednative IsItemOwned takes item whichItem returns booleanM‚z'IsItemPowerupnative IsItemPowerup takes item whichItem returns boolean DD—ê?–í\ª÷X­P‚{)IsItemSellablenative IsItemSellable takes item whichItem returns booleanP‚|)IsItemPawnablenative IsItemPawnable takes item whichItem returns booleanR‚}+IsItemIdPowerupnative IsItemIdPowerup takes integer itemId returns booleanT‚~-IsItemIdSellablenative IsItemIdSellable takes integer itemId returns booleanT‚-IsItemIdPawnablenative IsItemIdPawnable takes integer itemId returns booleanlƒ+7EnumItemsInRectnative EnumItemsInRect takes rect r, boolexpr filter, code actionFunc returns nothingKƒ%}GetItemLevelnative GetItemLevel takes item whichItem returns integerJƒ#}GetItemTypenative GetItemType takes item whichItem returns itemtype^ƒ'SetItemDropIDnative SetItemDropID takes item whichItem, integer unitId returns nothingRƒ# GetItemNameconstant native GetItemName takes item whichItem returns stringPƒ)GetItemChargesnative GetItemCharges takes item whichItem returns integer ""†Û>¬1±?ºaƒ)#SetItemChargesnative SetItemCharges takes item whichItem, integer charges returns nothingRƒ+GetItemUserDatanative GetItemUserData takes item whichItem returns integer`ƒ+SetItemUserDatanative SetItemUserData takes item whichItem, integer data returns nothingkƒ !?CreateUnitnative CreateUnit takes player id, integer unitid, real x, real y, real face returns unitƒ -_CreateUnitByNamenative CreateUnitByName takes player whichPlayer, string unitname, real x, real y, real face returns unit}ƒ +YCreateUnitAtLocnative CreateUnitAtLoc takes player id, integer unitid, location whichLocation, real face returns unit ƒ 7gCreateUnitAtLocByNamenative CreateUnitAtLocByName takes player id, string unitname, location whichLocation, real face returns unitxƒ %UCreateCorpsenative CreateCorpse takes player whichPlayer, integer unitid, real x, real y, real face returns unitCƒuKillUnitnative KillUnit takes unit whichUnit returns nothing $$nÃ9‹ÝH»šGƒ!yRemoveUnitnative RemoveUnit takes unit whichUnit returns nothingRƒShowUnitnative ShowUnit takes unit whichUnit, boolean show returns nothingsƒ%KSetUnitStatenative SetUnitState takes unit whichUnit, unitstate whichUnitState, real newVal returns nothingOƒ SetUnitXnative SetUnitX takes unit whichUnit, real newX returns nothingOƒ SetUnitYnative SetUnitY takes unit whichUnit, real newY returns nothinghƒ+/SetUnitPositionnative SetUnitPosition takes unit whichUnit, real newX, real newY returns nothingpƒ19SetUnitPositionLocnative SetUnitPositionLoc takes unit whichUnit, location whichLocation returns nothing`ƒ'#SetUnitFacingnative SetUnitFacing takes unit whichUnit, real facingAngle returns nothingyƒ1KSetUnitFacingTimednative SetUnitFacingTimed takes unit whichUnit, real facingAngle, real duration returns nothingcƒ-#SetUnitMoveSpeednative SetUnitMoveSpeed takes unit whichUnit, real newSpeed returns nothing ||îXÊ=ªW­oƒ-;SetUnitFlyHeightnative SetUnitFlyHeight takes unit whichUnit, real newHeight, real rate returns nothinggƒ-+SetUnitTurnSpeednative SetUnitTurnSpeed takes unit whichUnit, real newTurnSpeed returns nothingoƒ/9SetUnitPropWindownative SetUnitPropWindow takes unit whichUnit, real newPropWindowAngle returns nothingpƒ37SetUnitAcquireRangenative SetUnitAcquireRange takes unit whichUnit, real newAcquireRange returns nothingjƒ//SetUnitCreepGuardnative SetUnitCreepGuard takes unit whichUnit, boolean creepGuard returns nothingWƒ3GetUnitAcquireRangenative GetUnitAcquireRange takes unit whichUnit returns realPƒ-GetUnitTurnSpeednative GetUnitTurnSpeed takes unit whichUnit returns realSƒ /GetUnitPropWindownative GetUnitPropWindow takes unit whichUnit returns realPƒ!-GetUnitFlyHeightnative GetUnitFlyHeight takes unit whichUnit returns real MMµ{ÝU¼2™eƒ"AGetUnitDefaultAcquireRangenative GetUnitDefaultAcquireRange takes unit whichUnit returns real_ƒ#; GetUnitDefaultTurnSpeednative GetUnitDefaultTurnSpeed takes unit whichUnit returns realaƒ$=GetUnitDefaultPropWindownative GetUnitDefaultPropWindow takes unit whichUnit returns real_ƒ%; GetUnitDefaultFlyHeightnative GetUnitDefaultFlyHeight takes unit whichUnit returns realuƒ&%OSetUnitOwnernative SetUnitOwner takes unit whichUnit, player whichPlayer, boolean changeColor returns nothingdƒ'%-SetUnitColornative SetUnitColor takes unit whichUnit, playercolor whichColor returns nothingsƒ(%KSetUnitScalenative SetUnitScale takes unit whichUnit, real scaleX, real scaleY, real scaleZ returns nothingdƒ)-%SetUnitTimeScalenative SetUnitTimeScale takes unit whichUnit, real timeScale returns nothingdƒ*-%SetUnitBlendTimenative SetUnitBlendTime takes unit whichUnit, real blendTime returns nothing DDÙK¹6Ï_ƒ+1{SetUnitVertexColornative SetUnitVertexColor takes unit whichUnit, integer red, integer green, integer blue, integer alpha returns nothingoƒ,17QueueUnitAnimationnative QueueUnitAnimation takes unit whichUnit, string whichAnimation returns nothingkƒ--3SetUnitAnimationnative SetUnitAnimation takes unit whichUnit, string whichAnimation returns nothingzƒ.;CSetUnitAnimationByIndexnative SetUnitAnimationByIndex takes unit whichUnit, integer whichAnimation returns nothingƒ/AsSetUnitAnimationWithRaritynative SetUnitAnimationWithRarity takes unit whichUnit, string whichAnimation, raritycontrol rarity returns nothing ƒ0AaAddUnitAnimationPropertiesnative AddUnitAnimationProperties takes unit whichUnit, string animProperties, boolean add returns nothingƒ1'‚SetUnitLookAtnative SetUnitLookAt takes unit whichUnit, string whichBone, unit lookAtTarget, real offsetX, real offsetY, real offsetZ returns nothing VV«&ûi×:Rƒ2+ResetUnitLookAtnative ResetUnitLookAt takes unit whichUnit returns nothingxƒ3-MSetUnitRescuablenative SetUnitRescuable takes unit whichUnit, player byWhichPlayer, boolean flag returns nothingdƒ41!SetUnitRescueRangenative SetUnitRescueRange takes unit whichUnit, real range returns nothingkƒ5!?SetHeroStrnative SetHeroStr takes unit whichHero, integer newStr, boolean permanent returns nothingkƒ6!?SetHeroAginative SetHeroAgi takes unit whichHero, integer newAgi, boolean permanent returns nothingkƒ7!?SetHeroIntnative SetHeroInt takes unit whichHero, integer newInt, boolean permanent returns nothing`ƒ8!)GetHeroStrnative GetHeroStr takes unit whichHero, boolean includeBonuses returns integer`ƒ9!)GetHeroAginative GetHeroAgi takes unit whichHero, boolean includeBonuses returns integer`ƒ:!)GetHeroIntnative GetHeroInt takes unit whichHero, boolean includeBonuses returns integer llÞ&—òlÜP¨oƒ;17UnitStripHeroLevelnative UnitStripHeroLevel takes unit whichHero, integer howManyLevels returns booleanEƒ<wGetHeroXPnative GetHeroXP takes unit whichHero returns integernƒ=GSetHeroXPnative SetHeroXP takes unit whichHero, integer newXpVal, boolean showEyeCandy returns nothingXƒ>1 GetHeroSkillPointsnative GetHeroSkillPoints takes unit whichHero returns integerwƒ?7AUnitModifySkillPointsnative UnitModifySkillPoints takes unit whichHero, integer skillPointDelta returns booleanmƒ@EAddHeroXPnative AddHeroXP takes unit whichHero, integer xpToAdd, boolean showEyeCandy returns nothingqƒA%GSetHeroLevelnative SetHeroLevel takes unit whichHero, integer level, boolean showEyeCandy returns nothingUƒB%GetHeroLevelconstant native GetHeroLevel takes unit whichHero returns integerUƒC%GetUnitLevelconstant native GetUnitLevel takes unit whichUnit returns integer XX°_Æ5¤‘UƒD/GetHeroProperNamenative GetHeroProperName takes unit whichHero returns string\ƒE'SuspendHeroXPnative SuspendHeroXP takes unit whichHero, boolean flag returns nothingMƒF'IsSuspendedXPnative IsSuspendedXP takes unit whichHero returns booleandƒG+'SelectHeroSkillnative SelectHeroSkill takes unit whichHero, integer abilcode returns nothinglƒH3/GetUnitAbilityLevelnative GetUnitAbilityLevel takes unit whichUnit, integer abilcode returns integerlƒI3/DecUnitAbilityLevelnative DecUnitAbilityLevel takes unit whichUnit, integer abilcode returns integerlƒJ3/IncUnitAbilityLevelnative IncUnitAbilityLevel takes unit whichUnit, integer abilcode returns integer{ƒK3MSetUnitAbilityLevelnative SetUnitAbilityLevel takes unit whichUnit, integer abilcode, integer level returns integerlƒL!AReviveHeronative ReviveHero takes unit whichHero, real x, real y, boolean doEyecandy returns boolean QQÄ+–í;œç@™pƒM'CReviveHeroLocnative ReviveHeroLoc takes unit whichHero, location loc, boolean doEyecandy returns booleandƒN+'SetUnitExplodednative SetUnitExploded takes unit whichUnit, boolean exploded returns nothinghƒO3'SetUnitInvulnerablenative SetUnitInvulnerable takes unit whichUnit, boolean flag returns nothingTƒPPauseUnitnative PauseUnit takes unit whichUnit, boolean flag returns nothingKƒQ%}IsUnitPausednative IsUnitPaused takes unit whichHero returns boolean^ƒR)SetUnitPathingnative SetUnitPathing takes unit whichUnit, boolean flag returns nothingHƒS)sClearSelectionnative ClearSelection takes nothing returns nothingVƒT!SelectUnitnative SelectUnit takes unit whichUnit, boolean flag returns nothingVƒU/GetUnitPointValuenative GetUnitPointValue takes unit whichUnit returns integerdƒV;GetUnitPointValueByTypenative GetUnitPointValueByType takes integer unitType returns integer WW´šýoÌ.‡ZƒW#UnitAddItemnative UnitAddItem takes unit whichUnit, item whichItem returns boolean_ƒX+UnitAddItemByIdnative UnitAddItemById takes unit whichUnit, integer itemId returns itemƒY7SUnitAddItemToSlotByIdnative UnitAddItemToSlotById takes unit whichUnit, integer itemId, integer itemSlot returns boolean`ƒZ)!UnitRemoveItemnative UnitRemoveItem takes unit whichUnit, item whichItem returns nothingoƒ[9/UnitRemoveItemFromSlotnative UnitRemoveItemFromSlot takes unit whichUnit, integer itemSlot returns itemZƒ\#UnitHasItemnative UnitHasItem takes unit whichUnit, item whichItem returns boolean_ƒ])UnitItemInSlotnative UnitItemInSlot takes unit whichUnit, integer itemSlot returns itemVƒ^/UnitInventorySizenative UnitInventorySize takes unit whichUnit returns integervƒ_/GUnitDropItemPointnative UnitDropItemPoint takes unit whichUnit, item whichItem, real x, real y returns boolean ""—nå]ª÷L£rƒ`-AUnitDropItemSlotnative UnitDropItemSlot takes unit whichUnit, item whichItem, integer slot returns booleanwƒa1GUnitDropItemTargetnative UnitDropItemTarget takes unit whichUnit, item whichItem, widget target returns booleanZƒb#UnitUseItemnative UnitUseItem takes unit whichUnit, item whichItem returns booleantƒc-EUnitUseItemPointnative UnitUseItemPoint takes unit whichUnit, item whichItem, real x, real y returns booleanuƒd/EUnitUseItemTargetnative UnitUseItemTarget takes unit whichUnit, item whichItem, widget target returns booleanJƒeGetUnitXconstant native GetUnitX takes unit whichUnit returns realJƒfGetUnitYconstant native GetUnitY takes unit whichUnit returns realRƒg! GetUnitLocconstant native GetUnitLoc takes unit whichUnit returns locationTƒh' GetUnitFacingconstant native GetUnitFacing takes unit whichUnit returns realZƒi-GetUnitMoveSpeedconstant native GetUnitMoveSpeed takes unit whichUnit returns real __Ê9–ðC˜öTªhƒj;GetUnitDefaultMoveSpeedconstant native GetUnitDefaultMoveSpeed takes unit whichUnit returns reallƒk%=GetUnitStateconstant native GetUnitState takes unit whichUnit, unitstate whichUnitState returns realZƒl+GetOwningPlayerconstant native GetOwningPlayer takes unit whichUnit returns playerWƒm'GetUnitTypeIdconstant native GetUnitTypeId takes unit whichUnit returns integerPƒn#GetUnitRaceconstant native GetUnitRace takes unit whichUnit returns raceRƒo# GetUnitNameconstant native GetUnitName takes unit whichUnit returns string[ƒp+GetUnitFoodUsedconstant native GetUnitFoodUsed takes unit whichUnit returns integer[ƒq+GetUnitFoodMadeconstant native GetUnitFoodMade takes unit whichUnit returns integerSƒr# GetFoodMadeconstant native GetFoodMade takes integer unitId returns integerSƒs# GetFoodUsedconstant native GetFoodUsed takes integer unitId returns integer CC§ gÜH´.–aƒt)#SetUnitUseFoodnative SetUnitUseFood takes unit whichUnit, boolean useFood returns nothing`ƒu/GetUnitRallyPointconstant native GetUnitRallyPoint takes unit whichUnit returns locationZƒv-GetUnitRallyUnitconstant native GetUnitRallyUnit takes unit whichUnit returns unitrƒw=1GetUnitRallyDestructableconstant native GetUnitRallyDestructable takes unit whichUnit returns destructableiƒx'5IsUnitInGroupconstant native IsUnitInGroup takes unit whichUnit, group whichGroup returns booleaniƒy'5IsUnitInForceconstant native IsUnitInForce takes unit whichUnit, force whichForce returns booleanwƒz3EIsUnitOwnedByPlayerconstant native IsUnitOwnedByPlayer takes unit whichUnit, player whichPlayer returns booleaneƒ{!3IsUnitAllyconstant native IsUnitAlly takes unit whichUnit, player whichPlayer returns booleangƒ|#5IsUnitEnemyconstant native IsUnitEnemy takes unit whichUnit, player whichPlayer returns boolean 33¡ƒï[Ë/›kƒ}'9IsUnitVisibleconstant native IsUnitVisible takes unit whichUnit, player whichPlayer returns booleanmƒ~);IsUnitDetectedconstant native IsUnitDetected takes unit whichUnit, player whichPlayer returns booleanoƒ+=IsUnitInvisibleconstant native IsUnitInvisible takes unit whichUnit, player whichPlayer returns booleani„%7IsUnitFoggedconstant native IsUnitFogged takes unit whichUnit, player whichPlayer returns booleani„%7IsUnitMaskedconstant native IsUnitMasked takes unit whichUnit, player whichPlayer returns booleanm„);IsUnitSelectedconstant native IsUnitSelected takes unit whichUnit, player whichPlayer returns booleana„!+IsUnitRaceconstant native IsUnitRace takes unit whichUnit, race whichRace returns booleani„!;IsUnitTypeconstant native IsUnitType takes unit whichUnit, unittype whichUnitType returns booleanb„5IsUnitconstant native IsUnit takes unit whichUnit, unit whichSpecifiedUnit returns boolean 77°-µ ià8v„'OIsUnitInRangeconstant native IsUnitInRange takes unit whichUnit, unit otherUnit, real distance returns booleanz„+SIsUnitInRangeXYconstant native IsUnitInRangeXY takes unit whichUnit, real x, real y, real distance returns boolean„-eIsUnitInRangeLocconstant native IsUnitInRangeLoc takes unit whichUnit, location whichLocation, real distance returns booleanU„ %IsUnitHiddenconstant native IsUnitHidden takes unit whichUnit returns booleanY„ )IsUnitIllusionconstant native IsUnitIllusion takes unit whichUnit returns booleant„ /CIsUnitInTransportconstant native IsUnitInTransport takes unit whichUnit, unit whichTransport returns booleanU„ %IsUnitLoadedconstant native IsUnitLoaded takes unit whichUnit returns booleanU„ %IsHeroUnitIdconstant native IsHeroUnitId takes integer unitId returns booleanm„%?IsUnitIdTypeconstant native IsUnitIdType takes integer unitId, unittype whichUnitType returns boolean jjâJ¯€ìzu„+IUnitShareVisionnative UnitShareVision takes unit whichUnit, player whichPlayer, boolean share returns nothinge„-'UnitSuspendDecaynative UnitSuspendDecay takes unit whichUnit, boolean suspend returns nothingb„#+UnitAddTypenative UnitAddType takes unit whichUnit, unittype whichUnitType returns booleanh„)1UnitRemoveTypenative UnitRemoveType takes unit whichUnit, unittype whichUnitType returns booleanc„)'UnitAddAbilitynative UnitAddAbility takes unit whichUnit, integer abilityId returns booleani„/-UnitRemoveAbilitynative UnitRemoveAbility takes unit whichUnit, integer abilityId returns boolean „=aUnitMakeAbilityPermanentnative UnitMakeAbilityPermanent takes unit whichUnit, boolean permanent, integer abilityId returns boolean„+cUnitRemoveBuffsnative UnitRemoveBuffs takes unit whichUnit, boolean removePositive, boolean removeNegative returns nothing ZZ:òNœ\„/ƒUnitRemoveBuffsExnative UnitRemoveBuffsEx takes unit whichUnit, boolean removePositive, boolean removeNegative, boolean magic, boolean physical, boolean timedLife, boolean aura, boolean autoDispel returns nothingV„)ƒ UnitHasBuffsExnative UnitHasBuffsEx takes unit whichUnit, boolean removePositive, boolean removeNegative, boolean magic, boolean physical, boolean timedLife, boolean aura, boolean autoDispel returns booleanZ„-ƒUnitCountBuffsExnative UnitCountBuffsEx takes unit whichUnit, boolean removePositive, boolean removeNegative, boolean magic, boolean physical, boolean timedLife, boolean aura, boolean autoDispel returns integerY„%UnitAddSleepnative UnitAddSleep takes unit whichUnit, boolean add returns nothingK„%}UnitCanSleepnative UnitCanSleep takes unit whichUnit returns booleana„-UnitAddSleepPermnative UnitAddSleepPerm takes unit whichUnit, boolean add returns nothing gg¾[Õ8›ô‚T„-UnitCanSleepPermnative UnitCanSleepPerm takes unit whichUnit returns booleanP„)UnitIsSleepingnative UnitIsSleeping takes unit whichUnit returns booleanG„!yUnitWakeUpnative UnitWakeUp takes unit whichUnit returns nothingw„ 1GUnitApplyTimedLifenative UnitApplyTimedLife takes unit whichUnit, integer buffId, real duration returns nothing`„!+UnitIgnoreAlarmnative UnitIgnoreAlarm takes unit whichUnit, boolean flag returns boolean`„"9UnitIgnoreAlarmTogglednative UnitIgnoreAlarmToggled takes unit whichUnit returns booleanV„#/UnitResetCooldownnative UnitResetCooldown takes unit whichUnit returns nothing „$C[UnitSetConstructionProgressnative UnitSetConstructionProgress takes unit whichUnit, integer constructionPercentage returns nothing{„%9GUnitSetUpgradeProgressnative UnitSetUpgradeProgress takes unit whichUnit, integer upgradePercentage returns nothing ……îWH!Œf„&1%UnitPauseTimedLifenative UnitPauseTimedLife takes unit whichUnit, boolean flag returns nothingf„'1%UnitSetUsesAltIconnative UnitSetUsesAltIcon takes unit whichUnit, boolean flag returns nothingm„(+ƒ9UnitDamagePointnative UnitDamagePoint takes unit whichUnit, real delay, real radius, real x, real y, real amount, boolean attack, boolean ranged, attacktype attackType, damagetype damageType, weapontype weaponType returns booleanU„)-ƒUnitDamageTargetnative UnitDamageTarget takes unit whichUnit, widget target, real amount, boolean attack, boolean ranged, attacktype attackType, damagetype damageType, weapontype weaponType returns booleanh„*3'IssueImmediateOrdernative IssueImmediateOrder takes unit whichUnit, string order returns booleanq„+;1IssueImmediateOrderByIdnative IssueImmediateOrderById takes unit whichUnit, integer order returns boolean iiÜ]ÙdÞbp„,+?IssuePointOrdernative IssuePointOrder takes unit whichUnit, string order, real x, real y returns boolean~„-1UIssuePointOrderLocnative IssuePointOrderLoc takes unit whichUnit, string order, location whichLocation returns booleany„.3IIssuePointOrderByIdnative IssuePointOrderById takes unit whichUnit, integer order, real x, real y returns boolean„/9_IssuePointOrderByIdLocnative IssuePointOrderByIdLoc takes unit whichUnit, integer order, location whichLocation returns booleanw„0-KIssueTargetOrdernative IssueTargetOrder takes unit whichUnit, string order, widget targetWidget returns boolean„15UIssueTargetOrderByIdnative IssueTargetOrderById takes unit whichUnit, integer order, widget targetWidget returns boolean„29‚IssueInstantPointOrdernative IssueInstantPointOrder takes unit whichUnit, string order, real x, real y, widget instantTargetWidget returns boolean rr¾låb#„3A‚IssueInstantPointOrderByIdnative IssueInstantPointOrderById takes unit whichUnit, integer order, real x, real y, widget instantTargetWidget returns boolean!„4;‚IssueInstantTargetOrdernative IssueInstantTargetOrder takes unit whichUnit, string order, widget targetWidget, widget instantTargetWidget returns boolean*„5C‚IssueInstantTargetOrderByIdnative IssueInstantTargetOrderById takes unit whichUnit, integer order, widget targetWidget, widget instantTargetWidget returns booleanv„6+KIssueBuildOrdernative IssueBuildOrder takes unit whichPeon, string unitToBuild, real x, real y returns booleanz„73KIssueBuildOrderByIdnative IssueBuildOrderById takes unit whichPeon, integer unitId, real x, real y returns boolean„8A}IssueNeutralImmediateOrdernative IssueNeutralImmediateOrder takes player forWhichPlayer, unit neutralStructure, string unitToBuild returns boolean ddªSù£„9I{IssueNeutralImmediateOrderByIdnative IssueNeutralImmediateOrderById takes player forWhichPlayer,unit neutralStructure, integer unitId returns boolean!„:9‚IssueNeutralPointOrdernative IssueNeutralPointOrder takes player forWhichPlayer,unit neutralStructure, string unitToBuild, real x, real y returns boolean%„;A‚IssueNeutralPointOrderByIdnative IssueNeutralPointOrderById takes player forWhichPlayer,unit neutralStructure, integer unitId, real x, real y returns boolean"„<;‚IssueNeutralTargetOrdernative IssueNeutralTargetOrder takes player forWhichPlayer,unit neutralStructure, string unitToBuild, widget target returns boolean&„=C‚IssueNeutralTargetOrderByIdnative IssueNeutralTargetOrderById takes player forWhichPlayer,unit neutralStructure, integer unitId, widget target returns booleanZ„>3 GetUnitCurrentOrdernative GetUnitCurrentOrder takes unit whichUnit returns integer rrÛDûYÈ-f„?/'SetResourceAmountnative SetResourceAmount takes unit whichUnit, integer amount returns nothingf„@/'AddResourceAmountnative AddResourceAmount takes unit whichUnit, integer amount returns nothingV„A/GetResourceAmountnative GetResourceAmount takes unit whichUnit returns integer[„B9WaygateGetDestinationXnative WaygateGetDestinationX takes unit waygate returns real[„C9WaygateGetDestinationYnative WaygateGetDestinationY takes unit waygate returns reall„D7+WaygateSetDestinationnative WaygateSetDestination takes unit waygate, real x, real y returns nothingb„E+#WaygateActivatenative WaygateActivate takes unit waygate, boolean activate returns nothingO„F+WaygateIsActivenative WaygateIsActive takes unit waygate returns boolean~„G/WAddItemToAllStocknative AddItemToAllStock takes integer itemId, integer currentStock, integer stockMax returns nothing kk÷xgÔ7¤„H)qAddItemToStocknative AddItemToStock takes unit whichUnit, integer itemId, integer currentStock, integer stockMax returns nothing~„I/WAddUnitToAllStocknative AddUnitToAllStock takes integer unitId, integer currentStock, integer stockMax returns nothing„J)qAddUnitToStocknative AddUnitToStock takes unit whichUnit, integer unitId, integer currentStock, integer stockMax returns nothing`„K9RemoveItemFromAllStocknative RemoveItemFromAllStock takes integer itemId returns nothingj„L3+RemoveItemFromStocknative RemoveItemFromStock takes unit whichUnit, integer itemId returns nothing`„M9RemoveUnitFromAllStocknative RemoveUnitFromAllStock takes integer unitId returns nothingj„N3+RemoveUnitFromStocknative RemoveUnitFromStock takes unit whichUnit, integer unitId returns nothingY„O3 SetAllItemTypeSlotsnative SetAllItemTypeSlots takes integer slots returns nothing ++‡íS¨ VªŒY„P3 SetAllUnitTypeSlotsnative SetAllUnitTypeSlots takes integer slots returns nothingc„Q-#SetItemTypeSlotsnative SetItemTypeSlots takes unit whichUnit, integer slots returns nothingc„R-#SetUnitTypeSlotsnative SetUnitTypeSlots takes unit whichUnit, integer slots returns nothingR„S+GetUnitUserDatanative GetUnitUserData takes unit whichUnit returns integer`„T+SetUnitUserDatanative SetUnitUserData takes unit whichUnit, integer data returns nothingH„UPlayerconstant native Player takes integer number returns playerQ„V)GetLocalPlayerconstant native GetLocalPlayer takes nothing returns playerm„W%?IsPlayerAllyconstant native IsPlayerAlly takes player whichPlayer, player otherPlayer returns booleano„X'AIsPlayerEnemyconstant native IsPlayerEnemy takes player whichPlayer, player otherPlayer returns booleanq„Y+AIsPlayerInForceconstant native IsPlayerInForce takes player whichPlayer, force whichForce returns boolean ::ž£¤¥a„Z-IsPlayerObserverconstant native IsPlayerObserver takes player whichPlayer returns booleans„[/AIsVisibleToPlayerconstant native IsVisibleToPlayer takes real x, real y, player whichPlayer returns boolean „\?aIsLocationVisibleToPlayerconstant native IsLocationVisibleToPlayer takes location whichLocation, player whichPlayer returns booleanq„]-?IsFoggedToPlayerconstant native IsFoggedToPlayer takes real x, real y, player whichPlayer returns boolean „^=_IsLocationFoggedToPlayerconstant native IsLocationFoggedToPlayer takes location whichLocation, player whichPlayer returns booleanq„_-?IsMaskedToPlayerconstant native IsMaskedToPlayer takes real x, real y, player whichPlayer returns boolean „`=_IsLocationMaskedToPlayerconstant native IsLocationMaskedToPlayer takes location whichLocation, player whichPlayer returns booleanX„a'GetPlayerRaceconstant native GetPlayerRace takes player whichPlayer returns race AA›×eãaW„b#GetPlayerIdconstant native GetPlayerId takes player whichPlayer returns integer„c1YGetPlayerUnitCountconstant native GetPlayerUnitCount takes player whichPlayer, boolean includeIncomplete returns integer4„d;‚7GetPlayerTypedUnitCountconstant native GetPlayerTypedUnitCount takes player whichPlayer, string unitName, boolean includeIncomplete, boolean includeUpgrades returns integer „e;cGetPlayerStructureCountconstant native GetPlayerStructureCount takes player whichPlayer, boolean includeIncomplete returns integer{„f)WGetPlayerStateconstant native GetPlayerState takes player whichPlayer, playerstate whichPlayerState returns integer{„g)WGetPlayerScoreconstant native GetPlayerScore takes player whichPlayer, playerscore whichPlayerScore returns integer„h/‚GetPlayerAllianceconstant native GetPlayerAlliance takes player sourcePlayer, player otherPlayer, alliancetype whichAllianceSetting returns boolean ŸŸiÞWëm`„i/GetPlayerHandicapconstant native GetPlayerHandicap takes player whichPlayer returns reald„j3GetPlayerHandicapXPconstant native GetPlayerHandicapXP takes player whichPlayer returns realr„k/?SetPlayerHandicapconstant native SetPlayerHandicap takes player whichPlayer, real handicap returns nothingv„l3CSetPlayerHandicapXPconstant native SetPlayerHandicapXP takes player whichPlayer, real handicap returns nothing„m;oSetPlayerTechMaxAllowedconstant native SetPlayerTechMaxAllowed takes player whichPlayer, integer techid, integer maximum returns nothing„n;MGetPlayerTechMaxAllowedconstant native GetPlayerTechMaxAllowed takes player whichPlayer, integer techid returns integer„o;mAddPlayerTechResearchedconstant native AddPlayerTechResearched takes player whichPlayer, integer techid, integer levels returns nothing CCÚsuî{„p;uSetPlayerTechResearchedconstant native SetPlayerTechResearched takes player whichPlayer, integer techid, integer setToLevel returns nothing„q;yGetPlayerTechResearchedconstant native GetPlayerTechResearched takes player whichPlayer, integer techid, boolean specificonly returns boolean „r1oGetPlayerTechCountconstant native GetPlayerTechCount takes player whichPlayer, integer techid, boolean specificonly returns integerp„s37SetPlayerUnitsOwnernative SetPlayerUnitsOwner takes player whichPlayer, integer newOwner returns nothingv„t'OCripplePlayernative CripplePlayer takes player whichPlayer, force toWhichPlayers, boolean flag returns nothing „u?]SetPlayerAbilityAvailablenative SetPlayerAbilityAvailable takes player whichPlayer, integer abilid, boolean avail returns nothing„v)cSetPlayerStatenative SetPlayerState takes player whichPlayer, playerstate whichPlayerState, integer value returns nothing ŽŽþ_ö®a±m„w%?RemovePlayernative RemovePlayer takes player whichPlayer, playergameresult gameResult returns nothing^„x3CachePlayerHeroDatanative CachePlayerHeroData takes player whichPlayer returns nothing„y+‚SetFogStateRectnative SetFogStateRect takes player forWhichPlayer, fogstate whichState, rect where, boolean useSharedVision returns nothing4„z/‚CSetFogStateRadiusnative SetFogStateRadius takes player forWhichPlayer, fogstate whichState, real centerx, real centerY, real radius, boolean useSharedVision returns nothing/„{5‚3SetFogStateRadiusLocnative SetFogStateRadiusLoc takes player forWhichPlayer, fogstate whichState, location center, real radius, boolean useSharedVision returns nothingM„|'FogMaskEnablenative FogMaskEnable takes boolean enable returns nothingL„}-wIsFogMaskEnablednative IsFogMaskEnabled takes nothing returns boolean 55}Ä[2›E„~wFogEnablenative FogEnable takes boolean enable returns nothingD„%oIsFogEnablednative IsFogEnabled takes nothing returns boolean7…7‚ACreateFogModifierRectnative CreateFogModifierRect takes player forWhichPlayer, fogstate whichState, rect where, boolean useSharedVision, boolean afterUnits returns fogmodifierX…;‚CreateFogModifierRadiusnative CreateFogModifierRadius takes player forWhichPlayer, fogstate whichState, real centerx, real centerY, real radius, boolean useSharedVision, boolean afterUnits returns fogmodifierS…A‚oCreateFogModifierRadiusLocnative CreateFogModifierRadiusLoc takes player forWhichPlayer, fogstate whichState, location center, real radius, boolean useSharedVision, boolean afterUnits returns fogmodifierf…1%DestroyFogModifiernative DestroyFogModifier takes fogmodifier whichFogModifier returns nothingb…-!FogModifierStartnative FogModifierStart takes fogmodifier whichFogModifier returns nothing 88›Þ=šæKŸâ6ž`…+FogModifierStopnative FogModifierStop takes fogmodifier whichFogModifier returns nothing@…!kVersionGetnative VersionGet takes nothing returns version\…/VersionCompatiblenative VersionCompatible takes version whichVersion returns booleanZ…-VersionSupportednative VersionSupported takes version whichVersion returns booleanI… EndGamenative EndGame takes boolean doScoreScreen returns nothingb… #+ChangeLevelnative ChangeLevel takes string newLevel, boolean doScoreScreen returns nothingQ… # RestartGamenative RestartGame takes boolean doScoreScreen returns nothing@… !kReloadGamenative ReloadGame takes nothing returns nothingQ… 3{SetCampaignMenuRacenative SetCampaignMenuRace takes race r returns nothinge…7SetCampaignMenuRaceExnative SetCampaignMenuRaceEx takes integer campaignIndex returns nothing_…? ForceCampaignSelectScreennative ForceCampaignSelectScreen takes nothing returns nothing ŠŠí8¯}Ñ‘`…-LoadGamenative LoadGame takes string saveFileName, boolean doScoreScreen returns nothingH…SaveGamenative SaveGame takes string saveFileName returns nothingt…3?RenameSaveDirectorynative RenameSaveDirectory takes string sourceDirName, string destDirName returns boolean`…3RemoveSaveDirectorynative RemoveSaveDirectory takes string sourceDirName returns booleanh…%5CopySaveGamenative CopySaveGame takes string sourceSaveName, string destSaveName returns booleanQ…)SaveGameExistsnative SaveGameExists takes string saveName returns booleanH…)sSyncSelectionsnative SyncSelections takes nothing returns nothingr…/?SetFloatGameStatenative SetFloatGameState takes fgamestate whichFloatGameState, real value returns nothingl…/3GetFloatGameStateconstant native GetFloatGameState takes fgamestate whichFloatGameState returns real EEÃ;—'¡!¡{…3MSetIntegerGameStatenative SetIntegerGameState takes igamestate whichIntegerGameState, integer value returns nothingu…3AGetIntegerGameStateconstant native GetIntegerGameState takes igamestate whichIntegerGameState returns integerY…1 SetTutorialClearednative SetTutorialCleared takes boolean cleared returns nothing …3oSetMissionAvailablenative SetMissionAvailable takes integer campaignNumber, integer missionNumber, boolean available returns nothingw…5CSetCampaignAvailablenative SetCampaignAvailable takes integer campaignNumber, boolean available returns nothing}…;ISetOpCinematicAvailablenative SetOpCinematicAvailable takes integer campaignNumber, boolean available returns nothing}…;ISetEdCinematicAvailablenative SetEdCinematicAvailable takes integer campaignNumber, boolean available returns nothing\… 5 GetDefaultDifficultynative GetDefaultDifficulty takes nothing returns gamedifficulty zzÛeÝ*pÅ…^…!5SetDefaultDifficultynative SetDefaultDifficulty takes gamedifficulty g returns nothing…"IMSetCustomCampaignButtonVisiblenative SetCustomCampaignButtonVisible takes integer whichButton, boolean visible returns nothingu…#I+GetCustomCampaignButtonVisiblenative GetCustomCampaignButtonVisible takes integer whichButton returns booleanJ…$+uDoNotSaveReplaynative DoNotSaveReplay takes nothing returns nothingC…%%mDialogCreatenative DialogCreate takes nothing returns dialogR…&'DialogDestroynative DialogDestroy takes dialog whichDialog returns nothingN…'#DialogClearnative DialogClear takes dialog whichDialog returns nothingl…(-5DialogSetMessagenative DialogSetMessage takes dialog whichDialog, string messageText returns nothingx…)+ODialogAddButtonnative DialogAddButton takes dialog whichDialog, string buttonText, integer hotkey returns button nn €à8 ‚…*3‚DialogAddQuitButtonnative DialogAddQuitButton takes dialog whichDialog, boolean doScoreScreen, string buttonText, integer hotkey returns buttont…+'KDialogDisplaynative DialogDisplay takes player whichPlayer, dialog whichDialog, boolean flag returns nothing]…,=ReloadGameCachesFromDisknative ReloadGameCachesFromDisk takes nothing returns booleanU…-' InitGameCachenative InitGameCache takes string campaignFile returns gamecacheT….' SaveGameCachenative SaveGameCache takes gamecache whichCache returns boolean{…/%[StoreIntegernative StoreInteger takes gamecache cache, string missionKey, string key, integer value returns nothingr…0OStoreRealnative StoreReal takes gamecache cache, string missionKey, string key, real value returns nothing{…1%[StoreBooleannative StoreBoolean takes gamecache cache, string missionKey, string key, boolean value returns nothing FF¿:³&Ÿ‰v…2WStoreUnitnative StoreUnit takes gamecache cache, string missionKey, string key, unit whichUnit returns booleanx…3#WStoreStringnative StoreString takes gamecache cache, string missionKey, string key, string value returns booleanv…4/GSyncStoredIntegernative SyncStoredInteger takes gamecache cache, string missionKey, string key returns nothingp…5)ASyncStoredRealnative SyncStoredReal takes gamecache cache, string missionKey, string key returns nothingv…6/GSyncStoredBooleannative SyncStoredBoolean takes gamecache cache, string missionKey, string key returns nothingp…7)ASyncStoredUnitnative SyncStoredUnit takes gamecache cache, string missionKey, string key returns nothingt…8-ESyncStoredStringnative SyncStoredString takes gamecache cache, string missionKey, string key returns nothingt…9-EGetStoredIntegernative GetStoredInteger takes gamecache cache, string missionKey, string key returns integer 00ž‰(¡k…:'9GetStoredRealnative GetStoredReal takes gamecache cache, string missionKey, string key returns realt…;-EGetStoredBooleannative GetStoredBoolean takes gamecache cache, string missionKey, string key returns booleanq…<+AGetStoredStringnative GetStoredString takes gamecache cache, string missionKey, string key returns string…=#‚RestoreUnitnative RestoreUnit takes gamecache cache, string missionKey, string key, player forWhichPlayer, real x, real y, real facing returns unitv…>/GHaveStoredIntegernative HaveStoredInteger takes gamecache cache, string missionKey, string key returns booleanp…?)AHaveStoredRealnative HaveStoredReal takes gamecache cache, string missionKey, string key returns booleanv…@/GHaveStoredBooleannative HaveStoredBoolean takes gamecache cache, string missionKey, string key returns booleanp…A)AHaveStoredUnitnative HaveStoredUnit takes gamecache cache, string missionKey, string key returns boolean mmä8§"—‡t…B-EHaveStoredStringnative HaveStoredString takes gamecache cache, string missionKey, string key returns booleanQ…C)FlushGameCachenative FlushGameCache takes gamecache cache returns nothingl…D11FlushStoredMissionnative FlushStoredMission takes gamecache cache, string missionKey returns nothingx…E1IFlushStoredIntegernative FlushStoredInteger takes gamecache cache, string missionKey, string key returns nothingr…F+CFlushStoredRealnative FlushStoredReal takes gamecache cache, string missionKey, string key returns nothingx…G1IFlushStoredBooleannative FlushStoredBoolean takes gamecache cache, string missionKey, string key returns nothingr…H+CFlushStoredUnitnative FlushStoredUnit takes gamecache cache, string missionKey, string key returns nothingv…I/GFlushStoredStringnative FlushStoredString takes gamecache cache, string missionKey, string key returns nothing qqÕ2~×UÌW£a…J%'GetRandomIntnative GetRandomInt takes integer lowBound, integer highBound returns integerZ…K'GetRandomRealnative GetRandomReal takes real lowBound, real highBound returns realI…L)uCreateUnitPoolnative CreateUnitPool takes nothing returns unitpoolV…M+ DestroyUnitPoolnative DestroyUnitPool takes unitpool whichPool returns nothing{…N3MUnitPoolAddUnitTypenative UnitPoolAddUnitType takes unitpool whichPool, integer unitId, real weight returns nothingt…O99UnitPoolRemoveUnitTypenative UnitPoolRemoveUnitType takes unitpool whichPool, integer unitId returns nothing…P+mPlaceRandomUnitnative PlaceRandomUnit takes unitpool whichPool, player forWhichPlayer, real x, real y, real facing returns unitI…Q)uCreateItemPoolnative CreateItemPool takes nothing returns itempoolZ…R+DestroyItemPoolnative DestroyItemPool takes itempool whichItemPool returns nothing jjìgÑ)…ÛI—…S3UItemPoolAddItemTypenative ItemPoolAddItemType takes itempool whichItemPool, integer itemId, real weight returns nothingx…T9AItemPoolRemoveItemTypenative ItemPoolRemoveItemType takes itempool whichItemPool, integer itemId returns nothingg…U+-PlaceRandomItemnative PlaceRandomItem takes itempool whichItemPool, real x, real y returns itemU…V/ChooseRandomCreepnative ChooseRandomCreep takes integer level returns integerY…W9ChooseRandomNPBuildingnative ChooseRandomNPBuilding takes nothing returns integerS…X-ChooseRandomItemnative ChooseRandomItem takes integer level returns integerk…Y1/ChooseRandomItemExnative ChooseRandomItemEx takes itemtype whichType, integer level returns integerK…Z'{SetRandomSeednative SetRandomSeed takes integer seed returns nothingf…['/SetTerrainFognative SetTerrainFog takes real a, real b, real c, real d, real e returns nothing ==Ší‰Ÿ;ŒJ…\+uResetTerrainFognative ResetTerrainFog takes nothing returns nothing`…]!)SetUnitFognative SetUnitFog takes real a, real b, real c, real d, real e returns nothing…^+‚SetTerrainFogExnative SetTerrainFogEx takes integer style, real zstart, real zend, real density, real red, real green, real blue returns nothing{…_3MDisplayTextToPlayernative DisplayTextToPlayer takes player toPlayer, real x, real y, string message returns nothing…`=uDisplayTimedTextToPlayernative DisplayTimedTextToPlayer takes player toPlayer, real x, real y, real duration, string message returns nothing…aAyDisplayTimedTextFromPlayernative DisplayTimedTextFromPlayer takes player toPlayer, real x, real y, real duration, string message returns nothingN…b/yClearTextMessagesnative ClearTextMessages takes nothing returns nothingq…c/=SetDayNightModelsnative SetDayNightModels takes string terrainDNCFile, string unitDNCFile returns nothing ]]¯Kœì:œâsO…d#SetSkyModelnative SetSkyModel takes string skyModelFile returns nothingP…e/}EnableUserControlnative EnableUserControl takes boolean b returns nothingF…f%sEnableUserUInative EnableUserUI takes boolean b returns nothingN…g-{SuspendTimeOfDaynative SuspendTimeOfDay takes boolean b returns nothingM…h/wSetTimeOfDayScalenative SetTimeOfDayScale takes real r returns nothingK…i/sGetTimeOfDayScalenative GetTimeOfDayScale takes nothing returns real_…j'!ShowInterfacenative ShowInterface takes boolean flag, real fadeDuration returns nothingC…ksPauseGamenative PauseGame takes boolean flag returns nothing …l-wUnitAddIndicatornative UnitAddIndicator takes unit whichUnit, integer red, integer green, integer blue, integer alpha returns nothing …m%wAddIndicatornative AddIndicator takes widget whichWidget, integer red, integer green, integer blue, integer alpha returns nothing [[·XªcÁq·Y…n#PingMinimapnative PingMinimap takes real x, real y, real duration returns nothing…o'‚PingMinimapExnative PingMinimapEx takes real x, real y, real duration, integer red, integer green, integer blue, boolean extraEffects returns nothingO…p+EnableOcclusionnative EnableOcclusion takes boolean flag returns nothingV…q- SetIntroShotTextnative SetIntroShotText takes string introText returns nothing]…r/SetIntroShotModelnative SetIntroShotModel takes string introModelPath returns nothing[…s9EnableWorldFogBoundarynative EnableWorldFogBoundary takes boolean b returns nothingZ…t1 PlayModelCinematicnative PlayModelCinematic takes string modelName returns nothingP…u'PlayCinematicnative PlayCinematic takes string movieName returns nothingC…v!qForceUIKeynative ForceUIKey takes string key returns nothingF…w'qForceUICancelnative ForceUICancel takes nothing returns nothing pÊ)r¿$“ ”N…x/yDisplayLoadDialognative DisplayLoadDialog takes nothing returns nothingW…y/ SetAltMinimapIconnative SetAltMinimapIcon takes string iconPath returns nothing\…z7 DisableRestartMissionnative DisableRestartMission takes boolean flag returns nothingF…{'qCreateTextTagnative CreateTextTag takes nothing returns texttagJ…|)wDestroyTextTagnative DestroyTextTag takes texttag t returns nothingb…})%SetTextTagTextnative SetTextTagText takes texttag t, string s, real height returns nothingl…~';SetTextTagPosnative SetTextTagPos takes texttag t, real x, real y, real heightOffset returns nothingt…/CSetTextTagPosUnitnative SetTextTagPosUnit takes texttag t, unit whichUnit, real heightOffset returns nothing†+kSetTextTagColornative SetTextTagColor takes texttag t, integer red, integer green, integer blue, integer alpha returns nothingi†1+SetTextTagVelocitynative SetTextTagVelocity takes texttag t, real xvel, real yvel returns nothing xxàF¬gÏ>œe†5SetTextTagVisibilitynative SetTextTagVisibility takes texttag t, boolean flag returns nothingc†3SetTextTagSuspendednative SetTextTagSuspended takes texttag t, boolean flag returns nothingc†3SetTextTagPermanentnative SetTextTagPermanent takes texttag t, boolean flag returns nothingS†' SetTextTagAgenative SetTextTagAge takes texttag t, real age returns nothingb†1SetTextTagLifespannative SetTextTagLifespan takes texttag t, real lifespan returns nothinge†3!SetTextTagFadepointnative SetTextTagFadepoint takes texttag t, real fadepoint returns nothingl†CSetReservedLocalHeroButtonsnative SetReservedLocalHeroButtons takes integer reserved returns nothing[† ;GetAllyColorFilterStatenative GetAllyColorFilterState takes nothing returns integera† ;SetAllyColorFilterStatenative SetAllyColorFilterState takes integer state returns nothing ))‡ëpÒ2Œ NŸ[† ;GetCreepCampFilterStatenative GetCreepCampFilterState takes nothing returns booleana† ;SetCreepCampFilterStatenative SetCreepCampFilterState takes boolean state returns nothing† AKEnableMinimapFilterButtonsnative EnableMinimapFilterButtons takes boolean enableAlly, boolean enableCreep returns nothing_†-EnableDragSelectnative EnableDragSelect takes boolean state, boolean ui returns nothing]†+EnablePreSelectnative EnablePreSelect takes boolean state, boolean ui returns nothingW†%EnableSelectnative EnableSelect takes boolean state, boolean ui returns nothing|†+WCreateTrackablenative CreateTrackable takes string trackableModelPath, real x, real y, real facing returns trackable@†#iCreateQuestnative CreateQuest takes nothing returns questN†%DestroyQuestnative DestroyQuest takes quest whichQuest returns nothing^†'QuestSetTitlenative QuestSetTitle takes quest whichQuest, string title returns nothing \\Ï9¤ƒèP§p†37QuestSetDescriptionnative QuestSetDescription takes quest whichQuest, string description returns nothingg†-+QuestSetIconPathnative QuestSetIconPath takes quest whichQuest, string iconPath returns nothingh†--QuestSetRequirednative QuestSetRequired takes quest whichQuest, boolean required returns nothingk†/1QuestSetCompletednative QuestSetCompleted takes quest whichQuest, boolean completed returns nothingn†15QuestSetDiscoverednative QuestSetDiscovered takes quest whichQuest, boolean discovered returns nothingb†)%QuestSetFailednative QuestSetFailed takes quest whichQuest, boolean failed returns nothinge†+)QuestSetEnablednative QuestSetEnabled takes quest whichQuest, boolean enabled returns nothingT†+IsQuestRequirednative IsQuestRequired takes quest whichQuest returns booleanV†- IsQuestCompletednative IsQuestCompleted takes quest whichQuest returns boolean dd¿gÀDÂ+X†/ IsQuestDiscoverednative IsQuestDiscovered takes quest whichQuest returns booleanP†'IsQuestFailednative IsQuestFailed takes quest whichQuest returns booleanR† )IsQuestEnablednative IsQuestEnabled takes quest whichQuest returns booleanV†!+ QuestCreateItemnative QuestCreateItem takes quest whichQuest returns questitem†";OQuestItemSetDescriptionnative QuestItemSetDescription takes questitem whichQuestItem, string description returns nothing{†#7IQuestItemSetCompletednative QuestItemSetCompleted takes questitem whichQuestItem, boolean completed returns nothingf†$5!IsQuestItemCompletednative IsQuestItemCompleted takes questitem whichQuestItem returns boolean_†%7CreateDefeatConditionnative CreateDefeatCondition takes nothing returns defeatconditionp†&91DestroyDefeatConditionnative DestroyDefeatCondition takes defeatcondition whichCondition returns nothing 22È$€Ö:®X†'GgDefeatConditionSetDescriptionnative DefeatConditionSetDescription takes defeatcondition whichCondition, string description returns nothingY†(9FlashQuestDialogButtonnative FlashQuestDialogButton takes nothing returns nothingY†)9ForceQuestDialogUpdatenative ForceQuestDialogUpdate takes nothing returns nothingS†*/CreateTimerDialognative CreateTimerDialog takes timer t returns timerdialoga†+1DestroyTimerDialognative DestroyTimerDialog takes timerdialog whichDialog returns nothingq†,39TimerDialogSetTitlenative TimerDialogSetTitle takes timerdialog whichDialog, string title returns nothing&†-=‚TimerDialogSetTitleColornative TimerDialogSetTitleColor takes timerdialog whichDialog, integer red, integer green, integer blue, integer alpha returns nothing$†.;‚TimerDialogSetTimeColornative TimerDialogSetTimeColor takes timerdialog whichDialog, integer red, integer green, integer blue, integer alpha returns nothing ..ª‹tÏ8›y†/3ITimerDialogSetSpeednative TimerDialogSetSpeed takes timerdialog whichDialog, real speedMultFactor returns nothingr†01=TimerDialogDisplaynative TimerDialogDisplay takes timerdialog whichDialog, boolean display returns nothingi†19#IsTimerDialogDisplayednative IsTimerDialogDisplayed takes timerdialog whichDialog returns boolean†2K]TimerDialogSetRealTimeRemainingnative TimerDialogSetRealTimeRemaining takes timerdialog whichDialog, real timeRemaining returns nothingS†3/CreateLeaderboardnative CreateLeaderboard takes nothing returns leaderboardX†41 DestroyLeaderboardnative DestroyLeaderboard takes leaderboard lb returns nothingf†51%LeaderboardDisplaynative LeaderboardDisplay takes leaderboard lb, boolean show returns nothing`†69IsLeaderboardDisplayednative IsLeaderboardDisplayed takes leaderboard lb returns booleanb†7;LeaderboardGetItemCountnative LeaderboardGetItemCount takes leaderboard lb returns integer >>¾@°'~þ€}†8G=LeaderboardSetSizeByItemCountnative LeaderboardSetSizeByItemCount takes leaderboard lb, integer count returns nothing†91WLeaderboardAddItemnative LeaderboardAddItem takes leaderboard lb, string label, integer value, player p returns nothingm†:7-LeaderboardRemoveItemnative LeaderboardRemoveItem takes leaderboard lb, integer index returns nothingt†;C/LeaderboardRemovePlayerItemnative LeaderboardRemovePlayerItem takes leaderboard lb, player p returns nothingT†<-LeaderboardClearnative LeaderboardClear takes leaderboard lb returns nothing}†=CALeaderboardSortItemsByValuenative LeaderboardSortItemsByValue takes leaderboard lb, boolean ascending returns nothing†>ECLeaderboardSortItemsByPlayernative LeaderboardSortItemsByPlayer takes leaderboard lb, boolean ascending returns nothing}†?CALeaderboardSortItemsByLabelnative LeaderboardSortItemsByLabel takes leaderboard lb, boolean ascending returns nothing 77¨†êZ¾_n†@=)LeaderboardHasPlayerItemnative LeaderboardHasPlayerItem takes leaderboard lb, player p returns booleanp†A?+LeaderboardGetPlayerIndexnative LeaderboardGetPlayerIndex takes leaderboard lb, player p returns integerh†B3'LeaderboardSetLabelnative LeaderboardSetLabel takes leaderboard lb, string label returns nothinga†C;LeaderboardGetLabelTextnative LeaderboardGetLabelText takes leaderboard lb returns stringm†D5/PlayerSetLeaderboardnative PlayerSetLeaderboard takes player toPlayer, leaderboard lb returns nothinga†E5PlayerGetLeaderboardnative PlayerGetLeaderboard takes player toPlayer returns leaderboard†F=‚LeaderboardSetLabelColornative LeaderboardSetLabelColor takes leaderboard lb, integer red, integer green, integer blue, integer alpha returns nothing†G=‚LeaderboardSetValueColornative LeaderboardSetValueColor takes leaderboard lb, integer red, integer green, integer blue, integer alpha returns nothing !!ÌR׈D'†H3‚%LeaderboardSetStylenative LeaderboardSetStyle takes leaderboard lb, boolean showLabel, boolean showNames, boolean showValues, boolean showIcons returns nothing†I;SLeaderboardSetItemValuenative LeaderboardSetItemValue takes leaderboard lb, integer whichItem, integer val returns nothing†J;QLeaderboardSetItemLabelnative LeaderboardSetItemLabel takes leaderboard lb, integer whichItem, string val returns nothing-†K;‚)LeaderboardSetItemStylenative LeaderboardSetItemStyle takes leaderboard lb, integer whichItem, boolean showLabel, boolean showValue, boolean showIcon returns nothing8†LE‚5LeaderboardSetItemLabelColornative LeaderboardSetItemLabelColor takes leaderboard lb, integer whichItem, integer red, integer green, integer blue, integer alpha returns nothing8†ME‚5LeaderboardSetItemValueColornative LeaderboardSetItemValueColor takes leaderboard lb, integer whichItem, integer red, integer green, integer blue, integer alpha returns nothing ŸŸñI¯{Û/ŸO†N-}CreateMultiboardnative CreateMultiboard takes nothing returns multiboardU†O/DestroyMultiboardnative DestroyMultiboard takes multiboard lb returns nothingc†P/!MultiboardDisplaynative MultiboardDisplay takes multiboard lb, boolean show returns nothing]†Q7 IsMultiboardDisplayednative IsMultiboardDisplayed takes multiboard lb returns booleani†R1+MultiboardMinimizenative MultiboardMinimize takes multiboard lb, boolean minimize returns nothing]†S7 IsMultiboardMinimizednative IsMultiboardMinimized takes multiboard lb returns booleanQ†T+MultiboardClearnative MultiboardClear takes multiboard lb returns nothingm†U9+MultiboardSetTitleTextnative MultiboardSetTitleText takes multiboard lb, string label returns nothing^†V9 MultiboardGetTitleTextnative MultiboardGetTitleText takes multiboard lb returns string ²²X¸“Ž"†WC‚ MultiboardSetTitleTextColornative MultiboardSetTitleTextColor takes multiboard lb, integer red, integer green, integer blue, integer alpha returns nothing]†X7 MultiboardGetRowCountnative MultiboardGetRowCount takes multiboard lb returns integerc†Y=MultiboardGetColumnCountnative MultiboardGetColumnCount takes multiboard lb returns integerr†Z=1MultiboardSetColumnCountnative MultiboardSetColumnCount takes multiboard lb, integer count returns nothingl†[7+MultiboardSetRowCountnative MultiboardSetRowCount takes multiboard lb, integer count returns nothing†\;_MultiboardSetItemsStylenative MultiboardSetItemsStyle takes multiboard lb, boolean showValues, boolean showIcons returns nothingo†];-MultiboardSetItemsValuenative MultiboardSetItemsValue takes multiboard lb, string value returns nothing ””<¬›$†^E‚ MultiboardSetItemsValueColornative MultiboardSetItemsValueColor takes multiboard lb, integer red, integer green, integer blue, integer alpha returns nothingm†_;)MultiboardSetItemsWidthnative MultiboardSetItemsWidth takes multiboard lb, real width returns nothingp†`91MultiboardSetItemsIconnative MultiboardSetItemsIcon takes multiboard lb, string iconPath returns nothingy†a/MMultiboardGetItemnative MultiboardGetItem takes multiboard lb, integer row, integer column returns multiboarditemb†b7MultiboardReleaseItemnative MultiboardReleaseItem takes multiboarditem mbi returns nothing †c9cMultiboardSetItemStylenative MultiboardSetItemStyle takes multiboarditem mbi, boolean showValue, boolean showIcon returns nothingp†d91MultiboardSetItemValuenative MultiboardSetItemValue takes multiboarditem mbi, string val returns nothing tt’ sÌ/½'†eC‚MultiboardSetItemValueColornative MultiboardSetItemValueColor takes multiboarditem mbi, integer red, integer green, integer blue, integer alpha returns nothingp†f91MultiboardSetItemWidthnative MultiboardSetItemWidth takes multiboarditem mbi, real width returns nothingw†g7AMultiboardSetItemIconnative MultiboardSetItemIcon takes multiboarditem mbi, string iconFileName returns nothingd†h?MultiboardSuppressDisplaynative MultiboardSuppressDisplay takes boolean flag returns nothingV†i/SetCameraPositionnative SetCameraPosition takes real x, real y returns nothing`†j9SetCameraQuickPositionnative SetCameraQuickPosition takes real x, real y returns nothing †k+sSetCameraBoundsnative SetCameraBounds takes real x1, real y1, real x2, real y2, real x3, real y3, real x4, real y4 returns nothing@†l!kStopCameranative StopCamera takes nothing returns nothing 44ŒØ>§)Œ ƒU†m/ResetToGameCameranative ResetToGameCamera takes real duration returns nothingI†n#{PanCameraTonative PanCameraTo takes real x, real y returns nothingc†o-#PanCameraToTimednative PanCameraToTimed takes real x, real y, real duration returns nothingf†p-)PanCameraToWithZnative PanCameraToWithZ takes real x, real y, real zOffsetDest returns nothing†q7QPanCameraToTimedWithZnative PanCameraToTimedWithZ takes real x, real y, real zOffsetDest, real duration returns nothing`†r1SetCinematicCameranative SetCinematicCamera takes string cameraModelFile returns nothing~†s3SSetCameraRotateModenative SetCameraRotateMode takes real x, real y, real radiansToSweep, real duration returns nothings†t)GSetCameraFieldnative SetCameraField takes camerafield whichField, real value, real duration returns nothingz†u/OAdjustCameraFieldnative AdjustCameraField takes camerafield whichField, real offset, real duration returns nothing bbŠàyó††v?‚SetCameraTargetControllernative SetCameraTargetController takes unit whichUnit, real xoffset, real yoffset, boolean inheritOrientation returns nothing†w?OSetCameraOrientControllernative SetCameraOrientController takes unit whichUnit, real xoffset, real yoffset returns nothingS†x/CreateCameraSetupnative CreateCameraSetup takes nothing returns camerasetup†y3‚CameraSetupSetFieldnative CameraSetupSetField takes camerasetup whichSetup, camerafield whichField, real value, real duration returns nothingw†z3ECameraSetupGetFieldnative CameraSetupGetField takes camerasetup whichSetup, camerafield whichField returns real†{AgCameraSetupSetDestPositionnative CameraSetupSetDestPosition takes camerasetup whichSetup, real x, real y, real duration returns nothingw†|G1CameraSetupGetDestPositionLocnative CameraSetupGetDestPositionLoc takes camerasetup whichSetup returns location rräVÖQî˜o†}C%CameraSetupGetDestPositionXnative CameraSetupGetDestPositionX takes camerasetup whichSetup returns realo†~C%CameraSetupGetDestPositionYnative CameraSetupGetDestPositionY takes camerasetup whichSetup returns real}†-WCameraSetupApplynative CameraSetupApply takes camerasetup whichSetup, boolean doPan, boolean panTimed returns nothingx‡7CCameraSetupApplyWithZnative CameraSetupApplyWithZ takes camerasetup whichSetup, real zDestOffset returns nothing‡GuCameraSetupApplyForceDurationnative CameraSetupApplyForceDuration takes camerasetup whichSetup, boolean doPan, real forceDuration returns nothing&‡Q‚CameraSetupApplyForceDurationWithZnative CameraSetupApplyForceDurationWithZ takes camerasetup whichSetup, real zDestOffset, real forceDuration returns nothinge‡5CameraSetTargetNoisenative CameraSetTargetNoise takes real mag, real velocity returns nothing ††îlêN®…e‡5CameraSetSourceNoisenative CameraSetSourceNoise takes real mag, real velocity returns nothing{‡9GCameraSetTargetNoiseExnative CameraSetTargetNoiseEx takes real mag, real velocity, boolean vertOnly returns nothing{‡9GCameraSetSourceNoiseExnative CameraSetSourceNoiseEx takes real mag, real velocity, boolean vertOnly returns nothinga‡=CameraSetSmoothingFactornative CameraSetSmoothingFactor takes real factor returns nothing]‡5SetCineFilterTexturenative SetCineFilterTexture takes string filename returns nothinge‡ 9SetCineFilterBlendModenative SetCineFilterBlendMode takes blendmode whichMode returns nothingl‡ =%SetCineFilterTexMapFlagsnative SetCineFilterTexMapFlags takes texmapflags whichFlags returns nothingx‡ 5ESetCineFilterStartUVnative SetCineFilterStartUV takes real minu, real minv, real maxu, real maxv returns nothing JJÁPÛ;’ì¯t‡ 1ASetCineFilterEndUVnative SetCineFilterEndUV takes real minu, real minv, real maxu, real maxv returns nothing ‡ ;eSetCineFilterStartColornative SetCineFilterStartColor takes integer red, integer green, integer blue, integer alpha returns nothing‡7aSetCineFilterEndColornative SetCineFilterEndColor takes integer red, integer green, integer blue, integer alpha returns nothing]‡7 SetCineFilterDurationnative SetCineFilterDuration takes real duration returns nothingT‡/DisplayCineFilternative DisplayCineFilter takes boolean flag returns nothingW‡7IsCineFilterDisplayednative IsCineFilterDisplayed takes nothing returns boolean?‡/‚YSetCinematicScenenative SetCinematicScene takes integer portraitUnitId, playercolor color, string speakerTitle, string text, real sceneDuration, real voiceoverDuration returns nothingN‡/yEndCinematicScenenative EndCinematicScene takes nothing returns nothing KK®_¹mÎ4š`‡;ForceCinematicSubtitlesnative ForceCinematicSubtitles takes boolean flag returns nothingT‡+GetCameraMarginnative GetCameraMargin takes integer whichMargin returns realW‡1GetCameraBoundMinXconstant native GetCameraBoundMinX takes nothing returns realW‡1GetCameraBoundMinYconstant native GetCameraBoundMinY takes nothing returns realW‡1GetCameraBoundMaxXconstant native GetCameraBoundMaxX takes nothing returns realW‡1GetCameraBoundMaxYconstant native GetCameraBoundMaxY takes nothing returns real^‡)GetCameraFieldconstant native GetCameraField takes camerafield whichField returns realc‡=GetCameraTargetPositionXconstant native GetCameraTargetPositionX takes nothing returns realc‡=GetCameraTargetPositionYconstant native GetCameraTargetPositionY takes nothing returns realc‡=GetCameraTargetPositionZconstant native GetCameraTargetPositionZ takes nothing returns real ááO¯o×<k‡AGetCameraTargetPositionLocconstant native GetCameraTargetPositionLoc takes nothing returns location]‡7 GetCameraEyePositionXconstant native GetCameraEyePositionX takes nothing returns real]‡ 7 GetCameraEyePositionYconstant native GetCameraEyePositionY takes nothing returns real]‡!7 GetCameraEyePositionZconstant native GetCameraEyePositionZ takes nothing returns reale‡";GetCameraEyePositionLocconstant native GetCameraEyePositionLoc takes nothing returns locationb‡#3NewSoundEnvironmentnative NewSoundEnvironment takes string environmentName returns nothing@‡$#‚gCreateSoundnative CreateSound takes string fileName, boolean looping, boolean is3D, boolean stopwhenoutofrange, integer fadeInRate, integer fadeOutRate, string eaxSetting returns sound ÿÄC¾1šd‡%Eƒ CreateSoundFilenameWithLabelnative CreateSoundFilenameWithLabel takes string fileName, boolean looping, boolean is3D, boolean stopwhenoutofrange, integer fadeInRate, integer fadeOutRate, string SLKEntryName returns soundA‡&5‚WCreateSoundFromLabelnative CreateSoundFromLabel takes string soundLabel, boolean looping, boolean is3D, boolean stopwhenoutofrange, integer fadeInRate, integer fadeOutRate returns sound|‡'+WCreateMIDISoundnative CreateMIDISound takes string soundLabel, integer fadeInRate, integer fadeOutRate returns soundx‡(;?SetSoundParamsFromLabelnative SetSoundParamsFromLabel takes sound soundHandle, string soundLabel returns nothingp‡)91SetSoundDistanceCutoffnative SetSoundDistanceCutoff takes sound soundHandle, real cutoff returns nothingf‡*++SetSoundChannelnative SetSoundChannel takes sound soundHandle, integer channel returns nothingc‡+)'SetSoundVolumenative SetSoundVolume takes sound soundHandle, integer volume returns nothing RR²'Ÿ0°"”]‡,'SetSoundPitchnative SetSoundPitch takes sound soundHandle, real pitch returns nothingr‡-59SetSoundPlayPositionnative SetSoundPlayPosition takes sound soundHandle, integer millisecs returns nothingu‡./ESetSoundDistancesnative SetSoundDistances takes sound soundHandle, real minDist, real maxDist returns nothing ‡/1sSetSoundConeAnglesnative SetSoundConeAngles takes sound soundHandle, real inside, real outside, integer outsideVolume returns nothing}‡0;ISetSoundConeOrientationnative SetSoundConeOrientation takes sound soundHandle, real x, real y, real z returns nothingo‡1-;SetSoundPositionnative SetSoundPosition takes sound soundHandle, real x, real y, real z returns nothingo‡2-;SetSoundVelocitynative SetSoundVelocity takes sound soundHandle, real x, real y, real z returns nothingi‡3/-AttachSoundToUnitnative AttachSoundToUnit takes sound soundHandle, unit whichUnit returns nothing Ì?› Rœ\¡J‡4!StartSoundnative StartSound takes sound soundHandle returns nothingp‡5KStopSoundnative StopSound takes sound soundHandle, boolean killWhenDone, boolean fadeOut returns nothingY‡6/ KillSoundWhenDonenative KillSoundWhenDone takes sound soundHandle returns nothingk‡7#=SetMapMusicnative SetMapMusic takes string musicName, boolean random, integer index returns nothingF‡8'qClearMapMusicnative ClearMapMusic takes nothing returns nothingG‡9{PlayMusicnative PlayMusic takes string musicName returns nothingt‡:#OPlayMusicExnative PlayMusicEx takes string musicName, integer frommsecs, integer fadeinmsecs returns nothingF‡;yStopMusicnative StopMusic takes boolean fadeOut returns nothingB‡<#mResumeMusicnative ResumeMusic takes nothing returns nothing\‡=/PlayThematicMusicnative PlayThematicMusic takes string musicFileName returns nothing zzð?’ôfÒ,‘s‡>3=PlayThematicMusicExnative PlayThematicMusicEx takes string musicFileName, integer frommsecs returns nothingL‡?-wEndThematicMusicnative EndThematicMusic takes nothing returns nothingP‡@)SetMusicVolumenative SetMusicVolume takes integer volume returns nothing_‡A5SetMusicPlayPositionnative SetMusicPlayPosition takes integer millisecs returns nothingo‡BE#SetThematicMusicPlayPositionnative SetThematicMusicPlayPosition takes integer millisecs returns nothingi‡C-/SetSoundDurationnative SetSoundDuration takes sound soundHandle, integer duration returns nothingW‡D- GetSoundDurationnative GetSoundDuration takes sound soundHandle returns integerb‡E5GetSoundFileDurationnative GetSoundFileDuration takes string musicFileName returns integerl‡F5-VolumeGroupSetVolumenative VolumeGroupSetVolume takes volumegroup vgroup, real scale returns nothing zzÉ%µ ˆL‡G-wVolumeGroupResetnative VolumeGroupReset takes nothing returns nothingY‡H/ GetSoundIsPlayingnative GetSoundIsPlaying takes sound soundHandle returns booleanY‡I/ GetSoundIsLoadingnative GetSoundIsLoading takes sound soundHandle returns boolean‡J5}RegisterStackedSoundnative RegisterStackedSound takes sound soundHandle, boolean byPosition, real rectwidth, real rectheight returns nothing‡K9‚UnregisterStackedSoundnative UnregisterStackedSound takes sound soundHandle, boolean byPosition, real rectwidth, real rectheight returns nothingh‡L--AddWeatherEffectnative AddWeatherEffect takes rect where, integer effectID returns weathereffecte‡M3!RemoveWeatherEffectnative RemoveWeatherEffect takes weathereffect whichEffect returns nothingu‡N3AEnableWeatherEffectnative EnableWeatherEffect takes weathereffect whichEffect, boolean enable returns nothing dd öÇ…#‡O3‚TerrainDeformCraternative TerrainDeformCrater takes real x, real y, real radius, real depth, integer duration, boolean permanent returns terraindeformationg‡P3ƒ%TerrainDeformRipplenative TerrainDeformRipple takes real x, real y, real radius, real depth, integer duration, integer count, real spaceWaves, real timeWaves, real radiusStartPct, boolean limitNeg returns terraindeformationM‡Q/‚uTerrainDeformWavenative TerrainDeformWave takes real x, real y, real dirX, real dirY, real distance, real speed, real radius, real depth, integer trailTime, integer count returns terraindeformation:‡R3‚KTerrainDeformRandomnative TerrainDeformRandom takes real x, real y, real radius, real minDelta, real maxDelta, integer duration, integer updateInterval returns terraindeformationx‡S/KTerrainDeformStopnative TerrainDeformStop takes terraindeformation deformation, integer duration returns nothing Ø@®@• †T‡T5TerrainDeformStopAllnative TerrainDeformStopAll takes nothing returns nothinge‡U-'AddSpecialEffectnative AddSpecialEffect takes string modelName, real x, real y returns effectk‡V3-AddSpecialEffectLocnative AddSpecialEffectLoc takes string modelName, location where returns effect‡W9mAddSpecialEffectTargetnative AddSpecialEffectTarget takes string modelName, widget targetWidget, string attachPointName returns effectR‡X'DestroyEffectnative DestroyEffect takes effect whichEffect returns nothings‡Y)GAddSpellEffectnative AddSpellEffect takes string abilityString, effecttype t, real x, real y returns effectx‡Z/KAddSpellEffectLocnative AddSpellEffectLoc takes string abilityString, effecttype t,location where returns effectw‡[1GAddSpellEffectByIdnative AddSpellEffectById takes integer abilityId, effecttype t,real x, real y returns effect !!¡9Újl}‡\7MAddSpellEffectByIdLocnative AddSpellEffectByIdLoc takes integer abilityId, effecttype t,location where returns effect‡]5}AddSpellEffectTargetnative AddSpellEffectTarget takes string modelName, effecttype t, widget targetWidget, string attachPoint returns effect‡^=‚AddSpellEffectTargetByIdnative AddSpellEffectTargetById takes integer abilityId, effecttype t, widget targetWidget, string attachPoint returns effect ‡_%}AddLightningnative AddLightning takes string codeName, boolean checkVisibility, real x1, real y1, real x2, real y2 returns lightning"‡`)‚%AddLightningExnative AddLightningEx takes string codeName, boolean checkVisibility, real x1, real y1, real z1, real x2, real y2, real z2 returns lightningY‡a-DestroyLightningnative DestroyLightning takes lightning whichBolt returns boolean‡b'‚MoveLightningnative MoveLightning takes lightning whichBolt, boolean checkVisibility, real x1, real y1, real x2, real y2 returns boolean mmtÑ.‹ ‚&‡c+‚+MoveLightningExnative MoveLightningEx takes lightning whichBolt, boolean checkVisibility, real x1, real y1, real z1, real x2, real y2, real z2 returns booleanZ‡d1 GetLightningColorAnative GetLightningColorA takes lightning whichBolt returns realZ‡e1 GetLightningColorRnative GetLightningColorR takes lightning whichBolt returns realZ‡f1 GetLightningColorGnative GetLightningColorG takes lightning whichBolt returns realZ‡g1 GetLightningColorBnative GetLightningColorB takes lightning whichBolt returns real{‡h/QSetLightningColornative SetLightningColor takes lightning whichBolt, real r, real g, real b, real a returns booleanv‡i-IGetAbilityEffectnative GetAbilityEffect takes string abilityString, effecttype t, integer index returns string{‡j5KGetAbilityEffectByIdnative GetAbilityEffectById takes integer abilityId, effecttype t, integer index returns string LL³~Q¤ÿ˜d‡k+'GetAbilitySoundnative GetAbilitySound takes string abilityString, soundtype t returns stringi‡l3)GetAbilitySoundByIdnative GetAbilitySoundById takes integer abilityId, soundtype t returns string\‡m5 GetTerrainCliffLevelnative GetTerrainCliffLevel takes real x, real y returns integer‡n/YSetWaterBaseColornative SetWaterBaseColor takes integer red, integer green, integer blue, integer alpha returns nothingN‡o+}SetWaterDeformsnative SetWaterDeforms takes boolean val returns nothingP‡p)GetTerrainTypenative GetTerrainType takes real x, real y returns integerX‡q1 GetTerrainVariancenative GetTerrainVariance takes real x, real y returns integer‡r)‚ SetTerrainTypenative SetTerrainType takes real x, real y, integer terrainType, integer variation, integer area, integer shape returns nothinge‡s/%IsTerrainPathablenative IsTerrainPathable takes real x, real y, pathingtype t returns boolean 22ªuÆŸu‡t1CSetTerrainPathablenative SetTerrainPathable takes real x, real y, pathingtype t, boolean flag returns nothingG‡u#‚uCreateImagenative CreateImage takes string file, real sizeX, real sizeY, real sizeZ, real posX, real posY, real posZ, real originX, real originY, real originZ, integer imageType returns imageN‡v%DestroyImagenative DestroyImage takes image whichImage returns nothingV‡wShowImagenative ShowImage takes image whichImage, boolean flag returns nothing}‡x9KSetImageConstantHeightnative SetImageConstantHeight takes image whichImage, boolean flag, real height returns nothingn‡y-9SetImagePositionnative SetImagePosition takes image whichImage, real x, real y, real z returns nothing ‡z'uSetImageColornative SetImageColor takes image whichImage, integer red, integer green, integer blue, integer alpha returns nothing`‡{)!SetImageRendernative SetImageRender takes image whichImage, boolean flag returns nothing mmÜ^Šç@›l‡|5-SetImageRenderAlwaysnative SetImageRenderAlways takes image whichImage, boolean flag returns nothing‡}1WSetImageAboveWaternative SetImageAboveWater takes image whichImage, boolean flag, boolean useWaterAlpha returns nothinga‡~%'SetImageTypenative SetImageType takes image whichImage, integer imageType returns nothingD‡+‚gCreateUbersplatnative CreateUbersplat takes real x, real y, string name, integer red, integer green, integer blue, integer alpha, boolean forcePaused, boolean noBirthTime returns ubersplatZˆ-DestroyUbersplatnative DestroyUbersplat takes ubersplat whichSplat returns nothingVˆ) ResetUbersplatnative ResetUbersplat takes ubersplat whichSplat returns nothingXˆ+FinishUbersplatnative FinishUbersplat takes ubersplat whichSplat returns nothingbˆ''ShowUbersplatnative ShowUbersplat takes ubersplat whichSplat, boolean flag returns nothing XXÇB¿/©5«lˆ11SetUbersplatRendernative SetUbersplatRender takes ubersplat whichSplat, boolean flag returns nothingxˆ==SetUbersplatRenderAlwaysnative SetUbersplatRenderAlways takes ubersplat whichSplat, boolean flag returns nothingzˆ_SetBlightnative SetBlight takes player whichPlayer, real x, real y, real radius, boolean addBlight returns nothingmˆ'=SetBlightRectnative SetBlightRect takes player whichPlayer, rect r, boolean addBlight returns nothingwˆ)OSetBlightPointnative SetBlightPoint takes player whichPlayer, real x, real y, boolean addBlight returns nothingˆ %uSetBlightLocnative SetBlightLoc takes player whichPlayer, location whichLocation, real radius, boolean addBlight returns nothingsˆ 97CreateBlightedGoldminenative CreateBlightedGoldmine takes player id, real x, real y, real face returns unitRˆ +IsPointBlightednative IsPointBlighted takes real x, real y returns boolean ::ï‚Ü< öL¥1ˆ 1‚;SetDoodadAnimationnative SetDoodadAnimation takes real x, real y, real radius, integer doodadID, boolean nearestOnly, string animName, boolean animRandom returns nothingˆ 9oSetDoodadAnimationRectnative SetDoodadAnimationRect takes rect r, integer doodadID, string animName, boolean animRandom returns nothingWˆ%StartMeleeAInative StartMeleeAI takes player num, string script returns nothing]ˆ+StartCampaignAInative StartCampaignAI takes player num, string script returns nothingaˆ-CommandAInative CommandAI takes player num, integer command, integer data returns nothingSˆ# PauseCompAInative PauseCompAI takes player p, boolean pause returns nothingSˆ+GetAIDifficultynative GetAIDifficulty takes player num returns aidifficultyVˆ3RemoveGuardPositionnative RemoveGuardPosition takes unit hUnit returns nothingXˆ5RecycleGuardPositionnative RecycleGuardPosition takes unit hUnit returns nothing ''ˆÉeªò9„Ëe·^ˆ; RemoveAllGuardPositionsnative RemoveAllGuardPositions takes player num returns nothing>ˆqCheatnative Cheat takes string cheatStr returns nothingLˆ-wIsNoVictoryCheatnative IsNoVictoryCheat takes nothing returns booleanJˆ+uIsNoDefeatCheatnative IsNoDefeatCheat takes nothing returns booleanBˆuPreloadnative Preload takes string filename returns nothingEˆ!uPreloadEndnative PreloadEnd takes real timeout returns nothingDˆ%oPreloadStartnative PreloadStart takes nothing returns nothingHˆ)sPreloadRefreshnative PreloadRefresh takes nothing returns nothingDˆ%oPreloadEndExnative PreloadEndEx takes nothing returns nothingJˆ+uPreloadGenClearnative PreloadGenClear takes nothing returns nothingJˆ+uPreloadGenStartnative PreloadGenStart takes nothing returns nothingOˆ 'PreloadGenEndnative PreloadGenEnd takes string filename returns nothingFˆ!yPreloadernative Preloader takes string filename returns nothing ‹‹Œ*È`}ˆ"!ƒbBJDebugMsgfunction BJDebugMsg takes string msg returns nothing local integer i = 0 loop call DisplayTimedTextToPlayer(Player(i),0,0,60,msg) set i = i + 1 exitwhen i == bj_MAX_PLAYERS endloop endfunctionˆ#‚$RMinBJfunction RMinBJ takes real a, real b returns real if (a < b) then return a else return b endif endfunctionˆ$‚$RMaxBJfunction RMaxBJ takes real a, real b returns real if (a < b) then return b else return a endif endfunctionˆ%‚RAbsBJfunction RAbsBJ takes real a returns real if (a >= 0) then return a else return -a endif endfunctionˆ&‚&RSignBJfunction RSignBJ takes real a returns real if (a >= 0.0) then return 1.0 else return -1.0 endif endfunction Ål ªŽ#ˆ'‚6IMinBJfunction IMinBJ takes integer a, integer b returns integer if (a < b) then return a else return b endif endfunction#ˆ(‚6IMaxBJfunction IMaxBJ takes integer a, integer b returns integer if (a < b) then return b else return a endif endfunctionˆ)‚$IAbsBJfunction IAbsBJ takes integer a returns integer if (a >= 0) then return a else return -a endif endfunctionˆ*‚&ISignBJfunction ISignBJ takes integer a returns integer if (a >= 0) then return 1 else return -1 endif endfunctionoˆ+PSinBJfunction SinBJ takes real degrees returns real return Sin(degrees * bj_DEGTORAD) endfunctionoˆ,PCosBJfunction CosBJ takes real degrees returns real return Cos(degrees * bj_DEGTORAD) endfunctionoˆ-PTanBJfunction TanBJ takes real degrees returns real return Tan(degrees * bj_DEGTORAD) endfunction ""— øàrˆ.TAsinBJfunction AsinBJ takes real degrees returns real return Asin(degrees) * bj_RADTODEG endfunctionrˆ/TAcosBJfunction AcosBJ takes real degrees returns real return Acos(degrees) * bj_RADTODEG endfunctionrˆ0TAtanBJfunction AtanBJ takes real degrees returns real return Atan(degrees) * bj_RADTODEG endfunctiontˆ1VAtan2BJfunction Atan2BJ takes real y, real x returns real return Atan2(y, x) * bj_RADTODEG endfunctiondˆ21ƒ AngleBetweenPointsfunction AngleBetweenPoints takes location locA, location locB returns real return bj_RADTODEG * Atan2(GetLocationY(locB) - GetLocationY(locA), GetLocationX(locB) - GetLocationX(locA)) endfunction‚ˆ37„ DistanceBetweenPointsfunction DistanceBetweenPoints takes location locA, location locB returns real local real dx = GetLocationX(locB) - GetLocationX(locA) local real dy = GetLocationY(locB) - GetLocationY(locA) return SquareRoot(dx * dx + dy * dy) endfunction ¼¼ïx‚/ˆ4/„8PolarProjectionBJfunction PolarProjectionBJ takes location source, real dist, real angle returns location local real x = GetLocationX(source) + dist * Cos(angle * bj_DEGTORAD) local real y = GetLocationY(source) + dist * Sin(angle * bj_DEGTORAD) return Location(x, y) endfunctionˆ57\GetRandomDirectionDegfunction GetRandomDirectionDeg takes nothing returns real return GetRandomReal(0, 360) endfunctionˆ67\GetRandomPercentageBJfunction GetRandomPercentageBJ takes nothing returns real return GetRandomReal(0, 100) endfunction{ˆ71ƒNGetRandomLocInRectfunction GetRandomLocInRect takes rect whichRect returns location return Location(GetRandomReal(GetRectMinX(whichRect), GetRectMaxX(whichRect)), GetRandomReal(GetRectMinY(whichRect), GetRectMaxY(whichRect))) endfunction  ƒqˆ8'‡DModuloIntegerfunction ModuloInteger takes integer dividend, integer divisor returns integer local integer modulus = dividend - (dividend / divisor) * divisor // If the dividend was negative, the above modulus calculation will // be negative, but within (-divisor..0). We can add (divisor) to // shift this result into the desired range of (0..divisor). if (modulus < 0) then set modulus = modulus + divisor endif return modulus endfunctionƒgˆ9!‡6ModuloRealfunction ModuloReal takes real dividend, real divisor returns real local real modulus = dividend - I2R(R2I(dividend / divisor)) * divisor // If the dividend was negative, the above modulus calculation will // be negative, but within (-divisor..0). We can add (divisor) to // shift this result into the desired range of (0..divisor). if (modulus < 0) then set modulus = modulus + divisor endif return modulus endfunction jj#ð5ˆ:)‚JOffsetLocationfunction OffsetLocation takes location loc, real dx, real dy returns location return Location(GetLocationX(loc) + dx, GetLocationY(loc) + dy) endfunctionIˆ;%‚vOffsetRectBJfunction OffsetRectBJ takes rect r, real dx, real dy returns rect return Rect( GetRectMinX(r) + dx, GetRectMinY(r) + dy, GetRectMaxX(r) + dx, GetRectMaxY(r) + dy ) endfunction‚)ˆ<5„&RectFromCenterSizeBJfunction RectFromCenterSizeBJ takes location center, real width, real height returns rect local real x = GetLocationX( center ) local real y = GetLocationY( center ) return Rect( x - width*0.5, y - height*0.5, x + width*0.5, y + height*0.5 ) endfunction_ˆ=1ƒRectContainsCoordsfunction RectContainsCoords takes rect r, real x, real y returns boolean return (GetRectMinX(r) <= x) and (x <= GetRectMaxX(r)) and (GetRectMinY(r) <= y) and (y <= GetRectMaxY(r)) endfunction ‚‚5ð8/ˆ>+‚<RectContainsLocfunction RectContainsLoc takes rect r, location loc returns boolean return RectContainsCoords(r, GetLocationX(loc), GetLocationY(loc)) endfunction7ˆ?-‚JRectContainsUnitfunction RectContainsUnit takes rect r, unit whichUnit returns boolean return RectContainsCoords(r, GetUnitX(whichUnit), GetUnitY(whichUnit)) endfunction‚Dˆ@-„dRectContainsItemfunction RectContainsItem takes item whichItem, rect r returns boolean if (whichItem == null) then return false endif if (IsItemOwned(whichItem)) then return false endif return RectContainsCoords(r, GetItemX(whichItem), GetItemY(whichItem)) endfunctionDˆA?‚RConditionalTriggerExecutefunction ConditionalTriggerExecute takes trigger trig returns nothing if TriggerEvaluate(trig) then call TriggerExecute(trig) endif endfunction ‹‹·‚(ˆB-„,TriggerExecuteBJfunction TriggerExecuteBJ takes trigger trig, boolean checkConditions returns boolean if checkConditions then if not (TriggerEvaluate(trig)) then return false endif endif call TriggerExecute(trig) return true endfunction‚EˆC5„^PostTriggerExecuteBJfunction PostTriggerExecuteBJ takes trigger trig, boolean checkConditions returns boolean if checkConditions then if not (TriggerEvaluate(trig)) then return false endif endif call TriggerRegisterTimerEvent(trig, 0, false) return true endfunction R„;ˆD1ˆNQueuedTriggerCheckfunction QueuedTriggerCheck takes nothing returns nothing local string s = "TrigQueue Check " local integer i set i = 0 loop exitwhen i >= bj_queuedExecTotal set s = s + "q[" + I2S(i) + "]=" if (bj_queuedExecTriggers[i] == null) then set s = s + "null " else set s = s + "x " endif set i = i + 1 endloop set s = s + "(" + I2S(bj_queuedExecTotal) + " total)" call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,600,s) endfunctionƒ*ˆE7†&QueuedTriggerGetIndexfunction QueuedTriggerGetIndex takes trigger trig returns integer // Determine which, if any, of the queued triggers is being removed. local integer index = 0 loop exitwhen index >= bj_queuedExecTotal if (bj_queuedExecTriggers[index] == trig) then return index endif set index = index + 1 endloop return -1 endfunctionqftfkpuz„‰Ž“˜¢¨®´ºÀÆÌÒØÞäêðöü &,28>DJPV\bhntz€†Œ’˜ž¤ª°¶¼ÂÈÎÔÚàæìòøþ "(.4:@FLRX^djpv|‚ˆŽ”š ¦¬²¸¾ÄÊÐÖÜâèîôú &0? L T ^ h ox !*4=GR]gnw‚ ‚ ‚ !‚+"‚2#‚:$‚B%‚L&‚T'‚\(‚e)‚p*‚z+ƒ,ƒ-ƒ.ƒ!/ƒ*0ƒ11ƒ:2ƒC3ƒL4ƒV5ƒ_6ƒi7ƒs8ƒ|9„:„;„<„=„%>„+?„2@„8A„>B„GC„OD„YE„aF„hG„oH„vI„}J…K…L…M… N…)O…1P…9Q…AR…IS…RT…[U…cV…mW…wX†Y† Z†[†\†&]†.^†7_†?`†Ga†Mb†Vc†]d†de†lf†ug†|h‡i‡ j‡k‡l‡$m‡+n‡3o‡=p‡Fq‡Nr‡Ss‡[sNðNTZ`flrx~„Š–œ¢¨®´ºÀÆÌÒØÞäêðöü &,28>DJPV\bhntz€†Œ’˜ž¤ª°¶¼ÂÈÎÔÚàæìòøþ "(.4:@FLRX^djpv|‚ˆŽ”š ¦¬²¸¾ÄÊÐÖÜâèîôúu‡jv‡sw‡{xˆyˆ zˆ{ˆ!|ˆ&}ˆ-~ˆ3ˆ7€ˆ9ˆ=‚ˆAƒˆC„ˆE‡ˆFˆˆG‰ˆHŠˆI‹ˆMŒˆSˆTŽˆZˆ_ˆc‘ˆf“ˆh”ˆj•ˆl–ˆo—ˆq˜ˆr™ˆtšˆv›ˆxœˆ}‰Ÿ‰ ‰¡‰ ¢‰ £‰¤‰¦‰§‰¨‰©‰ª‰!«‰%¬‰(­‰+®‰,¯‰-°‰0±‰4²‰9³‰>´‰Bµ‰D¶‰F·‰L¸‰P¹‰Tº‰W»‰\¼‰a½‰e¾‰i¿‰nÀ‰rÁ‰u‰vÉwĉxʼn{ÆŠÇŠÈŠÉŠÊŠËŠÍŠΊÏŠЊÑŠ#ÒŠ%ÓŠ&ÔŠ'ÕŠ)ÖŠ-׊0ØŠ3ÙŠ8ÚŠ>ÛŠBÜŠCÝŠFÞŠHߊKàŠNáŠQâŠTãŠWåŠZçŠ^èŠcéŠeêŠhëŠmìŠpíŠrîŠvïŠx CC…9ˆFAŠ:QueuedTriggerRemoveByIndexfunction QueuedTriggerRemoveByIndex takes integer trigIndex returns boolean local integer index // If the to-be-removed index is out of range, fail. if (trigIndex >= bj_queuedExecTotal) then return false endif // Shift all queue entries down to fill in the gap. set bj_queuedExecTotal = bj_queuedExecTotal - 1 set index = trigIndex loop exitwhen index >= bj_queuedExecTotal set bj_queuedExecTriggers[index] = bj_queuedExecTriggers[index + 1] set bj_queuedExecUseConds[index] = bj_queuedExecUseConds[index + 1] set index = index + 1 endloop return true endfunction ÚÚ„"ˆG=ˆQueuedTriggerAttemptExecfunction QueuedTriggerAttemptExec takes nothing returns boolean loop exitwhen bj_queuedExecTotal == 0 if TriggerExecuteBJ(bj_queuedExecTriggers[0], bj_queuedExecUseConds[0]) then // Timeout the queue if it sits at the front of the queue for too long. call TimerStart(bj_queuedExecTimeoutTimer, bj_QUEUED_TRIGGER_TIMEOUT, false, null) return true endif call QueuedTriggerRemoveByIndex(0) endloop return false endfunction @@…<ˆH1ŠPQueuedTriggerAddBJfunction QueuedTriggerAddBJ takes trigger trig, boolean checkConditions returns boolean // Make sure our queue isn't full. If it is, return failure. if (bj_queuedExecTotal >= bj_MAX_QUEUED_TRIGGERS) then return false endif // Add the trigger to an array of to-be-executed triggers. set bj_queuedExecTriggers[bj_queuedExecTotal] = trig set bj_queuedExecUseConds[bj_queuedExecTotal] = checkConditions set bj_queuedExecTotal = bj_queuedExecTotal + 1 // If this is the only trigger in the queue, run it. if (bj_queuedExecTotal == 1) then call QueuedTriggerAttemptExec() endif return true endfunction ff…ˆI7‰~QueuedTriggerRemoveBJfunction QueuedTriggerRemoveBJ takes trigger trig returns nothing local integer index local integer trigIndex local boolean trigExecuted // Find the trigger's index. set trigIndex = QueuedTriggerGetIndex(trig) if (trigIndex == -1) then return endif // Shuffle the other trigger entries down to fill in the gap. call QueuedTriggerRemoveByIndex(trigIndex) // If we just axed the currently running trigger, run the next one. if (trigIndex == 0) then call PauseTimer(bj_queuedExecTimeoutTimer) call QueuedTriggerAttemptExec() endif endfunction  ÅyƒxˆJ3‡FQueuedTriggerDoneBJfunction QueuedTriggerDoneBJ takes nothing returns nothing local integer index // Make sure there's something on the queue to remove. if (bj_queuedExecTotal <= 0) then return endif // Remove the currently running trigger from the array. call QueuedTriggerRemoveByIndex(0) // If other triggers are waiting to run, run one of them. call PauseTimer(bj_queuedExecTimeoutTimer) call QueuedTriggerAttemptExec() endfunction4ˆK5‚<QueuedTriggerClearBJfunction QueuedTriggerClearBJ takes nothing returns nothing call PauseTimer(bj_queuedExecTimeoutTimer) set bj_queuedExecTotal = 0 endfunction0ˆLE‚$QueuedTriggerClearInactiveBJfunction QueuedTriggerClearInactiveBJ takes nothing returns nothing set bj_queuedExecTotal = IMinBJ(bj_queuedExecTotal, 1) endfunctionˆM5ZQueuedTriggerCountBJfunction QueuedTriggerCountBJ takes nothing returns integer return bj_queuedExecTotal endfunction ÉÉWìhör ˆN7fIsTriggerQueueEmptyBJfunction IsTriggerQueueEmptyBJ takes nothing returns boolean return bj_queuedExecTotal <= 0 endfunctionˆO/|IsTriggerQueuedBJfunction IsTriggerQueuedBJ takes trigger trig returns boolean return QueuedTriggerGetIndex(trig) != -1 endfunctionyˆP-NGetForLoopIndexAfunction GetForLoopIndexA takes nothing returns integer return bj_forLoopAIndex endfunction ˆQ-pSetForLoopIndexAfunction SetForLoopIndexA takes integer newIndex returns nothing set bj_forLoopAIndex = newIndex endfunctionyˆR-NGetForLoopIndexBfunction GetForLoopIndexB takes nothing returns integer return bj_forLoopBIndex endfunction ˆS-pSetForLoopIndexBfunction SetForLoopIndexB takes integer newIndex returns nothing set bj_forLoopBIndex = newIndex endfunction ¯¯†MˆT!PolledWaitfunction PolledWait takes real duration returns nothing local timer t local real timeRemaining if (duration > 0) then set t = CreateTimer() call TimerStart(t, duration, false, null) loop set timeRemaining = TimerGetRemaining(t) exitwhen timeRemaining <= 0 // If we have a bit of time left, skip past 10% of the remaining // duration instead of checking every interval, to minimize the // polling on long waits. if (timeRemaining > bj_POLLED_WAIT_SKIP_THRESHOLD) then call TriggerSleepAction(0.1 * timeRemaining) else call TriggerSleepAction(bj_POLLED_WAIT_INTERVAL) endif endloop call DestroyTimer(t) endif endfunction ÄÄ ñWåtXˆU/ƒ IntegerTertiaryOpfunction IntegerTertiaryOp takes boolean flag, integer valueA, integer valueB returns integer if flag then return valueA else return valueB endif endfunctionNˆVDoNothingfunction DoNothing takes nothing returns nothing endfunctioncˆW'(CommentStringfunction CommentString takes string commentString returns nothing endfunction ˆX)tStringIdentityfunction StringIdentity takes string theString returns string return GetLocalizedString(theString) endfunction ˆY'xGetBooleanAndfunction GetBooleanAnd takes boolean valueA, boolean valueB returns boolean return valueA and valueB endfunctionˆZ%tGetBooleanOrfunction GetBooleanOr takes boolean valueA, boolean valueB returns boolean return valueA or valueB endfunction gg *µQ‚5ˆ[%„NPercentToIntfunction PercentToInt takes real percentage, integer max returns integer local integer result = R2I(percentage * I2R(max) * 0.01) if (result < 0) then set result = 0 elseif (result > max) then set result = max endif return result endfunctionˆ\%pPercentTo255function PercentTo255 takes real percentage returns integer return PercentToInt(percentage, 255) endfunctionˆ]%rGetTimeOfDayfunction GetTimeOfDay takes nothing returns real return GetFloatGameState(GAME_STATE_TIME_OF_DAY) endfunctionˆ^%‚SetTimeOfDayfunction SetTimeOfDay takes real whatTime returns nothing call SetFloatGameState(GAME_STATE_TIME_OF_DAY, whatTime) endfunction+ˆ_A‚SetTimeOfDayScalePercentBJfunction SetTimeOfDayScalePercentBJ takes real scalePercent returns nothing call SetTimeOfDayScale(scalePercent * 0.01) endfunction ŸŸ68ˆ`AnGetTimeOfDayScalePercentBJfunction GetTimeOfDayScalePercentBJ takes nothing returns real return GetTimeOfDayScale() * 100 endfunction~ˆaƒfPlaySoundfunction PlaySound takes string soundName returns nothing local sound soundHandle = CreateSound(soundName, false, false, true, 12700, 12700, "") call StartSound(soundHandle) call KillSoundWhenDone(soundHandle) endfunctionEˆb1‚bCompareLocationsBJfunction CompareLocationsBJ takes location A, location B returns boolean return GetLocationX(A) == GetLocationX(B) and GetLocationY(A) == GetLocationY(B) endfunction{ˆc)ƒVCompareRectsBJfunction CompareRectsBJ takes rect A, rect B returns boolean return GetRectMinX(A) == GetRectMinX(B) and GetRectMinY(A) == GetRectMinY(B) and GetRectMaxX(A) == GetRectMaxX(B) and GetRectMaxY(A) == GetRectMaxY(B) endfunction aau‚+ˆd3„,GetRectFromCircleBJfunction GetRectFromCircleBJ takes location center, real radius returns rect local real centerX = GetLocationX(center) local real centerY = GetLocationY(center) return Rect(centerX - radius, centerY - radius, centerX + radius, centerY + radius) endfunction‰Yˆe7“GetCurrentCameraSetupfunction GetCurrentCameraSetup takes nothing returns camerasetup local camerasetup theCam = CreateCameraSetup() local real duration = 0 call CameraSetupSetField(theCam, CAMERA_FIE’ƒˆf?…XCameraSetupApplyForPlayerfunction CameraSetupApplyForPlayer takes boolean doPan, camerasetup whichSetup, player whichPlayer, real duration returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call CameraSetupApplyForceDuration(whichSetup, doPan, duration) endif endfunctionLD_TARGET_DISTANCE, GetCameraField(CAMERA_FIELD_TARGET_DISTANCE), duration) call CameraSetupSetField(theCam, CAMERA_FIELD_FARZ, GetCameraField(CAMERA_FIELD_FARZ), duration) call CameraSetupSetField(theCam, CAMERA_FIELD_ZOFFSET, GetCameraField(CAMERA_FIELD_ZOFFSET), duration) call CameraSetupSetField(theCam, CAMERA_FIELD_ANGLE_OF_ATTACK, bj_RADTODEG * GetCameraField(CAMERA_FIELD_ANGLE_OF_ATTACK), duration) call CameraSetupSetField(theCam, CAMERA_FIELD_FIELD_OF_VIEW, bj_RADTODEG * GetCameraField(CAMERA_FIELD_FIELD_OF_VIEW), duration) call CameraSetupSetField(theCam, CAMERA_FIELD_ROLL, bj_RADTODEG * GetCameraField(CAMERA_FIELD_ROLL), duration) call CameraSetupSetField(theCam, CAMERA_FIELD_ROTATION, bj_RADTODEG * GetCameraField(CAMERA_FIELD_ROTATION), duration) call CameraSetupSetDestPosition(theCam, GetCameraTargetPositionX(), GetCameraTargetPositionY(), duration) return theCam endfunction ÁÁ‹Fˆg;‚ZCameraSetupGetFieldSwapfunction CameraSetupGetFieldSwap takes camerafield whichField, camerasetup whichSetup returns real return CameraSetupGetField(whichSetup, whichField) endfunction‚qˆh;…0SetCameraFieldForPlayerfunction SetCameraFieldForPlayer takes player whichPlayer, camerafield whichField, real value, real duration returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call SetCameraField(whichField, value, duration) endif endfunction ÷÷¼ƒAˆiW†4SetCameraTargetControllerNoZForPlayerfunction SetCameraTargetControllerNoZForPlayer takes player whichPlayer, unit whichUnit, real xoffset, real yoffset, boolean inheritOrientation returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call SetCameraTargetController(whichUnit, xoffset, yoffset, inheritOrientation) endif endfunction‚@ˆjA„HSetCameraPositionForPlayerfunction SetCameraPositionForPlayer takes player whichPlayer, real x, real y returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call SetCameraPosition(x, y) endif endfunction üüd‚dˆkG… SetCameraPositionLocForPlayerfunction SetCameraPositionLocForPlayer takes player whichPlayer, location loc returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call SetCameraPosition(GetLocationX(loc), GetLocationY(loc)) endif endfunctionƒˆl;…~RotateCameraAroundLocBJfunction RotateCameraAroundLocBJ takes real degrees, location loc, player whichPlayer, real duration returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call SetCameraRotateMode(GetLocationX(loc), GetLocationY(loc), bj_DEGTORAD * degrees, duration) endif endfunction P¦‚.ˆm5„0PanCameraToForPlayerfunction PanCameraToForPlayer takes player whichPlayer, real x, real y returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call PanCameraTo(x, y) endif endfunction‚Rˆn;„rPanCameraToLocForPlayerfunction PanCameraToLocForPlayer takes player whichPlayer, location loc returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call PanCameraTo(GetLocationX(loc), GetLocationY(loc)) endif endfunction‚Vˆo?„vPanCameraToTimedForPlayerfunction PanCameraToTimedForPlayer takes player whichPlayer, real x, real y, real duration returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call PanCameraToTimed(x, y, duration) endif endfunction ÞÞ\‚zˆpE…8PanCameraToTimedLocForPlayerfunction PanCameraToTimedLocForPlayer takes player whichPlayer, location loc, real duration returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call PanCameraToTimed(GetLocationX(loc), GetLocationY(loc), duration) endif endfunctionƒ ˆqO…zPanCameraToTimedLocWithZForPlayerfunction PanCameraToTimedLocWithZForPlayer takes player whichPlayer, location loc, real zOffset, real duration returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call PanCameraToTimedWithZ(GetLocationX(loc), GetLocationY(loc), zOffset, duration) endif endfunction œœ†`ˆr-SmartCameraPanBJfunction SmartCameraPanBJ takes player whichPlayer, location loc, real duration returns nothing local real dist if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. set dist = DistanceBetweenPoints(loc, GetCameraTargetPositionLoc()) if (dist >= bj_SMARTPAN_TRESHOLD_SNAP) then // If the user is too far away, snap the camera. call PanCameraToTimed(GetLocationX(loc), GetLocationY(loc), 0) elseif (dist >= bj_SMARTPAN_TRESHOLD_PAN) then // If the user is moderately close, pan the camera. call PanCameraToTimed(GetLocationX(loc), GetLocationY(loc), duration) else // User is close enough, so don't touch the camera. endif endif endfunction __¹‚VˆsC„rSetCinematicCameraForPlayerfunction SetCinematicCameraForPlayer takes player whichPlayer, string cameraModelFile returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call SetCinematicCamera(cameraModelFile) endif endfunction‚CˆtA„NResetToGameCameraForPlayerfunction ResetToGameCameraForPlayer takes player whichPlayer, real duration returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call ResetToGameCamera(duration) endif endfunction **•‚gˆuG…CameraSetSourceNoiseForPlayerfunction CameraSetSourceNoiseForPlayer takes player whichPlayer, real magnitude, real velocity returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call CameraSetSourceNoise(magnitude, velocity) endif endfunction‚gˆvG…CameraSetTargetNoiseForPlayerfunction CameraSetTargetNoiseForPlayer takes player whichPlayer, real magnitude, real velocity returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call CameraSetTargetNoise(magnitude, velocity) endif endfunction 44¢„jˆw?‰CameraSetEQNoiseForPlayerfunction CameraSetEQNoiseForPlayer takes player whichPlayer, real magnitude returns nothing local real richter = magnitude if (richter > 5.0) then set richter = 5.0 endif if (richter < 2.0) then set richter = 2.0 endif if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call CameraSetTargetNoiseEx(magnitude*2.0, magnitude*Pow(10,richter),true) call CameraSetSourceNoiseEx(magnitude*2.0, magnitude*Pow(10,richter),true) endif endfunction‚Zˆx?„~CameraClearNoiseForPlayerfunction CameraClearNoiseForPlayer takes player whichPlayer returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call CameraSetSourceNoise(0, 0) call CameraSetTargetNoise(0, 0) endif endfunction BB&µ<µ`ˆyK‚~GetCurrentCameraBoundsMapRectBJfunction GetCurrentCameraBoundsMapRectBJ takes nothing returns rect return Rect(GetCameraBoundMinX(), GetCameraBoundMinY(), GetCameraBoundMaxX(), GetCameraBoundMaxY()) endfunction ˆz9fGetCameraBoundsMapRectfunction GetCameraBoundsMapRect takes nothing returns rect return bj_mapInitialCameraBounds endfunctionˆ{1^GetPlayableMapRectfunction GetPlayableMapRect takes nothing returns rect return bj_mapInitialPlayableArea endfunctionvˆ|-HGetEntireMapRectfunction GetEntireMapRect takes nothing returns rect return GetWorldBounds() endfunction‚Gˆ}7„`SetCameraBoundsToRectfunction SetCameraBoundsToRect takes rect r returns nothing local real minX = GetRectMinX(r) local real minY = GetRectMinY(r) local real maxX = GetRectMaxX(r) local real maxY = GetRectMaxY(r) call SetCameraBounds(minX, minY, minX, maxY, maxX, maxY, maxX, minY) endfunction JJ“M‚Eˆ~M„FSetCameraBoundsToRectForPlayerBJfunction SetCameraBoundsToRectForPlayerBJ takes player whichPlayer, rect r returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call SetCameraBoundsToRect(r) endif endfunction‰.ˆ5’0AdjustCameraBoundsBJfunction AdjustCameraBoundsBJ takes integer adjustMethod, real dxWest, real dxEast, real dyNorth, real dySouth returns nothing local real minX = 0 žƒ/‰G† AdjustCameraBoundsForPlayerBJfunction AdjustCameraBoundsForPlayerBJ takes integer adjustMethod, player whichPlayer, real dxWest, real dxEast, real dyNorth, real dySouth returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call AdjustCameraBoundsBJ(adjustMethod, dxWest, dxEast, dyNorth, dySouth) endif endfunction local real minY = 0 local real maxX = 0 local real maxY = 0 local real scale = 0 if (adjustMethod == bj_CAMERABOUNDS_ADJUST_ADD) then set scale = 1 elseif (adjustMethod == bj_CAMERABOUNDS_ADJUST_SUB) then set scale = -1 else // Unrecognized adjustment method - ignore the request. return endif // Adjust the actual camera values set minX = GetCameraBoundMinX() - scale * dxWest set maxX = GetCameraBoundMaxX() + scale * dxEast set minY = GetCameraBoundMinY() - scale * dySouth set maxY = GetCameraBoundMaxY() + scale * dyNorth // Make sure the camera bounds are still valid. if (maxX < minX) then set minX = (minX + maxX) * 0.5 set maxX = minX endif if (maxY < minY) then set minY = (minY + maxY) * 0.5 set maxY = minY endif // Apply the new camera values. call SetCameraBounds(minX, minY, minX, maxY, maxX, maxY, maxX, minY) endfunction xxËB‚O‰K„\SetCameraQuickPositionForPlayerfunction SetCameraQuickPositionForPlayer takes player whichPlayer, real x, real y returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call SetCameraQuickPosition(x, y) endif endfunction‚s‰Q…SetCameraQuickPositionLocForPlayerfunction SetCameraQuickPositionLocForPlayer takes player whichPlayer, location loc returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call SetCameraQuickPosition(GetLocationX(loc), GetLocationY(loc)) endif endfunction:‰?‚>SetCameraQuickPositionLocfunction SetCameraQuickPositionLoc takes location loc returns nothing call SetCameraQuickPosition(GetLocationX(loc), GetLocationY(loc)) endfunction ««Ê]‚‰7„StopCameraForPlayerBJfunction StopCameraForPlayerBJ takes player whichPlayer returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call StopCamera() endif endfunctionƒ‰U…RSetCameraOrientControllerForPlayerBJfunction SetCameraOrientControllerForPlayerBJ takes player whichPlayer, unit whichUnit, real xoffset, real yoffset returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call SetCameraOrientController(whichUnit, xoffset, yoffset) endif endfunction‰A‚CameraSetSmoothingFactorBJfunction CameraSetSmoothingFactorBJ takes real factor returns nothing call CameraSetSmoothingFactor(factor) endfunction ŒŒ*‰ExCameraResetSmoothingFactorBJfunction CameraResetSmoothingFactorBJ takes nothing returns nothing call CameraSetSmoothingFactor(0) endfunction‚S‰1„~DisplayTextToForcefunction DisplayTextToForce takes force toForce, string message returns nothing if (IsPlayerInForce(GetLocalPlayer(), toForce)) then // Use only local code (no net traffic) within this block to avoid desyncs. call DisplayTextToPlayer(GetLocalPlayer(), 0, 0, message) endif endfunction‚{‰ ;…DDisplayTimedTextToForcefunction DisplayTimedTextToForce takes force toForce, real duration, string message returns nothing if (IsPlayerInForce(GetLocalPlayer(), toForce)) then // Use only local code (no net traffic) within this block to avoid desyncs. call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, duration, message) endif endfunction œœÄg5‚$‰ 3„ClearTextMessagesBJfunction ClearTextMessagesBJ takes force toForce returns nothing if (IsPlayerInForce(GetLocalPlayer(), toForce)) then // Use only local code (no net traffic) within this block to avoid desyncs. call ClearTextMessages() endif endfunction‰ #‚$SubStringBJfunction SubStringBJ takes string source, integer start, integer end returns string return SubString(source, start-1, end) endfunctionJ‰ O‚NTriggerRegisterTimerEventPeriodicfunction TriggerRegisterTimerEventPeriodic takes trigger trig, real timeout returns event return TriggerRegisterTimerEvent(trig, timeout, true) endfunctionG‰ K‚LTriggerRegisterTimerEventSinglefunction TriggerRegisterTimerEventSingle takes trigger trig, real timeout returns event return TriggerRegisterTimerEvent(trig, timeout, false) endfunction ®®q|?‰O‚8TriggerRegisterTimerExpireEventBJfunction TriggerRegisterTimerExpireEventBJ takes trigger trig, timer t returns event return TriggerRegisterTimerExpireEvent(trig, t) endfunction‚‰UƒBTriggerRegisterPlayerUnitEventSimplefunction TriggerRegisterPlayerUnitEventSimple takes trigger trig, player whichPlayer, playerunitevent whichEvent returns event return TriggerRegisterPlayerUnitEvent(trig, whichPlayer, whichEvent, null) endfunctionƒ‰G…BTriggerRegisterAnyUnitEventBJfunction TriggerRegisterAnyUnitEventBJ takes trigger trig, playerunitevent whichEvent returns nothing local integer index set index = 0 loop call TriggerRegisterPlayerUnitEvent(trig, Player(index), whichEvent, null) set index = index + 1 exitwhen index == bj_MAX_PLAYER_SLOTS endloop endfunction XXƒ$‰W…zTriggerRegisterPlayerSelectionEventBJfunction TriggerRegisterPlayerSelectionEventBJ takes trigger trig, player whichPlayer, boolean selected returns event if selected then return TriggerRegisterPlayerUnitEvent(trig, whichPlayer, EVENT_PLAYER_UNIT_SELECTED, null) else return TriggerRegisterPlayerUnitEvent(trig, whichPlayer, EVENT_PLAYER_UNIT_DESELECTED, null) endif endfunctioned key - ignore the request and return failure. return null endif elseif (keType == bj_KEYEVENTTYPE_RELEASE) then // Release event - find out what key if (keKey == bj_KEYEVENTKEY_LEFT) then return TriggerRegisterPlayerEvent(trig, whichPlayer, EVENT_PLAYER_ARROW_LEFT_UP) elseif (keKey == bj_KEYEVENTKEY_RIGHT) then return TriggerRegisterPlayerEvent(trig, whichPlayer, EVENT_PLAYER_ARROW_RIGHT_UP) elseif (keKey == bj_KEYEVENTKEY_DOWN) then return TriggerRegisterPlayerEvent(trig, whichPlayer, EVENT_PLAYER_ARROW_DOWN_UP) elseif (keKey == bj_KEYEVENTKEY_UP) then return TriggerRegisterPlayerEvent(trig, whichPlayer, EVENT_PLAYER_ARROW_UP_UP) else // Unrecognized key - ignore the request and return failure. return null endif else // Unrecognized type - ignore the request and return failure. return null endif endfunction ……Žo‰KTriggerRegisterPlayerKeyEventBJfunction TriggerRegisterPlayerKeyEventBJ takes trigger trig, player whichPlayer, integer keType, integer keKey returns event if (keType == bj_KEYEVENTTYPE_DEPRESS) then // Depress event - find out what key if (keKey == bj_KEYEVENTKEY_LEFT) then return TriggerRegisterPlayerEvent(trig, whichPlayer, EVENT_PLAYER_ARROW_LEFT_DOWN) elseif (keKey == bj_KEYEVENTKEY_RIGHT) then return TriggerRegisterPlayerEvent(trig, whichPlayer, EVENT_PLAYER_ARROW_RIGHT_DOWN) elseif (keKey == bj_KEYEVENTKEY_DOWN) then return TriggerRegisterPlayerEvent(trig, whichPlayer, EVENT_PLAYER_ARROW_DOWN_DOWN) elseif (keKey == bj_KEYEVENTKEY_UP) then return TriggerRegisterPlayerEvent(trig, whichPlayer, EVENT_PLAYER_ARROW_UP_DOWN) else // Unrecogniz¥ LL5þe‰OƒTriggerRegisterPlayerEventVictoryfunction TriggerRegisterPlayerEventVictory takes trigger trig, player whichPlayer returns event return TriggerRegisterPlayerEvent(trig, whichPlayer, EVENT_PLAYER_VICTORY) endfunctionb‰MƒTriggerRegisterPlayerEventDefeatfunction TriggerRegisterPlayerEventDefeat takes trigger trig, player whichPlayer returns event return TriggerRegisterPlayerEvent(trig, whichPlayer, EVENT_PLAYER_DEFEAT) endfunction_‰K‚|TriggerRegisterPlayerEventLeavefunction TriggerRegisterPlayerEventLeave takes trigger trig, player whichPlayer returns event return TriggerRegisterPlayerEvent(trig, whichPlayer, EVENT_PLAYER_LEAVE) endfunction~‰_ƒ&TriggerRegisterPlayerEventAllianceChangedfunction TriggerRegisterPlayerEventAllianceChanged takes trigger trig, player whichPlayer returns event return TriggerRegisterPlayerEvent(trig, whichPlayer, EVENT_PLAYER_ALLIANCE_CHANGED) endfunction QQJR)u‰YƒTriggerRegisterPlayerEventEndCinematicfunction TriggerRegisterPlayerEventEndCinematic takes trigger trig, player whichPlayer returns event return TriggerRegisterPlayerEvent(trig, whichPlayer, EVENT_PLAYER_END_CINEMATIC) endfunction‚‰Yƒ8TriggerRegisterGameStateEventTimeOfDayfunction TriggerRegisterGameStateEventTimeOfDay takes trigger trig, limitop opcode, real limitval returns event return TriggerRegisterGameStateEvent(trig, GAME_STATE_TIME_OF_DAY, opcode, limitval) endfunctionS‰M‚bTriggerRegisterEnterRegionSimplefunction TriggerRegisterEnterRegionSimple takes trigger trig, region whichRegion returns event return TriggerRegisterEnterRegion(trig, whichRegion, null) endfunctionS‰M‚bTriggerRegisterLeaveRegionSimplefunction TriggerRegisterLeaveRegionSimple takes trigger trig, region whichRegion returns event return TriggerRegisterLeaveRegion(trig, whichRegion, null) endfunction ÇÇâý‚‰IƒnTriggerRegisterEnterRectSimplefunction TriggerRegisterEnterRectSimple takes trigger trig, rect r returns event local region rectRegion = CreateRegion() call RegionAddRect(rectRegion, r) return TriggerRegisterEnterRegion(trig, rectRegion, null) endfunction‚‰IƒnTriggerRegisterLeaveRectSimplefunction TriggerRegisterLeaveRectSimple takes trigger trig, rect r returns event local region rectRegion = CreateRegion() call RegionAddRect(rectRegion, r) return TriggerRegisterLeaveRegion(trig, rectRegion, null) endfunction‰Sƒ4TriggerRegisterDistanceBetweenUnitsfunction TriggerRegisterDistanceBetweenUnits takes trigger trig, unit whichUnit, boolexpr condition, real range returns event return TriggerRegisterUnitInRange(trig, whichUnit, range, condition) endfunction CC'/7`‰M‚|TriggerRegisterUnitInRangeSimplefunction TriggerRegisterUnitInRangeSimple takes trigger trig, real range, unit whichUnit returns event return TriggerRegisterUnitInRange(trig, whichUnit, range, null) endfunction‚‰EƒLTriggerRegisterUnitLifeEventfunction TriggerRegisterUnitLifeEvent takes trigger trig, unit whichUnit, limitop opcode, real limitval returns event return TriggerRegisterUnitStateEvent(trig, whichUnit, UNIT_STATE_LIFE, opcode, limitval) endfunction‚‰ EƒLTriggerRegisterUnitManaEventfunction TriggerRegisterUnitManaEvent takes trigger trig, unit whichUnit, limitop opcode, real limitval returns event return TriggerRegisterUnitStateEvent(trig, whichUnit, UNIT_STATE_MANA, opcode, limitval) endfunctionE‰!E‚NTriggerRegisterDialogEventBJfunction TriggerRegisterDialogEventBJ takes trigger trig, dialog whichDialog returns event return TriggerRegisterDialogEvent(trig, whichDialog) endfunction óó¶‚C?‰"K‚<TriggerRegisterShowSkillEventBJfunction TriggerRegisterShowSkillEventBJ takes trigger trig returns event return TriggerRegisterGameEvent(trig, EVENT_GAME_SHOW_SKILL) endfunctionH‰#Q‚HTriggerRegisterBuildSubmenuEventBJfunction TriggerRegisterBuildSubmenuEventBJ takes trigger trig returns event return TriggerRegisterGameEvent(trig, EVENT_GAME_BUILD_SUBMENU) endfunction=‰$M‚6TriggerRegisterGameLoadedEventBJfunction TriggerRegisterGameLoadedEventBJ takes trigger trig returns event return TriggerRegisterGameEvent(trig, EVENT_GAME_LOADED) endfunction9‰%K‚0TriggerRegisterGameSavedEventBJfunction TriggerRegisterGameSavedEventBJ takes trigger trig returns event return TriggerRegisterGameEvent(trig, EVENT_GAME_SAVE) endfunction ½WW‚b‰&G…RegisterDestDeathInRegionEnumfunction RegisterDestDeathInRegionEnum takes nothing returns nothing set bj_destInRegionDiesCount = bj_destInRegionDiesCount + 1 if (bj_destInRegionDiesCount <= bj_MAX_DEST_IN_REGION_EVENTS) then call TriggerRegisterDeathEvent(bj_destInRegionDiesTrig, GetEnumDestructable()) endif endfunctionGx‰(=ƒ<AddWeatherEffectSaveLastfunction AddWeatherEffectSaveLast takes rect where, integer effectID returns weathereffect set bj_lastCreatedWeatherEffect = AddWeatherEffect(where, effectID) return bj_lastCreatedWeatherEffect endfunction Ãx ‰)C‚GetLastCreatedWeatherEffectfunction GetLastCreatedWeatherEffect takes nothing returns weathereffect return bj_lastCreatedWeatherEffect endfunction1‰*7‚4RemoveWeatherEffectBJfunction RemoveWeatherEffectBJ takes weathereffect whichWeatherEffect returns nothing call RemoveWeatherEffect(whichWeatherEffect) endfunctionƒ‰+A…PTerrainDeformationCraterBJfunction TerrainDeformationCraterBJ takes real duration, boolean permanent, location where, real radius, real depth returns terraindeformation set bj_lastCreatedTerrainDeformation = TerrainDeformCrater(GetLocationX(where), GetLocationY(where), radius, depth, R2I(duration * 1000), permanent) return bj_lastCreatedTerrainDeformation endfunction ÔÔ†(‰,AŒTerrainDeformationRippleBJfunction TerrainDeformationRippleBJ takes real duration, boolean limitNeg, location where, real startRadius, real endRadius, real depth, real wavePeriod, real waveWidth returns terraindeformation local real spaceWave local real timeWave local real radiusRatio if (endRadius <= 0 or waveWidth <= 0 or wavePeriod <= 0) then return null endif set timeWave = 2.0 * duration / wavePeriod set spaceWave = 2.0 * endRadius / waveWidth set radiusRatio = startRadius / endRadius set bj_lastCreatedTerrainDeformation = TerrainDeformRipple(GetLocationX(where), GetLocationY(where), endRadius, depth, R2I(duration * 1000), 1, spaceWave, timeWave, radiusRatio, limitNeg) return bj_lastCreatedTerrainDeformation endfunction ··†E‰-=ŒVTerrainDeformationWaveBJfunction TerrainDeformationWaveBJ takes real duration, location source, location target, real radius, real depth, real trailDelay returns terraindeformation local real distance local real dirX local real dirY local real speed set distance = DistanceBetweenPoints(source, target) if (distance == 0 or duration <= 0) then return null endif set dirX = (GetLocationX(target) - GetLocationX(source)) / distance set dirY = (GetLocationY(target) - GetLocationY(source)) / distance set speed = distance / duration set bj_lastCreatedTerrainDeformation = TerrainDeformWave(GetLocationX(source), GetLocationY(source), dirX, dirY, distance, speed, radius, depth, R2I(trailDelay * 1000), 1) return bj_lastCreatedTerrainDeformation endfunction ¹¹sHƒ6‰.A†4TerrainDeformationRandomBJfunction TerrainDeformationRandomBJ takes real duration, location where, real radius, real minDelta, real maxDelta, real updateInterval returns terraindeformation set bj_lastCreatedTerrainDeformation = TerrainDeformRandom(GetLocationX(where), GetLocationY(where), radius, minDelta, maxDelta, R2I(duration * 1000), R2I(updateInterval * 1000)) return bj_lastCreatedTerrainDeformation endfunctionQ‰/=‚nTerrainDeformationStopBJfunction TerrainDeformationStopBJ takes terraindeformation deformation, real duration returns nothing call TerrainDeformStop(deformation, R2I(duration * 1000)) endfunction4‰0M‚$GetLastCreatedTerrainDeformationfunction GetLastCreatedTerrainDeformation takes nothing returns terraindeformation return bj_lastCreatedTerrainDeformation endfunction Ž&e‚p‰1+…>AddLightningLocfunction AddLightningLoc takes string codeName, location where1, location where2 returns lightning set bj_lastCreatedLightning = AddLightningEx(codeName, true, GetLocationX(where1), GetLocationY(where1), GetLocationZ(where1), GetLocationX(where2), GetLocationY(where2), GetLocationZ(where2)) return bj_lastCreatedLightning endfunction‰21‚DestroyLightningBJfunction DestroyLightningBJ takes lightning whichBolt returns boolean return DestroyLightning(whichBolt) endfunction‚;‰3-„RMoveLightningLocfunction MoveLightningLoc takes lightning whichBolt, location where1, location where2 returns boolean return MoveLightningEx(whichBolt, true, GetLocationX(where1), GetLocationY(where1), GetLocationZ(where1), GetLocationX(where2), GetLocationY(where2), GetLocationZ(where2)) endfunction‰45‚GetLightningColorABJfunction GetLightningColorABJ takes lightning whichBolt returns real return GetLightningColorA(whichBolt) endfunction ÐÐk¡h‰55‚GetLightningColorRBJfunction GetLightningColorRBJ takes lightning whichBolt returns real return GetLightningColorR(whichBolt) endfunction‰65‚GetLightningColorGBJfunction GetLightningColorGBJ takes lightning whichBolt returns real return GetLightningColorG(whichBolt) endfunction‰75‚GetLightningColorBBJfunction GetLightningColorBBJ takes lightning whichBolt returns real return GetLightningColorB(whichBolt) endfunctionC‰83‚\SetLightningColorBJfunction SetLightningColorBJ takes lightning whichBolt, real r, real g, real b, real a returns boolean return SetLightningColor(whichBolt, r, g, b, a) endfunction‰9?rGetLastCreatedLightningBJfunction GetLastCreatedLightningBJ takes nothing returns lightning return bj_lastCreatedLightning endfunction ||:ÞœH:‰:1‚LGetAbilityEffectBJfunction GetAbilityEffectBJ takes integer abilcode, effecttype t, integer index returns string return GetAbilityEffectById(abilcode, t, index) endfunction ‰;/‚GetAbilitySoundBJfunction GetAbilitySoundBJ takes integer abilcode, soundtype t returns string return GetAbilitySoundById(abilcode, t) endfunction:‰<9‚DGetTerrainCliffLevelBJfunction GetTerrainCliffLevelBJ takes location where returns integer return GetTerrainCliffLevel(GetLocationX(where), GetLocationY(where)) endfunction(‰=-‚,GetTerrainTypeBJfunction GetTerrainTypeBJ takes location where returns integer return GetTerrainType(GetLocationX(where), GetLocationY(where)) endfunction4‰>5‚<GetTerrainVarianceBJfunction GetTerrainVarianceBJ takes location where returns integer return GetTerrainVariance(GetLocationX(where), GetLocationY(where)) endfunction >>Rõ‚‰?-ƒ|SetTerrainTypeBJfunction SetTerrainTypeBJ takes location where, integer terrainType, integer variation, integer area, integer shape returns nothing call SetTerrainType(GetLocationX(where), GetLocationY(where), terrainType, variation, area, shape) endfunctionC‰@3‚\IsTerrainPathableBJfunction IsTerrainPathableBJ takes location where, pathingtype t returns boolean return IsTerrainPathable(GetLocationX(where), GetLocationY(where), t) endfunctionX‰A5ƒSetTerrainPathableBJfunction SetTerrainPathableBJ takes location where, pathingtype t, boolean flag returns nothing call SetTerrainPathable(GetLocationX(where), GetLocationY(where), t, flag) endfunction‚‰B3ƒdSetWaterBaseColorBJfunction SetWaterBaseColorBJ takes real red, real green, real blue, real transparency returns nothing call SetWaterBaseColor(PercentTo255(red), PercentTo255(green), PercentTo255(blue), PercentTo255(100.0-transparency)) endfunction 88ƒ‚G‰CC„TCreateFogModifierRectSimplefunction CreateFogModifierRectSimple takes player whichPlayer, fogstate whichFogState, rect r, boolean afterUnits returns fogmodifier set bj_lastCreatedFogModifier = CreateFogModifierRect(whichPlayer, whichFogState, r, true, afterUnits) return bj_lastCreatedFogModifier endfunction‚y‰DM….CreateFogModifierRadiusLocSimplefunction CreateFogModifierRadiusLocSimple takes player whichPlayer, fogstate whichFogState, location center, real radius, boolean afterUnits returns fogmodifier set bj_lastCreatedFogModifier = CreateFogModifierRadiusLoc(whichPlayer, whichFogState, center, radius, true, afterUnits) return bj_lastCreatedFogModifier endfunction ¤¤9ƒ‰E;…pCreateFogModifierRectBJfunction CreateFogModifierRectBJ takes boolean enabled, player whichPlayer, fogstate whichFogState, rect r returns fogmodifier set bj_lastCreatedFogModifier = CreateFogModifierRect(whichPlayer, whichFogState, r, true, false) if enabled then call FogModifierStart(bj_lastCreatedFogModifier) endif return bj_lastCreatedFogModifier endfunctionƒC‰FE†JCreateFogModifierRadiusLocBJfunction CreateFogModifierRadiusLocBJ takes boolean enabled, player whichPlayer, fogstate whichFogState, location center, real radius returns fogmodifier set bj_lastCreatedFogModifier = CreateFogModifierRadiusLoc(whichPlayer, whichFogState, center, radius, true, false) if enabled then call FogModifierStart(bj_lastCreatedFogModifier) endif return bj_lastCreatedFogModifier endfunction  üz‰G?zGetLastCreatedFogModifierfunction GetLastCreatedFogModifier takes nothing returns fogmodifier return bj_lastCreatedFogModifier endfunctionl‰H#>FogEnableOnfunction FogEnableOn takes nothing returns nothing call FogEnable(true) endfunctiono‰I%BFogEnableOfffunction FogEnableOff takes nothing returns nothing call FogEnable(false) endfunctionx‰J+NFogMaskEnableOnfunction FogMaskEnableOn takes nothing returns nothing call FogMaskEnable(true) endfunction{‰K-RFogMaskEnableOfffunction FogMaskEnableOff takes nothing returns nothing call FogMaskEnable(false) endfunction‰L)dUseTimeOfDayBJfunction UseTimeOfDayBJ takes boolean flag returns nothing call SuspendTimeOfDay(not flag) endfunction ‘‘Ÿ/‚ ‰M/ƒnSetTerrainFogExBJfunction SetTerrainFogExBJ takes integer style, real zstart, real zend, real density, real red, real green, real blue returns nothing call SetTerrainFogEx(style, zstart, zend, density, red * 0.01, green * 0.01, blue * 0.01) endfunctionz‰N/NResetTerrainFogBJfunction ResetTerrainFogBJ takes nothing returns nothing call ResetTerrainFog() endfunction‚‰O5ƒrSetDoodadAnimationBJfunction SetDoodadAnimationBJ takes string animName, integer doodadID, real radius, location center returns nothing call SetDoodadAnimation(GetLocationX(center), GetLocationY(center), radius, doodadID, false, animName, false) endfunctionM‰P=‚fSetDoodadAnimationRectBJfunction SetDoodadAnimationRectBJ takes string animName, integer doodadID, rect r returns nothing call SetDoodadAnimationRect(r, doodadID, animName, false) endfunction ^^Fˆd‰QEƒ AddUnitAnimationPropertiesBJfunction AddUnitAnimationPropertiesBJ takes boolean add, string animProperties, unit whichUnit returns nothing call AddUnitAnimationProperties(whichUnit, animProperties, add) endfunction‚>‰R'„^CreateImageBJfunction CreateImageBJ takes string file, real size, location where, real zOffset, integer imageType returns image set bj_lastCreatedImage = CreateImage(file, size, size, size, GetLocationX(where), GetLocationY(where), zOffset, 0, 0, 0, imageType) return bj_lastCreatedImage endfunction‰S#‚ShowImageBJfunction ShowImageBJ takes boolean flag, image whichImage returns nothing call ShowImage(whichImage, flag) endfunctiona‰T1ƒSetImagePositionBJfunction SetImagePositionBJ takes image whichImage, location where, real zOffset returns nothing call SetImagePosition(whichImage, GetLocationX(where), GetLocationY(where), zOffset) endfunction ¦¦µ9‚ ‰U+ƒtSetImageColorBJfunction SetImageColorBJ takes image whichImage, real red, real green, real blue, real alpha returns nothing call SetImageColor(whichImage, PercentTo255(red), PercentTo255(green), PercentTo255(blue), PercentTo255(100.0-alpha)) endfunction‰V3VGetLastCreatedImagefunction GetLastCreatedImage takes nothing returns image return bj_lastCreatedImage endfunctionƒC‰W/†`CreateUbersplatBJfunction CreateUbersplatBJ takes location where, string name, real red, real green, real blue, real alpha, boolean forcePaused, boolean noBirthTime returns ubersplat set bj_lastCreatedUbersplat = CreateUbersplat(GetLocationX(where), GetLocationY(where), name, PercentTo255(red), PercentTo255(green), PercentTo255(blue), PercentTo255(100.0-alpha), forcePaused, noBirthTime) return bj_lastCreatedUbersplat endfunction ƒƒ&º˜:‰X+‚ShowUbersplatBJfunction ShowUbersplatBJ takes boolean flag, ubersplat whichSplat returns nothing call ShowUbersplat(whichSplat, flag) endfunction‰Y;nGetLastCreatedUbersplatfunction GetLastCreatedUbersplat takes nothing returns ubersplat return bj_lastCreatedUbersplat endfunctionZ‰Z#ƒPlaySoundBJfunction PlaySoundBJ takes sound soundHandle returns nothing set bj_lastPlayedSound = soundHandle if (soundHandle != null) then call StartSound(soundHandle) endif endfunction‰[#‚"StopSoundBJfunction StopSoundBJ takes sound soundHandle, boolean fadeOut returns nothing call StopSound(soundHandle, false, fadeOut) endfunctionB‰\-‚`SetSoundVolumeBJfunction SetSoundVolumeBJ takes sound soundHandle, real volumePercent returns nothing call SetSoundVolume(soundHandle, PercentToInt(volumePercent, 127)) endfunction WWÑqL9‰]-‚NSetSoundOffsetBJfunction SetSoundOffsetBJ takes real newOffset, sound soundHandle returns nothing call SetSoundPlayPosition(soundHandle, R2I(newOffset * 1000)) endfunction9‰^=‚>SetSoundDistanceCutoffBJfunction SetSoundDistanceCutoffBJ takes sound soundHandle, real cutoff returns nothing call SetSoundDistanceCutoff(soundHandle, cutoff) endfunction‰_+‚SetSoundPitchBJfunction SetSoundPitchBJ takes sound soundHandle, real pitch returns nothing call SetSoundPitch(soundHandle, pitch) endfunctionW‰`7ƒSetSoundPositionLocBJfunction SetSoundPositionLocBJ takes sound soundHandle, location loc, real z returns nothing call SetSoundPosition(soundHandle, GetLocationX(loc), GetLocationY(loc), z) endfunction0‰a3‚6AttachSoundToUnitBJfunction AttachSoundToUnitBJ takes sound soundHandle, unit whichUnit returns nothing call AttachSoundToUnit(soundHandle, whichUnit) endfunction  ¹à‚‰b5ƒdSetSoundConeAnglesBJfunction SetSoundConeAnglesBJ takes sound soundHandle, real inside, real outside, real outsideVolumePercent returns nothing call SetSoundConeAngles(soundHandle, inside, outside, PercentToInt(outsideVolumePercent, 127)) endfunction‰c3‚KillSoundWhenDoneBJfunction KillSoundWhenDoneBJ takes sound soundHandle returns nothing call KillSoundWhenDone(soundHandle) endfunction‚#‰d1„PlaySoundAtPointBJfunction PlaySoundAtPointBJ takes sound soundHandle, real volumePercent, location loc, real z returns nothing call SetSoundPositionLocBJ(soundHandle, loc, z) call SetSoundVolumeBJ(soundHandle, volumePercent) call PlaySoundBJ(soundHandle) endfunction‚‰e/„PlaySoundOnUnitBJfunction PlaySoundOnUnitBJ takes sound soundHandle, real volumePercent, unit whichUnit returns nothing call AttachSoundToUnitBJ(soundHandle, whichUnit) call SetSoundVolumeBJ(soundHandle, volumePercent) call PlaySoundBJ(soundHandle) endfunction ppŸQc‚+‰f7„(PlaySoundFromOffsetBJfunction PlaySoundFromOffsetBJ takes sound soundHandle, real volumePercent, real startingOffset returns nothing call SetSoundVolumeBJ(soundHandle, volumePercent) call PlaySoundBJ(soundHandle) call SetSoundOffsetBJ(startingOffset, soundHandle) endfunction.‰g#‚BPlayMusicBJfunction PlayMusicBJ takes string musicFileName returns nothing set bj_lastPlayedMusic = musicFileName call PlayMusic(musicFileName) endfunction‚‰h'ƒ~PlayMusicExBJfunction PlayMusicExBJ takes string musicFileName, real startingOffset, real fadeInTime returns nothing set bj_lastPlayedMusic = musicFileName call PlayMusicEx(musicFileName, R2I(startingOffset * 1000), R2I(fadeInTime * 1000)) endfunction‰i-‚SetMusicOffsetBJfunction SetMusicOffsetBJ takes real newOffset returns nothing call SetMusicPlayPosition(R2I(newOffset * 1000)) endfunction îî„Q†‰j3zPlayThematicMusicBJfunction PlayThematicMusicBJ takes string musicName returns nothing call PlayThematicMusic(musicName) endfunctionI‰k7‚dPlayThematicMusicExBJfunction PlayThematicMusicExBJ takes string musicName, real startingOffset returns nothing call PlayThematicMusicEx(musicName, R2I(startingOffset * 1000)) endfunction1‰l=‚.SetThematicMusicOffsetBJfunction SetThematicMusicOffsetBJ takes real newOffset returns nothing call SetThematicMusicPlayPosition(R2I(newOffset * 1000)) endfunction}‰m1REndThematicMusicBJfunction EndThematicMusicBJ takes nothing returns nothing call EndThematicMusic() endfunctionw‰n#TStopMusicBJfunction StopMusicBJ takes boolean fadeOut returns nothing call StopMusic(fadeOut) endfunction ..ŸEMn‰o'>ResumeMusicBJfunction ResumeMusicBJ takes nothing returns nothing call ResumeMusic() endfunction"‰p-‚ SetMusicVolumeBJfunction SetMusicVolumeBJ takes real volumePercent returns nothing call SetMusicVolume(PercentToInt(volumePercent, 127)) endfunction‚‰q1ƒ`GetSoundDurationBJfunction GetSoundDurationBJ takes sound soundHandle returns real if (soundHandle == null) then return bj_NOTHING_SOUND_DURATION else return I2R(GetSoundDuration(soundHandle)) * 0.001 endif endfunction/‰r9‚.GetSoundFileDurationBJfunction GetSoundFileDurationBJ takes string musicFileName returns real return I2R(GetSoundFileDuration(musicFileName)) * 0.001 endfunction CCÃD}‰s1RGetLastPlayedSoundfunction GetLastPlayedSound takes nothing returns sound return bj_lastPlayedSound endfunction~‰t1TGetLastPlayedMusicfunction GetLastPlayedMusic takes nothing returns string return bj_lastPlayedMusic endfunction8‰u9‚@VolumeGroupSetVolumeBJfunction VolumeGroupSetVolumeBJ takes volumegroup vgroup, real percent returns nothing call VolumeGroupSetVolume(vgroup, percent * 0.01) endfunction šš†b‰vQŒ|SetCineModeVolumeGroupsImmediateBJfunction SetCineModeVolumeGroupsImmediateBJ takes nothing returns nothing call VolumeGroupSetVolume(SOUND_VOLUMEGROUP_UNITMOVEMENT, bj_CINEMODE_VOLUME_UNITMOVEMENT) call VolumeGroupSetVolume(SOUND_VOLUMEGROUP_UNITSOUNDS, bj_CINEMODE_VOLUME_UNITSOUNDS) call VolumeGroupSetVolume(SOUND_VOLUMEGROUP_COMBAT, bj_CINEMODE_VOLUME_COMBAT) call VolumeGroupSetVolume(SOUND_VOLUMEGROUP_SPELLS, bj_CINEMODE_VOLUME_SPELLS) call VolumeGroupSetVolume(SOUND_VOLUMEGROUP_UI, bj_CINEMODE_VOLUME_UI) call VolumeGroupSetVolume(SOUND_VOLUMEGROUP_MUSIC, bj_CINEMODE_VOLUME_MUSIC) call VolumeGroupSetVolume(SOUND_VOLUMEGROUP_AMBIENTSOUNDS, bj_CINEMODE_VOLUME_AMBIENTSOUNDS) call VolumeGroupSetVolume(SOUND_VOLUMEGROUP_FIRE, bj_CINEMODE_VOLUME_FIRE) endfunction xxƒ‰w?…RSetCineModeVolumeGroupsBJfunction SetCineModeVolumeGroupsBJ takes nothing returns nothing // Delay the request if it occurs at map init. if bj_gameStarted then call SetCineModeVolumeGroupsImmediateBJ() else call TimerStart(bj_volumeGroupsTimer, bj_GAME_STARTED_THRESHOLD, false, function SetCineModeVolumeGroupsImmediateBJ) endif endfunction ®®†N‰xMŒXSetSpeechVolumeGroupsImmediateBJfunction SetSpeechVolumeGroupsImmediateBJ takes nothing returns nothing call VolumeGroupSetVolume(SOUND_VOLUMEGROUP_UNITMOVEMENT, bj_SPEECH_VOLUME_UNITMOVEMENT) call VolumeGroupSetVolume(SOUND_VOLUMEGROUP_UNITSOUNDS, bj_SPEECH_VOLUME_UNITSOUNDS) call VolumeGroupSetVolume(SOUND_VOLUMEGROUP_COMBAT, bj_SPEECH_VOLUME_COMBAT) call VolumeGroupSetVolume(SOUND_VOLUMEGROUP_SPELLS, bj_SPEECH_VOLUME_SPELLS) call VolumeGroupSetVolume(SOUND_VOLUMEGROUP_UI, bj_SPEECH_VOLUME_UI) call VolumeGroupSetVolume(SOUND_VOLUMEGROUP_MUSIC, bj_SPEECH_VOLUME_MUSIC) call VolumeGroupSetVolume(SOUND_VOLUMEGROUP_AMBIENTSOUNDS, bj_SPEECH_VOLUME_AMBIENTSOUNDS) call VolumeGroupSetVolume(SOUND_VOLUMEGROUP_FIRE, bj_SPEECH_VOLUME_FIRE) endfunction ”‚|‰y;…FSetSpeechVolumeGroupsBJfunction SetSpeechVolumeGroupsBJ takes nothing returns nothing // Delay the request if it occurs at map init. if bj_gameStarted then call SetSpeechVolumeGroupsImmediateBJ() else call TimerStart(bj_volumeGroupsTimer, bj_GAME_STARTED_THRESHOLD, false, function SetSpeechVolumeGroupsImmediateBJ) endif endfunction‰zCdVolumeGroupResetImmediateBJfunction VolumeGroupResetImmediateBJ takes nothing returns nothing call VolumeGroupReset() endfunction‚h‰{1…(VolumeGroupResetBJfunction VolumeGroupResetBJ takes nothing returns nothing // Delay the request if it occurs at map init. if bj_gameStarted then call VolumeGroupResetImmediateBJ() else call TimerStart(bj_volumeGroupsTimer, bj_GAME_STARTED_THRESHOLD, false, function VolumeGroupResetImmediateBJ) endif endfunction ÜÜ™Að‰9‰|3‚HGetSoundIsPlayingBJfunction GetSoundIsPlayingBJ takes sound soundHandle returns boolean return GetSoundIsLoading(soundHandle) or GetSoundIsPlaying(soundHandle) endfunction$‰})‚(WaitForSoundBJfunction WaitForSoundBJ takes sound soundHandle, real offset returns nothing call TriggerWaitForSound( soundHandle, offset ) endfunction+‰~5‚*SetMapMusicIndexedBJfunction SetMapMusicIndexedBJ takes string musicName, integer index returns nothing call SetMapMusic(musicName, false, index) endfunction‰3‚SetMapMusicRandomBJfunction SetMapMusicRandomBJ takes string musicName returns nothing call SetMapMusic(musicName, true, 0) endfunctiontŠ+FClearMapMusicBJfunction ClearMapMusicBJ takes nothing returns nothing call ClearMapMusic() endfunction !!ƒsŠ/‡@SetStackedSoundBJfunction SetStackedSoundBJ takes boolean add, sound soundHandle, rect r returns nothing local real width = GetRectMaxX(r) - GetRectMinX(r) local real height = GetRectMaxY(r) - GetRectMinY(r) call SetSoundPosition(soundHandle, GetRectCenterX(r), GetRectCenterY(r), 0) if add then call RegisterStackedSound(soundHandle, true, width, height) else call UnregisterStackedSound(soundHandle, true, width, height) endif endfunctiondŠ7ƒStartSoundForPlayerBJfunction StartSoundForPlayerBJ takes player whichPlayer, sound soundHandle returns nothing if (whichPlayer == GetLocalPlayer()) then call StartSound(soundHandle) endif endfunction ããø~‚ŠKƒ`VolumeGroupSetVolumeForPlayerBJfunction VolumeGroupSetVolumeForPlayerBJ takes player whichPlayer, volumegroup vgroup, real scale returns nothing if (GetLocalPlayer() == whichPlayer) then call VolumeGroupSetVolume(vgroup, scale) endif endfunctionŠ)dEnableDawnDuskfunction EnableDawnDusk takes boolean flag returns nothing set bj_useDawnDuskSounds = flag endfunctionŠ/XIsDawnDuskEnabledfunction IsDawnDuskEnabled takes nothing returns boolean return bj_useDawnDuskSounds endfunction ÇÇ„5Š1ˆBSetAmbientDaySoundfunction SetAmbientDaySound takes string inLabel returns nothing local real ToD // Stop old sound, if necessary if (bj_dayAmbientSound != null) then call StopSound(bj_dayAmbientSound, true, true) endif // Create new sound set bj_dayAmbientSound = CreateMIDISound(inLabel, 20, 20) // Start the sound if necessary, based on current time set ToD = GetTimeOfDay() if (ToD >= bj_TOD_DAWN and ToD < bj_TOD_DUSK) then call StartSound(bj_dayAmbientSound) endif endfunction ÓÓ„@Š5ˆTSetAmbientNightSoundfunction SetAmbientNightSound takes string inLabel returns nothing local real ToD // Stop old sound, if necessary if (bj_nightAmbientSound != null) then call StopSound(bj_nightAmbientSound, true, true) endif // Create new sound set bj_nightAmbientSound = CreateMIDISound(inLabel, 20, 20) // Start the sound if necessary, based on current time set ToD = GetTimeOfDay() if (ToD < bj_TOD_DAWN or ToD >= bj_TOD_DUSK) then call StartSound(bj_nightAmbientSound) endif endfunctioneŠ7ƒAddSpecialEffectLocBJfunction AddSpecialEffectLocBJ takes location where, string modelName returns effect set bj_lastCreatedEffect = AddSpecialEffectLoc(modelName, where) return bj_lastCreatedEffect endfunction FµAÜe‚+Š E„AddSpecialEffectTargetUnitBJfunction AddSpecialEffectTargetUnitBJ takes string attachPointName, widget targetWidget, string modelName returns effect set bj_lastCreatedEffect = AddSpecialEffectTarget(modelName, targetWidget, attachPointName) return bj_lastCreatedEffect endfunctionˆIŠ +pDestroyEffectBJ// dummy function simply mimics the behavior of an existing call. // // CommenteÌŠ 9`GetLastCreatedEffectBJfunction GetLastCreatedEffectBJ takes nothing returns effect return bj_lastCreatedEffect endfunctionŠ !‚GetItemLocfunction GetItemLoc takes item whichItem returns location return Location(GetItemX(whichItem), GetItemY(whichItem)) endfunctionŠ 'lGetItemLifeBJfunction GetItemLifeBJ takes widget whichWidget returns real return GetWidgetLife(whichWidget) endfunctionŠ'‚SetItemLifeBJfunction SetItemLifeBJ takes widget whichWidget, real life returns nothing call SetWidgetLife(whichWidget, life) endfunctiond out - Destructibles have no attachment points. // //function AddSpecialEffectTargetDestructableBJ takes string attachPointName, widget targetWidget, string modelName returns effect // return AddSpecialEffectTargetUnitBJ(attachPointName, targetWidget, modelName) //endfunction //=========================================================================== // Two distinct trigger actions can't share the same function name, so this // dummy function simply mimics the behavior of an existing call. // // Commented out - Items have no attachment points. // //function AddSpecialEffectTargetItemBJ takes string attachPointName, widget targetWidget, string modelName returns effect // return AddSpecialEffectTargetUnitBJ(attachPointName, targetWidget, modelName) //endfunction //=========================================================================== function DestroyEffectBJ takes effect whichEffect returns nothing call DestroyEffect(whichEffect) endfunction ¤¤h>@Š-‚\AddHeroXPSwappedfunction AddHeroXPSwapped takes integer xpToAdd, unit whichHero, boolean showEyeCandy returns nothing call AddHeroXP(whichHero, xpToAdd, showEyeCandy) endfunctionƒRŠ)‡SetHeroLevelBJfunction SetHeroLevelBJ takes unit whichHero, integer newLevel, boolean showEyeCandy returns nothing local integer oldLevel = GetHeroLevel(whichHero) if (newLevel > oldLevel) then call SetHeroLevel(whichHero, newLevel, showEyeCandy) elseif (newLevel < oldLevel) then call UnitStripHeroLevel(whichHero, oldLevel - newLevel) else // No change in level - ignore the request. endif endfunction>ŠA‚DDecUnitAbilityLevelSwappedfunction DecUnitAbilityLevelSwapped takes integer abilcode, unit whichUnit returns integer return DecUnitAbilityLevel(whichUnit, abilcode) endfunction JJ ä¦T>ŠA‚DIncUnitAbilityLevelSwappedfunction IncUnitAbilityLevelSwapped takes integer abilcode, unit whichUnit returns integer return IncUnitAbilityLevel(whichUnit, abilcode) endfunctionTŠA‚pSetUnitAbilityLevelSwappedfunction SetUnitAbilityLevelSwapped takes integer abilcode, unit whichUnit, integer level returns integer return SetUnitAbilityLevel(whichUnit, abilcode, level) endfunction>ŠA‚DGetUnitAbilityLevelSwappedfunction GetUnitAbilityLevelSwapped takes integer abilcode, unit whichUnit returns integer return GetUnitAbilityLevel(whichUnit, abilcode) endfunction*Š'‚6UnitHasBuffBJfunction UnitHasBuffBJ takes unit whichUnit, integer buffcode returns boolean return (GetUnitAbilityLevel(whichUnit, buffcode) > 0) endfunction(Š-‚,UnitRemoveBuffBJfunction UnitRemoveBuffBJ takes integer buffcode, unit whichUnit returns boolean return UnitRemoveAbility(whichUnit, buffcode) endfunction ššC(%Š1‚"UnitAddItemSwappedfunction UnitAddItemSwapped takes item whichItem, unit whichHero returns boolean return UnitAddItem(whichHero, whichItem) endfunctionƒaŠ9‡UnitAddItemByIdSwappedfunction UnitAddItemByIdSwapped takes integer itemId, unit whichHero returns item // Create the item at the hero's feet first, and then give it to him. // This is to ensure that the item will be left at the hero's feet if // his inventory is full. set bj_lastCreatedItem = CreateItem(itemId, GetUnitX(whichHero), GetUnitY(whichHero)) call UnitAddItem(whichHero, bj_lastCreatedItem) return bj_lastCreatedItem endfunctionTŠ7‚zUnitRemoveItemSwappedfunction UnitRemoveItemSwapped takes item whichItem, unit whichHero returns nothing set bj_lastRemovedItem = whichItem call UnitRemoveItem(whichHero, whichItem) endfunction aa\>½<wŠGƒ0UnitRemoveItemFromSlotSwappedfunction UnitRemoveItemFromSlotSwapped takes integer itemSlot, unit whichHero returns item set bj_lastRemovedItem = UnitRemoveItemFromSlot(whichHero, itemSlot-1) return bj_lastRemovedItem endfunction^Š'ƒCreateItemLocfunction CreateItemLoc takes integer itemId, location loc returns item set bj_lastCreatedItem = CreateItem(itemId, GetLocationX(loc), GetLocationY(loc)) return bj_lastCreatedItem endfunction|Š1PGetLastCreatedItemfunction GetLastCreatedItem takes nothing returns item return bj_lastCreatedItem endfunction|Š1PGetLastRemovedItemfunction GetLastRemovedItem takes nothing returns item return bj_lastRemovedItem endfunction@Š1‚XSetItemPositionLocfunction SetItemPositionLoc takes item whichItem, location loc returns nothing call SetItemPosition(whichItem, GetLocationX(loc), GetLocationY(loc)) endfunction ¦¦%Å“8|Š/RGetLearnedSkillBJfunction GetLearnedSkillBJ takes nothing returns integer return GetLearnedSkill() endfunctionŠ +‚SuspendHeroXPBJfunction SuspendHeroXPBJ takes boolean flag, unit whichHero returns nothing call SuspendHeroXP(whichHero, not flag) endfunctionJŠ!7‚fSetPlayerHandicapXPBJfunction SetPlayerHandicapXPBJ takes player whichPlayer, real handicapPercent returns nothing call SetPlayerHandicapXP(whichPlayer, handicapPercent * 0.01) endfunction!Š"7‚GetPlayerHandicapXPBJfunction GetPlayerHandicapXPBJ takes player whichPlayer returns real return GetPlayerHandicapXP(whichPlayer) * 100 endfunctionDŠ#3‚^SetPlayerHandicapBJfunction SetPlayerHandicapBJ takes player whichPlayer, real handicapPercent returns nothing call SetPlayerHandicap(whichPlayer, handicapPercent * 0.01) endfunction RRñŠ$3‚ GetPlayerHandicapBJfunction GetPlayerHandicapBJ takes player whichPlayer returns real return GetPlayerHandicap(whichPlayer) * 100 endfunction„ Š%'‡xGetHeroStatBJfunction GetHeroStatBJ takes integer whichStat, unit whichHero, boolean includeBonuses returns integer if (whichStat == bj_HEROSTAT_STR) then return GetHeroStr(whichHero, includeBonuses) elseif (whichStat == bj_HEROSTAT_AGI) then return GetHeroAgi(whichHero, includeBonuses) elseif (whichStat == bj_HEROSTAT_INT) then return GetHeroInt(whichHero, includeBonuses) else // Unrecognized hero stat - return 0 return 0 endif endfunction ¬¬„PŠ&#‰SetHeroStatfunction SetHeroStat takes unit whichHero, integer whichStat, integer value returns nothing // Ignore requests for negative hero stats. if (value <= 0) then return endif if (whichStat == bj_HEROSTAT_STR) then call SetHeroStr(whichHero, value, true) elseif (whichStat == bj_HEROSTAT_AGI) then call SetHeroAgi(whichHero, value, true) elseif (whichStat == bj_HEROSTAT_INT) then call SetHeroInt(whichHero, value, true) else // Unrecognized hero stat - ignore the request. endif endfunction mm…Š')‰~ModifyHeroStatfunction ModifyHeroStat takes integer whichStat, unit whichHero, integer modifyMethod, integer value returns nothing if (modifyMethod == bj_MODIFYMETHOD_ADD) then call SetHeroStat(whichHero, whichStat, GetHeroStatBJ(whichStat, whichHero, false) + value) elseif (modifyMethod == bj_MODIFYMETHOD_SUB) then call SetHeroStat(whichHero, whichStat, GetHeroStatBJ(whichStat, whichHero, false) - value) elseif (modifyMethod == bj_MODIFYMETHOD_SET) then call SetHeroStat(whichHero, whichStat, value) else // Unrecognized modification method - ignore the request. endif endfunction ¸¸9„}Š(7‰LModifyHeroSkillPointsfunction ModifyHeroSkillPoints takes unit whichHero, integer modifyMethod, integer value returns boolean if (modifyMethod == bj_MODIFYMETHOD_ADD) then return UnitModifySkillPoints(whichHero, value) elseif (modifyMethod == bj_MODIFYMETHOD_SUB) then return UnitModifySkillPoints(whichHero, -value) elseif (modifyMethod == bj_MODIFYMETHOD_SET) then return UnitModifySkillPoints(whichHero, value - GetHeroSkillPoints(whichHero)) else // Unrecognized modification method - ignore the request and return failure. return false endif endfunctionCŠ)3‚\UnitDropItemPointBJfunction UnitDropItemPointBJ takes unit whichUnit, item whichItem, real x, real y returns boolean return UnitDropItemPoint(whichUnit, whichItem, x, y) endfunction ssZécŠ*5ƒUnitDropItemPointLocfunction UnitDropItemPointLoc takes unit whichUnit, item whichItem, location loc returns boolean return UnitDropItemPoint(whichUnit, whichItem, GetLocationX(loc), GetLocationY(loc)) endfunction@Š+1‚XUnitDropItemSlotBJfunction UnitDropItemSlotBJ takes unit whichUnit, item whichItem, integer slot returns boolean return UnitDropItemSlot(whichUnit, whichItem, slot-1) endfunctionGŠ,5‚bUnitDropItemTargetBJfunction UnitDropItemTargetBJ takes unit whichUnit, item whichItem, widget target returns boolean return UnitDropItemTarget(whichUnit, whichItem, target) endfunction‚Š-;ƒtUnitUseItemDestructable// dummy function simply mimics the behavior of an existing call. // function UnitUseItemDestructable takes unit whichUnit, item whichItem, widget target returns boolean return UnitUseItemTarget(whichUnit, whichItem, target) endfunction qqUý`Š.3ƒUnitUseItemPointLocfunction UnitUseItemPointLoc takes unit whichUnit, item whichItem, location loc returns boolean return UnitUseItemPoint(whichUnit, whichItem, GetLocationX(loc), GetLocationY(loc)) endfunction$Š/-‚$UnitItemInSlotBJfunction UnitItemInSlotBJ takes unit whichUnit, integer itemSlot returns item return UnitItemInSlot(whichUnit, itemSlot-1) endfunctionƒŠ0G‡@GetInventoryIndexOfItemTypeBJfunction GetInventoryIndexOfItemTypeBJ takes unit whichUnit, integer itemId returns integer local integer index local item indexItem set index = 0 loop set indexItem = UnitItemInSlot(whichUnit, index) if (indexItem != null) and (GetItemTypeId(indexItem) == itemId) then return index + 1 endif set index = index + 1 exitwhen index >= bj_MAX_INVENTORY endloop return 0 endfunction llµs‚EŠ1;„XGetItemOfTypeFromUnitBJfunction GetItemOfTypeFromUnitBJ takes unit whichUnit, integer itemId returns item local integer index = GetInventoryIndexOfItemTypeBJ(whichUnit, itemId) if (index == 0) then return null else return UnitItemInSlot(whichUnit, index - 1) endif endfunction:Š23‚JUnitHasItemOfTypeBJfunction UnitHasItemOfTypeBJ takes unit whichUnit, integer itemId returns boolean return GetInventoryIndexOfItemTypeBJ(whichUnit, itemId) > 0 endfunctionƒ Š31…jUnitInventoryCountfunction UnitInventoryCount takes unit whichUnit returns integer local integer index = 0 local integer count = 0 loop if (UnitItemInSlot(whichUnit, index) != null) then set count = count + 1 endif set index = index + 1 exitwhen index >= bj_MAX_INVENTORY endloop return count endfunction ¡¡7å5Š43zUnitInventorySizeBJfunction UnitInventorySizeBJ takes unit whichUnit returns integer return UnitInventorySize(whichUnit) endfunction*Š57‚&SetItemInvulnerableBJfunction SetItemInvulnerableBJ takes item whichItem, boolean flag returns nothing call SetItemInvulnerable(whichItem, flag) endfunction'Š65‚"SetItemDropOnDeathBJfunction SetItemDropOnDeathBJ takes item whichItem, boolean flag returns nothing call SetItemDropOnDeath(whichItem, flag) endfunction!Š71‚SetItemDroppableBJfunction SetItemDroppableBJ takes item whichItem, boolean flag returns nothing call SetItemDroppable(whichItem, flag) endfunctionGŠ8+‚lSetItemPlayerBJfunction SetItemPlayerBJ takes item whichItem, player whichPlayer, boolean changeColor returns nothing call SetItemPlayer(whichItem, whichPlayer, changeColor) endfunction nn ™'ÚoŠ9-‚SetItemVisibleBJfunction SetItemVisibleBJ takes boolean show, item whichItem returns nothing call SetItemVisible(whichItem, show) endfunctionŠ:)pIsItemHiddenBJfunction IsItemHiddenBJ takes item whichItem returns boolean return not IsItemVisible(whichItem) endfunction Š;1lChooseRandomItemBJfunction ChooseRandomItemBJ takes integer level returns integer return ChooseRandomItem(level) endfunction/Š<5‚2ChooseRandomItemExBJfunction ChooseRandomItemExBJ takes integer level, itemtype whichType returns integer return ChooseRandomItemEx(whichType, level) endfunctionŠ==nChooseRandomNPBuildingBJfunction ChooseRandomNPBuildingBJ takes nothing returns integer return ChooseRandomNPBuilding() endfunction Š>3pChooseRandomCreepBJfunction ChooseRandomCreepBJ takes integer level returns integer return ChooseRandomCreep(level) endfunction VV÷ lŠ?/‚EnumItemsInRectBJfunction EnumItemsInRectBJ takes rect r, code actionFunc returns nothing call EnumItemsInRect(r, null, actionFunc) endfunction‚%Š@9„RandomItemInRectBJEnumfunction RandomItemInRectBJEnum takes nothing returns nothing set bj_itemRandomConsidered = bj_itemRandomConsidered + 1 if (GetRandomInt(1, bj_itemRandomConsidered) == 1) then set bj_itemRandomCurrentPick = GetEnumItem() endif endfunction‚HŠA1„hRandomItemInRectBJfunction RandomItemInRectBJ takes rect r, boolexpr filter returns item set bj_itemRandomConsidered = 0 set bj_itemRandomCurrentPick = null call EnumItemsInRect(r, filter, function RandomItemInRectBJEnum) call DestroyBoolExpr(filter) return bj_itemRandomCurrentPick endfunctionŠB=lRandomItemInRectSimpleBJfunction RandomItemInRectSimpleBJ takes rect r returns item return RandomItemInRectBJ(r, null) endfunction úú†ŠC+‹bCheckItemStatusfunction CheckItemStatus takes item whichItem, integer status returns boolean if (status == bj_ITEM_STATUS_HIDDEN) then return not IsItemVisible(whichItem) elseif (status == bj_ITEM_STATUS_OWNED) then return IsItemOwned(whichItem) elseif (status == bj_ITEM_STATUS_INVULNERABLE) then return IsItemInvulnerable(whichItem) elseif (status == bj_ITEM_STATUS_POWERUP) then return IsItemPowerup(whichItem) elseif (status == bj_ITEM_STATUS_SELLABLE) then return IsItemSellable(whichItem) elseif (status == bj_ITEM_STATUS_PAWNABLE) then return IsItemPawnable(whichItem) else // Unrecognized status - return false return false endif endfunction üuƒsŠD3‡<CheckItemcodeStatusfunction CheckItemcodeStatus takes integer itemId, integer status returns boolean if (status == bj_ITEMCODE_STATUS_POWERUP) then return IsItemIdPowerup(itemId) elseif (status == bj_ITEMCODE_STATUS_SELLABLE) then return IsItemIdSellable(itemId) elseif (status == bj_ITEMCODE_STATUS_PAWNABLE) then return IsItemIdPawnable(itemId) else // Unrecognized status - return false return false endif endfunctionvŠE-HUnitId2OrderIdBJfunction UnitId2OrderIdBJ takes integer unitId returns integer return unitId endfunctionŠF+lString2UnitIdBJfunction String2UnitIdBJ takes string unitIdString returns integer return UnitId(unitIdString) endfunction ÚÚ‚0ŠG+„>UnitId2StringBJfunction UnitId2StringBJ takes integer unitId returns string local string unitString = UnitId2String(unitId) if (unitString != null) then return unitString endif // The unitId was not recognized - return an empty string. return "" endfunctionƒnŠH-‡8String2OrderIdBJfunction String2OrderIdBJ takes string orderIdString returns integer local integer orderId // Check to see if it's a generic order. set orderId = OrderId(orderIdString) if (orderId != 0) then return orderId endif // Check to see if it's a (train) unit order. set orderId = UnitId(orderIdString) if (orderId != 0) then return orderId endif // Unrecognized - return 0 return 0 endfunction êꇄŠI-ˆ OrderId2StringBJfunction OrderId2StringBJ takes integer orderId returns string local string orderString // Check to see if it's a generic order. set orderString = OrderId2String(orderId) if (orderString != null) then return orderString endif // Check to see if it's a (train) unit order. set orderString = UnitId2String(orderId) if (orderString != null) then return orderString endif // Unrecognized - return an empty string. return "" endfunctionŠJ1VGetIssuedOrderIdBJfunction GetIssuedOrderIdBJ takes nothing returns integer return GetIssuedOrderId() endfunctionvŠK-HGetKillingUnitBJfunction GetKillingUnitBJ takes nothing returns unit return GetKillingUnit() endfunction ¸7ƒŠL;†CreateUnitAtLocSaveLastfunction CreateUnitAtLocSaveLast takes player id, integer unitid, location loc, real face returns unit if (unitid == 'ugol') then set bj_lastCreatedUnit = CreateBlightedGoldmine(id, GetLocationX(loc), GetLocationY(loc), face) else set bj_lastCreatedUnit = CreateUnitAtLoc(id, unitid, loc, face) endif return bj_lastCreatedUnit endfunction|ŠM1PGetLastCreatedUnitfunction GetLastCreatedUnit takes nothing returns unit return bj_lastCreatedUnit endfunctionƒEŠN/†dCreateNUnitsAtLocfunction CreateNUnitsAtLoc takes integer count, integer unitId, player whichPlayer, location loc, real face returns group call GroupClear(bj_lastCreatedGroup) loop set count = count - 1 exitwhen count < 0 call CreateUnitAtLocSaveLast(whichPlayer, unitId, loc, face) call GroupAddUnit(bj_lastCreatedGroup, bj_lastCreatedUnit) endloop return bj_lastCreatedGroup endfunction 11Pý‚ŠOEƒzCreateNUnitsAtLocFacingLocBJfunction CreateNUnitsAtLocFacingLocBJ takes integer count, integer unitId, player whichPlayer, location loc, location lookAt returns group return CreateNUnitsAtLoc(count, unitId, whichPlayer, loc, AngleBetweenPoints(loc, lookAt)) endfunction)ŠP;‚ GetLastCreatedGroupEnumfunction GetLastCreatedGroupEnum takes nothing returns nothing call GroupAddUnit(bj_groupLastCreatedDest, GetEnumUnit()) endfunctionŠQ3ƒTGetLastCreatedGroupfunction GetLastCreatedGroup takes nothing returns group set bj_groupLastCreatedDest = CreateGroup() call ForGroup(bj_lastCreatedGroup, function GetLastCreatedGroupEnum) return bj_groupLastCreatedDest endfunction 4ß‚ ŠR/„CreateCorpseLocBJfunction CreateCorpseLocBJ takes integer unitid, player whichPlayer, location loc returns unit set bj_lastCreatedUnit = CreateCorpse(whichPlayer, unitid, GetLocationX(loc), GetLocationY(loc), GetRandomReal(0, 360)) return bj_lastCreatedUnit endfunction'ŠS1‚&UnitSuspendDecayBJfunction UnitSuspendDecayBJ takes boolean suspend, unit whichUnit returns nothing call UnitSuspendDecay(whichUnit, suspend) endfunction‚ŠTKƒxDelayedSuspendDecayStopAnimEnumfunction DelayedSuspendDecayStopAnimEnum takes nothing returns nothing local unit enumUnit = GetEnumUnit() if (GetUnitState(enumUnit, UNIT_STATE_LIFE) <= 0) then call SetUnitTimeScale(enumUnit, 0.0001) endif endfunction ÉÉ‘‚DŠUC„NDelayedSuspendDecayBoneEnumfunction DelayedSuspendDecayBoneEnum takes nothing returns nothing local unit enumUnit = GetEnumUnit() if (GetUnitState(enumUnit, UNIT_STATE_LIFE) <= 0) then call UnitSuspendDecay(enumUnit, true) call SetUnitTimeScale(enumUnit, 0.0001) endif endfunction‚|ŠVE…<DelayedSuspendDecayFleshEnumfunction DelayedSuspendDecayFleshEnum takes nothing returns nothing local unit enumUnit = GetEnumUnit() if (GetUnitState(enumUnit, UNIT_STATE_LIFE) <= 0) then call UnitSuspendDecay(enumUnit, true) call SetUnitTimeScale(enumUnit, 10.0) call SetUnitAnimation(enumUnit, "decay flesh") endif endfunctionˆ ŠW3pDelayedSuspendDecayfunction DelayedSuspendDecay takes nothing returns nothing local group boäneGroup local group fleshGroup // Switch the global unit groups over to local variables and recreate // the global versions, so that this function can handle overlapping // calls. set boneGroup = bj_suspendDecayBoneGroup set fleshGroup = bj_suspendDecayFleshGroup set bj_suspendDecayBoneGroup = CreateGroup() set bj_suspendDecayFleshGroup = CreateGroup() call ForGroup(fleshGroup, function DelayedSuspendDecayStopAnimEnum) call ForGroup(boneGroup, function DelayedSuspendDecayStopAnimEnum) call TriggerSleepAction(bj_CORPSE_MAX_DEATH_TIME) call ForGroup(fleshGroup, function DelayedSuspendDecayFleshEnum) call ForGroup(boneGroup, function DelayedSuspendDecayBoneEnum) call TriggerSleepAction(0.05) call ForGroup(fleshGroup, function DelayedSuspendDecayStopAnimEnum) call DestroyGroup(boneGroup) call DestroyGroup(fleshGroup) endfunction ‡‡çV‚\ŠX?…DelayedSuspendDecayCreatefunction DelayedSuspendDecayCreate takes nothing returns nothing set bj_delayedSuspendDecayTrig = CreateTrigger() call TriggerRegisterTimerExpireEvent(bj_delayedSuspendDecayTrig, bj_delayedSuspendDecayTimer) call TriggerAddAction(bj_delayedSuspendDecayTrig, function DelayedSuspendDecay) endfunction‡ŠYAFCreatePermanentCorpseLocBJfunction CreatePermanentCorpseLocBJ takes integer style, integer unitidæ&ŠZ-‚(GetUnitStateSwapfunction GetUnitStateSwap takes unitstate whichState, unit whichUnit returns real return GetUnitState(whichUnit, whichState) endfunction, player whichPlayer, location loc, real facing returns unit set bj_lastCreatedUnit = CreateCorpse(whichPlayer, unitid, GetLocationX(loc), GetLocationY(loc), facing) call SetUnitBlendTime(bj_lastCreatedUnit, 0) if (style == bj_CORPSETYPE_FLESH) then call SetUnitAnimation(bj_lastCreatedUnit, "decay flesh") call GroupAddUnit(bj_suspendDecayFleshGroup, bj_lastCreatedUnit) elseif (style == bj_CORPSETYPE_BONE) then call SetUnitAnimation(bj_lastCreatedUnit, "decay bone") call GroupAddUnit(bj_suspendDecayBoneGroup, bj_lastCreatedUnit) else // Unknown decay style - treat as skeletal. call SetUnitAnimation(bj_lastCreatedUnit, "decay bone") call GroupAddUnit(bj_suspendDecayBoneGroup, bj_lastCreatedUnit) endif call TimerStart(bj_delayedSuspendDecayTimer, 0.05, false, null) return bj_lastCreatedUnit endfunction //æŸXƒ3Š[3†<GetUnitStatePercentfunction GetUnitStatePercent takes unit whichUnit, unitstate whichState, unitstate whichMaxState returns real local real value = GetUnitState(whichUnit, whichState) local real maxValue = GetUnitState(whichUnit, whichMaxState) // Return 0 for null units. if (whichUnit == null) or (maxValue == 0) then return 0.0 endif return value / maxValue * 100.0 endfunction5Š\1‚BGetUnitLifePercentfunction GetUnitLifePercent takes unit whichUnit returns real return GetUnitStatePercent(whichUnit, UNIT_STATE_LIFE, UNIT_STATE_MAX_LIFE) endfunction5Š]1‚BGetUnitManaPercentfunction GetUnitManaPercent takes unit whichUnit returns real return GetUnitStatePercent(whichUnit, UNIT_STATE_MANA, UNIT_STATE_MAX_MANA) endfunction$Š^-‚$SelectUnitSinglefunction SelectUnitSingle takes unit whichUnit returns nothing call ClearSelection() call SelectUnit(whichUnit, true) endfunction ÄKÙ Š_/nSelectGroupBJEnumfunction SelectGroupBJEnum takes nothing returns nothing call SelectUnit( GetEnumUnit(), true ) endfunction%Š`'‚,SelectGroupBJfunction SelectGroupBJ takes group g returns nothing call ClearSelection() call ForGroup( g, function SelectGroupBJEnum ) endfunctionŠa'hSelectUnitAddfunction SelectUnitAdd takes unit whichUnit returns nothing call SelectUnit(whichUnit, true) endfunction Šb-pSelectUnitRemovefunction SelectUnitRemove takes unit whichUnit returns nothing call SelectUnit(whichUnit, false) endfunction‚#Šc;„ClearSelectionForPlayerfunction ClearSelectionForPlayer takes player whichPlayer returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call ClearSelection() endif endfunction 55š‚aŠd?… SelectUnitForPlayerSinglefunction SelectUnitForPlayerSingle takes unit whichUnit, player whichPlayer returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call ClearSelection() call SelectUnit(whichUnit, true) endif endfunction‚bŠe9…SelectGroupForPlayerBJfunction SelectGroupForPlayerBJ takes group g, player whichPlayer returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call ClearSelection() call ForGroup( g, function SelectGroupBJEnum ) endif endfunction ÂÂI‚<Šf9„HSelectUnitAddForPlayerfunction SelectUnitAddForPlayer takes unit whichUnit, player whichPlayer returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call SelectUnit(whichUnit, true) endif endfunction‚CŠg?„PSelectUnitRemoveForPlayerfunction SelectUnitRemoveForPlayer takes unit whichUnit, player whichPlayer returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call SelectUnit(whichUnit, false) endif endfunction3Šh'‚HSetUnitLifeBJfunction SetUnitLifeBJ takes unit whichUnit, real newValue returns nothing call SetUnitState(whichUnit, UNIT_STATE_LIFE, RMaxBJ(0,newValue)) endfunction 55ìåÞw3Ši'‚HSetUnitManaBJfunction SetUnitManaBJ takes unit whichUnit, real newValue returns nothing call SetUnitState(whichUnit, UNIT_STATE_MANA, RMaxBJ(0,newValue)) endfunctionuŠj5ƒ>SetUnitLifePercentBJfunction SetUnitLifePercentBJ takes unit whichUnit, real percent returns nothing call SetUnitState(whichUnit, UNIT_STATE_LIFE, GetUnitState(whichUnit, UNIT_STATE_MAX_LIFE) * RMaxBJ(0,percent) * 0.01) endfunctionuŠk5ƒ>SetUnitManaPercentBJfunction SetUnitManaPercentBJ takes unit whichUnit, real percent returns nothing call SetUnitState(whichUnit, UNIT_STATE_MANA, GetUnitState(whichUnit, UNIT_STATE_MAX_MANA) * RMaxBJ(0,percent) * 0.01) endfunctionŠl%‚IsUnitDeadBJfunction IsUnitDeadBJ takes unit whichUnit returns boolean return GetUnitState(whichUnit, UNIT_STATE_LIFE) <= 0 endfunctionŠm'lIsUnitAliveBJfunction IsUnitAliveBJ takes unit whichUnit returns boolean return not IsUnitDeadBJ(whichUnit) endfunction OOiLŠn7‚jIsUnitGroupDeadBJEnumfunction IsUnitGroupDeadBJEnum takes nothing returns nothing if not IsUnitDeadBJ(GetEnumUnit()) then set bj_isUnitGroupDeadResult = false endif endfunction„FŠo/ˆfIsUnitGroupDeadBJfunction IsUnitGroupDeadBJ takes group g returns boolean // If the user wants the group destroyed, remember that fact and clear // the flag, in case it is used again in the callback. local boolean wantDestroy = bj_wantDestroyGroup set bj_wantDestroyGroup = false set bj_isUnitGroupDeadResult = true call ForGroup(g, function IsUnitGroupDeadBJEnum) // If the user wants the group destroyed, do so now. if (wantDestroy) then call DestroyGroup(g) endif return bj_isUnitGroupDeadResult endfunctionŠp9vIsUnitGroupEmptyBJEnumfunction IsUnitGroupEmptyBJEnum takes nothing returns nothing set bj_isUnitGroupEmptyResult = false endfunction ½½ „KŠq1ˆnIsUnitGroupEmptyBJfunction IsUnitGroupEmptyBJ takes group g returns boolean // If the user wants the group destroyed, remember that fact and clear // the flag, in case it is used again in the callback. local boolean wantDestroy = bj_wantDestroyGroup set bj_wantDestroyGroup = false set bj_isUnitGroupEmptyResult = true call ForGroup(g, function IsUnitGroupEmptyBJEnum) // If the user wants the group destroyed, do so now. if (wantDestroy) then call DestroyGroup(g) endif return bj_isUnitGroupEmptyResult endfunctionpŠr;ƒ.IsUnitGroupInRectBJEnumfunction IsUnitGroupInRectBJEnum takes nothing returns nothing if not RectContainsUnit(bj_isUnitGroupInRectRect, GetEnumUnit()) then set bj_isUnitGroupInRectResult = false endif endfunction µµÓZÞ‚Šs3„ IsUnitGroupInRectBJfunction IsUnitGroupInRectBJ takes group g, rect r returns boolean set bj_isUnitGroupInRectResult = true set bj_isUnitGroupInRectRect = r call ForGroup(g, function IsUnitGroupInRectBJEnum) return bj_isUnitGroupInRectResult endfunctionŠt)fIsUnitHiddenBJfunction IsUnitHiddenBJ takes unit whichUnit returns boolean return IsUnitHidden(whichUnit) endfunctionŠu%dShowUnitHidefunction ShowUnitHide takes unit whichUnit returns nothing call ShowUnit(whichUnit, false) endfunction‚Šv%„ ShowUnitShowfunction ShowUnitShow takes unit whichUnit returns nothing // Prevent dead heroes from being unhidden. if (IsUnitType(whichUnit, UNIT_TYPE_HERO) and IsUnitDeadBJ(whichUnit)) then return endif call ShowUnit(whichUnit, true) endfunction ´´a)ŠwE‚IssueHauntOrderAtLocBJFilterfunction IssueHauntOrderAtLocBJFilter takes nothing returns boolean return GetUnitTypeId(GetFilterUnit()) == 'ngol' endfunction…Šx9ŠIssueHauntOrderAtLocBJfunction IssueHauntOrderAtLocBJ takes unit whichPeon, location loc returns boolean local group g = null local unit goldMine = null // Search for a gold mine within a 1-cell radius of the specified location. set g = CreateGroup() call GroupEnumUnitsInRangeOfLoc(g, loc, 2*bj_CELLWIDTH, filterIssueHauntOrderAtLocBJ) set goldMine = FirstOfGroup(g) call DestroyGroup(g) // If no mine was found, abort the request. if (goldMine == null) then return false endif // Issue the Haunt Gold Mine order. return IssueTargetOrderById(whichPeon, 'ugol', goldMine) endfunction ……ã›D‚ZŠy=…IssueBuildOrderByIdLocBJfunction IssueBuildOrderByIdLocBJ takes unit whichPeon, integer unitId, location loc returns boolean if (unitId == 'ugol') then return IssueHauntOrderAtLocBJ(whichPeon, loc) else return IssueBuildOrderById(whichPeon, unitId, GetLocationX(loc), GetLocationY(loc)) endif endfunction4Šz7‚:IssueTrainOrderByIdBJfunction IssueTrainOrderByIdBJ takes unit whichUnit, integer unitId returns boolean return IssueImmediateOrderById(whichUnit, unitId) endfunction%Š{7‚GroupTrainOrderByIdBJfunction GroupTrainOrderByIdBJ takes group g, integer unitId returns boolean return GroupImmediateOrderById(g, unitId) endfunction8Š|;‚>IssueUpgradeOrderByIdBJfunction IssueUpgradeOrderByIdBJ takes unit whichUnit, integer techId returns boolean return IssueImmediateOrderById(whichUnit, techId) endfunction ±±,é•xŠ}/JGetAttackedUnitBJfunction GetAttackedUnitBJ takes nothing returns unit return GetTriggerUnit() endfunction9Š~1‚JSetUnitFlyHeightBJfunction SetUnitFlyHeightBJ takes unit whichUnit, real newHeight, real rate returns nothing call SetUnitFlyHeight(whichUnit, newHeight, rate) endfunction(Š1‚(SetUnitTurnSpeedBJfunction SetUnitTurnSpeedBJ takes unit whichUnit, real turnSpeed returns nothing call SetUnitTurnSpeed(whichUnit, turnSpeed) endfunction‚g‹3…$SetUnitPropWindowBJfunction SetUnitPropWindowBJ takes unit whichUnit, real propWindow returns nothing local real angle = propWindow if (angle <= 0) then set angle = 1 elseif (angle >= 360) then set angle = 359 endif set angle = angle * bj_DEGTORAD call SetUnitPropWindow(whichUnit, angle) endfunction ©©JòžY‹3‚GetUnitPropWindowBJfunction GetUnitPropWindowBJ takes unit whichUnit returns real return GetUnitPropWindow(whichUnit) * bj_RADTODEG endfunction$‹A‚GetUnitDefaultPropWindowBJfunction GetUnitDefaultPropWindowBJ takes unit whichUnit returns real return GetUnitDefaultPropWindow(whichUnit) endfunction(‹1‚(SetUnitBlendTimeBJfunction SetUnitBlendTimeBJ takes unit whichUnit, real blendTime returns nothing call SetUnitBlendTime(whichUnit, blendTime) endfunction7‹7‚@SetUnitAcquireRangeBJfunction SetUnitAcquireRangeBJ takes unit whichUnit, real acquireRange returns nothing call SetUnitAcquireRange(whichUnit, acquireRange) endfunction#‹/‚ UnitSetCanSleepBJfunction UnitSetCanSleepBJ takes unit whichUnit, boolean canSleep returns nothing call UnitAddSleep(whichUnit, canSleep) endfunction ÓÓZØeï‹)fUnitCanSleepBJfunction UnitCanSleepBJ takes unit whichUnit returns boolean return UnitCanSleep(whichUnit) endfunction{‹%ZUnitWakeUpBJfunction UnitWakeUpBJ takes unit whichUnit returns nothing call UnitWakeUp(whichUnit) endfunction ‹-nUnitIsSleepingBJfunction UnitIsSleepingBJ takes unit whichUnit returns boolean return UnitIsSleeping(whichUnit) endfunction‹ 3bWakePlayerUnitsEnumfunction WakePlayerUnitsEnum takes nothing returns nothing call UnitWakeUp(GetEnumUnit()) endfunction‚ ‹ +ƒxWakePlayerUnitsfunction WakePlayerUnits takes player whichPlayer returns nothing local group g = CreateGroup() call GroupEnumUnitsOfPlayer(g, whichPlayer, null) call ForGroup(g, function WakePlayerUnitsEnum) call DestroyGroup(g) endfunction rrº_ƒ‹ 1…|EnableCreepSleepBJfunction EnableCreepSleepBJ takes boolean enable returns nothing call SetPlayerState(Player(PLAYER_NEUTRAL_AGGRESSIVE), PLAYER_STATE_NO_CREEP_SLEEP, IntegerTertiaryOp(enable, 0, 1)) // If we're disabling, attempt to wake any already-sleeping creeps. if (not enable) then call WakePlayerUnits(Player(PLAYER_NEUTRAL_AGGRESSIVE)) endif endfunction.‹ 1‚4UnitGenerateAlarmsfunction UnitGenerateAlarms takes unit whichUnit, boolean generate returns boolean return UnitIgnoreAlarm(whichUnit, not generate) endfunction!‹ 9‚DoesUnitGenerateAlarmsfunction DoesUnitGenerateAlarms takes unit whichUnit returns boolean return not UnitIgnoreAlarmToggled(whichUnit) endfunction‹3‚PauseAllUnitsBJEnumfunction PauseAllUnitsBJEnum takes nothing returns nothing call PauseUnit( GetEnumUnit(), bj_pauseAllUnitsFlag ) endfunction ¤¤†X‹+PauseAllUnitsBJfunction PauseAllUnitsBJ takes boolean pause returns nothing local integer index local player indexPlayer local group g set bj_pauseAllUnitsFlag = pause set g = CreateGroup() set index = 0 loop set indexPlayer = Player( index ) // If this is a computer slot, pause/resume the AI. if (GetPlayerController( indexPlayer ) == MAP_CONTROL_COMPUTER) then call PauseCompAI( indexPlayer, pause ) endif // Enumerate and unpause every unit owned by the player. call GroupEnumUnitsOfPlayer( g, indexPlayer, null ) call ForGroup( g, function PauseAllUnitsBJEnum ) call GroupClear( g ) set index = index + 1 exitwhen index == bj_MAX_PLAYER_SLOTS endloop call DestroyGroup(g) endfunction ¯¯AÈs;‹#‚PauseUnitBJfunction PauseUnitBJ takes boolean pause, unit whichUnit returns nothing call PauseUnit(whichUnit, pause) endfunction‹)fIsUnitPausedBJfunction IsUnitPausedBJ takes unit whichUnit returns boolean return IsUnitPaused(whichUnit) endfunction'‹5‚"UnitPauseTimedLifeBJfunction UnitPauseTimedLifeBJ takes boolean flag, unit whichUnit returns nothing call UnitPauseTimedLife(whichUnit, flag) endfunctionD‹5‚\UnitApplyTimedLifeBJfunction UnitApplyTimedLifeBJ takes real duration, integer buffId, unit whichUnit returns nothing call UnitApplyTimedLife(whichUnit, buffId, duration) endfunctionA‹/‚\UnitShareVisionBJfunction UnitShareVisionBJ takes boolean share, unit whichUnit, player whichPlayer returns nothing call UnitShareVision(whichUnit, whichPlayer, share) endfunction hh…‹/ŠUnitRemoveBuffsBJfunction UnitRemoveBuffsBJ takes integer buffType, unit whichUnit returns nothing if (buffType == bj_REMOVEBUFFS_POSITIVE) then call UnitRemoveBuffs(whichUnit, true, false) elseif (buffType == bj_REMOVEBUFFS_NEGATIVE) then call UnitRemoveBuffs(whichUnit, false, true) elseif (buffType == bj_REMOVEBUFFS_ALL) then call UnitRemoveBuffs(whichUnit, true, true) elseif (buffType == bj_REMOVEBUFFS_NONTLIFE) then call UnitRemoveBuffsEx(whichUnit, true, true, false, false, false, true, false) else // Unrecognized dispel type - ignore the request. endif endfunction [[…!‹3ŠUnitRemoveBuffsExBJfunction UnitRemoveBuffsExBJ takes integer polarity, integer resist, unit whichUnit, boolean bTLife, boolean bAura returns nothing local boolean bPos = (polarity == bj_BUFF_POLARITY_EITHER) or (polarity == bj_BUFF_POLARITY_POSITIVE) local boolean bNeg = (polarity == bj_BUFF_POLARITY_EITHER) or (polarity == bj_BUFF_POLARITY_NEGATIVE) local boolean bMagic = (resist == bj_BUFF_RESIST_BOTH) or (resist == bj_BUFF_RESIST_MAGIC) local boolean bPhys = (resist == bj_BUFF_RESIST_BOTH) or (resist == bj_BUFF_RESIST_PHYSICAL) call UnitRemoveBuffsEx(whichUnit, bPos, bNeg, bMagic, bPhys, bTLife, bAura, false) endfunction ¨¨L… ‹1ŠUnitCountBuffsExBJfunction UnitCountBuffsExBJ takes integer polarity, integer resist, unit whichUnit, boolean bTLife, boolean bAura returns integer local boolean bPos = (polarity == bj_BUFF_POLARITY_EITHER) or (polarity == bj_BUFF_POLARITY_POSITIVE) local boolean bNeg = (polarity == bj_BUFF_POLARITY_EITHER) or (polarity == bj_BUFF_POLARITY_NEGATIVE) local boolean bMagic = (resist == bj_BUFF_RESIST_BOTH) or (resist == bj_BUFF_RESIST_MAGIC) local boolean bPhys = (resist == bj_BUFF_RESIST_BOTH) or (resist == bj_BUFF_RESIST_PHYSICAL) return UnitCountBuffsEx(whichUnit, bPos, bNeg, bMagic, bPhys, bTLife, bAura, false) endfunction0‹3‚6UnitRemoveAbilityBJfunction UnitRemoveAbilityBJ takes integer abilityId, unit whichUnit returns boolean return UnitRemoveAbility(whichUnit, abilityId) endfunction uu ÌoV'‹-‚*UnitAddAbilityBJfunction UnitAddAbilityBJ takes integer abilityId, unit whichUnit returns boolean return UnitAddAbility(whichUnit, abilityId) endfunction(‹-‚,UnitRemoveTypeBJfunction UnitRemoveTypeBJ takes unittype whichType, unit whichUnit returns boolean return UnitRemoveType(whichUnit, whichType) endfunction‹'‚ UnitAddTypeBJfunction UnitAddTypeBJ takes unittype whichType, unit whichUnit returns boolean return UnitAddType(whichUnit, whichType) endfunctionc‹AƒUnitMakeAbilityPermanentBJfunction UnitMakeAbilityPermanentBJ takes boolean permanent, integer abilityId, unit whichUnit returns boolean return UnitMakeAbilityPermanent(whichUnit, permanent, abilityId) endfunction&‹/‚&SetUnitExplodedBJfunction SetUnitExplodedBJ takes unit whichUnit, boolean exploded returns nothing call SetUnitExploded(whichUnit, exploded) endfunction ’’<»1ìs&‹'‚.ExplodeUnitBJfunction ExplodeUnitBJ takes unit whichUnit returns nothing call SetUnitExploded(whichUnit, true) call KillUnit(whichUnit) endfunction|‹1PGetTransportUnitBJfunction GetTransportUnitBJ takes nothing returns unit return GetTransportUnit() endfunctions‹ +DGetLoadedUnitBJfunction GetLoadedUnitBJ takes nothing returns unit return GetLoadedUnit() endfunction7‹!3‚DIsUnitInTransportBJfunction IsUnitInTransportBJ takes unit whichUnit, unit whichTransport returns boolean return IsUnitInTransport(whichUnit, whichTransport) endfunction‹")fIsUnitLoadedBJfunction IsUnitLoadedBJ takes unit whichUnit returns boolean return IsUnitLoaded(whichUnit) endfunction ‹#-nIsUnitIllusionBJfunction IsUnitIllusionBJ takes unit whichUnit returns boolean return IsUnitIllusion(whichUnit) endfunctionýto the requested method. if (unitStateMethod == bj_UNIT_STATE_METHOD_RELATIVE) then // Set the replacement's current/max life ratio to that of the old unit. // If both units have mana, do the same for mana. if (GetUnitState(oldUnit, UNIT_STATE_MAX_LIFE) > 0) then set oldRatio = GetUnitState(oldUnit, UNIT_STATE_LIFE) / GetUnitState(oldUnit, UNIT_STATE_MAX_LIFE) call SetUnitState(newUnit, UNIT_STATE_LIFE, oldRatio * GetUnitState(newUnit, UNIT_STATE_MAX_LIFE)) endif if (GetUnitState(oldUnit, UNIT_STATE_MAX_MANA) > 0) and (GetUnitState(newUnit, UNIT_STATE_MAX_MANA) > 0) then set oldRatio = GetUnitState(oldUnit, UNIT_STATE_MANA) / GetUnitState(oldUnit, UNIT_STATE_MAX_MANA) call SetUnitState(newUnit, UNIT_STATE_MANA, oldRatio * GetUnitState(newUnit, UNIT_STATE_MAX_MANA)) endif elseif (unitStateMethod == bj_UNIT_STATE_METHOD_ABSOLUTE) then // Set the replacement's current life to that ofþ the old unit. // If the new unit has mana, do the same for mana. call SetUnitState(newUnit, UNIT_STATE_LIFE, GetUnitState(oldUnit, UNIT_STATE_LIFE)) if (GetUnitState(newUnit, UNIT_STATE_MAX_MANA) > 0) then call SetUnitState(newUnit, UNIT_STATE_MANA, GetUnitState(oldUnit, UNIT_STATE_MANA)) endif elseif (unitStateMethod == bj_UNIT_STATE_METHOD_DEFAULTS) then // The newly created unit should already have default life and mana. elseif (unitStateMethod == bj_UNIT_STATE_METHOD_MAXIMUM) then // Use max life and mana. call SetUnitState(newUnit, UNIT_STATE_LIFE, GetUnitState(newUnit, UNIT_STATE_MAX_LIFE)) call SetUnitState(newUnit, UNIT_STATE_MANA, GetUnitState(newUnit, UNIT_STATE_MAX_MANA)) else // Unrecognized unit state method - ignore the request. endif // Mirror properties of the old unit onto the new unit. //call PauseUnit(newUnit, IsUnitPaused(oldUnit)) call SetResourceAmount(newUnit, GetResourceAmount(oldUnit)) // If both the old and new units are heroes, handle their hero info. if (IsUnitType(oldUnit, UNIT_TYPE_HERO) and IsUnitType(newUnit, UNIT_TYPE_HERO)) then call SetHeroXP(newUnit, GetHeroXP(oldUnit), false) set index = 0 loop set indexItem = UnitItemInSlot(oldUnit, index) if (indexItem != null) then call UnitRemoveItem(oldUnit, indexItem) call UnitAddItem(newUnit, indexItem) endif set index = index + 1 exitwhen index >= bj_MAX_INVENTORY endloop endif // Remove or kill the original unit. It is sometimes unsafe to remove // hidden units, so kill the original unit if it was previously hidden. if wasHidden then call KillUnit(oldUnit) call RemoveUnit(oldUnit) else call RemoveUnit(oldUnit) endif set bj_lastReplacedUnit = newUnit return newUnit endfunction ŸQ‹$'¿ReplaceUnitBJfunction ReplaceUnitBJ takes unit whichUnit, integer newUnitId, integer unitStateMethod returns unit local unit oldUnit = whichUnit local unit newUnit local boolean wasHidden local integer index local item indexItem local real oldRatio // If we have bogus data, don't attempt the replace. if (oldUnit == null) then set bj_lastReplacedUnit = oldUnit return oldUnit endif // Hide the original unit. set wasHidden = IsUnitHidden(oldUnit) call ShowUnit(oldUnit, false) // Create the replacement unit. if (newUnitId == 'ugol') then set newUnit = CreateBlightedGoldmine(GetOwningPlayer(oldUnit), GetUnitX(oldUnit), GetUnitY(oldUnit), GetUnitFacing(oldUnit)) else set newUnit = CreateUnit(GetOwningPlayer(oldUnit), newUnitId, GetUnitX(oldUnit), GetUnitY(oldUnit), GetUnitFacing(oldUnit)) endif // Set the unit's life and mana according ü —— ‹%7XGetLastReplacedUnitBJfunction GetLastReplacedUnitBJ takes nothing returns unit return bj_lastReplacedUnit endfunctionj‹&AƒSetUnitPositionLocFacingBJfunction SetUnitPositionLocFacingBJ takes unit whichUnit, location loc, real facing returns nothing call SetUnitPositionLoc(whichUnit, loc) call SetUnitFacing(whichUnit, facing) endfunction‚ ‹'Gƒ\SetUnitPositionLocFacingLocBJfunction SetUnitPositionLocFacingLocBJ takes unit whichUnit, location loc, location lookAt returns nothing call SetUnitPositionLoc(whichUnit, loc) call SetUnitFacing(whichUnit, AngleBetweenPoints(loc, lookAt)) endfunction_‹(-ƒAddItemToStockBJfunction AddItemToStockBJ takes integer itemId, unit whichUnit, integer currentStock, integer stockMax returns nothing call AddItemToStock(whichUnit, itemId, currentStock, stockMax) endfunction ù«]_‹)-ƒAddUnitToStockBJfunction AddUnitToStockBJ takes integer unitId, unit whichUnit, integer currentStock, integer stockMax returns nothing call AddUnitToStock(whichUnit, unitId, currentStock, stockMax) endfunction.‹*7‚.RemoveItemFromStockBJfunction RemoveItemFromStockBJ takes integer itemId, unit whichUnit returns nothing call RemoveItemFromStock(whichUnit, itemId) endfunction.‹+7‚.RemoveUnitFromStockBJfunction RemoveUnitFromStockBJ takes integer unitId, unit whichUnit returns nothing call RemoveUnitFromStock(whichUnit, unitId) endfunction‹,-‚SetUnitUseFoodBJfunction SetUnitUseFoodBJ takes boolean enable, unit whichUnit returns nothing call SetUnitUseFood(whichUnit, enable) endfunction ffÖ‚l‹-1…0UnitDamagePointLocfunction UnitDamagePointLoc takes unit whichUnit, real delay, real radius, location loc, real amount, attacktype whichAttack, damagetype whichDamage returns boolean return UnitDamagePoint(whichUnit, delay, radius, GetLocationX(loc), GetLocationY(loc), amount, true, false, whichAttack, whichDamage, WEAPON_TYPE_WHOKNOWS) endfunction‚&‹.1„$UnitDamageTargetBJfunction UnitDamageTargetBJ takes unit whichUnit, unit target, real amount, attacktype whichAttack, damagetype whichDamage returns boolean return UnitDamageTarget(whichUnit, target, amount, true, false, whichAttack, whichDamage, WEAPON_TYPE_WHOKNOWS) endfunction ˜˜ô`‚X‹/7…CreateDestructableLocfunction CreateDestructableLoc takes integer objectid, location loc, real facing, real scale, integer variation returns destructable set bj_lastCreatedDestructable = CreateDestructable(objectid, GetLocationX(loc), GetLocationY(loc), facing, scale, variation) return bj_lastCreatedDestructable endfunction‚h‹0C…CreateDeadDestructableLocBJfunction CreateDeadDestructableLocBJ takes integer objectid, location loc, real facing, real scale, integer variation returns destructable set bj_lastCreatedDestructable = CreateDeadDestructable(objectid, GetLocationX(loc), GetLocationY(loc), facing, scale, variation) return bj_lastCreatedDestructable endfunction‹1A‚GetLastCreatedDestructablefunction GetLastCreatedDestructable takes nothing returns destructable return bj_lastCreatedDestructable endfunction ffÁjE‹21‚ ShowDestructableBJfunction ShowDestructableBJ takes boolean flag, destructable d returns nothing call ShowDestructable(d, flag) endfunction:‹3G‚6SetDestructableInvulnerableBJfunction SetDestructableInvulnerableBJ takes destructable d, boolean flag returns nothing call SetDestructableInvulnerable(d, flag) endfunction%‹4E‚IsDestructableInvulnerableBJfunction IsDestructableInvulnerableBJ takes destructable d returns boolean return IsDestructableInvulnerable(d) endfunctionW‹51ƒGetDestructableLocfunction GetDestructableLoc takes destructable whichDestructable returns location return Location(GetDestructableX(whichDestructable), GetDestructableY(whichDestructable)) endfunction7‹6A‚6EnumDestructablesInRectAllfunction EnumDestructablesInRectAll takes rect r, code actionFunc returns nothing call EnumDestructablesInRect(r, null, actionFunc) endfunction JJÐgƒ‹7O…>EnumDestructablesInCircleBJFilterfunction EnumDestructablesInCircleBJFilter takes nothing returns boolean local location destLoc = GetDestructableLoc(GetFilterDestructable()) local boolean result set result = DistanceBetweenPoints(destLoc, bj_enumDestructableCenter) <= bj_enumDestructableRadius call RemoveLocation(destLoc) return result endfunction‹85zIsDestructableDeadBJfunction IsDestructableDeadBJ takes destructable d returns boolean return GetDestructableLife(d) <= 0 endfunction‹97|IsDestructableAliveBJfunction IsDestructableAliveBJ takes destructable d returns boolean return not IsDestructableDeadBJ(d) endfunction ˜˜ØL‚<‹:I„8RandomDestructableInRectBJEnumfunction RandomDestructableInRectBJEnum takes nothing returns nothing set bj_destRandomConsidered = bj_destRandomConsidered + 1 if (GetRandomInt(1,bj_destRandomConsidered) == 1) then set bj_destRandomCurrentPick = GetEnumDestructable() endif endfunction‚p‹;A…(RandomDestructableInRectBJfunction RandomDestructableInRectBJ takes rect r, boolexpr filter returns destructable set bj_destRandomConsidered = 0 set bj_destRandomCurrentPick = null call EnumDestructablesInRect(r, filter, function RandomDestructableInRectBJEnum) call DestroyBoolExpr(filter) return bj_destRandomCurrentPick endfunction0‹<M‚RandomDestructableInRectSimpleBJfunction RandomDestructableInRectSimpleBJ takes rect r returns destructable return RandomDestructableInRectBJ(r, null) endfunction ¦¦|VƒR‹=C†jEnumDestructablesInCircleBJfunction EnumDestructablesInCircleBJ takes real radius, location loc, code actionFunc returns nothing local rect r if (radius >= 0) then set bj_enumDestructableCenter = loc set bj_enumDestructableRadius = radius set r = GetRectFromCircleBJ(loc, radius) call EnumDestructablesInRect(r, filterEnumDestructablesInCircleBJ, actionFunc) call RemoveRect(r) endif endfunctionV‹>E‚pSetDestructableLifePercentBJfunction SetDestructableLifePercentBJ takes destructable d, real percent returns nothing call SetDestructableLife(d, GetDestructableMaxLife(d) * percent * 0.01) endfunction&‹?=‚SetDestructableMaxLifeBJfunction SetDestructableMaxLifeBJ takes destructable d, real max returns nothing call SetDestructableMaxLife(d, max) endfunction ˜˜†d‹@%,ModifyGateBJfunction ModifyGateBJ takes integer gateOperation, destructable d returns nothing if (gateOperation == bj_GATEOPERATION_CLOSE) then if (GetDestructableLife(d) <= 0) then call DestructableRestoreLife(d, GetDestructableMaxLife(d), true) endif call SetDestructableAnimation(d, "stand") elseif (gateOperation == bj_GATEOPERATION_OPEN) then if (GetDestructableLife(d) > 0) then call KillDestructable(d) endif call SetDestructableAnimation(d, "death alternate") elseif (gateOperation == bj_GATEOPERATION_DESTROY) then if (GetDestructableLife(d) > 0) then call KillDestructable(d) endif call SetDestructableAnimation(d, "death") else // Unrecognized gate state - ignore the request. endif endfunction ±±ãR)‚.‹A/„6GetElevatorHeightfunction GetElevatorHeight takes destructable d returns integer local integer height set height = 1 + R2I(GetDestructableOccluderHeight(d) / bj_CLIFFHEIGHT) if (height < 1) or (height > 3) then set height = 1 endif return height endfunction'‹B5 "ChangeElevatorHeightfunction ChangeElevatorHeight takes destructable d, integer newHeight returns S‹C5‚zNudgeUnitsInRectEnumfunction NudgeUnitsInRectEnum takes nothing returns nothing local unit nudgee = GetEnumUnit() call SetUnitPosition(nudgee, GetUnitX(nudgee), GetUnitY(nudgee)) endfunctionS‹D5‚zNudgeItemsInRectEnumfunction NudgeItemsInRectEnum takes nothing returns nothing local item nudgee = GetEnumItem() call SetItemPosition(nudgee, GetItemX(nudgee), GetItemY(nudgee)) endfunction nothing local integer oldHeight // Cap the new height within the supported range. set newHeight = IMaxBJ(1, newHeight) set newHeight = IMinBJ(3, newHeight) // Find out what height the elevator is already at. set oldHeight = GetElevatorHeight(d) // Set the elevator's occlusion height. call SetDestructableOccluderHeight(d, bj_CLIFFHEIGHT*(newHeight-1)) if (newHeight == 1) then if (oldHeight == 2) then call SetDestructableAnimation(d, "birth") call QueueDestructableAnimation(d, "stand") elseif (oldHeight == 3) then call SetDestructableAnimation(d, "birth third") call QueueDestructableAnimation(d, "stand") else // Unrecognized old height - snap to new height. call SetDestructableAnimation(d, "stand") endif elseif (newHeight == 2) then if (oldHeight == 1) then call SetDestructableAnimation(d, "death") call QueueDestructableAnimation(d, "stand second") elseif (oldHeight == 3) then call SetDestructableAnimation(d, "birth second") call QueueDestructableAnimation(d, "stand second") else // Unrecognized old height - snap to new height. call SetDestructableAnimation(d, "stand second") endif elseif (newHeight == 3) then if (oldHeight == 1) then call SetDestructableAnimation(d, "death third") call QueueDestructableAnimation(d, "stand third") elseif (oldHeight == 2) then call SetDestructableAnimation(d, "death second") call QueueDestructableAnimation(d, "stand third") else // Unrecognized old height - snap to new height. call SetDestructableAnimation(d, "stand third") endif else // Unrecognized new height - ignore the request. endif endfunction 33£‚l‹E1…0NudgeObjectsInRectfunction NudgeObjectsInRect takes rect nudgeArea returns nothing local group g set g = CreateGroup() call GroupEnumUnitsInRect(g, nudgeArea, null) call ForGroup(g, function NudgeUnitsInRectEnum) call DestroyGroup(g) call EnumItemsInRect(nudgeArea, null, function NudgeItemsInRectEnum) endfunction‚Y‹F=„~NearbyElevatorExistsEnumfunction NearbyElevatorExistsEnum takes nothing returns nothing local destructable d = GetEnumDestructable() local integer dType = GetDestructableTypeId(d) if (dType == bj_ELEVATOR_CODE01) or (dType == bj_ELEVATOR_CODE02) then set bj_elevatorNeighbor = d endif endfunction ¹¹·eƒz‹G5‡HNearbyElevatorExistsfunction NearbyElevatorExists takes real x, real y returns boolean local real findThreshold = 32 local rect r // If another elevator is overlapping this one, ignore the wall. set r = Rect(x - findThreshold, y - findThreshold, x + findThreshold, y + findThreshold) set bj_elevatorNeighbor = null call EnumDestructablesInRect(r, null, function NearbyElevatorExistsEnum) call RemoveRect(r) return bj_elevatorNeighbor != null endfunction*‹HC‚FindElevatorWallBlockerEnumfunction FindElevatorWallBlockerEnum takes nothing returns nothing set bj_elevatorWallBlocker = GetEnumDestructable() endfunction‘ ‹I?¡`ChangeElevatorWallBlockerfunction ChangeElevatorWallBlocker takes real x, real y, real facing, boolean open returns nothing local destructable blocker = null local real findThreshold = 32 local real nudgeLength = 4.25 * bj_CELLWIDTH local real nudgeWidth = 1.25 * bj_CELLWIDTH local rect r // Search for the pathing blocker within the general area. set r = Rect(x - findThreshold, y - findThreshold, x + findThreshold, y + findThreshold) set bj_elevatorWallBlocker = null call EnumDestructablesInRect(r, null, function FindElevatorWallBlockerEnum) call RemoveRect(r) set blocker = bj_elevatorWallBlocker // Ensure that the blocker exists. if (blocker == null) then set blocker = CreateDeadDestructable(bj_ELEVATOR_BLOCKER_CODE, x, y, facing, 1, 0) elseif (GetDestructableTypeId(blocker) != bj_ELEVATOR_BLOCKER_CODE) then // If a different destructible exists in the blocker's spot, ignore // the request. (Two destructibles cannot occupy the same location // on the map, so we cannot create an elevator blocker here.) return endif if (open) then // Ensure that the blocker is dead. if (GetDestructableLife(blocker) > 0) then call KillDestructable(blocker) endif else // Ensure that the blocker is alive. if (GetDestructableLife(blocker) <= 0) then call DestructableRestoreLife(blocker, GetDestructableMaxLife(blocker), false) endif // Nudge any objects standing in the blocker's way. if (facing == 0) then set r = Rect(x - nudgeWidth/2, y - nudgeLength/2, x + nudgeWidth/2, y + nudgeLength/2) call NudgeObjectsInRect(r) call RemoveRect(r) elseif (facing == 90) then set r = Rect(x - nudgeLength/2, y - nudgeWidth/2, x + nudgeLength/2, y + nudgeWidth/2) call NudgeObjectsInRect(r) call RemoveRect(r) else // Unrecognized blocker angle - don't nudge anything. endif endif endfunctionALL) or (walls == bj_ELEVATOR_WALL_TYPE_EAST) then if (not NearbyElevatorExists(x + distToNeighbor, y)) then call ChangeElevatorWallBlocker(x + distToBlocker, y, 0, open) endif endif if (walls == bj_ELEVATOR_WALL_TYPE_ALL) or (walls == bj_ELEVATOR_WALL_TYPE_NORTH) then if (not NearbyElevatorExists(x, y + distToNeighbor)) then call ChangeElevatorWallBlocker(x, y + distToBlocker, 90, open) endif endif if (walls == bj_ELEVATOR_WALL_TYPE_ALL) or (walls == bj_ELEVATOR_WALL_TYPE_SOUTH) then if (not NearbyElevatorExists(x, y - distToNeighbor)) then call ChangeElevatorWallBlocker(x, y - distToBlocker, 90, open) endif endif if (walls == bj_ELEVATOR_WALL_TYPE_ALL) or (walls == bj_ELEVATOR_WALL_TYPE_WEST) then if (not NearbyElevatorExists(x - distToNeighbor, y)) then call ChangeElevatorWallBlocker(x - distToBlocker, y, 0, open) endif endif endfunction µµøž*Š7‹J3”DChangeElevatorWallsfunction ChangeElevatorWalls takes boolean open, integer walls, destructable d returns nothing local real x = GetDestructableX(d) local real y = GetDestructableY(d) local real distToBlocker = 192 local real distToNeighbor = 256 if (walls == bj_ELEVATOR_WALL_TYPE_"‹K/‚WaygateActivateBJfunction WaygateActivateBJ takes boolean activate, unit waygate returns nothing call WaygateActivate(waygate, activate) endfunction‹L/jWaygateIsActiveBJfunction WaygateIsActiveBJ takes unit waygate returns boolean return WaygateIsActive(waygate) endfunctionR‹MA‚lWaygateSetDestinationLocBJfunction WaygateSetDestinationLocBJ takes unit waygate, location loc returns nothing call WaygateSetDestination(waygate, GetLocationX(loc), GetLocationY(loc)) endfunction RR#ÎêM‹NA‚bWaygateGetDestinationLocBJfunction WaygateGetDestinationLocBJ takes unit waygate returns location return Location(WaygateGetDestinationX(waygate), WaygateGetDestinationY(waygate)) endfunction'‹O5‚"UnitSetUsesAltIconBJfunction UnitSetUsesAltIconBJ takes boolean flag, unit whichUnit returns nothing call UnitSetUsesAltIcon(whichUnit, flag) endfunction‚‹P%„ForceUIKeyBJfunction ForceUIKeyBJ takes player whichPlayer, string key returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call ForceUIKey(key) endif endfunction‚‹Q+„ForceUICancelBJfunction ForceUICancelBJ takes player whichPlayer returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call ForceUICancel() endif endfunction ŸŸ¡Lƒ~‹R!‡dForGroupBJfunction ForGroupBJ takes group whichGroup, code callback returns nothing // If the user wants the group destroyed, remember that fact and clear // the flag, in case it is used again in the callback. local boolean wantDestroy = bj_wantDestroyGroup set bj_wantDestroyGroup = false call ForGroup(whichGroup, callback) // If the user wants the group destroyed, do so now. if (wantDestroy) then call DestroyGroup(whichGroup) endif endfunction'‹S1‚&GroupAddUnitSimplefunction GroupAddUnitSimple takes unit whichUnit, group whichGroup returns nothing call GroupAddUnit(whichGroup, whichUnit) endfunction0‹T7‚2GroupRemoveUnitSimplefunction GroupRemoveUnitSimple takes unit whichUnit, group whichGroup returns nothing call GroupRemoveUnit(whichGroup, whichUnit) endfunctionrT†TZ`flrx~„Š–œ¢¨®´ºÀÆÌÒØÞäêðöü &,28>DJPV\bhntz€†Œ’˜ž¤ª°¶¼ÂÈÎÔÚàæìòøþ "(.4:@FLRX^djpv|‚ˆŽ”š ¦¬²¸¾ÄÊÐÖÜâèîôúñ‹ò‹ó‹ ô‹õ‹ö‹÷‹ø‹ù‹ú‹û‹#ÿ‹$‹(‹,‹.‹1‹6‹9‹<‹?‹@ ‹D ‹F ‹I‹M‹Q‹T‹W‹Z‹\‹_‹c‹f‹h‹l‹o‹s‹v ‹w!‹y"‹|#‹$Œ%Œ&Œ 'Œ(Œ)Œ-Œ.Œ/Œ0Œ1Œ2Œ3Œ4Œ5Œ!8Œ"9Œ#:Œ%<Œ'=Œ(>Œ*?Œ,AŒ-BŒ/CŒ1DŒ7EŒ;FŒ?GŒCLŒHMŒLNŒPOŒTPŒVQŒXRŒ\SŒ^TŒaUŒcVŒfWŒiXŒmYŒq[Œu`ŒyaŒ}bcd e fgijklnpr"u#v&w(y*z,{/|1}4~8€:;„A…E oo V‹U/‚GroupAddGroupEnumfunction GroupAddGroupEnum takes nothing returns nothing call GroupAddUnit(bj_groupAddGroupDest, GetEnumUnit()) endfunction„E‹V'ˆlGroupAddGroupfunction GroupAddGroup takes group sourceGroup, group destGroup returns nothing // If the user wants the group destroyed, remember that fact and clear // the flag, in case it is used again in the callback. local boolean wantDestroy = bj_wantDestroyGroup set bj_wantDestroyGroup = false set bj_groupAddGroupDest = destGroup call ForGroup(sourceGroup, function GroupAddGroupEnum) // If the user wants the group destroyed, do so now. if (wantDestroy) then call DestroyGroup(sourceGroup) endif endfunction&‹W5‚ GroupRemoveGroupEnumfunction GroupRemoveGroupEnum takes nothing returns nothing call GroupRemoveUnit(bj_groupRemoveGroupDest, GetEnumUnit()) endfunction 44‰@„Q‹X-ˆ~GroupRemoveGroupfunction GroupRemoveGroup takes group sourceGroup, group destGroup returns nothing // If the user wants the group destroyed, remember that fact and clear // the flag, in case it is used again in the callback. local boolean wantDestroy = bj_wantDestroyGroup set bj_wantDestroyGroup = false set bj_groupRemoveGroupDest = destGroup call ForGroup(sourceGroup, function GroupRemoveGroupEnum) // If the user wants the group destroyed, do so now. if (wantDestroy) then call DestroyGroup(sourceGroup) endif endfunction3‹Y5‚:ForceAddPlayerSimplefunction ForceAddPlayerSimple takes player whichPlayer, force whichForce returns nothing call ForceAddPlayer(whichForce, whichPlayer) endfunction<‹Z;‚FForceRemovePlayerSimplefunction ForceRemovePlayerSimple takes player whichPlayer, force whichForce returns nothing call ForceRemovePlayer(whichForce, whichPlayer) endfunction BBp‚*‹[;„"GroupPickRandomUnitEnumfunction GroupPickRandomUnitEnum takes nothing returns nothing set bj_groupRandomConsidered = bj_groupRandomConsidered + 1 if (GetRandomInt(1,bj_groupRandomConsidered) == 1) then set bj_groupRandomCurrentPick = GetEnumUnit() endif endfunction… ‹\3‰nGroupPickRandomUnitfunction GroupPickRandomUnit takes group whichGroup returns unit // If the user wants the group destroyed, remember that fact and clear // the flag, in case it is used again in the callback. local boolean wantDestroy = bj_wantDestroyGroup set bj_wantDestroyGroup = false set bj_groupRandomConsidered = 0 set bj_groupRandomCurrentPick = null call ForGroup(whichGroup, function GroupPickRandomUnitEnum) // If the user wants the group destroyed, do so now. if (wantDestroy) then call DestroyGroup(whichGroup) endif return bj_groupRandomCurrentPick endfunction 11e‚0‹]?„*ForcePickRandomPlayerEnumfunction ForcePickRandomPlayerEnum takes nothing returns nothing set bj_forceRandomConsidered = bj_forceRandomConsidered + 1 if (GetRandomInt(1,bj_forceRandomConsidered) == 1) then set bj_forceRandomCurrentPick = GetEnumPlayer() endif endfunction‚'‹^7„ ForcePickRandomPlayerfunction ForcePickRandomPlayer takes force whichForce returns player set bj_forceRandomConsidered = 0 set bj_forceRandomCurrentPick = null call ForForce(whichForce, function ForcePickRandomPlayerEnum) return bj_forceRandomCurrentPick endfunction‚l‹_/…2EnumUnitsSelectedfunction EnumUnitsSelected takes player whichPlayer, boolexpr enumFilter, code enumAction returns nothing local group g = CreateGroup() call SyncSelections() call GroupEnumUnitsSelected(g, whichPlayer, enumFilter) call DestroyBoolExpr(enumFilter) call ForGroup(g, enumAction) call DestroyGroup(g) endfunction ™™“ßv‹`9ƒ<GetUnitsInRectMatchingfunction GetUnitsInRectMatching takes rect r, boolexpr filter returns group local group g = CreateGroup() call GroupEnumUnitsInRect(g, r, filter) call DestroyBoolExpr(filter) return g endfunction‹a/hGetUnitsInRectAllfunction GetUnitsInRectAll takes rect r returns group return GetUnitsInRectMatching(r, null) endfunction=‹bE‚>GetUnitsInRectOfPlayerFilterfunction GetUnitsInRectOfPlayerFilter takes nothing returns boolean return GetOwningPlayer(GetFilterUnit()) == bj_groupEnumOwningPlayer endfunction‚‹c9„ GetUnitsInRectOfPlayerfunction GetUnitsInRectOfPlayer takes rect r, player whichPlayer returns group local group g = CreateGroup() set bj_groupEnumOwningPlayer = whichPlayer call GroupEnumUnitsInRect(g, r, filterGetUnitsInRectOfPlayer) return g endfunction BBM‚9‹dE„6GetUnitsInRangeOfLocMatchingfunction GetUnitsInRangeOfLocMatching takes real radius, location whichLocation, boolexpr filter returns group local group g = CreateGroup() call GroupEnumUnitsInRangeOfLoc(g, whichLocation, radius, filter) call DestroyBoolExpr(filter) return g endfunctionJ‹e;‚bGetUnitsInRangeOfLocAllfunction GetUnitsInRangeOfLocAll takes real radius, location whichLocation returns group return GetUnitsInRangeOfLocMatching(radius, whichLocation, null) endfunction/‹f?‚(GetUnitsOfTypeIdAllFilterfunction GetUnitsOfTypeIdAllFilter takes nothing returns boolean return GetUnitTypeId(GetFilterUnit()) == bj_groupEnumTypeId endfunction ©©ê„=‹g3ˆPGetUnitsOfTypeIdAllfunction GetUnitsOfTypeIdAll takes integer unitid returns group local group result = CreateGroup() local group g = CreateGroup() local integer index set index = 0 loop set bj_groupEnumTypeId = unitid call GroupClear(g) call GroupEnumUnitsOfPlayer(g, Player(index), filterGetUnitsOfTypeIdAll) call GroupAddGroup(g, result) set index = index + 1 exitwhen index == bj_MAX_PLAYER_SLOTS endloop call DestroyGroup(g) return result endfunction‚‹h=ƒpGetUnitsOfPlayerMatchingfunction GetUnitsOfPlayerMatching takes player whichPlayer, boolexpr filter returns group local group g = CreateGroup() call GroupEnumUnitsOfPlayer(g, whichPlayer, filter) call DestroyBoolExpr(filter) return g endfunction uuÛ#‹i3‚GetUnitsOfPlayerAllfunction GetUnitsOfPlayerAll takes player whichPlayer returns group return GetUnitsOfPlayerMatching(whichPlayer, null) endfunction;‹jK‚4GetUnitsOfPlayerAndTypeIdFilterfunction GetUnitsOfPlayerAndTypeIdFilter takes nothing returns boolean return GetUnitTypeId(GetFilterUnit()) == bj_groupEnumTypeId endfunction‚/‹k?„(GetUnitsOfPlayerAndTypeIdfunction GetUnitsOfPlayerAndTypeId takes player whichPlayer, integer unitid returns group local group g = CreateGroup() set bj_groupEnumTypeId = unitid call GroupEnumUnitsOfPlayer(g, whichPlayer, filterGetUnitsOfPlayerAndTypeId) return g endfunctionn‹l3ƒ2GetUnitsSelectedAllfunction GetUnitsSelectedAll takes player whichPlayer returns group local group g = CreateGroup() call SyncSelections() call GroupEnumUnitsSelected(g, whichPlayer, null) return g endfunction ••XÐ?‹m-‚ZGetForceOfPlayerfunction GetForceOfPlayer takes player whichPlayer returns force local force f = CreateForce() call ForceAddPlayer(f, whichPlayer) return f endfunctionu‹n'LGetPlayersAllfunction GetPlayersAll takes nothing returns force return bj_FORCE_ALL_PLAYERS endfunction„,‹o9ˆ(GetPlayersByMapControlfunction GetPlayersByMapControl takes mapcontrol whichControl returns force local force f = CreateForce() local integer playerIndex local player indexPlayer set playerIndex = 0 loop set indexPlayer = Player(playerIndex) if GetPlayerController(indexPlayer) == whichControl then call ForceAddPlayer(f, indexPlayer) endif set playerIndex = playerIndex + 1 exitwhen playerIndex == bj_MAX_PLAYER_SLOTS endloop return f endfunction çç±~aF‹p-‚hGetPlayersAlliesfunction GetPlayersAllies takes player whichPlayer returns force local force f = CreateForce() call ForceEnumAllies(f, whichPlayer, null) return f endfunctionI‹q/‚lGetPlayersEnemiesfunction GetPlayersEnemies takes player whichPlayer returns force local force f = CreateForce() call ForceEnumEnemies(f, whichPlayer, null) return f endfunction_‹r1ƒGetPlayersMatchingfunction GetPlayersMatching takes boolexpr filter returns force local force f = CreateForce() call ForceEnumPlayers(f, filter) call DestroyBoolExpr(filter) return f endfunction‹s7‚CountUnitsInGroupEnumfunction CountUnitsInGroupEnum takes nothing returns nothing set bj_groupCountUnits = bj_groupCountUnits + 1 endfunction 99t„7‹t/ˆHCountUnitsInGroupfunction CountUnitsInGroup takes group g returns integer // If the user wants the group destroyed, remember that fact and clear // the flag, in case it is used again in the callback. local boolean wantDestroy = bj_wantDestroyGroup set bj_wantDestroyGroup = false set bj_groupCountUnits = 0 call ForGroup(g, function CountUnitsInGroupEnum) // If the user wants the group destroyed, do so now. if (wantDestroy) then call DestroyGroup(g) endif return bj_groupCountUnits endfunction#‹u;‚CountPlayersInForceEnumfunction CountPlayersInForceEnum takes nothing returns nothing set bj_forceCountPlayers = bj_forceCountPlayers + 1 endfunctiona‹v7ƒCountPlayersInForceBJfunction CountPlayersInForceBJ takes force f returns integer set bj_forceCountPlayers = 0 call ForForce(f, function CountPlayersInForceEnum) return bj_forceCountPlayers endfunction ¾¾„>‹w7ˆNGetRandomSubGroupEnumfunction GetRandomSubGroupEnum takes nothing returns nothing if (bj_randomSubGroupWant > 0) then if (bj_randomSubGroupWant >= bj_randomSubGroupTotal) or (GetRandomReal(0,1) < bj_randomSubGroupChance) then // We either need every remaining unit, or the unit passed its chance check. call GroupAddUnit(bj_randomSubGroupGroup, GetEnumUnit()) set bj_randomSubGroupWant = bj_randomSubGroupWant - 1 endif endif set bj_randomSubGroupTotal = bj_randomSubGroupTotal - 1 endfunction ´´ó„;‹x/ˆPGetRandomSubGroupfunction GetRandomSubGroup takes integer count, group sourceGroup returns group local group g = CreateGroup() set bj_randomSubGroupGroup = g set bj_randomSubGroupWant = count set bj_randomSubGroupTotal = CountUnitsInGroup(sourceGroup) if (bj_randomSubGroupWant <= 0 or bj_randomSubGroupTotal <= 0) then return g endif set bj_randomSubGroupChance = I2R(bj_randomSubGroupWant) / I2R(bj_randomSubGroupTotal) call ForGroup(sourceGroup, function GetRandomSubGroupEnum) return g endfunction‚ ‹yKƒPLivingPlayerUnitsOfTypeIdFilterfunction LivingPlayerUnitsOfTypeIdFilter takes nothing returns boolean local unit filterUnit = GetFilterUnit() return IsUnitAliveBJ(filterUnit) and GetUnitTypeId(filterUnit) == bj_livingPlayerUnitsTypeId endfunction ÛÛ£=ƒD‹zI†HCountLivingPlayerUnitsOfTypeIdfunction CountLivingPlayerUnitsOfTypeId takes integer unitId, player whichPlayer returns integer local group g local integer matchedCount set g = CreateGroup() set bj_livingPlayerUnitsTypeId = unitId call GroupEnumUnitsOfPlayer(g, whichPlayer, filterLivingPlayerUnitsOfTypeId) set matchedCount = CountUnitsInGroup(g) call DestroyGroup(g) return matchedCount endfunction‹{1‚ResetUnitAnimationfunction ResetUnitAnimation takes unit whichUnit returns nothing call SetUnitAnimation(whichUnit, "stand") endfunction?‹|;‚LSetUnitTimeScalePercentfunction SetUnitTimeScalePercent takes unit whichUnit, real percentScale returns nothing call SetUnitTimeScale(whichUnit, percentScale * 0.01) endfunction ««¸á‚ ‹}3ƒhSetUnitScalePercentfunction SetUnitScalePercent takes unit whichUnit, real percentScaleX, real percentScaleY, real percentScaleZ returns nothing call SetUnitScale(whichUnit, percentScaleX * 0.01, percentScaleY * 0.01, percentScaleZ * 0.01) endfunction‚%‹~5„SetUnitVertexColorBJfunction SetUnitVertexColorBJ takes unit whichUnit, real red, real green, real blue, real transparency returns nothing call SetUnitVertexColor(whichUnit, PercentTo255(red), PercentTo255(green), PercentTo255(blue), PercentTo255(100.0-transparency)) endfunction‚‹1„UnitAddIndicatorBJfunction UnitAddIndicatorBJ takes unit whichUnit, real red, real green, real blue, real transparency returns nothing call AddIndicator(whichUnit, PercentTo255(red), PercentTo255(green), PercentTo255(blue), PercentTo255(100.0-transparency)) endfunction NN•´‚CŒA„NDestructableAddIndicatorBJfunction DestructableAddIndicatorBJ takes destructable whichDestructable, real red, real green, real blue, real transparency returns nothing call AddIndicator(whichDestructable, PercentTo255(red), PercentTo255(green), PercentTo255(blue), PercentTo255(100.0-transparency)) endfunction‚Œ1„ItemAddIndicatorBJfunction ItemAddIndicatorBJ takes item whichItem, real red, real green, real blue, real transparency returns nothing call AddIndicator(whichItem, PercentTo255(red), PercentTo255(green), PercentTo255(blue), PercentTo255(100.0-transparency)) endfunction‚HŒC„VSetUnitFacingToFaceLocTimedfunction SetUnitFacingToFaceLocTimed takes unit whichUnit, location target, real duration returns nothing local location unitLoc = GetUnitLoc(whichUnit) call SetUnitFacingTimed(whichUnit, AngleBetweenPoints(unitLoc, target), duration) call RemoveLocation(unitLoc) endfunction xx¬j2‚0ŒE„$SetUnitFacingToFaceUnitTimedfunction SetUnitFacingToFaceUnitTimed takes unit whichUnit, unit target, real duration returns nothing local location unitLoc = GetUnitLoc(target) call SetUnitFacingToFaceLocTimed(whichUnit, unitLoc, duration) call RemoveLocation(unitLoc) endfunction:Œ5‚HQueueUnitAnimationBJfunction QueueUnitAnimationBJ takes unit whichUnit, string whichAnimation returns nothing call QueueUnitAnimation(whichUnit, whichAnimation) endfunctionDŒA‚PSetDestructableAnimationBJfunction SetDestructableAnimationBJ takes destructable d, string whichAnimation returns nothing call SetDestructableAnimation(d, whichAnimation) endfunctionJŒE‚XQueueDestructableAnimationBJfunction QueueDestructableAnimationBJ takes destructable d, string whichAnimation returns nothing call QueueDestructableAnimation(d, whichAnimation) endfunction ÐТeNŒE‚`SetDestAnimationSpeedPercentfunction SetDestAnimationSpeedPercent takes destructable d, real percentScale returns nothing call SetDestructableAnimationSpeed(d, percentScale * 0.01) endfunction?Œ+‚\DialogDisplayBJfunction DialogDisplayBJ takes boolean flag, dialog whichDialog, player whichPlayer returns nothing call DialogDisplay(whichPlayer, whichDialog, flag) endfunction,Œ 1‚0DialogSetMessageBJfunction DialogSetMessageBJ takes dialog whichDialog, string message returns nothing call DialogSetMessage(whichDialog, message) endfunctiongŒ /ƒ(DialogAddButtonBJfunction DialogAddButtonBJ takes dialog whichDialog, string buttonText returns button set bj_lastCreatedButton = DialogAddButton(whichDialog, buttonText,0) return bj_lastCreatedButton endfunction ÖÖêrþ‚Œ CƒfDialogAddButtonWithHotkeyBJfunction DialogAddButtonWithHotkeyBJ takes dialog whichDialog, string buttonText, integer hotkey returns button set bj_lastCreatedButton = DialogAddButton(whichDialog, buttonText,hotkey) return bj_lastCreatedButton endfunctionŒ 'jDialogClearBJfunction DialogClearBJ takes dialog whichDialog returns nothing call DialogClear(whichDialog) endfunctionŒ 9`GetLastCreatedButtonBJfunction GetLastCreatedButtonBJ takes nothing returns button return bj_lastCreatedButton endfunction~Œ1TGetClickedButtonBJfunction GetClickedButtonBJ takes nothing returns button return GetClickedButton() endfunction~Œ1TGetClickedDialogBJfunction GetClickedDialogBJ takes nothing returns dialog return GetClickedDialog() endfunction ±ƒŒ3…xSetPlayerAllianceBJfunction SetPlayerAllianceBJ takes player sourcePlayer, alliancetype whichAllianceSetting, boolean value, player otherPlayer returns nothing // Prevent players from attempting to ally with themselves. if (sourcePlayer == otherPlayer) then return endif call SetPlayerAlliance(sourcePlayer, otherPlayer, whichAllianceSetting, value) endfunction„KŒEˆZSetPlayerAllianceStateAllyBJfunction SetPlayerAllianceStateAllyBJ takes player sourcePlayer, player otherPlayer, boolean flag returns nothing call SetPlayerAlliance(sourcePlayer, otherPlayer, ALLIANCE_PASSIVE, flag) call SetPlayerAlliance(sourcePlayer, otherPlayer, ALLIANCE_HELP_REQUEST, flag) call SetPlayerAlliance(sourcePlayer, otherPlayer, ALLIANCE_HELP_RESPONSE, flag) call SetPlayerAlliance(sourcePlayer, otherPlayer, ALLIANCE_SHARED_XP, flag) call SetPlayerAlliance(sourcePlayer, otherPlayer, ALLIANCE_SHARED_SPELLS, flag) endfunction ììëí{ŒIƒ6SetPlayerAllianceStateVisionBJfunction SetPlayerAllianceStateVisionBJ takes player sourcePlayer, player otherPlayer, boolean flag returns nothing call SetPlayerAlliance(sourcePlayer, otherPlayer, ALLIANCE_SHARED_VISION, flag) endfunction~ŒKƒ:SetPlayerAllianceStateControlBJfunction SetPlayerAllianceStateControlBJ takes player sourcePlayer, player otherPlayer, boolean flag returns nothing call SetPlayerAlliance(sourcePlayer, otherPlayer, ALLIANCE_SHARED_CONTROL, flag) endfunction‚ŒSƒTSetPlayerAllianceStateFullControlBJfunction SetPlayerAllianceStateFullControlBJ takes player sourcePlayer, player otherPlayer, boolean flag returns nothing call SetPlayerAlliance(sourcePlayer, otherPlayer, ALLIANCE_SHARED_ADVANCED_CONTROL, flag) endfunction+== bj_ALLIANCE_UNALLIED_VISION then call SetPlayerAllianceStateAllyBJ( sourcePlayer, otherPlayer, false ) call SetPlayerAllianceStateVisionBJ( sourcePlayer, otherPlayer, true ) call SetPlayerAllianceStateControlBJ( sourcePlayer, otherPlayer, false ) call SetPlayerAllianceStateFullControlBJ( sourcePlayer, otherPlayer, false ) elseif allianceState == bj_ALLIANCE_ALLIED then call SetPlayerAllianceStateAllyBJ( sourcePlayer, otherPlayer, true ) call SetPlayerAllianceStateVisionBJ( sourcePlayer, otherPlayer, false ) call SetPlayerAllianceStateControlBJ( sourcePlayer, otherPlayer, false ) call SetPlayerAllianceStateFullControlBJ( sourcePlayer, otherPlayer, false ) elseif allianceState == bj_ALLIANCE_ALLIED_VISION then call SetPlayerAllianceStateAllyBJ( sourcePlayer, otherPlayer, true ) call SetPlayerAllianceStateVisionBJ( sourcePlayer, otherPlayer, true ) ca,ll SetPlayerAllianceStateControlBJ( sourcePlayer, otherPlayer, false ) call SetPlayerAllianceStateFullControlBJ( sourcePlayer, otherPlayer, false ) elseif allianceState == bj_ALLIANCE_ALLIED_UNITS then call SetPlayerAllianceStateAllyBJ( sourcePlayer, otherPlayer, true ) call SetPlayerAllianceStateVisionBJ( sourcePlayer, otherPlayer, true ) call SetPlayerAllianceStateControlBJ( sourcePlayer, otherPlayer, true ) call SetPlayerAllianceStateFullControlBJ( sourcePlayer, otherPlayer, false ) elseif allianceState == bj_ALLIANCE_ALLIED_ADVUNITS then call SetPlayerAllianceStateAllyBJ( sourcePlayer, otherPlayer, true ) call SetPlayerAllianceStateVisionBJ( sourcePlayer, otherPlayer, true ) call SetPlayerAllianceStateControlBJ( sourcePlayer, otherPlayer, true ) call SetPlayerAllianceStateFullControlBJ( sourcePlayer, otherPlayer, true ) elseif allianceState == bj_ALLIANCE_NEUTRAL then call SetPlayerAllianceStateAllyBJ( sourcePlayer, otherPlayer, false ) call SetPlayerAllianceStateVisionBJ( sourcePlayer, otherPlayer, false ) call SetPlayerAllianceStateControlBJ( sourcePlayer, otherPlayer, false ) call SetPlayerAllianceStateFullControlBJ( sourcePlayer, otherPlayer, false ) call SetPlayerAlliance( sourcePlayer, otherPlayer, ALLIANCE_PASSIVE, true ) elseif allianceState == bj_ALLIANCE_NEUTRAL_VISION then call SetPlayerAllianceStateAllyBJ( sourcePlayer, otherPlayer, false ) call SetPlayerAllianceStateVisionBJ( sourcePlayer, otherPlayer, true ) call SetPlayerAllianceStateControlBJ( sourcePlayer, otherPlayer, false ) call SetPlayerAllianceStateFullControlBJ( sourcePlayer, otherPlayer, false ) call SetPlayerAlliance( sourcePlayer, otherPlayer, ALLIANCE_PASSIVE, true ) else // Unrecognized alliance state - ignore the request. endif endfunction 557Œ=º:SetPlayerAllianceStateBJfunction SetPlayerAllianceStateBJ takes player sourcePlayer, player otherPlayer, integer allianceState returns nothing // Prevent players from attempting to ally with themselves. if (sourcePlayer == otherPlayer) then return endif if allianceState == bj_ALLIANCE_UNALLIED then call SetPlayerAllianceStateAllyBJ( sourcePlayer, otherPlayer, false ) call SetPlayerAllianceStateVisionBJ( sourcePlayer, otherPlayer, false ) call SetPlayerAllianceStateControlBJ( sourcePlayer, otherPlayer, false ) call SetPlayerAllianceStateFullControlBJ( sourcePlayer, otherPlayer, false ) elseif allianceState * bb‡Œ;ŽSetForceAllianceStateBJfunction SetForceAllianceStateBJ takes force sourceForce, force targetForce, integer allianceState returns nothing local integer sourceIndex local integer targetIndex set sourceIndex = 0 loop if (sourceForce==bj_FORCE_ALL_PLAYERS or IsPlayerInForce(Player(sourceIndex), sourceForce)) then set targetIndex = 0 loop if (targetForce==bj_FORCE_ALL_PLAYERS or IsPlayerInForce(Player(targetIndex), targetForce)) then call SetPlayerAllianceStateBJ(Player(sourceIndex), Player(targetIndex), allianceState) endif set targetIndex = targetIndex + 1 exitwhen targetIndex == bj_MAX_PLAYER_SLOTS endloop endif set sourceIndex = sourceIndex + 1 exitwhen sourceIndex == bj_MAX_PLAYER_SLOTS endloop endfunction ƒzŒ1‡LPlayersAreCoAlliedfunction PlayersAreCoAllied takes player playerA, player playerB returns boolean // Players are considered to be allied with themselves. if (playerA == playerB) then return true endif // Co-allies are both allied with each other. if GetPlayerAlliance(playerA, playerB, ALLIANCE_PASSIVE) then if GetPlayerAlliance(playerB, playerA, ALLIANCE_PASSIVE) then return true endif endif return false endfunction ‹‹†qŒ?,ShareEverythingWithTeamAIfunction ShareEverythingWithTeamAI takes player whichPlayer returns nothing local integer playerIndex local player indexPlayer set playerIndex = 0 loop set indexPlayer = Player(playerIndex) if (PlayersAreCoAllied(whichPlayer, indexPlayer) and whichPlayer != indexPlayer) then if (GetPlayerController(indexPlayer) == MAP_CONTROL_COMPUTER) then call SetPlayerAlliance(whichPlayer, indexPlayer, ALLIANCE_SHARED_VISION, true) call SetPlayerAlliance(whichPlayer, indexPlayer, ALLIANCE_SHARED_CONTROL, true) call SetPlayerAlliance(whichPlayer, indexPlayer, ALLIANCE_SHARED_ADVANCED_CONTROL, true) endif endif set playerIndex = playerIndex + 1 exitwhen playerIndex == bj_MAX_PLAYERS endloop endfunction ¡¡†[Œ;ShareEverythingWithTeamfunction ShareEverythingWithTeam takes player whichPlayer returns nothing local integer playerIndex local player indexPlayer set playerIndex = 0 loop set indexPlayer = Player(playerIndex) if (PlayersAreCoAllied(whichPlayer, indexPlayer) and whichPlayer != indexPlayer) then call SetPlayerAlliance(whichPlayer, indexPlayer, ALLIANCE_SHARED_VISION, true) call SetPlayerAlliance(whichPlayer, indexPlayer, ALLIANCE_SHARED_CONTROL, true) call SetPlayerAlliance(indexPlayer, whichPlayer, ALLIANCE_SHARED_CONTROL, true) call SetPlayerAlliance(whichPlayer, indexPlayer, ALLIANCE_SHARED_ADVANCED_CONTROL, true) endif set playerIndex = playerIndex + 1 exitwhen playerIndex == bj_MAX_PLAYERS endloop endfunction 22‡JŒ9ŽdConfigureNeutralVictimfunction ConfigureNeutralVictim takes nothing returns nothing local integer index local player indexPlayer local player neutralVictim = Player(bj_PLAYER_NEUTRAL_VICTIM) set index = 0 loop set indexPlayer = Player(index) call SetPlayerAlliance(neutralVictim, indexPlayer, ALLIANCE_PASSIVE, true) call SetPlayerAlliance(indexPlayer, neutralVictim, ALLIANCE_PASSIVE, false) set index = index + 1 exitwhen index == bj_MAX_PLAYERS endloop // Neutral Victim and Neutral Aggressive should not fight each other. set indexPlayer = Player(PLAYER_NEUTRAL_AGGRESSIVE) call SetPlayerAlliance(neutralVictim, indexPlayer, ALLIANCE_PASSIVE, true) call SetPlayerAlliance(indexPlayer, neutralVictim, ALLIANCE_PASSIVE, true) // Neutral Victim does not give bounties. call SetPlayerState(neutralVictim, PLAYER_STATE_GIVES_BOUNTY, 0) endfunction ³³|EŒG‚LMakeUnitsPassiveForPlayerEnumfunction MakeUnitsPassiveForPlayerEnum takes nothing returns nothing call SetUnitOwner(GetEnumUnit(), Player(bj_PLAYER_NEUTRAL_VICTIM), false) endfunctionƒŒ?…JMakeUnitsPassiveForPlayerfunction MakeUnitsPassiveForPlayer takes player whichPlayer returns nothing local group playerUnits = CreateGroup() call CachePlayerHeroData(whichPlayer) call GroupEnumUnitsOfPlayer(playerUnits, whichPlayer, null) call ForGroup(playerUnits, function MakeUnitsPassiveForPlayerEnum) call DestroyGroup(playerUnits) endfunction ""ƒwŒ;‡<MakeUnitsPassiveForTeamfunction MakeUnitsPassiveForTeam takes player whichPlayer returns nothing local integer playerIndex local player indexPlayer set playerIndex = 0 loop set indexPlayer = Player(playerIndex) if PlayersAreCoAllied(whichPlayer, indexPlayer) then call MakeUnitsPassiveForPlayer(indexPlayer) endif set playerIndex = playerIndex + 1 exitwhen playerIndex == bj_MAX_PLAYERS endloop endfunctionƒ_Œ1‡AllowVictoryDefeatfunction AllowVictoryDefeat takes playergameresult gameResult returns boolean if (gameResult == PLAYER_GAME_RESULT_VICTORY) then return not IsNoVictoryCheat() endif if (gameResult == PLAYER_GAME_RESULT_DEFEAT) then return not IsNoDefeatCheat() endif if (gameResult == PLAYER_GAME_RESULT_NEUTRAL) then return (not IsNoVictoryCheat()) and (not IsNoDefeatCheat()) endif return true endfunction yèhŒ:EndGameBJfunction EndGameBJ takes nothing returns nothing call EndGame( true ) endfunctionˆKŒ 5jMeleeVictoryDialogBJfunction MeleeVictoryDialogBJ takes player whichPlayer, boolean leftGame retu6Š Œ!3“nMeleeDefeatDialogBJfunction MeleeDefeatDialogBJ takes player whichPlayer, boolean leftGame returns nothing local trigger t = CreateTrigger() local dialog d = DialogCreate() local string formatString // Display "player was defeated" or "player 7rns nothing local trigger t = CreateTrigger() local dialog d = DialogCreate() local string formatString // Display "player was victorious" or "player has left the game" message if (leftGame) then set formatString = GetLocalizedString( "PLAYER_LEFT_GAME" ) else set formatString = GetLocalizedString( "PLAYER_VICTORIOUS" ) endif call DisplayTimedTextFromPlayer(whichPlayer, 0, 0, 60, formatString) call DialogSetMessage( d, GetLocalizedString( "GAMEOVER_VICTORY_MSG" ) ) call DialogAddButton( d, GetLocalizedString( "GAMEOVER_CONTINUE_GAME" ), GetLocalizedHotkey("GAMEOVER_CONTINUE_GAME") ) set t = CreateTrigger() call TriggerRegisterDialogButtonEvent( t, DialogAddQuitButton( d, true, GetLocalizedString( "GAMEOVER_QUIT_GAME" ), GetLocalizedHotkey("GAMEOVER_QUIT_GAME") ) ) call DialogDisplay( whichPlayer, d, true ) call StartSoundForPlayerBJ( whichPlayer, bj_victoryDialogSound ) endfunctionhas left the game" message if (leftGame) then set formatString = GetLocalizedString( "PLAYER_LEFT_GAME" ) else set formatString = GetLocalizedString( "PLAYER_DEFEATED" ) endif call DisplayTimedTextFromPlayer(whichPlayer, 0, 0, 60, formatString) call DialogSetMessage( d, GetLocalizedString( "GAMEOVER_DEFEAT_MSG" ) ) // Only show the continue button if the game is not over and observers on death are allowed if (not bj_meleeGameOver and IsMapFlagSet(MAP_OBSERVERS_ON_DEATH)) then call DialogAddButton( d, GetLocalizedString( "GAMEOVER_CONTINUE_OBSERVING" ), GetLocalizedHotkey("GAMEOVER_CONTINUE_OBSERVING") ) endif set t = CreateTrigger() call TriggerRegisterDialogButtonEvent( t, DialogAddQuitButton( d, true, GetLocalizedString( "GAMEOVER_QUIT_GAME" ), GetLocalizedHotkey("GAMEOVER_QUIT_GAME") ) ) call DialogDisplay( whichPlayer, d, true ) call StartSoundForPlayerBJ( whichPlayer, bj_defeatDialogSound ) endfunction dd‡Œ"-Ž GameOverDialogBJfunction GameOverDialogBJ takes player whichPlayer, boolean leftGame returns nothing local trigger t = CreateTrigger() local dialog d = DialogCreate() local string s // Display "player left the game" message call DisplayTimedTextFromPlayer(whichPlayer, 0, 0, 60, GetLocalizedString( "PLAYER_LEFT_GAME" )) if (GetIntegerGameState(GAME_STATE_DISCONNECTED) != 0) then set s = GetLocalizedString( "GAMEOVER_DISCONNECTED" ) else set s = GetLocalizedString( "GAMEOVER_GAME_OVER" ) endif call DialogSetMessage( d, s ) set t = CreateTrigger() call TriggerRegisterDialogButtonEvent( t, DialogAddQuitButton( d, true, GetLocalizedString( "GAMEOVER_OK" ), GetLocalizedHotkey("GAMEOVER_OK") ) ) call DialogDisplay( whichPlayer, d, true ) call StartSoundForPlayerBJ( whichPlayer, bj_defeatDialogSound ) endfunction vv…Œ#C‰RRemovePlayerPreserveUnitsBJfunction RemovePlayerPreserveUnitsBJ takes player whichPlayer, playergameresult gameResult, boolean leftGame returns nothing if AllowVictoryDefeat(gameResult) then call RemovePlayer(whichPlayer, gameResult) if( gameResult == PLAYER_GAME_RESULT_VICTORY ) then call MeleeVictoryDialogBJ( whichPlayer, leftGame ) return elseif( gameResult == PLAYER_GAME_RESULT_DEFEAT ) then call MeleeDefeatDialogBJ( whichPlayer, leftGame ) else call GameOverDialogBJ( whichPlayer, leftGame ) endif endif endfunction Ïϯƒ\Œ$/‡CustomVictoryOkBJfunction CustomVictoryOkBJ takes nothing returns nothing if bj_isSinglePlayer then call PauseGame( false ) // Bump the difficulty back up to the default. call SetGameDifficulty(GetDefaultDifficulty()) endif if (bj_changeLevelMapName == null) then call EndGame( bj_changeLevelShowScores ) else call ChangeLevel( bj_changeLevelMapName, bj_changeLevelShowScores ) endif endfunction‚MŒ%3„pCustomVictoryQuitBJfunction CustomVictoryQuitBJ takes nothing returns nothing if bj_isSinglePlayer then call PauseGame( false ) // Bump the difficulty back up to the default. call SetGameDifficulty(GetDefaultDifficulty()) endif call EndGame( bj_changeLevelShowScores ) endfunction) call DialogSetMessage( d, GetLocalizedString( "GAMEOVER_VICTORY_MSG" ) ) set t = CreateTrigger() call TriggerRegisterDialogButtonEvent( t, DialogAddButton( d, GetLocalizedString( "GAMEOVER_CONTINUE" ), GetLocalizedHotkey("GAMEOVER_CONTINUE") ) ) call TriggerAddAction( t, function CustomVictoryOkBJ ) set t = CreateTrigger() call TriggerRegisterDialogButtonEvent( t, DialogAddButton( d, GetLocalizedString( "GAMEOVER_QUIT_MISSION" ), GetLocalizedHotkey("GAMEOVER_QUIT_MISSION") ) ) call TriggerAddAction( t, function CustomVictoryQuitBJ ) if (GetLocalPlayer() == whichPlayer) then call EnableUserControl( true ) if bj_isSinglePlayer then call PauseGame( true ) endif call EnableUserUI(false) endif call DialogDisplay( whichPlayer, d, true ) call VolumeGroupSetVolumeForPlayerBJ( whichPlayer, SOUND_VOLUMEGROUP_UI, 1.0 ) call StartSoundForPlayerBJ( whichPlayer, bj_victoryDialogSound ) endfunction Ô‰*Œ&7’&CustomVictoryDialogBJfunction CustomVictoryDialogBJ takes player whichPlayer returns nothing local trigger t = CreateTrigger() local dialog d = DialogCreate(;„(Œ'3ˆ&CustomVictorySkipBJfunction CustomVictorySkipBJ takes player whichPlayer returns nothing if (GetLocalPlayer() == whichPlayer) then if bj_isSinglePlayer then // Bump the difficulty back up to the default. call SetGameDifficulty(GetDefaultDifficulty()) endif if (bj_changeLevelMapName == null) then call EndGame( bj_changeLevelShowScores ) else call ChangeLevel( bj_changeLevelMapName, bj_changeLevelShowScores ) endif endif endfunction »»†AŒ(+Œ`CustomVictoryBJfunction CustomVictoryBJ takes player whichPlayer, boolean showDialog, boolean showScores returns nothing if AllowVictoryDefeat( PLAYER_GAME_RESULT_VICTORY ) then call RemovePlayer( whichPlayer, PLAYER_GAME_RESULT_VICTORY ) if not bj_isSinglePlayer then call DisplayTimedTextFromPlayer(whichPlayer, 0, 0, 60, GetLocalizedString( "PLAYER_VICTORIOUS" ) ) endif // UI only needs to be displayed to users. if (GetPlayerController(whichPlayer) == MAP_CONTROL_USER) then set bj_changeLevelShowScores = showScores if showDialog then call CustomVictoryDialogBJ( whichPlayer ) else call CustomVictorySkipBJ( whichPlayer ) endif endif endif endfunction ÍÍr!Œ)7‚CustomDefeatRestartBJfunction CustomDefeatRestartBJ takes nothing returns nothing call PauseGame( false ) call RestartGame( true ) endfunction… Œ*I‰TCustomDefeatReduceDifficultyBJfunction CustomDefeatReduceDifficultyBJ takes nothing returns nothing local gamedifficulty diff = GetGameDifficulty() call PauseGame( false ) // Knock the difficulty down, if possible. if (diff == MAP_DIFFICULTY_EASY) then // Sorry, but it doesn't get any easier than this. elseif (diff == MAP_DIFFICULTY_NORMAL) then call SetGameDifficulty(MAP_DIFFICULTY_EASY) elseif (diff == MAP_DIFFICULTY_HARD) then call SetGameDifficulty(MAP_DIFFICULTY_NORMAL) else // Unrecognized difficulty endif call RestartGame( true ) endfunction ..ÍŒ+1‚CustomDefeatLoadBJfunction CustomDefeatLoadBJ takes nothing returns nothing call PauseGame( false ) call DisplayLoadDialog() endfunction‚/Œ,1„6CustomDefeatQuitBJfunction CustomDefeatQuitBJ takes nothing returns nothing if bj_isSinglePlayer then call PauseGame( false ) endif // Bump the difficulty back up to the default. call SetGameDifficulty(GetDefaultDifficulty()) call EndGame( true ) endfunctionAction( t, function CustomDefeatReduceDifficultyBJ ) endif set t = CreateTrigger() call TriggerRegisterDialogButtonEvent( t, DialogAddButton( d, GetLocalizedString( "GAMEOVER_LOAD" ), GetLocalizedHotkey("GAMEOVER_LOAD") ) ) call TriggerAddAction( t, function CustomDefeatLoadBJ ) endif set t = CreateTrigger() call TriggerRegisterDialogButtonEvent( t, DialogAddButton( d, GetLocalizedString( "GAMEOVER_QUIT_MISSION" ), GetLocalizedHotkey("GAMEOVER_QUIT_MISSION") ) ) call TriggerAddAction( t, function CustomDefeatQuitBJ ) if (GetLocalPlayer() == whichPlayer) then call EnableUserControl( true ) if bj_isSinglePlayer then call PauseGame( true ) endif call EnableUserUI(false) endif call DialogDisplay( whichPlayer, d, true ) call VolumeGroupSetVolumeForPlayerBJ( whichPlayer, SOUND_VOLUMEGROUP_UI, 1.0 ) call StartSoundForPlayerBJ( whichPlayer, bj_defeatDialogSound ) endfunction ¸¸Ž<Œ-5œLCustomDefeatDialogBJfunction CustomDefeatDialogBJ takes player whichPlayer, string message returns nothing local trigger t = CreateTrigger() local dialog d = DialogCreate() call DialogSetMessage( d, message ) if bj_isSinglePlayer then set t = CreateTrigger() call TriggerRegisterDialogButtonEvent( t, DialogAddButton( d, GetLocalizedString( "GAMEOVER_RESTART" ), GetLocalizedHotkey("GAMEOVER_RESTART") ) ) call TriggerAddAction( t, function CustomDefeatRestartBJ ) if (GetGameDifficulty() != MAP_DIFFICULTY_EASY) then set t = CreateTrigger() call TriggerRegisterDialogButtonEvent( t, DialogAddButton( d, GetLocalizedString( "GAMEOVER_REDUCE_DIFFICULTY" ), GetLocalizedHotkey("GAMEOVER_REDUCE_DIFFICULTY") ) ) call TriggerAdd@ ˜˜„rŒ.)‰DCustomDefeatBJfunction CustomDefeatBJ takes player whichPlayer, string message returns nothing if AllowVictoryDefeat( PLAYER_GAME_RESULT_DEFEAT ) then call RemovePlayer( whichPlayer, PLAYER_GAME_RESULT_DEFEAT ) if not bj_isSinglePlayer then call DisplayTimedTextFromPlayer(whichPlayer, 0, 0, 60, GetLocalizedString( "PLAYER_DEFEATED" ) ) endif // UI only needs to be displayed to users. if (GetPlayerController(whichPlayer) == MAP_CONTROL_USER) then call CustomDefeatDialogBJ( whichPlayer, message ) endif endif endfunctionnŒ/)ƒ<SetNextLevelBJfunction SetNextLevelBJ takes string nextLevel returns nothing if (nextLevel == "") then set bj_changeLevelMapName = null else set bj_changeLevelMapName = nextLevel endif endfunction  Ê9Œ0=‚>SetPlayerOnScoreScreenBJfunction SetPlayerOnScoreScreenBJ takes boolean flag, player whichPlayer returns nothing call SetPlayerOnScoreScreen(whichPlayer, flag) endfunction†2Œ1'ŒFCreateQuestBJfunction CreateQuestBJ takes integer questType, string title, string description, string iconPath returns quest local boolean required = (questType == bj_QUESTTYPE_REQ_DISCOVERED) or (questType == bj_QUESTTYPE_REQ_UNDISCOVERED) local boolean discovered = (questType == bj_QUESTTYPE_REQ_DISCOVERED) or (questType == bj_QUESTTYPE_OPT_DISCOVERED) set bj_lastCreatedQuest = CreateQuest() call QuestSetTitle(bj_lastCreatedQuest, title) call QuestSetDescription(bj_lastCreatedQuest, description) call QuestSetIconPath(bj_lastCreatedQuest, iconPath) call QuestSetRequired(bj_lastCreatedQuest, required) call QuestSetDiscovered(bj_lastCreatedQuest, discovered) call QuestSetCompleted(bj_lastCreatedQuest, false) return bj_lastCreatedQuest endfunction œGç¥ZŒ2)hDestroyQuestBJfunction DestroyQuestBJ takes quest whichQuest returns nothing call DestroyQuest(whichQuest) endfunction'Œ3/‚(QuestSetEnabledBJfunction QuestSetEnabledBJ takes boolean enabled, quest whichQuest returns nothing call QuestSetEnabled(whichQuest, enabled) endfunctionŒ4+‚QuestSetTitleBJfunction QuestSetTitleBJ takes quest whichQuest, string title returns nothing call QuestSetTitle(whichQuest, title) endfunction:Œ57‚FQuestSetDescriptionBJfunction QuestSetDescriptionBJ takes quest whichQuest, string description returns nothing call QuestSetDescription(whichQuest, description) endfunction1Œ63‚8QuestSetCompletedBJfunction QuestSetCompletedBJ takes quest whichQuest, boolean completed returns nothing call QuestSetCompleted(whichQuest, completed) endfunction"Œ7-‚ QuestSetFailedBJfunction QuestSetFailedBJ takes quest whichQuest, boolean failed returns nothing call QuestSetFailed(whichQuest, failed) endfunction ||6¾*6Œ85‚@QuestSetDiscoveredBJfunction QuestSetDiscoveredBJ takes quest whichQuest, boolean discovered returns nothing call QuestSetDiscovered(whichQuest, discovered) endfunctionŒ97ZGetLastCreatedQuestBJfunction GetLastCreatedQuestBJ takes nothing returns quest return bj_lastCreatedQuest endfunction‚hŒ:/…*CreateQuestItemBJfunction CreateQuestItemBJ takes quest whichQuest, string description returns questitem set bj_lastCreatedQuestItem = QuestCreateItem(whichQuest) call QuestItemSetDescription(bj_lastCreatedQuestItem, description) call QuestItemSetCompleted(bj_lastCreatedQuestItem, false) return bj_lastCreatedQuestItem endfunctionRŒ;?‚nQuestItemSetDescriptionBJfunction QuestItemSetDescriptionBJ takes questitem whichQuestItem, string description returns nothing call QuestItemSetDescription(whichQuestItem, description) endfunction ££pHIŒ<;‚`QuestItemSetCompletedBJfunction QuestItemSetCompletedBJ takes questitem whichQuestItem, boolean completed returns nothing call QuestItemSetCompleted(whichQuestItem, completed) endfunctionŒ=?rGetLastCreatedQuestItemBJfunction GetLastCreatedQuestItemBJ takes nothing returns questitem return bj_lastCreatedQuestItem endfunction‚<Œ>;„FCreateDefeatConditionBJfunction CreateDefeatConditionBJ takes string description returns defeatcondition set bj_lastCreatedDefeatCondition = CreateDefeatCondition() call DefeatConditionSetDescription(bj_lastCreatedDefeatCondition, description) return bj_lastCreatedDefeatCondition endfunction4Œ?=‚4DestroyDefeatConditionBJfunction DestroyDefeatConditionBJ takes defeatcondition whichCondition returns nothing call DestroyDefeatCondition(whichCondition) endfunction %%ÃVjŒ@KƒDefeatConditionSetDescriptionBJfunction DefeatConditionSetDescriptionBJ takes defeatcondition whichCondition, string description returns nothing call DefeatConditionSetDescription(whichCondition, description) endfunction,ŒAK‚GetLastCreatedDefeatConditionBJfunction GetLastCreatedDefeatConditionBJ takes nothing returns defeatcondition return bj_lastCreatedDefeatCondition endfunctionŒB=jFlashQuestDialogButtonBJfunction FlashQuestDialogButtonBJ takes nothing returns nothing call FlashQuestDialogButton() endfunction£ŒC)ÆQuestMessageBJfunction QuestMessageBJ takes force f, integer messageType, string message returns nothing if (IsPlayerInForce(GetLocalPlayer(), f)) then // Use only local code (no net traffic) within this block to avoid desyncs. if (messageType == bj_QUESTMESSAGE_DISCOVERED) then call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, bj_TEXT_DELAY_QUEST, " ") cHIall DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, bj_TEXT_DELAY_QUEST, message) call StartSound(bj_questDiscoveredSound) call FlashQuestDialogButton() elseif (messageType == bj_QUESTMESSAGE_UPDATED) then call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, bj_TEXT_DELAY_QUESTUPDATE, " ") call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, bj_TEXT_DELAY_QUESTUPDATE, message) call StartSound(bj_questUpdatedSound) call FlashQuestDialogButton() elseif (messageType == bj_QUESTMESSAGE_COMPLETED) then call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, bj_TEXT_DELAY_QUESTDONE, " ") call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, bj_TEXT_DELAY_QUESTDONE, message) call StartSound(bj_questCompletedSound) call FlashQuestDialogButton() elseif (messageType == bj_QUESTMESSAGE_FAILED) then call DisplayTimedTextToPlayer(GetLocalPlayerJ(), 0, 0, bj_TEXT_DELAY_QUESTFAILED, " ") call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, bj_TEXT_DELAY_QUESTFAILED, message) call StartSound(bj_questFailedSound) call FlashQuestDialogButton() elseif (messageType == bj_QUESTMESSAGE_REQUIREMENT) then call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, bj_TEXT_DELAY_QUESTREQUIREMENT, message) elseif (messageType == bj_QUESTMESSAGE_MISSIONFAILED) then call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, bj_TEXT_DELAY_MISSIONFAILED, " ") call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, bj_TEXT_DELAY_MISSIONFAILED, message) call StartSound(bj_questFailedSound) elseif (messageType == bj_QUESTMESSAGE_HINT) then call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, bj_TEXT_DELAY_HINT, " ") call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, bj_TEXT_DELAY_HINT, message) call StartSound(bjK_questHintSound) elseif (messageType == bj_QUESTMESSAGE_ALWAYSHINT) then call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, bj_TEXT_DELAY_ALWAYSHINT, " ") call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, bj_TEXT_DELAY_ALWAYSHINT, message) call StartSound(bj_questHintSound) elseif (messageType == bj_QUESTMESSAGE_SECRET) then call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, bj_TEXT_DELAY_SECRET, " ") call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, bj_TEXT_DELAY_SECRET, message) call StartSound(bj_questSecretSound) elseif (messageType == bj_QUESTMESSAGE_UNITACQUIRED) then call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, bj_TEXT_DELAY_UNITACQUIRED, " ") call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, bj_TEXT_DELAY_UNITACQUIRED, message) call StartSound(bj_questHintSound) elseif (messageType == bj_QUESTMESSAGE_UNITAVAILABLE) then call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, bj_TEXT_DELAY_UNITAVAILABLE, " ") call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, bj_TEXT_DELAY_UNITAVAILABLE, message) call StartSound(bj_questHintSound) elseif (messageType == bj_QUESTMESSAGE_ITEMACQUIRED) then call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, bj_TEXT_DELAY_ITEMACQUIRED, " ") call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, bj_TEXT_DELAY_ITEMACQUIRED, message) call StartSound(bj_questItemAcquiredSound) elseif (messageType == bj_QUESTMESSAGE_WARNING) then call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, bj_TEXT_DELAY_WARNING, " ") call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, bj_TEXT_DELAY_WARNING, message) call StartSound(bj_questWarningSound) else // Unrecognized message type - ignore the request. endif endif endfunction && •xdŒD%ƒ,StartTimerBJfunction StartTimerBJ takes timer t, boolean periodic, real timeout returns timer set bj_lastStartedTimer = t call TimerStart(t, timeout, periodic, null) return bj_lastStartedTimer endfunction{ŒE'ƒXCreateTimerBJfunction CreateTimerBJ takes boolean periodic, real timeout returns timer set bj_lastStartedTimer = CreateTimer() call TimerStart(bj_lastStartedTimer, timeout, periodic, null) return bj_lastStartedTimer endfunctionŒF)hDestroyTimerBJfunction DestroyTimerBJ takes timer whichTimer returns nothing call DestroyTimer(whichTimer) endfunction_ŒG%ƒ"PauseTimerBJfunction PauseTimerBJ takes boolean pause, timer whichTimer returns nothing if pause then call PauseTimer(whichTimer) else call ResumeTimer(whichTimer) endif endfunctionŒH7ZGetLastCreatedTimerBJfunction GetLastCreatedTimerBJ takes nothing returns timer return bj_lastStartedTimer endfunction >>”$Ì‚RŒI3„zCreateTimerDialogBJfunction CreateTimerDialogBJ takes timer t, string title returns timerdialog set bj_lastCreatedTimerDialog = CreateTimerDialog(t) call TimerDialogSetTitle(bj_lastCreatedTimerDialog, title) call TimerDialogDisplay(bj_lastCreatedTimerDialog, true) return bj_lastCreatedTimerDialog endfunction ŒJ5lDestroyTimerDialogBJfunction DestroyTimerDialogBJ takes timerdialog td returns nothing call DestroyTimerDialog(td) endfunction$ŒK7‚TimerDialogSetTitleBJfunction TimerDialogSetTitleBJ takes timerdialog td, string title returns nothing call TimerDialogSetTitle(td, title) endfunction‚0ŒLA„(TimerDialogSetTitleColorBJfunction TimerDialogSetTitleColorBJ takes timerdialog td, real red, real green, real blue, real transparency returns nothing call TimerDialogSetTitleColor(td, PercentTo255(red), PercentTo255(green), PercentTo255(blue), PercentTo255(100.0-transparency)) endfunction Eÿ\‚-ŒM?„$TimerDialogSetTimeColorBJfunction TimerDialogSetTimeColorBJ takes timerdialog td, real red, real green, real blue, real transparency returns nothing call TimerDialogSetTimeColor(td, PercentTo255(red), PercentTo255(green), PercentTo255(blue), PercentTo255(100.0-transparency)) endfunction6ŒN7‚>TimerDialogSetSpeedBJfunction TimerDialogSetSpeedBJ takes timerdialog td, real speedMultFactor returns nothing call TimerDialogSetSpeed(td, speedMultFactor) endfunction‚YŒOG„tTimerDialogDisplayForPlayerBJfunction TimerDialogDisplayForPlayerBJ takes boolean show, timerdialog td, player whichPlayer returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call TimerDialogDisplay(td, show) endif endfunction ŒP5‚TimerDialogDisplayBJfunction TimerDialogDisplayBJ takes boolean show, timerdialog td returns nothing call TimerDialogDisplay(td, show) endfunction 77׌QC~GetLastCreatedTimerDialogBJfunction GetLastCreatedTimerDialogBJ takes nothing returns timerdialog return bj_lastCreatedTimerDialog endfunction‚,ŒR3„.LeaderboardResizeBJfunction LeaderboardResizeBJ takes leaderboard lb returns nothing local integer size = LeaderboardGetItemCount(lb) if (LeaderboardGetLabelText(lb) == "") then set size = size - 1 endif call LeaderboardSetSizeByItemCount(lb, size) endfunctionyŒSKƒ0LeaderboardSetPlayerItemValueBJfunction LeaderboardSetPlayerItemValueBJ takes player whichPlayer, leaderboard lb, integer val returns nothing call LeaderboardSetItemValue(lb, LeaderboardGetPlayerIndex(lb, whichPlayer), val) endfunctionxŒTKƒ.LeaderboardSetPlayerItemLabelBJfunction LeaderboardSetPlayerItemLabelBJ takes player whichPlayer, leaderboard lb, string val returns nothing call LeaderboardSetItemLabel(lb, LeaderboardGetPlayerIndex(lb, whichPlayer), val) endfunction 11t‚?ŒUK„<LeaderboardSetPlayerItemStyleBJfunction LeaderboardSetPlayerItemStyleBJ takes player whichPlayer, leaderboard lb, boolean showLabel, boolean showValue, boolean showIcon returns nothing call LeaderboardSetItemStyle(lb, LeaderboardGetPlayerIndex(lb, whichPlayer), showLabel, showValue, showIcon) endfunctionƒŒVU…DLeaderboardSetPlayerItemLabelColorBJfunction LeaderboardSetPlayerItemLabelColorBJ takes player whichPlayer, leaderboard lb, real red, real green, real blue, real transparency returns nothing call LeaderboardSetItemLabelColor(lb, LeaderboardGetPlayerIndex(lb, whichPlayer), PercentTo255(red), PercentTo255(green), PercentTo255(blue), PercentTo255(100.0-transparency)) endfunction @@̃ŒWU…DLeaderboardSetPlayerItemValueColorBJfunction LeaderboardSetPlayerItemValueColorBJ takes player whichPlayer, leaderboard lb, real red, real green, real blue, real transparency returns nothing call LeaderboardSetItemValueColor(lb, LeaderboardGetPlayerIndex(lb, whichPlayer), PercentTo255(red), PercentTo255(green), PercentTo255(blue), PercentTo255(100.0-transparency)) endfunction‚0ŒXA„(LeaderboardSetLabelColorBJfunction LeaderboardSetLabelColorBJ takes leaderboard lb, real red, real green, real blue, real transparency returns nothing call LeaderboardSetLabelColor(lb, PercentTo255(red), PercentTo255(green), PercentTo255(blue), PercentTo255(100.0-transparency)) endfunction TTˆR_‚0ŒYA„(LeaderboardSetValueColorBJfunction LeaderboardSetValueColorBJ takes leaderboard lb, real red, real green, real blue, real transparency returns nothing call LeaderboardSetValueColor(lb, PercentTo255(red), PercentTo255(green), PercentTo255(blue), PercentTo255(100.0-transparency)) endfunctionFŒZ7‚^LeaderboardSetLabelBJfunction LeaderboardSetLabelBJ takes leaderboard lb, string label returns nothing call LeaderboardSetLabel(lb, label) call LeaderboardResizeBJ(lb) endfunction‚ Œ[7ƒdLeaderboardSetStyleBJfunction LeaderboardSetStyleBJ takes leaderboard lb, boolean showLabel, boolean showNames, boolean showValues, boolean showIcons returns nothing call LeaderboardSetStyle(lb, showLabel, showNames, showValues, showIcons) endfunctionŒ\?‚LeaderboardGetItemCountBJfunction LeaderboardGetItemCountBJ takes leaderboard lb returns integer return LeaderboardGetItemCount(lb) endfunction gg,AŒ]A‚JLeaderboardHasPlayerItemBJfunction LeaderboardHasPlayerItemBJ takes leaderboard lb, player whichPlayer returns boolean return LeaderboardHasPlayerItem(lb, whichPlayer) endfunctionƒPŒ^7†rForceSetLeaderboardBJfunction ForceSetLeaderboardBJ takes leaderboard lb, force toForce returns nothing local integer index local player indexPlayer set index = 0 loop set indexPlayer = Player(index) if IsPlayerInForce(indexPlayer, toForce) then call PlayerSetLeaderboard(indexPlayer, lb) endif set index = index + 1 exitwhen index == bj_MAX_PLAYERS endloop endfunction --Ì\ƒŒ_3† CreateLeaderboardBJfunction CreateLeaderboardBJ takes force toForce, string label returns leaderboard set bj_lastCreatedLeaderboard = CreateLeaderboard() call LeaderboardSetLabel(bj_lastCreatedLeaderboard, label) call ForceSetLeaderboardBJ(bj_lastCreatedLeaderboard, toForce) call LeaderboardDisplay(bj_lastCreatedLeaderboard, true) return bj_lastCreatedLeaderboard endfunction Œ`5lDestroyLeaderboardBJfunction DestroyLeaderboardBJ takes leaderboard lb returns nothing call DestroyLeaderboard(lb) endfunction Œa5‚LeaderboardDisplayBJfunction LeaderboardDisplayBJ takes boolean show, leaderboard lb returns nothing call LeaderboardDisplay(lb, show) endfunction JJƒDŒb5†\LeaderboardAddItemBJfunction LeaderboardAddItemBJ takes player whichPlayer, leaderboard lb, string label, integer value returns nothing if (LeaderboardHasPlayerItem(lb, whichPlayer)) then call LeaderboardRemovePlayerItem(lb, whichPlayer) endif call LeaderboardAddItem(lb, label, value, whichPlayer) call LeaderboardResizeBJ(lb) //call LeaderboardSetSizeByItemCount(lb, LeaderboardGetItemCount(lb)) endfunctionjŒcGƒLeaderboardRemovePlayerItemBJfunction LeaderboardRemovePlayerItemBJ takes player whichPlayer, leaderboard lb returns nothing call LeaderboardRemovePlayerItem(lb, whichPlayer) call LeaderboardResizeBJ(lb) endfunction 77k7„0Œd9ˆ0LeaderboardSortItemsBJfunction LeaderboardSortItemsBJ takes leaderboard lb, integer sortType, boolean ascending returns nothing if (sortType == bj_SORTTYPE_SORTBYVALUE) then call LeaderboardSortItemsByValue(lb, ascending) elseif (sortType == bj_SORTTYPE_SORTBYPLAYER) then call LeaderboardSortItemsByPlayer(lb, ascending) elseif (sortType == bj_SORTTYPE_SORTBYLABEL) then call LeaderboardSortItemsByLabel(lb, ascending) else // Unrecognized sort type - ignore the request. endif endfunctionHŒeI‚PLeaderboardSortItemsByPlayerBJfunction LeaderboardSortItemsByPlayerBJ takes leaderboard lb, boolean ascending returns nothing call LeaderboardSortItemsByPlayer(lb, ascending) endfunctionEŒfG‚LLeaderboardSortItemsByLabelBJfunction LeaderboardSortItemsByLabelBJ takes leaderboard lb, boolean ascending returns nothing call LeaderboardSortItemsByLabel(lb, ascending) endfunction wwCWHŒgC‚VLeaderboardGetPlayerIndexBJfunction LeaderboardGetPlayerIndexBJ takes player whichPlayer, leaderboard lb returns integer return LeaderboardGetPlayerIndex(lb, whichPlayer) + 1 endfunction„ŒhG‡bLeaderboardGetIndexedPlayerBJfunction LeaderboardGetIndexedPlayerBJ takes integer position, leaderboard lb returns player local integer index local player indexPlayer set index = 0 loop set indexPlayer = Player(index) if (LeaderboardGetPlayerIndex(lb, indexPlayer) == position - 1) then return indexPlayer endif set index = index + 1 exitwhen index == bj_MAX_PLAYERS endloop return Player(PLAYER_NEUTRAL_PASSIVE) endfunction%Œi9‚PlayerGetLeaderboardBJfunction PlayerGetLeaderboardBJ takes player whichPlayer returns leaderboard return PlayerGetLeaderboard(whichPlayer) endfunction [[÷ÜhŒj?zGetLastCreatedLeaderboardfunction GetLastCreatedLeaderboard takes nothing returns leaderboard return bj_lastCreatedLeaderboard endfunctionƒaŒk1‡CreateMultiboardBJfunction CreateMultiboardBJ takes integer cols, integer rows, string title returns multiboard set bj_lastCreatedMultiboard = CreateMultiboard() call MultiboardSetRowCount(bj_lastCreatedMultiboard, rows) call MultiboardSetColumnCount(bj_lastCreatedMultiboard, cols) call MultiboardSetTitleText(bj_lastCreatedMultiboard, title) call MultiboardDisplay(bj_lastCreatedMultiboard, true) return bj_lastCreatedMultiboard endfunctionŒl3fDestroyMultiboardBJfunction DestroyMultiboardBJ takes multiboard mb returns nothing call DestroyMultiboard(mb) endfunctionŒm=tGetLastCreatedMultiboardfunction GetLastCreatedMultiboard takes nothing returns multiboard return bj_lastCreatedMultiboard endfunction ÖÖv!]Œn3‚MultiboardDisplayBJfunction MultiboardDisplayBJ takes boolean show, multiboard mb returns nothing call MultiboardDisplay(mb, show) endfunction'Œo5‚"MultiboardMinimizeBJfunction MultiboardMinimizeBJ takes boolean minimize, multiboard mb returns nothing call MultiboardMinimize(mb, minimize) endfunction‚8ŒpG„2MultiboardSetTitleTextColorBJfunction MultiboardSetTitleTextColorBJ takes multiboard mb, real red, real green, real blue, real transparency returns nothing call MultiboardSetTitleTextColor(mb, PercentTo255(red), PercentTo255(green), PercentTo255(blue), PercentTo255(100.0-transparency)) endfunctionŒq=‚ MultiboardAllowDisplayBJfunction MultiboardAllowDisplayBJ takes boolean flag returns nothing call MultiboardSuppressDisplay(not flag) endfunctionocal integer numRows = MultiboardGetRowCount(mb) local integer numCols = MultiboardGetColumnCount(mb) local multiboarditem mbitem = null // Loop over rows, using 1-based index loop set curRow = curRow + 1 exitwhen curRow > numRows // Apply setting to the requested row, or all rows (if row is 0) if (row == 0 or row == curRow) then // Loop over columns, using 1-based index set curCol = 0 loop set curCol = curCol + 1 exitwhen curCol > numCols // Apply setting to the requested column, or all columns (if col is 0) if (col == 0 or col == curCol) then set mbitem = MultiboardGetItem(mb, curRow - 1, curCol - 1) call MultiboardSetItemStyle(mbitem, showValue, showIcon) call MultiboardReleaseItem(mbitem) endif endloop endif endloop endfunction 99&ê4‰aŒr=“MultiboardSetItemStyleBJfunction MultiboardSetItemStyleBJ takes multiboard mb, integer col, integer row, boolean showValue, boolean showIcon returns nothing local integer curRow = 0 local integer curCol = 0 lZ‰8Œs=’<MultiboardSetItemValueBJfunction MultiboardSetItemValueBJ takes multiboard mb, integer col, integer row, string val returns nothing local integer curRow = 0 local integer c\Š>Œt=”HMultiboardSetItemColorBJfunction MultiboardSetItemColorBJ takes multiboard mb, integer col, integer row, real red, real green, real blue, real transparency returns nothing local integer curRow = 0 local integer curCol = 0 local integer numRows = MultiboardGetRowCount(mb) local integer numCols = ]‰@Œu=’LMultiboardSetItemWidthBJfunction MultiboardSetItemWidthBJ takes multiboard mb, integer col, integer row, real width returns nothing local integer curRow = 0 local integer curCol = ^urCol = 0 local integer numRows = MultiboardGetRowCount(mb) local integer numCols = MultiboardGetColumnCount(mb) local multiboarditem mbitem = null // Loop over rows, using 1-based index loop set curRow = curRow + 1 exitwhen curRow > numRows // Apply setting to the requested row, or all rows (if row is 0) if (row == 0 or row == curRow) then // Loop over columns, using 1-based index set curCol = 0 loop set curCol = curCol + 1 exitwhen curCol > numCols // Apply setting to the requested column, or all columns (if col is 0) if (col == 0 or col == curCol) then set mbitem = MultiboardGetItem(mb, curRow - 1, curCol - 1) call MultiboardSetItemValue(mbitem, val) call MultiboardReleaseItem(mbitem) endif endloop endif endloop endfunctionMultiboardGetColumnCount(mb) local multiboarditem mbitem = null // Loop over rows, using 1-based index loop set curRow = curRow + 1 exitwhen curRow > numRows // Apply setting to the requested row, or all rows (if row is 0) if (row == 0 or row == curRow) then // Loop over columns, using 1-based index set curCol = 0 loop set curCol = curCol + 1 exitwhen curCol > numCols // Apply setting to the requested column, or all columns (if col is 0) if (col == 0 or col == curCol) then set mbitem = MultiboardGetItem(mb, curRow - 1, curCol - 1) call MultiboardSetItemValueColor(mbitem, PercentTo255(red), PercentTo255(green), PercentTo255(blue), PercentTo255(100.0-transparency)) call MultiboardReleaseItem(mbitem) endif endloop endif endloop endfunction0 local integer numRows = MultiboardGetRowCount(mb) local integer numCols = MultiboardGetColumnCount(mb) local multiboarditem mbitem = null // Loop over rows, using 1-based index loop set curRow = curRow + 1 exitwhen curRow > numRows // Apply setting to the requested row, or all rows (if row is 0) if (row == 0 or row == curRow) then // Loop over columns, using 1-based index set curCol = 0 loop set curCol = curCol + 1 exitwhen curCol > numCols // Apply setting to the requested column, or all columns (if col is 0) if (col == 0 or col == curCol) then set mbitem = MultiboardGetItem(mb, curRow - 1, curCol - 1) call MultiboardSetItemWidth(mbitem, width/100.0) call MultiboardReleaseItem(mbitem) endif endloop endif endloop endfunction0 local integer numRows = MultiboardGetRowCount(mb) local integer numCols = MultiboardGetColumnCount(mb) local multiboarditem mbitem = null // Loop over rows, using 1-based index loop set curRow = curRow + 1 exitwhen curRow > numRows // Apply setting to the requested row, or all rows (if row is 0) if (row == 0 or row == curRow) then // Loop over columns, using 1-based index set curCol = 0 loop set curCol = curCol + 1 exitwhen curCol > numCols // Apply setting to the requested column, or all columns (if col is 0) if (col == 0 or col == curCol) then set mbitem = MultiboardGetItem(mb, curRow - 1, curCol - 1) call MultiboardSetItemIcon(mbitem, iconFileName) call MultiboardReleaseItem(mbitem) endif endloop endif endloop endfunction áaë‰GŒv;’\MultiboardSetItemIconBJfunction MultiboardSetItemIconBJ takes multiboard mb, integer col, integer row, string iconFileName returns nothing local integer curRow = 0 local integer curCol = _}Œw1RTextTagSize2Heightfunction TextTagSize2Height takes real size returns real return size * 0.023 / 10 endfunctionŒx7^TextTagSpeed2Velocityfunction TextTagSpeed2Velocity takes real speed returns real return speed * 0.071 / 128 endfunction‚Œy/ƒ|SetTextTagColorBJfunction SetTextTagColorBJ takes texttag tt, real red, real green, real blue, real transparency returns nothing call SetTextTagColor(tt, PercentTo255(red), PercentTo255(green), PercentTo255(blue), PercentTo255(100.0-transparency)) endfunction PP¡}E‚MŒz5„nSetTextTagVelocityBJfunction SetTextTagVelocityBJ takes texttag tt, real speed, real angle returns nothing local real vel = TextTagSpeed2Velocity(speed) local real xvel = vel * Cos(angle * bj_DEGTORAD) local real yvel = vel * Sin(angle * bj_DEGTORAD) call SetTextTagVelocity(tt, xvel, yvel) endfunctionXŒ{-ƒ SetTextTagTextBJfunction SetTextTagTextBJ takes texttag tt, string s, real size returns nothing local real textHeight = TextTagSize2Height(size) call SetTextTagText(tt, s, textHeight) endfunctionDŒ|+‚fSetTextTagPosBJfunction SetTextTagPosBJ takes texttag tt, location loc, real zOffset returns nothing call SetTextTagPos(tt, GetLocationX(loc), GetLocationY(loc), zOffset) endfunction7Œ}3‚DSetTextTagPosUnitBJfunction SetTextTagPosUnitBJ takes texttag tt, unit whichUnit, real zOffset returns nothing call SetTextTagPosUnit(tt, whichUnit, zOffset) endfunction ßß‚%±VŒ~7‚SetTextTagSuspendedBJfunction SetTextTagSuspendedBJ takes texttag tt, boolean flag returns nothing call SetTextTagSuspended(tt, flag) endfunctionŒ7‚SetTextTagPermanentBJfunction SetTextTagPermanentBJ takes texttag tt, boolean flag returns nothing call SetTextTagPermanent(tt, flag) endfunction+nSetTextTagAgeBJfunction SetTextTagAgeBJ takes texttag tt, real age returns nothing call SetTextTagAge(tt, age) endfunction!5‚SetTextTagLifespanBJfunction SetTextTagLifespanBJ takes texttag tt, real lifespan returns nothing call SetTextTagLifespan(tt, lifespan) endfunction&7‚SetTextTagFadepointBJfunction SetTextTagFadepointBJ takes texttag tt, real fadepoint returns nothing call SetTextTagFadepoint(tt, fadepoint) endfunction ..ƒ^1‡CreateTextTagLocBJfunction CreateTextTagLocBJ takes string s, location loc, real zOffset, real size, real red, real green, real blue, real transparency returns texttag set bj_lastCreatedTextTag = CreateTextTag() call SetTextTagTextBJ(bj_lastCreatedTextTag, s, size) call SetTextTagPosBJ(bj_lastCreatedTextTag, loc, zOffset) call SetTextTagColorBJ(bj_lastCreatedTextTag, red, green, blue, transparency) return bj_lastCreatedTextTag endfunctionƒl3‡.CreateTextTagUnitBJfunction CreateTextTagUnitBJ takes string s, unit whichUnit, real zOffset, real size, real red, real green, real blue, real transparency returns texttag set bj_lastCreatedTextTag = CreateTextTag() call SetTextTagTextBJ(bj_lastCreatedTextTag, s, size) call SetTextTagPosUnitBJ(bj_lastCreatedTextTag, whichUnit, zOffset) call SetTextTagColorBJ(bj_lastCreatedTextTag, red, green, blue, transparency) return bj_lastCreatedTextTag endfunction ÃÃB“Ž|-TDestroyTextTagBJfunction DestroyTextTagBJ takes texttag tt returns nothing call DestroyTextTag(tt) endfunction‚M1„rShowTextTagForceBJfunction ShowTextTagForceBJ takes boolean show, texttag tt, force whichForce returns nothing if (IsPlayerInForce(GetLocalPlayer(), whichForce)) then // Use only local code (no net traffic) within this block to avoid desyncs. call SetTextTagVisibility(tt, show) endif endfunction7bGetLastCreatedTextTagfunction GetLastCreatedTextTag takes nothing returns texttag return bj_lastCreatedTextTag endfunctionl#>PauseGameOnfunction PauseGameOn takes nothing returns nothing call PauseGame(true) endfunctiono %BPauseGameOfffunction PauseGameOff takes nothing returns nothing call PauseGame(false) endfunction @@v¯‚2 7„6SetUserControlForceOnfunction SetUserControlForceOn takes force whichForce returns nothing if (IsPlayerInForce(GetLocalPlayer(), whichForce)) then // Use only local code (no net traffic) within this block to avoid desyncs. call EnableUserControl(true) endif endfunction‚5 9„:SetUserControlForceOfffunction SetUserControlForceOff takes force whichForce returns nothing if (IsPlayerInForce(GetLocalPlayer(), whichForce)) then // Use only local code (no net traffic) within this block to avoid desyncs. call EnableUserControl(false) endif endfunction‚M 5„nShowInterfaceForceOnfunction ShowInterfaceForceOn takes force whichForce, real fadeDuration returns nothing if (IsPlayerInForce(GetLocalPlayer(), whichForce)) then // Use only local code (no net traffic) within this block to avoid desyncs. call ShowInterface(true, fadeDuration) endif endfunction ;;‚P 7„rShowInterfaceForceOfffunction ShowInterfaceForceOff takes force whichForce, real fadeDuration returns nothing if (IsPlayerInForce(GetLocalPlayer(), whichForce)) then // Use only local code (no net traffic) within this block to avoid desyncs. call ShowInterface(false, fadeDuration) endif endfunctionƒ3…XPingMinimapForForcefunction PingMinimapForForce takes force whichForce, real x, real y, real duration returns nothing if (IsPlayerInForce(GetLocalPlayer(), whichForce)) then // Use only local code (no net traffic) within this block to avoid desyncs. call PingMinimap(x, y, duration) //call StartSound(bj_pingMinimapSound) endif endfunctionh9ƒ PingMinimapLocForForcefunction PingMinimapLocForForce takes force whichForce, location loc, real duration returns nothing call PingMinimapForForce(whichForce, GetLocationX(loc), GetLocationY(loc), duration) endfunction ¢¢‚w5…BPingMinimapForPlayerfunction PingMinimapForPlayer takes player whichPlayer, real x, real y, real duration returns nothing if (GetLocalPlayer() == whichPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. call PingMinimap(x, y, duration) //call StartSound(bj_pingMinimapSound) endif endfunctionn;ƒ*PingMinimapLocForPlayerfunction PingMinimapLocForPlayer takes player whichPlayer, location loc, real duration returns nothing call PingMinimapForPlayer(whichPlayer, GetLocationX(loc), GetLocationY(loc), duration) endfunction‰e7“PingMinimapForForceExfunction PingMinimapForForceEx takes force whichForce, real x, real y, real duration, integer style, real red, real green, real blue returns nothing local integer red255 = PercentTo255(red) locahl integer green255 = PercentTo255(green) local integer blue255 = PercentTo255(blue) if (IsPlayerInForce(GetLocalPlayer(), whichForce)) then // Use only local code (no net traffic) within this block to avoid desyncs. // Prevent 100% red simple and flashy pings, as they become "attack" pings. if (red255 == 255) and (green255 == 0) and (blue255 == 0) then set red255 = 254 endif if (style == bj_MINIMAPPINGSTYLE_SIMPLE) then call PingMinimapEx(x, y, duration, red255, green255, blue255, false) elseif (style == bj_MINIMAPPINGSTYLE_FLASHY) then call PingMinimapEx(x, y, duration, red255, green255, blue255, true) elseif (style == bj_MINIMAPPINGSTYLE_ATTACK) then call PingMinimapEx(x, y, duration, 255, 0, 0, false) else // Unrecognized ping style - ignore the request. endif //call StartSound(bj_pingMinimapSound) endif endfunction XX“Ô‚7=„:PingMinimapLocForForceExfunction PingMinimapLocForForceEx takes force whichForce, location loc, real duration, integer style, real red, real green, real blue returns nothing call PingMinimapForForceEx(whichForce, GetLocationX(loc), GetLocationY(loc), duration, style, red, green, blue) endfunction‚==„FEnableWorldFogBoundaryBJfunction EnableWorldFogBoundaryBJ takes boolean enable, force f returns nothing if (IsPlayerInForce(GetLocalPlayer(), f)) then // Use only local code (no net traffic) within this block to avoid desyncs. call EnableWorldFogBoundary(enable) endif endfunction‚(/„*EnableOcclusionBJfunction EnableOcclusionBJ takes boolean enable, force f returns nothing if (IsPlayerInForce(GetLocalPlayer(), f)) then // Use only local code (no net traffic) within this block to avoid desyncs. call EnableOcclusion(enable) endif endfunction ýý°//‚8CancelCineSceneBJfunction CancelCineSceneBJ takes nothing returns nothing call StopSoundBJ(bj_cineSceneLastSound, true) call EndCinematicScene() endfunction„LAˆ`TryInitCinematicBehaviorBJfunction TryInitCinematicBehaviorBJ takes nothing returns nothing local integer index if (bj_cineSceneBeingSkipped == null) then set bj_cineSceneBeingSkipped = CreateTrigger() set index = 0 loop call TriggerRegisterPlayerEvent(bj_cineSceneBeingSkipped, Player(index), EVENT_PLAYER_END_CINEMATIC) set index = index + 1 exitwhen index == bj_MAX_PLAYERS endloop call TriggerAddAction(bj_cineSceneBeingSkipped, function CancelCineSceneBJ) endif endfunction ^^ƒ3†SetCinematicSceneBJfunction SetCinematicSceneBJ takes sound soundHandle, integer portraitUnitId, playercolor color, string speakerTitle, string text, real sceneDuration, real voiceoverDuration returns nothing set bj_cineSceneLastSound = soundHandle call PlaySoundBJ(soundHandle) call SetCinematicScene(portraitUnitId, color, speakerTitle, text, sceneDuration, voiceoverDuration) endfunction …e;‹GetTransmissionDurationfunction GetTransmissionDuration takes sound soundHandle, integer timeType, real timeVal returns real local real duration if (timeType == bj_TIMETYPE_ADD) then set duration = GetSoundDurationBJ(soundHandle) + timeVal elseif (timeType == bj_TIMETYPE_SET) then set duration = timeVal elseif (timeType == bj_TIMETYPE_SUB) then set duration = GetSoundDurationBJ(soundHandle) - timeVal else // Unrecognized timeType - ignore timeVal. set duration = GetSoundDurationBJ(soundHandle) endif // Make sure we have a non-negative duration. if (duration < 0) then set duration = 0 endif return duration endfunctionpe, real timeVal returns nothing if (timeType == bj_TIMETYPE_SET) then // If we have a static duration wait, just perform the wait. call TriggerSleepAction(timeVal) elseif (soundHandle == null) then // If the sound does not exist, perform a default length wait. call TriggerSleepAction(bj_NOTHING_SOUND_DURATION) elseif (timeType == bj_TIMETYPE_SUB) then // If the transmission is cutting off the sound, wait for the sound // to be mostly finished. call WaitForSoundBJ(soundHandle, timeVal) elseif (timeType == bj_TIMETYPE_ADD) then // If the transmission is extending beyond the sound's length, wait // for it to finish, and then wait the additional time. call WaitForSoundBJ(soundHandle, 0) call TriggerSleepAction(timeVal) else // Unrecognized timeType - ignore. endif endfunction ££ˆ =bWaitTransmissionDurationfunction WaitTransmissionDuration takes sound soundHandle, integer timeTymƒj=‡ DoTransmissionBasicsXYBJfunction DoTransmissionBasicsXYBJ takes integer unitId, playercolor color, real x, real y, sound soundHandle, string unitName, string message, real duration returns nothing call SetCinematicSceneBJ(soundHandle, unitId, color, unitName, message, duration + bj_TRANSMISSION_PORT_HANGTIME, duration) if (unitId != 0) then call PingMinimap(x, y, bj_TRANSMISSION_PING_TIME) //call SetCameraQuickPosition(x, y) endif endfunctionn this block to avoid desyncs. if (whichUnit == null) then // If the unit reference is invalid, send the transmission from the center of the map with no portrait. call DoTransmissionBasicsXYBJ(0, PLAYER_COLOR_RED, 0, 0, soundHandle, unitName, message, bj_lastTransmissionDuration) else call DoTransmissionBasicsXYBJ(GetUnitTypeId(whichUnit), GetPlayerColor(GetOwningPlayer(whichUnit)), GetUnitX(whichUnit), GetUnitY(whichUnit), soundHandle, unitName, message, bj_lastTransmissionDuration) if (not IsUnitHidden(whichUnit)) then call UnitAddIndicator(whichUnit, bj_TRANSMISSION_IND_RED, bj_TRANSMISSION_IND_BLUE, bj_TRANSMISSION_IND_GREEN, bj_TRANSMISSION_IND_ALPHA) endif endif endif if wait and (bj_lastTransmissionDuration > 0) then // call TriggerSleepAction(bj_lastTransmissionDuration) call WaitTransmissionDuration(soundHandle, timeType, timeVal) endif endfunction ˆˆòaŒ^I˜|TransmissionFromUnitWithNameBJfunction TransmissionFromUnitWithNameBJ takes force toForce, unit whichUnit, string unitName, sound soundHandle, string message, integer timeType, real timeVal, boolean wait returns nothing call TryInitCinematicBehaviorBJ() // Ensure that the time value is non-negative. set timeVal = RMaxBJ(timeVal, 0) set bj_lastTransmissionDuration = GetTransmissionDuration(soundHandle, timeType, timeVal) set bj_lastPlayedSound = soundHandle if (IsPlayerInForce(GetLocalPlayer(), toForce)) then // Use only local code (no net traffic) withioˆBQ<TransmissionFromUnitTypeWithNameBJfunction TransmissionFromUnitTypeWithNameBJ takes force toForceqGxGetLastTransmissionDurationBJfunction GetLastTransmissionDurationBJ takes nothing returns real return bj_lastTransmissionDuration endfunction, player fromPlayer, integer unitId, string unitName, location loc, sound soundHandle, string message, integer timeType, real timeVal, boolean wait returns nothing call TryInitCinematicBehaviorBJ() // Ensure that the time value is non-negative. set timeVal = RMaxBJ(timeVal, 0) set bj_lastTransmissionDuration = GetTransmissionDuration(soundHandle, timeType, timeVal) set bj_lastPlayedSound = soundHandle if (IsPlayerInForce(GetLocalPlayer(), toForce)) then // Use only local code (no net traffic) within this block to avoid desyncs. call DoTransmissionBasicsXYBJ(unitId, GetPlayerColor(fromPlayer), GetLocationX(loc), GetLocationY(loc), soundHandle, unitName, message, bj_lastTransmissionDuration) endif if wait and (bj_lastTransmissionDuration > 0) then // call TriggerSleepAction(bj_lastTransmissionDuration) call WaitTransmissionDuration(soundHandle, timeType, timeVal) endif endfunction ´±s?‚ForceCinematicSubtitlesBJfunction ForceCinematicSubtitlesBJ takes boolean flag returns nothing call ForceCinematicSubtitles(flag) endfunction“m /§4CinematicModeExBJfunction CinematicModeExBJ takes boolean cineMode, force forForce, real interfaceFadeTime returns nothing // If the game hasn't started yet, perform interface fades immediately if (not bj_gameStarted) then set interfaceFadeTime = 0 endif if (cineMode) then // Save the UI state so that we can restore it later. if (not bj_cineModeAlreadyIn) then set bj_cineModeAlreadyIn = true set bj_cineModePriorSpeeds>!+‚ZCinematicModeBJfunction CinematicModeBJ takes boolean cineMode, force forForce returns nothing call CinematicModeExBJ(cineMode, forForce, bj_CINEMODE_INTERFACEFADE) endfunction "3hDisplayCineFilterBJfunction DisplayCineFilterBJ takes boolean flag returns nothing call DisplayCineFilter(flag) endfunctiont = GetGameSpeed() set bj_cineModePriorFogSetting = IsFogEnabled() set bj_cineModePriorMaskSetting = IsFogMaskEnabled() set bj_cineModePriorDawnDusk = IsDawnDuskEnabled() set bj_cineModeSavedSeed = GetRandomInt(0, 1000000) endif // Perform local changes if (IsPlayerInForce(GetLocalPlayer(), forForce)) then // Use only local code (no net traffic) within this block to avoid desyncs. call ClearTextMessages() call ShowInterface(false, interfaceFadeTime) call EnableUserControl(false) call EnableOcclusion(false) call SetCineModeVolumeGroupsBJ() endif // Perform global changes call SetGameSpeed(bj_CINEMODE_GAMESPEED) call SetMapFlag(MAP_LOCK_SPEED, true) call FogMaskEnable(false) call FogEnable(false) call EnableWorldFogBoundary(false) call EnableDawnDusk(false) // Use a fixed random seed, so that cinematics play consistently. call SetRandomSeed(0) else set bj_cineModeAlreadyIn = false // Perform local changes if (IsPlayerInForce(GetLocalPlayer(), forForce)) then // Use only local code (no net traffic) within this block to avoid desyncs. call ShowInterface(true, interfaceFadeTime) call EnableUserControl(true) call EnableOcclusion(true) call VolumeGroupReset() call EndThematicMusic() call CameraResetSmoothingFactorBJ() endif // Perform global changes call SetMapFlag(MAP_LOCK_SPEED, false) call SetGameSpeed(bj_cineModePriorSpeed) call FogMaskEnable(bj_cineModePriorMaskSetting) call FogEnable(bj_cineModePriorFogSetting) call EnableWorldFogBoundary(true) call EnableDawnDusk(bj_cineModePriorDawnDusk) call SetRandomSeed(bj_cineModeSavedSeed) endif endfunction --‡O#7ŽpCinematicFadeCommonBJfunction CinematicFadeCommonBJ takes real red, real green, real blue, real duration, string tex, real startTrans, real endTrans returns nothing if (duration == 0) then // If the fade is instant, use the same starting and ending values, // so that we effectively do a set rather than a fade. set startTrans = endTrans endif call EnableUserUI(false) call SetCineFilterTexture(tex) call SetCineFilterBlendMode(BLEND_MODE_BLEND) call SetCineFilterTexMapFlags(TEXMAP_FLAG_NONE) call SetCineFilterStartUV(0, 0, 1, 1) call SetCineFilterEndUV(0, 0, 1, 1) call SetCineFilterStartColor(PercentTo255(red), PercentTo255(green), PercentTo255(blue), PercentTo255(100-startTrans)) call SetCineFilterEndColor(PercentTo255(red), PercentTo255(green), PercentTo255(blue), PercentTo255(100-endTrans)) call SetCineFilterDuration(duration) call DisplayCineFilter(true) endfunction ???y|$7ƒJFinishCinematicFadeBJfunction FinishCinematicFadeBJ takes nothing returns nothing call DestroyTimer(bj_cineFadeFinishTimer) set bj_cineFadeFinishTimer = null call DisplayCineFilter(false) call EnableUserUI(true) endfunction‚6%A„4FinishCinematicFadeAfterBJfunction FinishCinematicFadeAfterBJ takes real duration returns nothing // Create a timer to end the cinematic fade. set bj_cineFadeFinishTimer = CreateTimer() call TimerStart(bj_cineFadeFinishTimer, duration, false, function FinishCinematicFadeBJ) endfunctionƒ&;…TContinueCinematicFadeBJfunction ContinueCinematicFadeBJ takes nothing returns nothing call DestroyTimer(bj_cineFadeContinueTimer) set bj_cineFadeContinueTimer = null call CinematicFadeCommonBJ(bj_cineFadeContinueRed, bj_cineFadeContinueGreen, bj_cineFadeContinueBlue, bj_cineFadeContinueDuration, bj_cineFadeContinueTex, bj_cineFadeContinueTrans, 100) endfunction >>º„x'E‰4ContinueCinematicFadeAfterBJfunction ContinueCinematicFadeAfterBJ takes real duration, real red, real green, real blue, real trans, string tex returns nothing set bj_cineFadeContinueRed = red set bj_cineFadeContinueGreen = green set bj_cineFadeContinueBlue = blue set bj_cineFadeContinueTrans = trans set bj_cineFadeContinueDuration = duration set bj_cineFadeContinueTex = tex // Create a timer to continue the cinematic fade. set bj_cineFadeContinueTimer = CreateTimer() call TimerStart(bj_cineFadeContinueTimer, duration, false, function ContinueCinematicFadeBJ) endfunction‚B(5„XAbortCinematicFadeBJfunction AbortCinematicFadeBJ takes nothing returns nothing if (bj_cineFadeContinueTimer != null) then call DestroyTimer(bj_cineFadeContinueTimer) endif if (bj_cineFadeFinishTimer != null) then call DestroyTimer(bj_cineFadeFinishTimer) endif endfunctionype == bj_CINEFADETYPE_FADEOUT) then // Fade out to the requested color. call AbortCinematicFadeBJ() call CinematicFadeCommonBJ(red, green, blue, duration, tex, 100, trans) elseif (fadetype == bj_CINEFADETYPE_FADEIN) then // Fade in from the requested color. call AbortCinematicFadeBJ() call CinematicFadeCommonBJ(red, green, blue, duration, tex, trans, 100) call FinishCinematicFadeAfterBJ(duration) elseif (fadetype == bj_CINEFADETYPE_FADEOUTIN) then // Fade out to the requested color, and then fade back in from it. if (duration > 0) then call AbortCinematicFadeBJ() call CinematicFadeCommonBJ(red, green, blue, duration * 0.5, tex, 100, trans) call ContinueCinematicFadeAfterBJ(duration * 0.5, red, green, blue, trans, tex) call FinishCinematicFadeAfterBJ(duration) endif else // Unrecognized fadetype - ignore the request. endif endfunction ""Õ‰')+’,CinematicFadeBJfunction CinematicFadeBJ takes integer fadetype, real duration, string tex, real red, real green, real blue, real trans returns nothing if (fadetx†'*=ŒCinematicFilterGenericBJfunction CinematicFilterGenericBJ takes real duration, blendmode bmode, string tex, real red0, real green0, real blue0, real trans0, real red1, real green1, real blue1, real trans1 returns nothing call AbortCinematicFadeBJ() call SetCineFilterTexture(tex) call SetCineFilterBlendMode(bmode) call SetCineFilterTexMapFlags(TEXMAP_FLAG_NONE) call SetCineFilterStartUV(0, 0, 1, 1) call SetCineFilterEndUV(0, 0, 1, 1) call SetCineFilterStartColor(PercentTo255(red0), PercentTo255(green0), PercentTo255(blue0), PercentTo255(100-trans0)) call SetCineFilterEndColor(PercentTo255(red1), PercentTo255(green1), PercentTo255(blue1), PercentTo255(100-trans1)) call SetCineFilterDuration(duration) call DisplayCineFilter(true) endfunction ooZƒg+%‡2RescueUnitBJfunction RescueUnitBJ takes unit whichUnit, player rescuer, boolean changeColor returns nothing if IsUnitDeadBJ(whichUnit) or (GetOwningPlayer(whichUnit) == rescuer) then return endif call StartSound(bj_rescueSound) call SetUnitOwner(whichUnit, rescuer, changeColor) call UnitAddIndicator(whichUnit, 0, 255, 0, 255) call PingMinimapForPlayer(rescuer, GetUnitX(whichUnit), GetUnitY(whichUnit), bj_RESCUE_PING_TIME) endfunctionƒ",A† TriggerActionUnitRescuedBJfunction TriggerActionUnitRescuedBJ takes nothing returns nothing local unit theUnit = GetTriggerUnit() if IsUnitType(theUnit, UNIT_TYPE_STRUCTURE) then call RescueUnitBJ(theUnit, GetOwningPlayer(GetRescuer()), bj_rescueChangeColorBldg) else call RescueUnitBJ(theUnit, GetOwningPlayer(GetRescuer()), bj_rescueChangeColorUnit) endif endfunction ==˜H„W-AˆvTryInitRescuableTriggersBJfunction TryInitRescuableTriggersBJ takes nothing returns nothing local integer index if (bj_rescueUnitBehavior == null) then set bj_rescueUnitBehavior = CreateTrigger() set index = 0 loop call TriggerRegisterPlayerUnitEvent(bj_rescueUnitBehavior, Player(index), EVENT_PLAYER_UNIT_RESCUED, null) set index = index + 1 exitwhen index == bj_MAX_PLAYER_SLOTS endloop call TriggerAddAction(bj_rescueUnitBehavior, function TriggerActionUnitRescuedBJ) endif endfunction,.A‚ SetRescueUnitColorChangeBJfunction SetRescueUnitColorChangeBJ takes boolean changeColor returns nothing set bj_rescueChangeColorUnit = changeColor endfunction4/I‚(SetRescueBuildingColorChangeBJfunction SetRescueBuildingColorChangeBJ takes boolean changeColor returns nothing set bj_rescueChangeColorBldg = changeColor endfunction iil0Iƒ>MakeUnitRescuableToForceBJEnumfunction MakeUnitRescuableToForceBJEnum takes nothing returns nothing call TryInitRescuableTriggersBJ() call SetUnitRescuable(bj_makeUnitRescuableUnit, GetEnumPlayer(), bj_makeUnitRescuableFlag) endfunctionƒ1A…hMakeUnitRescuableToForceBJfunction MakeUnitRescuableToForceBJ takes unit whichUnit, boolean isRescuable, force whichForce returns nothing // Flag the unit as rescuable/unrescuable for the appropriate players. set bj_makeUnitRescuableUnit = whichUnit set bj_makeUnitRescuableFlag = isRescuable call ForForce(whichForce, function MakeUnitRescuableToForceBJEnum) endfunction //>„ 2;‡dInitRescuableBehaviorBJfunction InitRescuableBehaviorBJ takes nothing returns nothing local integer index set index = 0 loop // If at least one player slot is "Rescuable"-controlled, init the // rescue behavior triggers. if (GetPlayerController(Player(index)) == MAP_CONTROL_RESCUABLE) then call TryInitRescuableTriggersBJ() return endif set index = index + 1 exitwhen index == bj_MAX_PLAYERS endloop endfunction\3C‚~SetPlayerTechResearchedSwapfunction SetPlayerTechResearchedSwap takes integer techid, integer levels, player whichPlayer returns nothing call SetPlayerTechResearched(whichPlayer, techid, levels) endfunction^4CƒSetPlayerTechMaxAllowedSwapfunction SetPlayerTechMaxAllowedSwap takes integer techid, integer maximum, player whichPlayer returns nothing call SetPlayerTechMaxAllowed(whichPlayer, techid, maximum) endfunction ÃÑV J5?‚^SetPlayerMaxHeroesAllowedfunction SetPlayerMaxHeroesAllowed takes integer maximum, player whichPlayer returns nothing call SetPlayerTechMaxAllowed(whichPlayer, 'HERO', maximum) endfunctionA6=‚NGetPlayerTechCountSimplefunction GetPlayerTechCountSimple takes integer techid, player whichPlayer returns integer return GetPlayerTechCount(whichPlayer, techid, true) endfunctionF7C‚RGetPlayerTechMaxAllowedSwapfunction GetPlayerTechMaxAllowedSwap takes integer techid, player whichPlayer returns integer return GetPlayerTechMaxAllowed(whichPlayer, techid) endfunction\8C‚~SetPlayerAbilityAvailableBJfunction SetPlayerAbilityAvailableBJ takes boolean avail, integer abilid, player whichPlayer returns nothing call SetPlayerAbilityAvailable(whichPlayer, abilid, avail) endfunctionn call SetCampaignMenuRace(RACE_OTHER) elseif (campaignNumber == bj_CAMPAIGN_INDEX_H) then call SetCampaignMenuRace(RACE_HUMAN) elseif (campaignNumber == bj_CAMPAIGN_INDEX_U) then call SetCampaignMenuRace(RACE_UNDEAD) elseif (campaignNumber == bj_CAMPAIGN_INDEX_O) then call SetCampaignMenuRace(RACE_ORC) elseif (campaignNumber == bj_CAMPAIGN_INDEX_N) then call SetCampaignMenuRace(RACE_NIGHTELF) elseif (campaignNumber == bj_CAMPAIGN_INDEX_XN) then call SetCampaignMenuRaceEx(bj_CAMPAIGN_OFFSET_XN) elseif (campaignNumber == bj_CAMPAIGN_INDEX_XH) then call SetCampaignMenuRaceEx(bj_CAMPAIGN_OFFSET_XH) elseif (campaignNumber == bj_CAMPAIGN_INDEX_XU) then call SetCampaignMenuRaceEx(bj_CAMPAIGN_OFFSET_XU) elseif (campaignNumber == bj_CAMPAIGN_INDEX_XO) then call SetCampaignMenuRaceEx(bj_CAMPAIGN_OFFSET_XO) else // Unrecognized campaign - ignore the request endif endfunction   ¬‰97‘~SetCampaignMenuRaceBJfunction SetCampaignMenuRaceBJ takes integer campaignNumber returns nothing if (campaignNumber == bj_CAMPAIGN_INDEX_T) the‚P:7„rSetMissionAvailableBJfunction SetMissionAvailableBJ takes boolean available, integer missionIndex returns nothing local integer campaignNumber = missionIndex / 1000 local integer missionNumber = missionIndex - campaignNumber * 1000 call SetMissionAvailable(campaignNumber, missionNumber, available) endfunction ]]‡;9ŽSetCampaignAvailableBJfunction SetCampaignAvailableBJ takes boolean available, integer campaignNumber returns nothing local integer campaignOffset if (campaignNumber == bj_CAMPAIGN_INDEX_H) then call SetTutorialCleared(true) endif if (campaignNumber == bj_CAMPAIGN_INDEX_XN) then set campaignOffset = bj_CAMPAIGN_OFFSET_XN elseif (campaignNumber == bj_CAMPAIGN_INDEX_XH) then set campaignOffset = bj_CAMPAIGN_OFFSET_XH elseif (campaignNumber == bj_CAMPAIGN_INDEX_XU) then set campaignOffset = bj_CAMPAIGN_OFFSET_XU elseif (campaignNumber == bj_CAMPAIGN_INDEX_XO) then set campaignOffset = bj_CAMPAIGN_OFFSET_XO else set campaignOffset = campaignNumber endif call SetCampaignAvailable(campaignOffset, available) call SetCampaignMenuRaceBJ(campaignNumber) call ForceCampaignSelectScreen() endfunctionƒcIndex returns nothing if ( cinematicIndex == bj_CINEMATICINDEX_TOP ) then call SetOpCinematicAvailable( bj_CAMPAIGN_INDEX_T, available ) call PlayCinematic( "TutorialOp" ) elseif (cinematicIndex == bj_CINEMATICINDEX_HOP) then call SetOpCinematicAvailable( bj_CAMPAIGN_INDEX_H, available ) call PlayCinematic( "HumanOp" ) elseif (cinematicIndex == bj_CINEMATICINDEX_HED) then call SetEdCinematicAvailable( bj_CAMPAIGN_INDEX_H, available ) call PlayCinematic( "HumanEd" ) elseif (cinematicIndex == bj_CINEMATICINDEX_OOP) then call SetOpCinematicAvailable( bj_CAMPAIGN_INDEX_O, available ) call PlayCinematic( "OrcOp" ) elseif (cinematicIndex == bj_CINEMATICINDEX_OED) then call SetEdCinematicAvailable( bj_CAMPAIGN_INDEX_O, available ) call PlayCinematic( "OrcEd" ) elseif (cinematicIndex == bj_CINEMATICINDEX_UOP) then call SetEdCinematicAvailable( bj_CAMPAIGN_INDEX_U, available ) call PlayCinematic( "UndeadOp" ) elseif (cinematicIndex == bj_CINEMATICINDEX_UED) then call SetEdCinematicAvailable( bj_CAMPAIGN_INDEX_U, available ) call PlayCinematic( "UndeadEd" ) elseif (cinematicIndex == bj_CINEMATICINDEX_NOP) then call SetEdCinematicAvailable( bj_CAMPAIGN_INDEX_N, available ) call PlayCinematic( "NightElfOp" ) elseif (cinematicIndex == bj_CINEMATICINDEX_NED) then call SetEdCinematicAvailable( bj_CAMPAIGN_INDEX_N, available ) call PlayCinematic( "NightElfEd" ) elseif (cinematicIndex == bj_CINEMATICINDEX_XOP) then call SetOpCinematicAvailable( bj_CAMPAIGN_OFFSET_XN, available ) call PlayCinematic( "IntroX" ) elseif (cinematicIndex == bj_CINEMATICINDEX_XED) then call SetEdCinematicAvailable( bj_CAMPAIGN_OFFSET_XU, available ) call PlayCinematic( "OutroX" ) else // Unrecognized cinematic - ignore the request. endif endfunction #‘Â;£#Ý6@#‚SStoreRealBJfunction StoreRealBJ takes real value, string key, string missionKey, gamecache cache returns nothing call StoreReal(cache, missionKey, key, value) endfunctionBA)‚eStoreIntegerBJfunction StoreIntegerBJ takes integer value, string key, string missionKey, gamecache cache returns nothing call StoreInteger(cache, missionKey, key, value) endfunction??rGetLastCreatedGameCacheBJfunction GetLastCreatedGameCacheBJ takes nothing returns gamecache return bj_lastCreatedGameCache endfunction>+dSaveGameCacheBJfunction SaveGameCacheBJ takes gamecache cache returns boolean return SaveGameCache(cache) endfunctionK=+‚tInitGameCacheBJfunction InitGameCacheBJ takes string campaignFile returns gamecache set bj_lastCreatedGameCache = InitGameCache(campaignFile) return bj_lastCreatedGameCache endfunctionE<; XSetCinematicAvailableBJfunction SetCinematicAvailableBJ takes boolean available, integer cinemati‚ ÇÇSBB)‚eStoreBooleanBJfunction StoreBooleanBJ takes boolean value, string key, string missionKey, gamecache cache returns nothing call StoreBoolean(cache, missionKey, key, value) endfunctionBC'‚fStoreStringBJfunction StoreStringBJ takes string value, string key, string missionKey, gamecache cache returns boolean return StoreString(cache, missionKey, key, value) endfunctionBD#‚jStoreUnitBJfunction StoreUnitBJ takes unit whichUnit, string key, string missionKey, gamecache cache returns boolean return StoreUnit(cache, missionKey, key, whichUnit) endfunctioncE+ƒ$GetStoredRealBJfunction GetStoredRealBJ takes string key, string missionKey, gamecache cache returns real //call SyncStoredReal(cache, missionKey, key) return GetStoredReal(cache, missionKey, key) endfunction ¹¹¯¥rF1ƒ<GetStoredIntegerBJfunction GetStoredIntegerBJ takes string key, string missionKey, gamecache cache returns integer //call SyncStoredInteger(cache, missionKey, key) return GetStoredInteger(cache, missionKey, key) endfunctionrG1ƒ<GetStoredBooleanBJfunction GetStoredBooleanBJ takes string key, string missionKey, gamecache cache returns boolean //call SyncStoredBoolean(cache, missionKey, key) return GetStoredBoolean(cache, missionKey, key) endfunction‚WH/…GetStoredStringBJfunction GetStoredStringBJ takes string key, string missionKey, gamecache cache returns string local string s //call SyncStoredString(cache, missionKey, key) set s = GetStoredString(cache, missionKey, key) if (s == null) then return "" else return s endif endfunction ë뇃IC…vRestoreUnitLocFacingAngleBJfunction RestoreUnitLocFacingAngleBJ takes string key, string missionKey, gamecache cache, player forWhichPlayer, location loc, real facing returns unit //call SyncStoredUnit(cache, missionKey, key) set bj_lastLoadedUnit = RestoreUnit(cache, missionKey, key, forWhichPlayer, GetLocationX(loc), GetLocationY(loc), facing) return bj_lastLoadedUnit endfunction‚uJC…0RestoreUnitLocFacingPointBJfunction RestoreUnitLocFacingPointBJ takes string key, string missionKey, gamecache cache, player forWhichPlayer, location loc, location lookAt returns unit //call SyncStoredUnit(cache, missionKey, key) return RestoreUnitLocFacingAngleBJ(key, missionKey, cache, forWhichPlayer, loc, AngleBetweenPoints(loc, lookAt)) endfunction @@ÅMK7TGetLastRestoredUnitBJfunction GetLastRestoredUnitBJ takes nothing returns unit return bj_lastLoadedUnit endfunctionL-dFlushGameCacheBJfunction FlushGameCacheBJ takes gamecache cache returns nothing call FlushGameCache(cache) endfunction/M5‚2FlushStoredMissionBJfunction FlushStoredMissionBJ takes string missionKey, gamecache cache returns nothing call FlushStoredMission(cache, missionKey) endfunction  6†N+ŒHaveStoredValuefunction HaveStoredValue takes string key, integer valueType, string missionKey, gamecache cache returns boolean if (valueType == bj_GAMECACHE_BOOLEAN) then return HaveStoredBoolean(cache, missionKey, key) elseif (valueType == bj_GAMECACHE_INTEGER) then return HaveStoredInteger(cache, missionKey, key) elseif (valueType == bj_GAMECACHE_REAL) then return HaveStoredReal(cache, missionKey, key) elseif (valueType == bj_GAMECACHE_UNIT) then return HaveStoredUnit(cache, missionKey, key) elseif (valueType == bj_GAMECACHE_STRING) then return HaveStoredString(cache, missionKey, key) else // Unrecognized value type - ignore the request. return false endif endfunctionFO=‚XShowCustomCampaignButtonfunction ShowCustomCampaignButton takes boolean show, integer whichButton returns nothing call SetCustomCampaignButtonVisible(whichButton - 1, show) endfunction ¾¾‚)@PI‚@IsCustomCampaignButtonVisibilefunction IsCustomCampaignButtonVisibile takes integer whichButton returns boolean return GetCustomCampaignButtonVisible(whichButton - 1) endfunction#Q!‚.LoadGameBJfunction LoadGameBJ takes string loadFileName, boolean doScoreScreen returns nothing call LoadGame(loadFileName, doScoreScreen) endfunctionhR5ƒ$SaveAndChangeLevelBJfunction SaveAndChangeLevelBJ takes string saveFileName, string newLevel, boolean doScoreScreen returns nothing call SaveGame(saveFileName) call ChangeLevel(newLevel, doScoreScreen) endfunctiongS/ƒ(SaveAndLoadGameBJfunction SaveAndLoadGameBJ takes string saveFileName, string loadFileName, boolean doScoreScreen returns nothing call SaveGame(saveFileName) call LoadGame(loadFileName, doScoreScreen) endfunction kk2ØŽGCT7‚XRenameSaveDirectoryBJfunction RenameSaveDirectoryBJ takes string sourceDirName, string destDirName returns boolean return RenameSaveDirectory(sourceDirName, destDirName) endfunction"U7‚RemoveSaveDirectoryBJfunction RemoveSaveDirectoryBJ takes string sourceDirName returns boolean return RemoveSaveDirectory(sourceDirName) endfunction2V)‚DCopySaveGameBJfunction CopySaveGameBJ takes string sourceSaveName, string destSaveName returns boolean return CopySaveGame(sourceSaveName, destSaveName) endfunction5W;‚8GetPlayerStartLocationXfunction GetPlayerStartLocationX takes player whichPlayer returns real return GetStartLocationX(GetPlayerStartLocation(whichPlayer)) endfunction5X;‚8GetPlayerStartLocationYfunction GetPlayerStartLocationY takes player whichPlayer returns real return GetStartLocationY(GetPlayerStartLocation(whichPlayer)) endfunction ÿÿÂo2?Y?‚HGetPlayerStartLocationLocfunction GetPlayerStartLocationLoc takes player whichPlayer returns location return GetStartLocationLoc(GetPlayerStartLocation(whichPlayer)) endfunction)Z'‚4GetRectCenterfunction GetRectCenter takes rect whichRect returns location return Location(GetRectCenterX(whichRect), GetRectCenterY(whichRect)) endfunction?[/‚XIsPlayerSlotStatefunction IsPlayerSlotState takes player whichPlayer, playerslotstate whichState returns boolean return GetPlayerSlotState(whichPlayer) == whichState endfunctionJ\1‚lGetFadeFromSecondsfunction GetFadeFromSeconds takes real seconds returns integer if (seconds != 0) then return 128 / seconds else return 10000 endif endfunction )‚]?ƒtAdjustPlayerStateSimpleBJfunction AdjustPlayerStateSimpleBJ takes player whichPlayer, playerstate whichPlayerState, integer delta returns nothing call SetPlayerState(whichPlayer, whichPlayerState, GetPlayerState(whichPlayer, whichPlayerState) + delta) endfunction…S^3Š|AdjustPlayerStateBJfunction AdjustPlayerStateBJ takes integer delta, player whichPlayer, playerstate whichPlayerState returns nothing // If the change was positive, apply the difference to the player's // gathered resources property as well. if (delta > 0) then if (whichPlayerState == PLAYER_STATE_RESOURCE_GOLD) then call AdjustPlayerStateSimpleBJ(whichPlayer, PLAYER_STATE_GOLD_GATHERED, delta) elseif (whichPlayerState == PLAYER_STATE_RESOURCE_LUMBER) then call AdjustPlayerStateSimpleBJ(whichPlayer, PLAYER_STATE_LUMBER_GATHERED, delta) endif endif call AdjustPlayerStateSimpleBJ(whichPlayer, whichPlayerState, delta) endfunction ëë‚/_-„:SetPlayerStateBJfunction SetPlayerStateBJ takes player whichPlayer, playerstate whichPlayerState, integer value returns nothing local integer oldValue = GetPlayerState(whichPlayer, whichPlayerState) call AdjustPlayerStateBJ(value - oldValue, whichPlayer, whichPlayerState) endfunctionf`+ƒ*SetPlayerFlagBJfunction SetPlayerFlagBJ takes playerstate whichPlayerFlag, boolean flag, player whichPlayer returns nothing call SetPlayerState(whichPlayer, whichPlayerFlag, IntegerTertiaryOp(flag, 1, 0)) endfunctionta1ƒ@SetPlayerTaxRateBJfunction SetPlayerTaxRateBJ takes integer rate, playerstate whichResource, player sourcePlayer, player otherPlayer returns nothing call SetPlayerTaxRate(sourcePlayer, otherPlayer, whichResource, rate) endfunction ¨¨ŽVbb1ƒGetPlayerTaxRateBJfunction GetPlayerTaxRateBJ takes playerstate whichResource, player sourcePlayer, player otherPlayer returns integer return GetPlayerTaxRate(sourcePlayer, otherPlayer, whichResource) endfunctionDc/‚bIsPlayerFlagSetBJfunction IsPlayerFlagSetBJ takes playerstate whichPlayerFlag, player whichPlayer returns boolean return GetPlayerState(whichPlayer, whichPlayerFlag) == 1 endfunction&d3‚"AddResourceAmountBJfunction AddResourceAmountBJ takes integer delta, unit whichUnit returns nothing call AddResourceAmount(whichUnit, delta) endfunction ÁÁ]öze5‚GetConvertedPlayerIdfunction GetConvertedPlayerId takes player whichPlayer returns integer return GetPlayerId(whichPlayer) + 1 endfunctionf+‚ConvertedPlayerfunction ConvertedPlayer takes integer convertedPlayerId returns player return Player(convertedPlayerId - 1) endfunctiong)`GetRectWidthBJfunction GetRectWidthBJ takes rect r returns real return GetRectMaxX(r) - GetRectMinX(r) endfunctionh+bGetRectHeightBJfunction GetRectHeightBJ takes rect r returns real return GetRectMaxY(r) - GetRectMinY(r) endfunction ÁÁ†;i?Œ@BlightGoldMineForPlayerBJfunction BlightGoldMineForPlayerBJ takes unit goldMine, player whichPlayer returns unit local real mineX local real mineY local integer mineGold local unit newMine // Make sure we're replacing a Gold Mine and not some other type of unit. if GetUnitTypeId(goldMine) != 'ngol' then return null endif // Save the Gold Mine's properties and remove it. set mineX = GetUnitX(goldMine) set mineY = GetUnitY(goldMine) set mineGold = GetResourceAmount(goldMine) call RemoveUnit(goldMine) // Create a Haunted Gold Mine to replace the Gold Mine. set newMine = CreateBlightedGoldmine(whichPlayer, mineX, mineY, bj_UNIT_FACING) call SetResourceAmount(newMine, mineGold) return newMine endfunction ##ªYwj;ƒ<BlightGoldMineForPlayerfunction BlightGoldMineForPlayer takes unit goldMine, player whichPlayer returns unit set bj_lastHauntedGoldMine = BlightGoldMineForPlayerBJ(goldMine, whichPlayer) return bj_lastHauntedGoldMine endfunctionk9`GetLastHauntedGoldMinefunction GetLastHauntedGoldMine takes nothing returns unit return bj_lastHauntedGoldMine endfunction+l/‚0IsPointBlightedBJfunction IsPointBlightedBJ takes location where returns boolean return IsPointBlighted(GetLocationX(where), GetLocationY(where)) endfunction#m5‚SetPlayerColorBJEnumfunction SetPlayerColorBJEnum takes nothing returns nothing call SetUnitColor(GetEnumUnit(), bj_setPlayerTargetColor) endfunction WW4wƒYn-‡SetPlayerColorBJfunction SetPlayerColorBJ takes player whichPlayer, playercolor color, boolean changeExisting returns nothing local group g call SetPlayerColor(whichPlayer, color) if changeExisting then set bj_setPlayerTargetColor = color set g = CreateGroup() call GroupEnumUnitsOfPlayer(g, whichPlayer, null) call ForGroup(g, function SetPlayerColorBJEnum) call DestroyGroup(g) endif endfunction‚?o=„JSetPlayerUnitAvailableBJfunction SetPlayerUnitAvailableBJ takes integer unitId, boolean allowed, player whichPlayer returns nothing if allowed then call SetPlayerTechMaxAllowed(whichPlayer, unitId, -1) else call SetPlayerTechMaxAllowed(whichPlayer, unitId, 0) endif endfunctionp+hLockGameSpeedBJfunction LockGameSpeedBJ takes nothing returns nothing call SetMapFlag(MAP_LOCK_SPEED, true) endfunction ¦¦4Ø q/nUnlockGameSpeedBJfunction UnlockGameSpeedBJ takes nothing returns nothing call SetMapFlag(MAP_LOCK_SPEED, false) endfunctionIr1‚jIssueTargetOrderBJfunction IssueTargetOrderBJ takes unit whichUnit, string order, widget targetWidget returns boolean return IssueTargetOrder( whichUnit, order, targetWidget ) endfunctionSs5‚zIssuePointOrderLocBJfunction IssuePointOrderLocBJ takes unit whichUnit, string order, location whichLocation returns boolean return IssuePointOrderLoc( whichUnit, order, whichLocation ) endfunction‚$tE„ IssueTargetDestructableOrder// dummy function simply mimics the behavior of an existing call. // function IssueTargetDestructableOrder takes unit whichUnit, string order, widget targetWidget returns boolean return IssueTargetOrder( whichUnit, order, targetWidget ) endfunction í pJMu5‚nIssueTargetItemOrderfunction IssueTargetItemOrder takes unit whichUnit, string order, widget targetWidget returns boolean return IssueTargetOrder( whichUnit, order, targetWidget ) endfunction/v7‚0IssueImmediateOrderBJfunction IssueImmediateOrderBJ takes unit whichUnit, string order returns boolean return IssueImmediateOrder( whichUnit, order ) endfunctionLw1‚pGroupTargetOrderBJfunction GroupTargetOrderBJ takes group whichGroup, string order, widget targetWidget returns boolean return GroupTargetOrder( whichGroup, order, targetWidget ) endfunctionVx5ƒGroupPointOrderLocBJfunction GroupPointOrderLocBJ takes group whichGroup, string order, location whichLocation returns boolean return GroupPointOrderLoc( whichGroup, order, whichLocation ) endfunction2y7‚6GroupImmediateOrderBJfunction GroupImmediateOrderBJ takes group whichGroup, string order returns boolean return GroupImmediateOrder( whichGroup, order ) endfunction º»»æFF‚'zE„GroupTargetDestructableOrder// dummy function simply mimics the behavior of an existing call. // function GroupTargetDestructableOrder takes group whichGroup, string order, widget targetWidget returns boolean return GroupTargetOrder( whichGroup, order, targetWidget ) endfunctionP{5‚tGroupTargetItemOrderfunction GroupTargetItemOrder takes group whichGroup, string order, widget targetWidget returns boolean return GroupTargetOrder( whichGroup, order, targetWidget ) endfunctionŒ6}/‚FSetUnitRallyPointfunction SetUnitRallyPoint takes unit whichUnit, location targPos returns nothing call IssuePointOrderLocBJ(whichUnit, "setrally", targPos) endfunction aaÝl#.~-‚8SetUnitRallyUnitfunction SetUnitRallyUnit takes unit whichUnit, unit targUnit returns nothing call IssueTargetOrder(whichUnit, "setrally", targUnit) endfunctionF=‚XSetUnitRallyDestructablefunction SetUnitRallyDestructable takes unit whichUnit, destructable targDest returns nothing call IssueTargetOrder(whichUnit, "setrally", targDest) endfunction Ž+tSaveDyingWidgetfunction SaveDyingWidget takes nothing returns nothing set bj_lastDyingWidget = GetTriggerWidget() endfunction3Ž+‚DSetBlightRectBJfunction SetBlightRectBJ takes boolean addBlight, player whichPlayer, rect r returns nothing call SetBlightRect(whichPlayer, r, addBlight) endfunctionYŽ5ƒSetBlightRadiusLocBJfunction SetBlightRadiusLocBJ takes boolean addBlight, player whichPlayer, location loc, real radius returns nothing call SetBlightLoc(whichPlayer, loc, radius, addBlight) endfunction ==ÅàOŽ)hGetAbilityNamefunction GetAbilityName takes integer abilcode returns string return GetObjectName(abilcode) endfunction‚Ž;ƒ|MeleeStartingVisibilityfunction MeleeStartingVisibility takes nothing returns nothing // Start by setting the ToD. call SetFloatGameState(GAME_STATE_TIME_OF_DAY, bj_MELEE_STARTING_TOD) // call FogMaskEnable(true) // call FogEnable(true) endfunctionˆŽ9xMeleeStartingResourcesfunction MeleeStartingResources takes nothing returns nothing local in™ƒ-ŽA†"ReducePlayerTechMaxAllowedfunction ReducePlayerTechMaxAllowed takes player whichPlayer, integer techId, integer limit returns nothing local integer oldMax = GetPlayerTechMaxAllowed(whichPlayer, techId) // A value of -1 is used to indicate no limit, so check for that as well. if (oldMax < 0 or oldMax > limit) then call SetPlayerTechMaxAllowed(whichPlayer, techId, limit) endif endfunctionteger index local player indexPlayer local version v local integer startingGold local integer startingLumber set v = VersionGet() if (v == VERSION_REIGN_OF_CHAOS) then set startingGold = bj_MELEE_STARTING_GOLD_V0 set startingLumber = bj_MELEE_STARTING_LUMBER_V0 else set startingGold = bj_MELEE_STARTING_GOLD_V1 set startingLumber = bj_MELEE_STARTING_LUMBER_V1 endif // Set each player's starting resources. set index = 0 loop set indexPlayer = Player(index) if (GetPlayerSlotState(indexPlayer) == PLAYER_SLOT_STATE_PLAYING) then call SetPlayerState(indexPlayer, PLAYER_STATE_RESOURCE_GOLD, startingGold) call SetPlayerState(indexPlayer, PLAYER_STATE_RESOURCE_LUMBER, startingLumber) endif set index = index + 1 exitwhen index == bj_MAX_PLAYERS endloop endfunction›dex), 'Hpal', bj_MELEE_HERO_TYPE_LIMIT) call ReducePlayerTechMaxAllowed(Player(index), 'Hblm', bj_MELEE_HERO_TYPE_LIMIT) call ReducePlayerTechMaxAllowed(Player(index), 'Obla', bj_MELEE_HERO_TYPE_LIMIT) call ReducePlayerTechMaxAllowed(Player(index), 'Ofar', bj_MELEE_HERO_TYPE_LIMIT) call ReducePlayerTechMaxAllowed(Player(index), 'Otch', bj_MELEE_HERO_TYPE_LIMIT) call ReducePlayerTechMaxAllowed(Player(index), 'Oshd', bj_MELEE_HERO_TYPE_LIMIT) call ReducePlayerTechMaxAllowed(Player(index), 'Edem', bj_MELEE_HERO_TYPE_LIMIT) call ReducePlayerTechMaxAllowed(Player(index), 'Ekee', bj_MELEE_HERO_TYPE_LIMIT) call ReducePlayerTechMaxAllowed(Player(index), 'Emoo', bj_MELEE_HERO_TYPE_LIMIT) call ReducePlayerTechMaxAllowed(Player(index), 'Ewar', bj_MELEE_HERO_TYPE_LIMIT) call ReducePlayerTechMaxAllowed(Player(index), 'Udea', bj_MELEE_HERO_TYPE_LIMIT) call ReducePlayerTechMaxAllowed(Player(index), 'Udre', bj_MELEE_HERO_TYPE_LIMIT) call ReducePlayerTechMaxAllowed(Player(index), 'Ulic', bj_MELEE_HERO_TYPE_LIMIT) call ReducePlayerTechMaxAllowed(Player(index), 'Ucrl', bj_MELEE_HERO_TYPE_LIMIT) call ReducePlayerTechMaxAllowed(Player(index), 'Npbm', bj_MELEE_HERO_TYPE_LIMIT) call ReducePlayerTechMaxAllowed(Player(index), 'Nbrn', bj_MELEE_HERO_TYPE_LIMIT) call ReducePlayerTechMaxAllowed(Player(index), 'Nngs', bj_MELEE_HERO_TYPE_LIMIT) call ReducePlayerTechMaxAllowed(Player(index), 'Nplh', bj_MELEE_HERO_TYPE_LIMIT) call ReducePlayerTechMaxAllowed(Player(index), 'Nbst', bj_MELEE_HERO_TYPE_LIMIT) call ReducePlayerTechMaxAllowed(Player(index), 'Nalc', bj_MELEE_HERO_TYPE_LIMIT) call ReducePlayerTechMaxAllowed(Player(index), 'Ntin', bj_MELEE_HERO_TYPE_LIMIT) call ReducePlayerTechMaxAllowed(Player(index), 'Nfir', bj_MELEE_HERO_TYPE_LIMIT) set index = index + 1 exitwhen index == bj_MAX_PLAYERS endloop endfunction L”'Ž9¨MeleeStartingHeroLimitfunction MeleeStartingHeroLimit takes nothing returns nothing local integer index set index = 0 loop // max heroes per player call SetPlayerMaxHeroesAllowed(bj_MELEE_HERO_LIMIT, Player(index)) // each player is restricted to a limit per hero type as well call ReducePlayerTechMaxAllowed(Player(index), 'Hamg', bj_MELEE_HERO_TYPE_LIMIT) call ReducePlayerTechMaxAllowed(Player(index), 'Hmkg', bj_MELEE_HERO_TYPE_LIMIT) call ReducePlayerTechMaxAllowed(Player(inš0ŽI‚ MeleeTrainedUnitIsHeroBJFilterfunction MeleeTrainedUnitIsHeroBJFilter takes nothing returns boolean return IsUnitType(GetFilterUnit(), UNIT_TYPE_HERO) endfunction àà³]ƒOŽ 7†pMeleeGrantItemsToHerofunction MeleeGrantItemsToHero takes unit whichUnit returns nothing local integer owner = GetPlayerId(GetOwningPlayer(whichUnit)) // If we haven't twinked N heroes for this player yet, twink away. if (bj_meleeTwinkedHeroes[owner] < bj_MELEE_MAX_TWINKED_HEROES) then call UnitAddItemById(whichUnit, 'stwp') set bj_meleeTwinkedHeroes[owner] = bj_meleeTwinkedHeroes[owner] + 1 endif endfunction&Ž E‚MeleeGrantItemsToTrainedHerofunction MeleeGrantItemsToTrainedHero takes nothing returns nothing call MeleeGrantItemsToHero(GetTrainedUnit()) endfunctionŽ A‚MeleeGrantItemsToHiredHerofunction MeleeGrantItemsToHiredHero takes nothing returns nothing call MeleeGrantItemsToHero(GetSoldUnit()) endfunction// Register for an event whenever a hero is trained, so that we can give // him/her their starting items. set index = 0 loop set trig = CreateTrigger() call TriggerRegisterPlayerUnitEvent(trig, Player(index), EVENT_PLAYER_UNIT_TRAIN_FINISH, filterMeleeTrainedUnitIsHeroBJ) call TriggerAddAction(trig, function MeleeGrantItemsToTrainedHero) set index = index + 1 exitwhen index == bj_MAX_PLAYERS endloop // Register for an event whenever a neutral hero is hired, so that we // can give him/her their starting items. set trig = CreateTrigger() call TriggerRegisterPlayerUnitEvent(trig, Player(PLAYER_NEUTRAL_PASSIVE), EVENT_PLAYER_UNIT_SELL, filterMeleeTrainedUnitIsHeroBJ) call TriggerAddAction(trig, function MeleeGrantItemsToHiredHero) // Flag that we are giving starting items to heroes, so that the melee // starting units code can create them as necessary. set bj_meleeGrantHeroItems = true endfunction ++•Š^Ž 3•MeleeGrantHeroItemsfunction MeleeGrantHeroItems takes nothing returns nothing local integer index local trigger trig // Initialize the twinked hero counts. set index = 0 loop set bj_meleeTwinkedHeroes[index] = 0 set index = index + 1 exitwhen index == bj_MAX_PLAYER_SLOTS endloop ž„gŽ 5‰"MeleeClearExcessUnitfunction MeleeClearExcessUnit takes nothing returns nothing local unit theUnit = GetEnumUnit() local integer owner = GetPlayerId(GetOwningPlayer(theUnit)) if (owner == PLAYER_NEUTRAL_AGGRESSIVE) then // Remove any Neutral Hostile units from the area. call RemoveUnit(GetEnumUnit()) elseif (owner == PLAYER_NEUTRAL_PASSIVE) then // Remove non-structure Neutral Passive units from the area. if not IsUnitType(theUnit, UNIT_TYPE_STRUCTURE) then call RemoveUnit(GetEnumUnit()) endif endif endfunction ˜˜‚dŽ7…MeleeClearNearbyUnitsfunction MeleeClearNearbyUnits takes real x, real y, real range returns nothing local group nearbyUnits set nearbyUnits = CreateGroup() call GroupEnumUnitsInRange(nearbyUnits, x, y, range, null) call ForGroup(nearbyUnits, function MeleeClearExcessUnit) call DestroyGroup(nearbyUnits) endfunction õõ†Ž7‹`MeleeClearExcessUnitsfunction MeleeClearExcessUnits takes nothing returns nothing local integer index local real locX local real locY local player indexPlayer set index = 0 loop set indexPlayer = Player(index) // If the player slot is being used, clear any nearby creeps. if (GetPlayerSlotState(indexPlayer) == PLAYER_SLOT_STATE_PLAYING) then set locX = GetStartLocationX(GetPlayerStartLocation(indexPlayer)) set locY = GetStartLocationY(GetPlayerStartLocation(indexPlayer)) call MeleeClearNearbyUnits(locX, locY, bj_MELEE_CLEAR_UNITS_RADIUS) endif set index = index + 1 exitwhen index == bj_MAX_PLAYERS endloop endfunction FF…6Ž=Š8MeleeEnumFindNearestMinefunction MeleeEnumFindNearestMine takes nothing returns nothing local unit enumUnit = GetEnumUnit() local real dist local location unitLoc if (GetUnitTypeId(enumUnit) == 'ngol') then set unitLoc = GetUnitLoc(enumUnit) set dist = DistanceBetweenPoints(unitLoc, bj_meleeNearestMineToLoc) call RemoveLocation(unitLoc) // If this is our first mine, or the closest thusfar, use it instead. if (bj_meleeNearestMineDist < 0) or (dist < bj_meleeNearestMineDist) then set bj_meleeNearestMine = enumUnit set bj_meleeNearestMineDist = dist endif endif endfunction ––‘ƒwŽ5‡BMeleeFindNearestMinefunction MeleeFindNearestMine takes location src, real range returns unit local group nearbyMines set bj_meleeNearestMine = null set bj_meleeNearestMineDist = -1 set bj_meleeNearestMineToLoc = src set nearbyMines = CreateGroup() call GroupEnumUnitsInRangeOfLoc(nearbyMines, src, range, null) call ForGroup(nearbyMines, function MeleeEnumFindNearestMine) call DestroyGroup(nearbyMines) return bj_meleeNearestMine endfunctionˆŽ1MeleeRandomHeroLocfunction MeleeRandomHeroLoc takes player p, integer id1, integer id2, integer i¤d3, integer id4, location loc returns unit local unit hero = null local integer roll local integer pick local version v // The selection of heroes is dependant on the game version. set v = VersionGet() if (v == VERSION_REIGN_OF_CHAOS) then set roll = GetRandomInt(1,3) else set roll = GetRandomInt(1,4) endif // Translate the roll into a unitid. if roll == 1 then set pick = id1 elseif roll == 2 then set pick = id2 elseif roll == 3 then set pick = id3 elseif roll == 4 then set pick = id4 else // Unrecognized id index - pick the first hero in the list. set pick = id1 endif // Create the hero. set hero = CreateUnitAtLoc(p, pick, loc, bj_UNIT_FACING) if bj_meleeGrantHeroItems then call MeleeGrantItemsToHero(hero) endif return hero endfunction 44áƒ)Ž5†&MeleeGetProjectedLocfunction MeleeGetProjectedLoc takes location src, location targ, real distance, real deltaAngle returns location local real srcX = GetLocationX(src) local real srcY = GetLocationY(src) local real direction = Atan2(GetLocationY(targ) - srcY, GetLocationX(targ) - srcX) + deltaAngle return Location(srcX + distance * Cos(direction), srcY + distance * Sin(direction)) endfunction‚ŽAƒ~MeleeGetNearestValueWithinfunction MeleeGetNearestValueWithin takes real val, real minVal, real maxVal returns real if (val < minVal) then return minVal elseif (val > maxVal) then return maxVal else return val endif endfunction ‘‘‚kŽ7…(MeleeGetLocWithinRectfunction MeleeGetLocWithinRect takes location src, rect r returns location local real withinX = MeleeGetNearestValueWithin(GetLocationX(src), GetRectMinX(r), GetRectMaxX(r)) local real withinY = MeleeGetNearestValueWithin(GetLocationY(src), GetRectMinY(r), GetRectMaxY(r)) return Location(withinX, withinY) endfunction¨ull) then // Spawn Town Hall at the start location. set townHall = CreateUnitAtLoc(whichPlayer, 'htow', startLoc, bj_UNIT_FACING) // Spawn Peasants near the mine. set nearMineLoc = MeleeGetProjectedLoc(GetUnitLoc(nearestMine), startLoc, 320, 0) set peonX = GetLocationX(nearMineLoc) set peonY = GetLocationY(nearMineLoc) call CreateUnit(whichPlayer, 'hpea', peonX + 0.00 * unitSpacing, peonY + 1.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'hpea', peonX + 1.00 * unitSpacing, peonY + 0.15 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'hpea', peonX - 1.00 * unitSpacing, peonY + 0.15 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'hpea', peonX + 0.60 * unitSpacing, peonY - 1.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'hpea', peonX - 0.60 * unitSpacing, peonY - 1.00 * unitSpacing, bj_UNIT_FACING) // Set random hero spawn point to ©be off to the side of the start location. set heroLoc = MeleeGetProjectedLoc(GetUnitLoc(nearestMine), startLoc, 384, 45) else // Spawn Town Hall at the start location. set townHall = CreateUnitAtLoc(whichPlayer, 'htow', startLoc, bj_UNIT_FACING) // Spawn Peasants directly south of the town hall. set peonX = GetLocationX(startLoc) set peonY = GetLocationY(startLoc) - 224.00 call CreateUnit(whichPlayer, 'hpea', peonX + 2.00 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'hpea', peonX + 1.00 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'hpea', peonX + 0.00 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'hpea', peonX - 1.00 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'hpea', peonX - 2.00 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) // Set random hero spawn point to be just south of the start location. set heroLoc = Location(peonX, peonY - 2.00 * unitSpacing) endif if (townHall != null) then call UnitAddAbilityBJ('Amic', townHall) call UnitMakeAbilityPermanentBJ(true, 'Amic', townHall) endif if (doHeroes) then // If the "Random Hero" option is set, start the player with a random hero. // Otherwise, give them a "free hero" token. if useRandomHero then call MeleeRandomHeroLoc(whichPlayer, 'Hamg', 'Hmkg', 'Hpal', 'Hblm', heroLoc) else call SetPlayerState(whichPlayer, PLAYER_STATE_RESOURCE_HERO_TOKENS, bj_MELEE_STARTING_HERO_TOKENS) endif endif if (doCamera) then // Center the camera on the initial Peasants. call SetCameraPositionForPlayer(whichPlayer, peonX, peonY) call SetCameraQuickPositionForPlayer(whichPlayer, peonX, peonY) endif endfunction ^^Ž;¹jMeleeStartingUnitsHumanfunction MeleeStartingUnitsHuman takes player whichPlayer, location startLoc, boolean doHeroes, boolean doCamera, boolean doPreload returns nothing local boolean useRandomHero = IsMapFlagSet(MAP_RANDOM_HERO) local real unitSpacing = 64.00 local unit nearestMine local location nearMineLoc local location heroLoc local real peonX local real peonY local unit townHall = null if (doPreload) then call Preloader( "scripts\\HumanMelee.pld" ) endif set nearestMine = MeleeFindNearestMine(startLoc, bj_MELEE_MINE_SEARCH_RADIUS) if (nearestMine != n§¬Preload) then call Preloader( "scripts\\OrcMelee.pld" ) endif set nearestMine = MeleeFindNearestMine(startLoc, bj_MELEE_MINE_SEARCH_RADIUS) if (nearestMine != null) then // Spawn Great Hall at the start location. call CreateUnitAtLoc(whichPlayer, 'ogre', startLoc, bj_UNIT_FACING) // Spawn Peons near the mine. set nearMineLoc = MeleeGetProjectedLoc(GetUnitLoc(nearestMine), startLoc, 320, 0) set peonX = GetLocationX(nearMineLoc) set peonY = GetLocationY(nearMineLoc) call CreateUnit(whichPlayer, 'opeo', peonX + 0.00 * unitSpacing, peonY + 1.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'opeo', peonX + 1.00 * unitSpacing, peonY + 0.15 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'opeo', peonX - 1.00 * unitSpacing, peonY + 0.15 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'opeo', peonX + 0.60 * unitSpacing, peonY - 1.00 * unitSpacing, bj_UN­IT_FACING) call CreateUnit(whichPlayer, 'opeo', peonX - 0.60 * unitSpacing, peonY - 1.00 * unitSpacing, bj_UNIT_FACING) // Set random hero spawn point to be off to the side of the start location. set heroLoc = MeleeGetProjectedLoc(GetUnitLoc(nearestMine), startLoc, 384, 45) else // Spawn Great Hall at the start location. call CreateUnitAtLoc(whichPlayer, 'ogre', startLoc, bj_UNIT_FACING) // Spawn Peons directly south of the town hall. set peonX = GetLocationX(startLoc) set peonY = GetLocationY(startLoc) - 224.00 call CreateUnit(whichPlayer, 'opeo', peonX + 2.00 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'opeo', peonX + 1.00 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'opeo', peonX + 0.00 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'opeo', peonX - 1.00 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'opeo', peonX - 2.00 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) // Set random hero spawn point to be just south of the start location. set heroLoc = Location(peonX, peonY - 2.00 * unitSpacing) endif if (doHeroes) then // If the "Random Hero" option is set, start the player with a random hero. // Otherwise, give them a "free hero" token. if useRandomHero then call MeleeRandomHeroLoc(whichPlayer, 'Obla', 'Ofar', 'Otch', 'Oshd', heroLoc) else call SetPlayerState(whichPlayer, PLAYER_STATE_RESOURCE_HERO_TOKENS, bj_MELEE_STARTING_HERO_TOKENS) endif endif if (doCamera) then // Center the camera on the initial Peons. call SetCameraPositionForPlayer(whichPlayer, peonX, peonY) call SetCameraQuickPositionForPlayer(whichPlayer, peonX, peonY) endif endfunction BB›*Ž7¶&MeleeStartingUnitsOrcfunction MeleeStartingUnitsOrc takes player whichPlayer, location startLoc, boolean doHeroes, boolean doCamera, boolean doPreload returns nothing local boolean useRandomHero = IsMapFlagSet(MAP_RANDOM_HERO) local real unitSpacing = 64.00 local unit nearestMine local location nearMineLoc local location heroLoc local real peonX local real peonY if (do«°(nearestMine, whichPlayer) // Spawn Ghoul near the Necropolis. set nearTownLoc = MeleeGetProjectedLoc(startLoc, GetUnitLoc(nearestMine), 288, 0) set ghoulX = GetLocationX(nearTownLoc) set ghoulY = GetLocationY(nearTownLoc) set bj_ghoul[GetPlayerId(whichPlayer)] = CreateUnit(whichPlayer, 'ugho', ghoulX + 0.00 * unitSpacing, ghoulY + 0.00 * unitSpacing, bj_UNIT_FACING) // Spawn Acolytes near the mine. set nearMineLoc = MeleeGetProjectedLoc(GetUnitLoc(nearestMine), startLoc, 320, 0) set peonX = GetLocationX(nearMineLoc) set peonY = GetLocationY(nearMineLoc) call CreateUnit(whichPlayer, 'uaco', peonX + 0.00 * unitSpacing, peonY + 0.50 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'uaco', peonX + 0.65 * unitSpacing, peonY - 0.50 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'uaco', peonX - 0.65 * unitSpacing, peonY - 0.50 * unitSpacing, bj_UNIT_FACING) // Create± a patch of blight around the gold mine. call SetBlightLoc(whichPlayer,nearMineLoc, 768, true) // Set random hero spawn point to be off to the side of the start location. set heroLoc = MeleeGetProjectedLoc(GetUnitLoc(nearestMine), startLoc, 384, 45) else // Spawn Necropolis at the start location. call CreateUnitAtLoc(whichPlayer, 'unpl', startLoc, bj_UNIT_FACING) // Spawn Acolytes and Ghoul directly south of the Necropolis. set peonX = GetLocationX(startLoc) set peonY = GetLocationY(startLoc) - 224.00 call CreateUnit(whichPlayer, 'uaco', peonX - 1.50 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'uaco', peonX - 0.50 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'uaco', peonX + 0.50 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'ugho', peonX + 1.50 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) // Create a patch of blight around the start location. call SetBlightLoc(whichPlayer,startLoc, 768, true) // Set random hero spawn point to be just south of the start location. set heroLoc = Location(peonX, peonY - 2.00 * unitSpacing) endif if (doHeroes) then // If the "Random Hero" option is set, start the player with a random hero. // Otherwise, give them a "free hero" token. if useRandomHero then call MeleeRandomHeroLoc(whichPlayer, 'Udea', 'Udre', 'Ulic', 'Ucrl', heroLoc) else call SetPlayerState(whichPlayer, PLAYER_STATE_RESOURCE_HERO_TOKENS, bj_MELEE_STARTING_HERO_TOKENS) endif endif if (doCamera) then // Center the camera on the initial Acolytes. call SetCameraPositionForPlayer(whichPlayer, peonX, peonY) call SetCameraQuickPositionForPlayer(whichPlayer, peonX, peonY) endif endfunction ŸOŽ=¾jMeleeStartingUnitsUndeadfunction MeleeStartingUnitsUndead takes player whichPlayer, location startLoc, boolean doHeroes, boolean doCamera, boolean doPreload returns nothing local boolean useRandomHero = IsMapFlagSet(MAP_RANDOM_HERO) local real unitSpacing = 64.00 local unit nearestMine local location nearMineLoc local location nearTownLoc local location heroLoc local real peonX local real peonY local real ghoulX local real ghoulY if (doPreload) then call Preloader( "scripts\\UndeadMelee.pld" ) endif set nearestMine = MeleeFindNearestMine(startLoc, bj_MELEE_MINE_SEARCH_RADIUS) if (nearestMine != null) then // Spawn Necropolis at the start location. call CreateUnitAtLoc(whichPlayer, 'unpl', startLoc, bj_UNIT_FACING) // Replace the nearest gold mine with a blighted version. set nearestMine = BlightGoldMineForPlayerBJ¯ ]]¡ ŽAÁ^MeleeStartingUnitsNightElffunction MeleeStartingUnitsNightElf takes player whichPlayer, location startLoc, boolean doHeroes, boolean doCamera, boolea´µn doPreload returns nothing local boolean useRandomHero = IsMapFlagSet(MAP_RANDOM_HERO) local real unitSpacing = 64.00 local real minTreeDist = 3.50 * bj_CELLWIDTH local real minWispDist = 1.75 * bj_CELLWIDTH local unit nearestMine local location nearMineLoc local location wispLoc local location heroLoc local real peonX local real peonY local unit tree if (doPreload) then call Preloader( "scripts\\NightElfMelee.pld" ) endif set nearestMine = MeleeFindNearestMine(startLoc, bj_MELEE_MINE_SEARCH_RADIUS) if (nearestMine != null) then // Spawn Tree of Life near the mine and have it entangle the mine. // Project the Tree's coordinates from the gold mine, and then snap // the X and Y values to within minTreeDist of the Gold Mine. set nearMineLoc = MeleeGetProjectedLoc(GetUnitLoc(nearestMine), startLoc, 650, 0) set nearMineLoc = MeleeGetLocWithinRe¶ct(nearMineLoc, GetRectFromCircleBJ(GetUnitLoc(nearestMine), minTreeDist)) set tree = CreateUnitAtLoc(whichPlayer, 'etol', nearMineLoc, bj_UNIT_FACING) call IssueTargetOrder(tree, "entangleinstant", nearestMine) // Spawn Wisps at the start location. set wispLoc = MeleeGetProjectedLoc(GetUnitLoc(nearestMine), startLoc, 320, 0) set wispLoc = MeleeGetLocWithinRect(wispLoc, GetRectFromCircleBJ(GetUnitLoc(nearestMine), minWispDist)) set peonX = GetLocationX(wispLoc) set peonY = GetLocationY(wispLoc) call CreateUnit(whichPlayer, 'ewsp', peonX + 0.00 * unitSpacing, peonY + 1.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'ewsp', peonX + 1.00 * unitSpacing, peonY + 0.15 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'ewsp', peonX - 1.00 * unitSpacing, peonY + 0.15 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'ewsp', peonX + 0.58 * unitSpacing, peonY - 1.00 * unitSpacing,· bj_UNIT_FACING) call CreateUnit(whichPlayer, 'ewsp', peonX - 0.58 * unitSpacing, peonY - 1.00 * unitSpacing, bj_UNIT_FACING) // Set random hero spawn point to be off to the side of the start location. set heroLoc = MeleeGetProjectedLoc(GetUnitLoc(nearestMine), startLoc, 384, 45) else // Spawn Tree of Life at the start location. call CreateUnitAtLoc(whichPlayer, 'etol', startLoc, bj_UNIT_FACING) // Spawn Wisps directly south of the town hall. set peonX = GetLocationX(startLoc) set peonY = GetLocationY(startLoc) - 224.00 call CreateUnit(whichPlayer, 'ewsp', peonX - 2.00 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'ewsp', peonX - 1.00 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'ewsp', peonX + 0.00 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'ewsp', peonX + 1.00 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'ewsp', peonX + 2.00 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) // Set random hero spawn point to be just south of the start location. set heroLoc = Location(peonX, peonY - 2.00 * unitSpacing) endif if (doHeroes) then // If the "Random Hero" option is set, start the player with a random hero. // Otherwise, give them a "free hero" token. if useRandomHero then call MeleeRandomHeroLoc(whichPlayer, 'Edem', 'Ekee', 'Emoo', 'Ewar', heroLoc) else call SetPlayerState(whichPlayer, PLAYER_STATE_RESOURCE_HERO_TOKENS, bj_MELEE_STARTING_HERO_TOKENS) endif endif if (doCamera) then // Center the camera on the initial Wisps. call SetCameraPositionForPlayer(whichPlayer, peonX, peonY) call SetCameraQuickPositionForPlayer(whichPlayer, peonX, peonY) endif endfunction 11‡KŽGŽXMeleeStartingUnitsUnknownRacefunction MeleeStartingUnitsUnknownRace takes player whichPlayer, location startLoc, boolean doHeroes, boolean doCamera, boolean doPreload returns nothing local integer index if (doPreload) then endif set index = 0 loop call CreateUnit(whichPlayer, 'nshe', GetLocationX(startLoc) + GetRandomReal(-256, 256), GetLocationY(startLoc) + GetRandomReal(-256, 256), GetRandomReal(0, 360)) set index = index + 1 exitwhen index == 12 endloop if (doHeroes) then // Give them a "free hero" token, out of pity. call SetPlayerState(whichPlayer, PLAYER_STATE_RESOURCE_HERO_TOKENS, bj_MELEE_STARTING_HERO_TOKENS) endif if (doCamera) then // Center the camera on the initial sheep. call SetCameraPositionLocForPlayer(whichPlayer, startLoc) call SetCameraQuickPositionLocForPlayer(whichPlayer, startLoc) endif endfunctionndexStartLoc = GetStartLocationLoc(GetPlayerStartLocation(indexPlayer)) set indexRace = GetPlayerRace(indexPlayer) // Create initial race-specific starting units if (indexRace == RACE_HUMAN) then call MeleeStartingUnitsHuman(indexPlayer, indexStartLoc, true, true, true) elseif (indexRace == RACE_ORC) then call MeleeStartingUnitsOrc(indexPlayer, indexStartLoc, true, true, true) elseif (indexRace == RACE_UNDEAD) then call MeleeStartingUnitsUndead(indexPlayer, indexStartLoc, true, true, true) elseif (indexRace == RACE_NIGHTELF) then call MeleeStartingUnitsNightElf(indexPlayer, indexStartLoc, true, true, true) else call MeleeStartingUnitsUnknownRace(indexPlayer, indexStartLoc, true, true, true) endif endif set index = index + 1 exitwhen index == bj_MAX_PLAYERS endloop endfunction NN‹&Ž1–$MeleeStartingUnitsfunction MeleeStartingUnits takes nothing returns nothing local integer index local player indexPlayer local location indexStartLoc local race indexRace call Preloader( "scripts\\SharedMelee.pld" ) set index = 0 loop set indexPlayer = Player(index) if (GetPlayerSlotState(indexPlayer) == PLAYER_SLOT_STATE_PLAYING) then set i¹ æ憎C‹rMeleeStartingUnitsForPlayerfunction MeleeStartingUnitsForPlayer takes race whichRace, player whichPlayer, location loc, boolean doHeroes returns nothing // Create initial race-specific starting units if (whichRace == RACE_HUMAN) then call MeleeStartingUnitsHuman(whichPlayer, loc, doHeroes, false, false) elseif (whichRace == RACE_ORC) then call MeleeStartingUnitsOrc(whichPlayer, loc, doHeroes, false, false) elseif (whichRace == RACE_UNDEAD) then call MeleeStartingUnitsUndead(whichPlayer, loc, doHeroes, false, false) elseif (whichRace == RACE_NIGHTELF) then call MeleeStartingUnitsNightElf(whichPlayer, loc, doHeroes, false, false) else // Unrecognized race - ignore the request. endif endfunction …_Ž#‹$PickMeleeAIfunction PickMeleeAI takes player num, string s1, string s2, string s3 returns nothing local integer pick // easy difficulty never uses any custom AI scripts // that are designed to be a bit more challenging // if GetAIDifficulty(num) == AI_DIFFICULTY_NEWBIE then call StartMeleeAI(num,s1) return endif if s2 == null then set pick = 1 elseif s3 == null then set pick = GetRandomInt(1,2) else set pick = GetRandomInt(1,3) endif if pick == 1 then call StartMeleeAI(num,s1) elseif pick == 2 then call StartMeleeAI(num,s2) else call StartMeleeAI(num,s3) endif endfunctionrRace(indexPlayer) if (GetPlayerController(indexPlayer) == MAP_CONTROL_COMPUTER) then // Run a race-specific melee AI script. if (indexRace == RACE_HUMAN) then call PickMeleeAI(indexPlayer, "human.ai", null, null) elseif (indexRace == RACE_ORC) then call PickMeleeAI(indexPlayer, "orc.ai", null, null) elseif (indexRace == RACE_UNDEAD) then call PickMeleeAI(indexPlayer, "undead.ai", null, null) call RecycleGuardPosition(bj_ghoul[index]) elseif (indexRace == RACE_NIGHTELF) then call PickMeleeAI(indexPlayer, "elf.ai", null, null) else // Unrecognized race. endif call ShareEverythingWithTeamAI(indexPlayer) endif endif set index = index + 1 exitwhen index == bj_MAX_PLAYERS endloop endfunction iiÏZŠZŽ+•MeleeStartingAIfunction MeleeStartingAI takes nothing returns nothing local integer index local player indexPlayer local race indexRace set index = 0 loop set indexPlayer = Player(index) if (GetPlayerSlotState(indexPlayer) == PLAYER_SLOT_STATE_PLAYING) then set indexRace = GetPlaye½Ž/hLockGuardPositionfunction LockGuardPosition takes unit targ returns nothing call SetUnitCreepGuard(targ,true) endfunction‰Ž 7’MeleePlayerIsOpponentfunction MeleePlayerIsOpponent takes integer playerIndex, integer opponentIndex returns boolean local player thePlayer = Playe¿r(playerIndex) local player theOpponent = Player(opponentIndex) // The player himself is not an opponent. if (playerIndex == opponentIndex) then return false endif // Unused player slots are not opponents. if (GetPlayerSlotState(theOpponent) != PLAYER_SLOT_STATE_PLAYING) then return false endif // Players who are already defeated are not opponents. if (bj_meleeDefeated[opponentIndex]) then return false endif // Allied players with allied victory set are not opponents. if GetPlayerAlliance(thePlayer, theOpponent, ALLIANCE_PASSIVE) then if GetPlayerAlliance(theOpponent, thePlayer, ALLIANCE_PASSIVE) then if (GetPlayerState(thePlayer, PLAYER_STATE_ALLIED_VICTORY) == 1) then if (GetPlayerState(theOpponent, PLAYER_STATE_ALLIED_VICTORY) == 1) then return false endif endif endif endif return true endfunction BB‡:Ž!AŽ<MeleeGetAllyStructureCountfunction MeleeGetAllyStructureCount takes player whichPlayer returns integer local integer playerIndex local integer buildingCount local player indexPlayer // Count the number of buildings controlled by all not-yet-defeated co-allies. set buildingCount = 0 set playerIndex = 0 loop set indexPlayer = Player(playerIndex) // uncomment to cause defeat even if you have control of ally structures, but yours have been nixed //if (PlayersAreCoAllied(whichPlayer, indexPlayer) and not bj_meleeDefeated[playerIndex]) then if (PlayersAreCoAllied(whichPlayer, indexPlayer)) then set buildingCount = buildingCount + GetPlayerStructureCount(indexPlayer, true) endif set playerIndex = playerIndex + 1 exitwhen playerIndex == bj_MAX_PLAYERS endloop return buildingCount endfunction ÛÛ‘…2Ž"/Š>MeleeGetAllyCountfunction MeleeGetAllyCount takes player whichPlayer returns integer local integer playerIndex local integer playerCount local player indexPlayer // Count the number of not-yet-defeated co-allies. set playerCount = 0 set playerIndex = 0 loop set indexPlayer = Player(playerIndex) if PlayersAreCoAllied(whichPlayer, indexPlayer) and not bj_meleeDefeated[playerIndex] and (whichPlayer != indexPlayer) then set playerCount = playerCount + 1 endif set playerIndex = playerIndex + 1 exitwhen playerIndex == bj_MAX_PLAYERS endloop return playerCount endfunctionˆ)Ž#GMeleeGetAllyKeyStructureCountfunction MeleeGetAllyKeyStructureCount takes player whichPlayer retuÂrns integer local integer playerIndex local player indexPlayer local integer keyStructs // Count the number of buildings controlled by all not-yet-defeated co-allies. set keyStructs = 0 set playerIndex = 0 loop set indexPlayer = Player(playerIndex) if (PlayersAreCoAllied(whichPlayer, indexPlayer)) then set keyStructs = keyStructs + GetPlayerTypedUnitCount(indexPlayer, "townhall", true, true) set keyStructs = keyStructs + GetPlayerTypedUnitCount(indexPlayer, "greathall", true, true) set keyStructs = keyStructs + GetPlayerTypedUnitCount(indexPlayer, "treeoflife", true, true) set keyStructs = keyStructs + GetPlayerTypedUnitCount(indexPlayer, "necropolis", true, true) endif set playerIndex = playerIndex + 1 exitwhen playerIndex == bj_MAX_PLAYERS endloop return keyStructs endfunction CCJ ‚Ž$+ƒdMeleeDoDrawEnumfunction MeleeDoDrawEnum takes nothing returns nothing local player thePlayer = GetEnumPlayer() call CachePlayerHeroData(thePlayer) call RemovePlayerPreserveUnitsBJ(thePlayer, PLAYER_GAME_RESULT_TIE, false) endfunctionƒ=Ž%1†RMeleeDoVictoryEnumfunction MeleeDoVictoryEnum takes nothing returns nothing local player thePlayer = GetEnumPlayer() local integer playerIndex = GetPlayerId(thePlayer) if (not bj_meleeVictoried[playerIndex]) then set bj_meleeVictoried[playerIndex] = true call CachePlayerHeroData(thePlayer) call RemovePlayerPreserveUnitsBJ(thePlayer, PLAYER_GAME_RESULT_VICTORY, false) endif endfunctionqŽ&'ƒDMeleeDoDefeatfunction MeleeDoDefeat takes player whichPlayer returns nothing set bj_meleeDefeated[GetPlayerId(whichPlayer)] = true call RemovePlayerPreserveUnitsBJ(whichPlayer, PLAYER_GAME_RESULT_DEFEAT, false) endfunction4n<aœ¢¨®´ºÀÆÌÒØÞäêðöü &,28>DJPV\bhntz€†Œ’˜ž¤ª°¶¼ÂÈÎÔÚàæìòøþ "(.<fd„|ˆ–”Ž š¬¦²¸Ä¾ŠÊÐÖÜèâîú`ZTNHB~xrl^XRLF::*********$ _Ya X~WzBB NúŽfn2m+Z#lA@?BNpHEAo:G1^lb_N>‡JˆM‰OŠS‹XŒ\^Žadh‘i’m“p”t•y–}—Ž˜ŽœŽŽ ŸŽ  Ž¡Ž¢Ž£Ž¥Ž¦ŽªŽ®Ž²Ž³Ž¸ŽºŽ»Ž¼Ž¾Ž ÀŽ!ÁŽ#ÃŽ&ÅŽ(ÆŽ*ÊŽ,ËŽ.ÌŽ/ÏŽ2ÒŽ3ÓŽ5ÔŽ8ÕŽ9׎<ÙŽ>ÞŽ?ãŽAäŽBåŽCæŽFçŽGèŽJéŽLëŽMïŽOðŽPñŽQòŽRóŽTõŽY÷Ž\ùŽ^j@j$smFgr`CZqTD‚‚ H8ôM:[FOB\OPKRXQT]\caTiSfdnUrVvWz_X~`Y AA|‚7Ž'/„HMeleeDoDefeatEnumfunction MeleeDoDefeatEnum takes nothing returns nothing local player thePlayer = GetEnumPlayer() // needs to happen before ownership change call CachePlayerHeroData(thePlayer) call MakeUnitsPassiveForTeam(thePlayer) call MeleeDoDefeat(thePlayer) endfunctionƒŽ(%…dMeleeDoLeavefunction MeleeDoLeave takes player whichPlayer returns nothing if (GetIntegerGameState(GAME_STATE_DISCONNECTED) != 0) then call GameOverDialogBJ( whichPlayer, true ) else set bj_meleeDefeated[GetPlayerId(whichPlayer)] = true call RemovePlayerPreserveUnitsBJ(whichPlayer, PLAYER_GAME_RESULT_DEFEAT, true) endif endfunction kk¥„6Ž)5ˆ@MeleeRemoveObserversfunction MeleeRemoveObservers takes nothing returns nothing local integer playerIndex local player indexPlayer // Give all observers the game over dialog set playerIndex = 0 loop set indexPlayer = Player(playerIndex) if (IsPlayerObserver(indexPlayer)) then call RemovePlayerPreserveUnitsBJ(indexPlayer, PLAYER_GAME_RESULT_NEUTRAL, false) endif set playerIndex = playerIndex + 1 exitwhen playerIndex == bj_MAX_PLAYERS endloop endfunctionŠOŽ*5”rMeleeCheckForVictorsfunction MeleeCheckForVictors takes nothing returns force local integer playerIndex local integer opponentIndex local force opponentlessPlayers = CreateForce() local boolean gameOver = false // Check to see if any players have opponents remaining. set playerIndex = 0Ç loop if (not bj_meleeDefeated[playerIndex]) then // Determine whether or not this player has any remaining opponents. set opponentIndex = 0 loop // If anyone has an opponent, noone can be victorious yet. if MeleePlayerIsOpponent(playerIndex, opponentIndex) then return CreateForce() endif set opponentIndex = opponentIndex + 1 exitwhen opponentIndex == bj_MAX_PLAYERS endloop // Keep track of each opponentless player so that we can give // them a victory later. call ForceAddPlayer(opponentlessPlayers, Player(playerIndex)) set gameOver = true endif set playerIndex = playerIndex + 1 exitwhen playerIndex == bj_MAX_PLAYERS endloop // Set the game over global flag set bj_meleeGameOver = gameOver return opponentlessPlayers endfunctionÉdPlayers = CreateForce() local force victoriousPlayers local boolean gameOver = false // If the game is already over, do nothing if (bj_meleeGameOver) then return endif // If the game was disconnected then it is over, in this case we // don't want to report results for anyone as they will most likely // conflict with the actual game results if (GetIntegerGameState(GAME_STATE_DISCONNECTED) != 0) then set bj_meleeGameOver = true return endif // Check each player to see if he or she has been defeated yet. set playerIndex = 0 loop set indexPlayer = Player(playerIndex) if (not bj_meleeDefeated[playerIndex] and not bj_meleeVictoried[playerIndex]) then //call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, 60, "Player"+I2S(playerIndex)+" has "+I2S(MeleeGetAllyStructureCount(indexPlayer))+" ally buildings.") if (MeleeGetAllyStructureCount(indexPlayer) <= 0) then // Keep track of each defeated player so that we can give // them a defeat later. call ForceAddPlayer(defeatedPlayers, Player(playerIndex)) // Set their defeated flag now so MeleeCheckForVictors // can detect victors. set bj_meleeDefeated[playerIndex] = true endif endif set playerIndex = playerIndex + 1 exitwhen playerIndex == bj_MAX_PLAYERS endloop // Now that the defeated flags are set, check if there are any victors set victoriousPlayers = MeleeCheckForVictors() // Defeat all defeated players call ForForce(defeatedPlayers, function MeleeDoDefeatEnum) // Give victory to all victorious players call ForForce(victoriousPlayers, function MeleeDoVictoryEnum) // If the game is over we should remove all observers if (bj_meleeGameOver) then call MeleeRemoveObservers() endif endfunction ¶¶‡‘AŽ+G¢DMeleeCheckForLosersAndVictorsfunction MeleeCheckForLosersAndVictors takes nothing returns nothing local integer playerIndex local player indexPlayer local force defeateÈ„uŽ,I‰*MeleeGetCrippledWarningMessagefunction MeleeGetCrippledWarningMessage takes player whichPlayer returns string local race r = GetPlayerRace(whichPlayer) if (r == RACE_HUMAN) then return GetLocalizedString("CRIPPLE_WARNING_HUMAN") elseif (r == RACE_ORC) then return GetLocalizedString("CRIPPLE_WARNING_ORC") elseif (r == RACE_NIGHTELF) then return GetLocalizedString("CRIPPLE_WARNING_NIGHTELF") elseif (r == RACE_UNDEAD) then return GetLocalizedString("CRIPPLE_WARNING_UNDEAD") else // Unrecognized Race return "" endif endfunction î„iŽ-E‰MeleeGetCrippledTimerMessagefunction MeleeGetCrippledTimerMessage takes player whichPlayer returns string local race r = GetPlayerRace(whichPlayer) if (r == RACE_HUMAN) then return GetLocalizedString("CRIPPLE_TIMER_HUMAN") elseif (r == RACE_ORC) then return GetLocalizedString("CRIPPLE_TIMER_ORC") elseif (r == RACE_NIGHTELF) then return GetLocalizedString("CRIPPLE_TIMER_NIGHTELF") elseif (r == RACE_UNDEAD) then return GetLocalizedString("CRIPPLE_TIMER_UNDEAD") else // Unrecognized Race return "" endif endfunction‚Ž.KƒZMeleeGetCrippledRevealedMessagefunction MeleeGetCrippledRevealedMessage takes player whichPlayer returns string return GetLocalizedString("CRIPPLE_REVEALING_PREFIX") + GetPlayerName(whichPlayer) + GetLocalizedString("CRIPPLE_REVEALING_POSTFIX") endfunction ïï† Ž//‹tMeleeExposePlayerfunction MeleeExposePlayer takes player whichPlayer, boolean expose returns nothing local integer playerIndex local player indexPlayer local force toExposeTo = CreateForce() call CripplePlayer( whichPlayer, toExposeTo, false ) set bj_playerIsExposed[GetPlayerId(whichPlayer)] = expose set playerIndex = 0 loop set indexPlayer = Player(playerIndex) if (not PlayersAreCoAllied(whichPlayer, indexPlayer)) then call ForceAddPlayer( toExposeTo, indexPlayer ) endif set playerIndex = playerIndex + 1 exitwhen playerIndex == bj_MAX_PLAYERS endloop call CripplePlayer( whichPlayer, toExposeTo, expose ) call DestroyForce(toExposeTo) endfunctionlayerIndex local player indexPlayer local integer playerIndex2 local player indexPlayer2 local force toExposeTo = CreateForce() set playerIndex = 0 loop set indexPlayer = Player(playerIndex) call ForceClear( toExposeTo ) call CripplePlayer( indexPlayer, toExposeTo, false ) set playerIndex2 = 0 loop set indexPlayer2 = Player(playerIndex2) if playerIndex != playerIndex2 then if (not PlayersAreCoAllied(indexPlayer, indexPlayer2)) then call ForceAddPlayer( toExposeTo, indexPlayer2 ) endif endif set playerIndex2 = playerIndex2 + 1 exitwhen playerIndex2 == bj_MAX_PLAYERS endloop call CripplePlayer( indexPlayer, toExposeTo, true ) set playerIndex = playerIndex + 1 exitwhen playerIndex == bj_MAX_PLAYERS endloop call DestroyForce( toExposeTo ) endfunction player exposedPlayer // Determine which player's timer expired. set playerIndex = 0 loop if (bj_crippledTimer[playerIndex] == expiredTimer) then exitwhen true endif set playerIndex = playerIndex + 1 exitwhen playerIndex == bj_MAX_PLAYERS endloop if (playerIndex == bj_MAX_PLAYERS) then return endif set exposedPlayer = Player(playerIndex) if (GetLocalPlayer() == exposedPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. // Hide the timer window for this player. call TimerDialogDisplay(bj_crippledTimerWindows[playerIndex], false) endif // Display a text message to all players, explaining the exposure. call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, bj_MELEE_CRIPPLE_MSG_DURATION, MeleeGetCrippledRevealedMessage(exposedPlayer)) // Expose the player. call MeleeExposePlayer(exposedPlayer, true) endfunction ;;¯tˆhŽ07‘"MeleeExposeAllPlayersfunction MeleeExposeAllPlayers takes nothing returns nothing local integer p͉9Ž1A’:MeleeCrippledPlayerTimeoutfunction MeleeCrippledPlayerTimeout takes nothing returns nothing local timer expiredTimer = GetExpiredTimer() local integer playerIndex local΃Ž27…bMeleePlayerIsCrippledfunction MeleePlayerIsCrippled takes player whichPlayer returns boolean local integer allyStructures = MeleeGetAllyStructureCount(whichPlayer) local integer allyKeyStructures = MeleeGetAllyKeyStructureCount(whichPlayer) // Dead teams are not considered to be crippled. return (allyStructures > 0) and (allyKeyStructures <= 0) endfunctionÑTimer[playerIndex], bj_MELEE_CRIPPLE_TIMEOUT, false, function MeleeCrippledPlayerTimeout) if (GetLocalPlayer() == indexPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. // Show the timer window. call TimerDialogDisplay(bj_crippledTimerWindows[playerIndex], true) // Display a warning message. call DisplayTimedTextToPlayer(indexPlayer, 0, 0, bj_MELEE_CRIPPLE_MSG_DURATION, MeleeGetCrippledWarningMessage(indexPlayer)) endif elseif (bj_playerIsCrippled[playerIndex] and not isNowCrippled) then // Player became uncrippled; stop their cripple timer. set bj_playerIsCrippled[playerIndex] = false call PauseTimer(bj_crippledTimer[playerIndex]) if (GetLocalPlayer() == indexPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. // Hide the timer window for this player. call TimerDialogDisplay(bj_crippledTimerWindows[playerIndex], false) // Display a confirmation message if the player's team is still alive. if (MeleeGetAllyStructureCount(indexPlayer) > 0) then if (bj_playerIsExposed[playerIndex]) then call DisplayTimedTextToPlayer(indexPlayer, 0, 0, bj_MELEE_CRIPPLE_MSG_DURATION, GetLocalizedString("CRIPPLE_UNREVEALED")) else call DisplayTimedTextToPlayer(indexPlayer, 0, 0, bj_MELEE_CRIPPLE_MSG_DURATION, GetLocalizedString("CRIPPLE_UNCRIPPLED")) endif endif endif // If the player granted shared vision, deny that vision now. call MeleeExposePlayer(indexPlayer, false) endif set playerIndex = playerIndex + 1 exitwhen playerIndex == bj_MAX_PLAYERS endloop endfunction ii—Ž3E­RMeleeCheckForCrippledPlayersfunction MeleeCheckForCrippledPlayers takes nothing returns nothing local integer playerIndex local player indexPlayer local force crippledPlayers = CreateForce() local boolean isNowCrippled local race indexRace // The "finish soon" exposure of all players overrides any "crippled" exposure if bj_finishSoonAllExposed then return endif // Check each player to see if he or she has been crippled or uncrippled. set playerIndex = 0 loop set indexPlayer = Player(playerIndex) set isNowCrippled = MeleePlayerIsCrippled(indexPlayer) if (not bj_playerIsCrippled[playerIndex] and isNowCrippled) then // Player became crippled; start their cripple timer. set bj_playerIsCrippled[playerIndex] = true call TimerStart(bj_crippledÐ kk„!Ž41ˆMeleeCheckLostUnitfunction MeleeCheckLostUnit takes unit lostUnit returns nothing local player lostUnitOwner = GetOwningPlayer(lostUnit) // We only need to check for mortality if this was the last building. if (GetPlayerStructureCount(lostUnitOwner, true) <= 0) then call MeleeCheckForLosersAndVictors() endif // Check if the lost unit has crippled or uncrippled the player. // (A team with 0 units is dead, and thus considered uncrippled.) call MeleeCheckForCrippledPlayers() endfunction‚lŽ53….MeleeCheckAddedUnitfunction MeleeCheckAddedUnit takes unit addedUnit returns nothing local player addedUnitOwner = GetOwningPlayer(addedUnit) // If the player was crippled, this unit may have uncrippled him/her. if (bj_playerIsCrippled[GetPlayerId(addedUnitOwner)]) then call MeleeCheckForCrippledPlayers() endif endfunction G84Ž6O‚"MeleeTriggerActionConstructCancelfunction MeleeTriggerActionConstructCancel takes nothing returns nothing call MeleeCheckLostUnit(GetCancelledStructure()) endfunctionmŽ7Cƒ MeleeTriggerActionUnitDeathfunction MeleeTriggerActionUnitDeath takes nothing returns nothing if (IsUnitType(GetDyingUnit(), UNIT_TYPE_STRUCTURE)) then call MeleeCheckLostUnit(GetDyingUnit()) endif endfunctionDŽ8[‚6MeleeTriggerActionUnitConstructionStartfunction MeleeTriggerActionUnitConstructionStart takes nothing returns nothing call MeleeCheckAddedUnit(GetConstructingStructure()) endfunction gg‡Ž9MfMeleeTriggerActionPlayerDefeatedfunction MeleeTriggerActionPlayerDefeated takes nothing returns nothing local player thePlayer = GetTriggerPlayer() call CachePlayerHeroData(thePlayer) if (MeleeGetAllyCount(thePlayer) > 0) then // If at least one ally is still alive and kicking, share units with // them and proceed with death. call ShareEverythingWithTeam(thePlayer) if (not bj_meleeDefeated[GetPlayerId(thePlayer)]) then call MeleeDoDefeat(thePlayer) endif else // If no living allies remain, swap all units and buildings over to // neutral_passive and proceed with death. call MakeUnitsPassiveForTeam(thePlayer) if (not bj_meleeDefeated[GetPlayerId(thePlayer)]) then call MeleeDoDefeat(thePlayer) endif endif call MeleeCheckForLosersAndVictors() endfunction local player thePlayer = GetTriggerPlayer() // Just show game over for observers when they leave if (IsPlayerObserver(thePlayer)) then call RemovePlayerPreserveUnitsBJ(thePlayer, PLAYER_GAME_RESULT_NEUTRAL, false) return endif call CachePlayerHeroData(thePlayer) // This is the same as defeat except the player generates the message // "player left the game" as opposed to "player was defeated". if (MeleeGetAllyCount(thePlayer) > 0) then // If at least one ally is still alive and kicking, share units with // them and proceed with death. call ShareEverythingWithTeam(thePlayer) call MeleeDoLeave(thePlayer) else // If no living allies remain, swap all units and buildings over to // neutral_passive and proceed with death. call MakeUnitsPassiveForTeam(thePlayer) call MeleeDoLeave(thePlayer) endif call MeleeCheckForLosersAndVictors() endfunction ðÈSŽ:EjMeleeTriggerActionPlayerLeftfunction MeleeTriggerActionPlayerLeft takes nothing returns nothing ÖOŽ;M‚ZMeleeTriggerActionAllianceChangefunction MeleeTriggerActionAllianceChange takes nothing returns nothing call MeleeCheckForLosersAndVictors() call MeleeCheckForCrippledPlayers() endfunctionŒ1Ž<M˜MeleeTriggerTournamentFinishSoonfunction MeleeTriggerTournamentFinishSoon takes nothing returns nothing // Note: We may get this trigger multiple times local integer playerIndex local player indexPlayer local real timeRemaining = GetTournamentFinishSoonTimeRemaining() if not bj_finishSoonAllExposed then set bj_finishSoonAllExposed = true // Reset all crippled players and their timers, and hide the local crippled timer dialog set playerIndex = 0 loop set indexPlayeØr = Player(playerIndex) if bj_playerIsCrippled[playerIndex] then // Uncripple the player set bj_playerIsCrippled[playerIndex] = false call PauseTimer(bj_crippledTimer[playerIndex]) if (GetLocalPlayer() == indexPlayer) then // Use only local code (no net traffic) within this block to avoid desyncs. // Hide the timer window. call TimerDialogDisplay(bj_crippledTimerWindows[playerIndex], false) endif endif set playerIndex = playerIndex + 1 exitwhen playerIndex == bj_MAX_PLAYERS endloop // Expose all players call MeleeExposeAllPlayers() endif // Show the "finish soon" timer dialog and set the real time remaining call TimerDialogDisplay(bj_finishSoonTimerDialog, true) call TimerDialogSetRealTimeRemaining(bj_finishSoonTimerDialog, timeRemaining) endfunction ‘ƒ Ž=1…pMeleeWasUserPlayerfunction MeleeWasUserPlayer takes player whichPlayer returns boolean local playerslotstate slotState if (GetPlayerController(whichPlayer) != MAP_CONTROL_USER) then return false endif set slotState = GetPlayerSlotState(whichPlayer) return (slotState == PLAYER_SLOT_STATE_PLAYING or slotState == PLAYER_SLOT_STATE_LEFT) endfunctionŸkŽ>G¿MeleeTournamentFinishNowRuleAfunction MeleeTournamentFinishNowRuleA takes integer multiplier retuÚÛrns nothing local integer array playerScore local integer array teamScore local force array teamForce local integer teamCount local integer index local player indexPlayer local integer index2 local player indexPlayer2 local integer bestTeam local integer bestScore local boolean draw // Compute individual player scores set index = 0 loop set indexPlayer = Player(index) if MeleeWasUserPlayer(indexPlayer) then set playerScore[index] = GetTournamentScore(indexPlayer) if playerScore[index] <= 0 then set playerScore[index] = 1 endif else set playerScore[index] = 0 endif set index = index + 1 exitwhen index == bj_MAX_PLAYERS endloop // Compute team scores and team forces set teamCount = 0 set index = 0 loop if playerScore[index] != 0 Üthen set indexPlayer = Player(index) set teamScore[teamCount] = 0 set teamForce[teamCount] = CreateForce() set index2 = index loop if playerScore[index2] != 0 then set indexPlayer2 = Player(index2) if PlayersAreCoAllied(indexPlayer, indexPlayer2) then set teamScore[teamCount] = teamScore[teamCount] + playerScore[index2] call ForceAddPlayer(teamForce[teamCount], indexPlayer2) set playerScore[index2] = 0 endif endif set index2 = index2 + 1 exitwhen index2 == bj_MAX_PLAYERS endloop set teamCount = teamCount + 1 endif set index = index + 1 exitwhen index == bj_MAX_PLAYERS endloop // The game is now over set bj_meleeGameOver = true // There should always beÝ at least one team, but continue to work if not if teamCount != 0 then // Find best team score set bestTeam = -1 set bestScore = -1 set index = 0 loop if teamScore[index] > bestScore then set bestTeam = index set bestScore = teamScore[index] endif set index = index + 1 exitwhen index == teamCount endloop // Check whether the best team's score is 'multiplier' times better than // every other team. In the case of multiplier == 1 and exactly equal team // scores, the first team (which was randomly chosen by the server) will win. set draw = false set index = 0 loop if index != bestTeam then if bestScore < (multiplier * teamScore[index]) then set draw = true endif endif set index = index + 1 exitwhen index == teamCount endloop if draw then // Give draw to all players on all teams set index = 0 loop call ForForce(teamForce[index], function MeleeDoDrawEnum) set index = index + 1 exitwhen index == teamCount endloop else // Give defeat to all players on teams other than the best team set index = 0 loop if index != bestTeam then call ForForce(teamForce[index], function MeleeDoDefeatEnum) endif set index = index + 1 exitwhen index == teamCount endloop // Give victory to all players on the best team call ForForce(teamForce[bestTeam], function MeleeDoVictoryEnum) endif endif endfunction ¸¸„DŽ?KˆFMeleeTriggerTournamentFinishNowfunction MeleeTriggerTournamentFinishNow takes nothing returns nothing local integer rule = GetTournamentFinishNowRule() // If the game is already over, do nothing if bj_meleeGameOver then return endif if (rule == 1) then // Finals games call MeleeTournamentFinishNowRuleA(1) else // Preliminary games call MeleeTournamentFinishNowRuleA(3) endif // Since the game is over we should remove all observers call MeleeRemoveObservers() endfunctionàfinish soon" game event set trig = CreateTrigger() call TriggerRegisterGameEvent(trig, EVENT_GAME_TOURNAMENT_FINISH_SOON) call TriggerAddAction(trig, function MeleeTriggerTournamentFinishSoon) // Set a trigger to fire when we receive a "finish now" game event set trig = CreateTrigger() call TriggerRegisterGameEvent(trig, EVENT_GAME_TOURNAMENT_FINISH_NOW) call TriggerAddAction(trig, function MeleeTriggerTournamentFinishNow) // Set up each player's mortality code. set index = 0 loop set indexPlayer = Player(index) // Make sure this player slot is playing. if (GetPlayerSlotState(indexPlayer) == PLAYER_SLOT_STATE_PLAYING) then set bj_meleeDefeated[index] = false set bj_meleeVictoried[index] = false // Create a timer and timer window in case the player is crippled. set bj_playerIsCrippled[index] = false set bj_playerIsExposed[index] = false set bj_cráippledTimer[index] = CreateTimer() set bj_crippledTimerWindows[index] = CreateTimerDialog(bj_crippledTimer[index]) call TimerDialogSetTitle(bj_crippledTimerWindows[index], MeleeGetCrippledTimerMessage(indexPlayer)) // Set a trigger to fire whenever a building is cancelled for this player. set trig = CreateTrigger() call TriggerRegisterPlayerUnitEvent(trig, indexPlayer, EVENT_PLAYER_UNIT_CONSTRUCT_CANCEL, null) call TriggerAddAction(trig, function MeleeTriggerActionConstructCancel) // Set a trigger to fire whenever a unit dies for this player. set trig = CreateTrigger() call TriggerRegisterPlayerUnitEvent(trig, indexPlayer, EVENT_PLAYER_UNIT_DEATH, null) call TriggerAddAction(trig, function MeleeTriggerActionUnitDeath) // Set a trigger to fire whenever a unit begins construction for this player set trig = CreateTrigger() call TriggerRâegisterPlayerUnitEvent(trig, indexPlayer, EVENT_PLAYER_UNIT_CONSTRUCT_START, null) call TriggerAddAction(trig, function MeleeTriggerActionUnitConstructionStart) // Set a trigger to fire whenever this player defeats-out set trig = CreateTrigger() call TriggerRegisterPlayerEvent(trig, indexPlayer, EVENT_PLAYER_DEFEAT) call TriggerAddAction(trig, function MeleeTriggerActionPlayerDefeated) // Set a trigger to fire whenever this player leaves set trig = CreateTrigger() call TriggerRegisterPlayerEvent(trig, indexPlayer, EVENT_PLAYER_LEAVE) call TriggerAddAction(trig, function MeleeTriggerActionPlayerLeft) // Set a trigger to fire whenever this player changes his/her alliances. set trig = CreateTrigger() call TriggerRegisterPlayerAllianceChange(trig, indexPlayer, ALLIANCE_PASSIVE) call TriggerRegisterPlayerStateEvent(trig, indexPlayer, PLAYER_STATE_ALLIED_VICTORY, EQUAL, 1) call TriggerAddAction(trig, function MeleeTriggerActionAllianceChange) else set bj_meleeDefeated[index] = true set bj_meleeVictoried[index] = false // Handle leave events for observers if (IsPlayerObserver(indexPlayer)) then // Set a trigger to fire whenever this player leaves set trig = CreateTrigger() call TriggerRegisterPlayerEvent(trig, indexPlayer, EVENT_PLAYER_LEAVE) call TriggerAddAction(trig, function MeleeTriggerActionPlayerLeft) endif endif set index = index + 1 exitwhen index == bj_MAX_PLAYERS endloop // Test for victory / defeat at startup, in case the user has already won / lost. // Allow for a short time to pass first, so that the map can finish loading. call TimerStart(CreateTimer(), 2.0, false, function MeleeTriggerActionAllianceChange) endfunction BB£?Ž@9ÆNMeleeInitVictoryDefeatfunction MeleeInitVictoryDefeat takes nothing returns nothing local trigger trig local integer index local player indexPlayer // Create a timer window for the "finish soon" timeout period, it has no timer // because it is driven by real time (outside of the game state to avoid desyncs) set bj_finishSoonTimerDialog = CreateTimerDialog(null) // Set a trigger to fire when we receive a "߃cŽAK‡CheckInitPlayerSlotAvailabilityfunction CheckInitPlayerSlotAvailability takes nothing returns nothing local integer index if (not bj_slotControlReady) then set index = 0 loop set bj_slotControlUsed[index] = false set bj_slotControl[index] = MAP_CONTROL_USER set index = index + 1 exitwhen index == bj_MAX_PLAYERS endloop set bj_slotControlReady = true endif endfunction ®®‚NŽB9„lSetPlayerSlotAvailablefunction SetPlayerSlotAvailable takes player whichPlayer, mapcontrol control returns nothing local integer playerIndex = GetPlayerId(whichPlayer) call CheckInitPlayerSlotAvailability() set bj_slotControlUsed[playerIndex] = true set bj_slotControl[playerIndex] = control endfunction RR…*ŽC3Š*TeamInitPlayerSlotsfunction TeamInitPlayerSlots takes integer teamCount returns nothing local integer index local player indexPlayer local integer team call SetTeams(teamCount) call CheckInitPlayerSlotAvailability() set index = 0 set team = 0 loop if (bj_slotControlUsed[index]) then set indexPlayer = Player(index) call SetPlayerTeam( indexPlayer, team ) set team = team + 1 if (team >= teamCount) then set team = 0 endif endif set index = index + 1 exitwhen index == bj_MAX_PLAYERS endloop endfunction ööŒŽD5xMeleeInitPlayerSlotsfunction MeleeInitPlayerSlots takes nothing returns nothing call TeamInitPlayerSlots(bj_MAX_PLAYERS) endfunctionŽE1tFFAInitPlayerSlotsfunction FFAInitPlayerSlots takes nothing returns nothing call TeamInitPlayerSlots(bj_MAX_PLAYERS) endfunction^ŽF;ƒ OneOnOneInitPlayerSlotsfunction OneOnOneInitPlayerSlots takes nothing returns nothing // Limit the game to 2 players. call SetTeams(2) call SetPlayers(2) call TeamInitPlayerSlots(2) endfunction ²²†JŽG9ŒdInitGenericPlayerSlotsfunction InitGenericPlayerSlots takes nothing returns nothing local gametype gType = GetGameTypeSelected() if (gType == GAME_TYPE_MELEE) then call MeleeInitPlayerSlots() elseif (gType == GAME_TYPE_FFA) then call FFAInitPlayerSlots() elseif (gType == GAME_TYPE_USE_MAP_SETTINGS) then // Do nothing; the map-specific script handles this. elseif (gType == GAME_TYPE_ONE_ON_ONE) then call OneOnOneInitPlayerSlots() elseif (gType == GAME_TYPE_TWO_TEAM_PLAY) then call TeamInitPlayerSlots(2) elseif (gType == GAME_TYPE_THREE_TEAM_PLAY) then call TeamInitPlayerSlots(3) elseif (gType == GAME_TYPE_FOUR_TEAM_PLAY) then call TeamInitPlayerSlots(4) else // Unrecognized Game Type endif endfunction ¼p0ŽH-‚<SetDNCSoundsDawnfunction SetDNCSoundsDawn takes nothing returns nothing if bj_useDawnDuskSounds then call StartSound(bj_dawnSound) endif endfunction0ŽI-‚<SetDNCSoundsDuskfunction SetDNCSoundsDusk takes nothing returns nothing if bj_useDawnDuskSounds then call StartSound(bj_duskSound) endif endfunctionƒ ŽJ+…vSetDNCSoundsDayfunction SetDNCSoundsDay takes nothing returns nothing local real ToD = GetTimeOfDay() if (ToD >= bj_TOD_DAWN and ToD < bj_TOD_DUSK) and not bj_dncIsDaytime then set bj_dncIsDaytime = true // change ambient sounds call StopSound(bj_nightAmbientSound, false, true) call StartSound(bj_dayAmbientSound) endif endfunction ¨ƒ ŽK/…rSetDNCSoundsNightfunction SetDNCSoundsNight takes nothing returns nothing local real ToD = GetTimeOfDay() if (ToD < bj_TOD_DAWN or ToD >= bj_TOD_DUSK) and bj_dncIsDaytime then set bj_dncIsDaytime = false // change ambient sounds call StopSound(bj_dayAmbientSound, false, true) call StartSound(bj_nightAmbientSound) endif endfunctionŒLŽL'˜zInitDNCSoundsfunction InitDNCSounds takes nothing returns nothing // Create sounds to be played at dawn and dusk. set bj_dawnSound = CreateSoundFromLabel("RoosterSound", false, false, false, 10000, 10000) set bj_duskSound = CreateSoundFromLabel("WolfSound", false, false, false, 10000, 10000) // Set up triggers to respond to dawn and dusk. set bj_dncSoundsDawn = CreateTrigger() call TriggerRegisterGameStateEvent(bj_dncSoundsDawn, GAME_STATE_TIME_OF_DAY, EQUAL, bj_TOD_DAWN) call TriggerAddAction(bj_dncSoundsDawn, function SetDNCSoundsDawn) ê set bj_dncSoundsDusk = CreateTrigger() call TriggerRegisterGameStateEvent(bj_dncSoundsDusk, GAME_STATE_TIME_OF_DAY, EQUAL, bj_TOD_DUSK) call TriggerAddAction(bj_dncSoundsDusk, function SetDNCSoundsDusk) // Set up triggers to respond to changes from day to night or vice-versa. set bj_dncSoundsDay = CreateTrigger() call TriggerRegisterGameStateEvent(bj_dncSoundsDay, GAME_STATE_TIME_OF_DAY, GREATER_THAN_OR_EQUAL, bj_TOD_DAWN) call TriggerRegisterGameStateEvent(bj_dncSoundsDay, GAME_STATE_TIME_OF_DAY, LESS_THAN, bj_TOD_DUSK) call TriggerAddAction(bj_dncSoundsDay, function SetDNCSoundsDay) set bj_dncSoundsNight = CreateTrigger() call TriggerRegisterGameStateEvent(bj_dncSoundsNight, GAME_STATE_TIME_OF_DAY, LESS_THAN, bj_TOD_DAWN) call TriggerRegisterGameStateEvent(bj_dncSoundsNight, GAME_STATE_TIME_OF_DAY, GREATER_THAN_OR_EQUAL, bj_TOD_DUSK) call TriggerAddAction(bj_dncSoundsNight, function SetDNCSoundsNight) endfunction 22:ŽM3ºJInitBlizzardGlobalsfunction InitBlizzardGlobals takes nothing returns nothing local integer index local integer userControlledPlayers local version v // Init filter function vars set filterIssueHauntOrderAtLocBJ = Filter(function IssueHauntOrderAtLocBJFilter) set filterEnumDestructablesInCircleBJ = Filter(function EnumDestructablesInCircleBJFilter) set filterGetUnitsInRectOfPlayer = Filter(function GetUnitsInRectOfPlayerFilter) set filterGetUnitsOfTypeIdAll = Filter(function GetUnitsOfTypeIdAllFilter) set filterGetUnitsOfPlayerAndTypeId = Filter(function GetUnitsOfPlayerAndTypeIdFilter) set filterMeleeTrainedUnitIsHeroBJ = Filter(function MeleeìíTrainedUnitIsHeroBJFilter) set filterLivingPlayerUnitsOfTypeId = Filter(function LivingPlayerUnitsOfTypeIdFilter) // Init force presets set index = 0 loop exitwhen index == bj_MAX_PLAYER_SLOTS set bj_FORCE_PLAYER[index] = CreateForce() call ForceAddPlayer(bj_FORCE_PLAYER[index], Player(index)) set index = index + 1 endloop set bj_FORCE_ALL_PLAYERS = CreateForce() call ForceEnumPlayers(bj_FORCE_ALL_PLAYERS, null) // Init Cinematic Mode history set bj_cineModePriorSpeed = GetGameSpeed() set bj_cineModePriorFogSetting = IsFogEnabled() set bj_cineModePriorMaskSetting = IsFogMaskEnabled() // Init Trigger Queue set index = 0 loop exitwhen index >= bj_MAX_QUEUED_TRIGGERS set bj_queuedExecTriggers[index] = null set bj_queuedExecUseConds[index] = false set index = index + 1 endloop // Init singleplayer check set bj_isSinglePlayer = false set useîrControlledPlayers = 0 set index = 0 loop exitwhen index >= bj_MAX_PLAYERS if (GetPlayerController(Player(index)) == MAP_CONTROL_USER and GetPlayerSlotState(Player(index)) == PLAYER_SLOT_STATE_PLAYING) then set userControlledPlayers = userControlledPlayers + 1 endif set index = index + 1 endloop set bj_isSinglePlayer = (userControlledPlayers == 1) // Init sounds //set bj_pingMinimapSound = CreateSoundFromLabel("AutoCastButtonClick", false, false, false, 10000, 10000) set bj_rescueSound = CreateSoundFromLabel("Rescue", false, false, false, 10000, 10000) set bj_questDiscoveredSound = CreateSoundFromLabel("QuestNew", false, false, false, 10000, 10000) set bj_questUpdatedSound = CreateSoundFromLabel("QuestUpdate", false, false, false, 10000, 10000) set bj_questCompletedSound = CreateSoundFromLabel("QuestCompleted", false, false, false, 10000, 10000) set bj_questFailedSound = CreateSoundFromLabel("QuestFailed", false, false, false, 10000, 10000) set bj_questHintSound = CreateSoundFromLabel("Hint", false, false, false, 10000, 10000) set bj_questSecretSound = CreateSoundFromLabel("SecretFound", false, false, false, 10000, 10000) set bj_questItemAcquiredSound = CreateSoundFromLabel("ItemReward", false, false, false, 10000, 10000) set bj_questWarningSound = CreateSoundFromLabel("Warning", false, false, false, 10000, 10000) set bj_victoryDialogSound = CreateSoundFromLabel("QuestCompleted", false, false, false, 10000, 10000) set bj_defeatDialogSound = CreateSoundFromLabel("QuestFailed", false, false, false, 10000, 10000) // Init corpse creation triggers. call DelayedSuspendDecayCreate() // Init version-specific data set v = VersionGet() if (v == VERSION_REIGN_OF_CHAOS) then set bj_MELEE_MAX_TWINKED_HEROES = bj_MELEE_MAX_TWINKED_HEROES_V0 else set bj_MELEE_MAX_TWINKED_HEROES = bj_MELEE_MAX_TWINKED_HEROES_V1 endif endfunction M‚:ŽN1„LInitQueuedTriggersfunction InitQueuedTriggers takes nothing returns nothing set bj_queuedExecTimeout = CreateTrigger() call TriggerRegisterTimerExpireEvent(bj_queuedExecTimeout, bj_queuedExecTimeoutTimer) call TriggerAddAction(bj_queuedExecTimeout, function QueuedTriggerDoneBJ) endfunctionƒ/ŽO%†BInitMapRectsfunction InitMapRects takes nothing returns nothing set bj_mapInitialPlayableArea = Rect(GetCameraBoundMinX()-GetCameraMargin(CAMERA_MARGIN_LEFT), GetCameraBoundMinY()-GetCameraMargin(CAMERA_MARGIN_BOTTOM), GetCameraBoundMaxX()+GetCameraMargin(CAMERA_MARGIN_RIGHT), GetCameraBoundMaxY()+GetCameraMargin(CAMERA_MARGIN_TOP)) set bj_mapInitialCameraBounds = GetCurrentCameraBoundsMapRectBJ() endfunction ””†hŽP1(InitSummonableCapsfunction InitSummonableCaps takes nothing returns nothing local integer index set index = 0 loop // upgraded units // Note: Only do this if the corresponding upgrade is not yet researched // Barrage - Siege Engines if (not GetPlayerTechResearched(Player(index), 'Rhrt', true)) then call SetPlayerTechMaxAllowed(Player(index), 'hrtt', 0) endif // Berserker Upgrade - Troll Berserkers if (not GetPlayerTechResearched(Player(index), 'Robk', true)) then call SetPlayerTechMaxAllowed(Player(index), 'otbk', 0) endif // max skeletons per player call SetPlayerTechMaxAllowed(Player(index), 'uske', bj_MAX_SKELETONS) set index = index + 1 exitwhen index == bj_MAX_PLAYERS endloop endfunction vv…ŽQ;‰ZUpdateStockAvailabilityfunction UpdateStockAvailability takes item whichItem returns nothing local itemtype iType = GetItemType(whichItem) local integer iLevel = GetItemLevel(whichItem) // Update allowed type/level combinations. if (iType == ITEM_TYPE_PERMANENT) then set bj_stockAllowedPermanent[iLevel] = true elseif (iType == ITEM_TYPE_CHARGED) then set bj_stockAllowedCharged[iLevel] = true elseif (iType == ITEM_TYPE_ARTIFACT) then set bj_stockAllowedArtifact[iLevel] = true else // Not interested in this item type - ignore the item. endif endfunction MM…/ŽRCŠ$UpdateEachStockBuildingEnumfunction UpdateEachStockBuildingEnum takes nothing returns nothing local integer iteration = 0 local integer pickedItemId loop set pickedItemId = ChooseRandomItemEx(bj_stockPickedItemType, bj_stockPickedItemLevel) exitwhen IsItemIdSellable(pickedItemId) // If we get hung up on an entire class/level combo of unsellable // items, or a very unlucky series of random numbers, give up. set iteration = iteration + 1 if (iteration > bj_STOCK_MAX_ITERATIONS) then return endif endloop call AddItemToStock(GetEnumUnit(), pickedItemId, 1, 1) endfunction ¬ƒŽS;…rUpdateEachStockBuildingfunction UpdateEachStockBuilding takes itemtype iType, integer iLevel returns nothing local group g set bj_stockPickedItemType = iType set bj_stockPickedItemLevel = iLevel set g = CreateGroup() call GroupEnumUnitsOfType(g, "marketplace", null) call ForGroup(g, function UpdateEachStockBuildingEnum) call DestroyGroup(g) endfunctionŒHŽT3˜fPerformStockUpdatesfunction PerformStockUpdates takes nothing returns nothing local integer pickedItemId local itemtype pickedItemType local integer pickedItemLevel = 0 local integer allowedCombinations = 0 local integer iLevel // Give each type/level combination a chance of being picked. set iLevel = 1 loop if (bj_stockAllowedPermanent[iLevel]) then set allowedCombinations = allowedCombinations + 1 if (GetRandomInt(1, allowedCombinations) == 1) then set pickedItemType = ITEM_TYPôE_PERMANENT set pickedItemLevel = iLevel endif endif if (bj_stockAllowedCharged[iLevel]) then set allowedCombinations = allowedCombinations + 1 if (GetRandomInt(1, allowedCombinations) == 1) then set pickedItemType = ITEM_TYPE_CHARGED set pickedItemLevel = iLevel endif endif if (bj_stockAllowedArtifact[iLevel]) then set allowedCombinations = allowedCombinations + 1 if (GetRandomInt(1, allowedCombinations) == 1) then set pickedItemType = ITEM_TYPE_ARTIFACT set pickedItemLevel = iLevel endif endif set iLevel = iLevel + 1 exitwhen iLevel > bj_MAX_ITEM_LEVEL endloop // Make sure we found a valid item type to add. if (allowedCombinations == 0) then return endif call UpdateEachStockBuilding(pickedItemType, pickedItemLevel) endfunction TT?ób gŽU/ƒ(StartStockUpdatesfunction StartStockUpdates takes nothing returns nothing call PerformStockUpdates() call TimerStart(bj_stockUpdateTimer, bj_STOCK_RESTOCK_INTERVAL, true, function PerformStockUpdates) endfunction0ŽV3‚6RemovePurchasedItemfunction RemovePurchasedItem takes nothing returns nothing call RemoveItemFromStock(GetSellingUnit(), GetItemTypeId(GetSoldItem())) endfunctionˆRŽW5xInitNeutralBuildingsfunction InitNeutralBuildings takes nothing returns nothing local integeö%ŽX+‚(MarkGameStartedfunction MarkGameStarted takes nothing returns nothing set bj_gameStarted = true call DestroyTimer(bj_gameStartedTimer) endfunctionqŽY/ƒ<DetectGameStartedfunction DetectGameStarted takes nothing returns nothing set bj_gameStartedTimer = CreateTimer() call TimerStart(bj_gameStartedTimer, bj_GAME_STARTED_THRESHOLD, false, function MarkGameStarted) endfunctionr iLevel // Chart of allowed stock items. set iLevel = 0 loop set bj_stockAllowedPermanent[iLevel] = false set bj_stockAllowedCharged[iLevel] = false set bj_stockAllowedArtifact[iLevel] = false set iLevel = iLevel + 1 exitwhen iLevel > bj_MAX_ITEM_LEVEL endloop // Limit stock inventory slots. call SetAllItemTypeSlots(bj_MAX_STOCK_ITEM_SLOTS) call SetAllUnitTypeSlots(bj_MAX_STOCK_UNIT_SLOTS) // Arrange the first update. set bj_stockUpdateTimer = CreateTimer() call TimerStart(bj_stockUpdateTimer, bj_STOCK_RESTOCK_INITIAL_DELAY, false, function StartStockUpdates) // Set up a trigger to fire whenever an item is sold. set bj_stockItemPurchased = CreateTrigger() call TriggerRegisterPlayerUnitEvent(bj_stockItemPurchased, Player(PLAYER_NEUTRAL_PASSIVE), EVENT_PLAYER_UNIT_SELL_ITEM, null) call TriggerAddAction(bj_stockItemPurchased, function RemovePurchasedItem) endfunction 88sî„7ŽZ%ˆRInitBlizzardfunction InitBlizzard takes nothing returns nothing // Set up the Neutral Victim player slot, to torture the abandoned units // of defeated players. Since some triggers expect this player slot to // exist, this is performed for all maps. call ConfigureNeutralVictim() call InitBlizzardGlobals() call InitQueuedTriggers() call InitRescuableBehaviorBJ() call InitDNCSounds() call InitMapRects() call InitSummonableCaps() call InitNeutralBuildings() call DetectGameStarted() endfunctionxŽ[+NRandomDistResetfunction RandomDistReset takes nothing returns nothing set bj_randDistCount = 0 endfunction‚Ž\/ƒvRandomDistAddItemfunction RandomDistAddItem takes integer inID, integer inChance returns nothing set bj_randDistID[bj_randDistCount] = inID set bj_randDistChance[bj_randDistCount] = inChance set bj_randDistCount = bj_randDistCount + 1 endfunction0 local integer chance = 0 local integer index local integer foundID = -1 local boolean done // No items? if (bj_randDistCount == 0) then return -1 endif // Find sum of all chances set index = 0 loop set sum = sum + bj_randDistChance[index] set index = index + 1 exitwhen index == bj_randDistCount endloop // Choose random number within the total range set chance = GetRandomInt(1, sum) // Find ID which corresponds to this chance set index = 0 set sum = 0 set done = false loop set sum = sum + bj_randDistChance[index] if (chance <= sum) then set foundID = bj_randDistID[index] set done = true endif set index = index + 1 if (index == bj_randDistCount) then set done = true endif exitwhen done == true endloop return foundID endfunction ååTˆKŽ]-rRandomDistChoosefunction RandomDistChoose takes nothing returns integer local integer sum = ø…(Ž^%Š4UnitDropItemfunction UnitDropItem takes unit inUnit, integer inItemID returns item local real x local real y local real radius = 32 local real unitX local real unitY local item droppedItem if (inItemID == -1) then return null endif set unitX = GetUnitX(inUnit) set unitY = GetUnitY(inUnit) set x = GetRandomReal(unitX - radius, unitX + radius) set y = GetRandomReal(unitY - radius, unitY + radius) set droppedItem = CreateItem(inItemID, x, y) call SetItemDropID(droppedItem, GetUnitTypeId(inUnit)) call UpdateStockAvailability(droppedItem) return droppedItem endfunction nPPnv–‚G„Ž_)ˆWidgetDropItemfunction WidgetDropItem takes widget inWidget, integer inItemID returns item local real x local real y „Ž_)ˆWidgetDropItemfunction WidgetDropItem takes widget inWidget, integer inItemID returns item local real x local real y local real radius = 32 local real widgetX local real widgetY if (inItemID == -1) then return null endif set widgetX = GetWidgetX(inWidget) set widgetY = GetWidgetY(inWidget) set x = GetRandomReal(widgetX - radius, widgetX + radius) set y = GetRandomReal(widgetY - radius, widgetY + radius) return CreateItem(inItemID, x, y) endfunction’CzLûöñìçâÝØÓÎÉľ¸²¬¦ š”Žˆ‚|vpjd^XRLF@:4.(" þøòìæàÚÔÎȼ¶°ª¤ž˜’Œ†€z>…U=…H<…:;…,:…9…8…7„y6„k5„b4„X3„N2„D1„:0„0/„&.„-„,„+ƒu*ƒi)ƒ](ƒR'ƒD&ƒ7%ƒ)$ƒ#ƒ"ƒ!‚} ‚q‚f‚Y‚O‚G‚>‚4‚+‚!‚‚‚~vlbXOE ; 2 )   ~rg^ULC8ÿ-þ#ýü BBh‹Ì\­SªX­$EFALSEconstant boolean FALSE=false!ATRUEconstant boolean TRUE=true?3_JASS_MAX_ARRAY_SIZEconstant integer JASS_MAX_ARRAY_SIZE=8192C9aPLAYER_NEUTRAL_PASSIVEconstant integer PLAYER_NEUTRAL_PASSIVE=15I?gPLAYER_NEUTRAL_AGGRESSIVEconstant integer PLAYER_NEUTRAL_AGGRESSIVE=12O-PLAYER_COLOR_REDconstant playercolor PLAYER_COLOR_RED=ConvertPlayerColor(0)Q/PLAYER_COLOR_BLUEconstant playercolor PLAYER_COLOR_BLUE=ConvertPlayerColor(1)Q/PLAYER_COLOR_CYANconstant playercolor PLAYER_COLOR_CYAN=ConvertPlayerColor(2)U 3 PLAYER_COLOR_PURPLEconstant playercolor PLAYER_COLOR_PURPLE=ConvertPlayerColor(3)U 3 PLAYER_COLOR_YELLOWconstant playercolor PLAYER_COLOR_YELLOW=ConvertPlayerColor(4)U 3 PLAYER_COLOR_ORANGEconstant playercolor PLAYER_COLOR_ORANGE=ConvertPlayerColor(5)S 1PLAYER_COLOR_GREENconstant playercolor PLAYER_COLOR_GREEN=ConvertPlayerColor(6)Q /PLAYER_COLOR_PINKconstant playercolor PLAYER_COLOR_PINK=ConvertPlayerColor(7) ttÓ2†ÜD|¸î$“];PLAYER_COLOR_LIGHT_GRAYconstant playercolor PLAYER_COLOR_LIGHT_GRAY=ConvertPlayerColor(8)];PLAYER_COLOR_LIGHT_BLUEconstant playercolor PLAYER_COLOR_LIGHT_BLUE=ConvertPlayerColor(9)R/PLAYER_COLOR_AQUAconstant playercolor PLAYER_COLOR_AQUA=ConvertPlayerColor(10)T1 PLAYER_COLOR_BROWNconstant playercolor PLAYER_COLOR_BROWN=ConvertPlayerColor(11)4![RACE_HUMANconstant race RACE_HUMAN=ConvertRace(1)0WRACE_ORCconstant race RACE_ORC=ConvertRace(2)6#]RACE_UNDEADconstant race RACE_UNDEAD=ConvertRace(3):'aRACE_NIGHTELFconstant race RACE_NIGHTELF=ConvertRace(4)4![RACE_DEMONconstant race RACE_DEMON=ConvertRace(5)4![RACE_OTHERconstant race RACE_OTHER=ConvertRace(7)mA+PLAYER_GAME_RESULT_VICTORYconstant playergameresult PLAYER_GAME_RESULT_VICTORY=ConvertPlayerGameResult(0)k?)PLAYER_GAME_RESULT_DEFEATconstant playergameresult PLAYER_GAME_RESULT_DEFEAT=ConvertPlayerGameResult(1) 22™[¸nÍ,e9#PLAYER_GAME_RESULT_TIEconstant playergameresult PLAYER_GAME_RESULT_TIE=ConvertPlayerGameResult(2)mA+PLAYER_GAME_RESULT_NEUTRALconstant playergameresult PLAYER_GAME_RESULT_NEUTRAL=ConvertPlayerGameResult(3)Q-ALLIANCE_PASSIVEconstant alliancetype ALLIANCE_PASSIVE=ConvertAllianceType(0)[7ALLIANCE_HELP_REQUESTconstant alliancetype ALLIANCE_HELP_REQUEST=ConvertAllianceType(1)]9ALLIANCE_HELP_RESPONSEconstant alliancetype ALLIANCE_HELP_RESPONSE=ConvertAllianceType(2)U1 ALLIANCE_SHARED_XPconstant alliancetype ALLIANCE_SHARED_XP=ConvertAllianceType(3)] 9ALLIANCE_SHARED_SPELLSconstant alliancetype ALLIANCE_SHARED_SPELLS=ConvertAllianceType(4)]!9ALLIANCE_SHARED_VISIONconstant alliancetype ALLIANCE_SHARED_VISION=ConvertAllianceType(5)_";ALLIANCE_SHARED_CONTROLconstant alliancetype ALLIANCE_SHARED_CONTROL=ConvertAllianceType(6)q#M'ALLIANCE_SHARED_ADVANCED_CONTROLconstant alliancetype ALLIANCE_SHARED_ADVANCED_CONTROL=ConvertAllianceType(7) ¬¬pÄiº ^¯U$1 ALLIANCE_RESCUABLEconstant alliancetype ALLIANCE_RESCUABLE=ConvertAllianceType(8)k%G!ALLIANCE_SHARED_VISION_FORCEDconstant alliancetype ALLIANCE_SHARED_VISION_FORCED=ConvertAllianceType(9)R&9VERSION_REIGN_OF_CHAOSconstant version VERSION_REIGN_OF_CHAOS=ConvertVersion(0)P'7}VERSION_FROZEN_THRONEconstant version VERSION_FROZEN_THRONE=ConvertVersion(1)Q(1ATTACK_TYPE_NORMALconstant attacktype ATTACK_TYPE_NORMAL=ConvertAttackType(0)O)/ATTACK_TYPE_MELEEconstant attacktype ATTACK_TYPE_MELEE=ConvertAttackType(1)Q*1ATTACK_TYPE_PIERCEconstant attacktype ATTACK_TYPE_PIERCE=ConvertAttackType(2)O+/ATTACK_TYPE_SIEGEconstant attacktype ATTACK_TYPE_SIEGE=ConvertAttackType(3)O,/ATTACK_TYPE_MAGICconstant attacktype ATTACK_TYPE_MAGIC=ConvertAttackType(4)O-/ATTACK_TYPE_CHAOSconstant attacktype ATTACK_TYPE_CHAOS=ConvertAttackType(5) mm»cºV°Z®L.-ATTACK_TYPE_HEROconstant attacktype ATTACK_TYPE_HERO=ConvertAttackType(6)S/3DAMAGE_TYPE_UNKNOWNconstant damagetype DAMAGE_TYPE_UNKNOWN=ConvertDamageType(0)Q01DAMAGE_TYPE_NORMALconstant damagetype DAMAGE_TYPE_NORMAL=ConvertDamageType(4)U15DAMAGE_TYPE_ENHANCEDconstant damagetype DAMAGE_TYPE_ENHANCED=ConvertDamageType(5)L2-DAMAGE_TYPE_FIREconstant damagetype DAMAGE_TYPE_FIRE=ConvertDamageType(8)L3-DAMAGE_TYPE_COLDconstant damagetype DAMAGE_TYPE_COLD=ConvertDamageType(9)X47 DAMAGE_TYPE_LIGHTNINGconstant damagetype DAMAGE_TYPE_LIGHTNING=ConvertDamageType(10)R51DAMAGE_TYPE_POISONconstant damagetype DAMAGE_TYPE_POISON=ConvertDamageType(11)T63DAMAGE_TYPE_DISEASEconstant damagetype DAMAGE_TYPE_DISEASE=ConvertDamageType(12)R71DAMAGE_TYPE_DIVINEconstant damagetype DAMAGE_TYPE_DIVINE=ConvertDamageType(13)P8/DAMAGE_TYPE_MAGICconstant damagetype DAMAGE_TYPE_MAGIC=ConvertDamageType(14) DD–æ8ŠÚ,†â@žP9/DAMAGE_TYPE_SONICconstant damagetype DAMAGE_TYPE_SONIC=ConvertDamageType(15)N:-DAMAGE_TYPE_ACIDconstant damagetype DAMAGE_TYPE_ACID=ConvertDamageType(16)P;/DAMAGE_TYPE_FORCEconstant damagetype DAMAGE_TYPE_FORCE=ConvertDamageType(17)P</DAMAGE_TYPE_DEATHconstant damagetype DAMAGE_TYPE_DEATH=ConvertDamageType(18)N=-DAMAGE_TYPE_MINDconstant damagetype DAMAGE_TYPE_MIND=ConvertDamageType(19)P>/DAMAGE_TYPE_PLANTconstant damagetype DAMAGE_TYPE_PLANT=ConvertDamageType(20)X?7 DAMAGE_TYPE_DEFENSIVEconstant damagetype DAMAGE_TYPE_DEFENSIVE=ConvertDamageType(21)Z@9 DAMAGE_TYPE_DEMOLITIONconstant damagetype DAMAGE_TYPE_DEMOLITION=ConvertDamageType(22)\A;DAMAGE_TYPE_SLOW_POISONconstant damagetype DAMAGE_TYPE_SLOW_POISON=ConvertDamageType(23)\B;DAMAGE_TYPE_SPIRIT_LINKconstant damagetype DAMAGE_TYPE_SPIRIT_LINK=ConvertDamageType(24)`C?DAMAGE_TYPE_SHADOW_STRIKEconstant damagetype DAMAGE_TYPE_SHADOW_STRIKE=ConvertDamageType(25) rrÌ#ŠóZÃ.—XD7 DAMAGE_TYPE_UNIVERSALconstant damagetype DAMAGE_TYPE_UNIVERSAL=ConvertDamageType(26)UE5WEAPON_TYPE_WHOKNOWSconstant weapontype WEAPON_TYPE_WHOKNOWS=ConvertWeaponType(0)eFEWEAPON_TYPE_METAL_LIGHT_CHOPconstant weapontype WEAPON_TYPE_METAL_LIGHT_CHOP=ConvertWeaponType(1)gGGWEAPON_TYPE_METAL_MEDIUM_CHOPconstant weapontype WEAPON_TYPE_METAL_MEDIUM_CHOP=ConvertWeaponType(2)eHEWEAPON_TYPE_METAL_HEAVY_CHOPconstant weapontype WEAPON_TYPE_METAL_HEAVY_CHOP=ConvertWeaponType(3)gIGWEAPON_TYPE_METAL_LIGHT_SLICEconstant weapontype WEAPON_TYPE_METAL_LIGHT_SLICE=ConvertWeaponType(4)iJIWEAPON_TYPE_METAL_MEDIUM_SLICEconstant weapontype WEAPON_TYPE_METAL_MEDIUM_SLICE=ConvertWeaponType(5)gKGWEAPON_TYPE_METAL_HEAVY_SLICEconstant weapontype WEAPON_TYPE_METAL_HEAVY_SLICE=ConvertWeaponType(6)gLGWEAPON_TYPE_METAL_MEDIUM_BASHconstant weapontype WEAPON_TYPE_METAL_MEDIUM_BASH=ConvertWeaponType(7) ZZÁ*’údÌ2šeMEWEAPON_TYPE_METAL_HEAVY_BASHconstant weapontype WEAPON_TYPE_METAL_HEAVY_BASH=ConvertWeaponType(8)gNGWEAPON_TYPE_METAL_MEDIUM_STABconstant weapontype WEAPON_TYPE_METAL_MEDIUM_STAB=ConvertWeaponType(9)fOEWEAPON_TYPE_METAL_HEAVY_STABconstant weapontype WEAPON_TYPE_METAL_HEAVY_STAB=ConvertWeaponType(10)fPEWEAPON_TYPE_WOOD_LIGHT_SLICEconstant weapontype WEAPON_TYPE_WOOD_LIGHT_SLICE=ConvertWeaponType(11)hQGWEAPON_TYPE_WOOD_MEDIUM_SLICEconstant weapontype WEAPON_TYPE_WOOD_MEDIUM_SLICE=ConvertWeaponType(12)fREWEAPON_TYPE_WOOD_HEAVY_SLICEconstant weapontype WEAPON_TYPE_WOOD_HEAVY_SLICE=ConvertWeaponType(13)dSCWEAPON_TYPE_WOOD_LIGHT_BASHconstant weapontype WEAPON_TYPE_WOOD_LIGHT_BASH=ConvertWeaponType(14)fTEWEAPON_TYPE_WOOD_MEDIUM_BASHconstant weapontype WEAPON_TYPE_WOOD_MEDIUM_BASH=ConvertWeaponType(15)dUCWEAPON_TYPE_WOOD_HEAVY_BASHconstant weapontype WEAPON_TYPE_WOOD_HEAVY_BASH=ConvertWeaponType(16) zzàH°‚èNŸdVCWEAPON_TYPE_WOOD_LIGHT_STABconstant weapontype WEAPON_TYPE_WOOD_LIGHT_STAB=ConvertWeaponType(17)fWEWEAPON_TYPE_WOOD_MEDIUM_STABconstant weapontype WEAPON_TYPE_WOOD_MEDIUM_STAB=ConvertWeaponType(18)fXEWEAPON_TYPE_CLAW_LIGHT_SLICEconstant weapontype WEAPON_TYPE_CLAW_LIGHT_SLICE=ConvertWeaponType(19)hYGWEAPON_TYPE_CLAW_MEDIUM_SLICEconstant weapontype WEAPON_TYPE_CLAW_MEDIUM_SLICE=ConvertWeaponType(20)fZEWEAPON_TYPE_CLAW_HEAVY_SLICEconstant weapontype WEAPON_TYPE_CLAW_HEAVY_SLICE=ConvertWeaponType(21)d[CWEAPON_TYPE_AXE_MEDIUM_CHOPconstant weapontype WEAPON_TYPE_AXE_MEDIUM_CHOP=ConvertWeaponType(22)d\CWEAPON_TYPE_ROCK_HEAVY_BASHconstant weapontype WEAPON_TYPE_ROCK_HEAVY_BASH=ConvertWeaponType(23)O]-PATHING_TYPE_ANYconstant pathingtype PATHING_TYPE_ANY=ConvertPathingType(0)_^=PATHING_TYPE_WALKABILITYconstant pathingtype PATHING_TYPE_WALKABILITY=ConvertPathingType(1) ¬¬ nÝB¥a«]_;PATHING_TYPE_FLYABILITYconstant pathingtype PATHING_TYPE_FLYABILITY=ConvertPathingType(2)a`?PATHING_TYPE_BUILDABILITYconstant pathingtype PATHING_TYPE_BUILDABILITY=ConvertPathingType(3)maK!PATHING_TYPE_PEONHARVESTPATHINGconstant pathingtype PATHING_TYPE_PEONHARVESTPATHING=ConvertPathingType(4)cbAPATHING_TYPE_BLIGHTPATHINGconstant pathingtype PATHING_TYPE_BLIGHTPATHING=ConvertPathingType(5)ac?PATHING_TYPE_FLOATABILITYconstant pathingtype PATHING_TYPE_FLOATABILITY=ConvertPathingType(6)kdIPATHING_TYPE_AMPHIBIOUSPATHINGconstant pathingtype PATHING_TYPE_AMPHIBIOUSPATHING=ConvertPathingType(7)Me+RACE_PREF_HUMANconstant racepreference RACE_PREF_HUMAN=ConvertRacePref(1)Hf'}RACE_PREF_ORCconstant racepreference RACE_PREF_ORC=ConvertRacePref(2)Sg1RACE_PREF_NIGHTELFconstant racepreference RACE_PREF_NIGHTELF=ConvertRacePref(4) ooÀbÆkÄj¸Oh-RACE_PREF_UNDEADconstant racepreference RACE_PREF_UNDEAD=ConvertRacePref(8)Ni+RACE_PREF_DEMONconstant racepreference RACE_PREF_DEMON=ConvertRacePref(16)Pj-RACE_PREF_RANDOMconstant racepreference RACE_PREF_RANDOM=ConvertRacePref(32)bk?RACE_PREF_USER_SELECTABLEconstant racepreference RACE_PREF_USER_SELECTABLE=ConvertRacePref(64)Ll-MAP_CONTROL_USERconstant mapcontrol MAP_CONTROL_USER=ConvertMapControl(0)Um5MAP_CONTROL_COMPUTERconstant mapcontrol MAP_CONTROL_COMPUTER=ConvertMapControl(1)Wn7 MAP_CONTROL_RESCUABLEconstant mapcontrol MAP_CONTROL_RESCUABLE=ConvertMapControl(2)So3MAP_CONTROL_NEUTRALconstant mapcontrol MAP_CONTROL_NEUTRAL=ConvertMapControl(3)Op/MAP_CONTROL_CREEPconstant mapcontrol MAP_CONTROL_CREEP=ConvertMapControl(4)Lq-MAP_CONTROL_NONEconstant mapcontrol MAP_CONTROL_NONE=ConvertMapControl(5)Fr+uGAME_TYPE_MELEEconstant gametype GAME_TYPE_MELEE=ConvertGameType(1) --qÐjÄ"Ïs½Bs'qGAME_TYPE_FFAconstant gametype GAME_TYPE_FFA=ConvertGameType(2)]tA GAME_TYPE_USE_MAP_SETTINGSconstant gametype GAME_TYPE_USE_MAP_SETTINGS=ConvertGameType(4)Du)sGAME_TYPE_BLIZconstant gametype GAME_TYPE_BLIZ=ConvertGameType(8)Rv5GAME_TYPE_ONE_ON_ONEconstant gametype GAME_TYPE_ONE_ON_ONE=ConvertGameType(16)Xw;GAME_TYPE_TWO_TEAM_PLAYconstant gametype GAME_TYPE_TWO_TEAM_PLAY=ConvertGameType(32)\x? GAME_TYPE_THREE_TEAM_PLAYconstant gametype GAME_TYPE_THREE_TEAM_PLAY=ConvertGameType(64)[y= GAME_TYPE_FOUR_TEAM_PLAYconstant gametype GAME_TYPE_FOUR_TEAM_PLAY=ConvertGameType(128)Nz5{MAP_FOG_HIDE_TERRAINconstant mapflag MAP_FOG_HIDE_TERRAIN=ConvertMapFlag(1)N{5{MAP_FOG_MAP_EXPLOREDconstant mapflag MAP_FOG_MAP_EXPLORED=ConvertMapFlag(2)R|9MAP_FOG_ALWAYS_VISIBLEconstant mapflag MAP_FOG_ALWAYS_VISIBLE=ConvertMapFlag(4)H}/uMAP_USE_HANDICAPSconstant mapflag MAP_USE_HANDICAPS=ConvertMapFlag(8)A~'oMAP_OBSERVERSconstant mapflag MAP_OBSERVERS=ConvertMapFlag(16) ??•à>ª l¬úD›T9MAP_OBSERVERS_ON_DEATHconstant mapflag MAP_OBSERVERS_ON_DEATH=ConvertMapFlag(32)H-wMAP_FIXED_COLORSconstant mapflag MAP_FIXED_COLORS=ConvertMapFlag(128)[? MAP_LOCK_RESOURCE_TRADINGconstant mapflag MAP_LOCK_RESOURCE_TRADING=ConvertMapFlag(256)iMMAP_RESOURCE_TRADING_ALLIES_ONLYconstant mapflag MAP_RESOURCE_TRADING_ALLIES_ONLY=ConvertMapFlag(512)\? MAP_LOCK_ALLIANCE_CHANGESconstant mapflag MAP_LOCK_ALLIANCE_CHANGES=ConvertMapFlag(1024)`CMAP_ALLIANCE_CHANGES_HIDDENconstant mapflag MAP_ALLIANCE_CHANGES_HIDDEN=ConvertMapFlag(2048)=!mMAP_CHEATSconstant mapflag MAP_CHEATS=ConvertMapFlag(4096)K/{MAP_CHEATS_HIDDENconstant mapflag MAP_CHEATS_HIDDEN=ConvertMapFlag(8192)G)yMAP_LOCK_SPEEDconstant mapflag MAP_LOCK_SPEED=ConvertMapFlag(8192*2)T5MAP_LOCK_RANDOM_SEEDconstant mapflag MAP_LOCK_RANDOM_SEED=ConvertMapFlag(8192*4)b CMAP_SHARED_ADVANCED_CONTROLconstant mapflag MAP_SHARED_ADVANCED_CONTROL=ConvertMapFlag(8192*8) VV£ò9ãM³]±J +}MAP_RANDOM_HEROconstant mapflag MAP_RANDOM_HERO=ConvertMapFlag(8192*16)L -MAP_RANDOM_RACESconstant mapflag MAP_RANDOM_RACES=ConvertMapFlag(8192*32)D %wMAP_RELOADEDconstant mapflag MAP_RELOADED=ConvertMapFlag(8192*64)S 5MAP_PLACEMENT_RANDOMconstant placement MAP_PLACEMENT_RANDOM=ConvertPlacement(0)Q3MAP_PLACEMENT_FIXEDconstant placement MAP_PLACEMENT_FIXED=ConvertPlacement(1)gIMAP_PLACEMENT_USE_MAP_SETTINGSconstant placement MAP_PLACEMENT_USE_MAP_SETTINGS=ConvertPlacement(2)cEMAP_PLACEMENT_TEAMS_TOGETHERconstant placement MAP_PLACEMENT_TEAMS_TOGETHER=ConvertPlacement(3)Q-MAP_LOC_PRIO_LOWconstant startlocprio MAP_LOC_PRIO_LOW=ConvertStartLocPrio(0)S/ MAP_LOC_PRIO_HIGHconstant startlocprio MAP_LOC_PRIO_HIGH=ConvertStartLocPrio(1)Q-MAP_LOC_PRIO_NOTconstant startlocprio MAP_LOC_PRIO_NOT=ConvertStartLocPrio(2)L-MAP_DENSITY_NONEconstant mapdensity MAP_DENSITY_NONE=ConvertMapDensity(0) ZZ¬R°pÒ!j·O/MAP_DENSITY_LIGHTconstant mapdensity MAP_DENSITY_LIGHT=ConvertMapDensity(1)Q1MAP_DENSITY_MEDIUMconstant mapdensity MAP_DENSITY_MEDIUM=ConvertMapDensity(2)O/MAP_DENSITY_HEAVYconstant mapdensity MAP_DENSITY_HEAVY=ConvertMapDensity(3)[3MAP_DIFFICULTY_EASYconstant gamedifficulty MAP_DIFFICULTY_EASY=ConvertGameDifficulty(0)_7MAP_DIFFICULTY_NORMALconstant gamedifficulty MAP_DIFFICULTY_NORMAL=ConvertGameDifficulty(1)[3MAP_DIFFICULTY_HARDconstant gamedifficulty MAP_DIFFICULTY_HARD=ConvertGameDifficulty(2)_7MAP_DIFFICULTY_INSANEconstant gamedifficulty MAP_DIFFICULTY_INSANE=ConvertGameDifficulty(3)L/}MAP_SPEED_SLOWESTconstant gamespeed MAP_SPEED_SLOWEST=ConvertGameSpeed(0)F)wMAP_SPEED_SLOWconstant gamespeed MAP_SPEED_SLOW=ConvertGameSpeed(1)J-{MAP_SPEED_NORMALconstant gamespeed MAP_SPEED_NORMAL=ConvertGameSpeed(2)F)wMAP_SPEED_FASTconstant gamespeed MAP_SPEED_FAST=ConvertGameSpeed(3) !!pØDª‚äF L /}MAP_SPEED_FASTESTconstant gamespeed MAP_SPEED_FASTEST=ConvertGameSpeed(4)e!;!PLAYER_SLOT_STATE_EMPTYconstant playerslotstate PLAYER_SLOT_STATE_EMPTY=ConvertPlayerSlotState(0)i"?%PLAYER_SLOT_STATE_PLAYINGconstant playerslotstate PLAYER_SLOT_STATE_PLAYING=ConvertPlayerSlotState(1)c#9PLAYER_SLOT_STATE_LEFTconstant playerslotstate PLAYER_SLOT_STATE_LEFT=ConvertPlayerSlotState(2)k$ISOUND_VOLUMEGROUP_UNITMOVEMENTconstant volumegroup SOUND_VOLUMEGROUP_UNITMOVEMENT=ConvertVolumeGroup(0)g%ESOUND_VOLUMEGROUP_UNITSOUNDSconstant volumegroup SOUND_VOLUMEGROUP_UNITSOUNDS=ConvertVolumeGroup(1)_&=SOUND_VOLUMEGROUP_COMBATconstant volumegroup SOUND_VOLUMEGROUP_COMBAT=ConvertVolumeGroup(2)_'=SOUND_VOLUMEGROUP_SPELLSconstant volumegroup SOUND_VOLUMEGROUP_SPELLS=ConvertVolumeGroup(3)W(5 SOUND_VOLUMEGROUP_UIconstant volumegroup SOUND_VOLUMEGROUP_UI=ConvertVolumeGroup(4)]);SOUND_VOLUMEGROUP_MUSICconstant volumegroup SOUND_VOLUMEGROUP_MUSIC=ConvertVolumeGroup(5) ffÖ4 þZ¼"Œm*K!SOUND_VOLUMEGROUP_AMBIENTSOUNDSconstant volumegroup SOUND_VOLUMEGROUP_AMBIENTSOUNDS=ConvertVolumeGroup(6)[+9SOUND_VOLUMEGROUP_FIREconstant volumegroup SOUND_VOLUMEGROUP_FIRE=ConvertVolumeGroup(7)i,IGAME_STATE_DIVINE_INTERVENTIONconstant igamestate GAME_STATE_DIVINE_INTERVENTION=ConvertIGameState(0)[-; GAME_STATE_DISCONNECTEDconstant igamestate GAME_STATE_DISCONNECTED=ConvertIGameState(1)Y.9 GAME_STATE_TIME_OF_DAYconstant fgamestate GAME_STATE_TIME_OF_DAY=ConvertFGameState(2)_/=PLAYER_STATE_GAME_RESULTconstant playerstate PLAYER_STATE_GAME_RESULT=ConvertPlayerState(0)c0APLAYER_STATE_RESOURCE_GOLDconstant playerstate PLAYER_STATE_RESOURCE_GOLD=ConvertPlayerState(1)g1EPLAYER_STATE_RESOURCE_LUMBERconstant playerstate PLAYER_STATE_RESOURCE_LUMBER=ConvertPlayerState(2)q2O%PLAYER_STATE_RESOURCE_HERO_TOKENSconstant playerstate PLAYER_STATE_RESOURCE_HERO_TOKENS=ConvertPlayerState(3) aaÏ?«wÏ>›k3IPLAYER_STATE_RESOURCE_FOOD_CAPconstant playerstate PLAYER_STATE_RESOURCE_FOOD_CAP=ConvertPlayerState(4)m4K!PLAYER_STATE_RESOURCE_FOOD_USEDconstant playerstate PLAYER_STATE_RESOURCE_FOOD_USED=ConvertPlayerState(5)i5GPLAYER_STATE_FOOD_CAP_CEILINGconstant playerstate PLAYER_STATE_FOOD_CAP_CEILING=ConvertPlayerState(6)a6?PLAYER_STATE_GIVES_BOUNTYconstant playerstate PLAYER_STATE_GIVES_BOUNTY=ConvertPlayerState(7)e7CPLAYER_STATE_ALLIED_VICTORYconstant playerstate PLAYER_STATE_ALLIED_VICTORY=ConvertPlayerState(8)U83 PLAYER_STATE_PLACEDconstant playerstate PLAYER_STATE_PLACED=ConvertPlayerState(9)l9I!PLAYER_STATE_OBSERVER_ON_DEATHconstant playerstate PLAYER_STATE_OBSERVER_ON_DEATH=ConvertPlayerState(10)Z:7PLAYER_STATE_OBSERVERconstant playerstate PLAYER_STATE_OBSERVER=ConvertPlayerState(11)b;?PLAYER_STATE_UNFOLLOWABLEconstant playerstate PLAYER_STATE_UNFOLLOWABLE=ConvertPlayerState(12) MMº+’ýf±P¤j<GPLAYER_STATE_GOLD_UPKEEP_RATEconstant playerstate PLAYER_STATE_GOLD_UPKEEP_RATE=ConvertPlayerState(13)n=K#PLAYER_STATE_LUMBER_UPKEEP_RATEconstant playerstate PLAYER_STATE_LUMBER_UPKEEP_RATE=ConvertPlayerState(14)d>APLAYER_STATE_GOLD_GATHEREDconstant playerstate PLAYER_STATE_GOLD_GATHERED=ConvertPlayerState(15)h?EPLAYER_STATE_LUMBER_GATHEREDconstant playerstate PLAYER_STATE_LUMBER_GATHERED=ConvertPlayerState(16)f@CPLAYER_STATE_NO_CREEP_SLEEPconstant playerstate PLAYER_STATE_NO_CREEP_SLEEP=ConvertPlayerState(25)HA+yUNIT_STATE_LIFEconstant unitstate UNIT_STATE_LIFE=ConvertUnitState(0)QB3UNIT_STATE_MAX_LIFEconstant unitstate UNIT_STATE_MAX_LIFE=ConvertUnitState(1)HC+yUNIT_STATE_MANAconstant unitstate UNIT_STATE_MANA=ConvertUnitState(2)QD3UNIT_STATE_MAX_MANAconstant unitstate UNIT_STATE_MAX_MANA=ConvertUnitState(3)YE5AI_DIFFICULTY_NEWBIEconstant aidifficulty AI_DIFFICULTY_NEWBIE=ConvertAIDifficulty(0) $$€ÜB¦ nÒ6šYF5AI_DIFFICULTY_NORMALconstant aidifficulty AI_DIFFICULTY_NORMAL=ConvertAIDifficulty(1)YG5AI_DIFFICULTY_INSANEconstant aidifficulty AI_DIFFICULTY_INSANE=ConvertAIDifficulty(2)cHAPLAYER_SCORE_UNITS_TRAINEDconstant playerscore PLAYER_SCORE_UNITS_TRAINED=ConvertPlayerScore(0)aI?PLAYER_SCORE_UNITS_KILLEDconstant playerscore PLAYER_SCORE_UNITS_KILLED=ConvertPlayerScore(1)aJ?PLAYER_SCORE_STRUCT_BUILTconstant playerscore PLAYER_SCORE_STRUCT_BUILT=ConvertPlayerScore(2)aK?PLAYER_SCORE_STRUCT_RAZEDconstant playerscore PLAYER_SCORE_STRUCT_RAZED=ConvertPlayerScore(3)aL?PLAYER_SCORE_TECH_PERCENTconstant playerscore PLAYER_SCORE_TECH_PERCENT=ConvertPlayerScore(4)aM?PLAYER_SCORE_FOOD_MAXPRODconstant playerscore PLAYER_SCORE_FOOD_MAXPROD=ConvertPlayerScore(5)aN?PLAYER_SCORE_FOOD_MAXUSEDconstant playerscore PLAYER_SCORE_FOOD_MAXUSED=ConvertPlayerScore(6)cOAPLAYER_SCORE_HEROES_KILLEDconstant playerscore PLAYER_SCORE_HEROES_KILLED=ConvertPlayerScore(7) ]]Á#ÿlÓ4›aP?PLAYER_SCORE_ITEMS_GAINEDconstant playerscore PLAYER_SCORE_ITEMS_GAINED=ConvertPlayerScore(8)_Q=PLAYER_SCORE_MERCS_HIREDconstant playerscore PLAYER_SCORE_MERCS_HIRED=ConvertPlayerScore(9)jRGPLAYER_SCORE_GOLD_MINED_TOTALconstant playerscore PLAYER_SCORE_GOLD_MINED_TOTAL=ConvertPlayerScore(10)lSI!PLAYER_SCORE_GOLD_MINED_UPKEEPconstant playerscore PLAYER_SCORE_GOLD_MINED_UPKEEP=ConvertPlayerScore(11)jTGPLAYER_SCORE_GOLD_LOST_UPKEEPconstant playerscore PLAYER_SCORE_GOLD_LOST_UPKEEP=ConvertPlayerScore(12)dUAPLAYER_SCORE_GOLD_LOST_TAXconstant playerscore PLAYER_SCORE_GOLD_LOST_TAX=ConvertPlayerScore(13)^V;PLAYER_SCORE_GOLD_GIVENconstant playerscore PLAYER_SCORE_GOLD_GIVEN=ConvertPlayerScore(14)dWAPLAYER_SCORE_GOLD_RECEIVEDconstant playerscore PLAYER_SCORE_GOLD_RECEIVED=ConvertPlayerScore(15)bX?PLAYER_SCORE_LUMBER_TOTALconstant playerscore PLAYER_SCORE_LUMBER_TOTAL=ConvertPlayerScore(16) ++œl×8™YªnYK#PLAYER_SCORE_LUMBER_LOST_UPKEEPconstant playerscore PLAYER_SCORE_LUMBER_LOST_UPKEEP=ConvertPlayerScore(17)hZEPLAYER_SCORE_LUMBER_LOST_TAXconstant playerscore PLAYER_SCORE_LUMBER_LOST_TAX=ConvertPlayerScore(18)b[?PLAYER_SCORE_LUMBER_GIVENconstant playerscore PLAYER_SCORE_LUMBER_GIVEN=ConvertPlayerScore(19)h\EPLAYER_SCORE_LUMBER_RECEIVEDconstant playerscore PLAYER_SCORE_LUMBER_RECEIVED=ConvertPlayerScore(20)^];PLAYER_SCORE_UNIT_TOTALconstant playerscore PLAYER_SCORE_UNIT_TOTAL=ConvertPlayerScore(21)^^;PLAYER_SCORE_HERO_TOTALconstant playerscore PLAYER_SCORE_HERO_TOTAL=ConvertPlayerScore(22)f_CPLAYER_SCORE_RESOURCE_TOTALconstant playerscore PLAYER_SCORE_RESOURCE_TOTAL=ConvertPlayerScore(23)T`1 PLAYER_SCORE_TOTALconstant playerscore PLAYER_SCORE_TOTAL=ConvertPlayerScore(24)Na1EVENT_GAME_VICTORYconstant gameevent EVENT_GAME_VICTORY=ConvertGameEvent(0)Sb5EVENT_GAME_END_LEVELconstant gameevent EVENT_GAME_END_LEVEL=ConvertGameEvent(1) VV¶nÊ&„æ>]c? EVENT_GAME_VARIABLE_LIMITconstant gameevent EVENT_GAME_VARIABLE_LIMIT=ConvertGameEvent(2)Wd9EVENT_GAME_STATE_LIMITconstant gameevent EVENT_GAME_STATE_LIMIT=ConvertGameEvent(3)[e= EVENT_GAME_TIMER_EXPIREDconstant gameevent EVENT_GAME_TIMER_EXPIRED=ConvertGameEvent(4)Yf; EVENT_GAME_ENTER_REGIONconstant gameevent EVENT_GAME_ENTER_REGION=ConvertGameEvent(5)Yg; EVENT_GAME_LEAVE_REGIONconstant gameevent EVENT_GAME_LEAVE_REGION=ConvertGameEvent(6)[h= EVENT_GAME_TRACKABLE_HITconstant gameevent EVENT_GAME_TRACKABLE_HIT=ConvertGameEvent(7)_iAEVENT_GAME_TRACKABLE_TRACKconstant gameevent EVENT_GAME_TRACKABLE_TRACK=ConvertGameEvent(8)Uj7EVENT_GAME_SHOW_SKILLconstant gameevent EVENT_GAME_SHOW_SKILL=ConvertGameEvent(9)\k= EVENT_GAME_BUILD_SUBMENUconstant gameevent EVENT_GAME_BUILD_SUBMENU=ConvertGameEvent(10)`l=EVENT_PLAYER_STATE_LIMITconstant playerevent EVENT_PLAYER_STATE_LIMIT=ConvertPlayerEvent(11) ‹ä?–ëRÁ.—jmGEVENT_PLAYER_ALLIANCE_CHANGEDconstant playerevent EVENT_PLAYER_ALLIANCE_CHANGED=ConvertPlayerEvent(12)Vn3 EVENT_PLAYER_DEFEATconstant playerevent EVENT_PLAYER_DEFEAT=ConvertPlayerEvent(13)Xo5 EVENT_PLAYER_VICTORYconstant playerevent EVENT_PLAYER_VICTORY=ConvertPlayerEvent(14)Tp1 EVENT_PLAYER_LEAVEconstant playerevent EVENT_PLAYER_LEAVE=ConvertPlayerEvent(15)Rq/EVENT_PLAYER_CHATconstant playerevent EVENT_PLAYER_CHAT=ConvertPlayerEvent(16)drAEVENT_PLAYER_END_CINEMATICconstant playerevent EVENT_PLAYER_END_CINEMATIC=ConvertPlayerEvent(17)lsA)EVENT_PLAYER_UNIT_ATTACKEDconstant playerunitevent EVENT_PLAYER_UNIT_ATTACKED=ConvertPlayerUnitEvent(18)jt?'EVENT_PLAYER_UNIT_RESCUEDconstant playerunitevent EVENT_PLAYER_UNIT_RESCUED=ConvertPlayerUnitEvent(19)fu;#EVENT_PLAYER_UNIT_DEATHconstant playerunitevent EVENT_PLAYER_UNIT_DEATH=ConvertPlayerUnitEvent(20)fv;#EVENT_PLAYER_UNIT_DECAYconstant playerunitevent EVENT_PLAYER_UNIT_DECAY=ConvertPlayerUnitEvent(21) PP¿*™ ‰‡lwA)EVENT_PLAYER_UNIT_DETECTEDconstant playerunitevent EVENT_PLAYER_UNIT_DETECTED=ConvertPlayerUnitEvent(22)hx=%EVENT_PLAYER_UNIT_HIDDENconstant playerunitevent EVENT_PLAYER_UNIT_HIDDEN=ConvertPlayerUnitEvent(23)lyA)EVENT_PLAYER_UNIT_SELECTEDconstant playerunitevent EVENT_PLAYER_UNIT_SELECTED=ConvertPlayerUnitEvent(24)pzE-EVENT_PLAYER_UNIT_DESELECTEDconstant playerunitevent EVENT_PLAYER_UNIT_DESELECTED=ConvertPlayerUnitEvent(25)z{O7EVENT_PLAYER_UNIT_CONSTRUCT_STARTconstant playerunitevent EVENT_PLAYER_UNIT_CONSTRUCT_START=ConvertPlayerUnitEvent(26)||Q9EVENT_PLAYER_UNIT_CONSTRUCT_CANCELconstant playerunitevent EVENT_PLAYER_UNIT_CONSTRUCT_CANCEL=ConvertPlayerUnitEvent(27)|}Q9EVENT_PLAYER_UNIT_CONSTRUCT_FINISHconstant playerunitevent EVENT_PLAYER_UNIT_CONSTRUCT_FINISH=ConvertPlayerUnitEvent(28)v~K3EVENT_PLAYER_UNIT_UPGRADE_STARTconstant playerunitevent EVENT_PLAYER_UNIT_UPGRADE_START=ConvertPlayerUnitEvent(29) 22­(‹ƒxM5EVENT_PLAYER_UNIT_UPGRADE_CANCELconstant playerunitevent EVENT_PLAYER_UNIT_UPGRADE_CANCEL=ConvertPlayerUnitEvent(30)x‚M5EVENT_PLAYER_UNIT_UPGRADE_FINISHconstant playerunitevent EVENT_PLAYER_UNIT_UPGRADE_FINISH=ConvertPlayerUnitEvent(31)r‚G/EVENT_PLAYER_UNIT_TRAIN_STARTconstant playerunitevent EVENT_PLAYER_UNIT_TRAIN_START=ConvertPlayerUnitEvent(32)t‚I1EVENT_PLAYER_UNIT_TRAIN_CANCELconstant playerunitevent EVENT_PLAYER_UNIT_TRAIN_CANCEL=ConvertPlayerUnitEvent(33)t‚I1EVENT_PLAYER_UNIT_TRAIN_FINISHconstant playerunitevent EVENT_PLAYER_UNIT_TRAIN_FINISH=ConvertPlayerUnitEvent(34)x‚M5EVENT_PLAYER_UNIT_RESEARCH_STARTconstant playerunitevent EVENT_PLAYER_UNIT_RESEARCH_START=ConvertPlayerUnitEvent(35)z‚O7EVENT_PLAYER_UNIT_RESEARCH_CANCELconstant playerunitevent EVENT_PLAYER_UNIT_RESEARCH_CANCEL=ConvertPlayerUnitEvent(36)z‚O7EVENT_PLAYER_UNIT_RESEARCH_FINISHconstant playerunitevent EVENT_PLAYER_UNIT_RESEARCH_FINISH=ConvertPlayerUnitEvent(37) DD»?ÅF¯‰t‚I1EVENT_PLAYER_UNIT_ISSUED_ORDERconstant playerunitevent EVENT_PLAYER_UNIT_ISSUED_ORDER=ConvertPlayerUnitEvent(38)‚U=EVENT_PLAYER_UNIT_ISSUED_POINT_ORDERconstant playerunitevent EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER=ConvertPlayerUnitEvent(39)‚ W?EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDERconstant playerunitevent EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER=ConvertPlayerUnitEvent(40)~‚ S;EVENT_PLAYER_UNIT_ISSUED_UNIT_ORDERconstant playerunitevent EVENT_PLAYER_UNIT_ISSUED_UNIT_ORDER=ConvertPlayerUnitEvent(40)f‚ ;#EVENT_PLAYER_HERO_LEVELconstant playerunitevent EVENT_PLAYER_HERO_LEVEL=ConvertPlayerUnitEvent(41)f‚ ;#EVENT_PLAYER_HERO_SKILLconstant playerunitevent EVENT_PLAYER_HERO_SKILL=ConvertPlayerUnitEvent(42)n‚ C+EVENT_PLAYER_HERO_REVIVABLEconstant playerunitevent EVENT_PLAYER_HERO_REVIVABLE=ConvertPlayerUnitEvent(43)t‚I1EVENT_PLAYER_HERO_REVIVE_STARTconstant playerunitevent EVENT_PLAYER_HERO_REVIVE_START=ConvertPlayerUnitEvent(44)  ‚í^ÓB­v‚K3EVENT_PLAYER_HERO_REVIVE_CANCELconstant playerunitevent EVENT_PLAYER_HERO_REVIVE_CANCEL=ConvertPlayerUnitEvent(45)v‚K3EVENT_PLAYER_HERO_REVIVE_FINISHconstant playerunitevent EVENT_PLAYER_HERO_REVIVE_FINISH=ConvertPlayerUnitEvent(46)h‚=%EVENT_PLAYER_UNIT_SUMMONconstant playerunitevent EVENT_PLAYER_UNIT_SUMMON=ConvertPlayerUnitEvent(47)n‚C+EVENT_PLAYER_UNIT_DROP_ITEMconstant playerunitevent EVENT_PLAYER_UNIT_DROP_ITEM=ConvertPlayerUnitEvent(48)r‚G/EVENT_PLAYER_UNIT_PICKUP_ITEMconstant playerunitevent EVENT_PLAYER_UNIT_PICKUP_ITEM=ConvertPlayerUnitEvent(49)l‚A)EVENT_PLAYER_UNIT_USE_ITEMconstant playerunitevent EVENT_PLAYER_UNIT_USE_ITEM=ConvertPlayerUnitEvent(50)h‚=%EVENT_PLAYER_UNIT_LOADEDconstant playerunitevent EVENT_PLAYER_UNIT_LOADED=ConvertPlayerUnitEvent(51)P‚1EVENT_UNIT_DAMAGEDconstant unitevent EVENT_UNIT_DAMAGED=ConvertUnitEvent(52) HH–ä9‰Þ7’õX­K‚-}EVENT_UNIT_DEATHconstant unitevent EVENT_UNIT_DEATH=ConvertUnitEvent(53)K‚-}EVENT_UNIT_DECAYconstant unitevent EVENT_UNIT_DECAY=ConvertUnitEvent(54)R‚3EVENT_UNIT_DETECTEDconstant unitevent EVENT_UNIT_DETECTED=ConvertUnitEvent(55)M‚/EVENT_UNIT_HIDDENconstant unitevent EVENT_UNIT_HIDDEN=ConvertUnitEvent(56)R‚3EVENT_UNIT_SELECTEDconstant unitevent EVENT_UNIT_SELECTED=ConvertUnitEvent(57)V‚7EVENT_UNIT_DESELECTEDconstant unitevent EVENT_UNIT_DESELECTED=ConvertUnitEvent(58)X‚9 EVENT_UNIT_STATE_LIMITconstant unitevent EVENT_UNIT_STATE_LIMIT=ConvertUnitEvent(59)`‚AEVENT_UNIT_ACQUIRED_TARGETconstant unitevent EVENT_UNIT_ACQUIRED_TARGET=ConvertUnitEvent(60)`‚AEVENT_UNIT_TARGET_IN_RANGEconstant unitevent EVENT_UNIT_TARGET_IN_RANGE=ConvertUnitEvent(61)R‚ 3EVENT_UNIT_ATTACKEDconstant unitevent EVENT_UNIT_ATTACKED=ConvertUnitEvent(62)P‚!1EVENT_UNIT_RESCUEDconstant unitevent EVENT_UNIT_RESCUED=ConvertUnitEvent(63) <<¡eÆ'‚ß<b‚"CEVENT_UNIT_CONSTRUCT_CANCELconstant unitevent EVENT_UNIT_CONSTRUCT_CANCEL=ConvertUnitEvent(64)b‚#CEVENT_UNIT_CONSTRUCT_FINISHconstant unitevent EVENT_UNIT_CONSTRUCT_FINISH=ConvertUnitEvent(65)\‚$= EVENT_UNIT_UPGRADE_STARTconstant unitevent EVENT_UNIT_UPGRADE_START=ConvertUnitEvent(66)^‚%?EVENT_UNIT_UPGRADE_CANCELconstant unitevent EVENT_UNIT_UPGRADE_CANCEL=ConvertUnitEvent(67)^‚&?EVENT_UNIT_UPGRADE_FINISHconstant unitevent EVENT_UNIT_UPGRADE_FINISH=ConvertUnitEvent(68)X‚'9 EVENT_UNIT_TRAIN_STARTconstant unitevent EVENT_UNIT_TRAIN_START=ConvertUnitEvent(69)Z‚(; EVENT_UNIT_TRAIN_CANCELconstant unitevent EVENT_UNIT_TRAIN_CANCEL=ConvertUnitEvent(70)Z‚); EVENT_UNIT_TRAIN_FINISHconstant unitevent EVENT_UNIT_TRAIN_FINISH=ConvertUnitEvent(71)^‚*?EVENT_UNIT_RESEARCH_STARTconstant unitevent EVENT_UNIT_RESEARCH_START=ConvertUnitEvent(72)`‚+AEVENT_UNIT_RESEARCH_CANCELconstant unitevent EVENT_UNIT_RESEARCH_CANCEL=ConvertUnitEvent(73) ‰‰ìI²vÏ0—`‚,AEVENT_UNIT_RESEARCH_FINISHconstant unitevent EVENT_UNIT_RESEARCH_FINISH=ConvertUnitEvent(74)Z‚-; EVENT_UNIT_ISSUED_ORDERconstant unitevent EVENT_UNIT_ISSUED_ORDER=ConvertUnitEvent(75)f‚.GEVENT_UNIT_ISSUED_POINT_ORDERconstant unitevent EVENT_UNIT_ISSUED_POINT_ORDER=ConvertUnitEvent(76)h‚/IEVENT_UNIT_ISSUED_TARGET_ORDERconstant unitevent EVENT_UNIT_ISSUED_TARGET_ORDER=ConvertUnitEvent(77)V‚07EVENT_UNIT_HERO_LEVELconstant unitevent EVENT_UNIT_HERO_LEVEL=ConvertUnitEvent(78)V‚17EVENT_UNIT_HERO_SKILLconstant unitevent EVENT_UNIT_HERO_SKILL=ConvertUnitEvent(79)^‚2?EVENT_UNIT_HERO_REVIVABLEconstant unitevent EVENT_UNIT_HERO_REVIVABLE=ConvertUnitEvent(80)d‚3EEVENT_UNIT_HERO_REVIVE_STARTconstant unitevent EVENT_UNIT_HERO_REVIVE_START=ConvertUnitEvent(81)f‚4GEVENT_UNIT_HERO_REVIVE_CANCELconstant unitevent EVENT_UNIT_HERO_REVIVE_CANCEL=ConvertUnitEvent(82) ‹‹ôD›öK›òW®f‚5GEVENT_UNIT_HERO_REVIVE_FINISHconstant unitevent EVENT_UNIT_HERO_REVIVE_FINISH=ConvertUnitEvent(83)M‚6/EVENT_UNIT_SUMMONconstant unitevent EVENT_UNIT_SUMMON=ConvertUnitEvent(84)T‚75EVENT_UNIT_DROP_ITEMconstant unitevent EVENT_UNIT_DROP_ITEM=ConvertUnitEvent(85)X‚89 EVENT_UNIT_PICKUP_ITEMconstant unitevent EVENT_UNIT_PICKUP_ITEM=ConvertUnitEvent(86)R‚93EVENT_UNIT_USE_ITEMconstant unitevent EVENT_UNIT_USE_ITEM=ConvertUnitEvent(87)M‚:/EVENT_UNIT_LOADEDconstant unitevent EVENT_UNIT_LOADED=ConvertUnitEvent(88)T‚;1 EVENT_WIDGET_DEATHconstant widgetevent EVENT_WIDGET_DEATH=ConvertWidgetEvent(89)b‚<?EVENT_DIALOG_BUTTON_CLICKconstant dialogevent EVENT_DIALOG_BUTTON_CLICK=ConvertDialogEvent(90)T‚=1 EVENT_DIALOG_CLICKconstant dialogevent EVENT_DIALOG_CLICK=ConvertDialogEvent(91)O‚>/EVENT_GAME_LOADEDconstant gameevent EVENT_GAME_LOADED=ConvertGameEvent(256) QQÃ3€ìTÂ,˜o‚?O!EVENT_GAME_TOURNAMENT_FINISH_SOONconstant gameevent EVENT_GAME_TOURNAMENT_FINISH_SOON=ConvertGameEvent(257)m‚@MEVENT_GAME_TOURNAMENT_FINISH_NOWconstant gameevent EVENT_GAME_TOURNAMENT_FINISH_NOW=ConvertGameEvent(258)J‚A+}EVENT_GAME_SAVEconstant gameevent EVENT_GAME_SAVE=ConvertGameEvent(259)i‚BEEVENT_PLAYER_ARROW_LEFT_DOWNconstant playerevent EVENT_PLAYER_ARROW_LEFT_DOWN=ConvertPlayerEvent(261)e‚CAEVENT_PLAYER_ARROW_LEFT_UPconstant playerevent EVENT_PLAYER_ARROW_LEFT_UP=ConvertPlayerEvent(262)k‚DG!EVENT_PLAYER_ARROW_RIGHT_DOWNconstant playerevent EVENT_PLAYER_ARROW_RIGHT_DOWN=ConvertPlayerEvent(263)g‚ECEVENT_PLAYER_ARROW_RIGHT_UPconstant playerevent EVENT_PLAYER_ARROW_RIGHT_UP=ConvertPlayerEvent(264)i‚FEEVENT_PLAYER_ARROW_DOWN_DOWNconstant playerevent EVENT_PLAYER_ARROW_DOWN_DOWN=ConvertPlayerEvent(265)e‚GAEVENT_PLAYER_ARROW_DOWN_UPconstant playerevent EVENT_PLAYER_ARROW_DOWN_UP=ConvertPlayerEvent(266) ||äH°(šˆe‚HAEVENT_PLAYER_ARROW_UP_DOWNconstant playerevent EVENT_PLAYER_ARROW_UP_DOWN=ConvertPlayerEvent(267)a‚I=EVENT_PLAYER_ARROW_UP_UPconstant playerevent EVENT_PLAYER_ARROW_UP_UP=ConvertPlayerEvent(268)e‚J9#EVENT_PLAYER_UNIT_SELLconstant playerunitevent EVENT_PLAYER_UNIT_SELL=ConvertPlayerUnitEvent(269)u‚KI3EVENT_PLAYER_UNIT_CHANGE_OWNERconstant playerunitevent EVENT_PLAYER_UNIT_CHANGE_OWNER=ConvertPlayerUnitEvent(270)o‚LC-EVENT_PLAYER_UNIT_SELL_ITEMconstant playerunitevent EVENT_PLAYER_UNIT_SELL_ITEM=ConvertPlayerUnitEvent(271)w‚MK5EVENT_PLAYER_UNIT_SPELL_CHANNELconstant playerunitevent EVENT_PLAYER_UNIT_SPELL_CHANNEL=ConvertPlayerUnitEvent(272)q‚NE/EVENT_PLAYER_UNIT_SPELL_CASTconstant playerunitevent EVENT_PLAYER_UNIT_SPELL_CAST=ConvertPlayerUnitEvent(273)u‚OI3EVENT_PLAYER_UNIT_SPELL_EFFECTconstant playerunitevent EVENT_PLAYER_UNIT_SPELL_EFFECT=ConvertPlayerUnitEvent(274) ##›‡Ô2ŠêD¢u‚PI3EVENT_PLAYER_UNIT_SPELL_FINISHconstant playerunitevent EVENT_PLAYER_UNIT_SPELL_FINISH=ConvertPlayerUnitEvent(275)w‚QK5EVENT_PLAYER_UNIT_SPELL_ENDCASTconstant playerunitevent EVENT_PLAYER_UNIT_SPELL_ENDCAST=ConvertPlayerUnitEvent(276)o‚RC-EVENT_PLAYER_UNIT_PAWN_ITEMconstant playerunitevent EVENT_PLAYER_UNIT_PAWN_ITEM=ConvertPlayerUnitEvent(277)J‚S+}EVENT_UNIT_SELLconstant unitevent EVENT_UNIT_SELL=ConvertUnitEvent(286)[‚T; EVENT_UNIT_CHANGE_OWNERconstant unitevent EVENT_UNIT_CHANGE_OWNER=ConvertUnitEvent(287)U‚U5EVENT_UNIT_SELL_ITEMconstant unitevent EVENT_UNIT_SELL_ITEM=ConvertUnitEvent(288)]‚V=EVENT_UNIT_SPELL_CHANNELconstant unitevent EVENT_UNIT_SPELL_CHANNEL=ConvertUnitEvent(289)W‚W7 EVENT_UNIT_SPELL_CASTconstant unitevent EVENT_UNIT_SPELL_CAST=ConvertUnitEvent(290)[‚X; EVENT_UNIT_SPELL_EFFECTconstant unitevent EVENT_UNIT_SPELL_EFFECT=ConvertUnitEvent(291)[‚Y; EVENT_UNIT_SPELL_FINISHconstant unitevent EVENT_UNIT_SPELL_FINISH=ConvertUnitEvent(292) II©<‰¼P‹Òjµ]‚Z=EVENT_UNIT_SPELL_ENDCASTconstant unitevent EVENT_UNIT_SPELL_ENDCAST=ConvertUnitEvent(293)U‚[5EVENT_UNIT_PAWN_ITEMconstant unitevent EVENT_UNIT_PAWN_ITEM=ConvertUnitEvent(294)8‚\eLESS_THANconstant limitop LESS_THAN=ConvertLimitOp(0)J‚]1wLESS_THAN_OR_EQUALconstant limitop LESS_THAN_OR_EQUAL=ConvertLimitOp(1)0‚^]EQUALconstant limitop EQUAL=ConvertLimitOp(2)P‚_7}GREATER_THAN_OR_EQUALconstant limitop GREATER_THAN_OR_EQUAL=ConvertLimitOp(3)>‚`%kGREATER_THANconstant limitop GREATER_THAN=ConvertLimitOp(4)8‚aeNOT_EQUALconstant limitop NOT_EQUAL=ConvertLimitOp(5)D‚b)sUNIT_TYPE_HEROconstant unittype UNIT_TYPE_HERO=ConvertUnitType(0)D‚c)sUNIT_TYPE_DEADconstant unittype UNIT_TYPE_DEAD=ConvertUnitType(1)N‚d3}UNIT_TYPE_STRUCTUREconstant unittype UNIT_TYPE_STRUCTURE=ConvertUnitType(2)H‚e-wUNIT_TYPE_FLYINGconstant unittype UNIT_TYPE_FLYING=ConvertUnitType(3)H‚f-wUNIT_TYPE_GROUNDconstant unittype UNIT_TYPE_GROUND=ConvertUnitType(4) llÈ$€Þ'wÅ_«Y‚g=UNIT_TYPE_ATTACKS_FLYINGconstant unittype UNIT_TYPE_ATTACKS_FLYING=ConvertUnitType(5)Y‚h=UNIT_TYPE_ATTACKS_GROUNDconstant unittype UNIT_TYPE_ATTACKS_GROUND=ConvertUnitType(6)Y‚i=UNIT_TYPE_MELEE_ATTACKERconstant unittype UNIT_TYPE_MELEE_ATTACKER=ConvertUnitType(7)[‚j? UNIT_TYPE_RANGED_ATTACKERconstant unittype UNIT_TYPE_RANGED_ATTACKER=ConvertUnitType(8)F‚k+uUNIT_TYPE_GIANTconstant unittype UNIT_TYPE_GIANT=ConvertUnitType(9)M‚l1}UNIT_TYPE_SUMMONEDconstant unittype UNIT_TYPE_SUMMONED=ConvertUnitType(10)K‚m/{UNIT_TYPE_STUNNEDconstant unittype UNIT_TYPE_STUNNED=ConvertUnitType(11)K‚n/{UNIT_TYPE_PLAGUEDconstant unittype UNIT_TYPE_PLAGUED=ConvertUnitType(12)I‚o-yUNIT_TYPE_SNAREDconstant unittype UNIT_TYPE_SNARED=ConvertUnitType(13)I‚p-yUNIT_TYPE_UNDEADconstant unittype UNIT_TYPE_UNDEAD=ConvertUnitType(14)R‚q5UNIT_TYPE_MECHANICALconstant unittype UNIT_TYPE_MECHANICAL=ConvertUnitType(15) ??‡Ó#q½ d´V¯E‚r)uUNIT_TYPE_PEONconstant unittype UNIT_TYPE_PEON=ConvertUnitType(16)I‚s-yUNIT_TYPE_SAPPERconstant unittype UNIT_TYPE_SAPPER=ConvertUnitType(17)M‚t1}UNIT_TYPE_TOWNHALLconstant unittype UNIT_TYPE_TOWNHALL=ConvertUnitType(18)K‚u/{UNIT_TYPE_ANCIENTconstant unittype UNIT_TYPE_ANCIENT=ConvertUnitType(19)I‚v-yUNIT_TYPE_TAURENconstant unittype UNIT_TYPE_TAUREN=ConvertUnitType(20)M‚w1}UNIT_TYPE_POISONEDconstant unittype UNIT_TYPE_POISONED=ConvertUnitType(21)T‚x7UNIT_TYPE_POLYMORPHEDconstant unittype UNIT_TYPE_POLYMORPHED=ConvertUnitType(22)M‚y1}UNIT_TYPE_SLEEPINGconstant unittype UNIT_TYPE_SLEEPING=ConvertUnitType(23)O‚z3UNIT_TYPE_RESISTANTconstant unittype UNIT_TYPE_RESISTANT=ConvertUnitType(24)M‚{1}UNIT_TYPE_ETHEREALconstant unittype UNIT_TYPE_ETHEREAL=ConvertUnitType(25)V‚|9UNIT_TYPE_MAGIC_IMMUNEconstant unittype UNIT_TYPE_MAGIC_IMMUNE=ConvertUnitType(26)N‚}3}ITEM_TYPE_PERMANENTconstant itemtype ITEM_TYPE_PERMANENT=ConvertItemType(0) ÎjÀi¶ûB¬J‚~/yITEM_TYPE_CHARGEDconstant itemtype ITEM_TYPE_CHARGED=ConvertItemType(1)J‚/yITEM_TYPE_POWERUPconstant itemtype ITEM_TYPE_POWERUP=ConvertItemType(2)Lƒ1{ITEM_TYPE_ARTIFACTconstant itemtype ITEM_TYPE_ARTIFACT=ConvertItemType(3)Sƒ7ITEM_TYPE_PURCHASABLEconstant itemtype ITEM_TYPE_PURCHASABLE=ConvertItemType(4)Lƒ1{ITEM_TYPE_CAMPAIGNconstant itemtype ITEM_TYPE_CAMPAIGN=ConvertItemType(5)Wƒ;ITEM_TYPE_MISCELLANEOUSconstant itemtype ITEM_TYPE_MISCELLANEOUS=ConvertItemType(6)Jƒ/yITEM_TYPE_UNKNOWNconstant itemtype ITEM_TYPE_UNKNOWN=ConvertItemType(7)Bƒ'qITEM_TYPE_ANYconstant itemtype ITEM_TYPE_ANY=ConvertItemType(8)Dƒ)sITEM_TYPE_TOMEconstant itemtype ITEM_TYPE_TOME=ConvertItemType(2)gƒECAMERA_FIELD_TARGET_DISTANCEconstant camerafield CAMERA_FIELD_TARGET_DISTANCE=ConvertCameraField(0)Qƒ/CAMERA_FIELD_FARZconstant camerafield CAMERA_FIELD_FARZ=ConvertCameraField(1) <<¦ `¼a· X¬gƒ ECAMERA_FIELD_ANGLE_OF_ATTACKconstant camerafield CAMERA_FIELD_ANGLE_OF_ATTACK=ConvertCameraField(2)cƒ ACAMERA_FIELD_FIELD_OF_VIEWconstant camerafield CAMERA_FIELD_FIELD_OF_VIEW=ConvertCameraField(3)Qƒ /CAMERA_FIELD_ROLLconstant camerafield CAMERA_FIELD_ROLL=ConvertCameraField(4)Yƒ 7 CAMERA_FIELD_ROTATIONconstant camerafield CAMERA_FIELD_ROTATION=ConvertCameraField(5)Wƒ 5 CAMERA_FIELD_ZOFFSETconstant camerafield CAMERA_FIELD_ZOFFSET=ConvertCameraField(6)Hƒ+yBLEND_MODE_NONEconstant blendmode BLEND_MODE_NONE=ConvertBlendMode(0)Sƒ5BLEND_MODE_DONT_CAREconstant blendmode BLEND_MODE_DONT_CARE=ConvertBlendMode(0)Qƒ3BLEND_MODE_KEYALPHAconstant blendmode BLEND_MODE_KEYALPHA=ConvertBlendMode(1)Jƒ-{BLEND_MODE_BLENDconstant blendmode BLEND_MODE_BLEND=ConvertBlendMode(2)Qƒ3BLEND_MODE_ADDITIVEconstant blendmode BLEND_MODE_ADDITIVE=ConvertBlendMode(3)Qƒ3BLEND_MODE_MODULATEconstant blendmode BLEND_MODE_MODULATE=ConvertBlendMode(4) ŠŠä8„Ö,‚Ú'tÃWƒ9BLEND_MODE_MODULATE_2Xconstant blendmode BLEND_MODE_MODULATE_2X=ConvertBlendMode(5)Qƒ+ RARITY_FREQUENTconstant raritycontrol RARITY_FREQUENT=ConvertRarityControl(0)Iƒ#RARITY_RAREconstant raritycontrol RARITY_RARE=ConvertRarityControl(1)Oƒ-TEXMAP_FLAG_NONEconstant texmapflags TEXMAP_FLAG_NONE=ConvertTexMapFlags(0)Sƒ1TEXMAP_FLAG_WRAP_Uconstant texmapflags TEXMAP_FLAG_WRAP_U=ConvertTexMapFlags(1)Sƒ1TEXMAP_FLAG_WRAP_Vconstant texmapflags TEXMAP_FLAG_WRAP_V=ConvertTexMapFlags(2)Uƒ3 TEXMAP_FLAG_WRAP_UVconstant texmapflags TEXMAP_FLAG_WRAP_UV=ConvertTexMapFlags(3)Jƒ/yFOG_OF_WAR_MASKEDconstant fogstate FOG_OF_WAR_MASKED=ConvertFogState(1)Jƒ/yFOG_OF_WAR_FOGGEDconstant fogstate FOG_OF_WAR_FOGGED=ConvertFogState(2)Lƒ1{FOG_OF_WAR_VISIBLEconstant fogstate FOG_OF_WAR_VISIBLE=ConvertFogState(4):ƒ1WCAMERA_MARGIN_LEFTconstant integer CAMERA_MARGIN_LEFT=0 ––ÕQ¥ùM£W±<ƒ3YCAMERA_MARGIN_RIGHTconstant integer CAMERA_MARGIN_RIGHT=18ƒ /UCAMERA_MARGIN_TOPconstant integer CAMERA_MARGIN_TOP=2>ƒ!5[CAMERA_MARGIN_BOTTOMconstant integer CAMERA_MARGIN_BOTTOM=3Qƒ"1EFFECT_TYPE_EFFECTconstant effecttype EFFECT_TYPE_EFFECT=ConvertEffectType(0)Qƒ#1EFFECT_TYPE_TARGETconstant effecttype EFFECT_TYPE_TARGET=ConvertEffectType(1)Qƒ$1EFFECT_TYPE_CASTERconstant effecttype EFFECT_TYPE_CASTER=ConvertEffectType(2)Sƒ%3EFFECT_TYPE_SPECIALconstant effecttype EFFECT_TYPE_SPECIAL=ConvertEffectType(3)[ƒ&; EFFECT_TYPE_AREA_EFFECTconstant effecttype EFFECT_TYPE_AREA_EFFECT=ConvertEffectType(4)Sƒ'3EFFECT_TYPE_MISSILEconstant effecttype EFFECT_TYPE_MISSILE=ConvertEffectType(5)Wƒ(7 EFFECT_TYPE_LIGHTNINGconstant effecttype EFFECT_TYPE_LIGHTNING=ConvertEffectType(6)Lƒ)/}SOUND_TYPE_EFFECTconstant soundtype SOUND_TYPE_EFFECT=ConvertSoundType(0) ˆˆæ 0b˜Î:zÆZ°[ƒ*= SOUND_TYPE_EFFECT_LOOPEDconstant soundtype SOUND_TYPE_EFFECT_LOOPED=ConvertSoundType(1)#ƒ+Cbj_PIconstant real bj_PI=3.14159!ƒ,Abj_Econstant real bj_E=2.71828/ƒ-%Mbj_CELLWIDTHconstant real bj_CELLWIDTH=128.03ƒ.)Qbj_CLIFFHEIGHTconstant real bj_CLIFFHEIGHT=128.03ƒ/)Qbj_UNIT_FACINGconstant real bj_UNIT_FACING=270.03ƒ0#Wbj_RADTODEGconstant real bj_RADTODEG=180.0/bj_PI3ƒ1#Wbj_DEGTORADconstant real bj_DEGTORAD=bj_PI/180.0=ƒ23[bj_TEXT_DELAY_QUESTconstant real bj_TEXT_DELAY_QUEST=20.00Iƒ3?gbj_TEXT_DELAY_QUESTUPDATEconstant real bj_TEXT_DELAY_QUESTUPDATE=20.00Eƒ4;cbj_TEXT_DELAY_QUESTDONEconstant real bj_TEXT_DELAY_QUESTDONE=20.00Iƒ5?gbj_TEXT_DELAY_QUESTFAILEDconstant real bj_TEXT_DELAY_QUESTFAILED=20.00Sƒ6Iqbj_TEXT_DELAY_QUESTREQUIREMENTconstant real bj_TEXT_DELAY_QUESTREQUIREMENT=20.00Mƒ7Ckbj_TEXT_DELAY_MISSIONFAILEDconstant real bj_TEXT_DELAY_MISSIONFAILED=20.00 kkµó5ƒÓ!e¦å(b­Gƒ8=ebj_TEXT_DELAY_ALWAYSHINTconstant real bj_TEXT_DELAY_ALWAYSHINT=12.00;ƒ91Ybj_TEXT_DELAY_HINTconstant real bj_TEXT_DELAY_HINT=12.00?ƒ:5]bj_TEXT_DELAY_SECRETconstant real bj_TEXT_DELAY_SECRET=10.00Kƒ;Aibj_TEXT_DELAY_UNITACQUIREDconstant real bj_TEXT_DELAY_UNITACQUIRED=15.00Mƒ<Ckbj_TEXT_DELAY_UNITAVAILABLEconstant real bj_TEXT_DELAY_UNITAVAILABLE=10.00Kƒ=Aibj_TEXT_DELAY_ITEMACQUIREDconstant real bj_TEXT_DELAY_ITEMACQUIRED=10.00Aƒ>7_bj_TEXT_DELAY_WARNINGconstant real bj_TEXT_DELAY_WARNING=12.00>ƒ?5[bj_QUEUE_DELAY_QUESTconstant real bj_QUEUE_DELAY_QUEST=5.00<ƒ@3Ybj_QUEUE_DELAY_HINTconstant real bj_QUEUE_DELAY_HINT=5.00@ƒA7]bj_QUEUE_DELAY_SECRETconstant real bj_QUEUE_DELAY_SECRET=3.007ƒB-Ubj_HANDICAP_EASYconstant real bj_HANDICAP_EASY=60.00HƒC?ebj_GAME_STARTED_THRESHOLDconstant real bj_GAME_STARTED_THRESHOLD=0.01PƒDGmbj_WAIT_FOR_COND_MIN_INTERVALconstant real bj_WAIT_FOR_COND_MIN_INTERVAL=0.10 }}ÄP†ÐX’Ú"^½DƒE;abj_POLLED_WAIT_INTERVALconstant real bj_POLLED_WAIT_INTERVAL=0.10PƒFGmbj_POLLED_WAIT_SKIP_THRESHOLDconstant real bj_POLLED_WAIT_SKIP_THRESHOLD=2.006ƒG-Sbj_MAX_INVENTORYconstant integer bj_MAX_INVENTORY=63ƒH)Qbj_MAX_PLAYERSconstant integer bj_MAX_PLAYERS=12GƒI=ebj_PLAYER_NEUTRAL_VICTIMconstant integer bj_PLAYER_NEUTRAL_VICTIM=13EƒJ;cbj_PLAYER_NEUTRAL_EXTRAconstant integer bj_PLAYER_NEUTRAL_EXTRA=14=ƒK3[bj_MAX_PLAYER_SLOTSconstant integer bj_MAX_PLAYER_SLOTS=167ƒL-Ubj_MAX_SKELETONSconstant integer bj_MAX_SKELETONS=25EƒM;cbj_MAX_STOCK_ITEM_SLOTSconstant integer bj_MAX_STOCK_ITEM_SLOTS=11EƒN;cbj_MAX_STOCK_UNIT_SLOTSconstant integer bj_MAX_STOCK_UNIT_SLOTS=119ƒO/Wbj_MAX_ITEM_LEVELconstant integer bj_MAX_ITEM_LEVEL=10,ƒP#Ibj_TOD_DAWNconstant real bj_TOD_DAWN=6.00-ƒQ#Kbj_TOD_DUSKconstant real bj_TOD_DUSK=18.00@ƒR7]bj_MELEE_STARTING_TODconstant real bj_MELEE_STARTING_TOD=8.00 ¬¬ùF—è;zÃa¬JƒS?ibj_MELEE_STARTING_GOLD_V0constant integer bj_MELEE_STARTING_GOLD_V0=750JƒT?ibj_MELEE_STARTING_GOLD_V1constant integer bj_MELEE_STARTING_GOLD_V1=500NƒUCmbj_MELEE_STARTING_LUMBER_V0constant integer bj_MELEE_STARTING_LUMBER_V0=200NƒVCmbj_MELEE_STARTING_LUMBER_V1constant integer bj_MELEE_STARTING_LUMBER_V1=150PƒWGmbj_MELEE_STARTING_HERO_TOKENSconstant integer bj_MELEE_STARTING_HERO_TOKENS=1<ƒX3Ybj_MELEE_HERO_LIMITconstant integer bj_MELEE_HERO_LIMIT=3FƒY=cbj_MELEE_HERO_TYPE_LIMITconstant integer bj_MELEE_HERO_TYPE_LIMIT=1LƒZCibj_MELEE_MINE_SEARCH_RADIUSconstant real bj_MELEE_MINE_SEARCH_RADIUS=2000Lƒ[Cibj_MELEE_CLEAR_UNITS_RADIUSconstant real bj_MELEE_CLEAR_UNITS_RADIUS=1500Hƒ\=gbj_MELEE_CRIPPLE_TIMEOUTconstant real bj_MELEE_CRIPPLE_TIMEOUT=120.00Qƒ]Gobj_MELEE_CRIPPLE_MSG_DURATIONconstant real bj_MELEE_CRIPPLE_MSG_DURATION=20.00 €€Õ*i½N ß/w¼Rƒ^Iobj_MELEE_MAX_TWINKED_HEROES_V0constant integer bj_MELEE_MAX_TWINKED_HEROES_V0=3Rƒ_Iobj_MELEE_MAX_TWINKED_HEROES_V1constant integer bj_MELEE_MAX_TWINKED_HEROES_V1=1<ƒ`3Ybj_CREEP_ITEM_DELAYconstant real bj_CREEP_ITEM_DELAY=0.50QƒaImbj_STOCK_RESTOCK_INITIAL_DELAYconstant real bj_STOCK_RESTOCK_INITIAL_DELAY=120Fƒb?abj_STOCK_RESTOCK_INTERVALconstant real bj_STOCK_RESTOCK_INTERVAL=30Eƒc;cbj_STOCK_MAX_ITERATIONSconstant integer bj_STOCK_MAX_ITERATIONS=20OƒdEmbj_MAX_DEST_IN_REGION_EVENTSconstant integer bj_MAX_DEST_IN_REGION_EVENTS=64<ƒe1[bj_CAMERA_MIN_FARZconstant integer bj_CAMERA_MIN_FARZ=100MƒfAmbj_CAMERA_DEFAULT_DISTANCEconstant integer bj_CAMERA_DEFAULT_DISTANCE=1650Eƒg9ebj_CAMERA_DEFAULT_FARZconstant integer bj_CAMERA_DEFAULT_FARZ=5000Bƒh7abj_CAMERA_DEFAULT_AOAconstant integer bj_CAMERA_DEFAULT_AOA=304Aƒi7_bj_CAMERA_DEFAULT_FOVconstant integer bj_CAMERA_DEFAULT_FOV=70 xx½ J•à)tÁa¬Bƒj9_bj_CAMERA_DEFAULT_ROLLconstant integer bj_CAMERA_DEFAULT_ROLL=0KƒkAibj_CAMERA_DEFAULT_ROTATIONconstant integer bj_CAMERA_DEFAULT_ROTATION=90<ƒl3Ybj_RESCUE_PING_TIMEconstant real bj_RESCUE_PING_TIME=2.00Hƒm?ebj_NOTHING_SOUND_DURATIONconstant real bj_NOTHING_SOUND_DURATION=5.00Hƒn?ebj_TRANSMISSION_PING_TIMEconstant real bj_TRANSMISSION_PING_TIME=1.00Fƒo;ebj_TRANSMISSION_IND_REDconstant integer bj_TRANSMISSION_IND_RED=255Hƒp=gbj_TRANSMISSION_IND_BLUEconstant integer bj_TRANSMISSION_IND_BLUE=255Jƒq?ibj_TRANSMISSION_IND_GREENconstant integer bj_TRANSMISSION_IND_GREEN=255Jƒr?ibj_TRANSMISSION_IND_ALPHAconstant integer bj_TRANSMISSION_IND_ALPHA=255PƒsGmbj_TRANSMISSION_PORT_HANGTIMEconstant real bj_TRANSMISSION_PORT_HANGTIME=1.50Hƒt?ebj_CINEMODE_INTERFACEFADEconstant real bj_CINEMODE_INTERFACEFADE=0.50Qƒu7bj_CINEMODE_GAMESPEEDconstant gamespeed bj_CINEMODE_GAMESPEED=MAP_SPEED_NORMAL dd»Y¤ç0‰Ð#r¹TƒvKqbj_CINEMODE_VOLUME_UNITMOVEMENTconstant real bj_CINEMODE_VOLUME_UNITMOVEMENT=0.40PƒwGmbj_CINEMODE_VOLUME_UNITSOUNDSconstant real bj_CINEMODE_VOLUME_UNITSOUNDS=0.00Hƒx?ebj_CINEMODE_VOLUME_COMBATconstant real bj_CINEMODE_VOLUME_COMBAT=0.40Hƒy?ebj_CINEMODE_VOLUME_SPELLSconstant real bj_CINEMODE_VOLUME_SPELLS=0.40@ƒz7]bj_CINEMODE_VOLUME_UIconstant real bj_CINEMODE_VOLUME_UI=0.00Fƒ{=cbj_CINEMODE_VOLUME_MUSICconstant real bj_CINEMODE_VOLUME_MUSIC=0.55Vƒ|Msbj_CINEMODE_VOLUME_AMBIENTSOUNDSconstant real bj_CINEMODE_VOLUME_AMBIENTSOUNDS=1.00Dƒ};abj_CINEMODE_VOLUME_FIREconstant real bj_CINEMODE_VOLUME_FIRE=0.60Pƒ~Gmbj_SPEECH_VOLUME_UNITMOVEMENTconstant real bj_SPEECH_VOLUME_UNITMOVEMENT=0.25LƒCibj_SPEECH_VOLUME_UNITSOUNDSconstant real bj_SPEECH_VOLUME_UNITSOUNDS=0.00D„;abj_SPEECH_VOLUME_COMBATconstant real bj_SPEECH_VOLUME_COMBAT=0.25D„;abj_SPEECH_VOLUME_SPELLSconstant real bj_SPEECH_VOLUME_SPELLS=0.25 ‚‚Á[žæ1xÅC‚Á<„3Ybj_SPEECH_VOLUME_UIconstant real bj_SPEECH_VOLUME_UI=0.00B„9_bj_SPEECH_VOLUME_MUSICconstant real bj_SPEECH_VOLUME_MUSIC=0.55R„Iobj_SPEECH_VOLUME_AMBIENTSOUNDSconstant real bj_SPEECH_VOLUME_AMBIENTSOUNDS=1.00@„7]bj_SPEECH_VOLUME_FIREconstant real bj_SPEECH_VOLUME_FIRE=0.60E„=abj_SMARTPAN_TRESHOLD_PANconstant real bj_SMARTPAN_TRESHOLD_PAN=500H„?ebj_SMARTPAN_TRESHOLD_SNAPconstant real bj_SMARTPAN_TRESHOLD_SNAP=3500D„9cbj_MAX_QUEUED_TRIGGERSconstant integer bj_MAX_QUEUED_TRIGGERS=100J„ ?ibj_QUEUED_TRIGGER_TIMEOUTconstant real bj_QUEUED_TRIGGER_TIMEOUT=180.00<„ 3Ybj_CAMPAIGN_INDEX_Tconstant integer bj_CAMPAIGN_INDEX_T=0<„ 3Ybj_CAMPAIGN_INDEX_Hconstant integer bj_CAMPAIGN_INDEX_H=1<„ 3Ybj_CAMPAIGN_INDEX_Uconstant integer bj_CAMPAIGN_INDEX_U=2<„ 3Ybj_CAMPAIGN_INDEX_Oconstant integer bj_CAMPAIGN_INDEX_O=3<„3Ybj_CAMPAIGN_INDEX_Nconstant integer bj_CAMPAIGN_INDEX_N=4 OOÑS”ÕW˜Ûa¤>„5[bj_CAMPAIGN_INDEX_XNconstant integer bj_CAMPAIGN_INDEX_XN=5>„5[bj_CAMPAIGN_INDEX_XHconstant integer bj_CAMPAIGN_INDEX_XH=6>„5[bj_CAMPAIGN_INDEX_XUconstant integer bj_CAMPAIGN_INDEX_XU=7>„5[bj_CAMPAIGN_INDEX_XOconstant integer bj_CAMPAIGN_INDEX_XO=8>„5[bj_CAMPAIGN_OFFSET_Tconstant integer bj_CAMPAIGN_OFFSET_T=0>„5[bj_CAMPAIGN_OFFSET_Hconstant integer bj_CAMPAIGN_OFFSET_H=1>„5[bj_CAMPAIGN_OFFSET_Uconstant integer bj_CAMPAIGN_OFFSET_U=2>„5[bj_CAMPAIGN_OFFSET_Oconstant integer bj_CAMPAIGN_OFFSET_O=3>„5[bj_CAMPAIGN_OFFSET_Nconstant integer bj_CAMPAIGN_OFFSET_N=4@„7]bj_CAMPAIGN_OFFSET_XNconstant integer bj_CAMPAIGN_OFFSET_XN=0@„7]bj_CAMPAIGN_OFFSET_XHconstant integer bj_CAMPAIGN_OFFSET_XH=1@„7]bj_CAMPAIGN_OFFSET_XUconstant integer bj_CAMPAIGN_OFFSET_XU=2@„7]bj_CAMPAIGN_OFFSET_XOconstant integer bj_CAMPAIGN_OFFSET_XO=3Y„5bj_MISSION_INDEX_T00constant integer bj_MISSION_INDEX_T00=bj_CAMPAIGN_OFFSET_T*1000+0 hhÄ |Ø4ìH¤Y„5bj_MISSION_INDEX_T01constant integer bj_MISSION_INDEX_T01=bj_CAMPAIGN_OFFSET_T*1000+1Y„5bj_MISSION_INDEX_H00constant integer bj_MISSION_INDEX_H00=bj_CAMPAIGN_OFFSET_H*1000+0Y„5bj_MISSION_INDEX_H01constant integer bj_MISSION_INDEX_H01=bj_CAMPAIGN_OFFSET_H*1000+1Y„ 5bj_MISSION_INDEX_H02constant integer bj_MISSION_INDEX_H02=bj_CAMPAIGN_OFFSET_H*1000+2Y„!5bj_MISSION_INDEX_H03constant integer bj_MISSION_INDEX_H03=bj_CAMPAIGN_OFFSET_H*1000+3Y„"5bj_MISSION_INDEX_H04constant integer bj_MISSION_INDEX_H04=bj_CAMPAIGN_OFFSET_H*1000+4Y„#5bj_MISSION_INDEX_H05constant integer bj_MISSION_INDEX_H05=bj_CAMPAIGN_OFFSET_H*1000+5Y„$5bj_MISSION_INDEX_H06constant integer bj_MISSION_INDEX_H06=bj_CAMPAIGN_OFFSET_H*1000+6Y„%5bj_MISSION_INDEX_H07constant integer bj_MISSION_INDEX_H07=bj_CAMPAIGN_OFFSET_H*1000+7Y„&5bj_MISSION_INDEX_H08constant integer bj_MISSION_INDEX_H08=bj_CAMPAIGN_OFFSET_H*1000+8 ffÂ|Ø4ìH¤Y„'5bj_MISSION_INDEX_H09constant integer bj_MISSION_INDEX_H09=bj_CAMPAIGN_OFFSET_H*1000+9Z„(5bj_MISSION_INDEX_H10constant integer bj_MISSION_INDEX_H10=bj_CAMPAIGN_OFFSET_H*1000+10Z„)5bj_MISSION_INDEX_H11constant integer bj_MISSION_INDEX_H11=bj_CAMPAIGN_OFFSET_H*1000+11Y„*5bj_MISSION_INDEX_U00constant integer bj_MISSION_INDEX_U00=bj_CAMPAIGN_OFFSET_U*1000+0Y„+5bj_MISSION_INDEX_U01constant integer bj_MISSION_INDEX_U01=bj_CAMPAIGN_OFFSET_U*1000+1Y„,5bj_MISSION_INDEX_U02constant integer bj_MISSION_INDEX_U02=bj_CAMPAIGN_OFFSET_U*1000+2Y„-5bj_MISSION_INDEX_U03constant integer bj_MISSION_INDEX_U03=bj_CAMPAIGN_OFFSET_U*1000+3Y„.5bj_MISSION_INDEX_U05constant integer bj_MISSION_INDEX_U05=bj_CAMPAIGN_OFFSET_U*1000+4Y„/5bj_MISSION_INDEX_U07constant integer bj_MISSION_INDEX_U07=bj_CAMPAIGN_OFFSET_U*1000+5Y„05bj_MISSION_INDEX_U08constant integer bj_MISSION_INDEX_U08=bj_CAMPAIGN_OFFSET_U*1000+6 hhÄ |Ø4ìH¤Y„15bj_MISSION_INDEX_U09constant integer bj_MISSION_INDEX_U09=bj_CAMPAIGN_OFFSET_U*1000+7Y„25bj_MISSION_INDEX_U10constant integer bj_MISSION_INDEX_U10=bj_CAMPAIGN_OFFSET_U*1000+8Y„35bj_MISSION_INDEX_U11constant integer bj_MISSION_INDEX_U11=bj_CAMPAIGN_OFFSET_U*1000+9Y„45bj_MISSION_INDEX_O00constant integer bj_MISSION_INDEX_O00=bj_CAMPAIGN_OFFSET_O*1000+0Y„55bj_MISSION_INDEX_O01constant integer bj_MISSION_INDEX_O01=bj_CAMPAIGN_OFFSET_O*1000+1Y„65bj_MISSION_INDEX_O02constant integer bj_MISSION_INDEX_O02=bj_CAMPAIGN_OFFSET_O*1000+2Y„75bj_MISSION_INDEX_O03constant integer bj_MISSION_INDEX_O03=bj_CAMPAIGN_OFFSET_O*1000+3Y„85bj_MISSION_INDEX_O04constant integer bj_MISSION_INDEX_O04=bj_CAMPAIGN_OFFSET_O*1000+4Y„95bj_MISSION_INDEX_O05constant integer bj_MISSION_INDEX_O05=bj_CAMPAIGN_OFFSET_O*1000+5Y„:5bj_MISSION_INDEX_O06constant integer bj_MISSION_INDEX_O06=bj_CAMPAIGN_OFFSET_O*1000+6 ggÃ{Ø4ìH¤Y„;5bj_MISSION_INDEX_O07constant integer bj_MISSION_INDEX_O07=bj_CAMPAIGN_OFFSET_O*1000+7Y„<5bj_MISSION_INDEX_O08constant integer bj_MISSION_INDEX_O08=bj_CAMPAIGN_OFFSET_O*1000+8Y„=5bj_MISSION_INDEX_O09constant integer bj_MISSION_INDEX_O09=bj_CAMPAIGN_OFFSET_O*1000+9Z„>5bj_MISSION_INDEX_O10constant integer bj_MISSION_INDEX_O10=bj_CAMPAIGN_OFFSET_O*1000+10Y„?5bj_MISSION_INDEX_N00constant integer bj_MISSION_INDEX_N00=bj_CAMPAIGN_OFFSET_N*1000+0Y„@5bj_MISSION_INDEX_N01constant integer bj_MISSION_INDEX_N01=bj_CAMPAIGN_OFFSET_N*1000+1Y„A5bj_MISSION_INDEX_N02constant integer bj_MISSION_INDEX_N02=bj_CAMPAIGN_OFFSET_N*1000+2Y„B5bj_MISSION_INDEX_N03constant integer bj_MISSION_INDEX_N03=bj_CAMPAIGN_OFFSET_N*1000+3Y„C5bj_MISSION_INDEX_N04constant integer bj_MISSION_INDEX_N04=bj_CAMPAIGN_OFFSET_N*1000+4Y„D5bj_MISSION_INDEX_N05constant integer bj_MISSION_INDEX_N05=bj_CAMPAIGN_OFFSET_N*1000+5 VV²jÆ%„ãB¡Y„E5bj_MISSION_INDEX_N06constant integer bj_MISSION_INDEX_N06=bj_CAMPAIGN_OFFSET_N*1000+6Y„F5bj_MISSION_INDEX_N07constant integer bj_MISSION_INDEX_N07=bj_CAMPAIGN_OFFSET_N*1000+7Y„G5bj_MISSION_INDEX_N08constant integer bj_MISSION_INDEX_N08=bj_CAMPAIGN_OFFSET_N*1000+8Y„H5bj_MISSION_INDEX_N09constant integer bj_MISSION_INDEX_N09=bj_CAMPAIGN_OFFSET_N*1000+9\„I7bj_MISSION_INDEX_XN00constant integer bj_MISSION_INDEX_XN00=bj_CAMPAIGN_OFFSET_XN*1000+0\„J7bj_MISSION_INDEX_XN01constant integer bj_MISSION_INDEX_XN01=bj_CAMPAIGN_OFFSET_XN*1000+1\„K7bj_MISSION_INDEX_XN02constant integer bj_MISSION_INDEX_XN02=bj_CAMPAIGN_OFFSET_XN*1000+2\„L7bj_MISSION_INDEX_XN03constant integer bj_MISSION_INDEX_XN03=bj_CAMPAIGN_OFFSET_XN*1000+3\„M7bj_MISSION_INDEX_XN04constant integer bj_MISSION_INDEX_XN04=bj_CAMPAIGN_OFFSET_XN*1000+4\„N7bj_MISSION_INDEX_XN05constant integer bj_MISSION_INDEX_XN05=bj_CAMPAIGN_OFFSET_XN*1000+5 II¨fÅ%„ãB¡\„O7bj_MISSION_INDEX_XN06constant integer bj_MISSION_INDEX_XN06=bj_CAMPAIGN_OFFSET_XN*1000+6\„P7bj_MISSION_INDEX_XN07constant integer bj_MISSION_INDEX_XN07=bj_CAMPAIGN_OFFSET_XN*1000+7\„Q7bj_MISSION_INDEX_XN08constant integer bj_MISSION_INDEX_XN08=bj_CAMPAIGN_OFFSET_XN*1000+8\„R7bj_MISSION_INDEX_XN09constant integer bj_MISSION_INDEX_XN09=bj_CAMPAIGN_OFFSET_XN*1000+9]„S7bj_MISSION_INDEX_XN10constant integer bj_MISSION_INDEX_XN10=bj_CAMPAIGN_OFFSET_XN*1000+10\„T7bj_MISSION_INDEX_XH00constant integer bj_MISSION_INDEX_XH00=bj_CAMPAIGN_OFFSET_XH*1000+0\„U7bj_MISSION_INDEX_XH01constant integer bj_MISSION_INDEX_XH01=bj_CAMPAIGN_OFFSET_XH*1000+1\„V7bj_MISSION_INDEX_XH02constant integer bj_MISSION_INDEX_XH02=bj_CAMPAIGN_OFFSET_XH*1000+2\„W7bj_MISSION_INDEX_XH03constant integer bj_MISSION_INDEX_XH03=bj_CAMPAIGN_OFFSET_XH*1000+3\„X7bj_MISSION_INDEX_XH04constant integer bj_MISSION_INDEX_XH04=bj_CAMPAIGN_OFFSET_XH*1000+4 JJ©gÆ%„ãB¡\„Y7bj_MISSION_INDEX_XH05constant integer bj_MISSION_INDEX_XH05=bj_CAMPAIGN_OFFSET_XH*1000+5\„Z7bj_MISSION_INDEX_XH06constant integer bj_MISSION_INDEX_XH06=bj_CAMPAIGN_OFFSET_XH*1000+6\„[7bj_MISSION_INDEX_XH07constant integer bj_MISSION_INDEX_XH07=bj_CAMPAIGN_OFFSET_XH*1000+7\„\7bj_MISSION_INDEX_XH08constant integer bj_MISSION_INDEX_XH08=bj_CAMPAIGN_OFFSET_XH*1000+8\„]7bj_MISSION_INDEX_XH09constant integer bj_MISSION_INDEX_XH09=bj_CAMPAIGN_OFFSET_XH*1000+9\„^7bj_MISSION_INDEX_XU00constant integer bj_MISSION_INDEX_XU00=bj_CAMPAIGN_OFFSET_XU*1000+0\„_7bj_MISSION_INDEX_XU01constant integer bj_MISSION_INDEX_XU01=bj_CAMPAIGN_OFFSET_XU*1000+1\„`7bj_MISSION_INDEX_XU02constant integer bj_MISSION_INDEX_XU02=bj_CAMPAIGN_OFFSET_XU*1000+2\„a7bj_MISSION_INDEX_XU03constant integer bj_MISSION_INDEX_XU03=bj_CAMPAIGN_OFFSET_XU*1000+3\„b7bj_MISSION_INDEX_XU04constant integer bj_MISSION_INDEX_XU04=bj_CAMPAIGN_OFFSET_XU*1000+4 ¥¥cÂ!€à@ \„c7bj_MISSION_INDEX_XU05constant integer bj_MISSION_INDEX_XU05=bj_CAMPAIGN_OFFSET_XU*1000+5\„d7bj_MISSION_INDEX_XU06constant integer bj_MISSION_INDEX_XU06=bj_CAMPAIGN_OFFSET_XU*1000+6\„e7bj_MISSION_INDEX_XU07constant integer bj_MISSION_INDEX_XU07=bj_CAMPAIGN_OFFSET_XU*1000+7\„f7bj_MISSION_INDEX_XU08constant integer bj_MISSION_INDEX_XU08=bj_CAMPAIGN_OFFSET_XU*1000+8\„g7bj_MISSION_INDEX_XU09constant integer bj_MISSION_INDEX_XU09=bj_CAMPAIGN_OFFSET_XU*1000+9]„h7bj_MISSION_INDEX_XU10constant integer bj_MISSION_INDEX_XU10=bj_CAMPAIGN_OFFSET_XU*1000+10]„i7bj_MISSION_INDEX_XU11constant integer bj_MISSION_INDEX_XU11=bj_CAMPAIGN_OFFSET_XU*1000+11]„j7bj_MISSION_INDEX_XU12constant integer bj_MISSION_INDEX_XU12=bj_CAMPAIGN_OFFSET_XU*1000+12]„k7bj_MISSION_INDEX_XU13constant integer bj_MISSION_INDEX_XU13=bj_CAMPAIGN_OFFSET_XU*1000+13 //ŽÑWšÝ c¦é,p±\„l7bj_MISSION_INDEX_XO00constant integer bj_MISSION_INDEX_XO00=bj_CAMPAIGN_OFFSET_XO*1000+0@„m7]bj_CINEMATICINDEX_TOPconstant integer bj_CINEMATICINDEX_TOP=0@„n7]bj_CINEMATICINDEX_HOPconstant integer bj_CINEMATICINDEX_HOP=1@„o7]bj_CINEMATICINDEX_HEDconstant integer bj_CINEMATICINDEX_HED=2@„p7]bj_CINEMATICINDEX_OOPconstant integer bj_CINEMATICINDEX_OOP=3@„q7]bj_CINEMATICINDEX_OEDconstant integer bj_CINEMATICINDEX_OED=4@„r7]bj_CINEMATICINDEX_UOPconstant integer bj_CINEMATICINDEX_UOP=5@„s7]bj_CINEMATICINDEX_UEDconstant integer bj_CINEMATICINDEX_UED=6@„t7]bj_CINEMATICINDEX_NOPconstant integer bj_CINEMATICINDEX_NOP=7@„u7]bj_CINEMATICINDEX_NEDconstant integer bj_CINEMATICINDEX_NED=8@„v7]bj_CINEMATICINDEX_XOPconstant integer bj_CINEMATICINDEX_XOP=9A„w7_bj_CINEMATICINDEX_XEDconstant integer bj_CINEMATICINDEX_XED=10>„x5[bj_ALLIANCE_UNALLIEDconstant integer bj_ALLIANCE_UNALLIED=0L„yCibj_ALLIANCE_UNALLIED_VISIONconstant integer bj_ALLIANCE_UNALLIED_VISION=1 ^^›æ/~½ Q˜×W’É:„z1Wbj_ALLIANCE_ALLIEDconstant integer bj_ALLIANCE_ALLIED=2H„{?ebj_ALLIANCE_ALLIED_VISIONconstant integer bj_ALLIANCE_ALLIED_VISION=3F„|=cbj_ALLIANCE_ALLIED_UNITSconstant integer bj_ALLIANCE_ALLIED_UNITS=4L„}Cibj_ALLIANCE_ALLIED_ADVUNITSconstant integer bj_ALLIANCE_ALLIED_ADVUNITS=5<„~3Ybj_ALLIANCE_NEUTRALconstant integer bj_ALLIANCE_NEUTRAL=6J„Agbj_ALLIANCE_NEUTRAL_VISIONconstant integer bj_ALLIANCE_NEUTRAL_VISION=7D…;abj_KEYEVENTTYPE_DEPRESSconstant integer bj_KEYEVENTTYPE_DEPRESS=0D…;abj_KEYEVENTTYPE_RELEASEconstant integer bj_KEYEVENTTYPE_RELEASE=1<…3Ybj_KEYEVENTKEY_LEFTconstant integer bj_KEYEVENTKEY_LEFT=0>…5[bj_KEYEVENTKEY_RIGHTconstant integer bj_KEYEVENTKEY_RIGHT=1<…3Ybj_KEYEVENTKEY_DOWNconstant integer bj_KEYEVENTKEY_DOWN=28…/Ubj_KEYEVENTKEY_UPconstant integer bj_KEYEVENTKEY_UP=34…+Qbj_TIMETYPE_ADDconstant integer bj_TIMETYPE_ADD=04…+Qbj_TIMETYPE_SETconstant integer bj_TIMETYPE_SET=1 xx¯üI˜ë:Ú!l±4…+Qbj_TIMETYPE_SUBconstant integer bj_TIMETYPE_SUB=2J… Agbj_CAMERABOUNDS_ADJUST_ADDconstant integer bj_CAMERABOUNDS_ADJUST_ADD=0J… Agbj_CAMERABOUNDS_ADJUST_SUBconstant integer bj_CAMERABOUNDS_ADJUST_SUB=1L… Cibj_QUESTTYPE_REQ_DISCOVEREDconstant integer bj_QUESTTYPE_REQ_DISCOVERED=0P… Gmbj_QUESTTYPE_REQ_UNDISCOVEREDconstant integer bj_QUESTTYPE_REQ_UNDISCOVERED=1L… Cibj_QUESTTYPE_OPT_DISCOVEREDconstant integer bj_QUESTTYPE_OPT_DISCOVERED=2P…Gmbj_QUESTTYPE_OPT_UNDISCOVEREDconstant integer bj_QUESTTYPE_OPT_UNDISCOVERED=3J…Agbj_QUESTMESSAGE_DISCOVEREDconstant integer bj_QUESTMESSAGE_DISCOVERED=0D…;abj_QUESTMESSAGE_UPDATEDconstant integer bj_QUESTMESSAGE_UPDATED=1H…?ebj_QUESTMESSAGE_COMPLETEDconstant integer bj_QUESTMESSAGE_COMPLETED=2B…9_bj_QUESTMESSAGE_FAILEDconstant integer bj_QUESTMESSAGE_FAILED=3L…Cibj_QUESTMESSAGE_REQUIREMENTconstant integer bj_QUESTMESSAGE_REQUIREMENT=4 Ò`¥öJœä+t»P…Gmbj_QUESTMESSAGE_MISSIONFAILEDconstant integer bj_QUESTMESSAGE_MISSIONFAILED=5J…Agbj_QUESTMESSAGE_ALWAYSHINTconstant integer bj_QUESTMESSAGE_ALWAYSHINT=6>…5[bj_QUESTMESSAGE_HINTconstant integer bj_QUESTMESSAGE_HINT=7B…9_bj_QUESTMESSAGE_SECRETconstant integer bj_QUESTMESSAGE_SECRET=8N…Ekbj_QUESTMESSAGE_UNITACQUIREDconstant integer bj_QUESTMESSAGE_UNITACQUIRED=9Q…Gobj_QUESTMESSAGE_UNITAVAILABLEconstant integer bj_QUESTMESSAGE_UNITAVAILABLE=10O…Embj_QUESTMESSAGE_ITEMACQUIREDconstant integer bj_QUESTMESSAGE_ITEMACQUIRED=11E…;cbj_QUESTMESSAGE_WARNINGconstant integer bj_QUESTMESSAGE_WARNING=12D…;abj_SORTTYPE_SORTBYVALUEconstant integer bj_SORTTYPE_SORTBYVALUE=0F…=cbj_SORTTYPE_SORTBYPLAYERconstant integer bj_SORTTYPE_SORTBYPLAYER=1D…;abj_SORTTYPE_SORTBYLABELconstant integer bj_SORTTYPE_SORTBYLABEL=2B…9_bj_CINEFADETYPE_FADEINconstant integer bj_CINEFADETYPE_FADEIN=0 uu¼N•Òd¯ö7~ÁD… ;abj_CINEFADETYPE_FADEOUTconstant integer bj_CINEFADETYPE_FADEOUT=1H…!?ebj_CINEFADETYPE_FADEOUTINconstant integer bj_CINEFADETYPE_FADEOUTIN=2D…";abj_REMOVEBUFFS_POSITIVEconstant integer bj_REMOVEBUFFS_POSITIVE=0D…#;abj_REMOVEBUFFS_NEGATIVEconstant integer bj_REMOVEBUFFS_NEGATIVE=1:…$1Wbj_REMOVEBUFFS_ALLconstant integer bj_REMOVEBUFFS_ALL=2D…%;abj_REMOVEBUFFS_NONTLIFEconstant integer bj_REMOVEBUFFS_NONTLIFE=3H…&?ebj_BUFF_POLARITY_POSITIVEconstant integer bj_BUFF_POLARITY_POSITIVE=0H…'?ebj_BUFF_POLARITY_NEGATIVEconstant integer bj_BUFF_POLARITY_NEGATIVE=1D…(;abj_BUFF_POLARITY_EITHERconstant integer bj_BUFF_POLARITY_EITHER=2>…)5[bj_BUFF_RESIST_MAGICconstant integer bj_BUFF_RESIST_MAGIC=0D…*;abj_BUFF_RESIST_PHYSICALconstant integer bj_BUFF_RESIST_PHYSICAL=1@…+7]bj_BUFF_RESIST_EITHERconstant integer bj_BUFF_RESIST_EITHER=2<…,3Ybj_BUFF_RESIST_BOTHconstant integer bj_BUFF_RESIST_BOTH=3 BBy°ç&e¤÷Jî3v¿4…-+Qbj_HEROSTAT_STRconstant integer bj_HEROSTAT_STR=04….+Qbj_HEROSTAT_AGIconstant integer bj_HEROSTAT_AGI=14…/+Qbj_HEROSTAT_INTconstant integer bj_HEROSTAT_INT=2<…03Ybj_MODIFYMETHOD_ADDconstant integer bj_MODIFYMETHOD_ADD=0<…13Ybj_MODIFYMETHOD_SUBconstant integer bj_MODIFYMETHOD_SUB=1<…23Ybj_MODIFYMETHOD_SETconstant integer bj_MODIFYMETHOD_SET=2P…3Gmbj_UNIT_STATE_METHOD_ABSOLUTEconstant integer bj_UNIT_STATE_METHOD_ABSOLUTE=0P…4Gmbj_UNIT_STATE_METHOD_RELATIVEconstant integer bj_UNIT_STATE_METHOD_RELATIVE=1P…5Gmbj_UNIT_STATE_METHOD_DEFAULTSconstant integer bj_UNIT_STATE_METHOD_DEFAULTS=2N…6Ekbj_UNIT_STATE_METHOD_MAXIMUMconstant integer bj_UNIT_STATE_METHOD_MAXIMUM=3B…79_bj_GATEOPERATION_CLOSEconstant integer bj_GATEOPERATION_CLOSE=0@…87]bj_GATEOPERATION_OPENconstant integer bj_GATEOPERATION_OPEN=1F…9=cbj_GATEOPERATION_DESTROYconstant integer bj_GATEOPERATION_DESTROY=2>…:5[bj_GAMECACHE_BOOLEANconstant integer bj_GAMECACHE_BOOLEAN=0 ,,m¨ã"e¦õ:Èd³>…;5[bj_GAMECACHE_INTEGERconstant integer bj_GAMECACHE_INTEGER=18…</Ubj_GAMECACHE_REALconstant integer bj_GAMECACHE_REAL=28…=/Ubj_GAMECACHE_UNITconstant integer bj_GAMECACHE_UNIT=3<…>3Ybj_GAMECACHE_STRINGconstant integer bj_GAMECACHE_STRING=4@…?7]bj_ITEM_STATUS_HIDDENconstant integer bj_ITEM_STATUS_HIDDEN=0>…@5[bj_ITEM_STATUS_OWNEDconstant integer bj_ITEM_STATUS_OWNED=1L…ACibj_ITEM_STATUS_INVULNERABLEconstant integer bj_ITEM_STATUS_INVULNERABLE=2B…B9_bj_ITEM_STATUS_POWERUPconstant integer bj_ITEM_STATUS_POWERUP=3D…C;abj_ITEM_STATUS_SELLABLEconstant integer bj_ITEM_STATUS_SELLABLE=4D…D;abj_ITEM_STATUS_PAWNABLEconstant integer bj_ITEM_STATUS_PAWNABLE=5J…EAgbj_ITEMCODE_STATUS_POWERUPconstant integer bj_ITEMCODE_STATUS_POWERUP=0L…FCibj_ITEMCODE_STATUS_SELLABLEconstant integer bj_ITEMCODE_STATUS_SELLABLE=1L…GCibj_ITEMCODE_STATUS_PAWNABLEconstant integer bj_ITEMCODE_STATUS_PAWNABLE=2J…HAgbj_MINIMAPPINGSTYLE_SIMPLEconstant integer bj_MINIMAPPINGSTYLE_SIMPLE=0 L™æ3|»øFˆÊb±LJ…UAgbj_ELEVATOR_WALL_TYPE_WESTconstant integer bj_ELEVATOR_WALL_TYPE_WEST=4J…IAgbj_MINIMAPPINGSTYLE_FLASHYconstant integer bj_MINIMAPPINGSTYLE_FLASHY=1J…JAgbj_MINIMAPPINGSTYLE_ATTACKconstant integer bj_MINIMAPPINGSTYLE_ATTACK=2F…K=cbj_CORPSE_MAX_DEATH_TIMEconstant real bj_CORPSE_MAX_DEATH_TIME=8.00<…L3Ybj_CORPSETYPE_FLESHconstant integer bj_CORPSETYPE_FLESH=0:…M1Wbj_CORPSETYPE_BONEconstant integer bj_CORPSETYPE_BONE=1K…N=mbj_ELEVATOR_BLOCKER_CODEconstant integer bj_ELEVATOR_BLOCKER_CODE='DTep'?…O1abj_ELEVATOR_CODE01constant integer bj_ELEVATOR_CODE01='DTrf'?…P1abj_ELEVATOR_CODE02constant integer bj_ELEVATOR_CODE02='DTrx'H…Q?ebj_ELEVATOR_WALL_TYPE_ALLconstant integer bj_ELEVATOR_WALL_TYPE_ALL=0J…RAgbj_ELEVATOR_WALL_TYPE_EASTconstant integer bj_ELEVATOR_WALL_TYPE_EAST=1L…SCibj_ELEVATOR_WALL_TYPE_NORTHconstant integer bj_ELEVATOR_WALL_TYPE_NORTH=2L…TCibj_ELEVATOR_WALL_TYPE_SOUTHconstant integer bj_ELEVATOR_WALL_TYPE_SOUTH=3 ³øøMMMd¥Ži)mSaveUnitHandlenative SaveUnitHandle takeŽ¶–Š7ŽmC‚5SaveTriggerConditionHandle native SaveTriggerConditionHandle takes hashtable table, integer parentKey, integer childKey, triggercondition whichTriggercondition returns booleanš/?‚)SaveMultiboardItemHandle native SaveMultiboardItemHandle takes hashtable table, integer parentKey, integer childKey, multiboarditem whichMultiboarditem returns boolean ——lY:nšBB)‚eStoreIntegerBJfunction StoreIB)‚eStoreIntegerBJfunction StoreIntegerBJ takes integer value, string kQ -‚SaveUnitHandleBJfunction SaveUnitHandleBJ takes unit whichUnit, integer key, integer missionKey, hashtable table returns boolean return SaveUnitHandle(table, missionKey, key, whichUnit) endfunctioni 5ƒ'SaveUnitPoolHandleBJfunction SaveUnitPoolHandleBJ takes unitpool whichUnitpool, integer key, integer missionKey, hashtable table returns boolean return SaveUnitPoolHandle(table, missionKey, key, whichUnitpool) endfunction] 1ƒSaveWidgetHandleBJfunction SaveWidgetHandleBJ takes widget whichWidget, integer key, integer missionKey, hashtable table returns boolean return SaveWidgetHandle(table, missionKey, key, whichWidget) endfunctionB)‚eStoreBooleanBJfunction StoreBooleanBJ takes boolean value, string key, string missionKey, gamecache cache returns nothing call StoreBoolean(cache, missionKey, key, value) endfunction ¼'˜^ˆ'^5n33FlushChildHashtablenative FlushChildHashtable takes hashtable table, integer parentKey returns nothingB)‚eStoreIntegerBJfunction StoreIntegerBJ takes integer value, string key, string missionKey, gamecache cache returns nothing call StoreInteger(cache, missionKey, key, value) endfunction6#‚SStoreRealBJfunction StoreRealBJ takes real value, string key, string missionKey, gamecache cache returns nothing call StoreReal(cache, missionKey, key, value) endfunctionm%?StringHashBJfunction StringHashBJ takes string s returns integer return StringHash(s) endfunction‚0W„TriggerRegisterDestDeathInRegionEventfunction TriggerRegisterDestDeathInRegionEvent takes trigger trig, rect r returns nothing set bj_destInRegionDiesTrig = trig set bj_destInRegionDiesCount = 0 call EnumDestructablesInRect(r, null, function RegisterDestDeathInRegionEnum) endfunctionD ¼…pîN¼N-ySaveButtonHandlenative SaveButtonHandle takes hashtable table, integer parentKey, integer childKey, button whichButton returns booleanM7‚ SaveBooleanExprHandlenative SaveBooleanExprHandle takes hashtable table, integer parentKey, integer childKey, boolexpr whichBoolexpr returns booleanL#eSaveBooleannative SaveBoolean takes hashtable table, integer parentKey, integer childKey, boolean value returns nothingK/SaveAbilityHandlenative SaveAbilityHandle takes hashtable table, integer parentKey, integer childKey, ability whichAbility returns boolean|J/SRemoveSavedStringnative RemoveSavedString takes hashtable table, integer parentKey, integer childKey returns nothingxI+ORemoveSavedRealnative RemoveSavedReal takes hashtable table, integer parentKey, integer childKey returns nothing °räVÔJ°Z1‚SaveItemPoolHandlenative SaveItemPoolHandle takes hashtable table, integer parentKey, integer childKey, itempool whichItempool returns booleanY)mSaveItemHandlenative SaveItemHandle takes hashtable table, integer parentKey, integer childKey, item whichItem returns booleanX#eSaveIntegernative SaveInteger takes hashtable table, integer parentKey, integer childKey, integer value returns nothing W+sSaveImageHandlenative SaveImageHandle takes hashtable table, integer parentKey, integer childKey, image whichImage returns boolean V+sSaveGroupHandlenative SaveGroupHandle takes hashtable table, integer parentKey, integer childKey, group whichGroup returns boolean U+sSaveForceHandlenative SaveForceHandle takes hashtable table, integer parentKey, integer childKey, force whichForce returns boolean ’’ÿs…|>Ž>ž–j ALoadStr native LoadStr takes hashtable table, integer parentKey, integer childKey returns string q %GLoadInteger native LoadInteger takes hashtable table, integer parentKey, integer childKey returns integer ;iLoadDestructableHandle native LoadDestructableHandle takes hashtable table, integer parentKey, integer childKey returns destructable ~1ULoadAbilityHandle native LoadAbilityHandle takes hashtable table, integer parentKey, integer childKey returns ability x-MLoadTimerHandle native LoadTimerHandle takes hashtable table, integer parentKey, integer childKey returns timer  AtûuãHÀA|A/SLoadTriggerHandlenative LoadTriggerHandle takes hashtable table, integer parentKey, integer childKey returns trigger@9YLoadTriggerEventHandlenative LoadTriggerEventHandle takes hashtable table, integer parentKey, integer childKey returns event?AwLoadTriggerConditionHandlenative LoadTriggerConditionHandle takes hashtable table, integer parentKey, integer childKey returns triggercondition>;kLoadTriggerActionHandlenative LoadTriggerActionHandle takes hashtable table, integer parentKey, integer childKey returns triggeraction=3[LoadTrackableHandlenative LoadTrackableHandle takes hashtable table, integer parentKey, integer childKey returns trackablev<+KLoadTimerHandlenative LoadTimerHandle takes hashtable table, integer parentKey, integer childKey returns timer;7cLoadTimerDialogHandlenative LoadTimerDialogHandle takes hashtable table, integer parentKey, integer childKey returns timerdialog 8rÔ[Ñ?±8vg[SaveStrnative SaveStr takes hashtable table, integer parentKey, integer childKey, string value returns boolean f+sSaveSoundHandlenative SaveSoundHandle takes hashtable table, integer parentKey, integer childKey, sound whichSound returns booleane-ySaveRegionHandlenative SaveRegionHandle takes hashtable table, integer parentKey, integer childKey, region whichRegion returns booleand)mSaveRectHandlenative SaveRectHandle takes hashtable table, integer parentKey, integer childKey, rect whichRect returns booleanvcYSaveRealnative SaveReal takes hashtable table, integer parentKey, integer childKey, real value returns nothingb3‚ SaveQuestItemHandlenative SaveQuestItemHandle takes hashtable table, integer parentKey, integer childKey, questitem whichQuestitem returns boolean a+sSaveQuestHandlenative SaveQuestHandle takes hashtable table, integer parentKey, integer childKey, quest whichQuest returns boolean õ¹¹:×kõyLx~1ULoadTriggerHandle native LoadTriggerHandle takes hashtable table, integer parentKey, integer childKey returns trigger CyLoadTriggerConditionHandle native LoadTriggerConditionHandle takes hashtable table, integer parentKey, integer childKey returns triggercondition =mLoadTriggerActionHandle native LoadTriggerActionHandle takes hashtable table, integer parentKey, integer childKey returns triggeraction ;[LoadTriggerEventHandle native LoadTriggerEventHandle takes hashtable table, integer parentKey, integer childKey returns event  ‡ °°eýyy†þz"1YLoadUnitPoolHandlenative LoadUnitPoolHandle takes hashtable table, in157‚5FlushChildHashtableBJfunction FlushChildHashtableBJ takes integer missionKey, hashtable table returns nothing call FlushChildHashtable(table, missionKey) endfunction69yFlushParentHashtableBJfunction FlushParentHashtableBJ takes hashtable table returns nothing call FlushParentHashtable(table) endfunction 75mGetDyingDestructablefunction GetDyingDestructable takes nothing returns destructable return GetTriggerDestructable() endfunctionp8'CGetHandleIdBJfunction GetHandleIdBJ takes handle h returns integer return GetHandleId(h) endfunction »½|9ü»>…Z3]bj_HASHTABLE_STRINGconstant integer bj_HASHTABLE_STRING = 3:…Y/Ybj_HASHTABLE_REALconstant integer bj_HASHTABLE_REAL = 2@…X5_bj_HASHTABLE_INTEGERconstant integer bj_HASHTABLE_INTEGER = 1>…W3]bj_HASHTABLE_HANDLEconstant integer bj_HASHTABLE_HANDLE = 4@…V5_bj_HASHTABLE_BOOLEANconstant integer bj_HASHTABLE_BOOLEAN = 0 ••+R9?oGetLastCreatedHashtableBJfunction GetLastCreatedHashtableBJ takes nothing returns hashtable 9?oGetLastCreatedHashtableBJfunction GetLastCreatedHashtableBJ takes nothing returns hashtable return bj_lastCreatedHashtable endfunction…Q:)‹HaveSavedValuefunction HaveSavedValue takes integer key, integer valueType, integer missionKey, hashtable table returns boolean if (valueType == bj_HASHTABLE_BOOLEAN) then return HaveSavedBoolean(table, missionKey, key) elseif (valueType == bj_HASHTABLE_INTEGER) then return HaveSavedInteger(table, missionKey, key) elseif (valueType == bj_HASHTABLE_REAL) then return HaveSavedReal(table, missionKey, key) elseif (valueType == bj_HASHTABLE_STRING) then return HaveSavedString(table, missionKey, key) elseif (valueType == bj_HASHTABLE_STRING) then return HaveSavedHandle(table, missionKey, key) else return false endif endfunction ¼7L‰7L>;‚gLoadBooleanExprHandleBJfunction LoadBooleanExprHandleBJ takes integer key, integer missionKey, hashtable table returns boolexpr return LoadBooleanExprHandle(table, missionKey, key) endfunction1='‚ELoadBooleanBJfunction LoadBooleanBJ takes integer key, integer missionKey, hashtable table returns boolean return LoadBoolean(table, missionKey, key) endfunctionÍ?<3‚ULoadAbilityHandleBJfunction LoadAbilityHandleBJ takes integer key, integer missionKey, hashtable table returns ability return LoadAbilityHandle(table, missionKey, key) endfunction0;+‚?InitHashtableBJfunction InitHashtableBJ takes nothing returns hashtable set bj_lastCreatedHashtable = InitHashtable() return bj_lastCreatedHashtable endfunction ÈȇjALFFPAoLoadMultiboardItemHandleBJfunction Loa4F/‚CLoadForceHandleBJfunction LoadForceHandleBJ takes integer key, integer m;?1‚OLoadButtonHandleBJfunction LoadButtonHandleBJ takes integer key, integer missionKey, hashtable table returns button return LoadButtonHandle(table, missionKey, key) endfunction_@CƒLoadDefeatConditionHandleBJfunction LoadDefeatConditionHandleBJ takes integer key, integer missionKey, hashtable table returns defeatcondition return LoadDefeatConditionHandle(table, missionKey, key) endfunctionSA=‚sLoadDestructableHandleBJfunction LoadDestructableHandleBJ takes integer key, integer missionKey, hashtable table returns destructable return LoadDestructableHandle(table, missionKey, key) endfunction;B1‚OLoadDialogHandleBJfunction LoadDialogHandleBJ takes integer key, integer missionKey, hashtable table returns dialog return LoadDialogHandle(table, missionKey, key) endfunction WWÍ‚9HO9‚aLoadMultiboardHandleBJfunction LoadMultiboardHandleBJ tak7G/‚ILoadGroupHandleBJfunction LoadGroupHandleBJ takes integer key, integer missionKey, hashtable table returns group return LoadGroupHandle(table, missionKey, key) endfunction7H/‚ILoadImageHandleBJfunction LoadImageHandleBJ takes integer key, integer missionKey, hashtable table returns image return LoadImageHandle(table, missionKey, key) endfunction1I'‚ELoadIntegerBJfunction LoadIntegerBJ takes integer key, integer missionKey, hashtable table returns integer return LoadInteger(table, missionKey, key) endfunction3J-‚CLoadItemHandleBJfunction LoadItemHandleBJ takes integer key, integer missionKey, hashtable table returns item return LoadItemHandle(table, missionKey, key) endfunctionCK5‚[LoadItemPoolHandleBJfunction LoadItemPoolHandleBJ takes integer key, integer missionKey, hashtable table returns itempool return LoadItemPoolHandle(table, missionKey, key) endfunction 33ÑŒW7W/‚ILoadSoundH[PA‚LoadMultiboardItemHandleBJfunction LoadMultiboardItemHandleBJ takes integer key, integer missionKey, hashtable table returns multiboarditem return LoadMultiboardItemHandle(table, missionKey, key) endfunction;Q1‚OLoadPlayerHandleBJfunction LoadPlayerHandleBJ takes integer key, integer missionKey, hashtable table returns player return LoadPlayerHandle(table, missionKey, key) endfunction7R/‚ILoadQuestHandleBJfunction LoadQuestHandleBJ takes integer key, integer missionKey, hashtable table returns quest return LoadQuestHandle(table, missionKey, key) endfunctionGS7‚aLoadQuestItemHandleBJfunction LoadQuestItemHandleBJ takes integer key, integer missionKey, hashtable table returns questitem return LoadQuestItemHandle(table, missionKey, key) endfunction%T!‚3LoadRealBJfunction LoadRealBJ takes integer key, integer missionKey, hashtable table returns real return LoadReal(table, missionKey, key) endfunction ¾¾u4ïT]?‚sLoadTriggerActionHandleBJfunction LoadTriggerActionHandleBJ takes integer key, integer missionKey, hashtable table return3U-‚CLoadRectHandleBJfunction LoadRectHandleBJ takes integer key, integer missionKey, hashtable table returns rect return LoadRectHandle(table, missionKey, key) endfunction;V1‚OLoadRegionHandleBJfunction LoadRegionHandleBJ takes integer key, integer missionKey, hashtable table returns region return LoadRegionHandle(table, missionKey, key) endfunction7W/‚ILoadSoundHandleBJfunction LoadSoundHandleBJ takes integer key, integer missionKey, hashtable table returns sound return LoadSoundHandle(table, missionKey, key) endfunction‚ X%ƒLoadStringBJfunction LoadStringBJ takes integer key, integer missionKey, hashtable table returns string local string s set s = LoadStr(table, missionKey, key) if (s == null) then return "" else return s endif endfunction ΕT;3b-‚CLoadUnitHandleBJfunction LoadUnitHandleBJ takes integer key, integer missionKey, hashtable table returns unit return LoadUnitHandle(table, missionKey, key) endfunctionCc5‚[LoadUnitPoolHandleBJfunction LoadUnitPoolHandleBJ takes integer key, integer missionKey, hashtable table returns unitpool return LoadUnitPoolHandle(table, missionKey, key) endfunction;d1‚OLoadWidgetHandleBJfunction LoadWidgetHandleBJ takes integer key, integer missionKey, hashtable table returns widget return LoadWidgetHandle(table, missionKey, key) endfunctionce3ƒSaveAbilityHandleBJfunction SaveAbilityHandleBJ takes ability whichAbility, integer key, integer missionKey, hashtable table returns boolean return SaveAbilityHandle(table, missionKey, key, whichAbility) endfunctionAf'‚eSaveBooleanBJfunction SaveBooleanBJ takes boolean value, integer key, integer missionKey, hashtable table returns nothing call SaveBoolean(table, missionKey, key, value) endfunction é'‚iCƒmSaveDefeatConditionHandleBJfunction SaveDefeatConditionHandleBJ takes defeatcondition whichDefeatcondition, integer key, integer missionKey, hashtable table returns boolean return SaveDefeatConditionHandle(table, missionKey, key, whichDefeatconrg;ƒ3SaveBooleanExprHandleBJfunction SaveBooleanExprHandleBJ takes boolexpr whichBoolexpr, integer key, integer missionKey, hashtable table returns boolean return SaveBooleanExprHandle(table, missionKey, key, whichBoolexpr) endfunction]h1ƒSaveButtonHandleBJfunction SaveButtonHandleBJ takes button whichButton, integer key, integer missionKey, hashtable table returns boolean return SaveButtonHandle(table, missionKey, key, whichButton) endfunction‚iCƒmSaveDefeatConditionHandleBJfunction SaveDefeatConditionHandleBJ takes defeatcondition whichDefeatcondition, integer key, integer missionKey, hashtable table returns boolean return SaveDefeatConditionHandle(table, missionKey, key, whichDefeatcondition) endfunction ª%JoªAr'‚eSaveIntegerBJfunction SaveIntegerBJ takes integer value, integer key, integer missionKey, hashtable table returns nothing call SaveInteger(table, missionKey, key, value) endfunctionWq/ƒ SaveImageHandleBJfunction SaveImageHandleBJ takes image whichImage, integer key, integer missionKey, hashtable table returns boolean return SaveImageHandle(table, missionKey, key, whichImage) endfunctionWp/ƒ SaveGroupHandleBJfunction SaveGroupHandleBJ takes group whichGroup, integer key, integer missionKey, hashtable table returns boolean return SaveGroupHandle(table, missionKey, key, whichGroup) endfunctionWo/ƒ SaveForceHandleBJfunction SaveForceHandleBJ takes force whichForce, integer key, integer missionKey, hashtable table returns boolean return SaveForceHandle(table, missionKey, key, whichForce) endfunction L+>?Lov7ƒ1SaveLightningHandleBJfunction SaveLightningHandleBJ takes lightning whichLightning, integer key, integer missionKey, hashtable table returns boolean return SaveLightningHandle(table, missionKey, key, whichLightning) endfunction{u;ƒESaveLeaderboardHandleBJfunction SaveLeaderboardHandleBJ takes leaderboard whichLeaderboard, integer key, integer missionKey, hashtable table returns boolean return SaveLeaderboardHandle(table, missionKey, key, whichLeaderboard) endfunctionit5ƒ'SaveItemPoolHandleBJfunction SaveItemPoolHandleBJ takes itempool whichItempool, integer key, integer missionKey, hashtable table returns boolean return SaveItemPoolHandle(table, missionKey, key, whichItempool) endfunctionQs-‚SaveItemHandleBJfunction SaveItemHandleBJ takes item whichItem, integer key, integer missionKey, hashtable table returns boolean return SaveItemHandle(table, missionKey, key, whichItem) endfunction ( (]z1ƒSavePlayerHandleBJfunction SavePlayerHandleBJ takes player whichPlayer, integer key, integer missionKey, hashtable table returns boolean return SavePlayerHandle(table, missionKey, key, whichPlayer) endfunction‚ yAƒcSaveMultiboardItemHandleBJfunction SaveMultiboardItemHandleBJ takes multiboarditem whichMultiboarditem, integer key, integer missionKey, hashtable table returns boolean return SaveMultiboardItemHandle(table, missionKey, key, whichMultiboarditem) endfunctionux9ƒ;SaveMultiboardHandleBJfunction SaveMultiboardHandleBJ takes multiboard whichMultiboard, integer key, integer missionKey, hashtable table returns boolean return SaveMultiboardHandle(table, missionKey, key, whichMultiboard) endfunctioniw5ƒ'SaveLocationHandleBJfunction SaveLocationHandleBJ takes location whichLocation, integer key, integer missionKey, hashtable table returns boolean return SaveLocationHandle(table, missionKey, key, whichLocation) endfunction ¤%2y¤Q~-‚SaveRectHandleBJfunction SaveRectHandleBJ takes rect whichRect, integer key, integer missionKey, hashtable table returns boolean return SaveRectHandle(table, missionKey, key, whichRect) endfunction5}!‚SSaveRealBJfunction SaveRealBJ takes real value, integer key, integer missionKey, hashtable table returns nothing call SaveReal(table, missionKey, key, value) endfunctiono|7ƒ1SaveQuestItemHandleBJfunction SaveQuestItemHandleBJ takes questitem whichQuestitem, integer key, integer missionKey, hashtable table returns boolean return SaveQuestItemHandle(table, missionKey, key, whichQuestitem) endfunctionW{/ƒ SaveQuestHandleBJfunction SaveQuestHandleBJ takes quest whichQuest, integer key, integer missionKey, hashtable table returns boolean return SaveQuestHandle(table, missionKey, key, whichQuest) endfunction ãó o 7ƒ1SaveUbersplatHandleBJfunction SaveUbersplatHandleBJ takes ubersplat whichUbersplat, integer key, integer missionKey, hashtable table returns boolean return SaveUbersplatHandle(table, missionKey, key, whichUbersplat) endfunctionc 3ƒSaveTriggerHandleBJfunction SaveTriggerHandleBJ takes trigger whichTrigger, integer key, integer missionKey, hashtable table returns boolean return SaveTriggerHandle(table, missionKey, key, whichTrigger) endfunctionl=ƒ%SaveTriggerEventHandleBJfunction SaveTriggerEventHandleBJ takes event whichEvent, integer key, integer missionKey, hashtable table returns boolean return SaveTriggerEventHandle(table, missionKey, key, whichEvent) endfunction‚EƒwSaveTriggerConditionHandleBJfunction SaveTriggerConditionHandleBJ takes triggercondition whichTriggercondition, integer key, integer missionKey, hashtable table returns boolean return SaveTriggerConditionHandle(table, missionKey, key, whichTriggercondition) endfunction f… qâfy#-OLoadDialogHandlenative LoadDialogHandle takes hashtable table, integer parentKey, integer childKey returns dialog "9gLoadDestructableHandlenative LoadDestructableHandle takes hashtable table, integer parentKey, integer childKey returns destructable!?sLoadDefeatConditionHandlenative LoadDefeatConditionHandle takes hashtable table, integer parentKey, integer childKey returns defeatconditiony -OLoadButtonHandlenative LoadButtonHandle takes hashtable table, integer parentKey, integer childKey returns button7]LoadBooleanExprHandlenative LoadBooleanExprHandle takes hashtable table, integer parentKey, integer childKey returns boolexprp#GLoadBooleannative LoadBoolean takes hashtable table, integer parentKey, integer childKey returns boolean|/SLoadAbilityHandlenative LoadAbilityHandle takes hashtable table, integer parentKey, integer childKey returns ability H4ï®4çOD;‚mLoadFogModifierHandleB7F/‚ILoadForceHandleBJfunction LoadForceHandleBJ takes integer key, integer missionKey, hashtable table returns force return LoadForceHandle(table, missionKey, key) endfunction;C1‚OLoadEffectHandleBJfunction LoadEffectHandleBJ takes integer key, integer missionKey, hashtable table returns effect return LoadEffectHandle(table, missionKey, key) endfunctionOD;‚mLoadFogModifierHandleBJfunction LoadFogModifierHandleBJ takes integer key, integer missionKey, hashtable table returns fogmodifier return LoadFogModifierHandle(table, missionKey, key) endfunctionCE5‚[LoadFogStateHandleBJfunction LoadFogStateHandleBJ takes integer key, integer missionKey, hashtable table returns fogstate return LoadFogStateHandle(table, missionKey, key) endfunction¸ Ì-b›ÌKO9‚gLoadMultiboardHandleBJfunction LoadMultiboardHandleBJ takes integer key, integer missionKey, hashtable table returns multiboard return LoadMultiboardHandle(table, missionKey, key) endfunctionCN5‚[LoadLocationHandleBJfunction LoadLocationHandleBJ takes integer key, integer missionKey, hashtable table returns location return LoadLocationHandle(table, missionKey, key) endfunctionGM7‚aLoadLightningHandleBJfunction LoadLightningHandleBJ takes integer key, integer missionKey, hashtable table returns lightning return LoadLightningHandle(table, missionKey, key) endfunctionOL;‚mLoadLeaderboardHandleBJfunction LoadLeaderboardHandleBJ takes integer key, integer missionKey, hashtable table returns leaderboard return LoadLeaderboardHandle(table, missionKey, key) endfunction 8çª}G\7‚aLoadTrackableHandleBJfunction LoadTrackableHandleBJ takes integer key, integer missionKey, hashtable table returns trackable return LoadTrackableHandle(table, missionKey, key) endfunction?Y3‚ULoadTextTagHandleBJfunction LoadTextTagHandleBJ takes integer key, integer missionKey, hashtable table returns texttag return LoadTextTagHandle(table, missionKey, key) endfunctionOZ;‚mLoadTimerDialogHandleBJfunction LoadTimerDialogHandleBJ takes integer key, integer missionKey, hashtable table returns timerdialog return LoadTimerDialogHandle(table, missionKey, key) endfunction7[/‚ILoadTimerHandleBJfunction LoadTimerHandleBJ takes integer key, integer missionKey, hashtable table returns timer return LoadTimerHandle(table, missionKey, key) endfunctionÈ 9û9]l1ƒSaveEffectHandleBJfunction SaveEffectHandleBJ takes effect whichEffect, integer key, integer missionKey, hashtable table returns boolean return SaveEffectHandle(table, missionKey, key, whichEffect) endfunction]k1ƒSaveDialogHandleBJfunction SaveDialogHandleBJ takes dialog whichDialog, integer key, integer missionKey, hashtable table returns boolean return SaveDialogHandle(table, missionKey, key, whichDialog) endfunction‚j=ƒOSaveDestructableHandleBJfunction SaveDestructableHandleBJ takes destructable whichDestructable, integer key, integer missionKey, hashtable table returns boolean return SaveDestructableHandle(table, missionKey, key, whichDestructable) endfunction D„c3ƒSaveTextTagHandleBJfunction SaveTextTagHandleBJ takes texttag whichTexttag, integer key, integer missionKey, hashtable table returns boolean return SaveTextTagHandle(table, missionKey, key, whichTexttag) endfunction<%‚]SaveStringBJfunction SaveStringBJ takes string value, integer key, integer missionKey, hashtable table returns boolean return SaveStr(table, missionKey, key, value) endfunctionW/ƒ SaveSoundHandleBJfunction SaveSoundHandleBJ takes sound whichSound, integer key, integer missionKey, hashtable table returns boolean return SaveSoundHandle(table, missionKey, key, whichSound) endfunction]1ƒSaveRegionHandleBJfunction SaveRegionHandleBJ takes region whichRegion, integer key, integer missionKey, hashtable table returns boolean return SaveRegionHandle(table, missionKey, key, whichRegion) endfunction (&3(‚?ƒYSaveTriggerActionHandleBJfunction SaveTriggerActionHandleBJ takes triggeraction whichTriggeraction, integer key, integer missionKey, hashtable table returns boolean return SaveTriggerActionHandle(table, missionKey, key, whichTriggeraction) endfunctiono7ƒ1SaveTrackableHandleBJfunction SaveTrackableHandleBJ takes trackable whichTrackable, integer key, integer missionKey, hashtable table returns boolean return SaveTrackableHandle(table, missionKey, key, whichTrackable) endfunctionW/ƒ SaveTimerHandleBJfunction SaveTimerHandleBJ takes timer whichTimer, integer key, integer missionKey, hashtable table returns boolean return SaveTimerHandle(table, missionKey, key, whichTimer) endfunction{;ƒESaveTimerDialogHandleBJfunction SaveTimerDialogHandleBJ takes timerdialog whichTimerdialog, integer key, integer missionKey, hashtable table returns boolean return SaveTimerDialogHandle(table, missionKey, key, whichTimerdialog) endfunction 6dÎ0¦ z6At!mStringHashnative StringHash takes string s returns integers-ySaveWidgetHandlenative SaveWidgetHandle takes hashtable table, integer parentKey, integer childKey, widget whichWidget returns booleanr1‚SaveUnitPoolHandlenative SaveUnitPoolHandle takes hashtable table, integer parentKey, integer childKey, unitpool whichUnitpool returns booleanq)mSaveUnitHandlenative SaveUnitHandle takes hashtable table, integer parentKey, integer childKey, unit whichUnit returns booleanp3‚ SaveUbersplatHandlenative SaveUbersplatHandle takes hashtable table, integer parentKey, integer childKey, ubersplat whichUbersplat returns booleano/SaveTriggerHandlenative SaveTriggerHandle takes hashtable table, integer parentKey, integer childKey, trigger whichTrigger returns booleann9‚SaveTriggerEventHandlenative SaveTriggerEventHandle takes hashtable table, integer parentKey, integer childKey, event whichEvent returns boolean n%>nL_=‚eLoadTriggerEventHandleBJfunction LoadTriggerEventHandleBJ takes integer key, integer missionKey, hashtable table returns event return LoadTriggerEventHandle(table, missionKey, key) endfunctionc^Eƒ LoadTriggerConditionHandleBJfunction LoadTriggerConditionHandleBJ takes integer key, integer missionKey, hashtable table returns triggercondition return LoadTriggerConditionHandle(table, missionKey, key) endfunctionW]?‚yLoadTriggerActionHandleBJfunction LoadTriggerActionHandleBJ takes integer key, integer missionKey, hashtable table returns triggeraction return LoadTriggerActionHandle(table, missionKey, key) endfunction 8ªuªGa7‚aLoadUbersplatHandleBJfunction LoadUbersplatHandleBJ takes integer key, integer missionKey, hashtable table returns ubersplat return LoadUbersplatHandle(table, missionKey, key) endfunction?`3‚ULoadTriggerHandleBJfunction LoadTriggerHandleBJ takes integer key, integer missionKey, hashtable table returns trigger return LoadTriggerHandle(table, missionKey, key) endfunctionÈ **in5ƒ'SaveFogStateHandleBJfunction SaveFogStateHandleBJ takes fogstate whichFogState, integer key, integer missionKey, hashtable table returns boolean return SaveFogStateHandle(table, missionKey, key, whichFogState) endfunction{m;ƒESaveFogModifierHandleBJfunction SaveFogModifierHandleBJ takes fogmodifier whichFogModifier, integer key, integer missionKey, hashtable table returns boolean return SaveFogModifierHandle(table, missionKey, key, whichFogModifier) endfunctionê thiJKjIkgetasFrCqBpEonmZ > Zðsø{‰>H'uInitHashtablenative InitHashtable takes nothing returns hashtablex+OHaveSavedStringnative HaveSavedString takes hashtable table, integer parentKey, integer childKey returns booleant'KHaveSavedRealnative HaveSavedReal takes hashtable table, integer parentKey, integer childKey returns booleanz-QHaveSavedIntegernative HaveSavedInteger takes hashtable table, integer parentKey, integer childKey returns booleanx+OHaveSavedHandlenative HaveSavedHandle takes hashtable table, integer parentKey, integer childKey returns booleanz-QHaveSavedBooleannative HaveSavedBoolean takes hashtable table, integer parentKey, integer childKey returns booleang9GetTriggerDestructableconstant native GetTriggerDestructable takes nothing returns destructableC#oGetHandleIdnative GetHandleId takes handle h returns integer]5FlushParentHashtablenative FlushParentHashtable takes hashtable table returns nothing "„øvý„ ˜"s+)GLoadItemHandlenative LoadItemHandle takes hashtable table, integer parentKey, integer childKey returns itemp*#GLoadIntegernative LoadInteger takes hashtable table, integer parentKey, integer childKey returns integerv)+KLoadImageHandlenative LoadImageHandle takes hashtable table, integer parentKey, integer childKey returns imagev(+KLoadGroupHandlenative LoadGroupHandle takes hashtable table, integer parentKey, integer childKey returns groupv'+KLoadForceHandlenative LoadForceHandle takes hashtable table, integer parentKey, integer childKey returns force&1WLoadFogStateHandlenative LoadFogStateHandle takes hashtable table, integer parentKey, integer childKey returns fogstate%7cLoadFogModifierHandlenative LoadFogModifierHandle takes hashtable table, integer parentKey, integer childKey returns fogmodifiery$-OLoadEffectHandlenative LoadEffectHandle takes hashtable table, integer parentKey, integer childKey returns effect P~òlêaÌPy2-OLoadPlayerHandlenative LoadPlayerHandle takes hashtable table, integer parentKey, integer childKey returns player1=oLoadMultiboardItemHandlenative LoadMultiboardItemHandle takes hashtable table, integer parentKey, integer childKey returns multiboarditem05_LoadMultiboardHandlenative LoadMultiboardHandle takes hashtable table, integer parentKey, integer childKey returns multiboard/1WLoadLocationHandlenative LoadLocationHandle takes hashtable table, integer parentKey, integer childKey returns location.3[LoadLightningHandlenative LoadLightningHandle takes hashtable table, integer parentKey, integer childKey returns lightning-7cLoadLeaderboardHandlenative LoadLeaderboardHandle takes hashtable table, integer parentKey, integer childKey returns leaderboard,1WLoadItemPoolHandlenative LoadItemPoolHandle takes hashtable table, integer parentKey, integer childKey returns itempool C‡—!¥,ÂC|:/SLoadTextTagHandlenative LoadTextTagHandle takes hashtable table, integer parentKey, integer childKey returns texttagg9=LoadStrnative LoadStr takes hashtable table, integer parentKey, integer childKey returns stringv8+KLoadSoundHandlenative LoadSoundHandle takes hashtable table, integer parentKey, integer childKey returns soundy7-OLoadRegionHandlenative LoadRegionHandle takes hashtable table, integer parentKey, integer childKey returns regions6)GLoadRectHandlenative LoadRectHandle takes hashtable table, integer parentKey, integer childKey returns rectg5;LoadRealnative LoadReal takes hashtable table, integer parentKey, integer childKey returns real43[LoadQuestItemHandlenative LoadQuestItemHandle takes hashtable table, integer parentKey, integer childKey returns questitemv3+KLoadQuestHandlenative LoadQuestHandle takes hashtable table, integer parentKey, integer childKey returns quest …z‚……~H1URemoveSavedIntegernative RemoveSavedInteger takes hashtable table, integer parentKey, integer childKey returns nothing|G/SRemoveSavedHandlenative RemoveSavedHandle takes hashtable table, integer parentKey, integer childKey returns nothing~F1URemoveSavedBooleannative RemoveSavedBoolean takes hashtable table, integer parentKey, integer childKey returns nothingyE-OLoadWidgetHandlenative LoadWidgetHandle takes hashtable table, integer parentKey, integer childKey returns widgetD1WLoadUnitPoolHandlenative LoadUnitPoolHandle takes hashtable table, integer parentKey, integer childKey returns unitpoolsC)GLoadUnitHandlenative LoadUnitHandle takes hashtable table, integer parentKey, integer childKey returns unitB3[LoadUbersplatHandlenative LoadUbersplatHandle takes hashtable table, integer parentKey, integer childKey returns ubersplat <J |Ö<T1‚SaveFogStateHandlenative SaveFogStateHandle takes hashtable table, integer parentKey, integer childKey, fogstate whichFogState returns boolean"S7‚SaveFogModifierHandlenative SaveFogModifierHandle takes hashtable table, integer parentKey, integer childKey, fogmodifier whichFogModifier returns booleanR-ySaveEffectHandlenative SaveEffectHandle takes hashtable table, integer parentKey, integer childKey, effect whichEffect returns booleanQ-ySaveDialogHandlenative SaveDialogHandle takes hashtable table, integer parentKey, integer childKey, dialog whichDialog returns boolean&P9‚SaveDestructableHandlenative SaveDestructableHandle takes hashtable table, integer parentKey, integer childKey, destructable whichDestructable returns boolean2O?‚/SaveDefeatConditionHandlenative SaveDefeatConditionHandle takes hashtable table, integer parentKey, integer childKey, defeatcondition whichDefeatcondition returns boolean <Z¼"€Î<`-ySavePlayerHandlenative SavePlayerHandle takes hashtable table, integer parentKey, integer childKey, player whichPlayer returns boolean._=‚)SaveMultiboardItemHandlenative SaveMultiboardItemHandle takes hashtable table, integer parentKey, integer childKey, multiboarditem whichMultiboarditem returns boolean^5‚SaveMultiboardHandlenative SaveMultiboardHandle takes hashtable table, integer parentKey, integer childKey, multiboard whichMultiboard returns boolean]1‚SaveLocationHandlenative SaveLocationHandle takes hashtable table, integer parentKey, integer childKey, location whichLocation returns boolean\3‚ SaveLightningHandlenative SaveLightningHandle takes hashtable table, integer parentKey, integer childKey, lightning whichLightning returns boolean"[7‚SaveLeaderboardHandlenative SaveLeaderboardHandle takes hashtable table, integer parentKey, integer childKey, leaderboard whichLeaderboard returns boolean 0jÄ6˜ê06mA‚5SaveTriggerConditionHandlenative SaveTriggerConditionHandle takes hashtable table, integer parentKey, integer childKey, triggercondition whichTriggercondition returns boolean*l;‚#SaveTriggerActionHandlenative SaveTriggerActionHandle takes hashtable table, integer parentKey, integer childKey, triggeraction whichTriggeraction returns booleank3‚ SaveTrackableHandlenative SaveTrackableHandle takes hashtable table, integer parentKey, integer childKey, trackable whichTrackable returns boolean j+sSaveTimerHandlenative SaveTimerHandle takes hashtable table, integer parentKey, integer childKey, timer whichTimer returns boolean"i7‚SaveTimerDialogHandlenative SaveTimerDialogHandle takes hashtable table, integer parentKey, integer childKey, timerdialog whichTimerdialog returns booleanh/SaveTextTagHandlenative SaveTextTagHandle takes hashtable table, integer parentKey, integer childKey, texttag whichTexttag returns boolean