99 lines
3.0 KiB
Plaintext
99 lines
3.0 KiB
Plaintext
# items-extract - parse the archetypes-file and output the
|
|
# artifacts in a structured format.
|
|
|
|
# Variables passed when invoked:
|
|
# living_c - filename where the array attacks is defined.
|
|
|
|
BEGIN {
|
|
# These types are always artifacts:
|
|
# containers, gems, rods, wands
|
|
artifact[122] = artifact[60] = artifact[3] = artifact[109] = 1;
|
|
# money, rings, runes, scrolls
|
|
artifact[36] = artifact[70] = artifact[154] = artifact[111] = 1;
|
|
# map, id altars, shop mat, lighters
|
|
artifact[22] = artifact[139] = artifact[69] = artifact[75] = 1;
|
|
# food, flesh, horn
|
|
artifact[6] = artifact[72] = artifact[35] = 1;
|
|
|
|
# armour improver, weapon improver, skills
|
|
artifact[123] = artifact[124] = artifact[43] = 1;
|
|
|
|
# exits --- lots and lots of stuff!
|
|
artifact[66] = 1;
|
|
|
|
# armour, bows, gravestone
|
|
artifact[16] = artifact[14] = artifact[38] = 1;
|
|
|
|
# book, altar, corpse
|
|
artifact[8] = artifact[18] = artifact[157] = 1;
|
|
|
|
# lock_door, special_key, door, keys
|
|
artifact[20] = artifact[21] = artifact[23] = artifact[24] = 1;
|
|
|
|
# potion, sign, savebed
|
|
artifact[5] = artifact[98] = artifact[106] = 1;
|
|
|
|
# button, handle, gate, trapdoor
|
|
artifact[92] = artifact[93] = artifact[91] = artifact[95] = 1;
|
|
|
|
# earthwall, firewall, spinner, director
|
|
artifact[45] = artifact[62] = artifact[90] = artifact[112] = 1;
|
|
|
|
# Don't eleminate repeat occurances
|
|
keeprepeat[66] = keeprepeat[98] = keeprepeat[24] = 1;
|
|
|
|
# will take only matching names
|
|
valuable[154] = "Magical Rune,Rune of Fire,Rune of Frost,Rune of Death,Rune of Shocking,Rune of Blasting"
|
|
valuable[123] = "prepare";
|
|
valuable[66] = "guild,shop";
|
|
valuable[43] = "talisman,holy symbol,lockpicks";
|
|
|
|
# throw out all matching names
|
|
worthless["chalice"] = worthless["acid spit"] = 1;
|
|
worthless["pyromaniac"] = worthless["rock thrower"] = 1;
|
|
worthless["a cracked cauldron"] = 1;
|
|
worthless["small bagpipe"] = worthless["magic_mouth"] = worthless["trap"] = 1;
|
|
worthless["spikes"] = worthless["stoneblock"] = worthless["cannon"] = 1;
|
|
worthless["volcano"] = worthless["rock thrower"] = 1;
|
|
worthless["drop 10 goldcoins"] = 1;
|
|
}
|
|
|
|
/^Object/ {
|
|
slay = magik = "";
|
|
name = obj = $2;
|
|
x = y = 0;
|
|
xmin = xmax = ymin = ymax = 0;
|
|
More = 0;
|
|
dam = type = magical = ac = armour = weight = last_sp = 0;
|
|
att = prot = immune = invisible = 0;
|
|
}
|
|
|
|
/^type/ { type = $2 }
|
|
/^last_sp/ { last_sp = $2 }
|
|
/^dam/ { dam = $2 }
|
|
/^ac/ { ac = $2 }
|
|
/^armour/ { armour = $2 }
|
|
/^weight/ { weight = $2 }
|
|
/^attacktype/ { att = $2 }
|
|
/^protected/ { prot = $2 }
|
|
/^immune/ { immune = $2 }
|
|
/^slaying/ { slay = $2; }
|
|
/^magic/ { magical = $2 }
|
|
/^name/ { name = substr($0, 6) }
|
|
/^invisible/ { invisible = $2 }
|
|
/^end/ {
|
|
# but they are in the worthless, we ignore it
|
|
if (artifact[type] && !worthless[name] && !invisible) {
|
|
|
|
if(!valuable[type] || (valuable[type] ~ name))
|
|
if(keeprepeat[type] || !(oldname ~ name))
|
|
printf("%d &~~%s~~ \n", type, obj);
|
|
oldname = name;
|
|
|
|
}
|
|
}
|
|
|
|
END {
|
|
close("items");
|
|
}
|