• Please note: In an effort to ensure that all of our users feel welcome on our forums, we’ve updated our forum rules. You can review the updated rules here: http://forums.wolflair.com/showthread.php?t=5528.

    If a fellow Community member is not following the forum rules, please report the post by clicking the Report button (the red yield sign on the left) located on every post. This will notify the moderators directly. If you have any questions about these new rules, please contact support@wolflair.com.

    - The Lone Wolf Development Team

RuneQuest

Kevlyn

Active member
This game system has cultures, these convey a list of skills to the user. The skills are already bootstrapped, but at this stage the user is expected to spend some points on just these skills. So what I'm working on is the chooser that let's them pick their Culture, which already works.

What I need to do now is to filter out the skills that aren't their culture in the table on the tab. So this is what it looks like currently.

Code:
  <portal
    id="cuCulture"
    style="tblNormal">
    <table_fixed
      component="Skill"
      showtemplate="cuPick"
      alwaysupdate="yes">
      		<list>
			<![CDATA[
				Culture.Barbarian & hero#Culture.Barbarian
			]]>
		</list>
		<headertitle><![CDATA[
        @text = "Standard Skills"
        ]]></headertitle>

      </table_fixed>
    </portal>

If I change the expression test to just 'Culture.Barbarian', it will list only those skills. But what I want to do is list only the skills that have a tag that matches the tag on the hero. My original thought there was to use if then statements, but apparently I can't do that in the list element. Where can I add that logic?
 
When you bootstrap the skills, bootstrap them all with a "we're a culture's skill" tag:

Code:
<bootstrap thing="something">
  <autotag group="SkillNote" tag="Culture"/>
  <bootstrap>

For when you get to the editor, here's an example of how to set that up in the editor:

Code:
<inputthing
  name="Integral Cyber Ranged Weapons"
  helptext="If this is a cyberware Suite, choose which cyber ranged weapons it adds.">
  <it_bootcustom compset="Ranged">
    <match><![CDATA[
      Augment.?
      ]]></match>
    <inputthing
      name="Leave Checked"
      helptext="Leave this checked">
      <it_tagcheck group="Equipment" tag="IsAugment" default="yes"/>
      </inputthing>
    </it_bootcustom>
  </inputthing>
 
I've got tags on each skill in the skill list.

Some skills may have many different culture tags on it, because multiple cultures may have access to it.

Code:
  <thing
    id="skLocale"
    name="Locale"
    compset="Skill"
    isunique="yes"
    description="Locale measures a character's understanding of local flora, fauna, terrain and weaterh in the area where he has spent the majority of his life.">
    <fieldval field="trtAbbrev" value="Loc"/>
    <tag group="Helper" tag="BasicSkill"/>
    <tag group="Culture" tag="Barbarian"/>
    <tag group="Culture" tag="Civilised"/>
    <tag group="Culture" tag="Nomadic"/>
    <tag group="Culture" tag="Primitive"/>
    <link linkage="attribute" thing="attrInt"/>
    <link linkage="attribute2" thing="attrInt"/>
    </thing>

The idea here is that I should be able to filter through the skills as they're being displayed in the table and only show the ones that match the player's culture.
 
I'm saying, its the cultures that should say what skills they have, not the skills. Just delete the Culture.? tags from all the skills. That way, you're not entering the same information in two different places.
 
There are basic skills that are on every character, that's why I bootstrap those in bootstrap.1st. In the Culture phase the player selects their culture and then a small number of the basic skills get to be increased, the other basic skills don't get any bonus points. That's why I put the tags on the skills, all the characters have these skills regardless of their culture. It's being able to display and allow them to increase only a smaller group of skills that I'm trying to work out. Does that make sense?
 
Okay, when you originally said that the skills were bootstrapped, I thought you meant that it was the cultures that were doing the bootstrapping.

In that case, first you'll need to have your cultures announce their presence:

Code:
<eval index="1" phase='Initialize" priority="10000"><![CDATA[
  perform forward[Culture.?]
  ]]></eval>

Then, the skills will compare their own Culture tags to the Culture tags on the hero:

Code:
<eval index="1" phase="Initialize" priority="15000"><![CDATA[
  if (hero.intersect[Culture,Culture] <> 0) then
    perform assign[SkillType.Culture]
    endif
  ]]></eval>

Then your list expression can look for SkillType.Culture
 
Although you may want to re-arrange this whole thing.

It seems more likely that new books for this game will add new cultures than new books adding new skills.

Currently, if a new book added a new culture, you'd need to modify many existing skills in order to say they now belong to this new culture.

Instead, I'd store the information about which skills are assigned to a culture on the cultures.

First, create an identity tag on the skills:

Code:
<identity group="CultureSkl"/>

Then, place the CultureSkl tags for each skill a culture gets on each culture.

Then, a script on the culture goes out looking for the skills it covers, and marks them as skills that are covered by the character's culture:

Code:
<eval index="1" phase="Initialize" priority="15000"><![CDATA[
  ~build a list of the skills we're searching for
  var searchexpr as string
  searchexpr = tagids[CultureSkl.?,"|"]
 
  foreach pick in hero from Skill where searchexpr
    perform eachpick.assign[SkillType.Culture]
    nexteach
  ]]></eval>
 
Last edited:
kevlyn,

I was wondering if someone was doing something on Hero Lab for RQ6. I don't have the rules yet (still waiting for the hard copy) but if you need help please contact me. I'll be glad to do it.
 
Back
Top