Skip to main content

Striker Trait Equation DSL (STEDSL)

A machine-readable, human-readable notation for describing the effects of any entity in the Striker RPG rules. Characters, gear, cyberware, geneware, vehicles, and strikers can all be expressed as sequences of trait equations.

This document serves both as a reference for human authors writing SRD content, and as a specification for parser implementations (primarily EquationParser.ts).


1. Top-level structure​

An effect string is a sequence of segments separated by -> (arrow). Each segment is a sequence of items separated by : (colon, meaning and).

segment0 -> segment1 -> segment2
item0 : item1 : item2

The first segment is the action declaration — it identifies what is being done, by whom, and when. Everything that follows the first -> is the outcome of that action.

feint(bonus-act, R) -> imp-sv(Insight)=8+M(Deception)+R(Cbt-Melee)
└─── action ─────── └─────────────── outcome ─────────────────────

A full weapon usage string has three outcome phases:

chk(TC)= +M(Cbt-Ranged) -> audio=800 : ray=30 : dmg(hp,elec)=6d8 -> 13ep t=act
└─── action (check) ─── └──────── hit effects ───────────────── └── cost ──

Here the action is the check — the roll pair chk(TC)=formula is simultaneously the action declaration and the first outcome phase.

Alternative modes (◊)​

The ◊ character separates alternative selections (ammunition types, operating modes). Everything before the first ◊ is a shared prefix; each subsequent ◊-delimited block is one option.

chk(TC)= +M(Wpn-Rifles (Cbt-Ranged)) -> Strength(min)=-1 : recoil=L : audio=600
◊ ap(rounds) -> range=50|150 : dmg(hp,prc)=1d6 +M : pen=3 -> 1hp [10act]
◊ hp(rounds) -> range=50|150 : dmg(hp,prc)=2d4 +M -> 1hp [12act]
◊ std(rounds) -> range=50|150 : dmg(hp,prc)=1d6 +M : pen=1 -> 1hp [12act]

The shared check line applies to all alternatives. The first ◊ is a body/alts boundary, not a logical OR with the check line.


2. Action declaration​

The action declaration is the opening clause of any effect string. It establishes:

  • What action is being performed (the ActionKey)
  • How long it takes (one or more Period values)
  • Rank requirement (optional R, 2R, etc.)
  • Aspect (optional provenance or autoaspect qualifier)

Form​

actionKey(period[, period][, R|NR][, aspect])

Multiple periods are comma-separated. The + suffix on a period means at minimum this duration, ongoing:

gen(main-act) — generic action, one main act
know(free-act) — knowledge check, free action
feint(bonus-act, R) — feint, bonus action, ≥1 rank required
search(min+) — search, at least one minute
search(min+, R, Bio|Tech) — search with rank and provenance aspect
bypass(min, R, Bio|Tech) — bypass, one minute, rank required
repair(hr+, R, Bio|Tech) — repair, at least one hour
modify(day+, R, Bio|Tech) — modify, at least one day
resequence(permanent) — resequence action (geneware installation)
implant(permanent) — implant action (cyberware installation)
attack(main-act) — standard attack
melee-att(main-act) — melee attack
ranged-att(main-act) — ranged attack
strike(rnd & day+, 1fp) - strike action (go into hyperspace), featuring a compound timing.

Rank qualifier​

R after the timing means the action requires at least 1 rank in the parent skill. 2R requires 2, and so on. Actions with no rank requirement omit R entirely.

Aspect qualifier​

The aspect qualifier restricts which characters can perform the action, or classifies its character. Up to two aspects may appear:

AspectMeaning
BBody autoaspect — physically based
SSkill autoaspect — technique based
B|SEither body or skill
BioBiological provenance (living systems, geneware)
TechTechnological provenance (machines, cyberware)
Bio|TechEither biological or technological

Both aspect categories may appear together: search(min+, R, B, Bio|Tech).

Multi-key actions​

Some actions can be triggered by multiple keys (e.g. a technique that augments either a check or a save):

chk|sv(C)=+M(Skill) — usable as either a check or a save

Actions as state flags (opLine)​

In gear opLine strings the action-declaration slot is instead the item's current operational state — bare flags indicating what the item is currently doing or wearing status:

