diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index f23a6bd4..58f46f5d 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -25,16 +25,6 @@ jobs: if: ${{ needs.pre_job.outputs.should_skip != 'true' }} runs-on: windows-latest steps: - # Replace / with _ in ref name so that it can be used in a filename - - uses: mad9000/actions-find-and-replace-string@2 - id: sanitizeRef - with: - source: ${{ github.ref_name }} - find: '/' - replace: '_' - # Get short-sha so that it can be used in a filename - - uses: benjlevesque/short-sha@v1.2 - id: short-sha - uses: actions/checkout@v2 @@ -52,13 +42,21 @@ jobs: $data = Get-Content NewHorizons/NewHorizons.csproj.user $data = $data.Replace("`$(AppData)\OuterWildsModManager\OWML\Mods", ".") $data | Out-File -encoding ASCII NewHorizons/NewHorizons.csproj.user + + # Set to Release if we're in master, otherwise keep us in Debug + - name: Set Release + if: github.ref == 'refs/heads/master' + run: echo "BUILD_TYPE=Release" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append + + - name: Set Debug + if: github.ref != 'refs/heads/master' + run: echo "BUILD_TYPE=Debug" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append - uses: actions/setup-dotnet@v1 with: dotnet-version: "5.0.x" - - run: dotnet build -c Release -o .\NewHorizons\Bin\Release - - run: tree + - run: dotnet build -c $Env:BUILD_TYPE -o .\NewHorizons\Bin\$Env:BUILD_TYPE - uses: actions/upload-artifact@v2 with: - name: NewHorizons-${{ steps.sanitizeRef.outputs.value }}-${{ steps.short-sha.outputs.sha }} - path: .\NewHorizons\Bin\Release + name: NewHorizons-${{ env.BUILD_TYPE }} + path: .\NewHorizons\Bin\${{ env.BUILD_TYPE }} diff --git a/.github/workflows/docs_build.yml b/.github/workflows/docs_build.yml index c05ee787..301d6bb9 100644 --- a/.github/workflows/docs_build.yml +++ b/.github/workflows/docs_build.yml @@ -6,6 +6,7 @@ on: paths: - docs/** - NewHorizons/*schema*.json + - NewHorizons/*.xsd pull_request: paths: @@ -23,6 +24,7 @@ on: env: OUT_DIR: ${{ github.events.inputs.relative_path }} BASE_URL: https://nh.outerwildsmods.com/ + PIPENV_VENV_IN_PROJECT: enabled jobs: build: @@ -36,6 +38,15 @@ jobs: - if: github.ref == 'refs/heads/master' run: | echo "OUT_DIR=/" >> $GITHUB_ENV + + - name: Cache Dependencies + uses: actions/cache@v2 + id: cache-dependencies + with: + path: ./.venv + key: ${{ runner.os }}-pip-${{ hashFiles('**/Pipfile.lock') }} + restore-keys: | + ${{ runner.os }}-pipenv - name: Install dependecies uses: VaultVulp/action-pipenv@v2.0.1 diff --git a/NewHorizons/dialogue_schema.xsd b/NewHorizons/dialogue_schema.xsd index 1929ce0f..626b0751 100644 --- a/NewHorizons/dialogue_schema.xsd +++ b/NewHorizons/dialogue_schema.xsd @@ -5,8 +5,20 @@ - - + + + + The name of the dialogue tree + + + + + + + The different nodes of this dialogue tree + + + @@ -14,42 +26,121 @@ - - - - - + + + + The name of this dialogue node + + + + + + + The condition that needs to be met in order to get to this node + + + + + + + A ship log fact that must be revealed in order to get to this node + + + + + + + The dialogue to show to the player + + + + + + + Facts to reveal when the player sees this dialogue node + + + + + + + A list of options to show to the player once the character is one talking + + + - + + + + A page of dialogue to show to the player + + + - + + + + The ID of a fact to reveal + + + - + + + + Options the player can select from + + + - - - - + + + + Require a prior condition to be met to show this option + + + + + + + Hide this option if a condition has been met + + + + + + + The text to show for this option + + + + + + + The name of the DialogueNode to go to when this option is selected + + + diff --git a/NewHorizons/schema.json b/NewHorizons/schema.json index 506fe634..b6beb807 100644 --- a/NewHorizons/schema.json +++ b/NewHorizons/schema.json @@ -507,65 +507,65 @@ "type": "object", "properties": { "scatter": { - "type": "array", - "items": { - "type": "object", - "properties": { - "count": { - "type": "integer" - }, - "path": { - "type": "string", - "description": "Either the path in the scene hierarchy of the item to copy or the path to the object in the supplied asset bundle" - }, - "assetBundle": { - "type": "string", - "description": "Relative filepath to an asset-bundle" - }, - "offset": { - "$ref": "#/$defs/vector3" - }, - "rotation": { - "$ref": "#/$defs/vector3", - "description": "Euler angle degrees" - }, - "scale": { - "type": "number", - "default": 1, - "description" : "How many props to scatter around the planet." + "type": "array", + "items": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "path": { + "type": "string", + "description": "Either the path in the scene hierarchy of the item to copy or the path to the object in the supplied asset bundle" + }, + "assetBundle": { + "type": "string", + "description": "Relative filepath to an asset-bundle" + }, + "offset": { + "$ref": "#/$defs/vector3" + }, + "rotation": { + "$ref": "#/$defs/vector3", + "description": "Euler angle degrees" + }, + "scale": { + "type": "number", + "default": 1, + "description": "How many props to scatter around the planet." + } } } - } }, "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "path": { - "type": "string", - "description": "Either the path in the scene hierarchy of the item to copy or the path to the object in the supplied asset bundle" - }, - "assetBundle": { - "type": "string", - "description": "Relative filepath to an asset-bundle" - }, - "position": { - "$ref": "#/$defs/vector3" - }, - "rotation": { - "$ref": "#/$defs/vector3", - "description": "Euler angle degrees" - }, - "scale": { - "type": "number", - "default": 1 - }, - "alignToNormal": { - "type": "boolean", - "description": "Do we override rotation and try to automatically align this object to stand upright on the body's surface?", - "default": false - } + "type": "array", + "items": { + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "Either the path in the scene hierarchy of the item to copy or the path to the object in the supplied asset bundle" + }, + "assetBundle": { + "type": "string", + "description": "Relative filepath to an asset-bundle" + }, + "position": { + "$ref": "#/$defs/vector3" + }, + "rotation": { + "$ref": "#/$defs/vector3", + "description": "Euler angle degrees" + }, + "scale": { + "type": "number", + "default": 1 + }, + "alignToNormal": { + "type": "boolean", + "description": "Do we override rotation and try to automatically align this object to stand upright on the body's surface?", + "default": false + } }, "scale": { "type": "number", @@ -580,20 +580,20 @@ "properties": { "position": { "$ref": "#/$defs/vector3", - "description" : "When you enter into dialogue, you will look here." + "description": "When you enter into dialogue, you will look here." }, "radius": { "type": "number", "default": 0, - "description" : "Radius of the spherical collision volume where you get the \"talk to\" prompt when looking at. If you use a remoteTriggerPosition, this will instead be the size of the volume that will trigger the dialogue when you enter it." + "description": "Radius of the spherical collision volume where you get the \"talk to\" prompt when looking at. If you use a remoteTriggerPosition, this will instead be the size of the volume that will trigger the dialogue when you enter it." }, "xmlFile": { "type": "string", - "description" : "Relative path to the xml file defining the dialogue." + "description": "Relative path to the xml file defining the dialogue." }, "remoteTriggerPosition": { "$ref": "#/$defs/vector3", - "description" : "Allows you to trigger dialogue from a distance when you walk into an area." + "description": "Allows you to trigger dialogue from a distance when you walk into an area." } } } @@ -606,7 +606,7 @@ "properties": { "revealOn": { "type": "string", - "enum": ["enter", "observe", "snapshot"], + "enum": [ "enter", "observe", "snapshot" ], "description": "'enter', 'observe', or 'snapshot' what needs to be done to the volume to unlock the facts" }, "reveals": { @@ -658,6 +658,19 @@ } } } + }, + "geysers": { + "type": "array", + "description": "A set of geysers", + "items": { + "type": "object", + "properties": { + "position": { + "$ref": "#/$defs/vector3", + "description": "The position of this geyser" + } + } + } } } }, diff --git a/NewHorizons/shiplog_schema.xsd b/NewHorizons/shiplog_schema.xsd index 660eb58d..10063293 100644 --- a/NewHorizons/shiplog_schema.xsd +++ b/NewHorizons/shiplog_schema.xsd @@ -5,8 +5,20 @@ - - + + + + ID of the planet these entries are for + + + + + + + A set of entries that belong to this planet + + + @@ -17,27 +29,117 @@ - - - - - - - - - - + + + + The ID of this entry + + + + + + + Name of this entry + + + + + + + The curiosity this entry belongs to + + + + + + + Whether this entry is a curiosity + + + + + + + Whether to hide the "More To Explore" text on this entry + + + + + + + Ignore more to explore if a fact is known + + + + + + + If this fact is revealed, show the Alt picture + + + + + + + Rumor facts for this entry + + + + + + + Explore facts for this entry + + + + + + + Child entires within this entry + + + - - - - - + + + + The ID of this rumor fact + + + + + + + The source of this rumor, this draws a line in detective mode + + + + + + + Displays on the card in detective mode if no ExploreFacts have been revealed on the parent entry + + + + + + + Priority over other RumorFacts to appear as the entry card's title + + + + + + + Whether to hide the "More to explore" on this rumor fact + + + @@ -45,8 +147,20 @@ - - + + + + The ID of this explore fact + + + + + + + Whether to hide the "More to explore" text for this fact + + + @@ -54,12 +168,35 @@ - + + + + The text content for this fact + + + + + + Display alt-text given a certain fact is revealed + + - - + + + + The text to display if the condition is met + + + + + + + The condition that needs to be fulfilled to have the alt text be displayed + + + diff --git a/README.md b/README.md index 2f94ccaf..beb55db4 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,8 @@ A custom world creation tool for Outer Wilds. You can view the addons creators have made (or upload one yourself) [here](https://outerwildsmods.com/custom-worlds)! +If you want to see examples of what NH can do check out the [examples add-on](https://github.com/xen-42/ow-new-horizons-examples) or [real solar system add-on](https://github.com/xen-42/outer-wilds-real-solar-system). + Check the ship's log for how to use your warp drive to travel between star systems! @@ -36,7 +38,7 @@ Check the ship's log for how to use your warp drive to travel between star syste - Separate solar system scenes accessible via wormhole OR via the ship's new warp drive feature accessible via the ship's log - Remove existing planets - Create basic planets from heightmaps/texturemaps -- Stars, comets, asteroid belts, satellites +- Stars, comets, asteroid belts, satellites, geysers, cloak fields - Binary orbits - Signalscope signals and custom frequencies - Surface scatter: rocks, trees, etc, using in-game models, or custom ones @@ -52,14 +54,11 @@ Check the ship's log for how to use your warp drive to travel between star syste - Implement all planet features: - Tornados + floating islands - Let any star go supernova - - Geysers - Meteors - Pocket dimensions - Timed position/velocity changes - Implement custom Nomai scrolls - Implement custom translatable writing -- Destroy planets that fall into a star -- Add cloaking volumes ## Contact Join the [Outer Wilds Modding Discord](https://discord.gg/MvbCbBz6Q6) if you have any questions or just want to chat about modding! Theres a New Horizons category there dedicated to discussion of this mod.