Skeleton File Changes V3.1

From HLKitWiki
Revision as of 23:16, 18 February 2009 by Rob (Talk | contribs) (File: "styles_ui.aug")

Jump to: navigation, search

Context: HL KitKit Reference … Skeleton Data File Revision History 

File: "definition.def"

Line 24: Eliminate the "manualroot" attribute so that the manual location uses the default.

Line 46: Replace the "required" attribute with "3.1" instead of "3.0".

File: "tags.1st"

Line 52: Insert the new tag shown below.

<value id="NoAutoName"/>

Line 65: Insert the new tag shown below.

<value id="Dead"/>

Line 79: Rename the "Column1" tag to "Traits".

Line 90: Insert the new tag shown below.

<value id="StartEquip" name="Gear starts out equipped"/>

Line 245: Insert the new tag group definition shown below.

<group
  id="DomainTerm"
  dynamic="yes">
  <value id="Domain"/>
  </group>

Line 254: Insert the new tag shown below.

<value id="CenterName"/>

Line 256: Insert the new tag group definitions shown below.

<group
  id="ChooseSrc1"
  visible="no">
  <value id="Thing" name="All Things"/>
  <value id="Container" name="All Picks on Container"/>
  <value id="Hero" name="All Picks on Hero"/>
  </group>
<group
  id="ChooseSrc2"
  visible="no">
  <value id="Thing" name="All Things"/>
  <value id="Container" name="All Picks on Container"/>
  <value id="Hero" name="All Picks on Hero"/>
  </group>

File: "advancement.core"

Line 19: Added the "Notation" tag shown below.

<value id="Notation"/>

Line 160: Insert new logic to handle notation advancements at the start of the Eval script, as shown below.

~if this advancement has an annotation, there is no user-selection, so build
~the name from our pieces and we're done
if (tagis[Advance.Notation] <> 0) then
  perform gizmo.child[advDetails].setfocus
  field[livename].text = field[name].text & ": " & focus.field[advUser].text
  done
  endif

File: "components.core"

Line 273: Change the reference to the "component.Ability" tag to "component.shortname".

Line 278: Change the reference to the "component.Ability" tag to "component.shortname".

Line 283: Insert the code below to use the standard name if no short name is defined.

~if we don't have a short name, just use the regular name
if (empty(short) <> 0) then
  short = name
  endif

Line 337: Insert the new "UserSelect" component definition that is provided below.

