Reindeer games additions (#33)

* Remove hat from darunia

* Update some stuffs

* Remove custom collectible (in favor of CustomItem)

* Roguelike

Co-authored-by: Caladius <Caladius@users.noreply.github.com>
Co-authored-by: Eblo <7004497+Eblo@users.noreply.github.com>

* Fix a bunch of stuff

* Persist roguelike data

* Experimental anchor tweaks

* Stop freeze from scrubs & fix pablo cvar

---------

Co-authored-by: Caladius <Caladius@users.noreply.github.com>
Co-authored-by: Eblo <7004497+Eblo@users.noreply.github.com>
This commit is contained in:
Garrett Cox
2025-12-06 10:45:43 -06:00
committed by GitHub
parent e3029a834b
commit f5af415098
116 changed files with 4375 additions and 474 deletions
+4 -4
View File
@@ -459,10 +459,10 @@ typedef enum {
/* 0x79 */ GI_NUT_UPGRADE_30,
/* 0x7A */ GI_NUT_UPGRADE_40,
/* 0x7B */ GI_BULLET_BAG_50,
/* 0x7C */ GI_SHIP, // SOH [Enhancement] Added to enable custom item gives
/* 0x7D */ GI_ICE_TRAP, // freezes link when opened from a chest
/* 0x7E */ GI_TEXT_0, // no model appears over Link, shows text id 0 (pocket egg)
/* 0x7F */ GI_MAX
/* 0x7C */ GI_ICE_TRAP, // freezes link when opened from a chest
/* 0x7D */ GI_TEXT_0, // no model appears over Link, shows text id 0 (pocket egg)
/* 0x7E */ GI_SHIP, // SOH [Enhancement] Added to enable custom item gives
/* 0x7E */ GI_MAX
} GetItemID;
typedef enum {
+13
View File
@@ -8,6 +8,7 @@
#include "soh/Enhancements/gameplaystats.h"
#include "soh/Enhancements/randomizer/randomizer_entrance.h"
#include "soh/Enhancements/boss-rush/BossRush.h"
#include "soh/Enhancements/RogueLike/Types.h"
#define FULL_HEART_HEALTH 0x10
#define STARTING_HEALTH (3 * FULL_HEART_HEALTH)
@@ -73,6 +74,7 @@ typedef enum { // Pre-existing IDs for save sections in base code
SECTION_ID_SCENES,
SECTION_ID_TRACKER_DATA,
SECTION_ID_ARCHIPELAGO,
SECTION_ID_ROGUELIKE,
SECTION_ID_MAX
} SaveFuncIDs;
@@ -167,6 +169,14 @@ typedef struct ShipRandomizerSaveContextData {
u8 triforcePiecesCollected;
} ShipRandomizerSaveContextData;
typedef struct ShipRogueLikeSaveContextData {
u32 stats[RL_MAX];
u32 xp;
u32 difficulty;
uint64_t lastActivity;
RogueLikeQuestObject quests[RL_QUEST_ID_MAX];
} ShipRogueLikeSaveContextData;
typedef struct ShipBossRushSaveContextData {
u32 isPaused;
u8 options[BR_OPTIONS_MAX];
@@ -191,6 +201,7 @@ typedef struct ShipQuestSpecificSaveContextData {
ShipRandomizerSaveContextData randomizer;
ShipBossRushSaveContextData bossRush;
ShipArchipelagoSaveContextData archipelago;
ShipRogueLikeSaveContextData rogueLike;
} ShipQuestSpecificSaveContextData;
typedef struct ShipQuestSaveContextData {
@@ -335,6 +346,7 @@ typedef enum {
/* 02 */ QUEST_RANDOMIZER,
/* 03 */ QUEST_BOSSRUSH,
/* 04 */ QUEST_ARCHIPELAGO,
/* 04 */ QUEST_ROGUELIKE,
} Quest;
#define IS_VANILLA (gSaveContext.ship.quest.id == QUEST_NORMAL)
@@ -342,6 +354,7 @@ typedef enum {
#define IS_RANDO (gSaveContext.ship.quest.id == QUEST_RANDOMIZER)
#define IS_BOSS_RUSH (gSaveContext.ship.quest.id == QUEST_BOSSRUSH)
#define IS_ARCHIPELAGO (gSaveContext.ship.quest.data.archipelago.isArchipelago == 1)
#define IS_ROGUELIKE (gSaveContext.ship.quest.id == QUEST_ROGUELIKE)
typedef enum {
/* 0x00 */ BTN_ENABLED,