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...")
 
Line 1: Line 1:
Draw a section in a character sheet for skills
+
Draw a section in a character sheet for skills. This template is unforgiving:
 +
all of its parameters are required (but may be empty).
  
 
{| class="infobox"
 
{| class="infobox"
Line 5: Line 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}}} }}<!--
-->{{#arraydefine: skilltypearray | {{{skilltypes|combat track}}} | /\s+/ }}<!--
+
-->{{#arraydefine: skilltypearray | {{{skilltypes}}} | /\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}}} | :: }}<!--
  -->{{{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 17:
  
 
   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}}} | :: | /\/\// }}<!--
  
 
   Use a hash to store and then print the skills
 
   Use a hash to store and then print the skills
Line 23: Line 23:
  
 
   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.
-->{{#if: {{{skills|}}}|<!--
+
-->{{#ifeq: {{{skills|M_NUL}}}|M_NUL|<!--
   One 'skills' section.
+
   No single skills section. We look for multiple sections: 'skills1', 'skills2', etc.
  Lines are listed in descending order of skill. Each line is of the form:
 
  ;; SkillName//OpType//OpModifier :: SkillName//OpType//OpModifier ...
 
  where SkillName is just what it says, OpType is an optional type to the
 
  skill (such as 'combat' or 'track' and OpModifier is an optional modifier
 
  such as 'MG'.
 
  Note: we assume that no skill lines are missing.
 
 
 
  -->{{#arraydefine: skillsbylevel | {{{skills}}}  | ;; }}<!--
 
  -->{{#arrayslice:  skillsbylevel | skillsbylevel | 0 }}<!--
 
  -->{{#arraytohash: skillhash    | skillsbylevel | skilllevelsreverse }}<!--
 
-->|<!--
 
  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 32:
  
 
   -->{{#forargs: skills | thelevel | theskilllist | <!--
 
   -->{{#forargs: skills | thelevel | theskilllist | <!--
 +
      -->{{#ifeq: {{#var:theskilllist}} | M_NUL ||<!--
 
       -->{{#rmatch: {{#var:thelevel}} | /^\d+$/ | <!--
 
       -->{{#rmatch: {{#var:thelevel}} | /^\d+$/ | <!--
 
         -->{{#hashinclude: skillhash | <!--
 
         -->{{#hashinclude: skillhash | <!--
 
             -->{{#arrayindex: skilllevelarray | {{#expr:{{#var: thelevel}}-1}} }}={{#var:theskilllist}}<!--
 
             -->{{#arrayindex: skilllevelarray | {{#expr:{{#var: thelevel}}-1}} }}={{#var:theskilllist}}<!--
 
         -->}}<!--
 
         -->}}<!--
 +
      -->}}<!--
 
       -->}}<!--
 
       -->}}<!--
 
   -->}}<!--
 
   -->}}<!--
 +
-->|<!--
 +
  One 'skills' section.
 +
  Lines are listed in descending order of skill. Each line is of the form:
 +
  ;; SkillName//OpType//OpModifier :: SkillName//OpType//OpModifier ...
 +
  where SkillName is just what it says, OpType is an optional type to the
 +
  skill (such as 'combat' or 'track' and OpModifier is an optional modifier
 +
  such as 'MG'.
 +
  Note: we assume that no skill lines are missing.
 +
 +
  -->{{#arraydefine: skillsbylevel | {{{skills}}}  | ;; }}<!--
 +
  -->{{#arrayslice:  skillsbylevel | skillsbylevel | 0 }}<!--
 +
  -->{{#arraytohash: skillhash    | skillsbylevel | skilllevelsreverse }}<!--
 
-->}}<!--
 
-->}}<!--
  

Revision as of 20:26, 28 February 2011

Draw a section in a character sheet for skills. This template is unforgiving: all of its parameters are required (but may be empty).

Skills types: Template:(({skilltypesTemplate:))}