<component
  id="UserSelect"
  name="User Selection">

  <!-- Text to display with the checkbox
        NOTE! If this field is empty, it means NO checkbox is shown for the pick.
  -->
  <field
    id="usrChkText"
    name="Checkbox Text"
    type="derived"
    maxlength="100">
    </field>

  <!-- Indicates whether the checkbox is selected is not -->
  <field
    id="usrIsCheck"
    name="Checked?"
    type="user"
    minvalue="0"
    maxvalue="1">
    </field>

  <!--  Label associated with the first thing-based menu -->
  <field
    id="usrLabel1"
    name="Thing Menu Label #1"
    type="static"
    maxlength="50">
    </field>

  <!-- Tracks the first selection made when a menu choice is required -->
  <field
    id="usrChosen1"
    name="Chosen Thing / Pick #1"
    type="user"
    style="menu">
    </field>

  <!-- Candidate tagexpr used to determine which picks/things are shown in menu #1
        NOTE! If this field is empty, it means NO first menu is shown for the pick.
  -->
  <field
    id="usrCandid1"
    name="Candidate TagExpr for Menu #1"
    type="derived"
    maxlength="1000"
    defvalue="">
    </field>

  <!-- Source to pull choices from within menu #1 -->
  <field
    id="usrSource1"
    name="Source for Menu #1 Choices"
    type="derived">
    <!-- Determine the source to choose from based on the tag, defaulting to "Hero" -->
    <calculate phase="Render" priority="10000"><![CDATA[
      if (tagis[ChooseSrc1.Thing] <> 0) then
        @value = 0
      elseif (tagis[ChooseSrc1.Container] <> 0) then
        @value = 1
      elseif (tagis[ChooseSrc1.Hero] <> 0) then
        @value = 2
      else
        @value = 2
        endif
      ]]></calculate>
    </field>

  <!--  Label associated with the second thing-based menu -->
  <field
    id="usrLabel2"
    name="Thing Menu Label #2"
    type="static"
    maxlength="50">
    </field>

  <!-- Tracks the second selection made when a menu choice is required -->
  <field
    id="usrChosen2"
    name="Chosen Thing / Pick #2"
    type="user"
    style="menu">
    </field>

  <!-- Candidate tagexpr used to determine which picks/things are shown in menu #2
        NOTE! If this field is empty, it means NO second menu is shown for the pick.
  -->
  <field
    id="usrCandid2"
    name="Candidate TagExpr for Menu #2"
    type="derived"
    maxlength="1000"
    defvalue="">
    </field>

  <!-- Source to pull choices from within menu #2 -->
  <field
    id="usrSource2"
    name="Source for Menu #2 Choices"
    type="derived">
    <!-- Determine the source to choose from based on the tag, defaulting to "Hero" -->
    <calculate phase="Render" priority="10000"><![CDATA[
      if (tagis[ChooseSrc2.Thing] <> 0) then
        @value = 0
      elseif (tagis[ChooseSrc2.Container] <> 0) then
        @value = 1
      elseif (tagis[ChooseSrc2.Hero] <> 0) then
        @value = 2
      else
        @value = 2
        endif
      ]]></calculate>
    </field>

  <!--  Label associated with the array-based menu -->
  <field
    id="usrLabelAr"
    name="Array Menu Label"
    type="static"
    maxlength="50">
    </field>

  <!-- Array of text items user can select from
        NOTE! If the 0th element is empty, it means NO menu is shown for the pick.
  -->
  <field
    id="usrArray"
    name="Array of Items to Choose"
    type="derived"
    style="array"
    arrayrows="10"
    maxlength="30">
    </field>

  <!-- Item selected from the array -->
  <field
    id="usrSelect"
    name="Selected Item in Array"
    type="user"
    maxlength="30">
    </field>

  <!-- Initialize the current array-based selection from the array if not defined -->
  <creation><![CDATA[
    if (empty(field[usrArray].arraytext[0]) = 0) then
      if (field[usrSelect].isempty <> 0) then
        field[usrSelect].text = field[usrArray].arraytext[0]
        endif
      endif
    ]]></creation>

  <!-- Integrate the various user selections into the name of the pick
        NOTE! Must be scheduled after the "shortname" field is synthesized at Render/100.
  -->
  <eval index="1" phase="Render" priority="500"><![CDATA[
    ~if we're not supposed to auto-amend the name for this pick, we're done
    if (tagis[User.NoAutoName] <> 0) then
      done
      endif

    ~if we have thing-based menus, determine the text to append to the name
    var choices as string
    if (field[usrCandid1].isempty = 0) then
      if (field[usrChosen1].ischosen <> 0) then
        choices = field[usrChosen1].chosen.field[name].text
      else
        choices = "-Choose-"
        endif
      if (field[usrChosen2].ischosen <> 0) then
        choices &= ", " & field[usrChosen2].chosen.field[name].text
        endif

    ~if we have an array-based menu, determine the text to append
    elseif (empty(field[usrArray].arraytext[0]) = 0) then
      choices = field[usrSelect].text

    ~if we have a selected checkbox, determine the text to append
    elseif (field[usrChkText].isempty = 0) then
      if (field[usrIsCheck].value <> 0) then
        choices = field[usrChkText].text
        endif
      endif

    ~if we have no text to append, we're done
    if (empty(choices) <> 0) then
      done
      endif

    ~add the selection to both the livename and shortname (if present) fields
    field[livename].text = field[name].text & ": " & choices
    if (tagis[component.shortname] <> 0) then
      field[shortname].text &= " (" & choices & ")"
      endif
    ]]></eval>

  <!-- Report a validation error if no selection has been made for a menu selection -->
  <evalrule phase="Validate" priority="10000" message="You must choose an option" summary="Choose!"><![CDATA[
    ~determine the number of menus that NEED selection
    ~Note: Remember that a non-empty tagexpr field indicates menu selection is used.
    var needed as number
    needed = !field[usrCandid1].isempty + !field[usrCandid2].isempty
    needed += !empty(field[usrArray].arraytext[0])

    ~determine the number of menus that HAVE selections
    var actual as number
    if (field[usrCandid1].isempty = 0) then
      actual += field[usrChosen1].ischosen
      endif
    if (field[usrCandid2].isempty = 0) then
      actual += field[usrChosen2].ischosen
      endif
    if (field[usrSelect].isempty = 0) then
      actual += 1
      endif

    ~if the user has chosen something whenever required, we're valid
    if (actual >= needed) then
      @valid = 1
      done
      endif

    ~mark any associated tab as invalid
    if (ispanel <> 0) then
      linkvalid = 0
      endif
    ]]></evalrule>

  </component>

Line 400: Add the new Eval script below to the "Domain" component.

