Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
300 commits
Select commit Hold shift + click to select a range
9709ec4
All AP save data initialized
aMannus May 23, 2025
9533de7
Merge branch 'pr/64' into aManchipelago
aMannus May 23, 2025
0a1a108
Fix cmake for non-linux
aMannus May 23, 2025
c15abdc
Init archipelago data, place different AP item types
aMannus May 23, 2025
b2c2be0
Added Item Synch on game load
jeromkiller May 23, 2025
a9e99e4
Removed IS_ARCHIPELAGO defines
jeromkiller May 23, 2025
ea95ca0
Enabled Connecting and check synching when already in game
jeromkiller May 23, 2025
ad0a73a
Merge pull request #66 from jeromkiller/AddArchipelagoClientLib
aMannus May 24, 2025
2b6f813
Hard code archipelago options
aMannus May 24, 2025
ab307fa
Beginning of retrieving slot data (deathlink), various fixes
aMannus May 25, 2025
603c163
Rework Item Queue, Repeated connections should no longer give multipl…
jeromkiller May 25, 2025
e6fec93
Load in new shuffle options data
aMannus May 25, 2025
d5f3954
Show item name and player in ap item pickup notification
aMannus May 26, 2025
ba1af32
Switch to outline-less ap item models
aMannus May 26, 2025
66937c8
Add icons to ap item notifications
aMannus May 26, 2025
f6359f1
Added opening of local checks when synchinc locations
jeromkiller May 26, 2025
5be1a2d
Merge remote-tracking branch 'fork/aManchipelago' into AddArchipelago…
jeromkiller May 26, 2025
dbf8503
Added text recieved from AP to the log
jeromkiller May 26, 2025
44be44b
Merge pull request #68 from jeromkiller/AddArchipelagoClientLib
aMannus May 26, 2025
36cf22c
Added some pretty (arbitrary) collors to the archipelago log
jeromkiller May 27, 2025
6662818
Filtering out already locally checked locations from recieving locati…
jeromkiller May 27, 2025
9d3ea50
Implement rewards gcbk settings & fix shopsanity
aMannus May 27, 2025
d8a9355
Merge pull request #69 from jeromkiller/AddArchipelagoClientLib
aMannus May 27, 2025
7a8a5a1
Don't Send or queue Unknown checks. Todo, figure out what triggers se…
jeromkiller May 28, 2025
d9d4535
Corrected spelling on receive
jeromkiller May 28, 2025
747da8d
Added auto disconnect if loading a save accosiated with the wrong slot
jeromkiller May 28, 2025
cc40d3c
Moved hooks to Registration function and improved item queue filtering
jeromkiller May 28, 2025
422b7d1
Added proper archipelago textclient colors to the console
jeromkiller May 28, 2025
7d49cb1
Refactor so apclientpp.h doesn't have to be included a second time
jeromkiller May 28, 2025
497700f
Added textbox to console window for chatting and server commands
jeromkiller May 29, 2025
03c9348
Added Error messages when attempting to send messages while disconnec…
jeromkiller May 30, 2025
bbfcf87
Merge pull request #70 from jeromkiller/AddArchipelagoClientLib
aMannus May 30, 2025
11d055c
Fix windows build
aMannus May 30, 2025
a2e7b21
Fixed quote typo
jeromkiller May 30, 2025
df525c2
Merge branch 'develop' into aManchipelago
aMannus May 30, 2025
bf85a85
Merge remote-tracking branch 'fork/aManchipelago' into AddArchipelago…
jeromkiller May 30, 2025
b6990d9
Added Rounded corners to text entry field
jeromkiller Jun 2, 2025
53d6374
Fixed issue where client crashes when collecting item while offline
jeromkiller Jun 2, 2025
5e821ca
Fixed items from other games not scouting and recieving right
jeromkiller Jun 2, 2025
fb0bf1b
Added setting of flags when externaly checking
jeromkiller Jun 4, 2025
a650338
Merge branch 'develop' into aManchipelago
aMannus Jun 6, 2025
102585c
Merge pull request #71 from jeromkiller/AddArchipelagoClientLib
aMannus Jun 6, 2025
c1ac635
Added PostLoadGame hook, so item synching hooks can get fired after t…
jeromkiller Jun 6, 2025
29a6619
Merge branch 'aManchipelago' into AddArchipelagoClientLib
jeromkiller Jun 8, 2025
0fe29b4
Added menus for creating an archipelago file
jeromkiller Jun 11, 2025
1fe3871
Added automatic move to name entry after connecting and scouting
jeromkiller Jun 12, 2025
456a736
Merge branch 'develop' into aManchipelago
aMannus Jun 29, 2025
c2788bd
Fix build after develop merge
aMannus Jun 29, 2025
dc76883
Implement get item messages
aMannus Jun 29, 2025
2e496d1
Merge pull request #72 from jeromkiller/AddArchipelagoClientLib
aMannus Jun 29, 2025
ae17e57
Hard code custom prices for scrubs/shops for now
aMannus Jun 29, 2025
abe682e
clang-format
aMannus Jun 30, 2025
786b748
Added Disconnecting from the server when selecting new game and backi…
jeromkiller Jun 30, 2025
3e06696
Fix spoiler loading, setting more defaults, archi console crash fix +…
aMannus Jun 30, 2025
cd90410
Merge branch 'pr/73' into aManchipelago-QuestSelect
aMannus Jul 1, 2025
0e9a382
More specific checks for skipping GIs for special cases
aMannus Jul 1, 2025
7887d88
Quest select changes
aMannus Jul 1, 2025
d107039
Merge branch 'aManchipelago-QuestSelect' into aManchipelago
aMannus Jul 1, 2025
53a1aa3
Remove archi debug mode
aMannus Jul 1, 2025
53118cc
Improvements in connection UI + random cleanup
aMannus Jul 1, 2025
500481f
Rewrite notifications to eliminate flicker with many in the queue
aMannus Jul 2, 2025
c06f7bd
Implement archi and hide rando hash in archi save
aMannus Jul 2, 2025
427b5aa
Fix archi connection cvar & stop normal rando gen with archi
aMannus Jul 2, 2025
50af166
Daeth link done
aMannus Jul 4, 2025
4aacc1b
Temporarily disable skull token flag setting
aMannus Jul 4, 2025
1b9e03b
Merge branch 'develop' into aManchipelago
aMannus Jul 4, 2025
59993c7
Force on skip child zelda
aMannus Jul 4, 2025
524a26f
Hopefully fix linux + clang_format
aMannus Jul 4, 2025
5ebc20c
linxu pls?
aMannus Jul 4, 2025
33bdd06
typo fix
aMannus Jul 4, 2025
80b0d03
Fix death link crash
aMannus Jul 5, 2025
b700e0c
Fix market death crash & no logic parse, limit archi console lines
aMannus Jul 6, 2025
d53afb5
Changed AP console text colors to enums
jeromkiller Jul 7, 2025
6df2fd9
Fixed crash on game completion without being connected
jeromkiller Jul 9, 2025
e272300
Fixed crash when recieving a bounce without any tags
jeromkiller Jul 10, 2025
9fbf67f
Added connection status to archi file select
jeromkiller Jul 15, 2025
79dd481
Added autoconnect on file load
jeromkiller Jul 16, 2025
70241ab
Attempt at buildfix for windows runner
jeromkiller Jul 16, 2025
0101a4d
Another attempted buildfix for windows runner
jeromkiller Jul 17, 2025
4f1ebbc
Automatically open the connection settings when failing to autoconnect
jeromkiller Jul 18, 2025
7859b54
Added Archipelago connection status in game, todo refactor and clean up
jeromkiller Jul 22, 2025
a4d0f10
Merge branch 'develop' into aManchipelago
aMannus Jul 25, 2025
54a3a47
Merge pull request #74 from jeromkiller/AddArchipelagoClientLib
aMannus Jul 25, 2025
9f11e1f
Add support for a ton more ap options
aMannus Jul 28, 2025
72966c4
Fix ap parse error
aMannus Jul 28, 2025
761f850
Fix memory bug
aMannus Jul 28, 2025
075bce4
Misc bug fixes
aMannus Jul 29, 2025
e93dc76
Fixed item queue issue caused by soft resetting the game
jeromkiller Jul 30, 2025
a2e96ac
Merge pull request #75 from jeromkiller/AddArchipelagoClientLib
aMannus Jul 30, 2025
c64c8f6
Move connected icon to corner, fix cutoff logo
aMannus Jul 30, 2025
f1ba0fe
Fix excluded locs, ap icon in notifs, death link while connecting
aMannus Jul 30, 2025
e53d29e
Revert readme
aMannus Jul 30, 2025
00a70ea
clang format
aMannus Jul 31, 2025
0d5ce9c
Fixed miscolored Archi logo
jeromkiller Aug 1, 2025
d55a9f4
Remove leftover doc
aMannus Aug 2, 2025
e12da0f
Merge pull request #77 from jeromkiller/Harkipellago
aMannus Aug 2, 2025
138f2ec
Merge branch 'aManchipelago' of https://github.com/aMannus/Shipwright…
aMannus Aug 2, 2025
9b710c7
clang format
aMannus Aug 2, 2025
e204400
Changed connection flags to support starting items
jeromkiller Aug 4, 2025
799e2c2
Cleared up error messages around failed connections
jeromkiller Aug 4, 2025
a726609
Added queueing up song of time check when getting the ocarina of time…
jeromkiller Aug 4, 2025
48e869b
Downloading cert store at build time
jeromkiller Aug 6, 2025
bd90e56
Adding cert to packages
jeromkiller Aug 6, 2025
9774826
Attempting to load cert from package
jeromkiller Aug 6, 2025
f1a074d
Fix jabu jabu option
aMannus Aug 6, 2025
fc80fb5
Merge pull request #78 from jeromkiller/Harkipellago
aMannus Aug 6, 2025
58a5640
Clang format
aMannus Aug 6, 2025
9090e80
temporarily force `BUILD_REMOTE_CONTROL` on
briaguya0 Sep 27, 2025
2a84d0a
valijson from package managers
briaguya0 Sep 27, 2025
b678de6
fetchcontent asio
briaguya0 Sep 27, 2025
83d809b
websocketpp from package managers
briaguya0 Sep 27, 2025
eec2ae5
fetchcontent wswrap
briaguya0 Sep 28, 2025
59dc487
fetchcontent apclientpp
briaguya0 Sep 28, 2025
582bdbf
Follow app directory for `uuid` (#79)
Sirius902 Sep 29, 2025
8507431
Merge pull request #81 from briaguya-ai/archi-remove-checked-in-deps
aMannus Sep 29, 2025
fb84317
Made logic setting glitchless and added tressanity reading from slot …
Tzuf23 Oct 9, 2025
95555a4
Merge pull request #83 from Tzuf23/aManchipelago
aMannus Oct 10, 2025
5492cdc
Merge branch 'develop' into aManchipelago
aMannus Oct 15, 2025
a5277f7
Update option parsing
aMannus Oct 15, 2025
b9f4819
Fix build
aMannus Oct 15, 2025
ab00eb9
Parsing fixes and more options
aMannus Oct 16, 2025
786f0fe
Add shop item and price parsing
aMannus Oct 16, 2025
c09ea6b
AP ice trap models and tricknames
aMannus Oct 17, 2025
6d624a1
Implement random scrub prices
aMannus Oct 17, 2025
71f0972
Specify required AP version number
aMannus Oct 17, 2025
9a3b2f8
Update triforce hunt option parsing
aMannus Oct 18, 2025
e4c9bbf
Add item and player names on AP shop items
aMannus Oct 18, 2025
5c0517a
Merge branch 'develop' into aManchipelago
aMannus Oct 18, 2025
cbf847c
Add new RSK's coming from develop
aMannus Oct 18, 2025
49c74c7
clang format
aMannus Oct 18, 2025
fbd21bb
Add apworld version check on connecting
aMannus Oct 18, 2025
433f4b7
Fix triforce hunt count
aMannus Oct 20, 2025
9228f4b
Fix starting age
aMannus Oct 20, 2025
a18cc8f
Merge branch 'develop' into aManchipelago
aMannus Oct 20, 2025
a85856e
clang format
aMannus Oct 20, 2025
37409ca
Make linux happy, hopefully
aMannus Oct 20, 2025
bae8deb
Fix bad merge conflict resolution
aMannus Oct 20, 2025
5e016d6
Push version change
aMannus Oct 20, 2025
de5972d
Update version to 0.0.3
aMannus Oct 21, 2025
a8379cc
Reset tricks on AP parse
aMannus Oct 21, 2025
956188e
Fix excluded location seed bleed
aMannus Oct 21, 2025
243acd2
Version to 0.0.4
aMannus Oct 22, 2025
d829343
Handle receiving iron boots chest location externally
aMannus Oct 29, 2025
c1f0f2a
Create static hints for AP saves
aMannus Oct 29, 2025
a589259
Don't draw overhead items during GI animation
aMannus Oct 30, 2025
f99f03a
Merge branch 'develop' into aManchipelago
aMannus Oct 30, 2025
a03ba65
Update version to 0.0.5
aMannus Oct 30, 2025
841caab
Add modal to teach player about presets
aMannus Oct 30, 2025
22b7c34
Add preset info modal to archi save creation
aMannus Oct 30, 2025
cd18694
Fix unique handling of OoT and iron boots and add bow chest
aMannus Oct 30, 2025
338ed1a
Oops
aMannus Oct 30, 2025
3b80558
Merge pull request #85 from HarbourMasters/develop-copper
aMannus Nov 1, 2025
67a8816
Merge branch 'develop' into aManchipelago
aMannus Nov 1, 2025
0850661
German and french GI message fix
aMannus Nov 1, 2025
31e2b2a
Update version to 1.0.0
aMannus Nov 1, 2025
2683698
clang format
aMannus Nov 1, 2025
8ce808f
Fix gold skull locations when not shuffled
aMannus Nov 2, 2025
3050d94
Merge branch 'develop' of github.com:HarbourMasters/Shipwright into a…
garrettjoecox Nov 16, 2025
69ef915
Force disable Anchor syncing when in Archi save file
Patrick12115 Nov 19, 2025
ca1aa48
Make Extra Traps fully random when in Archi save file
Patrick12115 Nov 19, 2025
baa66d6
Add Entrance Shuffle Bleed Through from built in rando
Patrick12115 Nov 19, 2025
3d4270c
Missed parenthesis and clang
Patrick12115 Nov 20, 2025
a6830f2
Version Bump to 0.1.0
Patrick12115 Nov 19, 2025
bb497e3
Initial re-application of let-it-snow.
Malkierian Oct 31, 2025
1607ad8
Add holiday menu and various examples
garrettjoecox Nov 1, 2024
0488f35
Fix build issue (#4504)
garrettjoecox Nov 1, 2024
10f8768
Add ganon dating sim PoC (#4510)
garrettjoecox Nov 2, 2024
2e8fc88
Restore VB from merge
Malkierian Nov 21, 2025
2ff9fcc
Fix christmas tree messages
garrettjoecox Nov 13, 2024
99585ff
Holiday Fever (#4551)
Caladius Nov 16, 2024
ea163f1
Boulder Shuffle - Shuffles all Boulders randomly (#4554)
Caladius Nov 19, 2024
6c19413
Shiny enemies (#4570)
Pepe20129 Nov 21, 2024
e01889e
Holiday Modding Event - Bomb Arrows (#4573)
lilDavid Nov 23, 2024
bccf43f
Rocs Feather - LetItSnow Edition - No Save Edition - Limited Edition …
aMannus Nov 24, 2024
ffa470f
Restore VB from rebase.
Malkierian Nov 21, 2025
8bb5d1f
Ornament Exchange (#4582)
Caladius Dec 2, 2024
045de62
Add custom collectible thing
garrettjoecox Dec 5, 2024
06aefb3
let-it-snow: Snow Golems (Skeleton override) (#4695)
Archez Dec 16, 2024
d37a68c
Various cleanup
garrettjoecox Dec 16, 2024
d48461f
[Holiday] Custom rainbows (#4698)
lilacLunatic Dec 17, 2024
08fd5ff
Clean up rebase errors.
Malkierian Nov 21, 2025
aa119ce
Convert all menu code to new menu, convert Holiday structure to ShipI…
Malkierian Nov 23, 2025
dd9d2fa
Remove duplicate sync flags check box
Patrick12115 Nov 24, 2025
7b18202
Block Syncing Items and Flags when playing Archi (#31)
Patrick12115 Nov 30, 2025
42c9957
Seems to fix the cvar registrations (#32)
Patrick12115 Nov 30, 2025
3a9c3ae
Add button to rando all rando settings
garrettjoecox Dec 2, 2025
e3029a8
Merge branch 'develop' of github.com:Malkierian/Shipwright into reind…
Malkierian Dec 3, 2025
0941505
Merge branch 'develop' into Anchorpelago
Patrick12115 Dec 4, 2025
205eea4
Version Bump to 0.1.1
Patrick12115 Dec 4, 2025
f5af415
Reindeer games additions (#33)
garrettjoecox Dec 6, 2025
edbef01
Fix bunnyhood (#34)
garrettjoecox Dec 6, 2025
1aa04ee
Fix infinite search for pos (#35)
garrettjoecox Dec 6, 2025
53162fd
Make Extra Traps fully random when in Archi save file (#36)
Patrick12115 Dec 7, 2025
2b9acd8
More last minute fixes (#37)
garrettjoecox Dec 7, 2025
be7cd12
Change version.
Malkierian Dec 7, 2025
7b7c2e0
Fix BGS issue & send room update if enabling AP (#6010)
garrettjoecox Dec 7, 2025
0ff4036
Merge branch 'develop' into Custom-Holiday-Build
Patrick12115 Dec 7, 2025
962b6e3
Merge remote-tracking branch 'upstream/reindeer-games' into Custom-Ho…
Patrick12115 Dec 7, 2025
893c93b
Add Cvar around sand and bomb dust and add Advance Teleport Trap entr…
Patrick12115 Dec 7, 2025
06bdaac
Add Randomized Locked Doors for Dungeons
Patrick12115 Dec 8, 2025
4ce2ecf
Add Progressive Bombchu Bag for AP and include new AP world
Patrick12115 Dec 8, 2025
9dd9b72
Put more Holiday enhancements behind toggles
Patrick12115 Dec 9, 2025
3563f5e
Clang it
Patrick12115 Dec 9, 2025
0aabbb0
Use custom GFX patching for TP/Ornaments
Patrick12115 Dec 9, 2025
7a65215
Merge branch 'pr/6001' into Custom-Holiday-Build
Patrick12115 Dec 9, 2025
0289b6d
Add ability to lock settings for Randomize All Settings
Patrick12115 Dec 10, 2025
338eca7
Add's toggle for Entrances on Signs
Patrick12115 Dec 10, 2025
a98838d
Added Inspect's Glitch Shuffle
Patrick12115 Dec 10, 2025
dbd9d12
Update Anchor Sync prevention when in AP
Patrick12115 Dec 10, 2025
f83077d
Emote PoC
garrettjoecox Dec 10, 2025
851be0b
Merge branch 'pr/6013' into Custom-Holiday-Build
Patrick12115 Dec 10, 2025
afa44cc
Fix Shuffle Grass Typo
Patrick12115 Dec 11, 2025
41055e3
Make it configurable
garrettjoecox Dec 12, 2025
5b9eb07
Add search
garrettjoecox Dec 12, 2025
8a0878e
Advanced Skip GI Categories w/ dynamic Ice Trap GI Skip
Patrick12115 Dec 13, 2025
068a6fb
Merge branch 'pr/6013' into Custom-Holiday-Build
Patrick12115 Dec 13, 2025
ca5c40e
Move Carpenter's Son back to Tree
Patrick12115 Dec 14, 2025
da5b924
Expand Possible Ice Trap Pool
Patrick12115 Dec 14, 2025
50c6dfd
Clang It
Patrick12115 Dec 14, 2025
a5b04ea
Change Age Trap added to Extra Traps
Patrick12115 Dec 14, 2025
0f85d91
Fix Skip GI for various items
Patrick12115 Dec 21, 2025
3272739
Add Search Function to the Plandomizer
Patrick12115 Dec 21, 2025
c2013a5
Clang it
Patrick12115 Dec 21, 2025
17fd60a
Fix syncing bombchuUpgradeLevel
Patrick12115 Jan 3, 2026
0cfd4b8
Add bounce off walls toggle
garrettjoecox Jan 6, 2026
084e11c
Chaos Mode (Offline CC)
Patrick12115 Jan 14, 2026
2db549e
Fix GI Skips and add missing ones
Patrick12115 Jan 14, 2026
6de2740
Add BtnSelector stuff from 2ship
Patrick12115 Jan 18, 2026
02e280c
Some tweaks to anchor (#6166)
garrettjoecox Jan 19, 2026
7bea36e
Save Editor Flag Search Boxes
Patrick12115 Jan 19, 2026
64717c3
Add Toggle Menu button combo and toggle to turn off junk notifications
Patrick12115 Jan 21, 2026
e2e14fa
Add more items to the plentiful pool
Patrick12115 Jan 21, 2026
66b312f
Add CVar Binds with button combo
Patrick12115 Jan 23, 2026
cfdb3fd
Add proper theming to missing menus
Patrick12115 Jan 23, 2026
ed452e9
Add fix for skipped checks and skip warp song cutscene with misc skip
Patrick12115 Jan 23, 2026
edaec53
Clang it
Patrick12115 Jan 23, 2026
ccad3e0
Linux is picky apparently
Patrick12115 Jan 23, 2026
02607b9
Glitch-Aiding CS Tweaks/Fixes/Addition (#6192)
A-Green-Spoon Jan 22, 2026
bb23908
Void Button Combo
Patrick12115 Jan 25, 2026
152ce48
Add back the clear button on check tracker
Patrick12115 Jan 25, 2026
e594086
[Enhancement] Arrow Cycle (#6105)
mckinlee Jan 5, 2026
fe882f6
Add unique build name
Patrick12115 Jan 26, 2026
30d070e
Remove old SPDLOG's
Patrick12115 Jan 26, 2026
b070ef1
Recalculate Available Checks from Current Region (#6165)
xxAtrain223 Jan 26, 2026
7a8ca65
Clang it
Patrick12115 Jan 30, 2026
6caaed7
Draw notifications differently so they don't draw over imgui windows
Patrick12115 Jan 31, 2026
ed8da2d
Add option to split Gameplay Timer and fix color when game complete i…
Caladius Feb 13, 2026
629fcf7
clang
Caladius Feb 13, 2026
b1f726c
Merge pull request #24 from Caladius/TheHeckinBuild-timers
Patrick12115 Feb 14, 2026
f601e35
Fix Notification spacing
Patrick12115 Feb 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/workflows/apt-deps.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
libusb-dev libusb-1.0-0-dev libsdl2-dev libsdl2-net-dev libpng-dev libglew-dev nlohmann-json3-dev libtinyxml2-dev libspdlog-dev ninja-build libogg-dev libopus-dev opus-tools libopusfile-dev libvorbis-dev libespeak-ng-dev
libusb-dev libusb-1.0-0-dev libsdl2-dev libsdl2-net-dev libpng-dev libglew-dev nlohmann-json3-dev libtinyxml2-dev libspdlog-dev ninja-build libogg-dev libopus-dev opus-tools libopusfile-dev libvorbis-dev libespeak-ng-dev libwebsocketpp-dev
108 changes: 33 additions & 75 deletions .github/workflows/generate-builds.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,81 +74,7 @@ jobs:
path: soh.o2r
retention-days: 3

build-macos:
needs: generate-soh-otr
runs-on: macos-14
steps:
- name: Git Checkout
uses: actions/checkout@v4
with:
submodules: true
- name: Configure ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
create-symlink: true
save: ${{ github.ref_name == github.event.repository.default_branch }}
key: ${{ runner.os }}-14-ccache-${{ github.ref }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-14-ccache-${{ github.ref }}
${{ runner.os }}-14-ccache
# Needed to apply sudo for macports cache restore
- name: Install gtar wrapper
run: |
sudo mv /opt/homebrew/bin/gtar /opt/homebrew/bin/gtar.orig
sudo cp .github/workflows/gtar /opt/homebrew/bin/gtar
sudo chmod +x /opt/homebrew/bin/gtar
- name: Restore Cached MacPorts
id: restore-cache-macports
uses: actions/cache/restore@v4
with:
key: ${{ runner.os }}-14-macports-${{ hashFiles('.github/workflows/macports-deps.txt') }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-14-macports-${{ hashFiles('.github/workflows/macports-deps.txt') }}-
${{ runner.os }}-14-macports-
path: /opt/local/
# Updated PATH applies to the next step and onwards
- name: Install MacPorts (if necessary)
run: |
if command -v /opt/local/bin/port 2>&1 >/dev/null; then
echo "MacPorts already installed"
else
echo "Installing MacPorts"
wget https://github.com/macports/macports-base/releases/download/v2.11.5/MacPorts-2.11.5-14-Sonoma.pkg
sudo installer -pkg ./MacPorts-2.11.5-14-Sonoma.pkg -target /
fi
echo "/opt/local/bin:/opt/local/sbin" >> "$GITHUB_PATH"
- name: Install dependencies
run: |
brew uninstall --ignore-dependencies libpng
sudo port install $(cat .github/workflows/macports-deps.txt)
brew install ninja
- name: Download soh.o2r
uses: actions/download-artifact@v4
with:
name: soh.o2r
path: build-cmake/soh
- name: Build SoH
run: |
export PATH="/usr/lib/ccache:/opt/homebrew/opt/ccache/libexec:/usr/local/opt/ccache/libexec:$PATH"
cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DBUILD_REMOTE_CONTROL=1
cmake --build build-cmake --config Release --parallel 10
(cd build-cmake && cpack)

mv _packages/*.dmg SoH.dmg
mv README.md readme.txt
- name: Upload build
uses: actions/upload-artifact@v4
with:
name: soh-mac
path: |
SoH.dmg
readme.txt
- name: Save Cache MacPorts
if: ${{ github.ref_name == github.event.repository.default_branch }}
uses: actions/cache/save@v4
with:
key: ${{ steps.restore-cache-macports.outputs.cache-primary-key }}
path: /opt/local/
# macOS job removed

build-linux:
needs: generate-soh-otr
Expand Down Expand Up @@ -233,6 +159,23 @@ jobs:
make
sudo make install
sudo cp -av /usr/local/lib/libzip* /lib/x86_64-linux-gnu/
- name: Install valijson
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
if [ ! -d "deps/valijson-1.0.6" ]; then
wget https://github.com/tristanpenman/valijson/archive/refs/tags/v1.0.6.tar.gz
tar -xzf v1.0.6.tar.gz -C deps
fi
cd deps/valijson-1.0.6
mkdir -p build
cd build
cmake ..
sudo cmake --install .
- name: Patch websocketpp
run: |
sudo sed -i 's/endpoint<connection,config>(/endpoint(/g' /usr/include/websocketpp/endpoint.hpp
sudo sed -i 's/basic<concurrency,names>(/basic(/g' /usr/include/websocketpp/logger/basic.hpp
sudo sed -i 's/server<config>(/server(/g' /usr/include/websocketpp/roles/server_endpoint.hpp
- name: Download soh.o2r
uses: actions/download-artifact@v4
with:
Expand All @@ -250,13 +193,21 @@ jobs:
env:
CC: gcc-12
CXX: g++-12

# NEW: include oot_soh.apworld in Linux artifact
- name: Add oot_soh.apworld to Linux artifact
run: |
mkdir -p Archipelago/custom_worlds
cp archipelago/oot_soh.apworld Archipelago/custom_worlds/oot_soh.apworld

- name: Upload build
uses: actions/upload-artifact@v4
with:
name: soh-linux
path: |
soh.appimage
readme.txt
Archipelago
- name: Save Cache deps folder
if: ${{ github.ref_name == github.event.repository.default_branch }}
uses: actions/cache/save@v4
Expand Down Expand Up @@ -316,6 +267,13 @@ jobs:
mv _packages/*.zip _packages/soh-windows.zip
- name: Unzip package
run: Expand-Archive -Path _packages/soh-windows.zip -DestinationPath soh-windows

# NEW: include oot_soh.apworld in Windows artifact
- name: Add oot_soh.apworld to Windows artifact
run: |
New-Item -ItemType Directory -Force -Path "soh-windows/Archipelago/custom_worlds" | Out-Null
Copy-Item "archipelago/oot_soh.apworld" "soh-windows/Archipelago/custom_worlds/oot_soh.apworld" -Force

- name: Upload build
uses: actions/upload-artifact@v4
with:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/macports-deps.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
libsdl2 +universal libsdl2_net +universal libpng +universal glew +universal libzip +universal nlohmann-json +universal tinyxml2 +universal libogg +universal libopus +universal opusfile +universal libvorbis +universal
libsdl2 +universal libsdl2_net +universal libpng +universal glew +universal libzip +universal nlohmann-json +universal tinyxml2 +universal libogg +universal libopus +universal opusfile +universal libvorbis +universal openssl +universal websocketpp +universal
6 changes: 6 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,9 @@
[submodule "OTRExporter"]
path = OTRExporter
url = https://github.com/harbourmasters/OTRExporter
[submodule "subprojects/wswrap"]
path = subprojects/wswrap
url = https://github.com/black-sliver/wswrap.git
[submodule "subprojects/apclientpp"]
path = subprojects/apclientpp
url = https://github.com/black-sliver/apclientpp.git
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ math(EXPR PATCH_INDEX "${PROJECT_VERSION_PATCH}")
# Use the patch number to select the correct word
list(GET NATO_PHONETIC_ALPHABET ${PATCH_INDEX} PROJECT_PATCH_WORD)

set(PROJECT_BUILD_NAME "Copper ${PROJECT_PATCH_WORD}" CACHE STRING "" FORCE)
set(PROJECT_BUILD_NAME "TheHeckinBuild" CACHE STRING "" FORCE)
set(PROJECT_TEAM "github.com/harbourmasters" CACHE STRING "" FORCE)

execute_process(
Expand Down Expand Up @@ -86,7 +86,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
set(VCPKG_TARGET_TRIPLET x64-windows-static)

vcpkg_bootstrap()
vcpkg_install_packages(zlib bzip2 libzip libpng sdl2 sdl2-net glew glfw3 nlohmann-json tinyxml2 spdlog libogg libvorbis opus opusfile)
vcpkg_install_packages(zlib bzip2 libzip libpng sdl2 sdl2-net glew glfw3 nlohmann-json tinyxml2 spdlog libogg libvorbis opus opusfile openssl valijson)
if (CMAKE_C_COMPILER_LAUNCHER MATCHES "ccache|sccache")
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT Embedded)
endif()
Expand Down
38 changes: 38 additions & 0 deletions RogueLike.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Game Design Document
The gist of this idea is you play through the game similar to a randomizer, fulfilling the objectives to reach and beat Ganon, but instead of getting items from checks, they are granted with a leveling/reward system. Among other things like buffs and debuffs.

## Starting out UX
When beginning a game, you will have multiple randomly rolled selections to make, including a starting location, starting item, starting song

## Gameplay
As you progress through the game, you will be rewarded XP for doing various actions throughout the world. When you have enough XP you will level up and you will be presented with a selection of buffs, items, or other rewards to choose from to enhance your character for the rest of the run. Actions include interacting with things, breaking things, killing enemies, talking with NPCs and completing their quests, etc.

TODO:
- Health upgrades not implemented
- Defense doesn't do anything yet (maybe damage mitigation?)
- Speed doesn't do anything yet (will effect movement speed of bunny hood)
- Quests system in early stages, only two quests currently
- Don't have a global enemy spawning mechanism yet, just relying on existing enemy spawn points
- Not all checks have been replaced with XP rewards yet
- Not sure what to do about ammo yet
- Not sure what to do about shops yet
- Weighted list of XP amounts to grant for every check and enemy. For instance you shouldn't get that much XP for opening chests in Mido's house, but doing frog song minigame is huge etc

## Difficulty Scaling
The main thing that will scale is enemy health & damage to link. Difficulty increases in levels, it will increase each time you kill a major boss, and there will also be a timer that eventually increases your difficulty based on time spent not gaining any experience.

TODO:
- Damage to link scaling not implemented yet
- Defeating bosses to increase difficulty not implemented yet
- Hyper enemies / enemy size scaling could play into this?

## Permanent progression
As you continue playing, the idea is you would very slowly gain a currency to grant you very small bonuses that will benefit you in every following run. Starting health is an example of a potential purchase-able thing, or starting with ocarina or bunny hood. It's likely that this currency would be earned from killing bosses and completing quests

TODO:
- Permanent progression system not implemented yet

## Ideas:
- Lock the player in certain areas to spawn specified waves of enemies before the player can proceed? i.e Hyrule Field or places without a Clear Room
- Utilize the trick from MM to hide/unhide Inventory Items based on what is earned?
- Ammo could have a timed regen based on upgrades? For instance you can only hold 1 stick, and if you break it, it regens after 5 minutes, unless you get an upgrade to hold 2 sticks, then it regens after 4 minutes, etc
Binary file added archipelago/oot_soh.apworld
Binary file not shown.
105 changes: 102 additions & 3 deletions soh/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 3.26.0 FATAL_ERROR)
include(FetchContent)

set(CMAKE_SYSTEM_VERSION 10.0 CACHE STRING "" FORCE)

Expand Down Expand Up @@ -282,30 +283,123 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
endif()
set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY ${MSVC_RUNTIME_LIBRARY_STR})
endif()

include(FetchContent)

################################################################################
# Find/download Dr Libs (For custom audio)
# apclientpp + dependencies
################################################################################
include(FetchContent)
add_compile_definitions(ASIO_STANDALONE)

if(BUILD_REMOTE_CONTROL)
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
FetchContent_Declare(
valijson
GIT_REPOSITORY https://github.com/tristanpenman/valijson.git
GIT_TAG v1.0.6
)
FetchContent_MakeAvailable(valijson)
target_include_directories(${PROJECT_NAME} PRIVATE ${valijson_SOURCE_DIR}/include)
else()
find_package(valijson REQUIRED)
endif()

FetchContent_Declare(
asio
GIT_REPOSITORY https://github.com/chriskohlhoff/asio.git
GIT_TAG asio-1-30-2
)
FetchContent_MakeAvailable(asio)
target_include_directories(${PROJECT_NAME} PRIVATE ${asio_SOURCE_DIR}/asio/include)

# websocketpp has been temporarily removed from vcpkg, see
# https://github.com/microsoft/vcpkg/pull/42678#issuecomment-2914451436
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
FetchContent_Declare(
websocketpp
GIT_REPOSITORY https://github.com/zaphoyd/websocketpp.git
GIT_TAG 0.8.2
)
FetchContent_Populate(websocketpp)
target_include_directories(${PROJECT_NAME} PRIVATE ${websocketpp_SOURCE_DIR})
else()
find_package(websocketpp REQUIRED)
endif()

FetchContent_Declare(
wswrap
GIT_REPOSITORY https://github.com/black-sliver/wswrap.git
GIT_TAG 47438193ec50427ee28aadf294ba57baefd9f3f1
)
FetchContent_MakeAvailable(wswrap)
target_include_directories(${PROJECT_NAME} PRIVATE ${wswrap_SOURCE_DIR}/include)

FetchContent_Declare(
apclientpp
GIT_REPOSITORY https://github.com/black-sliver/apclientpp.git
GIT_TAG 65638b7479f6894eda172e603cffa79762c0ddc1
)
FetchContent_MakeAvailable(apclientpp)
target_include_directories(${PROJECT_NAME} PRIVATE ${apclientpp_SOURCE_DIR})
endif()

# Find/download Dr Libs (For custom audio)
################################################################################
FetchContent_Declare(
dr_libs
GIT_REPOSITORY https://github.com/mackron/dr_libs.git
GIT_TAG da35f9d6c7374a95353fd1df1d394d44ab66cf01
)
FetchContent_MakeAvailable(dr_libs)

################################################################################
# Compile definitions
################################################################################
find_package(SDL2)
set(SDL2-INCLUDE ${SDL2_INCLUDE_DIRS})

if (BUILD_REMOTE_CONTROL)
find_package(SDL2_net)

if(NOT SDL2_net_FOUND)
message(STATUS "SDL2_net not found (it's possible the version installed is too old). Disabling BUILD_REMOTE_CONTROL.")
# todo: make archi optional so this can build with BUILD_REMOTE_CONTROL off
message(FATAL_ERROR "SDL2_net not found (it's possible the version installed is too old).")
set(BUILD_REMOTE_CONTROL 0)
else()
set(SDL2-NET-INCLUDE ${SDL_NET_INCLUDE_DIRS})
endif()

set(OPENSSL_USE_STATIC_LIBS ON)

if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
file(STRINGS /etc/os-release distro REGEX "^NAME=")
string(REGEX REPLACE "NAME=\"(.*)\"" "\\1" distro "${distro}")

if(${distro} MATCHES "Fedora Linux")
set(OPENSSL_USE_STATIC_LIBS OFF)
endif()
endif()

find_package(OpenSSL)
if(NOT OPENSSL_FOUND)
# todo: make archi optional so this can build with BUILD_REMOTE_CONTROL off
message(FATAL_ERROR "OpenSSL not found (it's possible the version installed is too old).")
set(BUILD_REMOTE_CONTROL 0)
endif()

FetchContent_Declare(
sslCertStore
URL https://curl.se/ca/cacert.pem
DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR}/networking
DOWNLOAD_NO_EXTRACT TRUE
)

FetchContent_MakeAvailable(
sslCertStore
)

install(FILES ${CMAKE_CURRENT_BINARY_DIR}/networking/cacert.pem DESTINATION ./networking COMPONENT ship)

endif()

if (ESPEAK)
Expand Down Expand Up @@ -410,6 +504,7 @@ endif()
# Compile and link options
################################################################################
if(MSVC)
target_compile_options(${PROJECT_NAME} PUBLIC "/Zc:__cplusplus")
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
target_compile_options(${PROJECT_NAME} PRIVATE
$<$<CONFIG:Debug>:
Expand Down Expand Up @@ -643,6 +738,8 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
"SDL2::SDL2;"
"SDL2::SDL2main;"
"$<$<BOOL:${BUILD_REMOTE_CONTROL}>:SDL2_net::SDL2_net-static>"
"$<$<BOOL:${BUILD_REMOTE_CONTROL}>:OpenSSL::SSL>"
"$<$<BOOL:${BUILD_REMOTE_CONTROL}>:OpenSSL::Crypto>"
"glfw;"
"winmm;"
"imm32;"
Expand Down Expand Up @@ -710,6 +807,8 @@ else()
"Opus::opus"
"Opusfile::Opusfile"
"$<$<BOOL:${BUILD_REMOTE_CONTROL}>:SDL2_net::SDL2_net>"
"$<$<BOOL:${BUILD_REMOTE_CONTROL}>:OpenSSL::SSL>"
"$<$<BOOL:${BUILD_REMOTE_CONTROL}>:OpenSSL::Crypto>"
${CMAKE_DL_LIBS}
Threads::Threads
)
Expand Down
Binary file not shown.
16 changes: 16 additions & 0 deletions soh/assets/custom/objects/custom_snowball/mat_snowball_snow
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<DisplayList Version="0">
<SetGeometryMode G_ZBUFFER="1" G_SHADE="1" G_CULL_BACK="1" G_FOG="1" G_LIGHTING="1" G_SHADING_SMOOTH="1" />
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_TEXEL0" B0="G_CCMUX_0" C0="G_CCMUX_SHADE" D0="G_CCMUX_0" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_1" A1="G_CCMUX_COMBINED" B1="G_CCMUX_0" C1="G_CCMUX_PRIMITIVE" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_TC_FILT="1" G_TF_BILERP="1" G_TT_NONE="1" G_TL_TILE="1" G_TD_CLAMP="1" G_TP_PERSP="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_ZS_PIXEL="1" G_RM_FOG_SHADE_A="1" G_RM_AA_ZB_OPA_SURF2="1" />
<Texture S="65535" T="65535" Level="0" Tile="0" On="1"/>
<SetPrimColor M="0" L="0" R="255" G="255" B="255" A="255"/>
<SetTextureImage Path="objects/custom_snowball/LightNoise.rgba32" Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_32b_LOAD_BLOCK" Width="1"/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_32b_LOAD_BLOCK" Line="0" TMem="0" Tile="7" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="0" ShiftS="0" MaskT="0" ShiftT="0"/>
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="1023" Dxt="128"/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_32b" Line="8" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="5" ShiftS="0" MaskT="5" ShiftT="0"/>
<SetTileSize T="0" Uls="0" Ult="0" Lrs="124" Lrt="124"/>
<EndDisplayList/>
</DisplayList>

Loading