diff --git a/README.md b/README.md index 6761c83..95df4ad 100644 --- a/README.md +++ b/README.md @@ -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 | diff --git a/index.yaml b/index.yaml index 6b427c4..1f172ec 100644 --- a/index.yaml +++ b/index.yaml @@ -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 diff --git a/sheet-charge/package.yaml b/sheet-charge/package.yaml index c689c5d..478b037 100644 --- a/sheet-charge/package.yaml +++ b/sheet-charge/package.yaml @@ -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 @@ -831,7 +831,7 @@ objects: # A character may be in several encounters, each with its own copy. INC`ENCOUNTER`JOIN: value: |- - @if isint(%q)={think setq(enc_n,%q)},{think setq(enc_n,if(eq(words(setr(enc_here,u(%!/FUN`ENCOUNTER`HERE,%l))),1),%q))}; @assert cor(strlen(%q),strlen(%q),not(words(%q)))=@pemit %#=notice(ENCOUNTER,Encounters [itemize(%q)] are running here. +encounter/join joins one.,warn); @assert cand(strlen(%q),hasattr({{store}},ENC`%q))=@pemit %#=notice(ENCOUNTER,[if(strlen(%q),There is no encounter '%q'.,There is no encounter here. +encounter/start starts one.)],warn); @assert not(member(u(%!/FUN`ENCOUNTER`JOINED,%#),%q))=@pemit %#=notice(ENCOUNTER,You are in encounter %q already.,warn); @include/args %!/INC`ENCOUNTER`COPYIN=who,%q; @remit get({{store}}/ENC`%q`ROOM)=notice(ENCOUNTER,tone(strong,name(%#)) joins encounter %q: [get({{store}}/ENC`%q)]. [tone(muted,Rolls and changes there use a copy of [poss(%#)] sheet.)]); @if comp(%l,get({{store}}/ENC`%q`ROOM))={@pemit %#=notice(ENCOUNTER,You join encounter %q. Your copy is used where it runs%, in [name(get({{store}}/ENC`%q`ROOM))].,ok)} + @if isint(%q)={think setq(enc_n,%q)},{think setq(enc_n,if(eq(words(setr(enc_here,u(%!/FUN`ENCOUNTER`HERE,%l))),1),%q))}; @assert cor(strlen(%q),strlen(%q),not(words(%q)))=@pemit %#=notice(ENCOUNTER,Encounters [itemize(%q)] are running here. +encounter/join joins one.,warn); @assert cand(strlen(%q),hasattr({{store}},ENC`%q))=@pemit %#=notice(ENCOUNTER,[if(strlen(%q),There is no encounter '%q'.,There is no encounter here. +encounter/start starts one.)],warn); @assert not(member(u(%!/FUN`ENCOUNTER`JOINED,%#),%q))=@pemit %#=notice(ENCOUNTER,You are in encounter %q already.,warn); @include/args %!/INC`ENCOUNTER`COPYIN=who,%q; @remit get({{store}}/ENC`%q`ROOM)=notice(ENCOUNTER,tone(strong,name(%#)) joins encounter %q: [get({{store}}/ENC`%q)]. [tone(muted,Rolls and changes there use a copy of [poss(%#)] sheet.)]); @if comp(objid(%l),get({{store}}/ENC`%q`ROOM))={@pemit %#=notice(ENCOUNTER,You join encounter %q. Your copy is used where it runs%, in [name(get({{store}}/ENC`%q`ROOM))].,ok)} flags: [cmdsyntax] # +encounter/use : when a room holds several of your encounters, picks the one your rolls and changes go to. INC`ENCOUNTER`USE: @@ -841,12 +841,12 @@ objects: # +encounter/add [=]: the GM or a keeper brings a character in. INC`ENCOUNTER`ADD: value: |- - @assert strlen(%q)=@pemit %#=notice(ENCOUNTER,+encounter/add [=] brings a character into your encounter.,warn); @include/args %!/INC`NEED`ENCOUNTER=number,%q; @include %!/INC`NEED`RUNS; @include/args %!/INC`NEED`TARGET=name,%q; @assert not(member(u(%!/FUN`ENCOUNTER`JOINED,%q),%q))=@pemit %#=notice(ENCOUNTER,[name(%q)] is in encounter %q already.,warn); @include/args %!/INC`ENCOUNTER`COPYIN=who,%q; @remit get({{store}}/ENC`%q`ROOM)=notice(ENCOUNTER,tone(strong,name(%#)) brings [name(%q)] into encounter %q: [get({{store}}/ENC`%q)]. [tone(muted,Rolls and changes there use a copy of [poss(%q)] sheet.)]); @if comp(loc(%q),get({{store}}/ENC`%q`ROOM))={@pemit %q=notice(ENCOUNTER,[name(%#)] brings you into encounter %q: [get({{store}}/ENC`%q)].)}; @if comp(%l,get({{store}}/ENC`%q`ROOM))={@pemit %#=notice(ENCOUNTER,[name(%q)] is in encounter %q.,ok)} + @assert strlen(%q)=@pemit %#=notice(ENCOUNTER,+encounter/add [=] brings a character into your encounter.,warn); @include/args %!/INC`NEED`ENCOUNTER=number,%q; @include %!/INC`NEED`RUNS; @include/args %!/INC`NEED`TARGET=name,%q; @assert not(member(u(%!/FUN`ENCOUNTER`JOINED,%q),%q))=@pemit %#=notice(ENCOUNTER,[name(%q)] is in encounter %q already.,warn); @include/args %!/INC`ENCOUNTER`COPYIN=who,%q; @remit get({{store}}/ENC`%q`ROOM)=notice(ENCOUNTER,tone(strong,name(%#)) brings [name(%q)] into encounter %q: [get({{store}}/ENC`%q)]. [tone(muted,Rolls and changes there use a copy of [poss(%q)] sheet.)]); @if comp(objid(loc(%q)),get({{store}}/ENC`%q`ROOM))={@pemit %q=notice(ENCOUNTER,[name(%#)] brings you into encounter %q: [get({{store}}/ENC`%q)].)}; @if comp(objid(%l),get({{store}}/ENC`%q`ROOM))={@pemit %#=notice(ENCOUNTER,[name(%q)] is in encounter %q.,ok)} flags: [cmdsyntax] # +encounter/leave []: drops your copy. Nothing goes back to your sheet. INC`ENCOUNTER`LEAVE: value: |- - think setq(enc_n,if(isint(%q),%q,u(%!/FUN`ENCOUNTER`OF,%#))); @assert member(u(%!/FUN`ENCOUNTER`JOINED,%#),%q)=@pemit %#=notice(ENCOUNTER,[if(strlen(%q),You are not in encounter '%q'.,You are not in an encounter here. +encounter/leave leaves one elsewhere.)],warn); @include/args %!/INC`ENCOUNTER`DROP=who,%q,number,%q; @remit get({{store}}/ENC`%q`ROOM)=notice(ENCOUNTER,tone(strong,name(%#)) leaves encounter %q. [tone(muted,Nothing from the encounter's copy goes back to [poss(%#)] sheet.)]); @if comp(%l,get({{store}}/ENC`%q`ROOM))={@pemit %#=notice(ENCOUNTER,You leave encounter %q.,ok)} + think setq(enc_n,if(isint(%q),%q,u(%!/FUN`ENCOUNTER`OF,%#))); @assert member(u(%!/FUN`ENCOUNTER`JOINED,%#),%q)=@pemit %#=notice(ENCOUNTER,[if(strlen(%q),You are not in encounter '%q'.,You are not in an encounter here. +encounter/leave leaves one elsewhere.)],warn); @include/args %!/INC`ENCOUNTER`DROP=who,%q,number,%q; @remit get({{store}}/ENC`%q`ROOM)=notice(ENCOUNTER,tone(strong,name(%#)) leaves encounter %q. [tone(muted,Nothing from the encounter's copy goes back to [poss(%#)] sheet.)]); @if comp(objid(%l),get({{store}}/ENC`%q`ROOM))={@pemit %#=notice(ENCOUNTER,You leave encounter %q.,ok)} flags: [cmdsyntax] # +encounter/remove [=]: the GM or a keeper drops a member's copy. INC`ENCOUNTER`REMOVE: @@ -862,7 +862,7 @@ objects: # +encounter/end []: the GM or a keeper ends an encounter and drops every copy. INC`ENCOUNTER`END: value: |- - @include/args %!/INC`NEED`ENCOUNTER=number,%q; @include %!/INC`NEED`RUNS; think setqm(enc_members,u(%!/FUN`ENCOUNTER`MEMBERS,%q),enc_room,get({{store}}/ENC`%q`ROOM),enc_title,get({{store}}/ENC`%q),enc_summary,u(%!/FUN`FOE`SUMMARY,%q)); @dolist/inline %q={think u(%!/FUN`ENCOUNTER`FORGET,##,%q)}; @wipe {{store}}/ENC`%q; &ENCOUNTER`OPEN {{store}}=[setdiff(get({{store}}/ENCOUNTER`OPEN),%q)]; @remit %q=notice(ENCOUNTER,tone(strong,name(%#)) ends encounter %q: %q. [if(strlen(%q),%q%b)][tone(muted,Its copies are gone%, and only what the GM kept is on anyone's sheet.)]); @if comp(%l,%q)={@pemit %#=notice(ENCOUNTER,Encounter %q is over: %q.,ok)}; @dolist/inline %q={@if comp(loc(##),%q)={@pemit ##=notice(ENCOUNTER,[name(%#)] ends encounter %q: %q.)}} + @include/args %!/INC`NEED`ENCOUNTER=number,%q; @include %!/INC`NEED`RUNS; think setqm(enc_members,u(%!/FUN`ENCOUNTER`MEMBERS,%q),enc_room,get({{store}}/ENC`%q`ROOM),enc_title,get({{store}}/ENC`%q),enc_summary,u(%!/FUN`FOE`SUMMARY,%q)); @dolist/inline %q={think u(%!/FUN`ENCOUNTER`FORGET,##,%q)}; @wipe {{store}}/ENC`%q; &ENCOUNTER`OPEN {{store}}=[setdiff(get({{store}}/ENCOUNTER`OPEN),%q)]; @remit %q=notice(ENCOUNTER,tone(strong,name(%#)) ends encounter %q: %q. [if(strlen(%q),%q%b)][tone(muted,Its copies are gone%, and only what the GM kept is on anyone's sheet.)]); @if comp(objid(%l),%q)={@pemit %#=notice(ENCOUNTER,Encounter %q is over: %q.,ok)}; @dolist/inline %q={@if comp(objid(loc(##)),%q)={@pemit ##=notice(ENCOUNTER,[name(%#)] ends encounter %q: %q.)}} flags: [cmdsyntax] # % 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.