<eval index="1" phase="Render" priority="500"><![CDATA[
  ~if we don't need a domain, there's nothing to do
  if (tagis[User.NeedDomain] = 0) then
    done
    endif

  ~if we're not supposed to auto-amend the name for this pick, we're done
  if (tagis[User.NoAutoName] <> 0) then
    done
    endif

  ~if we don't have a domain, use a placeholder for it
  var domain as string
  if (field[domDomain].isempty = 0) then
    domain = field[domDomain].text
  else
    domain = "????"
    endif

  ~add the domain to both the livename and shortname (if present) fields
  field[livename].text = field[name].text & ": " & domain
  if (tagis[component.shortname] <> 0) then
    field[shortname].text &= " (" & domain & ")"
    endif
  ]]></eval>

Line 401: Replace the original Eval script with the new one shown below.

<evalrule index="1" phase="Validate" priority="9000" message="????"><![CDATA[
  ~if no domain is needed or the domain is specified, we're valid
  if (tagis[User.NeedDomain] = 0) then
    @valid = 1
  elseif (field[domDomain].isempty = 0) then
    @valid = 1
    endif

  ~if we're valid, get out of here
  if (@valid <> 0) then
    done
    endif

  ~if we have a linked panel, flag it as invalid
  if (ispanel <> 0) then
    linkvalid = 0
    endif

  ~synthesize an appropriate message using the correct domain term
  var term as string
  term = tagnames[DomainTerm.?]
  if (empty(term) <> 0) then
    term = "Domain"
    endif
  @message = term & " must be specified"
  ]]></evalrule>

File: "actor.str"

Line 163: Change the reference to the "trtLeft" field to "trtUser".

Line 221: Replace the Eval script with the revised script below.

<eval index="1" phase="Final" priority="1000"><![CDATA[
  ~if no damage has been incurred, assign a tag to indicate that state
  if (field[acHPNow].value >= field[acHPMax].value) then
    perform hero.assign[Hero.NoDamage]

  ~if the hero is dead or otherwise out of combat, indicate that state
  elseif (field[acHPNow].value = 0) then
    perform hero.assign[Hero.Dead]
    endif
  ]]></eval>

File: "equipment.str"

Line 27: Increase the "maxfinal" value from "50" to "100".

Line 219: Insert the Creation script shown below.

<creation><![CDATA[
  ~if this is natural equipment, initialize the equipped state
  if (tagis[Equipment.Natural] <> 0) then
    field[grIsEquip].value = 1
    endif

  ~if this equipment is supposed to start out as equipped, initialize the state
  if (tagis[Equipment.StartEquip] <> 0) then
    field[grIsEquip].value = 1
    endif
  ]]></creation>

Line 229: Change the Eval script priority from "1000" to "4000".

Line 584: Change the field type from "static" to "derived".

File: "miscellaneous.str"

Line 103: Insert the new lines of code below into the Finalize script.

  @text = "{text ff0000}"
elseif (unspent > 0) then

File: "traits.str"

Line 50: Change the timing of the Bound script, assign it a name, and establish a "before" dependency, as shown below.

<bound phase="Traits" priority="1000" name="Bound trtUser">
  <before name="Calc trtFinal"/><![CDATA[
  @minimum = field[trtMinimum].value
  @maximum = field[trtMaximum].value
  ]]></bound>

Line 97: Change the timing of the Eval script from "9999999" to "5000".

Line 130: Change the timing of the Eval script and setup "before" and "after" dependencies, as shown below.

<eval index="2" phase="Traits" priority="10000">
  <before name="Calc resLeft"/>
  <after name="Bound trtUser"/><![CDATA[
  hero.child[resCP].field[resSpent].value += (field[trtUser].value - 1) * 7
  ]]></eval>

Line 175: Change the timing of the Eval script and setup "before" and "after" dependencies, as shown below.

