Loading ...
Sorry, an error occurred while loading the content.

Re: [pcgen-xml] Managing Exclusive Class Skills (Was: Possiblesolution to class/crossclass skills and max_ranks)

Expand Messages
  • Frugal
    ...
    Message 1 of 4 , Apr 16, 2004
    • 0 Attachment
      <quote who="Keith Davies">
      > On Thu, Apr 15, 2004 at 11:59:01AM -0700, Jenni Merrifield wrote:
      > This can be summed up as 'the data should be able to describe the rules
      > for skill maximum ranks for a character, taking into account the
      > possibility of exclusive skills and the rules as described in the SRD...
      > or similar'.
      >
      > Hmm... levels in classes with exclusive skills bump a counter internal
      > to the character ('max-ranks.scry'?); if this is set and greater than 0,
      > the max ranks are set to max-ranks.scry+3.

      <progression id="class.wizard">
      <ranks>
      <rank level="all">
      <effects>
      <function key="var.max_ranks.scry" value="1" stacks="true"/>
      </effects>
      </rank>
      <rank level="1">
      <effects>
      <function key="class_skill.scry" calc="1" />
      <function key="class_skill.spellcraft" calc="1" />
      </effects>
      </rank>
      </ranks>
      </progression>


      <progression id="skill.scry">
      <effects>
      <!-- The max ranks for exclusive skills are the rank count
      for each class that has this skill as a class skill,
      but only if that number is greater than 1 -->
      <function key="skill.scry.maxranks" value="$var.max_ranks.scry+3">
      <prereq kind="variable" key="var.max_ranks.scry" min="1"/>
      </function >
      </effects>
      </progression>


      <progression id="skill.spellcraft">
      <variable key="skill.spellcraft.maxranks"/>
      <!-- max ranks is determined just by the character level and
      if anything has set the class_skill.spellcraft to 1 -->
      <function key="skill.spellcraft.maxranks"
      calc="($var.character_level+3)/(2-$class_skill.spellcraft)"/>
      </progression>

      or in longhand:

      <progression id="skill.spellcraft">
      <variable key="skill.spellcraft.maxranks"/>
      <!-- if we are a class skill -->
      <function key="skill.spellcraft.maxranks"
      calc="var.character_level+3">
      <prereq key="variable" key="$class_skill.spellcraft" min="1"/>
      </function>
      <!-- if we are a cross-class skill -->
      <function key="skill.spellcraft.maxranks"
      calc="(var.character_level+3)/2">
      <prereq key="variable" key="$class_skill.spellcraft" min="0" max="0" />
      </function>
      </progression>


      > Now we just need a way to encode that :/
      >
      > Putting a recurring prereq on ranks in the Scry skill that says
      > something like
      >
      > <prereq kind='var' key='max-ranks.scry' min='$rank-3' />
      >
      > would probably do it. [I don't have a syntax handy for describing
      > recurring effects and prereqs, but I don't plan to write 'bump BAB' for
      > each and every fighter level...]

      <progression id="class.monk">
      <ranks>
      <rank level="all">
      <effects>
      <!-- create an effect that occurs for each rank taken in this
      progression -->
      <function key="var.class.monk.ranks"
      value="1" stacks="true"/>
      </effects>
      </rank>
      <rank level="1">
      <effects>
      <!-- create a 1 off effect that uses the number of ranks -->
      <function key="combat.bab"
      value="floor($var.class.monk.ranks*3/4)" stacks="true" />
      </effects>
      </rank>
      </ranks>
      </progression>


      We could make the value of the last function:
      $var.class.monk.ranks*3/4
      rather than
      floor($var.class.monk.ranks*3/4)

      And then have a "rule" that determines if all calculations are rounded
      down before presentation (to allow for the alternate rule that 1 rank of
      monk gives you +.75 BAB)

      --
      regards,
      Frugal
      -OS Chimp
    Your message has been successfully submitted and would be delivered to recipients shortly.