From GamingWiki
Jump to: navigation, search
 
(116 intermediate revisions by the same user not shown)
Line 1: Line 1:
<noinclude>{{Documentation}}</noinclude>
+
<!--
{| class="infobox floatright"
 
! colspan="4" | {{{charactername}}} <!--
 
-->{{#if: {{{campaign<includeonly>|</includeonly>}}}{{{player<includeonly>|</includeonly>}}}|<div class="campaign"><!--
 
  --> {{#if: {{{campaign<includeonly>|</includeonly>}}}| [[{{{campaign}}}]] <includeonly>[[Category: {{{campaign}}}]]</includeonly>}} <!--
 
  --> {{#if: {{{player<includeonly>|</includeonly>}}}|<!--
 
    --> ([[{{{player}}}]]) <!--
 
  -->}} <!--
 
--></div>}}<!--
 
-->
 
|-<!--
 
  
Sections at the top of the sheet, such as High Concept and Trouble, in DFRPG.
+
  @todo more sub-templates, like the skill block one
  
-->{{#hashdefine: topsectionhash }}<!--
+
--><onlyinclude><!--
-->{{#forargs: topheader | key | value | <!--
 
  -->{{#rmatch: {{#var:key}} | /(header|label|data)(\d+)/ | <!--
 
      -->{{#hashdefine: singlesection | {{#hashvalue: topsectionhash | $2 }} }}<!--
 
      -->{{#hashinclude: singlesection | $1 | {{#var:value}} }}<!--
 
      -->{{#hashinclude: topsectionhash | $2 | {{#hashprint: singlesection | , | %%%% | @@@@ | %%%%;@@@@ }} }}<!--
 
  -->}}<!--
 
-->}}<!--
 
--><nowiki />
 
| colspan = "4" | topsectionhash: {{#hashprint: topsectionhash | , | %%%% | @@@@ | ''' %%%% ''' : '' @@@@ '' }}
 
|- <!--
 
-->{{#vardefine: topsectnum | 1}}<!--
 
-->{{#while: | <!-- want one of the following to be nonempty:
 
  -->{{{topheader{{#var: topsectnum}}|}}}<!--
 
  -->{{{toplabel{{#var: topsectnum}}|}}}<!--
 
  -->{{{topdata{{#var: topsectnum}}|}}}<!--
 
-->|<!--
 
  -->{{#if:{{{topheader{{#var: topsectnum}}|}}}|<!--
 
    Draw a header
 
  --><nowiki />
 
{{!}}-
 
{{!}} colspan="4" class="subhead" {{!}} {{{topheader{{#var: topsectnum}}|}}} <!--
 
  -->|<!-- if no header
 
    --><nowiki />
 
{{!}}-
 
{{!}} class="shaded" {{!}} {{{toplabel{{#var: topsectnum}}|}}}
 
{{!}} colspan="3"    {{!}} {{{topdata{{#var: topsectnum}}|}}}
 
    <!--
 
  -->}}<!-- end if
 
  -->{{#vardefine: topsectnum | {{#expr: {{#var: topsectnum}} + 1}} }}<!--
 
-->}}<!-- end while
 
  
  End top sections
+
-->{{#parameterstohash: paramsHash}}<!--
  
  ASPECTS
+
-->{{#vardefine:cols  |{{{columns|6}}}}}<!--
 +
-->{{#vardefine:cols_l|{{#expr: ceil( {{#var: cols}} / 2 ) }} }}<!--
 +
-->{{#vardefine:cols_r|{{#expr: ( {{#var: cols}} - {{#var: cols_l}} ) }} }}<!--
  
-->
+
-->{{#vardefine:contentcols  |{{#expr: ( {{#var: cols  }} - 1 ) }} }}<!--
|-
+
-->{{#vardefine:contentcols_l|{{#expr: ( {{#var: cols_l}} - 1 ) }} }}<!--
| class="subhead" colspan="4" | Aspects
+
-->{{#vardefine:contentcols_r|{{#expr: ( {{#var: cols_r}} - 1 ) }} }}<!--
|-
 
| class="shaded" |
 
| colspan="3" | {{
 
#if: {{{image|}}} | [[Image:{{{image}}}{{!}}thumb{{!}}{{{caption|}}}]]
 
}}{{Array Map | array = {{{aspects}}} | before = <nowiki />
 
* <span class="aspect">|after=</span> }} <!--
 
  
  SKILLS
+
-->{{#vardefine:name|{{{charactername| {{{character name| {{{name}}} }}} }}} }}<!--
 +
-->{{#vardefine:campaign|{{{campaign<includeonly>|</includeonly>}}} }}<!--
  
 
-->
 
-->
|-
+
{| class="infobox floatright {{{tableclass|}}}"
| class="subhead" | Skills
+
! colspan="{{#var:cols}}" | {{#var:name}} <!--
| colspan="3" class="shaded" | <!--
+
--><div class="campaign"><!--
 +
  --> {{#if: {{#var:campaign}}| [[{{#var:campaign}}]] }} <!--
 +
  --> {{#if: {{{player|}}}|([[User:{{{player}}}|{{{player}}}]]) }} <!--
 +
--></div>
 +
|-<!--
  
  Skill listing setup
+
Sections at the top of the sheet, such as High Concept and Trouble.
  
Define the types of skills available, and add a list of them to  
+
-->{{#hashdefine: topsectionhash }}<!--
the character sheet. These each have their own class, too.
+
-->{{#forargs: top | keynum | value | <!--
 
+
    We have arguments like "toplabel2 = My Label", which we split into the
-->{{#vardefine: skillClass  | {{{skillclass|skill}}} }}<!--
+
    key-number pair "keynum", in this case "label2", and the value. We want
-->{{#vardefine: skillClskey | {{#replace: {{#var: skillClass}} ||-}} }}<!--
+
    to further split this up so we get the key and the number separately.
-->{{#vardefine: stidx      | 0 }}<!--
+
  -->{{#hashreset: singlesection}}<!--
-->{{#while: <!--
+
  -->{{#vardefine: key | {{#rmatch: {{#var:keynum}} | (\D+)(\d+) | $1 }}}}<!--
  -->| {{#vardefineecho: skilltype | <!--
+
  -->{{#vardefine: num | {{#rmatch: {{#var:keynum}} | (\D+)(\d+) | $2 }}}}<!--
      -->{{#explode: {{{skilltypes|combat track}}} | | {{#var: stidx}} }} <!--
+
  -->{{#hashdefine: singlesection | {{#hashvalue: topsectionhash | {{#var:num}} }} | ,sec, | ;sec; }}<!--
    -->}}<!-- end vardefineecho
+
  -->{{#hashinclude: singlesection | {{#var:key}} = {{#var:value}} }}<!--
  -->| {{#vardefine: {{#var:skilltype}}Class | {{#var:skilltype}} }}<!--
+
  -->{{#if: {{#var: num}} | <!--
    -->{{#ifeq:{{#var:stidx}}|0|types: |, }} <!--
+
      -->{{#hashinclude: topsectionhash | <!--
    --><span class="{{#var: skillClass}} {{#var:skilltype}}">{{#var:skilltype}}</span><!--
+
        --> {{#var:num}} = {{#hashprint: singlesection | ,sec, | %%%% | @@@@ | %%%%;sec;@@@@ }} <!--
    -->{{#vardefine: stidx | {{#expr: {{#var: stidx}} + 1}} }}<!--
+
      -->}}<!--
-->}}<!-- end while -->
+
  -->}}<!--
|-
+
-->}}<!--
<!--
+
  Now each value of topsectionhash can be parsed into a new hash:
 
+
-->{{#hashprint: topsectionhash || %%%% | @@@@ | <!--
 
+
  -->{{#hashdefine: thetopsection | @@@@ | ,sec, | ;sec; }}<!--
Now define the skill modifiers available. Each of these will have
+
  -->{{Character sheet/section | columns = {{#var:cols}} <!--
as associated HTML fragment that is appended to the skill name.
+
      -->| llabel1 = {{#hashvalue: thetopsection | llabel }} <!--
 
+
      -->| ldata1  = {{#hashvalue: thetopsection | ldata  }} <!--
-->{{#vardefine: smidx | 0 }}<!--
+
      -->| label1  = {{#hashvalue: thetopsection | label }} <!--
-->{{#while: | <!-- while skill marker
+
      -->| data1  = {{#hashvalue: thetopsection | data }} <!--
  -->{{#vardefineecho: marker | {{#explode: {{{skillmarkers|}}} | ;; | {{#var: smidx}} }} }}<!--  
+
      -->| rlabel1 = {{#hashvalue: thetopsection | rlabel }} <!--
-->|<!--
+
      -->| rdata1  = {{#hashvalue: thetopsection | rdata  }} <!--
  -->{{#vardefine: mKey | {{#replace: {{lc:{{#explode: {{#var: marker}} | // | 0 }}}} ||}} }}<!--
+
  -->}}<!--
  -->{{#vardefine: {{#var:mKey}}HTML | {{#explode: {{#var: marker}} | // | 1 }} }}<!--
 
  -->{{#vardefine: smidx | {{#expr: {{#var: smidx}} + 1}} }}<!--
 
-->}}<!-- end while marker
 
 
 
 
 
We may have custom skill ranks.
 
 
 
-->{{#vardefine: skillLevel | {{{skillranks| Average Decent Good Great Superb }}} }}<!--
 
-->{{#vardefine: numSkLvl    | 0 }}<!--
 
-->{{#while: | {{#explode: {{#var:skillLevel}} | | {{#var:numSkLvl}} }} | <!--
 
  -->{{#vardefine: numSkLvl  | {{#expr: {{#var:numSkLvl}} + 1}} }}<!--
 
 
-->}}<!--
 
-->}}<!--
-->{{#vardefine: slidx      | {{#var:numSkLvl}} }}<!--
 
  
   Iterate over all defined skill levels, from highest to lowest:
+
   End top sections
-->{{#while: | <!-- while skill level
 
  -->{{#ifeq: {{#var:slidx}} | 0 | | 1 }}<!-- not yet zero
 
-->|<!--
 
  
We either have a long section of skills, or one entry per level.
+
-->
  -->{{#if: {{{skills|}}} <!--
+
|- <!--
  
   -->|<!-- One 'skills' section.
+
   ASPECTS
  Lines are listed in descending order of skill. Each line is of the form:
+
-->{{#hashtotemplate: {{{aspect section template | Character sheet/FATE/Aspect section}}} | paramsHash }}<!--
;; SkillName//OpModifier[//OpModifier ...] :: SkillName//OpModifier ...
 
  where SkillName is just what it says, and OpModifier is an optional
 
  modifier such as 'MG'.
 
  Note: we assume that no skill lines are missing.
 
  
    Skill row:
+
  SKILLS
    -->{{#vardefine: skillrow | {{#explode:{{{skills|}}}|;;| {{#expr: -{{#var: slidx}}}} }} }}<!--
+
-->{{#hashtotemplate: {{{skill section template | Character sheet/FATE/Skill section}}} | paramsHash }}<!--
 
 
  -->|<!-- multiple sections: 'skills1', 'skills2', etc.
 
  There are several parameters: skills1, skill2, and so on. Each corresponds
 
  to a single skill rank, and each is of the form:
 
skillN = SkillName//OpModifier[//OpModifier ...] :: SkillName//OpType//OpModifier ...
 
  as in the previous form. We no longer assume that all skill lines are
 
  present; gaps may be left if desired.
 
 
 
    Skill row:
 
    -->{{#vardefine: skillrow | {{{skills{{#var: slidx}}|}}} }}<!--
 
 
 
  -->}}<!-- end skills conditional
 
 
 
  TODO: allow for skills starting at +0?
 
  
   -->{{#vardefine: levelnum | {{#var: slidx}} }}<!--
+
   STUNTS
  -->{{#vardefine: slidx | {{#expr: {{#var: slidx}} - 1}} }}<!--
+
-->{{#hashtotemplate: {{{stunt section template | Character sheet/FATE/Stunt section}}} | paramsHash }}<!--
    Skill level name:
 
  -->{{#vardefine: thelevel | {{#explode: {{#var: skillLevel}} | | {{#var: slidx}} }} }}<!--
 
 
 
    Get the right skill row, if it exists:
 
  -->{{#if:{{#var: skillrow}}<!--
 
  -->|<!-- There are skills defined at this level
 
    --><nowiki />
 
{{!}} class="label" {{!}} {{#var: thelevel}} (+{{#var: levelnum}})
 
{{!}} colspan="3" {{!}} <!--
 
    -->{{#vardefine: skidx      | 0 }}<!--
 
    -->{{#while: | <!-- while skill
 
      -->{{#vardefineecho: theskill | {{#explode:{{#var: skillrow}}|::| {{#var: skidx}} }} }}<!--
 
    -->|<!--
 
      -->{{#vardefine: skillname | {{#explode: {{#var: theskill}} |//| 0 }} }}<!--
 
      -->{{#vardefine: skillkey  | {{#replace: {{lc:{{#var: skillname}}}} ||-}} }}<!--
 
      -->{{#vardefine: skilltype | {{#explode: {{#var: theskill}} |//| 1 }} }}<!--
 
        The following is for later use:
 
      -->{{#vardefine: skillValue{{#replace: {{lc:{{#var: skillname}}}} ||}} | {{#var: levelnum}}}}<!--
 
 
 
      -->{{#ifeq: {{ #var: skidx }} | 0 ||, }} <span class="{{#var: skillClass }}"><!--
 
      --><span class="{{#var: {{#var: skilltype}}Class }} skill-{{#var:skillkey}}"><!--
 
      -->{{#var: skillname | _____ }}<!--
 
      --></span> <!--
 
 
 
        Look for skill markers:
 
      -->{{#vardefine: smidx | 1 }}<!--
 
      -->{{#while: | <!-- while skill marker
 
        -->{{#vardefineecho: skillmod | {{#explode: {{#var: theskill}} |//| {{#var:smidx}} }} }}<!--
 
      -->|<!--
 
        -->{{#vardefine: mKey | {{#replace: {{lc:{{#var: skillmod}}}} }} }}<!--
 
        -->{{#if:{{#var: {{#var:mKey}}HTML }}|{{#var: {{#var:mKey}}HTML }}|({{#var:skillmod}})}}<!--
 
        -->{{#vardefine: smidx | {{#expr: {{#var: smidx}} + 1}} }}<!--
 
      -->}}<!-- end while marker
 
      --></span> <!--
 
 
 
      -->{{#vardefine: skidx | {{#expr: {{#var: skidx}} + 1}} }}<!--
 
    -->}}<!-- end while skill -->
 
{{!}}-<!--
 
  -->}}<!-- end if skills exist at this level
 
-->}}<!-- end while skill level
 
 
 
Stunts section
 
 
 
-->
 
| colspan="4" class="subhead" | Stunts
 
|-
 
<!--
 
-->{{#vardefine: stidx | 1 }}<!--
 
-->{{#while: | <!-- loop over 'stunts' array
 
  -->{{#vardefineecho: thestunt | {{#explode:{{{stunts|}}}|;;| {{#var: stidx}} }} }}<!--
 
-->|<!--
 
  -->{{#vardefine: stidx | {{#expr: {{ #var: stidx }} + 1}} }}<!--
 
  -->{{#vardefine: stunttext |<!--
 
      -->{{#explode:{{#var: thestunt}}|//| 0 }}<!--
 
      If the stunt has a description we put it on a new line.
 
      -->{{#if:{{#vardefineecho: stuntdesc | {{#explode:{{#var: thestunt}}|//| 2 }} }} |<!--
 
        --><br />''{{#var:stuntdesc}}''<!--
 
      -->}}<!--
 
  -->}}<!--
 
  If there is some qualifier to the stunt, we do three columns for
 
  the stunt name and one for the qualifier. Otherwise, four for
 
  the stunt name.
 
  -->{{#if: {{#vardefineecho: stuntmod |{{#explode:{{#var: thestunt}}|//| 1 }} }}<!--
 
  -->|<!-- The stunt has a modifier
 
      --><nowiki/>
 
{{!}} colspan="3" {{!}} {{#var: stunttext}} <!--
 
      -->
 
{{!}} {{#rmatch: {{#var: stuntmod}} |^\s*(\-?\d+)\s*$| [\1] | ({{#var: stuntmod}}) }}<!--
 
  -->|<!-- The stunt has no modifier
 
      --><nowiki/>
 
{{!}} colspan="4" {{!}} {{#var: stunttext}} <!--
 
  -->}}<!-- End stunt modifier detection --><nowiki />
 
{{!}}- <!--
 
-->}}<!-- end while stunts
 
  
 
Extra sections
 
Extra sections
Line 226: Line 80:
 
   -->{{{data{{#var: sectnum}}|}}}<!--
 
   -->{{{data{{#var: sectnum}}|}}}<!--
 
-->|<!--
 
-->|<!--
   -->{{#if:{{{header{{#var: sectnum}}|}}}|<!--
+
   -->{{#if:{{#vardefineecho:sectheader|{{{header{{#var: sectnum}}|}}}}}|<!--
    Draw a header
+
        Draw a header
  --><nowiki />
+
    -->{{Character sheet/section subhead |{{#var:sectheader}}g| columns = {{#var:cols}} }}<!--
{{!}}-
+
    --><!--{{Character sheet/section | columns = {{#var:cols}} --><!--
{{!}} colspan="4" class="subhead" {{!}} {{{header{{#var: sectnum}}|}}} <!--
+
        --><!--| header1 = {{{header{{#var: sectnum}}|}}} --><!--
 +
    --><!--}}--><!--
 
   -->|<!-- if no header
 
   -->|<!-- if no header
    --><nowiki />
+
    -->{{Character sheet/section | columns = {{#var:cols}} <!--
{{!}}-
+
        -->| label1 = {{{label{{#var: sectnum}}|}}}h <!--
{{!}} class="shaded" {{!}} {{{label{{#var: sectnum}}|}}}
+
        -->| data1  = {{{data{{#var: sectnum}}|}}}j <!--
{{!}} colspan="3"    {{!}} {{{data{{#var: sectnum}}|}}}
+
    -->}}<!--
    <!--
 
 
   -->}}<!-- end if
 
   -->}}<!-- end if
 
   -->{{#vardefine: sectnum | {{#expr: {{#var: sectnum}} + 1}} }}<!--
 
   -->{{#vardefine: sectnum | {{#expr: {{#var: sectnum}} + 1}} }}<!--
Line 246: Line 100:
 
-->{{#vardefine: refresh        | {{#if:{{{refresh|}}}|{{{refresh}}}|{{#var:defaultrefresh}} }} }}<!--
 
-->{{#vardefine: refresh        | {{#if:{{{refresh|}}}|{{{refresh}}}|{{#var:defaultrefresh}} }} }}<!--
 
-->{{#vardefine: fp            | {{#if:{{{fp|}}}|{{{fp}}}|{{#var:refresh}} }} }}<!--
 
-->{{#vardefine: fp            | {{#if:{{{fp|}}}|{{{fp}}}|{{#var:refresh}} }} }}<!--
--><nowiki />
+
    -->{{Character sheet/section | columns = {{#var:cols}} <!--
|-
+
        -->| llabel1  = FP <!--
| class="shaded" | FP     || {{#var:fp}}
+
        -->| ldata1  = {{#var: fp}} <!--
| class="shaded" | Refresh || {{#var:refresh}}
+
        -->| label1 = Refresh <!--
<!--
+
        -->| data1  = {{#var: refresh}} <!--
 +
    -->}}<!--
  
Stress tracks
+
  STRESS AND CONSEQUENCES
Stress and consequences
+
-->{{#hashtotemplate: {{{stress section template | Character sheet/FATE/Stress and Consequences section}}} | paramsHash }}<!--
  
We want to place stress and consequences side-by-side.
+
  FOOTER
  
-->
+
--><nowiki/>
 
|-
 
|-
| colspan="2" class="subhead" | Stress Tracks
+
| colspan="{{#var:cols}}" | {{navbar|{{{template name|Character sheet/FATE}}}|mini=1}}
| colspan="2" class="subhead" | Consequences <!--
+
|}<!--
 +
 
  
-->{{#vardefine: defaultstress | {{{defaultstress|5}}} }}<!--
 
-->{{#vardefine: scidx | 0 }}<!--
 
-->{{#while: | <!-- stress tracks and consequence types
 
  -->{{#vardefineecho: thetrack | {{#explode: {{{stresstracks|health//endurance::composure//resolve}}} |::| {{#var:scidx}} }} }}<!--
 
  --><!-- consequence types
 
  -->{{#vardefineecho: severity | {{#explode: {{{consequencetypes|mild moderate severe}}} | | {{#var:scidx}} }} }}<!--
 
-->|<!--
 
  -->{{#vardefine:trackname | {{#explode:{{#var: thetrack}}|//|0}} }}<!--
 
  -->{{#vardefine:trackskil | {{#explode:{{#var: thetrack}}|//|1}} }}<!--
 
  -->{{#vardefine:trackmod  | {{#expr: ceil(({{#var: skillValue{{#var:trackskil}}}} + 0) / 2)}} }}<!--
 
  -->{{#vardefine:defstress | {{#expr: {{#var:defaultstress}} + {{#var:trackmod}} }}}}<!--
 
  -->{{#vardefine:thestress | <!--
 
    -->{{#if:{{{ {{#var: trackname}}|}}}|{{{ {{#var: trackname}} }}}|{{#var:defstress}}//0}}<!--
 
  -->}}<!--
 
  -->{{#vardefine:totstress | {{#explode:{{#var: thestress}}|//|0}} }}<!--
 
  -->{{#vardefine:curstress | {{#explode:{{#var: thestress}}|//|1}} }}<!--
 
  --><nowiki />
 
{{!}}-
 
{{!}} class="shaded" {{!}} {{#var: trackname}} <!--
 
      --><!--({{#var:trackskil}} {{#var: skillValue{{#var:trackskil}}}} / {{#var:trackmod}}) --><!-- debug -->
 
{{!}} <!--
 
  -->{{#if:{{#var: trackname}} |<!--
 
    --><table class="fate stressbox"><!--
 
    --><tr>{{#loop: stressloop | 1 | {{#var:totstress}} | <!--
 
      --><td class="{{#ifexpr: {{#var: stressloop}} <= {{#var:curstress|0}} | full }}"><div>&nbsp;</div></td><!--
 
    -->}}</tr><!--
 
    --></table><!--
 
  -->}}<!--
 
  
  --><nowiki />
+
--><includeonly><!--
{{!}} class="label" {{!}} {{#var: severity}}
 
{{!}} <!--
 
  -->{{#if:{{#var: severity}} |<!--
 
    -->{{#vardefine: conidx | 0 }}<!--
 
    -->{{#vardefine: cons | 0 }}<!--
 
    -->{{#while: | <!-- consequences
 
      -->{{#vardefineecho: consequence | {{#explode: {{{consequences|}}} | :: | {{#var:conidx}} }} }}<!--
 
    -->|<!--
 
      -->{{#ifeq: {{#explode: {{#var:consequence}} |//| 1}}| {{#var: severity}} |<!--
 
        -->{{#ifeq: {{ #var: cons }} | 1 |,&nbsp; }}<!--
 
        -->{{aspect |{{#explode: {{#var:consequence}} |//| 0}}}}<!--
 
        -->{{#vardefine: cons | 1 }}<!--
 
      -->}}<!-- end ifeq
 
      -->{{#vardefine: conidx | {{#expr: {{#var: conidx}} + 1}} }}<!--
 
    -->}}<!-- end while consequences
 
  -->}}<!--
 
  
   -->{{#vardefine: scidx | {{#expr: {{#var: scidx}} + 1}} }}<!--
+
   Semantic MediaWiki keys and categories for any *page* using this template
-->}}<!-- end while stress tracks and consequence types
 
  
-->
+
-->{{#set: campaign      = {{{campaign}}}      }}<!-- @todo: remove this
|-
+
-->{{#set: is in campaign = {{{campaign}}}      }}<!--
| colspan="4" | {{navbar|{{{template name|Character Sheet/FATE}}}|mini=1}}  
+
-->{{#if:{{#var:name}}|{{#set: has name ={{#var:name}}}}}}<!--
|}<includeonly><!--
+
-->{{#if:{{{status|}}}|{{#set: has status ={{{status}}}}}}}<!--
 +
-->{{#ifeq:{{lc:{{{player}}}}} | npc <!--
 +
-->|<!--
 +
    -->{{#set: player        = NPC          | is a = NPC | NPC in campaign = {{#var:campaign}} }}<!--
 +
    -->[[Category: Non-player characters in {{#var:campaign}}]]<!--
 +
-->|<!--
 +
      player name is not "npc".
 +
  -->{{#if:{{{player|}}} <!--
 +
  -->|<!--
 +
      -->{{#set: player        = {{{player}}} | is a = PC  | PC in campaign = {{#var:campaign}}  }}<!--
 +
      -->[[Category: Player characters in {{#var:campaign}}]]<!--
 +
  -->|<!--
 +
      no player name set at all
 +
      -->[[Category: Characters in {{#var:campaign}}]]<!--
 +
  -->}}<!--
 +
-->}}<!--
 +
-->{{#if:{{{blurb|}}}        |{{#set: blurb          = {{{blurb}}}        }}}}<!--
  
  Semantic MediaWiki keys and category for any *page* using this template
+
  If we have relationships defined, save the information.
 +
-->{{#if: {{{relationships|}}} | <!--
 +
  -->{{#arraydefine: relationsarray | {{{relationships|}}} | ;; }}<!--
 +
  -->{{#arrayprint:  relationsarray | | @@@@ | <!--
 +
      -->{{#arraydefine: relationsfields | @@@@ | :: }}<!--
 +
      -->{{Relationship <!--
 +
        -->| {{#arrayindex: relationsfields | 1 }} <!--
 +
        -->| {{#arrayindex: relationsfields | 0 }} <!--
 +
      -->}}<!--
 +
  -->}}<!--
 +
-->}}<!--
  
-->[[Category:Character sheets]]<!--
+
--></includeonly><!--
 +
--></onlyinclude><!--
  
-->{{#if:{{{charactername|}}}|{{#set: character name = {{{charactername}}} }}}}<!--
 
-->{{#if:{{{player|}}}      |<!--
 
    -->{{#set: player        = {{{player}}}        }}<!--
 
    -->[[Category: Player characters]]<!--
 
    -->}}<!--
 
-->{{#if:{{{campaign|}}}    |<!--
 
    -->{{#set: campaign      = {{{campaign}}}      }}<!--
 
    -->[[Category: {{{campaign}}}]]<!--
 
    -->}}<!--
 
-->{{#if:{{{blurb|}}}        |{{#set: blurb          = {{{blurb}}}        }}}}<!--
 
  
--></includeonly><!--
 
  
 
--><noinclude><!--
 
--><noinclude><!--
Line 342: Line 169:
 
-->{{#set: game system    = FATE            }}<!--
 
-->{{#set: game system    = FATE            }}<!--
 
-->{{#set: parent template = Template:Character_Sheet }}<!--
 
-->{{#set: parent template = Template:Character_Sheet }}<!--
 +
 +
-->{{Documentation}}<!--
  
 
--></noinclude><!--  
 
--></noinclude><!--  
  
 
-->
 
-->

Latest revision as of 17:39, 3 February 2016

{{{name}}}
[[{{{campaign}}}]]
Aspects
Skills
Stunts
FP 5 Refresh 5
health
 
 
 
 
 
composure
 
 
 
 
 
mild
moderate
severe

{{#set: game system = FATE }}{{#set: parent template = Template:Character_Sheet }}

[create]
Error creating thumbnail: File missing
Template documentation