<eval index="2" phase="Traits" priority="10000">
  <before name="Calc resLeft"/>
  <after name="Bound trtUser"/><![CDATA[

Line 253: Change the test from keying on the usage pool to the actual mode, as shown below.

~if the mode is creation, we're valid
if (state.iscreate <> 0) then
  @valid = 1
  done
  endif

File: "styles_output.aug"

Line 217: Insert the new style shown below.

<style
  id="outDots">
  <style_output
    textcolor="202020"
    font="ofntnormal"
    alignment="left">
    </style_output>
  </style>

File: "styles_ui.aug"

Line 236: Insert the new resource definition shown below.

<resource
  id="fntmenusm">
  <font
    face="Arial"
    size="30"
    style="bold">
    </font>
  </resource>

Line 268: Insert the new color resource definitions shown below.

<!-- color used for normal text throughout the ui -->
<resource
  id="clrnormal">
  <color
    color="f0f0f0">
    </color>
  </resource>

<!-- color used for text on the static panel - not quite as bright -->
<resource
  id="clrstatic">
  <color
    color="d2d2d2">
    </color>
  </resource>

<!-- color used for text in title labels -->
<resource
  id="clrtitle">
  <color
    color="c0c0c0">
    </color>
  </resource>

<!-- color used for names of automatically added picks -->
<resource
  id="clrauto">
  <color
    color="99efed">
    </color>
  </resource>

<!-- color used for disabled text -->
<resource
  id="clrdisable">
  <color
    color="808080">
    </color>
  </resource>

<!-- color used for summary text that should be a little dimmer than normal -->
<resource
  id="clrsummary">
  <color
    color="a0a0a0">
    </color>
  </resource>

<!-- color used for bright text -->
<resource
  id="clrbright">
  <color
    color="ffff88">
    </color>
  </resource>

<!-- color used for warning text -->
<resource
  id="clrwarning">
  <color
    color="ff0000">
    </color>
  </resource>

<!-- color used for prompt text inviting the user to change something -->
<resource
  id="clrprompt">
  <color
    color="ffff00">
    </color>
  </resource>

<!-- color used for the 'buy for free' checkbox on buy / sell panels -->
<resource
  id="clrchkfree">
  <color
    color="a8a800">
    </color>
  </resource>

<!-- color used for text on summary panels - a little dimmer than normal -->
<resource
  id="clrsummtxt">
  <color
    color="d0d0d0">
    </color>
  </resource>

<!-- color used for labels when choosing advancements -->
<resource
  id="clradvance">
  <color
    color="ffffff">
    </color>
  </resource>

<!-- color used for text on action buttons -->
<resource
  id="clraction">
  <color
    color="000088">
    </color>
  </resource>

<!-- colors used in edit controls -->
<resource
  id="clredittxt">
  <color
    color="d2d2d2">
    </color>
  </resource>
<resource
  id="clreditbck">
  <color
    color="000000">
    </color>
  </resource>

<!-- colors used in menu and chooser controls -->
<resource
  id="clrmenutxt">
  <color
    color="84c8f7">
    </color>
  </resource>
<resource
  id="clrmenuslt">
  <color
    color="1414f7">
    </color>
  </resource>
<resource
  id="clrmenubck">
  <color
    color="2a2c47">
    </color>
  </resource>

Numerous Places: Change the style to reference a named color instead of a literal color, switching from a "textcolor" attribute to a "textcolorid" attribute. The list of changes is given below.

  • Line 282 - "clrtitle"
  • Line 293 - "clrstatic"
  • Line 303 - "clrnormal"
  • Line 313 - "clrnormal"
  • Line 323 - "clrnormal"
  • Line 335 - "clrauto"
  • Line 347 - "clrdisable"
  • Line 359 - "clrbright"
  • Line 371 - "clrwarning"
  • Line 384 - "clrprompt"
  • Line 394 - "clrnormal"
  • Line 404 - "clrdisable"
  • Line 414 - "clrprompt"
  • Line 424 - "clrwarning"
  • Line 434 - "clrnormal"
  • Line 444 - "clrdisable"
  • Line 454 - "clrwarning"
  • Line 464 - "clrnormal"
  • Line 474 - "clrdisable"
  • Line 484 - "clrsummary"
  • Line 494 - "clrnormal"
  • Line 504 - "clrnormal"
  • Line 514 - "clrsummtxt"
  • Line 524 - "clrdisable"
  • Line 534 - "clrsummary"
  • Line 545 - "clrsummary"
  • Line 556 - "clradvance"
  • Line 568 - "clradvance"
  • Line 582 - "clrnormal"
  • Line 596 - "clredittxt"
  • Line 597 - "clreditbck"
  • Line 607 - "clredittxt"
  • Line 608 - "clreditbck"
  • Line 618 - "clredittxt"
  • Line 619 - "clreditbck"
  • Line 624 - "clrdisable"
  • Line 635 - "clrnormal"
  • Line 652 - "clrnormal"
  • Line 669 - "clrnormal"
  • Line 732 - "clrnormal"
  • Line 805 - "clraction"
  • Line 836 - "clraction"
  • Line 867 - "clrnormal"
  • Line 901 - "clraction"
  • Line 937 - "clraction"
  • Line 971 - "clraction"
  • Line 981 - "clraction"
  • Line 991 - "clraction"
  • Line 1025 - "clraction"
  • Line 1059 - "clraction"
  • Line 1085 - "clrnormal"
  • Line 1119 - "clrnormal"
  • Line 1145 - "clrnormal"
  • Line 1171 - "clrnormal"
  • Line 1205 - "clrnormal"
  • Line 1231 - "clrnormal"
  • Line 1265 - "clrnormal"
  • Line 1299 - "clrnormal"
  • Line 1333 - "clrnormal"
  • Line 1359 - "clrnormal"
  • Line 1385 - "clrnormal"
  • Line 1411 - "clrnormal"
  • Line 1445 - "clrnormal"
  • Line 1471 - "clraction"
  • Line 1497 - "clraction"
  • Line 1531 - "clraction"
  • Line 1557 - "clraction"
  • Line 1583 - "clraction"
  • Line 1609 - "clraction"
  • Line 1643 - "clraction"
  • Line 1677 - "clraction"
  • Line 1711 - "clraction"
  • Line 1745 - "clraction"
  • Line 1779 - "clraction"
  • Line 1813 - "clraction"
  • Line 1847 - "clraction"
  • Line 1881 - "clraction"
  • Line 1915 - "clraction"
  • Line 1949 - "clraction"
  • Line 1983 - "clraction"
  • Line 2017 - "clrnormal"
  • Line 2051 - "clrnormal"
  • Line 2085 - "clrnormal"
  • Line 2119 - "clrnormal"
  • Line 2153 - "clrnormal"
  • Line 2206 - "clrdisable"
  • Line 2232 - "clrnormal"
  • Line 2241 - "clrwarning"
  • Line 2252 - "clrdisable"
  • Line 2261 - "clrchkfree"
  • Line 2270 - "clrnormal"
  • Line 2311 - "clrnormal"
  • Line 2358 - "clrmenutxt"
  • Line 2359 - "clrmenubck"
  • Line 2360 - "clrmenuslt"
  • Line 2361 - "clrnormal"
  • Line 2371 - "clrmenutxt"
  • Line 2372 - "clrmenubck"
  • Line 2373 - "clrmenuslt"
  • Line 2374 - "clrnormal"
  • Line 2375 - "clrwarning"
  • Line 2386 - "clrmenutxt"
  • Line 2387 - "clrmenubck"
  • Line 2397 - "clrwarning"
  • Line 2398 - "clrmenubck"

Line 470: Insert the new style definition shown below.

<!-- slightly smaller label that is left-aligned -->
<style
  id="lblSmlLeft">
  <style_label
    textcolorid="clrnormal"
    font="fntsmall"
    alignment="left">
    </style_label>
  </style>

Line 1467: Insert the new style definition shown below.

<!-- Style used on the master button -->
<style
  id="actMaster">
  <style_action
    textcolorid="clrnormal"
    font="fntactsml"
    up="actmastup" down="actmastdn" off="actmastup">
    </style_action>
  <resource
    id="actmastup"
    isbuiltin="yes">
    <bitmap
      bitmap="master_up.bmp"
      istransparent="yes">
      </bitmap>
    </resource>
  <resource
    id="actmastdn"
    isbuiltin="yes">
    <bitmap
      bitmap="master_down.bmp"
      istransparent="yes">
      </bitmap>
    </resource>
  </style>

Line 2380: Insert the the new style definitions shown below.

<!-- small menu portal -->
<style
  id="menuSmall"
  border="sunken">
  <style_menu
    textcolorid="clrmenutxt"
    backcolorid="clrmenubck"
    selecttextid="clrmenuslt"
    selectbackid="clrnormal"
    font="fntmenusm"
    droplist="menuarrsm"
    droplistoff="menuoffsm">
    </style_menu>
  <resource
    id="menuarrsm"
    isbuiltin="yes">
    <bitmap
      bitmap="menu_small_arrow.bmp">
      </bitmap>
    </resource>
  <resource
    id="menuoffsm"
    isbuiltin="yes">
    <bitmap
      bitmap="menu_small_arrow_off.bmp">
      </bitmap>
    </resource>
  </style>

<!-- small menu portal with coloring to indicate contents are in error -->
<style
  id="menuErrSm"
  border="sunken">
  <style_menu
    textcolorid="clrmenutxt"
    backcolorid="clrmenubck"
    selecttextid="clrmenuslt"
    selectbackid="clrnormal"
    activetextid="clrwarning"
    font="fntmenusm"
    droplist="menuarrsm"
    droplistoff="menuoffsm">
    </style_menu>
  </style>

Next