forums | blogs | polls | tutorials | downloads | rules | help

DS1 Template Naming Structure

I am trying to compile a listing of the template naming structure for DS1. If you follow GPG conventions the engine will automatically generate the base gold values, as well as place the items into the proper pcontent for rares and uniques.

Take the first boot in the amr_boot.gas, Brigandine Boots. The template is t:template,n:bo_bo_br_f_g_c_avg. That generates a preset gold value. If you change the br (brigandine) to le (leather) the gold value will drop. If you change the second bo (boot) to gr (greaves) the value will increase. I am still trying to figure out the f_g_c and similar naming structure portion of the template. What I have so far is:

1h = one handed
1b = one blade
1m = one mallet
2h = two handed
2b = two blade
2m = two mallet
ax = axe
ba = banded armor
bd = body
bl = bolied leather for armor/ blade for sword
bo = boot
bp = battle plate
br = brigandine
bw = bow
ca = cap
cb = club
ch = chain
cw = crossbow
dg = dagger
fa = falchion
fl = ?
fp = full plate
fu = ?
ga = gauntlet
gen = ? generated ?
gl = glove for armor/ gladius for sword
gr = greaves
he = helm
hm = hammer
le = leather
mc = mace
op = ?
pl = plate
ra = rare
ro = ?
sc = scale for armor/ scepter for mace/ scimitar for sword
sd = sword
sh = shield/ ?*? for boot
sl = studded leather
ss = short sword
st = staff/ steel for sword
un = unique
vi = ? visor ?

After I get some more information, I will try and organize the listing and make a proper tutorial. If you have additional knowledge or see errors in what I think, please feel free to comment.

http://www.drizzle.com/~scottb/ds/pcontent-grammar.txt

This document shows the grammar for pcontent query. Some of the unidentified stuff in the name is to support this. The idea is that an entry in a drop or a shop keeper's inventory can specify an item useful to a specific character type, level, or whatever, instead of always being boots, for example.

I think it's even possible to specify formula-based pcontent so that a mage gets a mage-usable item etc. if you really work it, but that starts getting into the chance of drop as well as the selection of item.

Thanks for the link. Smile I was thinking the "f", "r" and "m" were for fighter, ranged and mage. Also noticed in the bow template the reload delay is incorporated into the name as well. "l" is for 0.3, "m" is for 0.15, and "s" is for 0.0. So the single letters have different meaning for different types (armor/weapon etc.). Did some more thinking about the abbreviations, and think I got some more figured out. Not completely sure though.

fu = ? full ?
op = ? open ?
ro = ? seems to relate only to cloth or fiber for armor ?

So the armor goes from weakest to strongest "leather", "studded leather", "boiled leather", "brigandine", "scale", "chain", "banded armor", "plate", "full plate", "battle plate".

=robe?

That was my initial assumption. Probably is robe for body armor. What threw me off was it is also used in other templates.

[t:template,n:he_ra_ca_ro_woven_03]
{
	doc = "Loom Cap";
	specializes = base_helm;
	[common]
	{
        pcontent_special_type = rare, unique;
		screen_name = "Loom Cap";
	}

But the abbreviations appear to mean different things for different types. May take a while before I can sort it all out, if ever. Smile

Edit: Started looking in the pcontent.skrit and the bows s, m, and l are also for short, medium and long (d'oh). Guess the reload delay is inherent for the weapon length.

  if ( type$ == PT_WEAPON )
  {
    power$ = power$ - (power$ * ((((item_power_max$ - item_power_min$) / 2) / power$) / 10));

    if ( item_specific_type$ == PT_RANGED )
    {
      if ( item_subtype$ ~= "bow" ) && (item_length$ ~= "s")
      {
          power$ *= 0.90909;
      }
      else if ( item_subtype$ ~= "bow" ) && (item_length$ ~= "m")
      {
          power$ *= 0.847458;
      }
      else if ( item_subtype$ ~= "bow" ) && (item_length$ ~= "l")
      {
          power$ *= 0.763359;
      }

and ro definately = robe
    else if ( item_specific_type$ == PT_HELM )
    {
      if ( item_material$ ~= "ro" /*robe*/ )
            {
                power$ = ((power$ + 16) * power$);
            }