inactive, worn ◊ s2a -> 1hp 2ep t=bonus-act
└── state flags ──── └─ state transition ─

s2a (scaffold-to-artefact) is the label of the available transition, not an ActionKey. The -> cost that follows it gives the timing and resource cost of performing the transition.

For installation operations the action declaration is the action:

implant -> rst(corr)+2 : Agility+B+1
resequence -> hp(v)+20 : Health+2

CostLine — no action declaration​

The costLine of a gear entry carries only flat property assignments — no action declaration:

cost=1400|2 : wt=0.8 : CC=13

3. Separators at a glance​

TokenMeaning
->Phase separator — leads to / costs
:Item separator — and (concurrent)
,Also an item separator (legacy, especially in armour lists)
◊Alternative selector — or, pick one
|Logical or within a single item
<Before (preceding phase qualifier)

4. Trait assignments​

Simple assignment​

key=value

Sets a trait to a value. No space around =.

audio=800
Strength(min)=-6
Agility+B(max)=5
range=20|60
wt=0.8
cost=1400|2
CC=13

The value can be:

  • An integer: 800, -6, 5
  • A float: 0.5
  • A pipe-delimited range pair (two integers): 20|60 — typically short|long range, or cost|rarity
  • A bare capital letter: M, H, L — used for stepped traits like recoil=H
  • A formula (see §8): 6d8, +M(Cbt-Ranged), 8+M(Health)

Additive modification​

key+N key-N

Adds or subtracts N from the current trait value.

rst(prc)+1
TC+1
pen-1
Agility+B+1

The scan for the ±N suffix is right-to-left and depth-aware, so + or - signs inside parentheses are not split on. chk(Stealth+B,ls,gs)+1 correctly produces key chk(Stealth+B,ls,gs), modifier +1.

Qualified keys​

Many traits have a parenthetical qualifier as part of their key:

rst(frc) — resistance to force
dmg(hp,prc) — piercing health-point damage
fld(elec) — electrical field
mishap(cyberware)=2
hp(v,curr) — vital HP current value
Strength(min)=-6 — minimum Strength required
Agility+B(max)=5 — cap on Agility+B modifier

The qualifier is syntactically part of the key, not a separate token.


5. Challenge keys​

Used as the argument to roll pairs (§6). All use parentheses for sub-qualifiers:

KeyMeaning
TCTarget Challenge — standard opposed roll
TC,AArea TC — the roll targets an area (all creatures within)
SCSkill Challenge — untargeted skill contest
PCPsion Challenge
CCComplexity Challenge — artefact complexity rating
CC,QCC (Quality) — enhanced quality level of the artefact
CC,SCC (Security) — security complexity route
CGeneric challenge

6. Roll pairs​

A roll pair is always two consecutive tokens: a roll type with its challenge qualifier, then = with the formula.

