8.1 KiB
8.1 KiB
Commission objective backlog
Idea catalog + build status for the commission system (Source/NakedDesire/Commissions/). Pairs with
GDD §13 (the design source of truth) and PLAN.md (live status). When an idea is implemented, mark it
and record the class name.
Feasibility legend
- ✅ buildable now — the signals it needs already exist.
- 🔶 needs a planned-but-partial system — NPC types (VS‑5), lust & pulse (VS‑2), photo/livestream & followers (Phase 8), toys, restraints.
- 🔭 needs an unbuilt system — theft (§6.3.4), rip & tear (§6.3.5), recognition/wanted (§7.6).
Path flavor: Exhibitionist = be seen · Slut = be lewd · Slave = be used / controlled.
Structural features (content multipliers — build these first)
These aren't objectives; they make every objective compose, so a handful of conditions yields a large content space.
- Constraints / modifiers — a constraint decorates an objective; the step only counts while all its
constraints also hold (the base ANDs them into the satisfaction check). "Do X while Y" with no new
objective code.
WhileObservedBy(count)✅ —UObservedConstraint(implemented)DuringPhase(Day/Night)✅ —UDayPhaseConstraint(implemented)WhileWearing(slot)/WhileNotWearing(slot)✅ —UWearingSlotConstraint(implemented)WhileAtLocation(tag)✅ —ULocationConstraint(implemented) — backed byULocationSubsystem.WhileMoving/WhileRunning✅* — needs a gait-changed signal or a cheap poll.
- Sequential steps —
bSequentialObjectiveson a commission: objectives activate one at a time in order ("strip at A → walk naked to B → masturbate at C"). (implemented) - Optional bonus objective — a non-required step that bumps the reward (risk/reward texture). (idea)
- Time limit — a per-commission deadline is a failure condition, not a "while" gate; it belongs with
failurePenalty/ day-end expiry, not the constraint set.
Exposure / coverage (mostly ✅ — same signals the dial already uses)
BeFullyNaked(duration)✅ —UBeFullyNakedObjective(implemented)ExposeBodyPart(part, duration)✅ —UExposeBodyPartObjective(implemented)BeFullyNakedNearNPCs(count, duration)✅ —UBeFullyNakedNearNPCsObjective(implemented)WearOnlyUnderwear(duration)✅ —UWearOnlyUnderwearObjective(implemented). Exhibitionist.BeToplessOnly/BeBottomlessOnly(duration)✅ —UBareRegionObjective(implemented;EBareRegiondata 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 VS‑3) — trigger the §6.3.6 flash action N times.
Observation / NPC reactions (✅ count-based; 🔶 type-based)
GatherCrowd(count)✅ —UGatherCrowdObjective(implemented). N NPCs observing simultaneously.BeObservedWhileExposed(count, duration)✅ —UBeObservedWhileExposedObjective(implemented). N observers while any region is revealing (partial exposure counts).StayUnseenWhileNaked(duration)✅ —UStayUnseenWhileNakedObjective(implemented). Fully naked with zero observers (stealth exhibitionism / risk).BeObservedByNPCType(type, count|duration)🔶 (in §13.4) — Walker / Stalker / Blogger / etc.BePhotographedByBlogger(count)🔶 ·EndureStalker(duration)🔶 ·EscapeAfterSnitch()🔶 (VS‑5).
Attributes: embarrassment / arousal (✅ embarrassment; 🔶 lust/pulse)
ReachEmbarrassment(threshold)/SustainEmbarrassment(threshold, duration)✅ —UReachEmbarrassmentObjective(implemented; a hold duration turns Reach into Sustain).ReachLust(threshold)/EdgeWithoutResolving(duration)🔶 (VS‑2).MasturbateNearNPCs(count)/MasturbateAtLocation(tag)🔶 —PerformAction, Slut-gated (§23 #26).KeepPulseElevated(threshold, duration)🔶.
Location / travel (✅ — ULocationSubsystem now provides enter/leave + tag queries)
EnterLocationNaked(tag)✅ ·TourLocationsNaked(tagset)✅ ·LingerExposed(tag, duration)✅ (the last two =BeFullyNaked+ aULocationConstraint).ReachLocationAwayFromClothing(tag, meters)✅ (no new class) —MoveDistanceFromClothing+ aULocationConstraint: 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) —UWalkNakedDistanceObjective(implemented). Naked travel at any gait. ·MoveDistanceFromClothing(meters)✅ (in §13.4) —UMoveDistanceFromClothingObjective(implemented; pollsUDroppedClothingSubsystemfor the nearest dropped garment).RunNakedDistance(meters)✅ —URunNakedDistanceObjective(implemented). Distance accrues only while running + naked.WalkNakedWhileObserved(meters, minObservers)✅ —UWalkNakedWhileObservedObjective(implemented).
All four distance objectives share
UTravelObjectiveBase(UCoverageObjectiveBasesubclass) — it owns the clamped distance-sampling timer; subclasses only overrideDoesSampleCount()(e.g. naked+run, part revealing, naked+observed). New "travel while X" objectives are a one-method subclass.
Clothing / outfits / restraints
WearOutfit(tag, duration)✅ — go out in a specific authored set (needs an outfit id/tag on items).GoOutInBodysuitOnly(duration)✅.WearRestraintInPublic(slot, duration)🔶 (restraints §6.3.7) — Slave flavor.WearVibratingToy(duration)/ActivateToyNearNPCs(count)🔶 (toy vibration audible to NPCs).DegradeConditionTo(x)/RipClothing🔭 (rip & tear) ·LetItemBeStolen()🔭 (theft).
Photo / livestream / followers (🔶 Phase 8)
TakePhotoAtLocation(tag)🔶 (in §13.4) ·PostPhotoExposing(part)🔶 ·PhotoExposureScoreAbove(x)🔶.SelfieAtLandmark(tag)🔶 ·LivestreamForMinutes(n)🔶 ·LivestreamWhileWalkingNaked(meters)🔶.GainFollowers(count)🔶 ·CompleteTipRequests(count)🔶.
Items / economy (✅ / 🔶)
DeliverItemTo(target)✅ (in §13.4) ·DeliverWhileNaked(target)✅ — deliver fully naked (§15.1).DropClothingAtLocation(tag)✅ — a "dead drop" leaving a garment behind.SellWornUnderwearAtDropoff()🔶 — risk-based drop-off (§15.1).
Risk / loss (🔶 / 🔭)
SurviveSessionNaked()✅-ish — complete a session never wearing clothing.GetCaughtAndEscape()🔶 (police, VS‑5) ·WantedWhileExposed()🔶 (recognition, §7.6).
Suggested build order
- Structural — constraints framework + sequential steps. (done)
- All-✅ objectives — done:
StayUnseenWhileNaked,GatherCrowd,BeObservedWhileExposed,WearOnlyUnderwear,ReachEmbarrassment/SustainEmbarrassment, theUTravelObjectiveBasedistance family (RunNakedDistance,WalkNakedDistance,ExposeWhileWalking,WalkNakedWhileObserved), and the coverage pairBareRegion(topless/bottomless) +StayBelowCoverage. Location objectives (EnterLocationNaked,LingerExposed, …) need no new class — author them asBeFullyNaked/ExposeBodyPart+ aULocationConstraint.MoveDistanceFromClothing(+ itsReachLocationAwayFromClothingcompose) now landed onUDroppedClothingSubsystem. Remaining all-✅ gap:WearOutfitneeds an outfit tag/id on items. - Location system — done:
ULocationSubsystem+ULocationConstraint; the whole Location/travel group andWhileAtLocationare unblocked. (Build the location objectives with the ✅ batch.) - Per-system batches as VS‑5 (NPC types), VS‑2 (lust/pulse), toys, restraints, and Phase 8 (photo/livestream/followers) land.