Skip to content

PurchaseHealing

Buy a temple healing service in town (zero time).

Full documentation: PurchaseHealing. Wire type: purchase_healing.

Legal session modes: town

JSON Schema

{
  "description": "Buy a temple healing service in town (zero time).\n\nThe party must be in town. The service list and prices are a documented\nadaptation, because the OSE SRD's base-town material is prose: *cure light\nwounds* 25 gp, *cure serious wounds* 100 gp, *cure disease* 150 gp,\n*neutralize poison* 150 gp, *remove curse* 200 gp, *raise dead* 1,500 gp. Each\nresolves through the kernel spell path with an abstract temple cleric at the\nminimum level able to cast the spell.\n\nThe temple charges the party, not the patient. The fee comes out of the treated\nmember's purse first and then out of the other members' purses in marching order,\ndead members included. A purse pays in whole gold pieces, as much of what is still\nowed as its gold covers, so a purse that cannot cover the rest hands over all of\nits gold and keeps only what it is worth below a gold piece. The last purse\ncharged pays the remainder, and the purses behind it stay shut.\n\nThe coin below a gold piece in a purse cannot go toward the fee, so what the party\ncan spend is the whole gold pieces in its purses rather than their total worth. Two\nmembers holding 12 gp and 5 sp each are worth 25 gp between them, and they are\nstill refused a 25 gp service and keep every coin.\n\nCharging the party is what makes *raise dead* buyable: the patient is dead, and a\nparty that shares out its treasure rarely leaves 1,500 gp in one member's purse.\n\nModes:\n    `town`\n\nRejections:\n    - `session.command.wrong_mode` - the party is not in town.\n    - `session.command.unknown_member` - `character_id` names no party member.\n    - `items.purchase.insufficient_funds` - the whole gold pieces in the party's\n      purses together fall short of the fee. Coin below a gold piece in a purse\n      cannot go toward it, so a party worth the price in mixed coin can still be\n      refused.\n\nEvents:\n    `HealingPurchasedEvent`, naming\n    which purses paid and how much each one paid, then the service spell's own\n    resolution events (healing, effect releases, a revival's outcome).",
  "properties": {
    "command_type": {
      "const": "purchase_healing",
      "default": "purchase_healing",
      "title": "Command Type",
      "type": "string",
      "description": "The wire discriminator. Each subclass fixes it to its own snake_case literal, like\n`\"move_party\"` or `\"open_door\"`, so you never set it yourself: constructing the subclass\ndoes. It's what `parse_command` and the\n`AnyCommand` union read to rebuild the right class\nfrom a serialized mapping, and it stays the same across releases."
    },
    "source": {
      "anyOf": [
        {
          "minLength": 1,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Source",
      "description": "An annotation naming the authored object (a trigger or quest id) or the game\nsystem on whose behalf the command was issued. Execution never reads it: a stamped\ncommand does exactly what the same command unstamped does. It is logged and replayed\nwith the command, so the log alone answers \"why did this happen\". Absent is `None`,\nand the empty string is not a value."
    },
    "character_id": {
      "title": "Character Id",
      "type": "string",
      "description": "Who is treated, by `MemberView.id`. This member's\npurse is charged first and the rest of the party covers whatever is left, so there is no\nneed to move coin around before buying. A dead member is a legal target, and a corpse with\nan empty purse is still treatable: `raise_dead` is what the temple is for."
    },
    "service": {
      "enum": [
        "cure_light_wounds",
        "cure_serious_wounds",
        "cure_disease",
        "neutralize_poison",
        "remove_curse",
        "raise_dead"
      ],
      "title": "Service",
      "type": "string",
      "description": "Which service to buy. The prices are fixed: `cure_light_wounds` 25 gp,\n`cure_serious_wounds` 100 gp, `cure_disease` 150 gp, `neutralize_poison` 150 gp,\n`remove_curse` 200 gp, and `raise_dead` 1,500 gp. Each resolves as the matching spell cast\nby a temple cleric at the lowest level able to cast it."
    }
  },
  "required": [
    "character_id",
    "service"
  ],
  "title": "PurchaseHealing",
  "type": "object"
}