From 837deacf6c9d0717d618969baa95bbe56a03a179 Mon Sep 17 00:00:00 2001 From: Storm Dragon Date: Mon, 26 Jan 2026 10:52:09 -0500 Subject: [PATCH] Updated documentation, fixed a few minor things. --- .gitignore | 1 + README.md | 37 +++++++++++++++++++++++++++++++++++++ draugnorak.nvgt | 0 src/weapon_range_audio.nvgt | 7 +++++-- 4 files changed, 43 insertions(+), 2 deletions(-) mode change 100644 => 100755 draugnorak.nvgt diff --git a/.gitignore b/.gitignore index 03ec794..9b1bd3e 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ save.dat *.wav *.opus .aider* +README.html diff --git a/README.md b/README.md index fe153b7..f2daa8a 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,22 @@ A survival audio game built with NVGT. Explore, gather, craft, and defend your base as day and night cycle on. +## Installation +- Unzip the file for your operating system. +- On Linux and Mac make sure the dragnorak executable is marked executable +``` bash +chmod +x draugnorak +``` + ## Quick Start - Move with Left/Right, jump with Up. - Hold Shift for 1 second to search the current area. - Craft basic tools in the base with C. - Set snares and build fires to survive. +Some of the first things you will want are a stone knife, spear, stone axe, and firepit. + + ## Controls - **Left/Right**: Move. - **Up**: Jump, climb trees, start rope climbs when prompted. @@ -80,6 +90,33 @@ Crafting is only available in the base (C). - **Storage** enables base inventory management and helps attract residents. - **Residents** (if recruited) consume meat, help defend, repair the barricade, and collect resources. +## Residents and Automation +Residents can automate survival tasks, defend your base, and process resources. To get the most out of them, ensure you have the necessary tools and facilities in your base storage. + +### Recruitment and Care +- **Recruitment**: Residents join automatically after invasions. If you have **Storage** built the likelihood for survivors to become residents increases. You can have a maximum of 4 residents. +- **Food**: Each resident consumes **1 unit of food every 8 hours** (3 per day). + - Priority: Meat > Smoked Fish > Basket of Fruits and Nuts. + - If no food is available, residents will go hungry and stop working. +- **Blessing**: The "Blessing of the Resident" (from the Altar) doubles their efficiency and reduces tool breakage for a short time. + +### Activities and Requirements +Residents automatically perform these tasks if the requirements are met in your base storage. + +| Activity | Requires (in Storage) | details | +| :--- | :--- | :--- | +| **Defense (Melee)** | **Spear** | Deals damage to attackers. Spears may break. | +| **Defense (Ranged)** | **Sling** + **Stones** | Attacks enemies from a distance. Consumes stones. Slings have a chance to break. | +| **Repairs** | N/A | Repairs the **Barricade** during the day. | +| **Gathering** | **Reed Basket** | Collects Sticks, Vines, Stones, and Logs. | +| **Foraging** | **Reed Basket** | Occurs at 6 AM and 12 PM. Produces **Basket of Fruits and Nuts**. | +| **Fishing** | **Fishing Pole** | Daytime only. Requires a nearby stream. Catches **Raw Fish**. | +| **Smoking Fish** | **Raw Fish** + **Sticks** | Requires a **burning fire**. Converts fish to **Smoked Fish**. | +| **Butchering** | **Knife** + **Game** | Requires a **burning fire**. Processes Small Game or Boar Carcasses into Meat, Skins, etc. | +| **Snare Check** | **Placed Snares** | Checks active snares, retrieves **Small Game**, and resets the snare. | + +> **Note**: Tools (Spears, Slings, Baskets, Knives, Fishing Poles) have a chance to break when used by residents. Keep a stock of spares! + ## Time, Weather, and Events - **1 real minute = 1 in-game hour**. - Day/night ambience crossfades around sunrise/sunset. diff --git a/draugnorak.nvgt b/draugnorak.nvgt old mode 100644 new mode 100755 diff --git a/src/weapon_range_audio.nvgt b/src/weapon_range_audio.nvgt index dcd86e8..2d5020a 100644 --- a/src/weapon_range_audio.nvgt +++ b/src/weapon_range_audio.nvgt @@ -29,8 +29,11 @@ int get_current_weapon_range() { void play_weapon_range_sound(string sound_file, int creature_pos) { if (!file_exists(sound_file)) return; - // Notification sound: play at player position for consistent perception - play_1d_with_volume_step(sound_file, x, x, false, PLAYER_WEAPON_SOUND_VOLUME_STEP); + // Notification sound: keep centered on the player like footsteps + int handle = p.play_stationary(sound_file, false); + if (handle != -1) { + p.update_sound_positioning_values(handle, -1.0, PLAYER_WEAPON_SOUND_VOLUME_STEP, true); + } } void update_weapon_range_audio(int creature_pos, bool &inout was_in_range) {