chk(TC)= +M(Wpn-Rifles (Cbt-Ranged))
sv(SC)= +M(Resolve)
imp-sv(Agility+B)= 8+M
psv(C)= 10+M(Perception)
set(TC,A)= 12
RollMeaning
chk(C)=Contested check — roll d20 + formula vs challenge C
chk+(C)=Boosted check — effectively max(d20, 10) + formula
sv(C)=Save — roll d20 + formula vs challenge C
imp-sv(Skill)=Imposed save — the attacker imposes a save on the target; the qualifier is the saving skill, not the challenge (which is the attacker's result)
psv(C)=Passive check — sets a passive value (10 + formula) rather than rolling
set(C)=Sets a static challenge value, e.g. set(TC,A)= 12

The skill name in +M(...) may itself include parenthetical category qualifiers:

chk(TC)= +M(Wpn-Rifles (Cbt-Ranged))
↑ category in parens — depth-aware splitting handles this

7. Formulae and modifiers​

Formulae appear as the value in a roll pair or assignment. Terms are space-separated and additive unless qualified.

NotationMeaning
+M(Skill)Add the character's M modifier in Skill
+M*(Skill)Add the resource-improved M modifier
+R(Skill)Add the character's rank in Skill
+½•R(Skill)Add half rank
+(QualifierSkill)Add the qualifier skill bonus (e.g. +(Aegis))
NdXRoll N X-sided dice, e.g. 6d8, 2d6
fp•d6Roll focus-points × d6
weapThe weapon's own damage value
NA literal integer constant
+M(Str) +M(Skill)Sum of two modifiers

Fractional operators: ½•, ⅓•, ¼•, ⅕• multiply the following term.

Grouping: 2•(fp•d6 +M(Psimetabolism)) — the parenthesised sub-formula is multiplied.


8. Resource costs​

A resource cost is a compact Namount notation — value directly adjoined to the resource key, no operator symbol:

3hp 2ep 1fp

Multiple resource costs are separated by spaces (the parser normalises them to :), but when followed by a /period consumption token they are written space-separated as a unit:

3hp 1ep /8•hr
20hp /10•act
2ep /10•rnd

Resources:

KeyMeaning
hpHealth points
epEnergy points
fpFocus points

Multiplier suffixes on cost values: 5K = 5,000 · 1.2K = 1,200 · 2M = 2,000,000.


9. Action timing (t=)​

The t= token marks the action cost of performing the preceding effect. It is distinct from consumption rate (§10).

t=main-act
t=bonus-act
t=act
t=8•act (8 acts — unusual, but valid)
t=instant
t=w/act (alongside another act)

Legacy bracket form is also accepted by the parser ([main-act], [8act]) but t= is the canonical authoring form.

All period values​

free-act bonus-act re-act main-act move-act act w/act w/move-act turn contest instant rnd min scene hr day rest week permanent

act is a generic any action timing. w/act means performed as part of / accompanying another action.


10. Consumption rate (/period)​

/period marks the rate at which a gear item consumes resources while operating. It follows a resource cost block and always belongs to that block, not to any preceding item.

3hp 1ep /8•hr consumed every 8 hours (suits, powered armour)
20hp /10•act capacity = 20hp over 10 actions (tracker form)
2ep /10•rnd capacity = 2ep over 10 rounds (tracker form)
1hp /act 1hp per act

Action/round-based consumption (/N•act, /N•rnd) is rendered as a tick-off tracker in the character sheet, with circles representing individual units. Time-based consumption (/hr, /day, etc.) is rendered as bold text.

t= vs /period:

  • t=main-act is the cost to fire the weapon once — paid every time you pull the trigger.
  • 20hp /10•act is the magazine capacity — the total resource available before reloading/recharging.

11. Damage​

dmg(hp,frc)=2d6 +M force damage to health points
dmg(hp,prc)=1d8 +M piercing hp damage
dmg(hp,elec)=6d8 electrical hp damage
dmg(ep)=3d4 energy point damage
dmg(fp)=2d4 focus point damage

Damage types​

frc prc sls elec fire cold heat corr (corrosive) psn (poison) rad (radiation)

Untyped: dmg(hp), dmg(ep), dmg(fp).

Penetration​

pen=3 penetrates 3 points of armour resistance
pen+1 adds 1 to penetration

Field damage​

A field is an ambient environmental effect, not a targeted attack. Same type keys, prefixed fld:

fld(press)=0.25 pressure field intensity
fld(elec)=2d6 electrical field

12. Resistance​

rst(frc)+2 +2 resistance to force damage
rst(corr)+3
rst(all)+1 +1 to all damage types

All resistance types mirror the damage types: frc prc sls elec fire cold heat corr psn rad plus all and any.


13. Area of effect​

All values in metres unless otherwise stated.

NotationShape
range=20|60Single-target; short/long range pair
ray=30Line from caster, 30 m
cone=20Cone, 20 m length
spray=40Spray arc, 40 m
radius=10Circle, 10 m radius

14. Audio​

audio=800 the loudness of an effect (800 = very loud, 20 = very quiet)

audio is the output loudness of a weapon or device — it tells observers and sensors how detectable the effect is.

Not to be confused with audiosense:

audiosense=20 the character's hearing sense (targeting increment 20 m)

audiosense=N is a character trait; audio=N is a gear trait.


15. Sense traits​

Character sense traits use the same trait=N form:

lightsense=30
gravitysense=20
sonarsense=40
magnetosense=15
olfactorsense=10
audiosense=20
allsense=20

Sense properties D (darksense), S (sensitive), DS (both) are appended with +:

lightsense+D
lightsense+DS
lightsense+20|D (range 20 with darksense property)

16. Conditions​

cond(prone)
cond(stunned)
cond(frightened)
cond(invisible)
cond(paralysed)
cond(mental,any)
cond(physical,any)

Full list: asleep charmed confused dazed diseased driven dulled enthralled flanked frightened hypersleep invisible paralysed prone restrained sickened stunned unconscious


17. Vulnerability and immunity​

vuln(elec) vulnerable to electrical damage
vuln(psn|rad) vulnerable to poison or radiation
imm(sv,Psimetabolism) immunity to saves involving Psimetabolism

18. Mishaps​

Cyberware and some geneware carries a mishap rating. A character's mishap in a category equals the highest value across all installed items.

mishap(cyberware)=2
mishap(insanity)=1
mishap(mortality)=3

Categories: cyberware electric exhaustion insanity lycanthropy mortality poison teleporter


19. Targets​

tg(self) self-targeting
tg(touch) touch range
tg(opp) one opponent
tg(opp,see) one opponent in sight
tg(ally) one ally
tg(ally|opp) ally or opponent
tg(area,see) all targets observed
tg(area,in-range) all targets in area/range
tg(area,triggered) creatures triggering a sensor
tg(artefact) a machine/vehicle/bot
tg(vehicle) a vehicle
tg(effect) targeting an existing effect

20. Qualifier operators​

These modify or restrict the preceding item.

FormMeaning
regain(day)The preceding item can only be used again after 1 day
regain(3•day)Only regainable after 3 days
freq(1/day)Usable up to once per day
after(1•day)Not available until 1 day has passed
after(1•day,short rest)After 1 day or a short rest
if(using off-hand)Only applies if the stated condition holds

21. Advantage and disadvantage​

adv(chk,Agility+B) advantage on checks involving Agility+B
dadv(chk,Cbt-Melee) disadvantage on Cbt-Melee checks
dadv(sv,Psimetabolism) disadvantage on Psimetabolism saves
imm(sv,Psimetabolism) immunity (cannot be subject to saves involving this skill)

22. Op-line prefixes (installation state)​

The opLine of a piece of gear describes its operational state — what mode it is in and the cost to shift between states.

inactive, worn ◊ s2a -> 1hp 2ep t=bonus-act
  • inactive, worn — the item's current-state flags (read as bare flags before the first ◊)
  • s2a — scaffold-to-artefact: the action of converting from scaffold (unprinted) to artefact (ready-to-use)
  • -> 1hp 2ep t=bonus-act — the cost of that conversion

For enhancements that are permanently installed:

implant -> rst(corr)+2 : Agility+B+1 applied permanently when implanted
resequence -> hp(v)+20 : Health+2 applied permanently when resequenced

The implanted / resequenced bare flags indicate current installation state.


23. Common full patterns​

Skill — simplest form​

gen(main-act) -> chk|sv(C)=+M(Skill)

The gen action with no rank requirement. chk|sv means the player may roll as either a check or a save.

Skill technique requiring rank​

feint(bonus-act, R) -> imp-sv(Insight)=8+M(Deception)+R(Cbt-Melee)

The technique costs a bonus action and requires at least 1 rank. On success it imposes an Insight save on the target, with difficulty set by the attacker's Deception modifier plus their Cbt-Melee rank.

Engineering action​

repair(hr+, R, Bio|Tech) -> chk(CC)=+M(Machinery) + (CC,Q - CC)

At least one hour, rank required, applies to Bio or Tech provenance artefacts. The check formula includes the quality difference CC,Q - CC (quality CC minus base CC).

Ranged weapon (single-target)​

chk(TC)= +M(Wpn-Rifles (Cbt-Ranged)) -> Strength(min)=-1 : recoil=L : audio=600 : range=20|60 : dmg(hp,prc)=2d6 +M : pen=3 -> 3hp [10act]

Phase 0: roll d20 + Rifles M vs TC.
Phase 1: hit effects — minimum Strength, light recoil, audio level, range, damage, penetration.
Phase 2: resource cost — 3hp per 10 acts (magazine capacity, tracker).

Ranged weapon (area)​

chk(TC,A)= +M(Wpn-Spray (Cbt-Ranged)) -> Strength(min)=-2 : audio=400 -> imp-sv(Agility+B)= 8+M -> spray=40 : dmg(hp,fire)=3d6 -> 20hp /10•act

Phase 0: area check (TC,A) vs all targets in area.
Phase 1: weapon properties.
Phase 2: imposed save — targets must save Agility+B vs 8+M attacker.
Phase 3: spray shape + damage.
Phase 4: consumption — 20hp over 10 acts.

Melee weapon​

chk(TC)= +M(Wpn-Blades-Long (Cbt-Melee)) -> Strength(min)=0 : recoil=L : audio=20 : dmg(hp,sls)=1d8 +M

No resource cost phase — melee weapons have no ammo.

Environmental suit​

rst(frc)+1 : rst(heat)+2 : Agility+B(max)=5 -> 3hp 1ep /8•hr

Phase 0: defensive properties while worn.
Phase 1: consumption — 3hp + 1ep per 8 hours of operation.

Cyberware (permanent enhancement)​

implant -> rst(corr)+2 : Agility+B+1

Implanting applies the effects permanently. No consumption.

Cyberware (activated ability)​

active (implanted) -> chk(TC)= +M(Cbt-Melee) -> dmg(hp,elec)=2d6 -> 2ep t=main-act

The active (implanted) guard means the effect is only available when the item is active and installed.

Geneware (periodic — Lycanthropy)​

Periodic geneware effects (transformations) are not applied to base character traits. The player applies them manually when the transformation completes.

Psi technique​

chk(SC)= +M(Psimetabolism) -> tg(opp,see)=1 -> dmg(fp)=2d4 -> 2fp t=main-act : regain(rest)

Phase 0: SC check + Psimetabolism modifier.
Phase 1: targets one visible opponent.
Phase 2: focus-point damage.
Phase 3: 2fp cost, main action; can only be used again after a rest.


24. Output forms​

A STEDSL expression can be rendered in three ways depending on context.

Full form​

The raw notation, exactly as written. Skill and technique names are shown in full within their M(...) / R(...) qualifiers. No values are pre-computed.

chk(TC)= +M(Wpn-Handguns (Cbt-Ranged)) -> dmg(hp,prc)=2d6+M -> 2ep t=act

Context form​

Like Full form, but skill references that are obvious from the surrounding context (e.g. the weapon's own category) may be omitted. Kept when ambiguous or unusual, such as M(Strength) in a melee attack that would normally use a combat skill.

Applied form​

Used on printed character sheets. The M, M*, R, and R* references are resolved to the character's actual values at the time of printing. The formula is wrapped in [...] and rendered in midtone grey immediately after the calculated value.

Rule: evaluate the entire sub-expression that contains the M/R reference numerically, then render as VALUE[formula] — where VALUE is the computed number (with sign) and [formula] is the original expression without the embedded value.

Raw (after M*-resolution)Applied formNotes
M*[6]6[M*]standalone
+M*[6]+6[M*]sign-prefix; value positive
+M[-2]-2[+M]sign-prefix; value negative → + moves into formula
10+M*[6]16[10+M*]additive constant: 10+6=16
8+M[10]18[8+M]additive constant: 8+10=18
4•M*[11]44[4•M*]integer coefficient: 4×11=44
½•M*[11]5[½•M*]fraction coefficient: floor(½×11)=5
3+½•M*[6]6[3+½•M*]const + fraction: floor(3+½×6)=6
3+⅓•M*[11]6[3+⅓•M*]const + fraction: floor(3+⅓×11)=6
fp•d6+M[5]fp•d6+5[M]non-numeric prefix (fp•d6) left unchanged

M* and R* — the star suffix means the character spends the minimum required resource (fp or ep) on completing the conjugate, so M* = M + min_cost. The printed value is therefore a minimum guarantee; spending more resource raises it further. See §17.


25. Gear catalogues: cost/op/usage structure​

Every Gear entry has three expression fields:

FieldPurposeTypical form
costLineCost, weight, complexity`cost=1400
opLineOperational state and s2a costinactive, worn ◊ s2a -> 1hp 2ep t=bonus-act
usage[].effectEffect at action timechk(TC)= +M(...) -> dmg(...)

cost=value|rarity — pipe-separated; left is the credit cost, right is the rarity tier.
wt=artefact|scaffold — pipe-separated; left is the artefact weight, right (if present) is scaffold weight.
CC=N — Complexity Challenge rating (analogous to TC/SC/PC for artefact complexity; not a credit deduction).