Allows spending freebie points on disciplines and attributes.

This commit is contained in:
2023-04-13 22:59:28 -07:00
parent 97352b489e
commit 5e27ff5b89
3 changed files with 523 additions and 332 deletions

View File

@@ -1,332 +1,340 @@
' Each set of these index constants "NAME_*" should start at 1 and go up to NAMES_COUNT without leaving any holes. ' Each set of these index constants "NAME_*" should start at 1 and go up to NAMES_COUNT without leaving any holes.
' This also goes the same for sub indexes like NAME_GROUP_SUBGROUP_* each NAME_GROUP_* set should have GetNumNamesInGroup(NAME_GROUP) items. ' This also goes the same for sub indexes like NAME_GROUP_SUBGROUP_* each NAME_GROUP_* set should have GetNumNamesInGroup(NAME_GROUP) items.
Const CLAN_ANARCH = 1 Const CLAN_ANARCH = 1
Const CLAN_ASSAMITE = 2 Const CLAN_ASSAMITE = 2
Const CLAN_BAALI = 3 Const CLAN_BAALI = 3
Const CLAN_BRUJAH = 4 Const CLAN_BRUJAH = 4
Const CLAN_CAITIFF = 5 Const CLAN_CAITIFF = 5
Const CLAN_CAPPADOCIAN = 6 Const CLAN_CAPPADOCIAN = 6
Const CLAN_GANGREL = 7 Const CLAN_GANGREL = 7
Const CLAN_GIOVANNI = 8 Const CLAN_GIOVANNI = 8
Const CLAN_INCONNU = 9 Const CLAN_INCONNU = 9
Const CLAN_LASOMBRA = 10 Const CLAN_LASOMBRA = 10
Const CLAN_MALKAVIAN = 11 Const CLAN_MALKAVIAN = 11
Const CLAN_NOSFERATU = 12 Const CLAN_NOSFERATU = 12
Const CLAN_RAVANOS = 13 Const CLAN_RAVANOS = 13
Const CLAN_SETTITE = 14 Const CLAN_SETTITE = 14
Const CLAN_TREMERE = 15 Const CLAN_TREMERE = 15
Const CLAN_TOREADOR = 16 Const CLAN_TOREADOR = 16
Const CLAN_TZISMICE = 17 Const CLAN_TZISMICE = 17
Const CLAN_VENTRUE = 18 Const CLAN_VENTRUE = 18
Const CLANS_COUNT = 18 Const CLANS_COUNT = 18
Dim Shared Clans(1 To CLANS_COUNT) As String Dim Shared Clans(1 To CLANS_COUNT) As String
Const ARCHETYPE_ARCHITECT = 1 Const ARCHETYPE_ARCHITECT = 1
Const ARCHETYPE_AUTOCRAT = 2 Const ARCHETYPE_AUTOCRAT = 2
Const ARCHETYPE_BARBARIAN = 3 Const ARCHETYPE_BARBARIAN = 3
Const ARCHETYPE_BON_VIVANT = 4 Const ARCHETYPE_BON_VIVANT = 4
Const ARCHETYPE_BRAVO = 5 Const ARCHETYPE_BRAVO = 5
Const ARCHETYPE_CAREGIVER = 6 Const ARCHETYPE_CAREGIVER = 6
Const ARCHETYPE_CARETAKER = 7 Const ARCHETYPE_CARETAKER = 7
Const ARCHETYPE_CELEBRANT = 8 Const ARCHETYPE_CELEBRANT = 8
Const ARCHETYPE_CHILD = 9 Const ARCHETYPE_CHILD = 9
Const ARCHETYPE_CONFORMIST = 10 Const ARCHETYPE_CONFORMIST = 10
Const ARCHETYPE_CONNIVER = 11 Const ARCHETYPE_CONNIVER = 11
Const ARCHETYPE_CURMUDGEON = 12 Const ARCHETYPE_CURMUDGEON = 12
Const ARCHETYPE_DEFENDER = 13 Const ARCHETYPE_DEFENDER = 13
Const ARCHETYPE_DEVIANT = 14 Const ARCHETYPE_DEVIANT = 14
Const ARCHETYPE_DIRECTOR = 15 Const ARCHETYPE_DIRECTOR = 15
Const ARCHETYPE_FANATIC = 16 Const ARCHETYPE_FANATIC = 16
Const ARCHETYPE_GALLANT = 17 Const ARCHETYPE_GALLANT = 17
Const ARCHETYPE_INNOVATOR = 18 Const ARCHETYPE_INNOVATOR = 18
Const ARCHETYPE_JESTER = 19 Const ARCHETYPE_JESTER = 19
Const ARCHETYPE_JUDGE = 20 Const ARCHETYPE_JUDGE = 20
Const ARCHETYPE_LONER = 21 Const ARCHETYPE_LONER = 21
Const ARCHETYPE_MARTYR = 22 Const ARCHETYPE_MARTYR = 22
Const ARCHETYPE_MONSTER = 23 Const ARCHETYPE_MONSTER = 23
Const ARCHETYPE_PENITENT = 24 Const ARCHETYPE_PENITENT = 24
Const ARCHETYPE_REBEL = 25 Const ARCHETYPE_REBEL = 25
Const ARCHETYPE_ROGUE = 26 Const ARCHETYPE_ROGUE = 26
Const ARCHETYPE_SURVIVOR = 27 Const ARCHETYPE_SURVIVOR = 27
Const ARCHETYPE_TRADITIONALIST = 28 Const ARCHETYPE_TRADITIONALIST = 28
Const ARCHETYPE_TYRANT = 29 Const ARCHETYPE_TYRANT = 29
Const ARCHETYPE_VISIONARY = 30 Const ARCHETYPE_VISIONARY = 30
Const ARCHETYPES_COUNT = 30 Const ARCHETYPES_COUNT = 30
Dim Shared Archetypes(1 To ARCHETYPES_COUNT) As String Dim Shared Archetypes(1 To ARCHETYPES_COUNT) As String
Const DISCIPLINE_POINTS = 3 Const DISCIPLINE_POINTS = 3
Const DISCIPLINE_ANIMALISM = 1 Const DISCIPLINE_ANIMALISM = 1
Const DISCIPLINE_AUSPEX = 2 Const DISCIPLINE_AUSPEX = 2
Const DISCIPLINE_BARDO = 3 Const DISCIPLINE_BARDO = 3
Const DISCIPLINE_CELERITY = 4 Const DISCIPLINE_CELERITY = 4
Const DISCIPLINE_CHIMESTRY = 5 Const DISCIPLINE_CHIMESTRY = 5
Const DISCIPLINE_DEMENTATION = 6 Const DISCIPLINE_DEMENTATION = 6
Const DISCIPLINE_DOMINATE = 7 Const DISCIPLINE_DOMINATE = 7
Const DISCIPLINE_FORTITUDE = 8 Const DISCIPLINE_FORTITUDE = 8
Const DISCIPLINE_MELPOMINEE = 9 Const DISCIPLINE_MELPOMINEE = 9
Const DISCIPLINE_MORTIS = 10 Const DISCIPLINE_MORTIS = 10
Const DISCIPLINE_MYTHERCERIA = 11 Const DISCIPLINE_MYTHERCERIA = 11
Const DISCIPLINE_NECROMANCY = 12 Const DISCIPLINE_NECROMANCY = 12
Const DISCIPLINE_OBEAH = 13 Const DISCIPLINE_OBEAH = 13
Const DISCIPLINE_OBFUSCATE = 14 Const DISCIPLINE_OBFUSCATE = 14
Const DISCIPLINE_OBTENEBRATION = 15 Const DISCIPLINE_OBTENEBRATION = 15
Const DISCIPLINE_POTENCE = 16 Const DISCIPLINE_POTENCE = 16
Const DISCIPLINE_PRESENCE = 17 Const DISCIPLINE_PRESENCE = 17
Const DISCIPLINE_PROTEAN = 18 Const DISCIPLINE_PROTEAN = 18
Const DISCIPLINE_QUIETUS = 19 Const DISCIPLINE_QUIETUS = 19
Const DISCIPLINE_SERPENTIS = 20 Const DISCIPLINE_SERPENTIS = 20
Const DISCIPLINE_SPIRITUS = 21 Const DISCIPLINE_SPIRITUS = 21
Const DISCIPLINE_THANANTOSIS = 22 Const DISCIPLINE_THANANTOSIS = 22
Const DISCIPLINE_THAUMATURGY = 23 Const DISCIPLINE_THAUMATURGY = 23
Const DISCIPLINE_VICISSITUDE = 24 Const DISCIPLINE_VICISSITUDE = 24
Const DISCIPLINES_COUNT = 24 Const DISCIPLINES_COUNT = 24
Dim Shared Disciplines(1 To DISCIPLINES_COUNT) As String Dim Shared Disciplines(1 To DISCIPLINES_COUNT) As String
' Virtues ' Virtues
Const VIRTUE_POINTS = 7 Const VIRTUE_POINTS = 7
Const VIRTUE_SELF_CONTROL = 1 Const VIRTUE_SELF_CONTROL = 1
Const VIRTUE_COURAGE = 2 Const VIRTUE_COURAGE = 2
Const VIRTUE_CONSCIENCE = 3 Const VIRTUE_CONSCIENCE = 3
Const VIRTUES_COUNT = 3 Const VIRTUES_COUNT = 3
Dim Shared Virtues(1 To VIRTUES_COUNT) As String Dim Shared Virtues(1 To VIRTUES_COUNT) As String
' These should probably be renamed like PHYSICAL_ATTRIBUTE_STRENGTH instead. ' These should probably be renamed like PHYSICAL_ATTRIBUTE_STRENGTH instead.
Const ATTRIBUTE_STRENGTH = 1 Const ATTRIBUTE_STRENGTH = 1
Const ATTRIBUTE_DEXTERITY = 2 Const ATTRIBUTE_DEXTERITY = 2
Const ATTRIBUTE_STAMINA = 3 Const ATTRIBUTE_STAMINA = 3
Const PHYSICAL_ATTRIBUTES_COUNT = 3 Const PHYSICAL_ATTRIBUTES_COUNT = 3
Dim Shared PhysicalAttributes(1 To PHYSICAL_ATTRIBUTES_COUNT) As String Dim Shared PhysicalAttributes(1 To PHYSICAL_ATTRIBUTES_COUNT) As String
Dim Shared PhysicalAttributeAbbreviations(1 To PHYSICAL_ATTRIBUTES_COUNT) As String Dim Shared PhysicalAttributeAbbreviations(1 To PHYSICAL_ATTRIBUTES_COUNT) As String
Const ATTRIBUTE_CHARISMA = 1 Const ATTRIBUTE_CHARISMA = 1
Const ATTRIBUTE_MANIPULATION = 2 Const ATTRIBUTE_MANIPULATION = 2
Const ATTRIBUTE_APPEARANCE = 3 Const ATTRIBUTE_APPEARANCE = 3
Const SOCIAL_ATTRIBUTES_COUNT = 3 Const SOCIAL_ATTRIBUTES_COUNT = 3
Dim Shared SocialAttributes(1 To SOCIAL_ATTRIBUTES_COUNT) As String Dim Shared SocialAttributes(1 To SOCIAL_ATTRIBUTES_COUNT) As String
Dim Shared SocialAttributeAbbreviations(1 To SOCIAL_ATTRIBUTES_COUNT) As String Dim Shared SocialAttributeAbbreviations(1 To SOCIAL_ATTRIBUTES_COUNT) As String
Const ATTRIBUTE_INTELLIGENCE = 1 Const ATTRIBUTE_INTELLIGENCE = 1
Const ATTRIBUTE_PERCEPTION = 2 Const ATTRIBUTE_PERCEPTION = 2
Const ATTRIBUTE_WITS = 3 Const ATTRIBUTE_WITS = 3
Const MENTAL_ATTRIBUTES_COUNT = 3 Const MENTAL_ATTRIBUTES_COUNT = 3
Dim Shared MentalAttributes(1 To MENTAL_ATTRIBUTES_COUNT) As String Dim Shared MentalAttributes(1 To MENTAL_ATTRIBUTES_COUNT) As String
Dim Shared MentalAttributeAbbreviations(1 To MENTAL_ATTRIBUTES_COUNT) As String Dim Shared MentalAttributeAbbreviations(1 To MENTAL_ATTRIBUTES_COUNT) As String
Const ATTRIBUTE_GROUP_PHYSICAL = 1 Const ATTRIBUTE_GROUP_PHYSICAL = 1
Const ATTRIBUTE_GROUP_SOCIAL = 2 Const ATTRIBUTE_GROUP_SOCIAL = 2
Const ATTRIBUTE_GROUP_MENTAL = 3 Const ATTRIBUTE_GROUP_MENTAL = 3
Const ATTRIBUTE_GROUPS_COUNT = 3 Const ATTRIBUTE_GROUPS_COUNT = 3
Dim Shared AttributeGroups(1 To ATTRIBUTE_GROUPS_COUNT) As String Dim Shared AttributeGroups(1 To ATTRIBUTE_GROUPS_COUNT) As String
Const ABILITY_GROUP_TALENTS = 1 Const ABILITY_GROUP_TALENTS = 1
Const ABILITY_GROUP_SKILLS = 2 Const ABILITY_GROUP_SKILLS = 2
Const ABILITY_GROUP_KNOWLEDGES = 3 Const ABILITY_GROUP_KNOWLEDGES = 3
Const ABILITY_GROUPS_COUNT = 3 Const ABILITY_GROUPS_COUNT = 3
Dim Shared AbilityGroups(1 To ABILITY_GROUPS_COUNT) As String Dim Shared AbilityGroups(1 To ABILITY_GROUPS_COUNT) As String
Const TALENT_ACTING = 1 Const TALENT_ACTING = 1
Const TALENT_ALERTNESS = 2 Const TALENT_ALERTNESS = 2
Const TALENT_ATHLETICS = 3 Const TALENT_ATHLETICS = 3
Const TALENT_BRAWL = 4 Const TALENT_BRAWL = 4
Const TALENT_DODGE = 5 Const TALENT_DODGE = 5
Const TALENT_EMPATHY = 6 Const TALENT_EMPATHY = 6
Const TALENT_INTIMIDATION = 7 Const TALENT_INTIMIDATION = 7
Const TALENT_LEADERSHIP = 8 Const TALENT_LEADERSHIP = 8
Const TALENT_STREETWISE = 9 Const TALENT_STREETWISE = 9
Const TALENT_SUBTERFUGE = 10 Const TALENT_SUBTERFUGE = 10
Const TALENTS_COUNT = 10 Const TALENTS_COUNT = 10
Dim Shared Talents(1 To TALENTS_COUNT) As String Dim Shared Talents(1 To TALENTS_COUNT) As String
Const SKILL_ANIMAL_KEN = 1 Const SKILL_ANIMAL_KEN = 1
Const SKILL_DRIVE = 2 Const SKILL_DRIVE = 2
Const SKILL_ETIQUETTE = 3 Const SKILL_ETIQUETTE = 3
Const SKILL_FIREARMS = 4 Const SKILL_FIREARMS = 4
Const SKILL_MELEE = 5 Const SKILL_MELEE = 5
Const SKILL_MUSIC = 6 Const SKILL_MUSIC = 6
Const SKILL_REPAIR = 7 Const SKILL_REPAIR = 7
Const SKILL_SECURITY = 8 Const SKILL_SECURITY = 8
Const SKILL_STEALTH = 9 Const SKILL_STEALTH = 9
Const SKILL_SURVIVAL = 10 Const SKILL_SURVIVAL = 10
Const SKILLS_COUNT = 10 Const SKILLS_COUNT = 10
Dim Shared Skills(1 To SKILLS_COUNT) As String Dim Shared Skills(1 To SKILLS_COUNT) As String
Const KNOWLEDGE_BUREAUCRACY = 1 Const KNOWLEDGE_BUREAUCRACY = 1
Const KNOWLEDGE_COMPUTER = 2 Const KNOWLEDGE_COMPUTER = 2
Const KNOWLEDGE_FINANCE = 3 Const KNOWLEDGE_FINANCE = 3
Const KNOWLEDGE_INVESTIGATION = 4 Const KNOWLEDGE_INVESTIGATION = 4
Const KNOWLEDGE_LAW = 5 Const KNOWLEDGE_LAW = 5
Const KNOWLEDGE_LINGUISTICS = 6 Const KNOWLEDGE_LINGUISTICS = 6
Const KNOWLEDGE_MEDICINE = 7 Const KNOWLEDGE_MEDICINE = 7
Const KNOWLEDGE_OCCULT = 8 Const KNOWLEDGE_OCCULT = 8
Const KNOWLEDGE_POLITICS = 9 Const KNOWLEDGE_POLITICS = 9
Const KNOWLEDGE_SCIENCE = 10 Const KNOWLEDGE_SCIENCE = 10
Const KNOWLEDGES_COUNT = 10 Const KNOWLEDGES_COUNT = 10
Dim Shared Knowledges(1 To KNOWLEDGES_COUNT) As String Dim Shared Knowledges(1 To KNOWLEDGES_COUNT) As String
Const BACKGROUND_POINTS = 5 Const BACKGROUND_POINTS = 5
Const BACKGROUND_ALLIES = 1 Const BACKGROUND_ALLIES = 1
Const BACKGROUND_CONTACTS = 2 Const BACKGROUND_CONTACTS = 2
Const BACKGROUND_FAME = 3 Const BACKGROUND_FAME = 3
Const BACKGROUND_GENERATION = 4 Const BACKGROUND_GENERATION = 4
Const BACKGROUND_HERD = 5 Const BACKGROUND_HERD = 5
Const BACKGROUND_INFLUENCE = 6 Const BACKGROUND_INFLUENCE = 6
Const BACKGROUND_MENTOR = 7 Const BACKGROUND_MENTOR = 7
Const BACKGROUND_RESOURCES = 8 Const BACKGROUND_RESOURCES = 8
Const BACKGROUND_RETAINERS = 9 Const BACKGROUND_RETAINERS = 9
Const BACKGROUND_STATUS = 10 Const BACKGROUND_STATUS = 10
Const BACKGROUNDS_COUNT = 10 Const BACKGROUNDS_COUNT = 10
Dim Shared Backgrounds(1 To BACKGROUNDS_COUNT) As String Dim Shared Backgrounds(1 To BACKGROUNDS_COUNT) As String
Const GENDER_MALE = 1 Const GENDER_MALE = 1
Const GENDER_FEMALE = 2 Const GENDER_FEMALE = 2
Const GENDER_TRANS_MALE = 3 Const GENDER_TRANS_MALE = 3
Const GENDER_TRANS_FEMALE = 4 Const GENDER_TRANS_FEMALE = 4
Const GENDER_NON_BINARY = 5 Const GENDER_NON_BINARY = 5
Const GENDERS_COUNT = 5 Const GENDERS_COUNT = 5
Dim Shared Genders(1 To GENDERS_COUNT) As String Dim Shared Genders(1 To GENDERS_COUNT) As String
Const DERANGEMENTS_COUNT = 10 Const DERANGEMENTS_COUNT = 10
Const DERANGEMENT_ID_AMNESIA = 1 Const DERANGEMENT_ID_AMNESIA = 1
Const DERANGEMENT_ID_DELUSIONS_OF_GRANDEUR = 2 Const DERANGEMENT_ID_DELUSIONS_OF_GRANDEUR = 2
Const DERANGEMENT_ID_FANTASY = 3 Const DERANGEMENT_ID_FANTASY = 3
Const DERANGEMENT_ID_MANIC_DEPRESSION = 4 Const DERANGEMENT_ID_MANIC_DEPRESSION = 4
Const DERANGEMENT_ID_MULTIPLE_PERSONALITIES = 5 Const DERANGEMENT_ID_MULTIPLE_PERSONALITIES = 5
Const DERANGEMENT_ID_OBSESSION = 6 Const DERANGEMENT_ID_OBSESSION = 6
Const DERANGEMENT_ID_OVERCOMPENSATION = 7 Const DERANGEMENT_ID_OVERCOMPENSATION = 7
Const DERANGEMENT_ID_PARANOIA = 8 Const DERANGEMENT_ID_PARANOIA = 8
Const DERANGEMENT_ID_PERFECTION = 9 Const DERANGEMENT_ID_PERFECTION = 9
Const DERANGEMENT_ID_REGRESSION = 10 Const DERANGEMENT_ID_REGRESSION = 10
Dim Shared Derangements(1 To DERANGEMENTS_COUNT) As DerangementType Dim Shared Derangements(1 To DERANGEMENTS_COUNT) As DerangementType
Dim Shared DerangementColors(1 To DERANGEMENTS_COUNT) As Integer Dim Shared DerangementColors(1 To DERANGEMENTS_COUNT) As Integer
Dim Shared DerangementLabels(1 To DERANGEMENTS_COUNT) As String Dim Shared DerangementLabels(1 To DERANGEMENTS_COUNT) As String
Const DERANGEMENT_LABEL_AMNESIA = "Amnesia" Const DERANGEMENT_LABEL_AMNESIA = "Amnesia"
Const DERANGEMENT_LABEL_DELUSIONS_OF_GRANDEUR = "Delusions of Grandeur" Const DERANGEMENT_LABEL_DELUSIONS_OF_GRANDEUR = "Delusions of Grandeur"
Const DERANGEMENT_LABEL_FANTASY = "Fantasy" Const DERANGEMENT_LABEL_FANTASY = "Fantasy"
Const DERANGEMENT_LABEL_MANIC_DEPRESSION = "Manic-Depression" Const DERANGEMENT_LABEL_MANIC_DEPRESSION = "Manic-Depression"
Const DERANGEMENT_LABEL_MULTIPLE_PERSONALITIES = "Multiple Personalities" Const DERANGEMENT_LABEL_MULTIPLE_PERSONALITIES = "Multiple Personalities"
Const DERANGEMENT_LABEL_OBSESSION = "Obsession" Const DERANGEMENT_LABEL_OBSESSION = "Obsession"
Const DERANGEMENT_LABEL_OVERCOMPENSATION = "Overcompensation" Const DERANGEMENT_LABEL_OVERCOMPENSATION = "Overcompensation"
Const DERANGEMENT_LABEL_PARANOIA = "Paranoia" Const DERANGEMENT_LABEL_PARANOIA = "Paranoia"
Const DERANGEMENT_LABEL_PERFECTION = "Perfection" Const DERANGEMENT_LABEL_PERFECTION = "Perfection"
Const DERANGEMENT_LABEL_REGRESSION = "Regression" Const DERANGEMENT_LABEL_REGRESSION = "Regression"
Dim Shared DerangementDescriptions(1 To DERANGEMENTS_COUNT) As String Dim Shared DerangementDescriptions(1 To DERANGEMENTS_COUNT) As String
Const DERANGEMENT_DESCRIPTION_AMNESIA = "You forget a segment of your past. Additionally in some cases a character can forget abilities and be unable to use them for the duration." Const DERANGEMENT_DESCRIPTION_AMNESIA = "You forget a segment of your past. Additionally in some cases a character can forget abilities and be unable to use them for the duration."
Const DERANGEMENT_DESCRIPTION_DELUSIONS_OF_GRA = "You imagine you are better than you are." Const DERANGEMENT_DESCRIPTION_DELUSIONS_OF_GRA = "You imagine you are better than you are."
Const DERANGEMENT_DESCRIPTION_FANTASY = "You enter a self-created world where you are the forgotten hero." Const DERANGEMENT_DESCRIPTION_FANTASY = "You enter a self-created world where you are the forgotten hero."
Const DERANGEMENT_DESCRIPTION_MANIC_DEPRESSION = "You sink into deep and fitful depressions, showing no interest in anything which used to captivate your interests. You will go along with others rather than use the energy to resist. Occasional fits of great energy grab hold of you, and you will work for hours or even days on your projects. During this time you will resist even the need for sleep as you burn up blood and Willpower on your schemes." Const DERANGEMENT_DESCRIPTION_MANIC_DEPRESSION = "You sink into deep and fitful depressions, showing no interest in anything which used to captivate your interests. You will go along with others rather than use the energy to resist. Occasional fits of great energy grab hold of you, and you will work for hours or even days on your projects. During this time you will resist even the need for sleep as you burn up blood and Willpower on your schemes."
Const DERANGEMENT_DESCRIPTION_MULTIPLE_PERSONA = "You possess a number of new personalities. You have amore than one Mature, and will switch between them. Thus you regain Willpower points in defferent ways at defferent times" Const DERANGEMENT_DESCRIPTION_MULTIPLE_PERSONA = "You possess a number of new personalities. You have amore than one Mature, and will switch between them. Thus you regain Willpower points in defferent ways at defferent times"
Const DERANGEMENT_DESCRIPTION_OBSESSION = "You become obsessed with some interest or fetish." Const DERANGEMENT_DESCRIPTION_OBSESSION = "You become obsessed with some interest or fetish."
Const DERANGEMENT_DESCRIPTION_OVERCOMPENSATION = "You make up for your moral weaknesses by playing up your strengths to an extreme. You don't think you can frenzy and won't stop it." Const DERANGEMENT_DESCRIPTION_OVERCOMPENSATION = "You make up for your moral weaknesses by playing up your strengths to an extreme. You don't think you can frenzy and won't stop it."
Const DERANGEMENT_DESCRIPTION_PARANOIA = "You are convinced that you are being hunted. You hold even your closest Friends under suspicion." Const DERANGEMENT_DESCRIPTION_PARANOIA = "You are convinced that you are being hunted. You hold even your closest Friends under suspicion."
Const DERANGEMENT_DESCRIPTION_PERFECTION = "All your energy is directed toward preventing anything from going wong. When it does you must make a self-control roll or frenzy." Const DERANGEMENT_DESCRIPTION_PERFECTION = "All your energy is directed toward preventing anything from going wong. When it does you must make a self-control roll or frenzy."
Const DERANGEMENT_DESCRIPTION_REGRESSION = "You become childlike retreating to an earlier time when less was expected of you Willpower is regained inthe way a Child's is." Const DERANGEMENT_DESCRIPTION_REGRESSION = "You become childlike retreating to an earlier time when less was expected of you Willpower is regained inthe way a Child's is."
Type CharacterType Const FREEBIE_POINT_COST_DISCIPLINE = 7
name As String Const FREEBIE_POINT_COST_ATTRIBUTE = 5
player As String Const FREEBIE_POINT_COST_ABIILTY = 2
chronicle As String Const FREEBIE_POINT_COST_VIRTUE = 2
haven As String Const FREEBIE_POINT_COST_HUMANITY = 1
concept As String Const FREEBIE_POINT_COST_BACKGROUND = 1
age As String
gender As Integer Type CharacterType
clan As Integer name As String
nature As Integer player As String
demeanor As Integer chronicle As String
conscience As Integer haven As String
selfControl As Integer concept As String
courage As Integer age As String
generation As Integer gender As Integer
roadName As String clan As Integer
roadValue As Integer nature As Integer
willpower As Integer demeanor As Integer
bloodPool As Integer conscience As Integer
derangementId As Integer selfControl As Integer
' Disciplines courage As Integer
discipline_animalism As Integer generation As Integer
discipline_auspex As Integer roadName As String
discipline_bardo As Integer roadValue As Integer
discipline_celerity As Integer willpower As Integer
discipline_chimestry As Integer bloodPool As Integer
discipline_dementation As Integer derangementId As Integer
discipline_dominate As Integer freebiePoints As Integer
discipline_fortitude As Integer ' Disciplines
discipline_melpominee As Integer discipline_animalism As Integer
discipline_mortis As Integer discipline_auspex As Integer
discipline_mytherceria As Integer discipline_bardo As Integer
discipline_necromancy As Integer discipline_celerity As Integer
discipline_obeah As Integer discipline_chimestry As Integer
discipline_obfuscate As Integer discipline_dementation As Integer
discipline_obtenebration As Integer discipline_dominate As Integer
discipline_potence As Integer discipline_fortitude As Integer
discipline_presence As Integer discipline_melpominee As Integer
discipline_protean As Integer discipline_mortis As Integer
discipline_quietus As Integer discipline_mytherceria As Integer
discipline_serpentis As Integer discipline_necromancy As Integer
discipline_spiritus As Integer discipline_obeah As Integer
discipline_thanantosis As Integer discipline_obfuscate As Integer
discipline_thaumaturgy As Integer discipline_obtenebration As Integer
discipline_vicissitude As Integer discipline_potence As Integer
' Attributes discipline_presence As Integer
attr_strength As Integer discipline_protean As Integer
attr_dexterity As Integer discipline_quietus As Integer
attr_stamina As Integer discipline_serpentis As Integer
attr_appearance As Integer discipline_spiritus As Integer
attr_charisma As Integer discipline_thanantosis As Integer
attr_manipulation As Integer discipline_thaumaturgy As Integer
attr_intelligence As Integer discipline_vicissitude As Integer
attr_perception As Integer ' Attributes
attr_wits As Integer attr_strength As Integer
' Talents attr_dexterity As Integer
talent_acting As Integer attr_stamina As Integer
talent_alertness As Integer attr_appearance As Integer
talent_athletics As Integer attr_charisma As Integer
talent_brawl As Integer attr_manipulation As Integer
talent_dodge As Integer attr_intelligence As Integer
talent_empathy As Integer attr_perception As Integer
talent_intimidation As Integer attr_wits As Integer
talent_leadership As Integer ' Talents
talent_streetwise As Integer talent_acting As Integer
talent_subterfuge As Integer talent_alertness As Integer
' Skills talent_athletics As Integer
skill_animalKen As Integer talent_brawl As Integer
skill_drive As Integer talent_dodge As Integer
skill_etiquette As Integer talent_empathy As Integer
skill_firearms As Integer talent_intimidation As Integer
skill_melee As Integer talent_leadership As Integer
skill_music As Integer talent_streetwise As Integer
skill_repair As Integer talent_subterfuge As Integer
skill_security As Integer ' Skills
skill_stealth As Integer skill_animalKen As Integer
skill_survival As Integer skill_drive As Integer
' Knowledges skill_etiquette As Integer
knowledge_bureaucracy As Integer skill_firearms As Integer
knowledge_computer As Integer skill_melee As Integer
knowledge_finance As Integer skill_music As Integer
knowledge_investigation As Integer skill_repair As Integer
knowledge_law As Integer skill_security As Integer
knowledge_linguistics As Integer skill_stealth As Integer
knowledge_medicine As Integer skill_survival As Integer
knowledge_occult As Integer ' Knowledges
knowledge_politics As Integer knowledge_bureaucracy As Integer
knowledge_science As Integer knowledge_computer As Integer
' Backgrounds knowledge_finance As Integer
background_allies As Integer knowledge_investigation As Integer
background_contacts As Integer knowledge_law As Integer
background_fame As Integer knowledge_linguistics As Integer
background_generation As Integer knowledge_medicine As Integer
background_herd As Integer knowledge_occult As Integer
background_influence As Integer knowledge_politics As Integer
background_mentor As Integer knowledge_science As Integer
background_resources As Integer ' Backgrounds
background_retainers As Integer background_allies As Integer
background_status As Integer background_contacts As Integer
End Type background_fame As Integer
background_generation As Integer
Type DerangementType background_herd As Integer
id As Integer background_influence As Integer
label As String background_mentor As Integer
description As String background_resources As Integer
textColor As Integer background_retainers As Integer
End Type background_status As Integer
End Type
Type DerangementType
id As Integer
label As String
description As String
textColor As Integer
End Type

