Name | Type | is_array | initial_value |
_HeldenklassenNr | integer | No | |
_ItemNr1 | integer | No | |
_ItemNr2 | integer | No | |
_keinSlot | integer | No | |
_SpielerNr | integer | No | |
Ability | abilcode | Yes | |
Ability_Kaempfer | abilcode | Yes | |
Ability_Magier | abilcode | Yes | |
Ability_Waldlaeufer | abilcode | Yes | |
Abilityitem | itemcode | Yes | |
Abilityitem_Kaempfer | itemcode | Yes | |
Abilityitem_Magier | itemcode | Yes | |
Abilityitem_Waldlaeufer | itemcode | Yes | |
AbilityNr | integer | No | |
AbilityNr_Kaempfer | integer | No | |
AbilityNr_Magier | integer | No | |
AbilityNr_Waldlaeufer | integer | No | |
AdminInfo | quest | No | |
AdminMenue | dialog | No | |
Attacked_Unit | unit | Yes | |
Attacking_Unit | unit | Yes | |
BanditenLord | quest | No | |
BanditenlordE | unit | No | |
beweglichkeit | integer | Yes | |
Cavegiant_Quest | quest | No | |
cavelook | quest | No | |
cavelookQA | questitem | No | |
code_Bits | integer | Yes | |
code_BitsCRC | integer | Yes | |
code_BitsEnd | integer | No | |
code_CharMap | string | No | |
code_CRCSize | integer | No | |
code_CRCStart | integer | No | |
code_Creator | string | No | |
code_CurrentPlayer | player | No | |
code_CurrentPlayerGroup | force | No | |
code_Data | integer | Yes | |
code_DataEnd | integer | No | |
code_DataSample | integer | Yes | |
code_DataSize | integer | Yes | |
code_DataSizeTotal | integer | No | |
code_Debug | boolean | Yes | |
code_DecodingError | boolean | No | |
code_ErrorMessage | string | No | |
code_pet | unit | No | |
code_Raw | integer | Yes | |
code_RawBase | integer | No | |
code_RawEnd | integer | No | |
code_RawSize | integer | No | |
code_TB_Input | integer | No | |
code_TB_Output | integer | No | |
code_Text | string | No | |
code_Unit | unit | No | |
cv_Ability | integer | Yes | |
cv_Ability_AGI | integer | No | |
cv_Ability_INT | integer | No | |
cv_Ability_STR | integer | No | |
cv_ArtefactType | integer | Yes | |
cv_Bits | integer | No | |
cv_CRC | integer | No | |
cv_Data | integer | No | |
cv_Gold | integer | No | |
cv_HeroType | integer | No | |
cv_Holz | integer | No | |
cv_ItemType | integer | Yes | |
cv_Lebenspunkte | integer | No | |
cv_Level | integer | No | |
cv_Manapunkte | integer | No | |
cv_Padding | integer | No | |
cv_PetStufe | integer | No | |
cv_Raw | integer | No | |
cv_Version | integer | No | |
DBExperianceGain | button | No | |
DBExperianceGain_Array | button | Yes | |
DBReset_Monsters | button | No | |
DBSchwierigkeit | button | No | |
DBSchwierigkeit_Array | button | Yes | |
DialogSpieler | player | No | |
Doodadgebiet | rect | Yes | |
Doodadgebiete | integer | No | |
DoodadmengeNr1 | integer | Yes | |
DoodadmengeNr2 | integer | Yes | |
DoodadNr1 | destructablecode | Yes | |
DoodadNr2 | destructablecode | Yes | |
doorTimer | timer | No | |
Dorf | player | No | |
EnableFeinde | boolean | Yes | |
EnableKobolde | boolean | Yes | |
ExperianceGain | dialog | No | |
Faehigkeitenslots | integer | Yes | |
FeindFrequencies | integer | Yes | |
Feindgebiet | rect | Yes | |
FeindGroups | group | Yes | |
FeindInitialFrequencies | integer | Yes | |
FeindTypes | unitcode | Yes | |
GameInfo | quest | No | |
Goldminen | group | No | |
HaendlerimGebuesch | quest | No | |
HaendlerimGebueschE | unit | No | |
Hauptmenue | dialog | No | |
Hauptmenue_DB_Nr | button | Yes | |
HauptmenueTimer | timer | No | |
Hauptstadt | quest | No | |
HeldenfaehigkeitenBuch1A | unitcode | Yes | |
HeldenfaehigkeitenBuch1B | unitcode | Yes | |
HeldenfaehigkeitenBuch2A | unitcode | Yes | |
HeldenfaehigkeitenBuch2B | unitcode | Yes | |
HeldenfaehigkeitenBuch3A | unitcode | Yes | |
HeldenfaehigkeitenBuch3B | unitcode | Yes | |
Heldenhome | unitcode | Yes | |
Heldenklasse | unitcode | Yes | |
Heldenklassenzahl | integer | No | |
HeldenMatch | integer | No | |
heldenpunkteabzug | integer | No | |
Heldentod | integer | Yes | |
HeldSpieler | unit | Yes | |
Herofight | dialog | No | |
HeroFight_DB_Nr | button | Yes | |
Hoelenriese | unit | No | |
Holzaxt | quest | No | |
homeplayer | unit | Yes | |
Human_Players | force | No | |
HydraQuest | quest | No | |
HydraQuest_QA | questitem | No | |
i | integer | No | |
info | multiboard | No | |
info_INT | integer | No | |
intelligenz | integer | Yes | |
Kamera | dialog | No | |
Kamera_DB_Nr | button | Yes | |
Kamera_Zoom | dialog | No | |
Kamera_Zoom_DB_Nr | button | Yes | |
KameraWinkel | integer | Yes | |
Koboldchef | unit | No | |
KoboldFrequencies | integer | Yes | |
KoboldGroups | group | Yes | |
Koboldhaus | unit | Yes | |
KoboldHilfe | quest | No | |
KoboldInitialFrequencies | integer | Yes | |
KoboldTypes | unitcode | Yes | |
kraft | integer | Yes | |
Krautpunkt | location | No | |
LastSolvedQuest | quest | No | |
LizardEggsQA | questitem | No | |
LizardQuest | quest | No | |
LizardRocksQA | questitem | No | |
Malganis | quest | No | |
Malganis_unit | unit | No | |
MaxFeind | integer | Yes | |
MaxKobold | integer | Yes | |
MultboardLoop | integer | No | |
NumFeindgebiete | integer | No | |
NumKoboldhaeuser | integer | No | |
orcstadt | quest | No | |
overintem | item | No | |
petKlasse | unitcode | Yes | |
petSpieler | unit | Yes | |
PetStufe | integer | No | |
Questmenue | dialog | No | |
Questmenue_DB_Nr | button | Yes | |
QuestZielgebiet | rect | Yes | |
Save_Load_Info | quest | No | |
Schafe | group | No | |
Schaftreter | unit | No | |
Schwierigkeit | dialog | No | |
SiegelderSuempfe | questitem | No | |
SiegelderVerdammnis | questitem | No | |
SM_Player | fogmodifier | Yes | |
spezialeffekt | effect | Yes | |
Spieler | player | Yes | |
spieleranzahl | integer | No | |
Spielerhelden | group | No | |
Steintoroeffnen | quest | No | |
store_AbilityCount | integer | No | |
store_AbilityTypes | abilcode | Yes | |
store_HeroTypes | unitcode | Yes | |
store_HeroTypesEnd | integer | No | |
store_ItemTypes | itemcode | Yes | |
store_ItemTypesEnd | integer | No | |
store_Location | location | No | |
temp_player | player | No | |
tempAbility | abilcode | No | |
tempgbiet | rect | No | |
tempItemType | itemcode | No | |
tempPlayergroup | force | No | |
tempPunkt | location | No | |
tempPunkt_2 | location | No | |
tempPunkt_3 | location | No | |
tempPunkt_4 | location | No | |
tempPunkt_5 | location | No | |
tempPunkt_6 | location | No | |
tempPunkt_Belohnung | location | No | |
tempPunkt_ping | location | No | |
tempPunktFeindgen | location | No | |
tempPunktHaustier | location | No | |
tempRegion | rect | No | |
tempString | string | No | |
tempUnit | unit | No | |
tempUnit_2 | unit | No | |
tempUnit_3 | unit | No | |
tempUnitGroup1 | group | No | |
tempUnitgroup2 | group | No | |
tempunitGroup3 | group | No | |
tempUnitgroup4 | group | No | |
tempUnitType | unitcode | No | |
tempZerst | destructable | No | |
Untotevernichten | quest | No | |
Witchboss_unit | unit | No | |
wolffelleqa | questitem | No | |
Wolfsfelle | integer | No | |
wolfsfelleLB | leaderboard | No | |
WolfsfelleQuest | quest | No | |
Zentaurchef | unit | No | |
ZentaurenHilfe | quest | No | |
ZielKraut | unit | No | |
ZombieCount | integer | No | |
Zombieleft | questitem | No | |
Zoom | real | Yes | |
Zoomfaktor | real | No | |
ZufallZahl | integer | No |
// positive shifts left (larger number), negative shifts right (smaller number)
// this is not a complete implementation of a bit shift because sign is ignored
function BitShift takes integer x, integer shift returns integer
return R2I(x * Pow( 2, shift))
endfunction
// bits is the number of bits to keep (starting with low bits)
function BitClip takes integer x, integer bits returns integer
return ModuloInteger ( x, R2I( Pow( 2, bits )))
endfunction
// All of the functions ending in "TB" serve the purpose of array pointers.
// Translate Base can write to/from any of 3 structures, the structures it uses
// are chosen by setting udg_code_TB_Input and udg_code_TB_Output
// This is complicated, but the goal is to push the complexity out of
// the Trig_Translate_Base_Actions function.
function GetTB takes integer arrayID, integer index returns integer
if arrayID == udg_cv_Data then
return udg_code_Data[index]
elseif arrayID == udg_cv_Bits then
return udg_code_Bits[index]
elseif arrayID == udg_cv_Raw then
return udg_code_Raw[index]
endif
return 0
endfunction
function GetInputTB takes integer index returns integer
return GetTB( udg_code_TB_Input, index)
endfunction
function GetOutputTB takes integer index returns integer
return GetTB( udg_code_TB_Output, index)
endfunction
function GetSizeTB takes integer arrayID, integer index returns integer
if arrayID == udg_cv_Data then
return udg_code_DataSize[index]
elseif arrayID == udg_cv_Bits then
return 1
elseif arrayID == udg_cv_Raw then
return udg_code_RawSize
endif
return 0
endfunction
function GetInputSizeTB takes integer index returns integer
return GetSizeTB( udg_code_TB_Input, index)
endfunction
function GetOutputSizeTB takes integer index returns integer
return GetSizeTB( udg_code_TB_Output, index)
endfunction
function SetTB takes integer arrayID, integer index, integer value returns integer
if arrayID == udg_cv_Data then
set udg_code_Data[index] = value
elseif arrayID == udg_cv_Bits then
set udg_code_Bits[index] = value
elseif arrayID == udg_cv_Raw then
set udg_code_Raw[index] = value
endif
return 0
endfunction
function SetOutputTB takes integer index, integer value returns integer
return SetTB( udg_code_TB_Output, index, value)
endfunction
function GetEndTB takes integer arrayID returns integer
if arrayID == udg_cv_Data then
return udg_code_DataEnd
elseif arrayID == udg_cv_Bits then
return udg_code_BitsEnd
elseif arrayID == udg_cv_Raw then
return udg_code_RawEnd
endif
return 0
endfunction
function GetOutputEndTB takes nothing returns integer
return GetEndTB( udg_code_TB_Output)
endfunction
function GetInputEndTB takes nothing returns integer
return GetEndTB( udg_code_TB_Input)
endfunction
// ***************************************************
function Trig_Translate_Base_Actions takes nothing returns nothing
local integer entry
local integer entrySize
local integer input= -1
local integer inputBitsLeft = 0
local integer inputEnd = GetInputEndTB()
local integer output = -1
local integer outputBitsLeft = 0
local integer outputEnd = GetOutputEndTB()
loop
if inputBitsLeft == 0 then
exitwhen input == inputEnd
set input = input + 1
set inputBitsLeft = GetInputSizeTB(input)
endif
if outputBitsLeft == 0 then
exitwhen output == outputEnd
set output = output + 1
call SetOutputTB(output, 0)
set outputBitsLeft = GetOutputSizeTB(output)
endif
set entrySize = IMinBJ(inputBitsLeft, outputBitsLeft)
set entry = GetInputTB(input)
set entry = BitShift (entry, - (GetInputSizeTB(input) - inputBitsLeft))
set entry = BitClip (entry, entrySize)
set entry = BitShift (entry, GetOutputSizeTB(output) - outputBitsLeft)
// call DisplayTimedTextToForce( GetPlayersAll(), 600.00, I2S(entry))
call SetOutputTB(output, GetOutputTB(output) + entry)
set inputBitsLeft = inputBitsLeft - entrySize
set outputBitsLeft = outputBitsLeft - entrySize
endloop
endfunction
//===========================================================================
function InitTrig_Code_Translate_Base takes nothing returns nothing
set gg_trg_Code_Translate_Base = CreateTrigger( )
call TriggerAddAction( gg_trg_Code_Translate_Base, function Trig_Translate_Base_Actions )
endfunction
function Trig_Code_Text_to_Raw_Actions takes nothing returns nothing
local integer rawIndex = 0
local integer textIndex = 1
local integer charMapIndex
local string currentCharacter
local integer textLength = StringLength(udg_code_Text)
loop
exitwhen rawIndex > udg_code_RawEnd
if textIndex > textLength then
set udg_code_DecodingError = true
set udg_code_ErrorMessage = "Not enough characters in entered code, code should be " + I2S(udg_code_RawEnd + 1) + " characters long."
exitwhen true
endif
set currentCharacter = StringCase(SubStringBJ(udg_code_Text, textIndex, textIndex), true)
set charMapIndex = 1
loop
if SubStringBJ(udg_code_CharMap, charMapIndex, charMapIndex) == currentCharacter then
set udg_code_Raw[rawIndex] = charMapIndex - 1
set rawIndex = rawIndex + 1
exitwhen true
endif
set charMapIndex = charMapIndex + 1
exitwhen charMapIndex > udg_code_RawBase
endloop
set textIndex = textIndex + 1
endloop
endfunction
//===========================================================================
function InitTrig_Code_Text_to_Raw takes nothing returns nothing
set gg_trg_Code_Text_to_Raw = CreateTrigger( )
call TriggerAddAction( gg_trg_Code_Text_to_Raw, function Trig_Code_Text_to_Raw_Actions )
endfunction