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

[Enhancement] Player-affecting Events #275

Open
P-Star7 opened this issue Feb 5, 2022 · 2 comments
Open

[Enhancement] Player-affecting Events #275

P-Star7 opened this issue Feb 5, 2022 · 2 comments
Labels
enhancement New quality-of-life feature or request (does not change gameplay)

Comments

@P-Star7
Copy link
Contributor

P-Star7 commented Feb 5, 2022

  1. An event function that changes the player 1's current character, and a function that changes the player 2's current character. It is simply a selection of None, Mario, Luigi, Peach, Toad, or Link for each function.

  2. Similar to issues (SMBX64-Extended) Episode-wide Named Event Triggering #100 and (SMBX64-Extended) Event disabling by other events #101 , this second feature is something that is required to be stored in the save file data, although only five variables. Or it can use one variable that is bitwise, see below.
    This is an event function that can enable or disable playable characters for the save file. This means that the user may select these characters on the save file selection, or change to them on the world map while paused. However, it does not "automatically switch" the playable character, similarly to how playing as a character using a character change block in an SMBX64 episode does not unlock them in the save file. To change the character AND disable a character at the same time, the user will pair it with the above event function.
    This function should probably be stored in each event as a bitwise operator so it is only stored as one value per event. For example,
    0=None (if the event's function has this value, no change is applied to the save file, and all SMBX64 events are converted to defaultly use this for example)
    1=Mario
    2=Luigi
    4=Peach
    8=Toad
    16=Link
    So if an event's unlocked characters value is 20, we and the runtime see that this event ENABLES Peach and Link in the save file and DISABLES Mario, Luigi, and Toad in the save file, due to 20 being the unique sum of 4 (Peach) and 16 (Link). If a 6th character ever gets added, their value would be 32, and the 7th would be 64... etc.

I have always disliked SMBX64 episodes that can only unlock characters via star doors or map locations; this means that the player has to go to that location with the player block if they want to use that character again, every time they resume their saved game! This is much more elegant and also allows for removing characters from the selection, such as for plot-related reasons.

@0lhi
Copy link
Collaborator

0lhi commented Feb 5, 2022

I agree with your idea, but not with your suggested implementation. Instead, I think it should be done like this:

  1. Locked/unlocked Characters should be determined by compat.ini. That will allow it to be configurable on a per-level basis.
  2. Events should be able to change the compat.ini entry of a level/episode. It is already planned to allow compai.ini files inside the Save Folder to overwrite their corresponding episode/level configurations, though I have yet to open an issue for that. Gonna aim to open it next week at the latest.
  3. The Character Blocks could receive a special value. Adding them to new episodes will automatically activate the event, unless the designer opts out. In old episodes it will not enable the event by default, unless the compat.ini entry enable-character-block-unlock is set to true. That will allow to enhance old episodes like "Yoshi's Archipelago" without editing the files directly, by adding it to #54.

@ChristianSilvermoon
Copy link

I agree with your idea, but not with your suggested implementation. Instead, I think it should be done like this:

1. Locked/unlocked Characters should be determined by _compat.ini_. That will allow it to be configurable on a per-level basis.

2. Events should be able to change the _compat.ini_ entry of a level/episode. It is already planned to allow compai.ini files inside the Save Folder to overwrite their corresponding episode/level configurations, though I have yet to open an issue for that. Gonna aim to open it next week at the latest.

3. The Character Blocks could receive a special value. Adding them to new episodes will automatically activate the event, unless the designer opts out. In old episodes it will not enable the event by default, unless the compat.ini entry `enable-character-block-unlock` is set to true. That will allow to enhance old episodes like "_Yoshi's Archipelago_" without editing the files directly, by adding it to [#54](https://github.com/Wohlstand/TheXTech/issues/54).

I do like the idea of per-level control, but I strongly feel like it belongs in the actual save file and not under a seperate compat.ini, which wasn't really intended for storing data specific to a play-through, whereas the save data file is.

@Wohlstand Wohlstand added the enhancement New quality-of-life feature or request (does not change gameplay) label Feb 7, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New quality-of-life feature or request (does not change gameplay)
Projects
None yet
Development

No branches or pull requests

4 participants