From 5c724317a72879dfe40ce57f72872c4904f60a68 Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Sat, 25 Feb 2023 00:34:05 -0800 Subject: [PATCH] stuff --- .gitignore | 7 +- dos/CHAR1.TXT | 40 ----- dos/CHAR2.TXT | 40 ----- dos/RANDY.TXT | 40 ----- dos/sbf/sbf.bas | 434 ++++++++++++++++++++++++++++++++++-------------- 5 files changed, 319 insertions(+), 242 deletions(-) delete mode 100644 dos/CHAR1.TXT delete mode 100644 dos/CHAR2.TXT delete mode 100644 dos/RANDY.TXT diff --git a/.gitignore b/.gitignore index a38a07c..10d6d84 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,7 @@ /dos/qb45 -/dos/qbasic11 \ No newline at end of file +/dos/qbasic11 +/tmp +/screenshots +/asm +/dos/sbf/sbf +/dos/sbf/sbf_start.command diff --git a/dos/CHAR1.TXT b/dos/CHAR1.TXT deleted file mode 100644 index caafd68..0000000 --- a/dos/CHAR1.TXT +++ /dev/null @@ -1,40 +0,0 @@ -/------------------------------------------------------------------------------\ -| Name: sadf | Sex: Male Generation: 12 | -| Clan: Brujah | Age: mmmmmm | -|--------------------------------------| Player: fdsa | -| Attributes | Chronicle: jfjf | -| Physical Social Mental | Haven: kkkkkk | -| Str. 5 App. 2 Int. 1 | Concept: llllll | -| Dex. 3 Cha. 2 Per. 1 |---------------------------------------| -| Sta. 2 Man. 4 Wit. 4 | Derangements: | -|--------------------------------------| _____________________________________ | -| Disciplines: | _____________________________________ | -| Obtenebration | _____________________________________ | -| Obtenebration | _____________________________________ | -| Obtenebration | _____________________________________ | -|------------------------------------------------------------------------------| -| Beast: 8 | Nature: Fanatic | -| Willpower: 2 | Demeanor: Architect | -|------------------------------------------------------------------------------| -| Abilities | -| Talents Skills Knowledges | -| Acting: 6 Animal Ken: 2 Bureaucracy: 1 | -| Alertness: 2 Drive: 2 Computer: 2 | -| Athletics: 2 Etiquette: 2 Finance: 1 | -| Brawl: 1 Firearms: 1 Investigation: 1 | -| Dodge: 1 Melee: 1 Law: 0 | -| Empathy: 1 Music: 1 Linguistics: 0 | -| Intimidation: 0 Repair: 0 Medecine: 0 | -| Leadership: 0 Security: 0 Occult: 0 | -| Streetwise: 0 Stealth: 0 Politics: 0 | -| Subterfuge: 0 Survival: 0 Science: 0 | -|------------------------------------------------------------------------------| -| Backgrounds: | Virtues: | -| Allies | Conscience: 0 | -| Contacts | Conviction: 3 | -| Contacts | Instinct: 5 | -| Fame | Self-Control: 0 | -| Generation | Courage: 2 | -|--------------------------------------/ | -| | -\------------------------------------------------------------------------------/ diff --git a/dos/CHAR2.TXT b/dos/CHAR2.TXT deleted file mode 100644 index 34113ae..0000000 --- a/dos/CHAR2.TXT +++ /dev/null @@ -1,40 +0,0 @@ -/------------------------------------------------------------------------------\ -| Name: _______________________________| Sex: Female Generation: 13 | -| Clan: Lasombra | Age: ________________________________ | -|--------------------------------------| Player: _____________________________ | -| Attributes | Chronicle: __________________________ | -| Physical Social Mental | Haven: ______________________________ | -| Str. 2 App. 3 Int. 3 | Concept: ____________________________ | -| Dex. 1 Cha. 2 Per. 5 |---------------------------------------| -| Sta. 3 Man. 3 Wit. 2 | Derangements: | -|--------------------------------------| _____________________________________ | -| Disciplines: | _____________________________________ | -| Vicissitude | _____________________________________ | -| Spiritus | _____________________________________ | -| Auspex | _____________________________________ | -|------------------------------------------------------------------------------| -| Chivalry: 7 | Nature: Autocrat | -| Willpower: 3 | Demeanor: Defender | -|------------------------------------------------------------------------------| -| Abilities | -| Talents Skills Knowledges | -| Acting: 0 Animal Ken: 0 Bureaucracy: 2 | -| Alertness: 2 Drive: 0 Computer: 3 | -| Athletics: 1 Etiquette: 1 Finance: 2 | -| Brawl: 1 Firearms: 1 Investigation: 1 | -| Dodge: 2 Melee: 1 Law: 0 | -| Empathy: 0 Music: 0 Linguistics: 2 | -| Intimidation: 1 Repair: 1 Medecine: 1 | -| Leadership: 0 Security: 1 Occult: 1 | -| Streetwise: 0 Stealth: 0 Politics: 0 | -| Subterfuge: 2 Survival: 0 Science: 1 | -|------------------------------------------------------------------------------| -| Backgrounds: | Virtues: | -| Contacts | Conscience: 2 | -| Influence | Conviction: 0 | -| Allies | Instinct: 0 | -| Herd | Self-Control: 5 | -| Status | Courage: 3 | -|--------------------------------------/ | -| | -\------------------------------------------------------------------------------/ diff --git a/dos/RANDY.TXT b/dos/RANDY.TXT deleted file mode 100644 index cb27dad..0000000 --- a/dos/RANDY.TXT +++ /dev/null @@ -1,40 +0,0 @@ -/------------------------------------------------------------------------------\ -| Name: Randy | Sex: Female Generation: 12 | -| Clan: Gangrel | Age: ________________________________ | -|--------------------------------------| Player: _____________________________ | -| Attributes | Chronicle: __________________________ | -| Physical Social Mental | Haven: ______________________________ | -| Str. 3 App. 1 Int. 2 | Concept: ____________________________ | -| Dex. 6 Cha. 3 Per. 3 |---------------------------------------| -| Sta. 1 Man. 2 Wit. 3 | Derangements: | -|--------------------------------------| _____________________________________ | -| Disciplines: | _____________________________________ | -| Animalism | _____________________________________ | -| Celerity | _____________________________________ | -| Mortis | _____________________________________ | -|------------------------------------------------------------------------------| -| Devil: 7 | Nature: Traditionalist | -| Willpower: 3 | Demeanor: Bon vivant | -|------------------------------------------------------------------------------| -| Abilities | -| Talents Skills Knowledges | -| Acting: 1 Animal Ken: 0 Bureaucracy: 1 | -| Alertness: 2 Drive: 0 Computer: 0 | -| Athletics: 1 Etiquette: 0 Finance: 1 | -| Brawl: 1 Firearms: 0 Investigation: 3 | -| Dodge: 1 Melee: 0 Law: 1 | -| Empathy: 1 Music: 0 Linguistics: 3 | -| Intimidation: 1 Repair: 0 Medecine: 0 | -| Leadership: 0 Security: 2 Occult: 2 | -| Streetwise: 0 Stealth: 1 Politics: 2 | -| Subterfuge: 1 Survival: 2 Science: 0 | -|------------------------------------------------------------------------------| -| Backgrounds: | Virtues: | -| Retainers | Conscience: 0 | -| Contacts | Conviction: 2 | -| Retainers | Instinct: 5 | -| Generation | Self-Control: 0 | -| Herd | Courage: 3 | -|--------------------------------------/ | -| | -\------------------------------------------------------------------------------/ diff --git a/dos/sbf/sbf.bas b/dos/sbf/sbf.bas index 45fd5fa..7fb323d 100644 --- a/dos/sbf/sbf.bas +++ b/dos/sbf/sbf.bas @@ -3,6 +3,10 @@ $Debug ' TODO: See if other combinations of clan and other variables cause sub questions. Randomize Timer +'Call Test +'End + + ' TODO: maybe make these some kind of typedef with an id and a label constants or enums would be great Const All_Clans_Count = 18 Dim Shared All_Clans(1 To All_Clans_Count) As String @@ -26,38 +30,38 @@ All_Clans(17) = "Tzismice" All_Clans(18) = "Ventrue" ' TODO: Find a word that encapsulates both nature and demeanor. There is probably one in the book. -Const All_Natures_Count = 30 -Dim Shared All_Natures(1 To All_Natures_Count) As String -All_Natures(1) = "Architect" -All_Natures(2) = "Autocrat" -All_Natures(3) = "Barbarian" -All_Natures(4) = "Bon Vivant" -All_Natures(5) = "Bravo" -All_Natures(6) = "Caregiver" -All_Natures(7) = "Caretaker" -All_Natures(8) = "Celebrant" -All_Natures(9) = "Child" -All_Natures(10) = "Conformist" -All_Natures(11) = "Conniver" -All_Natures(12) = "Curmudgeon" -All_Natures(13) = "Defender" -All_Natures(14) = "Deviant" -All_Natures(15) = "Director" -All_Natures(16) = "Fanatic" -All_Natures(17) = "Gallant" -All_Natures(18) = "Innovator" -All_Natures(19) = "Jester" -All_Natures(20) = "Judge" -All_Natures(21) = "Loner" -All_Natures(22) = "Martyr" -All_Natures(23) = "Monster" -All_Natures(24) = "Penitent" -All_Natures(25) = "Rebel" -All_Natures(26) = "Rogue" -All_Natures(27) = "Survivor" -All_Natures(28) = "Traditionalist" -All_Natures(29) = "Tyrant" -All_Natures(30) = "Visionary" +Const All_Archetypes_Count = 30 +Dim Shared All_Archetypes(1 To All_Archetypes_Count) As String +All_Archetypes(1) = "Architect" +All_Archetypes(2) = "Autocrat" +All_Archetypes(3) = "Barbarian" +All_Archetypes(4) = "Bon Vivant" +All_Archetypes(5) = "Bravo" +All_Archetypes(6) = "Caregiver" +All_Archetypes(7) = "Caretaker" +All_Archetypes(8) = "Celebrant" +All_Archetypes(9) = "Child" +All_Archetypes(10) = "Conformist" +All_Archetypes(11) = "Conniver" +All_Archetypes(12) = "Curmudgeon" +All_Archetypes(13) = "Defender" +All_Archetypes(14) = "Deviant" +All_Archetypes(15) = "Director" +All_Archetypes(16) = "Fanatic" +All_Archetypes(17) = "Gallant" +All_Archetypes(18) = "Innovator" +All_Archetypes(19) = "Jester" +All_Archetypes(20) = "Judge" +All_Archetypes(21) = "Loner" +All_Archetypes(22) = "Martyr" +All_Archetypes(23) = "Monster" +All_Archetypes(24) = "Penitent" +All_Archetypes(25) = "Rebel" +All_Archetypes(26) = "Rogue" +All_Archetypes(27) = "Survivor" +All_Archetypes(28) = "Traditionalist" +All_Archetypes(29) = "Tyrant" +All_Archetypes(30) = "Visionary" Const All_Disciplines_Count = 24 Dim Shared All_Disciplines(1 To All_Disciplines_Count) As String @@ -86,6 +90,31 @@ All_Disciplines(22) = "Thanantosis" All_Disciplines(23) = "Thaumaturgy" All_Disciplines(24) = "Vicissitude" +Type CharacterType + name As String + player As String + chronicle As String + haven As String + concept As String + age As String + sex As Integer + clan As Integer + nature As Integer + demeanor As Integer + 'disciplines() as integer + ' Attributes + attr_strength As Integer + attr_dexterity As Integer + attr_stamina As Integer + attr_appearance As Integer + attr_charisma As Integer + attr_manipulation As Integer + attr_intelligence As Integer + attr_perception As Integer + attr_wits As Integer +End Type + + ' Splash screen Cls Print " Welcome to Tom's Storyteller's Best Friend. This is a program that is meant" @@ -190,9 +219,9 @@ Sub PrintMenu (items() As String, num_items As Integer) Next For i = 1 To num_items - Print MakeFit$(Str$(i), index_length, " ") + " = " + MakeFitR$(items(i), max_item_length, " "); + Print MakeFitR$(Str$(i), index_length, " ") + " = " + MakeFitL$(items(i), max_item_length, " "); Next - Print MakeFit$("0", index_length, " ") + " = " + MakeFitR$("Random", max_item_length, " ") + Print MakeFitR$("0", index_length, " ") + " = " + MakeFitL$("Random", max_item_length, " ") End Sub Sub PrintMenuWithValues (items() As String, values() As Integer, num_items As Integer) @@ -206,17 +235,29 @@ Sub PrintMenuWithValues (items() As String, values() As Integer, num_items As In Next For i = 1 To num_items - Print MakeFit$(Str$(i), max_index_length, " ") + " = " + MakeFitR$(items(i), max_item_length, " ") + MakeFit$(Str$(values(i)), max_value_length, " "); + Print MakeFitR$(Str$(i), max_index_length, " ") + " = " + MakeFitL$(items(i), max_item_length, " ") + MakeFitR$(Str$(values(i)), max_value_length, " "); Next - Print MakeFit$("0", index_length, " ") + " = " + MakeFitR$("Random", max_item_length, " ") + Print MakeFitR$("0", index_length, " ") + " = " + MakeFitL$("Random", max_item_length, " ") End Sub -Function MakeFit$ (text As String, length As Integer, pad As String) - MakeFit = Right$(String$(length, pad) + text, length) +Function MakeFitL$ (text As String, length As Integer, pad As String) + MakeFitL = Left$(text + String$(length, pad), length) +End Function + +Function MakeFitC$ (text As String, length As Integer, pad As String) + 'Chop text if necessary + TextLength = Len(text) + LeftPadLength = MaxI(0, length - TextLength) \ 2 + RightPadLength = MaxI(0, length - TextLength - LeftPadLength) + LeftPad$ = String$(LeftPadLength, pad) + RightPad$ = String$(RightPadLength, pad) + TotalChop = MaxI(0, TextLength - length) + LeftChop = TotalChop \ 2 + 1 + MakeFitC = LeftPad$ + Mid$(text, LeftChop, length) + RightPad$ End Function Function MakeFitR$ (text As String, length As Integer, pad As String) - MakeFitR = Left$(text + String$(length, pad), length) + MakeFitR = Right$(String$(length, pad) + text, length) End Function Function MaxI (val1 As Integer, val2 As Integer) @@ -228,30 +269,32 @@ Function MaxI (val1 As Integer, val2 As Integer) End Function Sub CharacterGenerator () - Input "What is the character's name? ", name$ - Input "Who is the player? ", player$ - Input "What chronicle is the character going to be used for? ", chronicle$ - Input "What is the character's Haven? ", haven$ - Input "What is the character's concept? ", concept$ - Input "How old is the character? ", age$ + Dim ch As CharacterType + + Input "What is the character's name? ", ch.name + Input "Who is the player? ", ch.player + Input "What chronicle is the character going to be used for? ", ch.chronicle + Input "What is the character's Haven? ", ch.haven + Input "What is the character's concept? ", ch.concept + Input "How old is the character? ", ch.age Print "What is the sex of the character? 1 = Male 2 = Female 0 = Random" - sex = GetChoice(0, 2) - If sex > 2 Or sex < 1 Then sex = GetRandomInt(1, 2) + ch.sex = GetChoice(0, 2) + If ch.sex > 2 Or ch.sex < 1 Then ch.sex = GetRandomInt(1, 2) Cls Print "What Clan is the character from?" Call PrintMenu(All_Clans(), All_Clans_Count) - clan = GetChoice(0, All_Clans_Count) - If clan > All_Clans_Count Or clan < 1 Then clan = GetRandomInt(1, All_Clans_Count) + ch.clan = GetChoice(0, All_Clans_Count) + If ch.clan > All_Clans_Count Or ch.clan < 1 Then ch.clan = GetRandomInt(1, All_Clans_Count) Cls Print "What is your character's Nature?" - Call PrintMenu(All_Natures(), All_Natures_Count) - nature = GetChoice(0, All_Natures_Count) - If nature > All_Natures_Count Or nature < 1 Then nature = GetRandomInt(1, All_Natures_Count) + Call PrintMenu(All_Archetypes(), All_Archetypes_Count) + ch.nature = GetChoice(0, All_Archetypes_Count) + If ch.nature > All_Archetypes_Count Or ch.nature < 1 Then ch.nature = GetRandomInt(1, All_Archetypes_Count) Cls Print "What is your character's Demeanor?" - Call PrintMenu(All_Natures(), All_Natures_Count) - demeanor = GetChoice(0, All_Natures_Count) - If demeanor > All_Natures_Count Or demeanor < 1 Then demeanor = GetRandomInt(1, All_Natures_Count) + Call PrintMenu(All_Archetypes(), All_Archetypes_Count) + ch.demeanor = GetChoice(0, All_Archetypes_Count) + If ch.demeanor > All_Archetypes_Count Or ch.demeanor < 1 Then ch.demeanor = GetRandomInt(1, All_Archetypes_Count) ' The character starts with 3 discipline points and they can spend them on one or more disciplines Dim disciplines(1 To All_Disciplines_Count) As Integer @@ -270,27 +313,140 @@ Sub CharacterGenerator () discipline_points = discipline_points - 1 Wend - ' TODO: Choose primary/secondary/tertiary attributes - 'Print "1 = Physical 2 = Social 3 = Mental 0 = Random" - 'Print "Which is your primary Attribute? " - 'Print "Which is your secondary attribute? " - 'Print "Which is your tertiary attribute? " + Const All_Attributes_Count = 3 + Dim All_Attributes(1 To All_Attributes_Count) As String + All_Attributes(1) = "Physical" + All_Attributes(2) = "Social" + All_Attributes(3) = "Mental" - ' TODO: Spend attribute points order should be physical mental social not primary secondary tertiary - 'Print "Your mental attributes are:" - 'Print "Intelligence 1 Perception 1 Wits 1" - 'Print "Which would you like to add 1 of your 7 points to?" - 'Print "1 = Intelligence 2 = Perception 3 = Wits 0 = Random" + ' TODO: Find a more general form for this that stores the chosen attributes in an array + Dim PrimaryAttribute As Integer + Do + Cls + Print "1 = " + All_Attributes(1) + " "; + Print "2 = " + All_Attributes(2) + " "; + Print "3 = " + All_Attributes(3) + " "; + Print "0 = Random" + Input "Choose your primary attribute?"; PrimaryAttribute + If PrimaryAttribute = 0 Then PrimaryAttribute = GetRandomInt(1, All_Attributes_Count) + Loop While (PrimaryAttribute > All_Attributes_Count And PrimaryAttribute < 1) - 'Print "Your physical attributes are:" - 'Print "Strength 1 Dexterity 1 Stamina 1" - 'Print "Which would you like to add 1 of your 5 points to?" - 'Print "1 = Strength 2 = Dexterity 3 = Stamina 0 = Random" + Dim SecondaryAttribute As Integer + Dim TertiaryAttribute As Integer + Do + Cls + If PrimaryAttribute <> 1 Then Print "1 = " + All_Attributes(1) + " "; + If PrimaryAttribute <> 2 Then Print "2 = " + All_Attributes(2) + " "; + If PrimaryAttribute <> 3 Then Print "3 = " + All_Attributes(3) + " "; + Print "0 = Random" + Input "Choose your secondary attribute?"; SecondaryAttribute + If SecondaryAttribute = 0 Or SecondaryAttribute = PrimaryAttribute Then + SecondaryAttribute = GetRandomInt(1, All_Attributes_Count - 1) + If SecondaryAttribute >= PrimaryAttribute Then + PrimaryAttribute = PrimaryAttribute + 1 + End If + End If + Loop Until SecondaryAttribute >= 1 And SecondaryAttribute <= 3 + ' General formula for last choice is + ' Sum(1..AllAttributesCount)-Sum(Choice[1]..Choice[AllAttributesCount-1]) + TertiaryAttribute = 2 * All_Attributes_Count - PrimaryAttribute - SecondaryAttribute - 'Print "Your social attributes are:" - 'Print "Appearance 1 Charisma 1 Manipulation 1" - 'Print "Which would you like to add 1 of your 3 points to?" - 'Print "1 = Appearance 2 = Charisma 3 = Manipulation 0 = Random" + ' Initialize all attributes to 1 + ch.attr_strength = 1 + ch.attr_dexterity = 1 + ch.attr_stamina = 1 + ch.attr_appearance = 1 + ch.attr_charisma = 1 + ch.attr_manipulation = 1 + ch.attr_intelligence = 1 + ch.attr_perception = 1 + ch.attr_wits = 1 + + ' Initialize physical, social, and mental points + Select Case PrimaryAttribute + Case 1 + PhysicalPoints = 7 + Case 2 + SocialPoints = 7 + Case 3 + MentalPoints = 7 + End Select + Select Case SecondaryAttribute + Case 1 + PhysicalPoints = 5 + Case 2 + SocialPoints = 5 + Case 3 + MentalPoints = 5 + End Select + Select Case TertiaryAttribute + Case 1 + PhysicalPoints = 3 + Case 2 + SocialPoints = 3 + Case 3 + MentalPoints = 3 + End Select + + ' Spend physical points + Do + Cls + Print "Your physical attributes are:" + Print "Strength " + Str$(ch.attr_strength) + ", Dexterity " + Str$(ch.attr_dexterity) + ", Stamina " + Str$(ch.attr_stamina) + Print "Which attribute would you like to add 1 of your " + Str$(PhysicalPoints) + " points to?" + Print "1 = Strength 2 = Dexterity 3 = Stamina 0 = Random" + attr = GetChoice(0, 3) + If attr = 0 Then attr = GetRandomInt(1, 3) + Select Case attr + Case 1 + ch.attr_strength = ch.attr_strength + 1 + Case 2 + ch.attr_dexterity = ch.attr_dexterity + 1 + Case 3 + ch.attr_stamina = ch.attr_stamina + 1 + End Select + PhysicalPoints = PhysicalPoints - 1 + Loop While PhysicalPoints > 0 + + ' Spend social points + Do + Cls + Print "Your social attributes are:" + Print "Appearance " + Str$(appearance) + ", Charisma " + Str$(charisma) + ", Manipulation " + Str$(manipulation) + Print "Which attribute would you like to add 1 of your " + Str$(SocialPoints) + " points to?" + Print "1 = Appearance 2 = Charisma 3 = Manipulation 0 = Random" + attr = GetChoice(0, 3) + If attr = 0 Then attr = GetRandomInt(1, 3) + Select Case attr + Case 1 + ch.attr_appearance = ch.attr_appearance + 1 + Case 2 + ch.attr_charisma = ch.attr_charisma + 1 + Case 3 + ch.attr_manipulation = ch.attr_manipulation + 1 + End Select + SocialPoints = SocialPoints - 1 + Loop While SocialPoints > 0 + + ' Spend mental points + Do + Cls + Print "Your mental attributes are:" + Print "Intelligence " + Str$(intelligence) + ", Perception " + Str$(perception) + ", Wits " + Str$(wits) + Print "Which attribute would you like to add 1 of you " + Str$(MentalPoints) + " points to?" + Print "1 = Intelligence 2 = Perception 3 = Wits 0 = Random" + attr = GetChoice(0, 3) + If attr = 0 Then attr = GetRandomInt(1, 3) + Select Case attr + Case 1 + ch.attr_intelligence = ch.attr_intelligence + 1 + Case 2 + ch.attr_perception = ch.attr_perception + 1 + Case 3 + ch.attr_wits = ch.attr_wits + 1 + End Select + MentalPoints = MentalPoints - 1 + Loop While MentalPoints > 0 ' TODO: Choose priorities for talents/skills/knowledges 'Print "1 = Talents 2 = Skills 3 = Knowledges 0 = Random" @@ -379,57 +535,79 @@ Sub CharacterGenerator () '210 ÒÓÔÕÖרÙÚÛ '220 ÜÝÞßàáâãäåå '230 æçèéêë2ìíîï - 'ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» - 'º Name: Steve º Sex: Male Generation 13 º - 'º Clan: Giovanni º Age: 182 º - 'ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ Player: kevin º - 'º Attributes º Chronicle: chron º - 'º Physical Social Mental º Haven: haven º - 'º Str. 3 App. 3 Int. 4 º Concept: concept º - 'º Dex. 3 Cha. 1 Per. 4 ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ - 'º Sta. 2 Man. 2 Wit. 2 º Derangements: º - 'ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ _______ º - 'º Disciplines: º _______ º - 'º Thaumaturgy º _______ º - 'º Fortitude º _______ º - 'º Celerity º _______ º - 'ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ - 'º Heaven: 6 º Nature: Architect º - 'º Willpower: 4 º Demeanor: Autocrat º - 'ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ - 'º º - 'º º - 'º º - 'º <> º - 'ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ - - '|------------------------------------------------------------------------------| - '| Abilities | - '| Talents Skills Knowledges - '| Acting: 0 Animal Ken: 0 Bureaucracy: 0 - '| Alertness: 0 Drive: 0 Computer: 0 - '| Athletics: 0 Etiquette: 0 Finance: 0 - '| Brawl: 0 Firearms: 0 Investigation: 0 - '| Dodge: 0 Melee: 0 Law: 0 - '| Empathy: 0 Music: 0 Linguistics: 0 - '| Intimidation: 0 Repair: 0 Medicine: 0 - '| Leadership: 0 Security: 0 Occult: 0 - '| Streetwise: 0 Stealth: 0 Politics: 0 - '| Subterfuge: 0 Survival: 0 Science: 0 - '|---|---| - '| Backgrounds: | Virtues: - '| Status | Conscience: 3 - '| Resources | Conviction: 0 - '| Status | Instinct: 0 - '| Contacts | Self-Control: 3 - '| Retainers | Courage: 4 - '|------|---| - '| <> - '|----| - ' Do you want to save the character to a file? (Y/N) ' Where do you want the file to be saved? (default is C:\Windows\Desktop)? ' What do you want the file to be called? (default is CHAR1)? + ' enquote forms s/^([ɺÈÍÌ].*[»º¼¹])$/print "$1"/g + Input a + ' TODO: figure out how to actually calculate generation + generation$ = "13" + If ch.sex = 1 Then sex_string$ = "Male" Else sex_string$ = "Female" + clan_string$ = All_Clans(ch.clan) + + Dim discipline_strings$(3) + discipline_1_string$ = "" + discipline_2_string$ = "" + discipline_3_string$ = "" + discipline_strings_index = 0 + For index = 1 To All_Disciplines_Count + If disciplines(index) > 0 Then + suffix$ = "" + If disciplines(index) > 1 Then + suffix$ = " x" + Str$(disciplines(index)) + End If + discipline_strings$(discipline_strings_index) = All_Disciplines(index) + suffix$ + End If + Next + + Cls + Print "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»" + Print "º Name: " + MakeFitL$(ch.name, 30, " ") + " º Sex: " + MakeFitL$(sex_string$, 10, " ") + " Generation: " + MakeFitL$(generation$, 9, " ") + " º" + Print "º Clan: " + MakeFitL$(clan_string$, 30, " ") + " º Age: " + MakeFitL$(age$, 32, " ") + " º" + Print "ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ Player: " + MakeFitL$(player$, 29, " ") + " º" + Print "º Attributes º Chronicle: " + MakeFitL$(chronicle$, 26, " ") + " º" + Print "º Physical Social Mental º Haven: " + MakeFitL$(haven$, 30, " ") + " º" + Print "º Str. " + MakeFitL$(Str$(ch.attr_strength), 7, " ") + " App. " + MakeFitL$(Str$(ch.attr_appearance), 7, " ") + " Int. " + MakeFitL$(Str$(ch.attr_intelligence), 5, " ") + " º Concept: " + MakeFitL$(concept$, 28, " ") + " º" + Print "º Dex. " + MakeFitL$(Str$(ch.attr_dexterity), 7, " ") + " Cha. " + MakeFitL$(Str$(ch.attr_charisma), 7, " ") + " Per. " + MakeFitL$(Str$(ch.attr_perception), 5, " ") + " ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹" + Print "º Sta. " + MakeFitL$(Str$(ch.attr_stamina), 7, " ") + " Man. " + MakeFitL$(Str$(ch.attr_manipulation), 7, " ") + " Wit. " + MakeFitL$(Str$(ch.attr_wits), 5, " ") + " º Derangements: º" + Print "ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ Regression,__________________________ º" + Print "º Disciplines: º _____________________________________ º" + Print "º " + MakeFitL$(discipline_strings$(0), 36, " ") + " º _____________________________________ º" + Print "º " + MakeFitL$(discipline_strings$(1), 36, " ") + " º _____________________________________ º" + Print "º " + MakeFitL$(discipline_strings$(2), 36, " ") + " º _____________________________________ º" + Print "ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹" + Print "º Typhon: 7 º Nature: " + MakeFitL$(All_Archetypes(ch.nature), 29, " ") + " º" + Print "º Willpower: 3 º Demeanor: " + MakeFitL$(All_Archetypes(ch.demeanor), 27, " ") + " º" + Print "ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹" + Print "º º" + Print "º º" + Print "º º" + Print "º <> º" + Print "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ" + Input a + Print "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»" + Print "º Abilities º" + Print "º Talents Skills Knowledges º" + Print "º Acting: 2 Animal Ken: 1 Bureaucracy: 0 º" + Print "º Alertness: 1 Drive: 1 Computer: 1 º" + Print "º Athletics: 1 Etiquette: 0 Finance: 0 º" + Print "º Brawl: 2 Firearms: 2 Investigation: 0 º" + Print "º Dodge: 3 Melee: 0 Law: 0 º" + Print "º Empathy: 0 Music: 0 Linguistics: 2 º" + Print "º Intimidation: 0 Repair: 2 Medecine: 1 º" + Print "º Leadership: 1 Security: 1 Occult: 0 º" + Print "º Streetwise: 1 Stealth: 2 Politics: 1 º" + Print "º Subterfuge: 2 Survival: 0 Science: 0 º" + Print "ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹" + Print "º Backgrounds: º Virtues: º" + Print "º Allies º Conscience: 0 º" + Print "º Allies º Conviction: 4 º" + Print "º Contacts º Instinct: 3 º" + Print "º Resources º Self-Control: 0 º" + Print "º Status º Courage: 3 º" + Print "ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹" + Print "º <> º" + Print "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ" @@ -476,5 +654,19 @@ Sub VehicleGenerator Print "VehicleGenerator" End Sub +Sub Test + Print "|" + MakeFitL$("a left aligned string", 50, " ") + "|" + Print "|" + MakeFitC$("a center aligned string", 50, " ") + "|" + Print "|" + MakeFitR$("a right aligned string", 50, " ") + "|" + Print "test" + Print "|" + MakeFitC$("This is a long string", 10, " ") + "|" + Print "|" + MakeFitC$("hello", 10, " ") + "|" + Print "|" + MakeFitC$("1234567890", 10, " ") + "|" + Print "|" + Mid$("1234567890", 1, 10) + "|" ' 123456789 + Print "|" + Mid$("12345678901", 1, 10) + "|" ' 123456789 + Print "|" + Mid$("A1234567890", 2, 10) + "|" ' A123456789 + Print "|" + Mid$("A1234567890Z", 2, 10) + "|" 'A123456789 + +End Sub