Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CONTENT/FEATURE: Missions & Dialogs Overhaul + Los Gerudos Missions Set Progress #96

Merged
merged 13 commits into from
Apr 23, 2024

Conversation

OcelotWalrus
Copy link
Member

@OcelotWalrus OcelotWalrus commented Apr 21, 2024

CONTENT (data addon)/BALANCE/FEATURE/BUGFIX

Summary

This PR first expands the condition statements that can be found in missions and dialogs, by adding three new possibilities: has items, random, has missions active and has missions offered, which expands the capabilities of missions and their dialogs. In addition to that, dialog conversations were given 5 new commands: accept(), defer(), decline(), die(), display-scene(<name at imgs directory>). And finally, missions were given a new trigger: on accept.

This PR also fixes many encountered bugs during its developing; and finally, it expands the Los Gerudos missions set by adding 1 new mission, 1 new character/npc, 2 new map zone and some more back lore to the game! The PR also brings visual changes to the game: from now on, every number that's being printed to the console using the cout method, will be formatted to have thousands separators.


In plus of the addition of new features to the missions and dialogs, this PR introduces a new data type: the event:

<event id>:
  repeat: <true | false(bool)>
  source:  # the more you have keys, the more checks there are
    map point: <map point ids(list)>
    map zone: <map zone ids(list)>
    region: <map zone types(list)>
    date: <MM-DD-YY(str)>
    player attributes: <custom attributes(list)>
    has items: <items id(list)>
    has missions offered: <missions id(list)>
    has missions active: <missions id(list)>
    random: <percentage(float)>
  actions:
    fail mission: <mission ids(list)>
    run dialog: <dialog id(str)>
    add attributes: <custom attributes(list)>
    give item: <item ids(list)>
    remove item: <item ids(list)>
    player health: <health change(int)>
    player max health: <health change(int)>
    player gold: <gold change(float)>
    player exp: <exp change(float)>
    enemy spawn: <enemy pool list(str)>
    use drink: <drink ids(list)>
    add to diary:
      known zones: <map zones id(list)>
      known enemies: <enemies id(list)>
      known npcs: <npcs id(list)>
    remove to diary:
      known zones: <map zones id(list)>
      known enemies: <enemies id(list)>
      known npcs: <npcs id(list)>
    run scripts:
      - script 0:
        arguments: <arguments(list)>
        script name: <script in scripts dir(str)>
      - script 1:
      [...]

Event are similar to dialogs, only they don't display any conversation, but they can be triggered using complex attributes to determine a map point. The wiki page can be found here.

Usage examples

I think the mission and dialog overhauls are pretty straightforward, but ask anything that comes to your mind!

Testing Done

Tested pretty much every case scenario.

Testing Method

To test the new mission possibilities, download the BOW-Progression mod and create you own simple missions and dialogs to test it, using the BOW data syntax.

In order to test the new mission, you'll need to load the game data of this PR into your game data folder, with the schemas updated. Then go to the mission offering coordinates(-39, 10) and refresh the game until the offer dialog displays.

Performance Impact

N/A

Check-List

  • Review my own code
  • Fix the workflow checks
  • Update wiki
  • Add the new event data type
  • Update BOW-Progression repo
  • Finish new mission

@OcelotWalrus OcelotWalrus added enhancement New feature or request help wanted Extra attention is needed content Adds data to the game vanilla stuff. big This is a big PR/issue labels Apr 21, 2024
@OcelotWalrus OcelotWalrus added this to the New Features milestone Apr 21, 2024
@OcelotWalrus OcelotWalrus self-assigned this Apr 21, 2024
@OcelotWalrus OcelotWalrus added documentation Improvements or additions to documentation mechanics Things dealing with the mechanics & code of how the game works submodule updates A PR that updates the submodules of the repository huge This is a humongous PR/issue and removed big This is a big PR/issue labels Apr 22, 2024
@OcelotWalrus OcelotWalrus marked this pull request as draft April 22, 2024 10:42
@OcelotWalrus OcelotWalrus marked this pull request as ready for review April 23, 2024 09:18
@OcelotWalrus
Copy link
Member Author

Hey @lumbar527! Would you mind giving this PR a small review? Thanks.

data/dialog.yaml Outdated Show resolved Hide resolved
data/dialog.yaml Outdated Show resolved Hide resolved
data/mission.yaml Outdated Show resolved Hide resolved
OcelotWalrus and others added 3 commits April 23, 2024 16:10
Co-authored-by: lumbar527 <125756761+lumbar527@users.noreply.github.com>
Co-authored-by: lumbar527 <125756761+lumbar527@users.noreply.github.com>
Co-authored-by: lumbar527 <125756761+lumbar527@users.noreply.github.com>
@OcelotWalrus OcelotWalrus merged commit ce16762 into master Apr 23, 2024
12 checks passed
@OcelotWalrus OcelotWalrus deleted the patch-and-mission-set branch April 23, 2024 16:44
@OcelotWalrus OcelotWalrus linked an issue Apr 25, 2024 that may be closed by this pull request
6 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
content Adds data to the game vanilla stuff. documentation Improvements or additions to documentation enhancement New feature or request help wanted Extra attention is needed huge This is a humongous PR/issue mechanics Things dealing with the mechanics & code of how the game works submodule updates A PR that updates the submodules of the repository
Projects
None yet
Development

Successfully merging this pull request may close these issues.

CONTENT: Los Gerudos Missions Set
2 participants