View File

@@ -234,6 +234,7 @@ Sub NewCharacter (ch As CharacterType)
ch.willpower = 0 ch.willpower = 0
ch.bloodPool = 0 ch.bloodPool = 0
ch.derangementId = -1 ch.derangementId = -1
ch.freebiePoints = 15
' Virtues ' Virtues
ch.selfControl = 1 ch.selfControl = 1
ch.courage = 1 ch.courage = 1
@@ -418,6 +419,14 @@ Sub FillVirtues (ch As CharacterType, values() As Integer)
Next Next
End Sub End Sub
Function GetFreebiePoints(ch as CharacterType)
GetFreebiePoints = ch.freebiePoints
End Function
Sub SetFreebiePoints(ch As CharacterType, points As Integer)
ch.freebiepoints = points
End Sub
' Attributes ' Attributes
Sub FillAttributeValues (ch As CharacterType, values() As Integer, groupIndex As Integer) Sub FillAttributeValues (ch As CharacterType, values() As Integer, groupIndex As Integer)

View File

@@ -229,6 +229,21 @@ Function ChooseStringIdWithValues (labels() As String, values() As Integer, styl
ChooseStringIdWithValues = choice ChooseStringIdWithValues = choice
End Function End Function
Function ChooseStringIdWithValuesAndCancel (labels() As String, values() As Integer, style As MenuStyle, count As Integer, prompt As String)
MaybeCls
Dim mnuItems(1 To count + 1) As MenuItem
Call BuildMenuWithValues(mnuItems(), labels(), values(), count)
Dim cancelMenuItem As MenuItem
Call NewMenuItemWithValue(cancelMenuItem, "Cancel", count + 1, -1)
mnuItems(count + 1) = cancelMenuItem
Call AdjustMenuStyle(style, mnuItems(), count, FALSE)
Print prompt
Call PrintMenu(mnuItems(), count, style)
choice = GetMenuChoice(mnuItems(), style, count)
If choice = style.randomItemId Then choice = GetRandomMenuItemId(mnuItems(), count - 1)
ChooseStringIdWithValuesAndCancel = choice
End Function
Function ChooseStringIdWithColors (labels() As String, colors() As Integer, style As MenuStyle, prompt As String) Function ChooseStringIdWithColors (labels() As String, colors() As Integer, style As MenuStyle, prompt As String)
MaybeCls MaybeCls
' Check array bounds ' Check array bounds
@@ -429,6 +444,165 @@ Sub CGGetDerangement (ch As CharacterType)
End Sub End Sub
Sub CGSpendFreebiePoints (ch As CharacterType) Sub CGSpendFreebiePoints (ch As CharacterType)
freebiePoints = GetFreebiePoints(ch)
Dim ms As MenuStyle
Call NewMenuStyle(ms)
Dim labels(1 To 7) As String
Dim menuItemIds(1 To 7) As Integer
' TODO: Find a better way to handle these menuItemIds mabye a new Choose* function and some constants
While (freebiePoints > 0)
MaybeCls
Print "freebiePoints = "; itos$(freebiePoints)
' Build the menu
numMenuItems = 0
If freebiePoints >= FREEBIE_POINT_COST_DISCIPLINE Then
numMenuItems = numMenuItems + 1
menuItemIds(numMenuItems) = 1
labels(numMenuItems) = "Add a discipline dot 7 points"
End If
If freebiePoints >= FREEBIE_POINT_COST_ATTRIBUTE Then
numMenuItems = numMenuItems + 1
menuItemIds(numMenuItems) = 2
labels(numMenuItems) = "Add an attribute dot 5 points"
End If
If freebiePoints >= FREEBIE_POINT_COST_ability Then
numMenuItems = numMenuItems + 1
menuItemIds(numMenuItems) = 3
labels(numMenuItems) = "Add an ability dot 2 points"
End If
If freebiePoints >= FREEBIE_POINT_COST_VIRTUE Then
numMenuItems = numMenuItems + 1
menuItemIds(numMenuItems) = 4
labels(numMenuItems) = "Add a virtue dot 2 points"
End If
If freebiePoints >= FREEBIE_POINT_COST_HUMANITY Then
' TODO: Make this configurable for VtDA
numMenuItems = numMenuItems + 1
menuItemIds(numMenuItems) = 5
labels(numMenuItems) = "Add a humanity dot 1 point"
End If
If freebiePoints >= FREEBIE_POINT_COST_BACKGROUND Then
numMenuItems = numMenuItems + 1
menuItemIds(numMenuItems) = 6
labels(numMenuItems) = "Add a background dot 1 point"
End If
' TODO: Exclude this option from the randomized Ids. Maybe use a different Choose* function or just do it here.
numMenuItems = numMenuItems + 1
menuItemIds(numMenuItems) = 7
labels(numMenuItems) = "Show character sheet"
prompt$ = "You have " + itos$(freebiePoints) + " freebie points remaining what would you like to spend the points on?"
id = ChooseStringId(labels(), ms, numMenuItems, prompt$)
Select Case menuItemIds(id)
Case 1
Call CGSpendDisciplinePoint(ch)
Case 2
Call CGSpendAttributePoint(ch)
Case 3
Call CGSpendAbilityPoint(ch)
Case 4
Call CGSpendVirtuePoint(ch)
Case 5
Call CGSpendHumanityPoint(ch)
Case 6
Call CGSpendBackgroundPoint(ch)
Case 7
Call ShowCharacterSheet(ch)
End Select
freebiePoints = GetFreebiePoints(ch)
Wend
End Sub
Sub CGSpendDisciplinePoint (ch As CharacterType)
MaybeCls
Dim ms As MenuStyle
Call NewMenuStyle(ms)
Dim disciplineValues(DISCIPLINES_COUNT) As Integer
Call FillDisciplines(ch, disciplineValues())
discipline = ChooseStringIdWithValuesAndCancel(Disciplines(), disciplineValues(), ms, DISCIPLINES_COUNT, "Which discipline do you want to spend 1 of your " + itos$(disciplinePoints) + " points on?")
If discipline > 0 Then
Call SetDiscipline(ch, discipline, GetDiscipline(ch, discipline) + 1)
Call SetFreebiePoints(ch, GetFreebiePoints(ch) - 7)
End If
End Sub
Type AttributeReference
id As Integer
groupIndex As Integer
attributeIndex As Integer
End Type
Sub CGSpendAttributePoint (ch As CharacterType)
MaybeCls
'TODO: Paragraph
'Choose an attribute maybe choose a group then choose an attribute, but try to only have the one choice.
'Allow cancel
'If an attribute was chosen then add that attribute point to ch and subtract 5 freebie points from ch
Print "TODO: Fill in CGSpendAttributePoint"
Dim ms As MenuStyle ' With values
Call NewMenuStyle(ms)
numAttributes = 0
Dim numAttributesInGroup(1 To ABILITY_GROUPS_COUNT) As Integer
For attributeGroupIndex = 1 To ABILITY_GROUPS_COUNT
numAttributesInGroup(attributeGroupIndex) = GetNumAttributesInGroup(attributeGroupIndex)
numAttributes = numAttributes + numAttributesInGroup(attributeGroupIndex)
Next
Dim attributes(numAttributes) As AttributeReference
Dim labels(numAttributes) As String
Dim values(numAttributes) As Integer
attributeIndex = 1
For attributeGroupIndex = 1 To ABILITY_GROUPS_COUNT
For index = 1 To numAttributesInGroup(attributeGroupIndex)
Dim attribute As AttributeReference
attribute.id = attributeIndex
attribute.groupIndex = attributeGroupIndex
attribute.attributeIndex = index
attributes(attributeIndex) = attribute
labels(attributeIndex) = GetAttributeName$(attributeGroupIndex, index)
values(attributeIndex) = GetAttributeValue(ch, attributeGroupIndex, index)
attributeIndex = attributeIndex + 1
Next
Next
attributeIndex = ChooseStringIdWithValuesAndCancel(labels(), values(), ms, numAttributes, "Which attribute do you want to add one dot to?")
If attributeIndex > 0 Then
Dim attr As AttributeReference
attr = attributes(attributeIndex)
Call SetAttributeValue(ch, attr.groupIndex, attr.attributeIndex, GetAttributeValue(ch, at.groupindex, at.attributeindex) + 1)
Call SetFreebiePoints(ch, GetFreebiePoints(ch) - 5)
End If
End Sub
Sub CGSpendAbilityPoint (ch As CharacterType)
'TODO: Paragraph
'Choose an abililty group; Allow cancel
'Choose an ability; Allow cancel
'If an ability was chosen then add that ability point to ch and subtract 2 freebie points
Print "TODO: Fill in CGSpendAbilityPoint"
End Sub
Sub CGSpendVirtuePoint (ch As CharacterType)
'TODO: Paragraph
'Choose a virtue; Allow cancel
'If a virtue was chosen that add that virtue point to ch and subtract 2 freebie points.
Print "TODO: Fill in CGSpendVirtuePoint"
End Sub
Sub CGSpendHumanityPoint (ch As CharacterType)
'TODO: Paragraph
'Confirm they want to add the point
'If they say yes then add the humanity point to ch and subtract 1 freebie point.
Print "TODO: Fill in CGSpendHumanityPoint"
End Sub
Sub CGSpendBackgroundPoint (ch As CharacterType)
'TODO: Paragraph
'Choose a background; Allow cancel
'If they chose a background then add the background and subtract 1 freebie point.
Print "TODO: Fill in CGSpendBackgroundPoint"
End Sub End Sub
' Ignore this warning ch is not used yet because the sub is not implemented yet. ' Ignore this warning ch is not used yet because the sub is not implemented yet.