Added commision objectives

This commit is contained in:
koritsa
2026-06-01 15:03:37 +03:00
committed by koritsa
parent 9a5a0003b1
commit 4427627e7d
25 changed files with 626 additions and 82 deletions
+17 -9
View File
@@ -41,9 +41,9 @@ content space.
- **`ExposeBodyPart(part, duration)`** ✅ — **`UExposeBodyPartObjective`** *(implemented)*
- **`BeFullyNakedNearNPCs(count, duration)`** ✅ — **`UBeFullyNakedNearNPCsObjective`** *(implemented)*
- `WearOnlyUnderwear(duration)` ✅ — **`UWearOnlyUnderwearObjective`** *(implemented)*. Exhibitionist.
- `BeToplessOnly` / `BeBottomlessOnly(duration)` ✅ — one region bare, the other covered.
- `StayBelowCoverage(threshold, duration)` ✅ — total/region coverage under X (revealing, not nude).
- `ExposeWhileWalking(part, meters)` ✅ — keep a part revealing across N meters (per-part walk).
- `BeToplessOnly` / `BeBottomlessOnly(duration)` ✅ — **`UBareRegionObjective`** *(implemented; `EBareRegion` data value picks the bare half)*. One region bare, the other covered.
- `StayBelowCoverage(threshold, duration)` ✅ — **`UStayBelowCoverageObjective`** *(implemented; names its own threshold)*. Every region under X (revealing, not nude).
- `ExposeWhileWalking(part, meters)` ✅ — **`UExposeWhileWalkingObjective`** *(implemented)*. Keep a part revealing across N meters (per-part walk).
- `UseExposeAction(part, count)` ✅ (after VS3) — trigger the §6.3.6 flash action N times.
## Observation / NPC reactions (✅ count-based; 🔶 type-based)
@@ -65,14 +65,18 @@ content space.
- `EnterLocationNaked(tag)` ✅ · `TourLocationsNaked(tagset)` ✅ · `LingerExposed(tag, duration)`
(the last two = `BeFullyNaked` + a `ULocationConstraint`).
- `ReachLocationAwayFromClothing(tag, meters)`— arrive having left clothes ≥N m behind.
- `ReachLocationAwayFromClothing(tag, meters)`*(no new class)*`MoveDistanceFromClothing` + a `ULocationConstraint`: arrive at the location having left clothes ≥N m behind.
- `ReturnHomeNaked()` ✅-ish — end the session at the apartment with no clothing (loop-closer).
## Movement / endurance (✅)
- `WalkNakedDistance(meters)` ✅ (in §13.4) · `MoveDistanceFromClothing(meters)` ✅ (in §13.4).
- `WalkNakedDistance(meters)` ✅ (in §13.4) **`UWalkNakedDistanceObjective`** *(implemented)*. Naked travel at any gait. · `MoveDistanceFromClothing(meters)` ✅ (in §13.4) — **`UMoveDistanceFromClothingObjective`** *(implemented; polls `UDroppedClothingSubsystem` for the nearest dropped garment)*.
- `RunNakedDistance(meters)` ✅ — **`URunNakedDistanceObjective`** *(implemented)*. Distance accrues only while running + naked.
- `WalkNakedWhileObserved(meters, minObservers)` ✅.
- `WalkNakedWhileObserved(meters, minObservers)`**`UWalkNakedWhileObservedObjective`** *(implemented)*.
> All four distance objectives share **`UTravelObjectiveBase`** (`UCoverageObjectiveBase` subclass) — it owns the
> clamped distance-sampling timer; subclasses only override `DoesSampleCount()` (e.g. naked+run, part revealing,
> naked+observed). New "travel while X" objectives are a one-method subclass.
## Clothing / outfits / restraints
@@ -105,9 +109,13 @@ content space.
1. **Structural** — constraints framework + sequential steps. *(done)*
2. **All-✅ objectives** — done: `StayUnseenWhileNaked`, `GatherCrowd`, `BeObservedWhileExposed`,
`WearOnlyUnderwear`, `RunNakedDistance`, `ReachEmbarrassment`/`SustainEmbarrassment`. Location
objectives (`EnterLocationNaked`, `LingerExposed`, …) need no new class — author them as
`BeFullyNaked` / `ExposeBodyPart` + a `ULocationConstraint`.
`WearOnlyUnderwear`, `ReachEmbarrassment`/`SustainEmbarrassment`, the `UTravelObjectiveBase` distance
family (`RunNakedDistance`, `WalkNakedDistance`, `ExposeWhileWalking`, `WalkNakedWhileObserved`), and the
coverage pair `BareRegion` (topless/bottomless) + `StayBelowCoverage`. Location objectives
(`EnterLocationNaked`, `LingerExposed`, …) need no new class — author them as `BeFullyNaked` /
`ExposeBodyPart` + a `ULocationConstraint`. `MoveDistanceFromClothing` (+ its
`ReachLocationAwayFromClothing` compose) now landed on `UDroppedClothingSubsystem`. Remaining all-✅
gap: `WearOutfit` needs an outfit tag/id on items.
3. **Location system** — done: `ULocationSubsystem` + `ULocationConstraint`; the whole Location/travel
group and `WhileAtLocation` are unblocked. (Build the location *objectives* with the ✅ batch.)
4. **Per-system batches** as VS5 (NPC types), VS2 (lust/pulse), toys, restraints, and Phase 8