From GamingWiki
Jump to: navigation, search
 
(19 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><!--
  
-->{{#tag:pre|Starting skill section}}<!--
+
-->{{#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}}} }}<!--
 
-->{{#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 21: 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 39: 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 57: Line 81:
 
-->}}<!-- end if
 
-->}}<!-- end if
  
-->{{#tag:pre|<!--
+
  Get the keys of our skill hash:
  -->skillhash: {{#hashprint: skillhash | , | %%%% | @@@@ | %%%% = @@@@ }}<!--
+
-->{{#hashtoarray:|skillhash|skillhashkeys}}<!--
-->}}<!--
+
-->{{#arraysort:skillhashkeys|desc}}<!--
 +
-->{{#arraydefine: skillpartkeys | name, marker}}<!--
  
 +
  Print the section header
 
-->
 
-->
{{Character sheet/section | columns = {{#var:cols}}
+
{{Character sheet/section  
 +
| columns   = {{#var:cols}}
 
| subhead  = {{{label|Skills}}}
 
| subhead  = {{{label|Skills}}}
 
| righthead = {{#if:{{{skilltypes|}}}|<!--
 
| righthead = {{#if:{{{skilltypes|}}}|<!--
Line 69: Line 96:
 
}}<!-- end section  
 
}}<!-- end section  
  
-->{{#arraydefine: skillhashkeys | name, marker}}<!--
+
  Print the skill listings
-->{{#hashprint: skillhash || $key$ | @@@@ | <!--
+
-->{{#hashprint: skillhash || $skillrank$ | $skline$ | <!--
   -->{{#arraydefine: skilllineary | @@@@ | :: }}<!--
+
   -->{{#arraydefine: skilllineary | $skline$ | ; }}<!--
   -->{{#if:@@@@|<!--
+
   -->{{#if: $skline$ |<!--
 
       -->{{Character sheet/section<!--
 
       -->{{Character sheet/section<!--
 
       -->| labelclass1 = label <!--
 
       -->| labelclass1 = label <!--
 
       -->| dataclass1  = {{#var: skillClass }} <!--
 
       -->| dataclass1  = {{#var: skillClass }} <!--
       -->| label1 = {{#arrayindex: skilllevelarray | {{#expr:($key$)-1}} }}<!--
+
       -->| label1 = {{#arrayindex: skilllevelarray | {{#expr: $skillrank$ -1}} }}<!--
 
       -->| data1  = <!--
 
       -->| data1  = <!--
 
         -->{{#arrayprint: skilllineary | ,&nbsp; | $theskill$ | <!--
 
         -->{{#arrayprint: skilllineary | ,&nbsp; | $theskill$ | <!--
 
             -->{{#arraydefine: theskillarray | $theskill$ | /\/\// }}<!--
 
             -->{{#arraydefine: theskillarray | $theskill$ | /\/\// }}<!--
             -->{{#arraytohash: theskillhash | theskillarray | skillhashkeys }}<!--
+
             -->{{#arraytohash: theskillhash | theskillarray | skillpartkeys }}<!--
             -->{{#vardefine: theskilltag | {{lc:{{#replace:{{#hashvalue: theskillhash | name}}||-}}}}}}<!--
+
            -->{{#vardefine: theskillname | {{#hashvalue: theskillhash | name}} }}<!--
 +
             -->{{#vardefine: theskilltag | {{lc:{{#replace:{{#var: theskillname}}||-}}}}}}<!--
 +
 
 
             --><span class="{{#var:skillClass}} skill-{{#var:theskilltag}}"><!--
 
             --><span class="{{#var:skillClass}} skill-{{#var:theskilltag}}"><!--
             -->{{#hashvalue: theskillhash | name | _____ }}<!--
+
             -->{{#var: theskillname }}<!--
 
             --></span> <!--
 
             --></span> <!--
 
             -->{{#hashvalue: skillmarkerhash | {{#hashvalue: theskillhash | marker}} }}<!--
 
             -->{{#hashvalue: skillmarkerhash | {{#hashvalue: theskillhash | marker}} }}<!--
 +
              Add SMW properties
 +
            -->{{#if:{{#var:theskillname}}|<!--
 +
              -->{{#set:
 +
                  | has skill = {{lc:{{#var:theskillname}}}} ; $skillrank$
 +
                  }}<!--
 +
            -->}}<!--
 +
 +
              Increment skill slot counter
 +
            -->{{#vardefine: skillsused | {{#expr: {{#var:skillsused|0}} + $skillrank$}} }}<!--
 +
 
             -->{{#arrayreset: theskillarray}}<!--
 
             -->{{#arrayreset: theskillarray}}<!--
 
             -->{{#hashreset: theskillhash}}<!--
 
             -->{{#hashreset: theskillhash}}<!--
         -->}}<!--
+
         -->}}<!-- end arrayprint
       -->}}<!--
+
       -->}}<!-- end section
   -->}}<!--
+
   -->}}<!-- end if skline
 
   -->{{#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 }}<!--
 
 
-->{{#tag:pre|ending skill section}}<!--
 
  
 
--></onlyinclude>
 
--></onlyinclude>
 
|}
 
|}

Latest revision as of 17:42, 3 February 2016

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