content rules - cheaterbob/CR-Guide GitHub Wiki

Challenges, difficulties, and rules

Challenges

Challenge definitions have two forms. An inherited challenge uses extends to clone one of the 79 Core challenges, including its exact thresholds, references, and specialized behavior. The new definition supplies its own stable ID, text, and clothing rewards. An optional stage moves the inherited challenge to another location.

{
  "schemaVersion": 1,
  "type": "challenge",
  "id": "my.pack:challenge/lamarr-remix",
  "displayName": "Lamarr Remix",
  "description": "Complete the original Lamarr objective.",
  "extends": "core:challenge/lamarr",
  "rewards": ["core:clothing/hair-2"]
}

This is the compatibility route for every existing objective, including specialized challenges such as Bitch, Filicide, Insectsest, Lamarr, Nimble Legs, Samus, Stone Lady, and Swollen. Core IDs are listed in Assets/Resources/Modding/Core/Content/core-challenges.json.

Fully data-driven challenges instead use objective and count. Published objectives are:

Objective Progress event
killCount Enemies killed; optional enemies filter
weaponKillCount Enemies killed with an equipped weapon; optional enemies and items filters
reachWave Highest wave reached
surviveWaves Waves completed
flawlessWaves Waves completed without taking damage
pickupCount Items picked up; optional items filter; stack quantity counts
useItemCount Usable items consumed; optional items filter
interactionCount Successful player interactions
shotsFired Shots fired
damageTaken Damage events received
birthCount Births completed
impregnationCount Impregnations received; optional parent enemies filter
rapeCount Rape events started; optional enemies filter
orgasmCount Orgasms reached; optional current-raper enemies filter
mindBreakCount Player mind-break/death events

An optional stage makes a challenge location-specific. Without it, the challenge is General. The stable rewards list unlocks clothing. The experimental rewardBundle can grant current-run currency, stackable/non-stackable items, a weapon, and persistent content IDs; clothing content IDs also unlock in the wardrobe. Filters are allowlists, and omitting a supported filter accepts every matching enemy or item. One enemy list can mix Core and custom IDs. Inheriting a Core challenge clones its original specialized tracking component and serialized behavior. See ExampleMods/challenge-objectives-showcase and Docs/Modding/schemas/challenge.schema.json.

Ordered steps

Use experimental steps instead of the top-level objective, count, enemies, and items fields to create a sequence. Only the current step receives progress. All steps reset when the challenge is activated and must be completed in the same run.

"steps": [
  { "objective": "killCount", "count": 3, "enemies": ["core:enemy/zombie-1"] },
  { "objective": "shotsFired", "count": 10 },
  { "objective": "surviveWaves", "count": 1 }
],
"rewardBundle": {
  "currency": 500,
  "items": [{ "id": "core:item/consumable/ammo-box", "amount": 2 }],
  "weapons": [{ "id": "core:item/weapon/pistol", "amount": 1 }],
  "content": ["core:clothing/hair-2"]
}

Challenge progress is tracked during the active run. Completion is persisted by the normal challenge database using a deterministic ID derived from the namespaced content ID.

Difficulties and game modes

Difficulty profiles expose bounded global multipliers. Rule profiles default to selectable game modes. Installed and valid selectable profiles appear under Options > Game mode, alongside Standard, and the selection is remembered. Only the selected mode runs; disabling or removing its pack safely falls back to Standard.

Set "activation": "pack" only for rules that are an inseparable part of enabling the pack, such as an accessibility or safety pack. Pack-activated profiles run whenever their owning pack is loaded and do not create a game-mode entry. Omitting activation, or setting it to selectable, retains the normal game-mode behavior.

One rule profile can contain up to 16 module entries across seven reviewed module types:

Module Supported rules
weaponProgression Ordered or random weapons after each kill, starter weapon, inventory replacement
spawnModifiers Wave size, concurrent enemy caps, spawner weighting, initial and recurring delays
waveRules Enemy growth per wave, intermission duration, optional final wave
economyRules Starting/infinite money, bounty multiplier, ammo-drop probability, repeat consumable purchases, outfit repair availability and pricing
playerRules Incoming player-damage, health-capacity and outgoing gun-damage multipliers; dynamic all-gun grants; weight/debug options; self-pleasure; and optional nonsexual finisher, clothing-damage and knockout rules
scoringRules Points per kill and completed wave, plus a penalty per damage event
goalRules Score, kill, and wave victory targets; time and damage-event loss limits; all or any target matching

maximumWaves stops wave advancement after the final wave and displays a mode-complete notification. A value is never inferred: omitting it retains endless vanilla waves. The Survival Sprint example combines the general modules, while Apothem Gun Game demonstrates weapon progression.

The Captivity Multi-Tool conversion demonstrates a game-mode-gated runtime companion panel. The panel queries the finished registry for weapons and enemies and the stage manager for Core and mod stages, so it does not copy another pack's IDs or depend on fragile stage indices.

goalRules provides an explicit match result. Victory targets are evaluated after kills and waves; goalMatch defaults to all. A time limit or maximum number of damage events ends the run as a loss. Reaching a victory goal stops remaining spawns and displays the final score. During play, the active profile has a persistent Captivity status card showing its score and any configured score, kill, wave, damage, and time targets.

Experimental player and store mechanics

These mechanics are disabled in Standard mode. A mod can opt into repeat consumable purchases, outfit repair at either vendor, and the self-pleasure action through a selected rule profile:

{
  "type": "economyRules",
  "repeatConsumablePurchases": true,
  "clothingRepairEnabled": true,
  "clothingRepairCostMultiplier": 1.0
},
{
  "type": "playerRules",
  "selfPleasureEnabled": true,
  "selfPleasurePerSecond": 12.0,
  "selfPleasureHeartCost": 0
}

When enabled by the selected profile, self-pleasure is available during an active combat wave while grounded. It uses M, View / Share, or the mobile Pleasure button, stops on the same input or when interrupted, and uses the late Squoid player loop. The mobile button is only created while the feature is enabled. A heart cost of 0 allows climax without losing a heart. These fields are experimental for Mod API v1 because their balance and presentation may still change. See ExampleMods/convenience-mechanics for a complete pack.

enemyFinishersEnabled, clothingDamageEnabled, and safeKnockouts provide a reviewed nonsexual-mode path without replacing game assemblies. With safe knockouts enabled, reaching zero health consumes a heart and restores health; exhausting the final heart returns the player to the Hub bed. playerHealthMultiplier scales both health and the stamina capacity inherited from the health stat. These fields can be combined in a pack-activated rule profile; the former captivity-sfw conversion is not included in the current example set.