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.