From GamingWiki
Jump to: navigation, search
 
(31 intermediate revisions by the same user not shown)
Line 1: Line 1:
Draw a section in a character sheet for skills. This template is unforgiving:
+
{{Documentation}}
all of its parameters are required (but may be empty).
 
  
 
{| class="infobox"
 
{| class="infobox"
 
<onlyinclude><!--
 
<onlyinclude><!--
 +
 +
-->{{#vardefine: defaultskillclass | skill }}<!--
 +
-->{{#vardefine: defaultskillranks | Average (+1) :: Decent (+2) :: Good (+3) :: Great (+4) :: Superb (+5) }}<!--
 +
-->{{#vardefine: defaultskilltypes | combat track }}<!--
 +
-->{{#vardefine: defaultskillmarks | }}<!--
 +
 +
  Parse a list of skills and their attributes
 +
-->{{#if: {{{skilllist|}}} |<!--
 +
  -->{{#hashdefine:  skilllisthash }}<!--
 +
  -->{{#arraydefine: skillgroupsarray | {{{skilllist}}} | ;; }}<!--
 +
  -->{{#arrayprint:  skillgroupsarray | | $skilllistline$ | <!--
 +
      -->{{#arraydefine: skillgrouparray | $skilllistline$ | :: }}<!--
 +
      -->{{#vardefine:  skillgroupname  | {{#arrayindex: skillgrouparray | 0}} }}<!--
 +
      -->{{#arrayslice:  skillgrouparray | skillgrouparray | 1 }}<!--
 +
      -->{{#arrayprint:  skillgrouparray | | $skillstring$ | <!--
 +
        -->{{#vardefine: skillname | {{#explode: $skillstring$ | // | 0 }} }}<!--
 +
        -->{{#vardefine: skillattr | {{#explode: $skillstring$ | // | 1 }} }}<!--
 +
        -->{{#hashinclude: skilllisthash | {{#var:skillname}} = 0 }}<!--
 +
        -->{{#hashinclude:  skillhash-{{#var:skillname}}
 +
            | group = {{#var:skillgroupname}}
 +
            | attributes = {{#var:skillgroupattr}}
 +
            }}<!--
 +
      -->}}<!--
 +
  -->}}<!--
 +
-->}}<!--
 +
 +
-->{{#vardefine: cols | {{{columns|6}}} }}<!--
  
 
   Define the types of skills available. These each have their own class, too.
 
   Define the types of skills available. These each have their own class, too.
-->{{#vardefine:  skillClass    | {{{skillclass}}} }}<!--
+
-->{{#vardefine:  skillClass    | {{{skillclass |{{#var:defaultskillclass}} }}} }}<!--
-->{{#arraydefine: skilltypearray | {{{skilltypes}}} | /\s+/ }}<!--
+
-->{{#arraydefine: skilltypearray | {{{skilltypes |{{#var:defaultskilltypes}} }}} | /\s+/ }}<!--
 
-->{{#arraytohash: classhash      | skilltypearray | skilltypearray }}<!--
 
-->{{#arraytohash: classhash      | skilltypearray | skilltypearray }}<!--
  
 
   We may have custom skill ranks.
 
   We may have custom skill ranks.
-->{{#arraydefine: skilllevelarray | {{{skillranks}}} | :: }}<!--
+
-->{{#arraydefine: skilllevelarray | {{{skillranks |{{#var:defaultskillranks}} }}} | :: }}<!--
 
-->{{#arraymerge: skilllevelsreverse | skilllevelarray }}<!--
 
-->{{#arraymerge: skilllevelsreverse | skilllevelarray }}<!--
 
-->{{#arraysort:  skilllevelsreverse | reverse }}<!--
 
-->{{#arraysort:  skilllevelsreverse | reverse }}<!--
Line 17: Line 43:
  
 
   There are various skill markers that may be defined -- these go into a hash.
 
   There are various skill markers that may be defined -- these go into a hash.
-->{{#hashdefine: skillmarkerhash | {{{skillmarkers}}} | :: | /\/\// }}<!--
+
-->{{#hashdefine: skillmarkerhash | {{{skillmarkers|{{#var:defaultskillmarks}} }}} | :: | /\/\// }}<!--
  
 
   Use a hash to store and then print the skills
 
   Use a hash to store and then print the skills
 
-->{{#hashdefine: skillhash}}<!--
 
-->{{#hashdefine: skillhash}}<!--
 +
  Keep track of how many skill slots have been used
 +
-->{{#vardefine: skillsused | 0}}<!--
  
 
   We either have a long section of skills, or one entry per level.
 
   We either have a long section of skills, or one entry per level.
Line 35: Line 63:
 
   -->{{#arrayslice:  skillsbylevel | skillsbylevel | 0 }}<!--
 
   -->{{#arrayslice:  skillsbylevel | skillsbylevel | 0 }}<!--
 
   -->{{#arraytohash: skillhash    | skillsbylevel | skilllevelsreverse }}<!--
 
   -->{{#arraytohash: skillhash    | skillsbylevel | skilllevelsreverse }}<!--
   -->{{#arrayreset: skillsbylevel}}<!--
+
   -->{{#arrayreset: skillsbylevel}}<!--
 
-->|<!--
 
-->|<!--
 
   No single skills section. We look for multiple sections: 'skills1', 'skills2', etc.
 
   No single skills section. We look for multiple sections: 'skills1', 'skills2', etc.
Line 46: Line 74:
 
   -->{{#forargs: skills | thelevel | theskilllist | <!--
 
   -->{{#forargs: skills | thelevel | theskilllist | <!--
 
       -->{{#ifeq: {{#var:theskilllist}} | M_NUL ||<!--
 
       -->{{#ifeq: {{#var:theskilllist}} | M_NUL ||<!--
      -->{{#rmatch: {{#var:thelevel}} | /^\d+$/ | <!--
+
        -->{{#rmatch: {{#var:thelevel}} | /^\d+$/ | <!--
        -->{{#hashinclude: skillhash | <!--
+
            -->{{#hashinclude: skillhash | {{#var: thelevel}}={{#var:theskilllist}} }}<!--
            -->{{#arrayindex: skilllevelarray | {{#expr:{{#var: thelevel}}-1}} }}={{#var:theskilllist}}<!--
 
 
         -->}}<!--
 
         -->}}<!--
      -->}}<!--
 
 
       -->}}<!--
 
       -->}}<!--
 
   -->}}<!--
 
   -->}}<!--
-->}}<!--
+
-->}}<!-- end if
 +
 
 +
  Get the keys of our skill hash:
 +
-->{{#hashtoarray:|skillhash|skillhashkeys}}<!--
 +
-->{{#arraysort:skillhashkeys|desc}}<!--
 +
-->{{#arraydefine: skillpartkeys | name, marker}}<!--
  
 +
  Print the section header
 
-->
 
-->
{{Character sheet/section
+
{{Character sheet/section  
| subhead  = Skills
+
| columns  = {{#var:cols}}
| righthead = types: {{#hashprint: classhash | , | %%%% | @@@@ | <span class="{{#var:skillClass}} @@@@"> %%%%</span> }}
+
| subhead  = {{{label|Skills}}}
}}<!-- end section --><!--
+
| righthead = {{#if:{{{skilltypes|}}}|<!--
 +
  -->skill types: {{#hashprint: classhash | , | %%%% | @@@@ | <span class="{{#var:skillClass}} @@@@"> %%%%</span> }}<!--
 +
  -->}}
 +
}}<!-- end section  
 +
 
 +
  Print the skill listings
 +
-->{{#hashprint: skillhash || $skillrank$ | $skline$ | <!--
 +
  -->{{#arraydefine: skilllineary | $skline$ | ; }}<!--
 +
  -->{{#if: $skline$ |<!--
 +
      -->{{Character sheet/section<!--
 +
      -->| labelclass1 = label <!--
 +
      -->| dataclass1  = {{#var: skillClass }} <!--
 +
      -->| label1 = {{#arrayindex: skilllevelarray | {{#expr: $skillrank$ -1}} }}<!--
 +
      -->| data1  = <!--
 +
        -->{{#arrayprint: skilllineary | ,&nbsp; | $theskill$ | <!--
 +
            -->{{#arraydefine: theskillarray | $theskill$ | /\/\// }}<!--
 +
            -->{{#arraytohash: theskillhash | theskillarray | skillpartkeys }}<!--
 +
            -->{{#vardefine: theskillname | {{#hashvalue: theskillhash | name}} }}<!--
 +
            -->{{#vardefine: theskilltag  | {{lc:{{#replace:{{#var: theskillname}}||-}}}}}}<!--
 +
 
 +
            --><span class="{{#var:skillClass}} skill-{{#var:theskilltag}}"><!--
 +
            -->{{#var: theskillname }}<!--
 +
            --></span> <!--
 +
            -->{{#hashvalue: skillmarkerhash | {{#hashvalue: theskillhash | marker}} }}<!--
 +
              Add SMW properties
 +
            -->{{#if:{{#var:theskillname}}|<!--
 +
              -->{{#set:
 +
                  | has skill = {{lc:{{#var:theskillname}}}} ; $skillrank$
 +
                  }}<!--
 +
            -->}}<!--
  
-->{{#arraydefine: skillhashkeys | name, marker}}<!--
+
              Increment skill slot counter
-->{{#hashprint: skillhash || %%%% | @@@@ | <!--
+
            -->{{#vardefine: skillsused | {{#expr: {{#var:skillsused|0}} + $skillrank$}} }}<!--
  -->{{#arraydefine: skilllineary | @@@@ | :: }}<!--
+
 
  -->{{Character sheet/section<!--
+
            -->{{#arrayreset: theskillarray}}<!--
  -->| label1 = %%%%<!--
+
            -->{{#hashreset: theskillhash}}<!--
  -->| data1  = <!--
+
        -->}}<!-- end arrayprint
      -->{{#arrayprint: skilllineary | ,&nbsp; | $theskill$ | <!--
+
      -->}}<!-- end section
        -->{{#arraydefine: theskillarray | $theskill$ | /\/\// }}<!--
+
   -->}}<!-- end if skline
        -->{{#arraytohash: theskillhash | theskillarray | skillhashkeys }}<!--
 
        -->{{#vardefine: theskilltag | {{lc:{{#replace:{{#hashvalue: theskillhash | name}}||-}}}}}}<!--
 
        --><span class="skill-{{#var:theskilltag}}"><!--
 
        -->{{#hashvalue: theskillhash | name | _____ }}<!--
 
        --></span> <!--
 
        -->{{#hashvalue: skillmarkerhash | {{#hashvalue: theskillhash | marker}} }}<!--
 
        -->{{#arrayreset: theskillarray}}<!--
 
        -->{{#hashreset: theskillhash}}<!--
 
      -->}}<!--
 
  -->| dataclass1 = {{#var: skillClass }} <!--
 
   -->}}<!--
 
 
   -->{{#arrayreset: skilllinearray}}<!--
 
   -->{{#arrayreset: skilllinearray}}<!--
-->|skilllevelsreverse}}<!--
+
--><!--|skilllevelsreverse}}--><!-- end hashprint
 +
-->|skillhashkeys}}<!-- end hashprint
 +
 
 +
  Print the section footer, if required
 +
-->{{#if: {{#vardefineecho:skillsallowed|{{{defaultskillpoints|}}}}}|
 +
{{Character sheet/section
 +
| columns  = {{#var:cols}}
 +
| llabel1  = Points used  | ldata1    = {{#var:skillsused}}
 +
| label1    = remaining    | data1    = {{#expr: {{#var:skillsallowed}} - {{#var:skillsused}} }}
 +
| rlabel1  = total        | rdata1    = {{#var:skillsallowed}}
 +
}}<!-- end section
 +
-->}}<!-- end if
  
 
-->{{#hashreset: skillhash | skillmarkerhash | classhash }}<!--
 
-->{{#hashreset: skillhash | skillmarkerhash | classhash }}<!--
-->{{#arrayreset: skilltypearray, skilllevelarray, skilllevelsreverse, skillhashkeys }}<!--
+
-->{{#arrayreset: skilltypearray, skilllevelarray, skilllevelsreverse, skillhashkeys, skillpartkeys }}<!--
  
 
--></onlyinclude>
 
--></onlyinclude>
 
|}
 
|}

Latest revision as of 17:42, 3 February 2016

[create]
Error creating thumbnail: File missing
Template documentation
Skills