diff --git a/src/blessfrey-gdd/KnowledgeBase b/src/blessfrey-gdd/KnowledgeBase
new file mode 100644
index 0000000..e69de29
diff --git a/src/blessfrey-gdd/MessageBus b/src/blessfrey-gdd/MessageBus
new file mode 100644
index 0000000..e69de29
diff --git a/src/blessfrey-gdd/controls b/src/blessfrey-gdd/controls
index 593855c..a1e6cc2 100644
--- a/src/blessfrey-gdd/controls
+++ b/src/blessfrey-gdd/controls
@@ -15,3 +15,10 @@
+ - How long does it take to get into the game, and is it a reasonable amount of time?
+ - Some kind of hint as to where you are in the game and how to quickly refresh on mechanics, for players who left for years
+ - If it isn't replayable, maybe one part is too much of a drag, the puzzle was only fun to solve once, each playthrough is not new and variable. Also in that case, probably no point to play, better to just watch.
- when game ignores the lore - permadeath for the young and vigorous in a world with plenty of resurrection
- losing control of your own character for an extended period - knockdown room
- forcing player to act stupidly - story won't progress until you trigger an obvious trap, sign a bad contract, etc
diff --git a/src/blessfrey-gdd/dialogue b/src/blessfrey-gdd/dialogue
new file mode 100644
index 0000000..7fd23d9
--- /dev/null
+++ b/src/blessfrey-gdd/dialogue
@@ -0,0 +1,5 @@
+ wishlist
+
+ - close dialogue if player or other party moves away too far
+ - ESC/rebindable closes dialogue window
+
diff --git a/src/blessfrey-gdd/fog-of-war b/src/blessfrey-gdd/fog-of-war
new file mode 100644
index 0000000..e69de29
diff --git a/src/blessfrey-gdd/gear b/src/blessfrey-gdd/gear
index b2bd439..a10d064 100644
--- a/src/blessfrey-gdd/gear
+++ b/src/blessfrey-gdd/gear
@@ -6,3 +6,5 @@
Armor typically increases spirit by a total of 20 for armsman; 25 for tamer and brawler; and 30 for hacker, disciple, and chemist.
Armor typically increases spirit regen by a total of +2 for armsman; +3 for tamer; and +4 for hacker, disciple, chemist, brawler.
+weapons
+ Flashlight is an off-hand equippable. It is functional, casting a persistent light area skill. It provides neglible stats.
diff --git a/src/blessfrey-gdd/highlight b/src/blessfrey-gdd/highlight
new file mode 100644
index 0000000..cc17f49
--- /dev/null
+++ b/src/blessfrey-gdd/highlight
@@ -0,0 +1,5 @@
+ wishlist
+
+ - target stays highlighted, highlight any hover also.
+ - change target, unhighlight previous target
+
diff --git a/src/blessfrey-gdd/inspect b/src/blessfrey-gdd/inspect
index fc34c99..2cc2dc9 100644
--- a/src/blessfrey-gdd/inspect
+++ b/src/blessfrey-gdd/inspect
@@ -1,26 +1,27 @@
description
- Right-click on an tangible entity or inventory item to open a popup inspect menu with all relevant inspect options. Selecting one will execute a method. Examples are 'follow Chloe' (pathfind after Chloe wherever she moves until action is cancelled), 'pick up clover' (item pickup), and 'examine button' (write a descriptive line about her in Helia's thought bubble)
-
+ Right-click on an tangible entity or inventory item to open a popup inspect menu with all relevant inspect options. Selecting one will execute a method. Examples are 'follow Chloe' (pathfind after Chloe wherever she moves until action is cancelled), 'pick up clover' (item pickup), and 'examine button' (write a descriptive line about her in Helia's thought bubble)
+
structure
- Every tangible entity has an exported dictionary of inspect_options: {index: ['tr_key', 'method']}. For example, {0:['tr_pick up','pickup'],1:['tr_extinguish','extinguish']}. Every tangible appends 'examine' at ready.
-
- The Clickable has a _ready input event signal looking for "right-click."
-
- The inspect menu ("res://UI/InspectMenu/InspectMenu.tscn") is instanced at declaration and added as a child at ready in the UI singleton.
-
+ Every tangible entity has an exported dictionary of inspect_options: {index: ['tr_key', 'method']}. For example, {0:['tr_pick up','pickup'],1:['tr_extinguish','extinguish']}. Every tangible appends 'examine' at ready.
+
+ The Clickable has a _ready input event signal looking for "right-click."
+
+ The inspect menu ("res://UI/InspectMenu/InspectMenu.tscn") is instanced at declaration and added as a child at ready in the UI singleton.
+
logic
- When tangible entity is right-clicked (@ $Body/Sprite/Clickable), the UI enters InspectMenu with its subject set. (The subject setter also sets the player's target.) The "id_pressed" signal is reset for each subject. InspectMenu connects "about_to_show" the first time it's needed and keeps it forever. Before popup(), it resets, adds a label at an offset with the subject's display name, then adds a UI option for each inspect option.
-
- When a selection is made, the "id_pressed" signal calls "id_pressed" on the subject, which calls the method at its inspect_options[pressed_id][1]. So 'examine' calls 'examine,' which is in tangible.gd. Most related methods are on tangible.gd, though they may be at a more specific script.
+ When tangible entity is right-clicked (@ $Body/Sprite/Clickable), the UI enters InspectMenu with its subject set. (The subject setter also sets the player's target.) The "id_pressed" signal is reset for each subject. InspectMenu connects "about_to_show" the first time it's needed and keeps it forever. Before popup(), it resets, adds a label at an offset with the subject's display name, then adds a UI option for each inspect option.
+ When a selection is made, the "id_pressed" signal calls "id_pressed" on the subject, which calls the method at its inspect_options[pressed_id][1]. So 'examine' calls 'examine,' which is in tangible.gd. Most related methods are on tangible.gd, though they may be at a more specific script.
+ Only one inspect menu can be open at a time.
+
challenges/known issues
- It's not obvious how to get popupmenus to appear at specific coordinates. I get it to appear at the subject's current location by setting rect_global_position = get_global_mouse_position()
the line immediately after popup()
.
-
- The inspect menu retains the largest ever size going forward. I reset the size to 20,20 when clearing previous options.
-
- Tangibles and inventory items both have inspect menus, but their code has to be separate. They are too different from each other.
-
- It doesn't close the inspect menu if pickup is chosen while item out of range, even after item is picked up.
-
+ It's not obvious how to get popupmenus to appear at specific coordinates. I get it to appear at the subject's current location by setting rect_global_position = get_global_mouse_position()
the line immediately after popup()
.
+
+ The inspect menu retains the largest ever size going forward. I reset the size to 20,20 when clearing previous options.
+
+ Tangibles and inventory items both have inspect menus, but their code has to be separate. They are too different from each other.
+
+ It doesn't close the inspect menu if pickup is chosen while item out of range, even after item is picked up.
+
works for...
+
+ extras
+
+ - Steam extras. Badges, achievements, card drops, backgrounds, desirable emoticons for conversion in general, probably more things I don't know about.
+ - Art book, storybook (canon, side, or alternative), comic book, cards, 3D paper, paper dolls
+
diff --git a/src/blessfrey-gdd/pathfinding b/src/blessfrey-gdd/pathfinding
index abdb63f..5e81dc7 100644
--- a/src/blessfrey-gdd/pathfinding
+++ b/src/blessfrey-gdd/pathfinding
@@ -25,4 +25,7 @@
- move to target but don't attack✗
- move to target then interact✗
-
+ Skills are individual powers usable by entities. They can take 8 at a time on their skillbar. They can be used for combat, puzzle-solving, and roleplaying. They are acquired through exploring.
-
- character tidbits
@@ -1220,16 +1227,6 @@ Helia comes to the security office to pick up her luggage, but it isn't on the r
-
-
-
-
-
-
-
-
-
-
diff --git a/src/blessfrey-gdd/terms b/src/blessfrey-gdd/terms
index bf5d2fa..cf20efe 100644
--- a/src/blessfrey-gdd/terms
+++ b/src/blessfrey-gdd/terms
@@ -1,23 +1,53 @@
-
+ in use
+
+ - activation: the activation must complete before the skill can begin functioning. After a successful activation, the skill penalties are applied. If activation fails, no penalties are applied. Flash skills activate instantly and cannot fail.
+ - attack: An aggressive action that begins combat.
- base item: the core of data of an individual item. Floor items and inventory items contain a base item.
+ - base max health: character’s expected max health, calculated by level. The formula is 100 + 10 * get_character().find_level(get_character().get_xp()).
+ - combat:
+ - cost: a price must be paid before a skill is used. The main currency for skills is spirit, which is taken after a successful skill activation.
- current_dot: (DG era variable, StateMachine.gd) the immediate point the entity is pathfinding to in order to ultimately reach the goal_target.
- degrees(❥): (concept) the unit of social distance
- dot: (DG era variable, StateMachine.gd) a set of coordinates for a global position.
- dots: (DG era variable, StateMachine.gd) the discreet path between points, esp. the entity and the goal target.
+ - equipped: for skills, this has two meanings. Known skills that are loaded into an entity’s skillbar are equipped. A player would not be aware that all hidden and subskills are also ‘equipped’ to their entity before they are used, but these are not equipped to the skillbar.
+ - event: anything that happens in the game that brings about an effect. Using a skill, completing a quest, using a specific item, walking steps, starting the game, entering a room, etc...
+ - event handler: An object that subscribes to the MessageBus and waits to receive notification of the event when it happens. The event topic usually comes bundled with data that helps the handler bring about some kind of effect. Responses include level up rewards, quest rewards, world changes, new dialog options, adding an item to the inv, updating UI, etc.
- floor item:
- goal target: (DG era variable, MoveToDestination.gd) It is set when the entity decides to pathfind and nulled during clear_goal(). mobile.gd/path_to_object(goal_target) is called from MoveToDestination every Execute loop to reassess the path between entity and goal.
+ - KnowledgeBase:
- inspect menu: (UI) presents options for interacting with the subject
- intimate distance: 45❥, declared at mobile.gd/intimate_space
- inventory item:
+ - life: Health points. Entity dies at 0 life. Entity experiences life regeneration over time when not in combat.
- item: varies in form depending on its context - base item, floor item, inventory item, merchandise
+ - max health: character’s actual max health, affected by the max_health addend and max_health factor. The formula is get_max_health() * get_max_health_factor() + get_max_health_addend().
- merchandise:
+ - Mercur: generic attribution for events
+ - MessageBus:
- next: (DG era variable, StateMachine.gd) same as the goal_target. The current waypoint for the entity.
- next_dot: (DG era variable, StateMachine.gd) the first item in the dots array that is not at the entity's global_position.
+ - Penalty: Skill penalties typically include a skill cost and skill cooldown. They are only paid after the skill successfully activates.
- personal distance: 60❥, declared at mobile.gd/personal_space
- proxemics: (concept) interentitic, mechanical distances
+ - side-load: skills can be side-loaded onto the skillbar, avoiding skillbar equip rules, with skills that copy or permanently replace with other skills (Signet of Skill Capture, Arcane Thievery, etc). Also, skills that are offered in a room (i.e., Chloe offers you a temporary Holy Water skill while you are doing the mission)
+ - skill: individual power usable by an entity to modify the attributes other entities. They are represented by an ID. To be used, they are instanced into individual containers and managed by individual DMVs
+ - skill library, skill pool: each entity has its own, full of all its known skills
- social distance: 90❥, declared at mobile.gd/social_space
+ - skillbar: each entity has its own, full of its equipped skills. There is a limit of 8 skills, 1 elite skill, and no repeating skills. Side-loaded skills avoid these restrictions, but the skillbar will be governed upon zoning.
+ - spirit: energy points. Entity experiences spirit regeneration at all time.
- subject: inspect menu has a subject; inspect options will affect it
- swing: (BF era action, ???.gd) Encompasses both weapon swings and the use phase of weapon attack skills.
+
+ in use soon? or never?
+
+ - ActivationUse: a skill is considered ‘used’ once a skillequip has been entered. It will immediately begin activating.
+ - arsenal: a list of SkillEquips. Skills are represented as IDs and must be instanced into a container before they can be used by an entity. The instances are appended to the entity’s skill arsenal upon being ‘equipped’.
+ - remove by tag: published to remove keywords by tag.
+ - skill tagged: published during keyword setup; sends tags and the keyword
+ - skill untagged: published when keyword is untagged, like during keyword teardown; sends tags and the keyword.
+ - SkillEquip: an instance containing a skill and information about its cooldown status. A skill needs one in order to be used.
+ - tag removed: published when a tag was requested to be removed. It won’t be published if the tag’s keyword expires naturally. It sends its tags, the keyword, and the source of removal.
- track: (DG era variable, MoveToDestination.gd) If the AI is pathfinding to a point or object, track is true. Upon arrived(), it is false. It is checked in handle_moved_result(result, entity).
- waypoints: (DG era variable, StateMachine.gd) the list of selected points the entity will be traveling to. Usually a patrol route.
-
+
diff --git a/src/blessfrey-gdd/ui b/src/blessfrey-gdd/ui
new file mode 100644
index 0000000..3a980a2
--- /dev/null
+++ b/src/blessfrey-gdd/ui
@@ -0,0 +1,9 @@
+
wishlist
+
+ - save positions of UI plates at close/tree_exit
+ - if windows were dragged outside of viewport, should I save outside coords or the nearest coords that are fully within the viewport?
+ - only open one instance of a window at a time (open chest once)
+ - close plates with their hotkeys and/or esc
+window scenes share a base
+ - custom cursor
+
diff --git a/src/char/Aries-basics b/src/char/Aries-basics
index e2a912a..cd30871 100644
--- a/src/char/Aries-basics
+++ b/src/char/Aries-basics
@@ -2,7 +2,7 @@
role: student
age: teens
birthday: March 18
-
mental: smart, logical, overly blunt
+
mental: smart, logical, overly blunt, disciplined, egalitarian
physical: average, toned, very pale, very short fair hair, pale green eyes
height: 5'7
style: bold colors, color blocking, active wear
diff --git a/src/char/Danika-basics b/src/char/Danika-basics
new file mode 100644
index 0000000..6ae7d3d
--- /dev/null
+++ b/src/char/Danika-basics
@@ -0,0 +1,12 @@
+
+ - role: gym teacher
+ - age: 20s-30s
+ - birthday:
+ - mental: naturally intimidating and forceful, focused on more important things or otherwise distracted from the task at hand, always manages to kill all her students during shooter drills, crass
+ - physical: tall, big breasts, athletic
+ - height:
+ - style:
+ - residence:
+ - likes:
+ - dislikes:
+
diff --git a/src/char/Danika-desc b/src/char/Danika-desc
new file mode 100644
index 0000000..9f88ac8
--- /dev/null
+++ b/src/char/Danika-desc
@@ -0,0 +1 @@
+
lots of absurd rumors (used to run a gang)
diff --git a/src/char/Danika-label b/src/char/Danika-label
new file mode 100644
index 0000000..589e032
--- /dev/null
+++ b/src/char/Danika-label
@@ -0,0 +1 @@
+Name Danika Blake | means
? | job♀
diff --git a/src/char/Danika-story b/src/char/Danika-story
new file mode 100644
index 0000000..31ee882
--- /dev/null
+++ b/src/char/Danika-story
@@ -0,0 +1 @@
+
diff --git a/src/char/Helia-basics b/src/char/Helia-basics
index 4782e91..62433b0 100644
--- a/src/char/Helia-basics
+++ b/src/char/Helia-basics
@@ -2,7 +2,7 @@
role: transfer student
age: teens
birthday: whenever
-
mental: kind of rude
+
mental: kind of rude and antisocial
physical: short, blonde front ponytail with chunks of burgundy and flaming orange, hot pink eyes
style: DIY fashion
height: 5'1
diff --git a/src/char/Honor-basics b/src/char/Honor-basics
index 248b1dd..7f2d153 100644
--- a/src/char/Honor-basics
+++ b/src/char/Honor-basics
@@ -2,8 +2,8 @@
role: teacher
age: 20s-30s
birthday: December 5
-
mental:
-
physical:
+
mental: tries too hard to be taken seriously
+
physical: dishwater blonde, confused for a student
height:
style:
residence:
diff --git a/src/char/Night-basics b/src/char/Night-basics
index 97ab56b..f2b5aff 100644
--- a/src/char/Night-basics
+++ b/src/char/Night-basics
@@ -2,7 +2,7 @@
role: pharmacist
age: teens
birthday:
-
mental: genius, haughty
+
mental: genius, haughty, instrumental love
physical: short, thin but without muscles, dark hair, light blue eyes, pale
style: relatively formal, lots of suit jackets and vests with pops of bold colors
height: 5'5
diff --git a/src/char/Rune-basics b/src/char/Rune-basics
index c5300f1..d4b3cd5 100644
--- a/src/char/Rune-basics
+++ b/src/char/Rune-basics
@@ -2,7 +2,7 @@
role: floor guardian
age: teens
birthday: May 25?
-
mental: simple, ignorant but curious
+
mental: simple, ignorant but curious, childlike but deep, protective
physical: tall, dark hair, red eyes, semi-rigid keratin "horns"
style: assembled trash, hand-me-downs
height: 5'10
diff --git a/src/index.py b/src/index.py
index 26e5767..d766a7b 100644
--- a/src/index.py
+++ b/src/index.py
@@ -106,6 +106,9 @@ def find_gallery(name):
if name == "Chloe":
gal.append("Blessfrey")
gal.append([["girls.png","Angel, Chloe, and Tessa"]])
+ if name == "Danika":
+ gal.append("Blessfrey")
+ gal.append([["name.png","desc"]])
if name == "Dia":
gal.append("Blessfrey")
gal.append([["name.png","desc"]])
@@ -505,7 +508,7 @@ def entry(page):
def gddbf():
"""Game Design Document"""
info = {'css': 'doc', 'title': 'blessfrey gdd', 'year': find_year(), 'topics': get_gdd_topics(
-["achievement", "ai", "armor-rating", "attack-loop", "attribute", "attribute-point", "cast", "character", "collision", "controls", "credits", "damage-type", "death-penalty", "design-philosophy", "dialogue", "docs", "environment-effect", "gear", "gig", "groups", "highlight", "ID", "inspect menu", "inventory", "item", "job", "keyword", "language", "life", "marketing", "mechanics", "Mercur", "milestones", "miracles", "pathfinding", "perk", "pip", "projectile", "proxemics", "punishment", "setting", "skill", "smartphone", "spirit", "status-effect", "story", "style guide", "terms", "vibe", "website", "xp", "xp-bar", "zone"],3
+["achievement", "ai", "armor-rating", "attack-loop", "attribute", "attribute-point", "cast", "character", "collision", "controls", "credits", "damage-type", "death-penalty", "design-philosophy", "dialogue", "docs", "environment-effect", "fog-of-war", "gear", "gig", "groups", "highlight", "ID", "inspect menu", "inventory", "item", "job", "keyword", "KnowledgeBase", "language", "life", "marketing", "mechanics", "MessageBus", "Mercur", "milestones", "miracles", "pathfinding", "perk", "pip", "projectile", "proxemics", "punishment", "setting", "skill", "smartphone", "spirit", "status-effect", "store", "story", "style guide", "terms", "ui", "vibe", "website", "xp", "xp-bar", "zone"],3
)}
return template('bf-gdd.tpl', info)
@route('/gdd')
diff --git a/src/views/bf-gdd.tpl b/src/views/bf-gdd.tpl
index 79754de..c6ca1ac 100644
--- a/src/views/bf-gdd.tpl
+++ b/src/views/bf-gdd.tpl
@@ -3,6 +3,7 @@
blessfrey game design document
The vision for Blessfrey
+
Choose a primary and secondary class, gain skills through gameplay, build a skillbar from unlimited combinations of skills with interesting synergies, and test it in combat with new friends around town. Or collect practical skills to spend a day transmuting items, cooking, or socializing. Lots to discover and explore!
% # find longest column, since html tables need to be doled out row by row