Post by Mark Dunham on Feb 15, 2024 18:58:43 GMT -5
When writing programs I have always defined global variables like this, with LB5 I get a syntax error saying that they are already defined. Has this syntax changed?
global MusicPlaying$, Version$
This is the entire program that works in LB4.5.1
'2E AD&D Character Gen 2.0
'DATE: 4.24.2021
'AUTHOR: MARK A. DUNHAM
'TODO:
'TODO:
nomainwin
BackgroundColor$ = "darkgray"
ForegroundColor$ = "black"
print DefaultDir$
'##############################################################################################
'#GLOBAL VARIABLES #
'##############################################################################################
global MusicPlaying$, Version$, deityTip$
global name$, alignment$, player$, level$, deity$, homeland$, campaign$, class$, race$, size$
global gender$, age$, feet$, inches$, weight$, hair$, eyes$, scar$, piercing$, tattoo$
global personality$, backstory$, xp$, spellsPerDay, bonusLanguages, hitDice$, moveRate, thaco, noAttacks$
global paraylasisPoisonSave, rodStaffWandSave, petrificationPolymorphSave, breathWeaponSave, spellSave
MusicPlaying$ = "FALSE"
Version$ = "2.0"
'##############################################################################################
'#ALL VARIABLES PERTAINING TO THE CHARACTER #
'##############################################################################################
boolAttributesSet$ = "FALSE"
boolAbilitiesSet$ = "FALSE"
'ATTRIBUTES
name$ = ""
alignment$ = ""
player$ = ""
level$ = ""
deity$ = ""
homeland$ = ""
campaign$ = ""
class$ = ""
race$ = ""
size$ = ""
gender$ = ""
age$ = ""
feet$ = ""
inches$ = ""
weight$ = ""
hair$ = ""
eyes$ = ""
scar$ = ""
piercing$ = ""
tattoo$ = ""
personality$ = ""
backstory$ = ""
xp$ = ""
spellsPerDay = 0
bonusLanguages = 0
hitDice$ = ""
moveRate = 0
thaco = 0
noAttacks$ = ""
'SAVING THROWS
paraylasisPoisonSave = 0
rodStaffWandSave = 0
petrificationPolymorphSave = 0
breathWeaponSave = 0
spellSave = 0
deityTip$ = ""
'##############################################################################################
'#ARRAYS FOR ALL DROPDOWN BOXES #
'##############################################################################################
dim races$(6)
races$(1) = "Dwarf"
races$(2) = "Elf"
races$(3) = "Gnome"
races$(4) = "Half-Elf"
races$(5) = "Halfling"
races$(6) = "Human"
dim classes$(16)
classes$(1) = "Fighter"
classes$(2) = "Ranger"
classes$(3) = "Paladin"
classes$(4) = "Mage"
classes$(5) = " *Abjurer"
classes$(6) = " *Conjurer"
classes$(7) = " *Diviner"
classes$(8) = " *Enchanter"
classes$(9) = " *Illusionist"
classes$(10) = " *Invoker"
classes$(11) = " *Necromancer"
classes$(12) = " *Transmuter"
classes$(13) = "Cleric"
classes$(14) = "Druid"
classes$(15) = "Thief"
classes$(16) = "Bard"
dim level$(20)
level$(1) = "1"
level$(2) = "2"
level$(3) = "3"
level$(4) = "4"
level$(5) = "5"
level$(6) = "6"
level$(7) = "7"
level$(8) = "8"
level$(9) = "9"
level$(10) = "10"
level$(11) = "11"
level$(12) = "12"
level$(13) = "13"
level$(14) = "14"
level$(15) = "15"
level$(16) = "16"
level$(17) = "17"
level$(18) = "18"
level$(19) = "19"
level$(20) = "20"
dim alignments$(9)
alignments$(1) = "Lawful Good"
alignments$(2) = "Lawful Neutral"
alignments$(3) = "Lawful Evil"
alignments$(4) = "Neutral Good"
alignments$(5) = "True Neutral"
alignments$(6) = "Neutral Evil"
alignments$(7) = "Chaotic Good"
alignments$(8) = "Chaotic Neutral"
alignments$(9) = "Chaotic Evil"
dim deity$(19)
deity$(1) = "Boccob (N)"
deity$(2) = "Corellon Larethian (CG)"
deity$(3) = "Ehlonna (NG)"
deity$(4) = "Erythnul (CE)"
deity$(5) = "Fharlanghn (N)"
deity$(6) = "Garl Glittergold (NG)"
deity$(7) = "Gruumsh (CE)"
deity$(8) = "Heironeous (LG)"
deity$(9) = "Hextor (LE)"
deity$(10) = "Kord (CG)"
deity$(11) = "Moradin (LG)"
deity$(12) = "Nerull (NE)"
deity$(13) = "Obad-Hai (N)"
deity$(14) = "Olidammara (CN)"
deity$(15) = "Pelor (NG)"
deity$(16) = "St. Cuthbert (LN)"
deity$(17) = "Vecna (NE)"
deity$(18) = "Wee Jas (LN)"
deity$(19) = "Yondalla (LG)"
dim genders$(2)
genders$(1) = "Male"
genders$(2) = "Female"
dim feet$(7)
feet$(1) = "1'"
feet$(2) = "2'"
feet$(3) = "3'"
feet$(4) = "4'"
feet$(5) = "5'"
feet$(6) = "6'"
feet$(7) = "7'"
dim inches$(12)
inches$(1) = "0" + chr$(34)
inches$(2) = "1" + chr$(34)
inches$(3) = "2" + chr$(34)
inches$(4) = "3" + chr$(34)
inches$(5) = "4" + chr$(34)
inches$(6) = "5" + chr$(34)
inches$(7) = "6" + chr$(34)
inches$(8) = "7" + chr$(34)
inches$(9) = "8" + chr$(34)
inches$(10) = "9" + chr$(34)
inches$(11) = "10" + chr$(34)
inches$(12) = "11" + chr$(34)
'##############################################################################################
'#BEGIN LOAD BITMAPS #
'##############################################################################################
loadbmp "MainBG", "Images\DRV_1024x768.bmp"
loadbmp "Parchment", "Images\Parchment_1024x768.bmp"
'##############################################################################################
'#END LOAD BITMAPS #
'##############################################################################################
'MUSIC STARTED BEFORE MAIN TO ALLOW MUTE TO WORK ALL THE TIME
if MusicPlaying$ = "FALSE" then
playmidi "Music\MedievalBanquet.mid", howlong
MusicPlaying$ = "TRUE"
end if
if MusicPlaying$ = "TRUE" then
if howlong = midipos() then
stopmidi
MusicPlaying$ = "FALSE"
end if
end if
'##############################################################################################
'#BEGIN LOAD THE MAIN WINDOW #
'##############################################################################################
[Main.Menu]
WindowWidth = 1024
WindowHeight = 768
UpperLeftX = int((DisplayWidth - WindowWidth)/2)
UpperLeftY = int((DisplayHeight - WindowHeight)/2)
Stylebits #Main, _WS_CAPTION, 0, 0, 0
menu #Main, "File","New",[NewCharacter],"Open",[LoadCharacter],"Save",[SaveCharacter],"Quit",[Main.Quit]
menu #Main, "Sound","Mute",[Mute],"Unmute",[Unmute]
menu #Main, "Tools","Dice Bag",[Dice],"Random Name Gen",[NameGen]
'menu #Main, "About","Help",[Help]
button #Main.AttributesBtn, "Attributes",[Show.Attributes],UL,15,65,150,50
button #Main.AbilitiesBtn, "Abilities",[Show.Abilities],UL,15,120,150,50
'button #Main.SkillsBtn, "Skills",[Show.Skills],UL,15,175,150,50
'graphicbox #Main.gbx1, 10,10, 150, 200
'bmpbutton #Main.gbxForward, "Images\Buttons\RightButton_50x25.bmp", [PC.Image.Forward], UL,85,215
'bmpbutton #Main.gbxBack, "Images\Buttons\LeftButton_50x25.bmp", [PC.Image.Back], UL,32,215
statictext #Main.gbx1.st1, "Advanced Dungeons & Dragons", 15,15,100,25
graphicbox #Main.gbx1, -1,-1, 1024, 768
open "2E AD&D Character Gen" for graphics_nsb_nf as #Main
#Main, "trapclose [Main.Quit]"
#Main, "font Arial 0 0 bold"
#Main.gbx1, "flush; drawbmp MainBG 0 0; flush"
'#Main, "background MainBG"
#Main, "drawsprites"
'###################################
'## TRANSPARENT TEXT CALL #
'###################################
hDC=GetDC(hwnd(#Main.gbx1))
call SetBkMode hDC,1
call ReleaseDC hwnd(#Main.gbx1),hDC
#Main.gbx1, "font Comic_Sans_MS 40 bold"
#Main.gbx1, "down; color 255 255 255"
#Main.gbx1, "Place 625 75"
#Main.gbx1, "\Advanced"
#Main.gbx1, "Place 475 125"
#Main.gbx1, "\Dungeons & Dragons"
#Main.gbx1, "font Comic_Sans_MS 20 bold"
#Main.gbx1, "Place 650 175"
#Main.gbx1, "\Character Gen"
#Main.gbx1, "Place 850 705"
#Main.gbx1, "\Version " + Version$
wait
[Mute]
if MusicPlaying$ = "TRUE" then stopmidi
MusicPlaying$ = "FALSE"
wait
[Unmute]
if MusicPlaying$ = "FALSE" then
playmidi "Music\MedievalBanquet.mid", howlong
MusicPlaying$ = "TRUE"
end if
wait
[Main.Quit]
if MusicPlaying$ = "TRUE" then stopmidi
unloadbmp "MainBG"
close #Main
wait
end
[Dice]
run "DiceRoller_3.0.tkn"
wait
[NameGen]
run "XMLNameGen.tkn"
wait
'##############################################################################################
'#END LOAD THE MAIN WINDOW #
'##############################################################################################
'##############################################################################################
'#BEGIN CHARACTER ATTRIBUTES #
'##############################################################################################
[Show.Attributes]
close #Main
if MusicPlaying$ = "TRUE" then playwave "Sounds\hit.wav", async
WindowWidth = 1024
WindowHeight = 768
UpperLeftX = int((DisplayWidth - WindowWidth)/2)
UpperLeftY = int((DisplayHeight - WindowHeight)/2)
'ROW ONE
textbox #Attributes.tbName, 65,40,150,25
textbox #Attributes.tbPlayer, 285,40,150,25
textbox #Attributes.tbHomeland, 540,40,175,25
textbox #Attributes.tbCampaign, 815,40,175,25
'ROW TWO
combobox #Attributes.CmbLevel, level$(), [Char.Level], 65,70,150,125
combobox #Attributes.CmbRace, races$(),[Char.Race], 285,70,150,125
combobox #Attributes.CmbClass, classes$(),[Char.Class], 540,70,175,125
combobox #Attributes.CmbDeity, deity$(),[Char.Deity], 815,70,175,125
'ROW THREE
combobox #Attributes.CmbAlign, alignments$(),[Char.Alignment],94,100,121,125
textbox #Attributes.tbSize, 335,100,100,25
combobox #Attributes.CmbFeet, feet$(),[Char.Feet], 540,100,85,125
combobox #Attributes.CmbInches, inches$(),[Char.Inches], 630,100,85,125
textbox #Attributes.tbWeight, 890,100,100,25
'ROW FOUR
combobox #Attributes.CmbGender, genders$(),[Char.Gender], 94,130,121,125
textbox #Attributes.tbAge, 335,130,100,25
textbox #Attributes.tbHair, 540,130,175,25
textbox #Attributes.tbEyes, 815,130,175,25
'ROW FIVE
textbox #Attributes.tbScar, 100,160,335,25
textbox #Attributes.tbTattoo, 540,160,450,25
'ROW SIX
textbox #Attributes.tbPiercing, 100,190,335,25
textbox #Attributes.tbPersonality, 540,190,450,25
'ROW SEVEN
textbox #Attributes.tbMoveRate, 615,220,100,25
textbox #Attributes.tbXP, 840,220,150,25
'ROW EIGHT
textbox #Attributes.tbThaco, 615,250,100,25
textbox #Attributes.tbNoAttacks, 840,250,150,25
'REMAINING ROWS
textbox #Attributes.tbParaylasisPoison, 915,310,75,25
textbox #Attributes.tbRodStaffWand, 915,340,75,25
textbox #Attributes.tbPetrificationPolymorph, 915,370,75,25
textbox #Attributes.tbBreathWeapon, 915,400,75,25
textbox #Attributes.tbSpell, 915,430,75,25
'STYLE BITS TO LIMIT TEXT IN TEXTBOXES
Stylebits #Attributes.tbName, _ES_MULTILINE, _ES_AUTOHSCROLL OR _ES_AUTOVSCROLL, 0, 0
textbox #Attributes.tbBackstory, 100,220,335,150
Stylebits #Attributes.tbBackstory, _WS_VSCROLL OR _ES_MULTILINE, _ES_AUTOHSCROLL, 0, 0
textbox #Attributes.tbTip, 65,400,600,330
Stylebits #Attributes.tbTip, _WS_VSCROLL OR _ES_MULTILINE, _ES_AUTOHSCROLL, 0, 0
'bmpbutton #Attributes.AcceptBtn, "Images\Buttons\AcceptButton_150x50.bmp", [Attributes.Accept], UL,685,650
'bmpbutton #Attributes.CancelBtn, "Images\Buttons\CancelButton_150x50.bmp", [Attributes.Accept], UL,845,650
button #Attributes.AcceptBtn, "Accept", [Attributes.Accept], UL, 750,650,100,50
graphicbox #Attributes.gbx1, -1,-1, 1024, 768
'stylebits #Attributes, 0, _WS_MAXIMIZEBOX or _WS_MINIMIZEBOX, _WS_EX_CLIENTEDGE or _WS_EX_TOPMOST, 0
open "Character Attributes" for graphics_nsb_nf as #Attributes
#Attributes, "trapclose [CharAtt.Quit]"
#Attributes, "font Arial 14 bold"
'#Attributes.tbName, "!setfocus"
#Attributes.gbx1, "flush; drawbmp Parchment 0 0; flush"
#Attributes.tbSize, "!disable"
#Attributes.CmbRace, "disable"
#Attributes.CmbClass, "disable"
'#Attributes.CmbDeity, "disable"
'#Attributes.CmbAlign, "disable"
#Attributes.tbMoveRate, "!disable"
#Attributes.tbXP, "!disable"
#Attributes.tbThaco, "!disable"
#Attributes.tbNoAttacks, "!disable"
#Attributes.tbParaylasisPoison, "!disable"
#Attributes.tbRodStaffWand, "!disable"
#Attributes.tbPetrificationPolymorph, "!disable"
#Attributes.tbBreathWeapon, "!disable"
#Attributes.tbSpell, "!disable"
#Attributes.tbTip, "!disable"
'###################################
'## TRANSPARENT TEXT CALL #
'###################################
hDC=GetDC(hwnd(#Attributes.gbx1))
call SetBkMode hDC,1
call ReleaseDC hwnd(#Attributes.gbx1),hDC
'LABELS FOR THE CONTROLS OF THE WINDOW THEY HAVE TO BE PLACED AFTER
'THE WINDOW HAS BEEN CREATED
#Attributes.gbx1, "font arial 12 italic bold"
#Attributes.gbx1, "down; color black"
'ROW ONE
#Attributes.gbx1, "place 10 58"
#Attributes.gbx1, "\Name:"
#Attributes.gbx1, "place 225 58"
#Attributes.gbx1, "\Player:"
#Attributes.gbx1, "place 450 58"
#Attributes.gbx1, "\Homeland:"
#Attributes.gbx1, "place 725 58"
#Attributes.gbx1, "\Campaign:"
'ROW TWO
#Attributes.gbx1, "place 10 88"
#Attributes.gbx1, "\Level:"
#Attributes.gbx1, "place 225 88"
#Attributes.gbx1, "\Race:"
#Attributes.gbx1, "place 450 88"
#Attributes.gbx1, "\Class:"
#Attributes.gbx1, "place 725 88"
#Attributes.gbx1, "\Deity:"
'ROW THREE
#Attributes.gbx1, "place 8 118"
#Attributes.gbx1, "\Alignment:"
#Attributes.gbx1, "place 225 118"
#Attributes.gbx1, "\Size:"
#Attributes.gbx1, "place 450 118"
#Attributes.gbx1, "\Height:"
#Attributes.gbx1, "place 725 118"
#Attributes.gbx1, "\Weight:"
'ROW FOUR
#Attributes.gbx1, "place 10 148"
#Attributes.gbx1, "\Gender:"
#Attributes.gbx1, "place 225 148"
#Attributes.gbx1, "\Age:"
#Attributes.gbx1, "place 450 148"
#Attributes.gbx1, "\Hair:"
#Attributes.gbx1, "place 725 148"
#Attributes.gbx1, "\Eyes:"
'ROW FIVE
#Attributes.gbx1, "place 10 178"
#Attributes.gbx1, "\Scar:"
#Attributes.gbx1, "place 450 178"
#Attributes.gbx1, "\Tattoo:"
'ROW SIX
#Attributes.gbx1, "place 10 208"
#Attributes.gbx1, "\Piercing:"
#Attributes.gbx1, "place 446 208"
#Attributes.gbx1, "\Personality:"
'ROW SEVEN
#Attributes.gbx1, "place 10 238"
#Attributes.gbx1, "\BackStory:"
#Attributes.gbx1, "place 450 238"
#Attributes.gbx1, "\Move Rate:"
#Attributes.gbx1, "place 725 238"
#Attributes.gbx1, "\XP:"
'ROW EIGHT
#Attributes.gbx1, "place 450 268"
#Attributes.gbx1, "\THAC0:"
#Attributes.gbx1, "place 725 268"
#Attributes.gbx1, "\No. of Attacks:"
'REMAINING ROWS
#Attributes.gbx1, "place 870 298"
#Attributes.gbx1, "\Saving Throws"
#Attributes.gbx1, "place 725 328"
#Attributes.gbx1, "\Paraylasis/Poison:"
#Attributes.gbx1, "place 725 358"
#Attributes.gbx1, "\Rod/Staff/Wand:"
#Attributes.gbx1, "place 725 388"
#Attributes.gbx1, "\Petrification/Polymorph:"
#Attributes.gbx1, "place 725 418"
#Attributes.gbx1, "\Breath Weapon:"
#Attributes.gbx1, "place 725 448"
#Attributes.gbx1, "\Spell:"
#Attributes.gbx1, "place 10 418"
#Attributes.gbx1, "\Tips:"
#Attributes.gbx1, "flush"
'UPDATE UI WHEN RELOADING THE WINDOW TO SHOW THE CURRENT CHARACTER
'ATTRIBUTES SET. WILL NEED TO ADD ANY CONTROLS ADDED
call AttributesUpdateUI
wait
[Char.Level]
#Attributes.CmbLevel, "selection? CharLevel$"
level$ = CharLevel$
'call AttributesReset "Level"
#Attributes.CmbRace, "enable"
call SetFocusGraphicBox
call ClassRaceReset
wait
[Char.Race]
#Attributes.CmbRace, "selection? CharRace$"
race$ = CharRace$
select case race$
case "Human","Elf","Half-Elf"
moveRate = 12
case "Dwarf","Gnome","Halfling"
moveRate = 6
end select
if race$ = "Gnome" or race$ = "Halfling" then
size$ = "Small"
else
size$ = "Medium"
end if
'call AttributesReset "Race"
#Attributes.CmbClass, "enable"
#Attributes.tbMoveRate, moveRate
#Attributes.tbSize, size$
call SetFocusGraphicBox
wait
[Char.Class]
#Attributes.CmbClass, "selection? CharClass$"
class$ = CharClass$
select case class$
case "Fighter"
hitDice$ = "D10"
noAttacks$ = "1"
if level$ = "1" then xp$ = "0" : thaco = 20
if level$ = "2" then xp$ = "2,000" : thaco = 19
if level$ = "3" then xp$ = "4,000" : thaco = 18
if level$ = "4" then xp$ = "8,000" : thaco = 17
if level$ = "5" then xp$ = "16,000" : thaco = 16
if level$ = "6" then xp$ = "32,000" : thaco = 15
if level$ = "7" then xp$ = "64,000" : thaco = 14 : noAttacks$ = "3/2"
if level$ = "8" then xp$ = "125,000" : thaco = 13 : noAttacks$ = "3/2"
if level$ = "9" then xp$ = "250,000" : thaco = 12 : noAttacks$ = "3/2"
if level$ = "10" then xp$ = "500,000" : thaco = 11 : noAttacks$ = "3/2"
if level$ = "11" then xp$ = "750,000" : thaco = 10 : noAttacks$ = "3/2"
if level$ = "12" then xp$ = "1,000,000" : thaco = 9 : noAttacks$ = "3/2"
if level$ = "13" then xp$ = "1,250,000" : thaco = 8 : noAttacks$ = "2"
if level$ = "14" then xp$ = "1,500,000" : thaco = 7 : noAttacks$ = "2"
if level$ = "15" then xp$ = "1,750,000" : thaco = 6 : noAttacks$ = "2"
if level$ = "16" then xp$ = "2,000,000" : thaco = 5 : noAttacks$ = "2"
if level$ = "17" then xp$ = "2,250,000" : thaco = 4 : noAttacks$ = "2"
if level$ = "18" then xp$ = "2,500,000" : thaco = 3 : noAttacks$ = "2"
if level$ = "19" then xp$ = "2,750,000" : thaco = 2 : noAttacks$ = "2"
if level$ = "20" then xp$ = "3,000,000" : thaco = 1 : noAttacks$ = "2"
select case level$
case "1","2"
paraylasisPoisonSave = 14
rodStaffWandSave = 16
petrificationPolymorphSave = 15
breathWeaponSave = 17
spellSave = 17
case "3","4"
paraylasisPoisonSave = 13
rodStaffWandSave = 15
petrificationPolymorphSave = 14
breathWeaponSave = 16
spellSave = 16
case "5","6"
paraylasisPoisonSave = 11
rodStaffWandSave = 13
petrificationPolymorphSave = 12
breathWeaponSave = 13
spellSave = 14
case "7","8"
paraylasisPoisonSave = 10
rodStaffWandSave = 12
petrificationPolymorphSave = 11
breathWeaponSave = 12
spellSave = 13
case "9","10"
paraylasisPoisonSave = 8
rodStaffWandSave = 10
petrificationPolymorphSave = 9
breathWeaponSave = 9
spellSave = 11
case "11","12"
paraylasisPoisonSave = 7
rodStaffWandSave = 9
petrificationPolymorphSave = 8
breathWeaponSave = 8
spellSave = 10
case "13","14"
paraylasisPoisonSave = 5
rodStaffWandSave = 7
petrificationPolymorphSave = 6
breathWeaponSave = 5
spellSave = 8
case "15","16"
paraylasisPoisonSave = 4
rodStaffWandSave = 6
petrificationPolymorphSave = 5
breathWeaponSave = 4
spellSave = 7
case "17","18","19","20"
paraylasisPoisonSave = 3
rodStaffWandSave = 5
petrificationPolymorphSave = 4
breathWeaponSave = 4
spellSave = 6
end select
case "Paladin","Ranger"
hitDice$ = "D10"
noAttacks$ = "1"
if level$ = "1" then xp$ = "0" : thaco = 20
if level$ = "2" then xp$ = "2,250" : thaco = 19
if level$ = "3" then xp$ = "4,500" : thaco = 18
if level$ = "4" then xp$ = "9,000" : thaco = 17
if level$ = "5" then xp$ = "18,000" : thaco = 16
if level$ = "6" then xp$ = "36,000" : thaco = 15
if level$ = "7" then xp$ = "75,000" : thaco = 14 : noAttacks$ = "3/2"
if level$ = "8" then xp$ = "150,000" : thaco = 13 : noAttacks$ = "3/2"
if level$ = "9" then xp$ = "300,000" : thaco = 12 : noAttacks$ = "3/2"
if level$ = "10" then xp$ = "600,000" : thaco = 11 : noAttacks$ = "3/2"
if level$ = "11" then xp$ = "900,000" : thaco = 10 : noAttacks$ = "3/2"
if level$ = "12" then xp$ = "1,200,000" : thaco = 9 : noAttacks$ = "3/2"
if level$ = "13" then xp$ = "1,500,000" : thaco = 8 : noAttacks$ = "2"
if level$ = "14" then xp$ = "1,500,000" : thaco = 7 : noAttacks$ = "2"
if level$ = "15" then xp$ = "1,800,000" : thaco = 6 : noAttacks$ = "2"
if level$ = "16" then xp$ = "2,400,000" : thaco = 5 : noAttacks$ = "2"
if level$ = "17" then xp$ = "2,700,000" : thaco = 4 : noAttacks$ = "2"
if level$ = "18" then xp$ = "3,000,000" : thaco = 3 : noAttacks$ = "2"
if level$ = "19" then xp$ = "3,300,000" : thaco = 2 : noAttacks$ = "2"
if level$ = "20" then xp$ = "3,600,000" : thaco = 1 : noAttacks$ = "2"
select case level$
case "1","2"
paraylasisPoisonSave = 14
rodStaffWandSave = 16
petrificationPolymorphSave = 15
breathWeaponSave = 17
spellSave = 17
case "3","4"
paraylasisPoisonSave = 13
rodStaffWandSave = 15
petrificationPolymorphSave = 14
breathWeaponSave = 16
spellSave = 16
case "5","6"
paraylasisPoisonSave = 11
rodStaffWandSave = 13
petrificationPolymorphSave = 12
breathWeaponSave = 13
spellSave = 14
case "7","8"
paraylasisPoisonSave = 10
rodStaffWandSave = 12
petrificationPolymorphSave = 11
breathWeaponSave = 12
spellSave = 13
case "9","10"
paraylasisPoisonSave = 8
rodStaffWandSave = 10
petrificationPolymorphSave = 9
breathWeaponSave = 9
spellSave = 11
case "11","12"
paraylasisPoisonSave = 7
rodStaffWandSave = 9
petrificationPolymorphSave = 8
breathWeaponSave = 8
spellSave = 10
case "13","14"
paraylasisPoisonSave = 5
rodStaffWandSave = 7
petrificationPolymorphSave = 6
breathWeaponSave = 5
spellSave = 8
case "15","16"
paraylasisPoisonSave = 4
rodStaffWandSave = 6
petrificationPolymorphSave = 5
breathWeaponSave = 4
spellSave = 7
case "17","18","19","20"
paraylasisPoisonSave = 3
rodStaffWandSave = 5
petrificationPolymorphSave = 4
breathWeaponSave = 4
spellSave = 6
end select
case "Mage"," *Abjurer"," *Conjurer"," *Diviner"," *Enchanter"," *Illusionist"," *Necromancer"," *Transmuter"
hitDice$ = "D4"
noAttacks$ = "1"
if level$ = "1" then xp$ = "0" : thaco = 20
if level$ = "2" then xp$ = "2,500" : thaco = 20
if level$ = "3" then xp$ = "5,000" : thaco = 20
if level$ = "4" then xp$ = "10,000" : thaco = 19
if level$ = "5" then xp$ = "20,000" : thaco = 19
if level$ = "6" then xp$ = "40,000" : thaco = 19
if level$ = "7" then xp$ = "60,000" : thaco = 18
if level$ = "8" then xp$ = "90,000" : thaco = 18
if level$ = "9" then xp$ = "135,000" : thaco = 18
if level$ = "10" then xp$ = "250,000" : thaco = 17
if level$ = "11" then xp$ = "375,000" : thaco = 17
if level$ = "12" then xp$ = "750,000" : thaco = 17
if level$ = "13" then xp$ = "1,125,000" : thaco = 16
if level$ = "14" then xp$ = "1,500,000" : thaco = 16
if level$ = "15" then xp$ = "1,875,000" : thaco = 16
if level$ = "16" then xp$ = "2,250,000" : thaco = 15
if level$ = "17" then xp$ = "2,625,000" : thaco = 15
if level$ = "18" then xp$ = "3,000,000" : thaco = 15
if level$ = "19" then xp$ = "3,375,000" : thaco = 14
if level$ = "20" then xp$ = "3,750,000" : thaco = 14
select case level$
case "1","2","3","4","5"
paraylasisPoisonSave = 14
rodStaffWandSave = 11
petrificationPolymorphSave = 13
breathWeaponSave = 15
spellSave = 12
case "6","7","8","9","10"
paraylasisPoisonSave = 13
rodStaffWandSave = 9
petrificationPolymorphSave = 11
breathWeaponSave = 13
spellSave = 10
case "11","12","13","14","15"
paraylasisPoisonSave = 11
rodStaffWandSave = 7
petrificationPolymorphSave = 9
breathWeaponSave = 11
spellSave = 8
case "16","17","18","19","20"
paraylasisPoisonSave = 10
rodStaffWandSave = 5
petrificationPolymorphSave = 7
breathWeaponSave = 9
spellSave = 6
end select
case "Cleric"
hitDice$ = "D8"
noAttacks$ = "1"
if level$ = "1" then xp$ = "0" : thaco = 20
if level$ = "2" then xp$ = "1,500" : thaco = 20
if level$ = "3" then xp$ = "3,000" : thaco = 20
if level$ = "4" then xp$ = "6,000" : thaco = 18
if level$ = "5" then xp$ = "13,000" : thaco = 18
if level$ = "6" then xp$ = "27,500" : thaco = 18
if level$ = "7" then xp$ = "55,000" : thaco = 16
if level$ = "8" then xp$ = "110,000" : thaco = 16
if level$ = "9" then xp$ = "225,000" : thaco = 16
if level$ = "10" then xp$ = "450,000" : thaco = 14
if level$ = "11" then xp$ = "675,000" : thaco = 14
if level$ = "12" then xp$ = "900,000" : thaco = 14
if level$ = "13" then xp$ = "1,125,000" : thaco = 12
if level$ = "14" then xp$ = "1,350,000" : thaco = 12
if level$ = "15" then xp$ = "1,575,000" : thaco = 12
if level$ = "16" then xp$ = "1,800,000" : thaco = 10
if level$ = "17" then xp$ = "2,025,000" : thaco = 10
if level$ = "18" then xp$ = "2,250,000" : thaco = 10
if level$ = "19" then xp$ = "2,475,000" : thaco = 8
if level$ = "20" then xp$ = "2,700,000" : thaco = 8
select case level$
case "1","2","3"
paraylasisPoisonSave = 10
rodStaffWandSave = 14
petrificationPolymorphSave = 13
breathWeaponSave = 16
spellSave = 15
case "4","5","6"
paraylasisPoisonSave = 9
rodStaffWandSave = 13
petrificationPolymorphSave = 12
breathWeaponSave = 15
spellSave = 14
case "7","8","9"
paraylasisPoisonSave = 7
rodStaffWandSave = 11
petrificationPolymorphSave = 10
breathWeaponSave = 13
spellSave = 12
case "10","11","12"
paraylasisPoisonSave = 6
rodStaffWandSave = 10
petrificationPolymorphSave = 9
breathWeaponSave = 12
spellSave = 11
case "13","14","15"
paraylasisPoisonSave = 5
rodStaffWandSave = 9
petrificationPolymorphSave = 8
breathWeaponSave = 11
spellSave = 10
case "16","17","18"
paraylasisPoisonSave = 4
rodStaffWandSave = 8
petrificationPolymorphSave = 7
breathWeaponSave = 10
spellSave = 9
case "19","20"
paraylasisPoisonSave = 2
rodStaffWandSave = 6
petrificationPolymorphSave = 5
breathWeaponSave = 8
spellSave = 7
end select
case "Druid"
hitDice$ = "D8"
noAttacks$ = "1"
if level$ = "1" then xp$ = "0" : thaco = 20
if level$ = "2" then xp$ = "2,000" : thaco = 20
if level$ = "3" then xp$ = "4,000" : thaco = 20
if level$ = "4" then xp$ = "7,500" : thaco = 18
if level$ = "5" then xp$ = "12,500" : thaco = 18
if level$ = "6" then xp$ = "20,000" : thaco = 18
if level$ = "7" then xp$ = "35,000" : thaco = 16
if level$ = "8" then xp$ = "60,000" : thaco = 16
if level$ = "9" then xp$ = "90,000" : thaco = 16
if level$ = "10" then xp$ = "125,000" : thaco = 14
if level$ = "11" then xp$ = "200,000" : thaco = 14
if level$ = "12" then xp$ = "300,000" : thaco = 14
if level$ = "13" then xp$ = "750,000" : thaco = 12
if level$ = "14" then xp$ = "1,500,000" : thaco = 12
if level$ = "15" then xp$ = "3,000,000" : thaco = 12
if level$ = "16" then xp$ = "3,500,000" : thaco = 10
if level$ = "17" then xp$ = "500,000" : thaco = 10
if level$ = "18" then xp$ = "1,000,000" : thaco = 10
if level$ = "19" then xp$ = "1,500,000" : thaco = 8
if level$ = "20" then xp$ = "2,000,000" : thaco = 8
select case level$
case "1","2","3"
paraylasisPoisonSave = 10
rodStaffWandSave = 14
petrificationPolymorphSave = 13
breathWeaponSave = 16
spellSave = 15
case "4","5","6"
paraylasisPoisonSave = 9
rodStaffWandSave = 13
petrificationPolymorphSave = 12
breathWeaponSave = 15
spellSave = 14
case "7","8","9"
paraylasisPoisonSave = 7
rodStaffWandSave = 11
petrificationPolymorphSave = 10
breathWeaponSave = 13
spellSave = 12
case "10","11","12"
paraylasisPoisonSave = 6
rodStaffWandSave = 10
petrificationPolymorphSave = 9
breathWeaponSave = 12
spellSave = 11
case "13","14","15"
paraylasisPoisonSave = 5
rodStaffWandSave = 9
petrificationPolymorphSave = 8
breathWeaponSave = 11
spellSave = 10
case "16","17","18"
paraylasisPoisonSave = 4
rodStaffWandSave = 8
petrificationPolymorphSave = 7
breathWeaponSave = 10
spellSave = 9
case "19","20"
paraylasisPoisonSave = 2
rodStaffWandSave = 6
petrificationPolymorphSave = 5
breathWeaponSave = 8
spellSave = 7
end select
case "Thief","Bard"
hitDice$ = "D6"
noAttacks$ = "1"
if level$ = "1" then xp$ = "0" : thaco = 20
if level$ = "2" then xp$ = "1,250" : thaco = 20
if level$ = "3" then xp$ = "2,500" : thaco = 19
if level$ = "4" then xp$ = "5,000" : thaco = 19
if level$ = "5" then xp$ = "10,000" : thaco = 18
if level$ = "6" then xp$ = "20,000" : thaco = 18
if level$ = "7" then xp$ = "40,000" : thaco = 17
if level$ = "8" then xp$ = "70,000" : thaco = 17
if level$ = "9" then xp$ = "110,000" : thaco = 16
if level$ = "10" then xp$ = "160,000" : thaco = 16
if level$ = "11" then xp$ = "220,000" : thaco = 15
if level$ = "12" then xp$ = "440,000" : thaco = 15
if level$ = "13" then xp$ = "660,000" : thaco = 14
if level$ = "14" then xp$ = "880,000" : thaco = 14
if level$ = "15" then xp$ = "1,100,000" : thaco = 13
if level$ = "16" then xp$ = "1,320,000" : thaco = 13
if level$ = "17" then xp$ = "1,540,000" : thaco = 12
if level$ = "18" then xp$ = "1,760,000" : thaco = 12
if level$ = "19" then xp$ = "1,980,000" : thaco = 11
if level$ = "20" then xp$ = "2,700,000" : thaco = 11
select case level$
case "1","2","3","4"
paraylasisPoisonSave = 13
rodStaffWandSave = 14
petrificationPolymorphSave = 12
breathWeaponSave = 16
spellSave = 15
case "5","6","7","8"
paraylasisPoisonSave = 12
rodStaffWandSave = 12
petrificationPolymorphSave = 11
breathWeaponSave = 15
spellSave = 13
case "9","10","11","12"
paraylasisPoisonSave = 11
rodStaffWandSave = 10
petrificationPolymorphSave = 10
breathWeaponSave = 14
spellSave = 11
case "13","14","15","16"
paraylasisPoisonSave = 10
rodStaffWandSave = 8
petrificationPolymorphSave = 9
breathWeaponSave = 13
spellSave = 9
case "17","18","19","20"
paraylasisPoisonSave = 9
rodStaffWandSave = 6
petrificationPolymorphSave = 8
breathWeaponSave = 12
spellSave = 7
end select
end select
'FILTER CLASS AND RACES
if class$ = "Paladin" and race$ <> "Human" then
notice "Paladins can only be of the Human race!"
call ClassRaceReset
end if
if race$ = "Dwarf" or race$ = "Gnome" or race$ = "Halfling" and class$ = "Ranger" then
notice "Rangers can only be Human, Elf or Half-Elf!"
call ClassRaceReset
end if
if race$ = "Dwarf" or race$ = "Gnome" or race$ = "Halfling" and class$ = "Mage" then
notice "Mages can only be Human, Elf or Half-Elf!"
call ClassRaceReset
end if
if race$ = "Dwarf" or race$ = "Elf" or race$ = "Gnome" or race$ = "Half-Elf" or race$ = "Halfling" and class$ = " *Abjurer" then
notice "Abjurers can only be Human!"
call ClassRaceReset
end if
if race$ = "Dwarf" or race$ = "Elf" or race$ = "Gnome" or race$ = "Halfling" and class$ = " *Conjurer" then
notice "Conjurers can only be Human and Half-ELf!"
call ClassRaceReset
end if
if race$ = "Dwarf" or race$ = "Gnome" or race$ = "Halfling" and class$ = " *Diviner" then
notice "Diviners can only be Human, Elf and Half-Elf!"
call ClassRaceReset
end if
if race$ = "Dwarf" or race$ = "Gnome" or race$ = "Halfling" and class$ = " *Enchanter" then
notice "Enchanters can only be Human, Elf and Half-ELf!"
call ClassRaceReset
end if
if race$ = "Dwarf" or race$ = "Elf" or race$ = "Half-Elf" or race$ = "Halfling" and class$ = " *Illusionist" then
notice "Illusionists can only be Human and Gnome!"
call ClassRaceReset
end if
if race$ = "Dwarf" or race$ = "Elf" or race$ = "Gnome" or race$ = "Half-Elf" or race$ = "Halfling" and class$ = " *Invoker" then
notice "Invokers can only be Human!"
call ClassRaceReset
end if
if race$ = "Dwarf" or race$ = "Elf" or race$ = "Gnome" or race$ = "Half-Elf" or race$ = "Halfling" and class$ = " *Necromancer" then
notice "Necromancers can only be Human!"
call ClassRaceReset
end if
if race$ = "Dwarf" or race$ = "Elf" or race$ = "Gnome" or race$ = "Halfling" and class$ = " *Transmuter" then
notice "Transmuters can only be Human and Half-Elf!"
call ClassRaceReset
end if
#Attributes.tbXP, xp$
#Attributes.tbThaco, thaco
#Attributes.tbNoAttacks, noAttacks$
#Attributes.tbParaylasisPoison, paraylasisPoisonSave
#Attributes.tbRodStaffWand, rodStaffWandSave
#Attributes.tbPetrificationPolymorph, petrificationPolymorphSave
#Attributes.tbBreathWeapon, breathWeaponSave
#Attributes.tbSpell, spellSave
'call AttributesUpdateUI
wait
[Char.Deity]
#Attributes.CmbDeity, "selection? CharDeity$"
deity$ = CharDeity$
select case deity$
case "Boccob (N)"
deityTip$ = LoadTip$(deity$)
#Attributes.tbTip, deityTip$
case "Corellon Larethian (CG)"
deityTip$ = LoadTip$(deity$)
#Attributes.tbTip, deityTip$
case "Ehlonna (NG)"
deityTip$ = LoadTip$(deity$)
#Attributes.tbTip, deityTip$
case "Erythnul (CE)"
deityTip$ = LoadTip$(deity$)
#Attributes.tbTip, deityTip$
case "Fharlanghn (N)"
deityTip$ = LoadTip$(deity$)
#Attributes.tbTip, deityTip$
case "Garl Glittergold (NG)"
deityTip$ = LoadTip$(deity$)
#Attributes.tbTip, deityTip$
case "Gruumsh (CE)"
deityTip$ = LoadTip$(deity$)
#Attributes.tbTip, deityTip$
case "Heironeous (LG)"
deityTip$ = LoadTip$(deity$)
#Attributes.tbTip, deityTip$
case "Hextor (LE)"
deityTip$ = LoadTip$(deity$)
#Attributes.tbTip, deityTip$
case "Kord (CG)"
deityTip$ = LoadTip$(deity$)
#Attributes.tbTip, deityTip$
case "Moradin (LG)"
case "Nerull (NE)"
case "Obad-Hai (N)"
case "Olidammara (CN)"
case "Pelor (NG)"
case "St. Cuthbert (LN)"
case "Vecna (NE)"
case "Wee Jas (LN)"
case "Yondalla (LG)"
end select
call SetFocusGraphicBox
wait
[Char.Alignment]
#Attributes.CmbAlign, "selection? CharAlign$"
alignment$ = CharAlign$
call SetFocusGraphicBox
wait
[Char.Feet]
#Attributes.CmbFeet, "selection? CharFeet$"
feet$ = CharFeet$
call SetFocusGraphicBox
wait
[Char.Inches]
#Attributes.CmbInches, "selection? CharInches$"
inches$ = CharInches$
call SetFocusGraphicBox
wait
[Char.Gender]
#Attributes.CmbGender, "selection? CharGender$"
gender$ = CharGender$
call SetFocusGraphicBox
wait
[CharAtt.Quit]
close #Attributes
goto [Main.Menu]
wait
[Attributes.Accept]
#Attributes.tbName, "!contents? name$"
'CHECK LEN OF NAME
if len(name$) > 16 then
end if
#Attributes.tbPlayer, "!contents? player$"
#Attributes.tbHomeland, "!contents? homeland$"
#Attributes.tbCampaign, "!contents? campaign$"
#Attributes.tbSize, "!contents? size$"
#Attributes.tbAge, "!contents? age$"
#Attributes.tbWeight, "!contents? weight$"
#Attributes.tbHair, "!contents? hair$"
#Attributes.tbEyes, "!contents? eyes$"
#Attributes.tbScar, "!contents? scar$"
#Attributes.tbPiercing, "!contents? piercing$"
#Attributes.tbTattoo, "!contents? tattoo$"
#Attributes.tbPersonality, "!contents? personality$"
#Attributes.tbBackstory, "!contents? backstory$"
boolAttributesSet$ = "TRUE"
'unloadbmp "AttributesBG"
close #Attributes
goto [Main.Menu]
wait
'##############################################################################################
'#END CHARACTER ATTRIBUTES #
'##############################################################################################
'##############################################################################################
'# BEGIN FUNCTIONS AND SUBROUTINES FOR TRANSPARENT TEXT #
'##############################################################################################
Sub SetBkMode hDC, flag
'1=transparent
'2=opaque
CallDLL #gdi32, "SetBkMode",hDC As long,_
flag As long, RESULT As long
End Sub
Function GetDC(hWnd)
CallDLL #user32, "GetDC",hWnd As long,_
GetDC As long
End Function
Sub ReleaseDC hWnd, hDC
CallDLL#user32,"ReleaseDC",hWnd As long,_
hDC As long,result As long
End Sub
function LoadTip$(text$)
open "Tips\Tip_" + text$ + ".dat" for input as #tip
tip$ = input$(#tip, LOF(#tip))
close #tip
LoadTip$ = tip$
end function
sub AttributesReset cAttribute$
select case cAttribute$
case "Level"
#Attributes.CmbRace, "disable"
#Attributes.CmbRace, "selectindex 0"
#Attributes.CmbClass, "disable"
#Attributes.CmbClass, "selectindex 0"
#Attributes.CmbDeity, "disable"
#Attributes.CmbDeity, "selectindex 0"
#Attributes.CmbAlign, "disable"
#Attributes.CmbAlign, "selectindex 0"
case "Race"
#Attributes.CmbClass, "disable"
#Attributes.CmbClass, "selectindex 0"
#Attributes.CmbDeity, "disable"
#Attributes.CmbDeity, "selectindex 0"
#Attributes.CmbAlign, "disable"
#Attributes.CmbAlign, "selectindex 0"
case "Class"
#Attributes.CmbDeity, "disable"
#Attributes.CmbDeity, "selectindex 0"
#Attributes.CmbAlign, "disable"
#Attributes.CmbAlign, "selectindex 0"
Case "Deity"
#Attributes.CmbAlign, "disable"
#Attributes.CmbAlign, "selectindex 0"
end select
end sub
sub SetFocusGraphicBox
#Attributes.gbx1, "setfocus"
end sub
sub AttributesUpdateUI
#Attributes.tbName, name$
#Attributes.tbPlayer, player$
#Attributes.tbHomeland, homeland$
#Attributes.tbCampaign, campaign$
#Attributes.CmbLevel, "select "; level$
#Attributes.CmbRace, "select "; race$
#Attributes.CmbClass, "select "; class$
#Attributes.CmbDeity, "select "; deity$
#Attributes.CmbAlign, "select "; alignment$
#Attributes.tbSize, size$
#Attributes.CmbFeet, "select "; feet$
#Attributes.CmbInches, "select "; inches$
#Attributes.tbWeight, weight$
#Attributes.tbAge, age$
#Attributes.CmbGender, "select "; gender$
#Attributes.tbHair, hair$
#Attributes.tbEyes, eyes$
#Attributes.tbScar, scar$
#Attributes.tbPiercing, piercing$
#Attributes.tbTattoo, tattoo$
#Attributes.tbPersonality, personality$
#Attributes.tbBackstory, backstory$
#Attributes.tbMoveRate, moveRate
#Attributes.tbXP, xp$
#Attributes.tbThaco, thaco
#Attributes.tbNoAttacks, noAttacks$
#Attributes.tbParaylasisPoison, paraylasisPoisonSave
#Attributes.tbRodStaffWand, rodStaffWandSave
#Attributes.tbPetrificationPolymorph, petrificationPolymorphSave
#Attributes.tbBreathWeapon, breathWeaponSave
#Attributes.tbSpell, spellSave
end sub
sub ClassRaceReset
moveRate = 0
xp$ = ""
size$ = ""
thaco = 0
noAttacks$ = ""
paraylasisPoisonSave = 0
rodStaffWandSave = 0
petrificationPolymorphSave = 0
breathWeaponSave = 0
spellSave = 0
#Attributes.CmbRace, "select "; race$(0)
#Attributes.CmbClass, "select "; class$(0)
#Attributes.tbMoveRate, moveRate
#Attributes.tbXP, xp$
#Attributes.tbSize, size$
#Attributes.tbThaco, thaco
#Attributes.tbNoAttacks, noAttacks$
#Attributes.tbParaylasisPoison, paraylasisPoisonSave
#Attributes.tbRodStaffWand, rodStaffWandSave
#Attributes.tbPetrificationPolymorph, petrificationPolymorphSave
#Attributes.tbBreathWeapon, breathWeaponSave
#Attributes.tbSpell, spellSave
end sub