From GamingWiki
Jump to: navigation, search
(Created page with "Draw a section in a character sheet for skills {| class="infobox" <onlyinclude><!-- Define the types of skills available. These each have their own class, too. -->{{#vardefin...")
 
 
(49 intermediate revisions by the same user not shown)
Line 1: Line 1:
Draw a section in a character sheet for skills
+
{{Documentation}}
  
 
{| 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|skill}}} }}<!--
+
-->{{#vardefine:  skillClass    | {{{skillclass |{{#var:defaultskillclass}} }}} }}<!--
-->{{#arraydefine: skilltypearray | {{{skilltypes|combat track}}} | /\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 | <!--
+
-->{{#arraydefine: skilllevelarray | {{{skillranks |{{#var:defaultskillranks}} }}} | :: }}<!--
  -->{{{skillranks| Average (+1) :: Decent (+2) :: Good (+3) :: Great (+4) :: Superb (+5) }}} | :: }}<!--
 
 
-->{{#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}}<!--
 
-->|<!--
 
-->|<!--
   Multiple sections: 'skills1', 'skills2', etc.
+
   No single skills section. We look for multiple sections: 'skills1', 'skills2', etc.
 
   There are several parameters: skills1, skill2, and so on. Each corresponds  
 
   There are several parameters: skills1, skill2, and so on. Each corresponds  
 
   to a single skill rank, and each is of the form:
 
   to a single skill rank, and each is of the form:
Line 44: Line 73:
  
 
   -->{{#forargs: skills | thelevel | theskilllist | <!--
 
   -->{{#forargs: skills | thelevel | theskilllist | <!--
       -->{{#rmatch: {{#var:thelevel}} | /^\d+$/ | <!--
+
       -->{{#ifeq: {{#var:theskilllist}} | M_NUL ||<!--
         -->{{#hashinclude: skillhash | <!--
+
         -->{{#rmatch: {{#var:thelevel}} | /^\d+$/ | <!--
             -->{{#arrayindex: skilllevelarray | {{#expr:{{#var: thelevel}}-1}} }}={{#var:theskilllist}}<!--
+
             -->{{#hashinclude: skillhash | {{#var: thelevel}}={{#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 || %%%% | @@@@ | <nowiki />
+
            -->{{#vardefine: skillsused | {{#expr: {{#var:skillsused|0}} + $skillrank$}} }}<!--
{{!}}-
+
 
{{!}} class="label" {{!}} %%%%
+
            -->{{#arrayreset: theskillarray}}<!--
{{!}} colspan="3" class="{{#var: skillClass }}" {{!}} <!--
+
            -->{{#hashreset: theskillhash}}<!--
   -->{{#arraydefine: skilllineary | @@@@ | :: }}<!--
+
        -->}}<!-- end arrayprint
   -->{{#arrayprint: skilllineary | ,&nbsp; | $theskill$ | <!--
+
      -->}}<!-- end section
      -->{{#arraydefine: theskillarray | $theskill$ | /\/\// }}<!--
+
   -->}}<!-- end if skline
      -->{{#arraytohash: theskillhash | theskillarray | skillhashkeys }}<!--
+
   -->{{#arrayreset: skilllinearray}}<!--
      --><span class="{{#var: skillClass}} {{lc:{{#hashvalue: theskillhash | name}}}}"><!--
+
--><!--|skilllevelsreverse}}--><!-- end hashprint
      -->{{#hashvalue: theskillhash | name | _____ }}<!--
+
-->|skillhashkeys}}<!-- end hashprint
      --></span> <!--
+
 
      -->{{#hashvalue: skillmarkerhash | {{#hashvalue: theskillhash | marker}} }}<!--
+
  Print the section footer, if required
  -->}}<!--
+
-->{{#if: {{#vardefineecho:skillsallowed|{{{defaultskillpoints|}}}}}|
-->|skilllevelsreverse}}<!--
+
{{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 }}<!--
 +
-->{{#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