//TESH.scrollpos=0
//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 |
allPlayers | force | No | |
armor_sfx | string | Yes | |
attributes | integer | Yes | |
aux_attackedUnit | unit | No | |
aux_item | item | No | |
backpack_sfx | effect | Yes | |
bases | rect | Yes | |
Code | StringExt | No | |
colors | string | Yes | |
count_craftingtable | integer | Yes | |
craftingtable_SFX_unit | unit | Yes | |
craftingTableTimer | timer | Yes | |
creep_respawn_locations | location | Yes | |
creep_respawn_value | integer | No | |
currentArmor_sfx | effect | Yes | |
currentRecipeAbility | abilcode | Yes | |
currentRecipePage | integer | Yes | 1 |
damageTakenGroup | group | No | |
daynightTimer | timer | No | |
daynightTimerWindow | timerdialog | No | |
devil | unit | No | |
devil_cinematic | unit | No | |
dialog_difficulty | dialog | No | |
dialog_difficulty_buttons | button | Yes | |
dialogeButtonTeammode | button | Yes | |
dialogTeammode | dialog | No | |
difficulty | string | No | |
drawAttentionInteger | integer | No | |
drinkInteger | integer | No | |
EasyItem__ERRORSOUND | string | No | |
EasyItem__SPLIT | boolean | No | |
EasyItem__SPLITDROP | boolean | No | |
EasyItem__SPLITSIZE | integer | No | |
EasyItem__SPLITSTACK | boolean | No | |
EasyItem__SPLITSTACKDELAY | real | No | |
EasyItem__USEITEMLEVEL | boolean | No | |
EasyItem_integer | integervar | Yes | |
EasyItem_item | item | No | |
EasyItem_items | item | Yes | |
EasyItem_point | location | Yes | |
EasyItem_sound | sound | No | |
EasyItem_string | string | Yes | |
EasyItem_timer | timer | No | |
EasyItem_unit | unit | No | |
EasyItem_units | unit | Yes | |
endDialog | dialog | No | |
endDialogButton | button | Yes | |
ensnsaredGargoyleGroup | group | No | |
ffa | boolean | No | |
firstDayTimer | timer | No | |
FishermanChooseItemInt | integer | No | |
FishermanItems | itemcode | Yes | |
FishermanItemString | string | Yes | |
FishermanItemXP | integer | Yes | |
FishermanLevel | integer | Yes | 1 |
FishermanLevelXPCap | integer | Yes | |
fishermanXP | integer | Yes | |
graveGroup | group | No | |
haveBear | boolean | Yes | |
hellspawn_int | integer | No | |
Hero | unit | No | |
heroes | unit | Yes | |
heroGroup | group | No | |
hoe_ability | abilcode | Yes | |
hunter_damageGroup | group | No | |
icons | imagefile | Yes | |
isNight | boolean | No | |
Item | item | No | |
items | itemcode | Yes | |
lavaDmgInt | integer | No | |
lavaDrakes | unit | Yes | |
lavaSpawn_Int | integer | No | |
lavaspawn_regions | rect | Yes | |
leftHand_sfx | effect | Yes | |
Load | integer | Yes | |
loadComplete | boolean | Yes | |
LoadCount | integer | No | |
loadInt | integer | No | |
maxStrenghtedUnits | integer | No | |
maxUnits | integer | No | |
mb_integer | integer | No | |
medicTimer_1 | timer | No | |
medicTimer_2 | timer | No | |
medicTimer_3 | timer | No | |
medicTimer_4 | timer | No | |
medicTimer_5 | timer | No | |
medicTimer_6 | timer | No | |
medicTimer_7 | timer | No | |
medicTimer_8 | timer | No | |
mine_bool | boolean | No | |
mineEnter | rect | Yes | |
monster_ID | integer | No | |
monsterCount | integer | No | |
monsters | unitcode | Yes | |
monsterSpawnAmount | integer | No | |
monsterSpawnInt | integer | No | |
monsterSpawns | rect | Yes | |
monsterSpawnStrength | integer | No | |
multiboard | multiboard | No | |
neutralBuilding | unit | Yes | |
neutralBuildingSpawns | rect | Yes | |
neutralDestructible | destructable | Yes | |
numberOfHeroesFinalFight | integer | No | |
numberOfTeams | integer | No | |
perkInit | abilcode | Yes | |
perkInteger | integer | No | |
perkPlayers | integer | Yes | |
perkPlayerString | string | Yes | [no perk] |
perkString | string | Yes | |
pickPerkinit | abilcode | Yes | |
player_backpack | unit | Yes | |
player_hero | unit | Yes | |
player_survivedNights | integer | Yes | |
playercount | integer | No | |
playerDead | boolean | Yes | |
playerRank | integer | Yes | |
playerSpotInMultiboard | integer | Yes | |
preparationTimer | timer | No | |
preparationTimerWindow | timerdialog | No | |
ranks | string | Yes | 1 |
rec_alchemyTable | boolean | No | |
rec_altarofkings | boolean | No | |
rec_anvil | boolean | No | |
rec_armor | boolean | No | |
rec_axe | boolean | No | |
rec_backpack | boolean | No | |
rec_barricade | boolean | No | |
rec_battleaxe | boolean | No | |
rec_bed | boolean | No | |
rec_bonebow | boolean | No | |
rec_boneTower | boolean | No | |
rec_boots | boolean | No | |
rec_boulderTower | boolean | No | |
rec_bow | boolean | No | |
rec_bucket | boolean | No | |
rec_bunkerTower | boolean | No | |
rec_chest | boolean | No | |
rec_crossbow | boolean | No | |
rec_deepMine | boolean | No | |
rec_firepit | boolean | No | |
rec_fishRod | boolean | No | |
rec_fountain | boolean | No | |
rec_furnace | boolean | No | |
rec_hellarmor | boolean | No | |
rec_hellcleaver | boolean | No | |
rec_hoe | boolean | No | |
rec_lavaTower | boolean | No | |
rec_mine | boolean | No | |
rec_net | boolean | No | |
rec_pickaxe | boolean | No | |
rec_portal | boolean | No | |
rec_reinfGate | boolean | No | |
rec_repairHammer | boolean | No | |
rec_shovel | boolean | No | |
rec_spear | boolean | No | |
rec_steelWall | boolean | No | |
rec_stoneWall | boolean | No | |
rec_sword | boolean | No | |
rec_torch | boolean | No | |
rec_vial | boolean | No | |
rec_watchtower | boolean | No | |
rec_waterskin | boolean | No | |
rec_woodenGate | boolean | No | |
RespawnLoc | location | No | |
ReviveLoc | location | No | |
rifleman_soundEffectGroup | group | No | |
rows | integer | 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 | |
start_regions | rect | Yes | |
statPoints | integer | Yes | |
strenghted_items | itemcode | Yes | |
strenghtedInt | integer | No | |
strenghtedUnits | unitcode | Yes | |
survivedNights | integer | No | |
teamcheck | boolean | Yes | |
teammode | boolean | No | |
teamnumberForPlayer | integer | Yes | |
temp_bHasUnitBeenStored | boolean | Yes | |
temp_boolArr | boolean | Yes | |
temp_CreepSpawnLoc | location | No | |
temp_CustomizedTime | integer | Yes | |
temp_intArr | integer | Yes | |
temp_MaxCustomizedArray | integer | No | |
temp_player | player | No | |
temp_playerGroup | force | No | |
temp_RevivingCreeps | group | No | |
temp_SecondsPerLevel | integer | No | |
temp_TimeFrequencyMAX | integer | Yes | |
temp_TimeLeft | integer | Yes | |
temp_UnitGroup | group | No | |
temp_unitType | unitcode | No | |
temp_UnitTypes | unitcode | Yes | |
temp_UnitTypes_ForTime | unitcode | Yes | |
TempEff | boolean | No | |
TempLoc | location | No | |
TempLoc2 | location | No | |
TempLoc3 | location | No | |
TempReal | real | No | |
TempUnit | unit | No | |
TempX | real | No | |
TempY | real | No | |
thirstInt | integer | No | |
tips | string | Yes | |
tmp_integer | integer | No | |
tmp_real | real | No | |
tmpPlayer | player | No | |
tmpString | string | No | |
tmpTeam | force | No | |
tmpUnit | unit | No | |
toFist_int | integer | No | |
UDex | integer | No | |
UDexGen | integer | No | |
UDexNext | integer | Yes | |
UDexPrev | integer | Yes | |
UDexRecycle | integer | No | |
UDexUnits | unit | Yes | |
UDexWasted | integer | No | |
UMovNext | integer | Yes | |
UMovPrev | integer | Yes | |
UnitIndexerEnabled | boolean | No | |
UnitIndexEvent | real | No | |
UnitMoving | boolean | Yes | |
UnitMovingEvent | real | No | |
UnitMovingX | real | Yes | |
UnitMovingY | real | Yes | |
units | unitcode | Yes | |
waterFountainInteger | integer | No | |
weaponInteger | integer | No | |
weapons_sfxString | string | Yes | |
zzzzt1 | timer | No | |
zzzzt2 | timer | No | |
zzzzt3 | timer | No | |
zzzzt4 | timer | No | |
zzzzt5 | timer | No | |
zzzzt6 | timer | No | |
zzzzt7 | timer | No | |
zzzzt8 | timer | No |