-
Notifications
You must be signed in to change notification settings - Fork 13
Action Management ~ Inventory Item Prerequisites
Currently, action conditions are checked only by matching item attributes to a condition's attribute; if they match, then the action is performed. A new condition that checks the player's inventory for a certain item will be added to the possible conditions. Since it is possible to have this kind of action prerequisite for all forms of actions, including path actions, game-state's conditions would likely be changed the most to keep abstraction. Also, since conditions are only in game-state's item module, a rework must be done to do_path_action because it currently does not check any prerequisites (see issue #453).
game-state item
- Introduce condition types:
- attribute: the condition type already implemented in the code
- inventory: the condition to be added; passes only if the player has the item in inventory
- Condition types will allow for other implementation-heavy conditions to be added as more are thought of
- Add new structs
attribute_condition
andinventory_condition
as new condition types-
attribute_condition
contains most ofgame_action_condition
's variables:item_t *item;
attribute_t* attribute_to_check;
attribute_value_t expected_value;
-
inventory_condition
contains:-
player_t* player_to_check;
to quickly reference inventory -
item_t *expected_item;
the item to check
-
-
- change game_action_condition to include (possibly) a union of attribute and inventory condition, and an enum
condition_tag
to letcheck_condition
know which condition to check
game-state player
- Add new function
bool item_in_inventory(player_t *player, item_t *item)
- Likely uses
HASH_FIND
function to check if item is in inventory
- Likely uses
game-state room
- Add the
game_condition_list_t
linkedlist (specified by item) to path struct - More will be worked out with other action management teammates
game-state game_action
- Rewrite
check_condition
to determine whether the condition is attribute or inventory, and then include the necessary logic for testing if the item exists in the inventory through the player'sitem_in_inventory
function - Add functions to construct each type of condition and add them to the action condition linkedlist
-
condition_new
andadd_action_condition
should be updated to reflect the new condition types- Must decide on whether to add new functions or abstract each function further
action_management actionmanagement
-
do_path_action
will check for conditions and possibly returnCONDITIONS_NOT_MET
- If all goes well, not many changes will be made to these files
- Work with Action Management's Conditional Connections Between Rooms team to make sure item prerequisites supports their code
- Implementation
-
Action Management
-
Battles
- Design Document
- Text Based Combat in Other Games
- User Stories
- Wishlist
- Battle Planning 2022
- Battle User Stories Review 2022
- Structs in Other Modules Related to Battles 2022
- Stat Changes Design Document
- Run Function Design Document
- CLI Integration Design Document
- Move Changes Design Document
- Unstubbing Stubs Design Document
- Battle Items and Equipment Design Document
- Battle Item Stats
- Battles Demo Design Document
- Battles Testing Moves, Items, and Equipment Design Document
- Sound integration with battle (design document)
-
Custom Actions
-
Custom Scripts
-
DSL
-
CLI
-
Enhanced CLI
-
Game-State
-
Graphics
- Design Plan
- Design document for integrating split screen graphics with chiventure
- GDL (Graphical Description Language)
- Graphics Sandbox
- Design Document for NPC Graphics and Dialogue
- Feature Wishlist (Spring 2021)
- Installing and Building raylib on a VM
- LibSDL Research
- Module Interactions
- Working with Raylib and SSH
- raylib
- GDL
-
Linking the Libzip and Json C to chiventure on CSIL machines
-
Lua
-
NPC
- Dependencies: Player class, Open world, Battle
- Action Documentation
- Design Document for NPC Generation in Openworld
- Design and Planning
- Establishing Dependencies
- Implementation of Custom Scripts
- Independent Feature: NPC Movement Design Document
- Player Interaction Design and Planning
- Dialogue
- Design Document for NPC Dialogue and Action Implementation
- Loading NPCs from WDL Files
- NPC Battle Integration Design Document
- NPC Battle Integration Changes Design Document
-
Open World
- Autogeneration and Game State
- Deciding an integration approach
- Designing approach for static integration into chiventure
- Feature Wishlist
- Generation Module Design layout
- Potential connections to the rest of chiventure
- Single Room Generation Module Design
- Source Document
- User Stories
- World Generation Algorithm Plan
- Loading OpenWorld Attribute from WDL
-
Player Class
-
Player
-
Quests
-
Rooms
-
Skill Trees
- Avoiding soft locks in skill tree integration
- Components of Exemplary Skill Trees
- Design Document and Interface Guide
- Environment interactions based on skill characteristics
- Integrating complex skill (combined, random, sequential, etc.) implementation
- Integration of a Leveling System
- Potential Integration with existing WDL
- Research on game balancing in regards to skill trees
- Research on skill tree support in modern day game engines
- SkillTree Wiki Summary
- Skilltree "effect" implementation and roadmap
- Summary of md doc file for skilltrees
- Design ideas in connection to other features
- Summary of Skill Tree Integration 2022
- The Difficulty of the Reading the World
- Complex Skills Summary
-
Sound
-
Stats
-
WDL