//TESH.scrollpos=90
//TESH.alwaysfold=0
function CodeGen_SaveToDisk takes string loadcode, string filename returns nothing
call PreloadGenClear()
call PreloadGenStart()
call Preload(loadcode)
call PreloadGenEnd(filename)
call ClearSelection()
endfunction
function CodeGen_Init takes nothing returns nothing
local integer i = 1
local integer b = udg_SaveLoad_Base
local integer m = udg_SaveLoad_MaxValue
loop
exitwhen i >= udg_SaveLoad_MaxValue
set udg_SaveLoad_Char[i] = SubString(udg_SaveLoad_Alphabet, i, i+1)
set i = i + 1
endloop
set udg_SaveLoad_Alphabet = SubString(udg_SaveLoad_Alphabet, 0, 1) + SubString(udg_SaveLoad_Alphabet, m + 1, b)
set udg_SaveLoad_Base = b - m
endfunction
function CodeGen_ConvertItem takes integer id returns integer
local integer i = 1
loop
exitwhen i > udg_SaveLoad_ItemCount
if (id == udg_SaveLoad_Item[i]) then
return i
endif
set i = i + 1
endloop
return 0
endfunction
function CodeGen_ConvertUnit takes integer id returns integer
local integer i = 1
loop
exitwhen i > udg_SaveLoad_HeroCount
if (id == udg_SaveLoad_Hero[i]) then
return i
endif
set i = i + 1
endloop
return 0
endfunction
function CodeGen_Encode takes integer i returns string
local integer b
local string s = ""
if i <= udg_SaveLoad_Base then
return SubString(udg_SaveLoad_Alphabet, i, i + 1)
endif
loop
exitwhen i <= 0
set b = i - (i / udg_SaveLoad_Base) * udg_SaveLoad_Base
set s = SubString(udg_SaveLoad_Alphabet, b, b + 1) + s
set i = i / udg_SaveLoad_Base
endloop
return s
endfunction
function CodeGen_StrPos takes string s returns integer
local integer i = 0
loop
exitwhen i > udg_SaveLoad_Base
if s == SubString(udg_SaveLoad_Alphabet, i, i + 1) then
return i
endif
set i = i + 1
endloop
return -1
endfunction
function CodeGen_Decode takes string s returns integer
local integer a = 0
loop
exitwhen StringLength(s) == 1
set a = a * udg_SaveLoad_Base + udg_SaveLoad_Base * CodeGen_StrPos(SubString(s, 0, 1))
set s = SubString(s, 1, 99)
endloop
return a+CodeGen_StrPos(s)
endfunction
function CodeGen_StringChecksum takes string in returns integer
local integer i = 0
local integer l = StringLength(in)
local integer t = 0
local integer o = 0
loop
exitwhen i >= l
set t = CodeGen_Decode(SubString(in, i, i + 1))
set o = o + t
set i = i + 1
endloop
return o
endfunction
function CodeGen_Color takes string char returns string
local integer i = 0
local integer l = StringLength(udg_SaveLoad_Full)
local string x = ""
loop
exitwhen i >= l
set x = SubString(udg_SaveLoad_Full, i, i + 1)
if char == x then
if (x=="0" or S2I(x) > 0) then
return udg_SaveLoad_Number + char + "|r"
elseif StringCase(x, false) == x then
return udg_SaveLoad_Lower + char + "|r"
elseif StringCase(x, true) == x then
return udg_SaveLoad_Upper + char + "|r"
endif
endif
set i = i + 1
endloop
return char
endfunction
function CodeGen_Format takes string s returns string
local integer i = 0
local integer x = StringLength(s)
local integer j = 1
local string s2 = ""
loop
exitwhen i >= x
set s2 = s2 + CodeGen_Color(SubString(s, i, i + 1))
if (j >= udg_SaveLoad_HyphenSpace and i != (x-1)) then
set j = 0
set s2 = s2 + udg_SaveLoad_SeperationChar
endif
set j = j + 1
set i = i + 1
endloop
return s2
endfunction
function CodeGen_Strip takes string s returns string
local integer i = 0
local integer x = StringLength(s)
local string out = ""
local string a = ""
loop
exitwhen i >= x
set a = SubString(s, i, i + 1)
if (a != udg_SaveLoad_SeperationChar) then
set out = out + a
endif
set i = i + 1
endloop
return out
endfunction
// yeeahh descriptive variables
function CodeGen_Load takes string s returns nothing
local string str = CodeGen_Strip(s)
local string tmp = ""
local string c = ""
local integer x = 0
local integer i = 1
local integer l = 0
local integer j = 1
local integer f = 0
local boolean b = true
set udg_SaveLoad_Valid = false
if (udg_SaveLoad_Security) then
loop
exitwhen i > 3
if (CodeGen_Decode(SubString(str, 0, i)) == CodeGen_StringChecksum(SubString(str, i, 999))) then
set udg_SaveLoad_Valid = true
set str = SubString(str, i, 999)
set i = 4
endif
set i = i + 1
endloop
endif
if (not udg_SaveLoad_Valid) then
set udg_SaveLoad_Error = "Invalid Code"
return
endif
set i = 0
set l = StringLength(str)
if (udg_SaveLoad_CheckName) then
set c = CodeGen_Encode(CodeGen_StringChecksum(GetPlayerName(GetTriggerPlayer())))
set i = StringLength(c)
if (c != SubString(str, l - i, i)) then
set udg_SaveLoad_Valid = false
set udg_SaveLoad_Error = "Wrong username"
return
endif
set l = l - i
endif
set i = 0
loop
exitwhen i >= l
set tmp = SubString(str, i, i + 1)
set b = true
set f = 0
set j = 1
loop
exitwhen f >= (udg_SaveLoad_MaxValue)
if (tmp == udg_SaveLoad_Char[f]) then
set j = f + 2
set udg_Load[x] = CodeGen_Decode(SubString(str, i + 1, i + (j)))
set b = false
set f = udg_SaveLoad_MaxValue
endif
set f = f + 1
endloop
if (b) then
set udg_Load[x] = CodeGen_Decode(tmp)
endif
set i = i + j
set x = x + 1
endloop
set udg_SaveLoad_Valid = true
endfunction
function CodeGen_Compile takes nothing returns string
local integer i = 0
local integer j = 0
local string out = ""
local string ln = ""
local string x = ""
loop
exitwhen i > udg_SaveCount
set x = CodeGen_Encode(udg_Save[i])
set j = StringLength(x)
if (j > 1) then
set out = out + udg_SaveLoad_Char[j-1]
endif
set out = out + x
set i = i + 1
endloop
if (udg_SaveLoad_CheckName) then
set out = out + CodeGen_Encode(CodeGen_StringChecksum(GetPlayerName(GetTriggerPlayer())))
endif
if (udg_SaveLoad_Security) then
set out = CodeGen_Encode(CodeGen_StringChecksum(out)) + out
endif
if udg_SaveLoad_SaveToDisk and GetLocalPlayer() == GetTriggerPlayer() then
call CodeGen_SaveToDisk(out, udg_SaveLoad_Directory + "\\" + udg_SaveLoad_Filename)
endif
return CodeGen_Format(out)
endfunction
Name | Type | is_array | initial_value |
AB_Point | location | No | |
AP1_Player | player | No | Player00 |
AP_Integer | integer | No | |
AP_Point | location | No | |
AP_WPoint | location | No | |
APG1_Player | force | No | Force00 |
AR_Point | location | No | |
AttackTargetBottom | unit | No | |
AttackTargetTop | unit | No | |
BottomAttacking | boolean | No | |
BottomAttackWave | group | No | |
BottomDone | boolean | No | |
BottomMokeyCheckTimer | timer | No | |
BottomUnitGroupLeave | group | No | |
BottomUnitGroupTown01 | group | No | |
BottomUnitGroupTown02 | group | No | |
CameraReturnPoint | location | No | |
CinematicKael | unit | No | |
CinematicRavael | unit | No | |
ClearingRegionBottom | rect | No | |
ClearingRegionTop | rect | No | |
Code | StringExt | No | |
CombatCheckTimer | timer | No | |
Dalvengyr | unit | No | |
DeadBottom | boolean | No | |
DeadTop | boolean | No | |
DoneCleaningBottom | boolean | No | |
DoneCleaningTop | boolean | No | |
DP_Angles | real | No | |
DP_AoEAngle | real | No | |
DP_AoEGroup | group | No | |
DP_AoEKey | integer | No | |
DP_AoELoc | location | No | |
DP_AoEMaxHeightX | real | No | |
DP_AoEOffset | location | No | |
DP_AoEOrbitSpeed | real | Yes | |
DP_AoEs | unit | No | |
DP_AoESpeed | real | No | |
DP_AoEStage | integer | No | |
DP_AoETemp | unit | No | |
DP_AoETempKey | integer | No | |
DP_AoETimer | real | No | |
DP_Arc | real | No | |
DP_ArcHex | real | No | |
DP_ArcMax | real | No | |
DP_ArcMin | real | No | |
DP_Blue | real | No | |
DP_Caster | unit | No | |
DP_CurrentHeight | real | No | |
DP_CurrentSize | real | No | |
DP_DistanceHex | real | No | |
DP_DistanceMax | real | No | |
DP_DistanceMin | real | No | |
DP_Green | real | No | |
DP_Hash | hashtable | No | |
DP_Interval | real | No | |
DP_Intervals | real | No | |
DP_Levels | integer | No | |
DP_Lightning | lightning | No | |
DP_LModel | string | No | |
DP_MaxHeight | real | No | |
DP_MaxSize | real | No | |
DP_MissileDistance | real | No | |
DP_MissileHeight | real | No | |
DP_MissileKey | integer | No | |
DP_MissileLoc | location | No | |
DP_MissileOffset | location | No | |
DP_MissileTemp | unit | No | |
DP_MissileTempKey | integer | No | |
DP_MissileTravelled | real | No | |
DP_Owner | player | No | |
DP_Portal | unit | No | |
DP_PortalDeathSFx | string | No | |
DP_PortalDuration | real | Yes | |
DP_PortalDurationGeneral | real | Yes | |
DP_PortalGroup | group | No | |
DP_PortalGrow | real | No | |
DP_PortalKey | integer | No | |
DP_Radius | real | No | |
DP_Red | real | No | |
DP_Sides | integer | No | |
DP_SizeInterval | real | No | |
DP_Soul | unit | No | |
DP_SoulDamage | real | Yes | |
DP_SoulGroup | group | No | |
DP_SoulHex | integer | No | |
DP_SoulMax | integer | Yes | |
DP_SoulMin | integer | Yes | |
DP_SoulSFX | string | No | |
DP_Stage | integer | No | |
DP_TargetLoc | location | No | |
DP_TempGroup | group | No | |
DP_TempInteger | integervar | No | |
DP_TempLoc | location | No | |
DP_Timer | real | No | |
DP_U | unit | No | |
DP_UKey | integer | No | |
DP_ULoc | location | No | |
Emissary | unit | No | |
EnoughPlayers | boolean | No | |
ExchangeSelection1 | group | No | |
ExchangeSelection2 | group | No | |
ExchangeSucces | boolean | No | |
Exchangin3 | boolean | No | |
Exchanging1 | boolean | No | |
Exchanging2 | boolean | No | |
Exchanging3 | boolean | No | |
Exchangingfail1 | boolean | No | |
Exchangingfail2 | boolean | No | |
Exchangingfail3 | boolean | No | |
ExpDisabledForKael | boolean | No | false |
ExpDisabledForRavael | boolean | No | false |
ExpDisabledForVashj | boolean | No | false |
FF_AllowCliffs | boolean | Yes | |
FF_AllowedToKeepMoving | boolean | Yes | |
FF_AllowWater | boolean | Yes | |
FF_Angle | real | Yes | |
FF_AoEDamages | real | Yes | |
FF_BuildingAoE | boolean | Yes | |
FF_Caster | unit | Yes | |
FF_DistanceCast | real | No | |
FF_DistanceReached | real | Yes | |
FF_DistanceReached_Kopiuj_2 | real | Yes | |
FF_Done | boolean | Yes | |
FF_DummyUnit | unit | Yes | |
FF_ExplosionEffect | string | Yes | |
FF_FinalAoE | real | Yes | |
FF_FireBall1 | unit | Yes | |
FF_FireBall2 | unit | Yes | |
FF_FireBallAdditionnalDistance | real | Yes | |
FF_FireBallAoE | real | Yes | |
FF_FireBallArc | real | Yes | |
FF_FireBallArcSettings | real | Yes | |
FF_FireBallDistance | real | Yes | |
FF_FireBallDistanceInit | real | No | |
FF_FireBallSpeed | real | Yes | |
FF_FireBallTempAdd | real | Yes | |
FF_FullDistance | real | Yes | |
FF_FullDistance_Kopiuj_2 | real | Yes | |
FF_GoThroughBuildings | boolean | Yes | |
FF_GoThroughTrees | boolean | Yes | |
FF_GroupFireBall1 | group | Yes | |
FF_GroupFireBall2 | group | Yes | |
FF_HitBuildings | boolean | Yes | |
FF_Integer1 | integer | No | |
FF_Integer2 | integer | No | |
FF_Integer3 | integer | No | |
FF_KillTrees | boolean | Yes | |
FF_KillTreesAoE | boolean | Yes | |
FF_MinimalDistance | real | No | |
FF_RealTimer | real | Yes | |
FF_SingleDamages | real | Yes | |
FF_SingleUnitEffect | string | Yes | |
FF_TempGroup | group | No | |
FF_TempPoint1 | location | No | |
FF_TempPoint2 | location | No | |
FF_TempPoint3 | location | No | |
FF_TempPoint4 | location | No | |
GameOver | boolean | No | false |
GameSelection | boolean | No | |
GarUnit01 | unit | No | |
GarUnit02 | unit | No | |
GarUnit03 | unit | No | |
GarUnit04 | unit | No | |
GarUnit05 | unit | No | |
GarUnit06 | unit | No | |
GarUnit07 | unit | No | |
GarUnit08 | unit | No | |
GarUnit09 | unit | No | |
GarUnit10 | unit | No | |
GarUnit11 | unit | No | |
GarUnit12 | unit | No | |
GarUnit13 | unit | No | |
GarUnit14 | unit | No | |
GarUnit15 | unit | No | |
GarUnit16 | unit | No | |
GarUnit17 | unit | No | |
GarUnit18 | unit | No | |
GarUnit19 | unit | No | |
GarUnit20 | unit | No | |
GarUnit21 | unit | No | |
Hard | boolean | No | |
Hero | unit | No | |
HiddenUndeadUnits | group | No | |
HiddenUnits | group | No | |
InCinematic | boolean | No | false |
InCombat | boolean | No | false |
IntroSkipped | boolean | No | false |
Item | item | No | |
Kael | unit | No | UnitNull |
KaelReturnSpot | location | No | |
KaelUnit01 | unit | No | |
KaelUnit02 | unit | No | |
KaelUnit03 | unit | No | |
KaelUnit04 | unit | No | |
KaelUnit05 | unit | No | |
KaelUnit06 | unit | No | |
KaelUnit07 | unit | No | |
KaelUnit08 | unit | No | |
KaelUnit09 | unit | No | |
KaelUnit10 | unit | No | |
KaelUnit11 | unit | No | |
KaelUnit12 | unit | No | |
KaelUnit13 | unit | No | |
KaelUnit14 | unit | No | |
KaelUnit15 | unit | No | |
KaelUnit16 | unit | No | |
KaelUnit17 | unit | No | |
KaelUnit18 | unit | No | |
KaelUnit19 | unit | No | |
KaelUnit20 | unit | No | |
KaelUnit21 | unit | No | |
KaelUnit22 | unit | No | |
KaelUnit23 | unit | No | |
KaelUnit24 | unit | No | |
KaelUnit25 | unit | No | |
KaelUnit26 | unit | No | |
KaelUnit27 | unit | No | |
KaelUnit28 | unit | No | |
KaelUnit29 | unit | No | |
KaelUnit30 | unit | No | |
LadyVashj | unit | No | |
LizardUnit | unit | No | |
Load | integer | Yes | |
LoadCount | integer | No | |
NagaComeBackSkipped | boolean | No | false |
NagaUnit01 | unit | No | |
NagaUnit02 | unit | No | |
NagaUnit03 | unit | No | |
NagaUnit04 | unit | No | |
NagaUnit05 | unit | No | |
NagaUnit06 | unit | No | |
NagaUnit07 | unit | No | |
Observatory01 | unit | No | |
Observatory01Vision | fogmodifier | No | |
Observatory02 | unit | No | |
Observatory02Vision | fogmodifier | No | |
Observatory03 | unit | No | |
Observatory03Vision | fogmodifier | No | |
P11_Undead | player | No | Player10 |
P12_Undead | player | No | Player11 |
P2_Orc | player | No | Player01 |
P3_Undead | player | No | Player02 |
P3StartingUnits | group | No | |
P4_Undead | player | No | Player03 |
P5_Undead | player | No | Player04 |
P5StartingUnits | group | No | |
P6_Undead | player | No | Player05 |
P6StartingUnits | group | No | |
P7_Undead | player | No | Player06 |
P7StartingUnits | group | No | |
Player1 | player | No | Player00 |
Player2 | player | No | Player09 |
QuestAssassination | quest | No | |
QuestAssassinationReqKill | questitem | No | |
QuestGoldMine | quest | No | |
QuestGoldMineReq01 | questitem | No | |
QuestGoldMineReq02 | questitem | No | |
RankInteger | integer | No | |
Ravael | unit | No | |
RavaelReturnSpot | location | No | |
Requirement_Region | rect | No | |
RequirementTech | boolean | Yes | |
RequirementTech_Kopiuj_Kopiuj | boolean | Yes | |
RequirementUnitP1 | unit | Yes | |
RequirementUnitP2 | unit | Yes | |
RequirementUnitP3 | unit | Yes | |
RequirementUnitType | unitcode | Yes | |
ResearchEnabledT1 | boolean | Yes | |
ResearchEnabledT2 | boolean | Yes | |
ResearchEnabledT3 | boolean | Yes | |
ResearchStringT1 | string | Yes | |
ResearchStringT2 | string | Yes | |
ResearchStringT3 | string | Yes | |
ResearchType | techcode | Yes | |
ResourceDropBuildings | group | No | |
ResourceDropHashtable | hashtable | No | |
RevivalAltar | unit | No | UnitNull |
RevivalHero | unit | No | UnitNull |
RevivalReturnSpot | location | No | |
RevivalSpot | location | No | |
RevivalSpot2 | location | No | |
RoamingLizardUnits | group | No | |
RunningAIBottom | boolean | No | |
RunningAITop | boolean | No | |
Save | integer | Yes | |
SaveCount | integer | No | |
SaveLoad_Abilities | abilcode | Yes | |
SaveLoad_AbilityCount | integer | No | |
SaveLoad_Alphabet | string | No | |
SaveLoad_Base | integer | No | |
SaveLoad_Char | string | Yes | |
SaveLoad_CheckName | boolean | No | |
SaveLoad_Directory | string | No | |
SaveLoad_Error | string | No | |
SaveLoad_Filename | string | No | |
SaveLoad_Full | string | No | |
SaveLoad_Hero | unitcode | Yes | |
SaveLoad_HeroCount | integer | No | |
SaveLoad_HyphenSpace | integer | No | |
SaveLoad_Item | itemcode | Yes | |
SaveLoad_ItemCount | integer | No | |
SaveLoad_Lower | string | No | |
SaveLoad_MaxValue | integer | No | |
SaveLoad_Number | string | No | |
SaveLoad_SaveToDisk | boolean | No | |
SaveLoad_Security | boolean | No | |
SaveLoad_SeperationChar | string | No | |
SaveLoad_Upper | string | No | |
SaveLoad_Valid | boolean | No | |
SelectedUnits | group | No | |
SelectionGroup1 | group | No | |
SelectionGroup2 | group | No | |
SpawnDelay | real | No | 1.50 |
SpawnPathingGroup | group | No | |
SpawnPathingGroupB01 | group | No | |
SpawnPathingGroupB02 | group | No | |
SpawnPathingGroupT01 | group | No | |
SpawnPathingGroupT02 | group | No | |
SpawnStays01 | boolean | No | |
SpawnStays02 | boolean | No | |
SpawnUnitGroup | group | No | |
SpellBreaker | unit | No | |
TempBoolean | boolean | No | |
TempGroup | group | No | |
Tempinteger | integer | No | |
TempInteger | integer | No | |
Tempitem | item | No | |
TempitemType | itemcode | No | |
tempoint | location | No | |
TempPGroup | force | No | |
TempPGroup2 | force | No | |
TempPlayer | player | No | |
Temppoint | location | No | |
TempPoint | location | No | |
tempugroup | group | No | |
TempUGroup | group | No | |
TempUGroup2 | force | No | |
TempUnit | unit | No | |
TempUnitGroup | group | No | |
TempunitType | unitcode | No | |
TopAttacking | boolean | No | |
TopAttackWave | group | No | |
TopDone | boolean | No | |
TopGuardsPlayer5 | group | No | |
TopGuardsPlayer6 | group | No | |
TopMokeyCheckTimer | timer | No | |
TopUnitGroupLeave | group | No | |
TopUnitGroupTown01 | group | No | |
TopUnitGroupTown02 | group | No | |
VictorySkipped | boolean | No | false |
VisibleUndeadUnitGroup | group | No | |
WhichPlayer | player | No | |
WhichUnitType | unitcode | No | |
x | real | No | |
y | real | No | |
zPointBottomAttackSpot01 | location | No | |
zPointBottomLeaveSpot | location | No | |
zPointTopAttackSpot01 | location | No | |
zPointTopLeaveSpot | location | No | |
zPointUndeadEntranceBottom | location | No | |
zPointUndeadEntranceTop | location | No |