Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ The table is generated from [`index.yaml`](index.yaml); edit that file, then run
| [`sheet-salvage-union-chargen/`](sheet-salvage-union-chargen/) | 1.0.2 | Joins the Salvage Union sheet to +app character applications |
| [`duties-salvage-union/`](duties-salvage-union/) | 1.0.3 | Duties roll provider "salvage" on the Salvage Union sheet |
| [`salvage-union-wiki/`](salvage-union-wiki/) | 1.0.5 | Salvage Union rules as wiki pages (core rules, Pilot Bay, Mech Workshop, chassis, Union Crawler, salvaging, denizens, and every ability, system, module, equipment and table); Salvage Union Open Game Licence 1.0b, unofficial |
| [`sheet-charge/`](sheet-charge/) | 1.2.2 | Charge character sheet (details, action dots, momentum, stress clock, milestones and talents) with +check action rolls, assists, determination and fortune rolls, encounters with threats and consequences, and clocks; Charge SRD under CC BY 4.0 |
| [`sheet-charge/`](sheet-charge/) | 1.2.3 | Charge character sheet (details, action dots, momentum, stress clock, milestones and talents) with +check action rolls, assists, determination and fortune rolls, encounters with threats and consequences, and clocks; Charge SRD under CC BY 4.0 |
| [`sheet-charge-help/`](sheet-charge-help/) | 1.0.2 | Puts the Charge sheet topics into +help |
| [`sheet-charge-config/`](sheet-charge-config/) | 1.0.2 | Puts the Charge sheet settings and action and detail tables into +config |
| [`sheet-charge-chargen/`](sheet-charge-chargen/) | 1.0.2 | Joins the Charge sheet to +app character applications |
Expand Down
2 changes: 1 addition & 1 deletion index.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@ packages:
- path: sheet-charge/
name: Charge Sheet
package: sheet-charge
version: 1.2.2
version: 1.2.3
description: Charge character sheet (details, action dots, momentum, stress clock, milestones and talents) with +check action rolls, assists, determination and fortune rolls, encounters with threats and consequences, and clocks; Charge SRD under CC BY 4.0
- path: sheet-charge-help/
package: sheet-charge-help
Expand Down
10 changes: 5 additions & 5 deletions sheet-charge/package.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
format: "1.20"
package: sheet-charge
title: "Charge sheet"
version: 1.2.2
version: 1.2.3
authors: [SharpMUSH]
description: "A Charge character sheet: details, twelve actions rated in dots, momentum, a stress clock with a condition, milestones and talents built up on a ledger, encounters that keep their own copy of each sheet, with threats, danger clocks and consequences, plus progress clocks. +check rolls an action's dice against a risk for the room and gains momentum; push yourself, add tension, assist a friend, and make determination and fortune rolls. Based on the Charge SRD under CC BY 4.0 and Blades in the Dark under CC BY 3.0."
license: MIT
Expand Down Expand Up @@ -831,7 +831,7 @@ objects:
# A character may be in several encounters, each with its own copy.
INC`ENCOUNTER`JOIN:
value: |-
@if isint(%q<cmd_argument>)={think setq(enc_n,%q<cmd_argument>)},{think setq(enc_n,if(eq(words(setr(enc_here,u(%!/FUN`ENCOUNTER`HERE,%l))),1),%q<enc_here>))}; @assert cor(strlen(%q<enc_n>),strlen(%q<cmd_argument>),not(words(%q<enc_here>)))=@pemit %#=notice(ENCOUNTER,Encounters [itemize(%q<enc_here>)] are running here. +encounter/join <n> joins one.,warn); @assert cand(strlen(%q<enc_n>),hasattr({{store}},ENC`%q<enc_n>))=@pemit %#=notice(ENCOUNTER,[if(strlen(%q<cmd_argument>),There is no encounter '%q<cmd_argument>'.,There is no encounter here. +encounter/start starts one.)],warn); @assert not(member(u(%!/FUN`ENCOUNTER`JOINED,%#),%q<enc_n>))=@pemit %#=notice(ENCOUNTER,You are in encounter %q<enc_n> already.,warn); @include/args %!/INC`ENCOUNTER`COPYIN=who,%q<viewer_objid>; @remit get({{store}}/ENC`%q<enc_n>`ROOM)=notice(ENCOUNTER,tone(strong,name(%#)) joins encounter %q<enc_n>: [get({{store}}/ENC`%q<enc_n>)]. [tone(muted,Rolls and changes there use a copy of [poss(%#)] sheet.)]); @if comp(%l,get({{store}}/ENC`%q<enc_n>`ROOM))={@pemit %#=notice(ENCOUNTER,You join encounter %q<enc_n>. Your copy is used where it runs%, in [name(get({{store}}/ENC`%q<enc_n>`ROOM))].,ok)}
@if isint(%q<cmd_argument>)={think setq(enc_n,%q<cmd_argument>)},{think setq(enc_n,if(eq(words(setr(enc_here,u(%!/FUN`ENCOUNTER`HERE,%l))),1),%q<enc_here>))}; @assert cor(strlen(%q<enc_n>),strlen(%q<cmd_argument>),not(words(%q<enc_here>)))=@pemit %#=notice(ENCOUNTER,Encounters [itemize(%q<enc_here>)] are running here. +encounter/join <n> joins one.,warn); @assert cand(strlen(%q<enc_n>),hasattr({{store}},ENC`%q<enc_n>))=@pemit %#=notice(ENCOUNTER,[if(strlen(%q<cmd_argument>),There is no encounter '%q<cmd_argument>'.,There is no encounter here. +encounter/start starts one.)],warn); @assert not(member(u(%!/FUN`ENCOUNTER`JOINED,%#),%q<enc_n>))=@pemit %#=notice(ENCOUNTER,You are in encounter %q<enc_n> already.,warn); @include/args %!/INC`ENCOUNTER`COPYIN=who,%q<viewer_objid>; @remit get({{store}}/ENC`%q<enc_n>`ROOM)=notice(ENCOUNTER,tone(strong,name(%#)) joins encounter %q<enc_n>: [get({{store}}/ENC`%q<enc_n>)]. [tone(muted,Rolls and changes there use a copy of [poss(%#)] sheet.)]); @if comp(objid(%l),get({{store}}/ENC`%q<enc_n>`ROOM))={@pemit %#=notice(ENCOUNTER,You join encounter %q<enc_n>. Your copy is used where it runs%, in [name(get({{store}}/ENC`%q<enc_n>`ROOM))].,ok)}
flags: [cmdsyntax]
# +encounter/use <n>: when a room holds several of your encounters, picks the one your rolls and changes go to.
INC`ENCOUNTER`USE:
Expand All @@ -841,12 +841,12 @@ objects:
# +encounter/add <name>[=<n>]: the GM or a keeper brings a character in.
INC`ENCOUNTER`ADD:
value: |-
@assert strlen(%q<cmd_left_side>)=@pemit %#=notice(ENCOUNTER,+encounter/add <name>[=<n>] brings a character into your encounter.,warn); @include/args %!/INC`NEED`ENCOUNTER=number,%q<cmd_right_side>; @include %!/INC`NEED`RUNS; @include/args %!/INC`NEED`TARGET=name,%q<cmd_left_side>; @assert not(member(u(%!/FUN`ENCOUNTER`JOINED,%q<sheet_who>),%q<enc_n>))=@pemit %#=notice(ENCOUNTER,[name(%q<sheet_who>)] is in encounter %q<enc_n> already.,warn); @include/args %!/INC`ENCOUNTER`COPYIN=who,%q<sheet_who>; @remit get({{store}}/ENC`%q<enc_n>`ROOM)=notice(ENCOUNTER,tone(strong,name(%#)) brings [name(%q<sheet_who>)] into encounter %q<enc_n>: [get({{store}}/ENC`%q<enc_n>)]. [tone(muted,Rolls and changes there use a copy of [poss(%q<sheet_who>)] sheet.)]); @if comp(loc(%q<sheet_who>),get({{store}}/ENC`%q<enc_n>`ROOM))={@pemit %q<sheet_who>=notice(ENCOUNTER,[name(%#)] brings you into encounter %q<enc_n>: [get({{store}}/ENC`%q<enc_n>)].)}; @if comp(%l,get({{store}}/ENC`%q<enc_n>`ROOM))={@pemit %#=notice(ENCOUNTER,[name(%q<sheet_who>)] is in encounter %q<enc_n>.,ok)}
@assert strlen(%q<cmd_left_side>)=@pemit %#=notice(ENCOUNTER,+encounter/add <name>[=<n>] brings a character into your encounter.,warn); @include/args %!/INC`NEED`ENCOUNTER=number,%q<cmd_right_side>; @include %!/INC`NEED`RUNS; @include/args %!/INC`NEED`TARGET=name,%q<cmd_left_side>; @assert not(member(u(%!/FUN`ENCOUNTER`JOINED,%q<sheet_who>),%q<enc_n>))=@pemit %#=notice(ENCOUNTER,[name(%q<sheet_who>)] is in encounter %q<enc_n> already.,warn); @include/args %!/INC`ENCOUNTER`COPYIN=who,%q<sheet_who>; @remit get({{store}}/ENC`%q<enc_n>`ROOM)=notice(ENCOUNTER,tone(strong,name(%#)) brings [name(%q<sheet_who>)] into encounter %q<enc_n>: [get({{store}}/ENC`%q<enc_n>)]. [tone(muted,Rolls and changes there use a copy of [poss(%q<sheet_who>)] sheet.)]); @if comp(objid(loc(%q<sheet_who>)),get({{store}}/ENC`%q<enc_n>`ROOM))={@pemit %q<sheet_who>=notice(ENCOUNTER,[name(%#)] brings you into encounter %q<enc_n>: [get({{store}}/ENC`%q<enc_n>)].)}; @if comp(objid(%l),get({{store}}/ENC`%q<enc_n>`ROOM))={@pemit %#=notice(ENCOUNTER,[name(%q<sheet_who>)] is in encounter %q<enc_n>.,ok)}
flags: [cmdsyntax]
# +encounter/leave [<n>]: drops your copy. Nothing goes back to your sheet.
INC`ENCOUNTER`LEAVE:
value: |-
think setq(enc_n,if(isint(%q<cmd_argument>),%q<cmd_argument>,u(%!/FUN`ENCOUNTER`OF,%#))); @assert member(u(%!/FUN`ENCOUNTER`JOINED,%#),%q<enc_n>)=@pemit %#=notice(ENCOUNTER,[if(strlen(%q<cmd_argument>),You are not in encounter '%q<cmd_argument>'.,You are not in an encounter here. +encounter/leave <n> leaves one elsewhere.)],warn); @include/args %!/INC`ENCOUNTER`DROP=who,%q<viewer_objid>,number,%q<enc_n>; @remit get({{store}}/ENC`%q<enc_n>`ROOM)=notice(ENCOUNTER,tone(strong,name(%#)) leaves encounter %q<enc_n>. [tone(muted,Nothing from the encounter's copy goes back to [poss(%#)] sheet.)]); @if comp(%l,get({{store}}/ENC`%q<enc_n>`ROOM))={@pemit %#=notice(ENCOUNTER,You leave encounter %q<enc_n>.,ok)}
think setq(enc_n,if(isint(%q<cmd_argument>),%q<cmd_argument>,u(%!/FUN`ENCOUNTER`OF,%#))); @assert member(u(%!/FUN`ENCOUNTER`JOINED,%#),%q<enc_n>)=@pemit %#=notice(ENCOUNTER,[if(strlen(%q<cmd_argument>),You are not in encounter '%q<cmd_argument>'.,You are not in an encounter here. +encounter/leave <n> leaves one elsewhere.)],warn); @include/args %!/INC`ENCOUNTER`DROP=who,%q<viewer_objid>,number,%q<enc_n>; @remit get({{store}}/ENC`%q<enc_n>`ROOM)=notice(ENCOUNTER,tone(strong,name(%#)) leaves encounter %q<enc_n>. [tone(muted,Nothing from the encounter's copy goes back to [poss(%#)] sheet.)]); @if comp(objid(%l),get({{store}}/ENC`%q<enc_n>`ROOM))={@pemit %#=notice(ENCOUNTER,You leave encounter %q<enc_n>.,ok)}
flags: [cmdsyntax]
# +encounter/remove <name>[=<n>]: the GM or a keeper drops a member's copy.
INC`ENCOUNTER`REMOVE:
Expand All @@ -862,7 +862,7 @@ objects:
# +encounter/end [<n>]: the GM or a keeper ends an encounter and drops every copy.
INC`ENCOUNTER`END:
value: |-
@include/args %!/INC`NEED`ENCOUNTER=number,%q<cmd_argument>; @include %!/INC`NEED`RUNS; think setqm(enc_members,u(%!/FUN`ENCOUNTER`MEMBERS,%q<enc_n>),enc_room,get({{store}}/ENC`%q<enc_n>`ROOM),enc_title,get({{store}}/ENC`%q<enc_n>),enc_summary,u(%!/FUN`FOE`SUMMARY,%q<enc_n>)); @dolist/inline %q<enc_members>={think u(%!/FUN`ENCOUNTER`FORGET,##,%q<enc_n>)}; @wipe {{store}}/ENC`%q<enc_n>; &ENCOUNTER`OPEN {{store}}=[setdiff(get({{store}}/ENCOUNTER`OPEN),%q<enc_n>)]; @remit %q<enc_room>=notice(ENCOUNTER,tone(strong,name(%#)) ends encounter %q<enc_n>: %q<enc_title>. [if(strlen(%q<enc_summary>),%q<enc_summary>%b)][tone(muted,Its copies are gone%, and only what the GM kept is on anyone's sheet.)]); @if comp(%l,%q<enc_room>)={@pemit %#=notice(ENCOUNTER,Encounter %q<enc_n> is over: %q<enc_title>.,ok)}; @dolist/inline %q<enc_members>={@if comp(loc(##),%q<enc_room>)={@pemit ##=notice(ENCOUNTER,[name(%#)] ends encounter %q<enc_n>: %q<enc_title>.)}}
@include/args %!/INC`NEED`ENCOUNTER=number,%q<cmd_argument>; @include %!/INC`NEED`RUNS; think setqm(enc_members,u(%!/FUN`ENCOUNTER`MEMBERS,%q<enc_n>),enc_room,get({{store}}/ENC`%q<enc_n>`ROOM),enc_title,get({{store}}/ENC`%q<enc_n>),enc_summary,u(%!/FUN`FOE`SUMMARY,%q<enc_n>)); @dolist/inline %q<enc_members>={think u(%!/FUN`ENCOUNTER`FORGET,##,%q<enc_n>)}; @wipe {{store}}/ENC`%q<enc_n>; &ENCOUNTER`OPEN {{store}}=[setdiff(get({{store}}/ENCOUNTER`OPEN),%q<enc_n>)]; @remit %q<enc_room>=notice(ENCOUNTER,tone(strong,name(%#)) ends encounter %q<enc_n>: %q<enc_title>. [if(strlen(%q<enc_summary>),%q<enc_summary>%b)][tone(muted,Its copies are gone%, and only what the GM kept is on anyone's sheet.)]); @if comp(objid(%l),%q<enc_room>)={@pemit %#=notice(ENCOUNTER,Encounter %q<enc_n> is over: %q<enc_title>.,ok)}; @dolist/inline %q<enc_members>={@if comp(objid(loc(##)),%q<enc_room>)={@pemit ##=notice(ENCOUNTER,[name(%#)] ends encounter %q<enc_n>: %q<enc_title>.)}}
flags: [cmdsyntax]
# %<who> a character, enc_n an encounter: copies their dots, talents, momentum, stress and condition into it and
# adds it to the encounters on their sheet, last joined last.
Expand Down
Loading