diff --git a/runicnpc/COMMANDS.md b/runicnpc/COMMANDS.md index 8af7c8d..c735795 100644 --- a/runicnpc/COMMANDS.md +++ b/runicnpc/COMMANDS.md @@ -31,7 +31,7 @@ a number (`bandit-1`) and can be renamed. | Command | Does | Permission | |---|---|---| | `/rnpc place [options]` | Places the profile's NPCs where you are looking, and answers with the placement's name and the cost warning. | `runicnpc.place` | -| `/rnpc here [options]` | The same, where you stand. | `runicnpc.place` | +| `/rnpc here [options]` | The same, a metre in front of you and facing you. If something is in the way, or there is no ground or navmesh there, it stands where you do and the reply says so. Like `place`, it makes a placement that respawns until you remove it. | `runicnpc.place` | | `/rnpc remove [placement]` | Removes a placement and its NPCs: the one you name, or the one the NPC you are looking at belongs to. | `runicnpc.place` | | `/rnpc rename ` | Renames a placement. Its live NPCs stay where they are. | `runicnpc.place` | | `/rnpc near [radius]` | Lists the placements and live NPCs around you, with distances and any note (waiting, off the navmesh). | `runicnpc.place` | diff --git a/runicnpc/PLAN.md b/runicnpc/PLAN.md index dfc1140..99612c9 100644 --- a/runicnpc/PLAN.md +++ b/runicnpc/PLAN.md @@ -147,6 +147,7 @@ architectural or design decision is implemented. | **D322** | **An event's zone enforces its flags.** ZoneManager 3.1.14 subscribes the hooks behind its flags only for the zones it had when it loaded, so a zone opened later through its API enforced none of them: the walk shot a player dead in a PvpGod zone and built in a NoBuild one. RunicGatewayZones 0.2.0 has ZoneManager run its own `UpdateHookSubscriptions` a tick after any zone is made, the same moment it already enters the players inside (stage 9d; the org lead asked for the ZoneManager patch). | Patching ZoneManager's file; asking ZoneManager's author. | | **D323** | **Each example profile wears its own outfit; the weapons of D289 stay.** The raider wears scrap armour (coffee-can helmet, roadsign jacket and kilt, hoodie, pants, boots, leather gloves); the camp guard metal (metal facemask and chest plate, long-sleeve shirt, pants, boots, roadsign gloves); the sniper hide (boonie hat, balaclava, hide poncho, pants and boots); the Juggernaut heavy plate, as before. Three shared one hoodie, pants and boots, so they read alike in game. Only a first load writes them (D284): no live server has RunicNPC yet, and the test rigs were given them by resetting `examplesWritten` (9d player walk, 2026-10-09). | One outfit for all; replacing a server's kits that still match the old ones. | | **D324** | **An example kit's items are written at full durability, read from this Rust's item definitions when the kits are written.** Kits sets an item's condition and maximum straight from its file. The writer put 0 on armour (a metal facemask 0 of 320, heavy plate 0 of 1,000, so it barely protected) and 100 on every weapon whatever its real maximum (an M249's is 500). Now an item with a condition gets the definition's maximum and one without gets 0. The harness checks it (`s6.examples.fullCondition`). | A fixed table of maximums, which a Rust update would make stale. | +| **D325** | **`/rnpc here` stands the NPC 1 m in front of the admin, facing them, not at their feet.** At their feet it spawned inside the admin, looking away (9d player walk). The spot must fit: nothing at chest height in the way, ground no more than 2 m below, and navmesh for one that walks. Otherwise it falls back to the admin's own spot and the reply says so. The harness checks the distance (`cmd.chat.here`). | 1.5 m or 3 m in front; refusing when the spot does not fit. | **Borrowing, not copying.** NpcSpawn states no licence at all, so its source grants us nothing and is read only as a description of *what* can be done in Rust. HumanNPC is MIT on uMod, which is GPL-compatible, but ยง1.2 rules out its @@ -386,7 +387,7 @@ permissions reach the site's permission manager through the inventory, like any | Command | Does | Permission | |---|---|---| | `/rnpc place [key=value ...]` | Places at the spot you are looking at, persistent, and answers with its name (D241). Options in any order (D242): `count=`, `respawn=` (seconds), `mode=each\|group`, `move=wander\|monument\|route:`, `radius=` | `runicnpc.place` | -| `/rnpc here [key=value ...]` | The same, where you stand | `runicnpc.place` | +| `/rnpc here [key=value ...]` | The same, a metre in front of you, facing you; where you stand if that spot does not fit (D325) | `runicnpc.place` | | `/rnpc remove [placement]` | Removes a placement and its NPCs: the one named, or that of the NPC you are looking at | `runicnpc.place` | | `/rnpc rename ` | Renames a placement (D241) | `runicnpc.place` | | `/rnpc near [radius]` | Lists placements (by name) and live NPCs near you | `runicnpc.place` |