GuildWiki has been locked down: anonymous editing and account creation are disabled. Current registered users are unaffected. Leave any comments on the Community Portal.



Original proposal[]

I have a proposal for a revamp of {{Skill box}} that I've been stewing over for nearly a year. I've implemented the changes at {{Skill box draft}} and {{Progression draft}}, as well as setting a couple new CSS rules in MediaWiki:Common.css, and you can view it in use on Unbalancing Soul Explosion.

The new CSS rules apply green and gray colors to bold and italic text, respectively, that appears within any element with class="skill_description". This enhancement could easily be added to the existing skill box (independent of any other changes) by simply wrapping the descriptions with a span tag.

The idea came to me when I first started extracting skill descriptions from Gw.dat. The raw descriptions allow for the insertion of the "green number" variables by using placeholder parameters that look like %str1%. Each string can use up to 3 of these parameters. (Because the % symbol is used to identify the parameters, when an actual % symbol is desired, it is given as %%.) There is also a mechanism for plural forms - the word that follows a parameter can be appended with a value in square brackets that is used if the parameter is not 1. The most common usage is for durations, e.g. %str3% second[s]. More complex plurals (anything besides adding an 's') use the format %str1% hex[pl:"hexes"].

I figured this format could translate well to the wiki, but it took me a while to actually start working on it, and then even longer to get it to a point that seemed good enough to use.

In the new template, the description and progression parameters are completely changed. description and concise_description have been replaced with raw_description and raw_concise. All of the progression_[blah_blah] parameters are replaced by str*_min, str*_max, and str*_desc (* = 1, 2, 3), where _min and _max are the values at the "anchor" attribute ranks of 0 and 15 (these are the values that are set explicitly in the game engine, everything in between (and above 15) is calculated). The _min and _max values are used to build "range" variables that then replace the str* parameters in the raw description; currently, I have it designed to calculate the 12 value and display a 3-value range of 0...12...15.

There are a number of advantages:

  • Simplification. It only requires the green number values to be entered once, in the _min/_max parameters, instead of 3+ times like the current implementation (in the normal description, in the concise, in the progression_* parms, and in any QR notes the skill may have). I haven't modified the QR boxes yet to handle the parameter substitution, but it can be done. It also eliminates the confusion of having to provide both 0...12 ranges (in the descriptions) and 0...15 ranges (for progression).
  • Easy to change for skill updates. The numbers only have to be changed in one place. I can copy the descriptions directly from Gw.dat without the bother of inserting and formatting the numbers manually.

There are also a few drawbacks:

  • Descriptions have to be copied from Gw.dat. This isn't really necessary when a skill receives a simple text update (typo correction etc.), but when a skill gets a major revamp, the only way to be sure which parms are used where is by pulling it out of Gw.dat. (Of course, as long as they are internally consistent in the skill template, they wouldn't have to exactly match the game's raw version.) Luckily, I already have a Perl script that I've been using to parse out the text files from Gw.dat, and I could extend it to grab the skill descriptions from those files and post them to the wiki if they've changed.
  • Plurals. I don't know how to handle the plural format with wikicode. There are a number of ways we could handle it, but I'll leave that open to discussion.
  • Links. If I do write a script to automatically post new descriptions to the wiki, it wouldn't be able to make any links in them. Well, it could, but it would have to be based on a list of all the different words that need to be linked (and would have to relate various word forms to the article that it needs to point to, e.g. resurrect -> Resurrect (action), knocked down -> knockdown).

Anyway, I need to stop typing and post this so I can go eat lunch. —Dr Ishmael Diablo the chicken.gif 17:15, 8 July 2011 (UTC)

Revised proposal[]

Still basically the same idea, but implemented as a wiki extension instead, which provides a new parser function {{#skilldescription}}. The raw description and str(123)_min/max values are passed to it as parameters, and it performs a number of transformations on the raw text:

  • %str1% parameters are dynamically replaced. If only str1_min is given, a direct replacement occurs; if both min/max are given, the replacement is the calculated 0...12...15 values, formatted as bold text. If only str1_max is given, or if neither are given when the string contains %str1%, an error is returned.
  • Potential plurals are converted to the plural form, unless preceded by a '1'.
  • Keywords are linked to articles based on an associative array of regex fragments defined in the code and augmented at MediaWiki:Skill-description-links.
  • The final description is wrapped with <span class="skill_description"> to enable the new CSS formatting of green numbers and concise drawback text.

Also provides the parser function {{#qrnote}} for use in the various QR templates, which only performs the %str1% substitutions.

While these parser function can be used anywhere on the wiki, they probably aren't much use outside of the skill templates.

Future todo[]


Final rollout[]

Now that we're rolling with the new format, I plan to roll it out gradually, doing 1 or 2 attributes (or maybe a whole profession, if I'm feeling ambitious (aka bored at work)) per day over the next couple weeks.

What you can do is to double-check my work to verify that I'm not screwing up the numbers. I've been keeping my own "skills database" in a spreadsheet for the past couple years, but I stopped maintaining it religiously sometime last fall, and I'm not 100% sure how out-of-date it is. Today I went through all the game updates in the past year, noting which skills had been officially changed, and updated them in my database; I was also able to catch any descriptions that had changed, simply by running a diff of the Gw.dat files from last August to today (at one point I made an archive of the text files after every game update). However, I don't know how many unofficial green number changes may have escaped me.

Of course I'll do my best to notice if my numbers are different from what's currently in the template, and then try to verify the correct numbers from in-game, but I know I won't catch everything. And it's even possible that the wiki doesn't have everything 100% correct anymore. So if a few people could voluntarily double-check everything I'd appreciate it. Just sign (~~~~) in the table below for the stuff you've checked. —Dr Ishmael Diablo the chicken.gif 01:08, 4 August 2011 (UTC)

These tables are only for tracking the accuracy of numerical skill data. If you notice any oddities relating to the presentation of the data or to the formatting of descriptions, please post on the talk page.

Ready Validated by
PvP Assassin Yes.png
Dervish Yes.png
Elementalist Yes.png
Mesmer Yes.png
Monk Yes.png
Necromancer Yes.png
Paragon Yes.png
Ranger Yes.png
Ritualist Yes.png
Warrior Yes.png
Temp Yes.png
PvE Allegiance Yes.png
Sunspear Yes.png
Lightbringer Yes.png
Asura Yes.png
Deldrimor Yes.png
Norn Yes.png
Vanguard Yes.png
Temp Yes.png