diff options
Diffstat (limited to 'lib/mods/theme')
487 files changed, 126278 insertions, 0 deletions
diff --git a/lib/mods/theme/apex/delete.me b/lib/mods/theme/apex/delete.me new file mode 100644 index 00000000..2e65efe2 --- /dev/null +++ b/lib/mods/theme/apex/delete.me @@ -0,0 +1 @@ +a
\ No newline at end of file diff --git a/lib/mods/theme/changelog.txt b/lib/mods/theme/changelog.txt new file mode 100644 index 00000000..3cb3cb45 --- /dev/null +++ b/lib/mods/theme/changelog.txt @@ -0,0 +1,73 @@ +=== RECENT VERSION HISTORY (1.1.5 to 1.2.0) ===
+
+1.1.5 AKA "Angles and Corners"
+- Dropped the NOTICE flag from regular sandwalls.
+- Flight is now possible over wooden wilderness structures.
+- The Anduin River lost the CAN_RUN and DONT_NOTICE_RUNNING flags.
+- The Orc Cave now leads you out to the other side of the Misty Mountains.
+- Put an Eagles' nest into Khazad-Dum.
+
+- The Map of Thror no longer lives in the Bree town quest. It is now on a special (branch) level of the Barrow-Downs.
+- The Key of Thorin no longer lives in the Minas Anor town quest. It is now on a special (branch) level of Mirkwood.
+- Reworked the Bridge of Khazad-Dum level to be more nasty and random, played with the layout a bit.
+- Added new level "Orthanc" in the Isengard dungeon, based heavily on the one created by Burb Lulls. There is, however, a canonical twist (or two). >:)
+
+1.1.6 AKA "Curses to This Mirage"
+- Druids (r_info) lost the EVIL flag. These are supposed to be Yavanna's people and they're certainly not evil. The dark elven druids are stil evil.
+- All neutral monsters defined in r_info have been forced into the wilderness.
+- The coaligned spirits now have the GOOD flag. This is mostly to clean up the Mandos piety code (later).
+
+- Fixed the automatic stat gain script to forget stat gain on death, so the savefile can be reused and monster memory retained.
+- Drastically reduced piety gain for quaffing pots of corruption. It's meant to be a fun thematic addition, not a scumming tactic.
+- Aewroeg, Narroeg and Wainriders now start with their stated spellbooks
+
+1.1.7 AKA "Poor Madeleine"
+- Rings and amulets no longer ignore the elements. The rationale for this was that Middle-earth magical items are *really* magical and therefore powerful, but it was unbalancing, not to mention made it a pain destroying objects in the late game.
+- Rings of Lordly Protection have been renamed to 'of Arnor'
+- Pushed Potions of Corruption deeper into the dungeon.
+- Changed names on Aule's and Ulmo's spellbooks to be more impressive-sounding
+- Removed the miscellaneous food items, except for Longbottom leaf, milk and honey.
+- New item types: Ranger's Arrow, Throwing Axe, Buckler, Small Mithril Boomerang, Mithril Boomerang (the latter three adapted from FuryMod)
+
+1.1.8 AKA "Little White Candle"
+- Weapons of Unmagic now have negative to-hit and to-dam modifiers; demonology equipment can no longer get this ego type.
+- Reworked the T-Plus "Rogue" ego type for boots to balance it: reduced the pval, added to_h and to_d penalties and made the stealth and luck bonuses rarer.
+- Boots of Elvenkind no longer guarantee a speed bonus; chance is 50%.
+- Pushed 'of the Maiar' items deeper into the dungeon.
+- Filthy Rags of Leprousness are no more; they're replaced by Armour of Dunharrow (same effects, but can show up on all soft & hard armour plus cloaks)
+- A number of the "bad" ego types got the aggravation flag to offset the benefits of flip-scumming.
+- Drastically reduced magic breath chances on Ethereal robes and cloaks.
+- The 'of Lordliness' ego type is now 'of Arnor'; 'of Might' is now 'of Gondor'; 'of Nothingness' is now 'of Angmar'; boots of speed are now 'of Rohan' and all 'of Stealth' is now 'of Eriador'. Because of the hobbit connection, the 'of Eriador' items now have a 10% chance of a luck bonus equal to the stealth bonus (which remains at 100%).
+- The 'of Arnor' and 'of Gondor' ego types can now show up on all headgear, not just crowns.
+- The 'Sharp' ego has been extended to arrows and crossbow bolts (I added a new index and called them 'Sharpened' to make sure the additional cost is not exorbitant).
+- The 'of Sensitivity' ego type is no longer possible on body armour; there were too many T-lines in e_info.txt.
+- The 'Elemental' ego type on rings is only possible on high-level rings and amulets now; same reason as above.
+- The 'Blazing' ego type is now only possible on crowns, high-level rings and amulets; same reason as above.
+- The 'Radiant' ego type is now only possible on crowns, high-level rings and all amulets (as before); same reason as above.
+- The 'Glowing' and 'Dazzling' ego types are now only possible on crowns and low-level rings and amulets; same reason as above.
+- Rings of the Elements have been removed; one Elemental ego for jewelry is enough.
+- New ego types: Magical for jewelry, cloaks, soft armour and gloves -- makes the item ignore the elements and gives a 50% chance of the ability to store a spell. Magical for missile launchers -- adds a tiny boost to mana; designed with magic-using archer and warrior-types in mind.
+
+1.1.9 AKA "Kit Bag Full of Marbles"
+- Randart magestaves can now gain % to life
+- Randart armour, lights, jewelry and magestaves can now get the ability to store a spell
+- Randart high-level soft armour, hard armour and DSM can gain nether immunity
+- Randart light weapons (no broken ones) can gain sentience
+
+- Humans may no longer be Lost Souls for thematic reasons; the Doom of Men is that their fate after death is unknown to anyone except Eru. This applies to: Edain, Druedain, Rohirrim, Dunedain, Easterlings and Beornings. Also no longer allowed as LostSouls are yeeks, orcs, trolls and half-ogres.
+- Flying creatures (Eagles, Dragons, Aewroeg) now learn to fly high enough to pass mountains at clvl50.
+
+- FF now may also offer the following skills: Nature, Runecraft, Boulder-throwing.
+
+1.2.0 AKA "Twining Light"
+- Ultimate amulet no longer weighs 60lbs. >.>
+- Reworked the Paur* artifact gauntlets to be more thematic, added stat bonuses and sustains. I never liked the fact that it was a no-brainer which of them to keep if you had all four.
+- Fixed some rarity bugs with a number of Theme artifacts.
+- Removed the lesser (Dwarven) rings of power (except the Ring of Durin). They were taking up artifact space and didn't do much. They'll be back, tweaked, in a 3.0.0-compatible Theme.
+- Fixed some lurking bugs in in set_info
+- Reduced rarity on the Cloak of Valinor. It was a little incongruous that it cost far less than Ancanaur and was far more rare than is decent.
+- Gandalf's robe now gives fire immunity
+- Ancanaur is now a shadow blade, not a bluesteel blade.
+- The Golden Horn of the Thunderlords now ignores elements.
+- New artifacts: Erkenbrand's shield, Gimli's axe and shield.
+- New item set: Gimli's Gear (boots, axe, shield)
\ No newline at end of file diff --git a/lib/mods/theme/core/auto.lua b/lib/mods/theme/core/auto.lua new file mode 100644 index 00000000..b758db52 --- /dev/null +++ b/lib/mods/theme/core/auto.lua @@ -0,0 +1,859 @@ +-- This file is the core of the Automatizer +-- Please do not touch unless you know what you are doing + +__rules = {} +__rules_max = 0 + +rule_aux = {} + +-- Rule apply function, does .. nothing +function auto_nothing(obj, item) + return +end + +function auto_inscribe(obj, item, note) + if obj.note ~= 0 then return end + msg_print("<Auto-Inscribe {"..note.."}>") + obj.note = quark_add(note) + return TRUE +end + +-- Rule apply function, pickup object +function auto_pickup(obj, item) + if item >= 0 then return end + if inven_carry_okay(obj) == FALSE then return end + msg_print("<Auto-pickup>") + object_pickup(-item) + return TRUE +end + +-- Rule apply function, destroy item +function auto_destroy(obj, item) + -- be carefull to what we can destroy + -- Unaware things won't be destroyed. + if is_aware(obj) == FALSE then return end + + -- Inscribed things won't be destroyed! + if obj.note ~= 0 then return end + + -- Keep Artifacts -- they cannot be destroyed anyway + if is_artifact(obj) == TRUE then return end + + -- Cannot destroy CURSE_NO_DROP objects + local f1, f2, f3, f4, f5, esp = object_flags(obj); + if band(f4, TR4_CURSE_NO_DROP) ~= 0 and band(obj.ident, IDENT_CURSED) then return end + + msg_print("<Auto-destroy>") + + -- Eliminate the item (from the pack) + if item >= 0 then + inven_item_increase(item, -obj.number) + inven_item_describe(item) + inven_item_optimize(item) + -- Eliminate the item (from the floor) + else + floor_item_increase(0 - item, -obj.number) + floor_item_describe(0 - item) + floor_item_optimize(0 - item) + end + return TRUE +end + +-- Report the status of an object +function object_status(obj) + local sense = + { + [SENSE_CURSED] = "bad", + [SENSE_WORTHLESS] = "very bad", + [SENSE_AVERAGE] = "average", + [SENSE_GOOD_LIGHT] = "good", + [SENSE_GOOD_HEAVY] = "good", + [SENSE_EXCELLENT] = "very good", + [SENSE_SPECIAL] = "special", + [SENSE_TERRIBLE] = "terrible", + } + + if is_known(obj) == FALSE then + if sense[obj.sense] then + return sense[obj.sense] + else + return "" + end + else +if nil then -- test + local osense = -1 + local type = select_sense(obj, TRUE, TRUE) + if type == 1 then + osense = value_check_aux1(obj) + elseif type == 2 then + osense = value_check_aux1_magic(obj) + end +print("type : "..type) + if sense[osense] then + print("sense: "..sense[osense]) + return sense[osense] + else + print("sense: ") + return "" + end + +else -- the real one + + local slot = wield_slot_ideal(obj, TRUE) + + -- Arts items + if is_artifact(obj) == TRUE then + if band(obj.ident, IDENT_CURSED) == 0 then return "special" + else return "terrible" end + -- Ego items + elseif (obj.name2 > 0 or obj.name2b > 0) then + if band(obj.ident, IDENT_CURSED) == 0 then return "very good" + else return "very bad" end + -- weapon + elseif (slot == INVEN_WIELD) or (slot == INVEN_BOW) or (slot == INVEN_AMMO) or (slot == INVEN_TOOL) then + if obj.to_h + obj.to_d < 0 then + return "bad" + elseif obj.to_h + obj.to_d > 0 then + return "good" + else + return "average" + end + -- armor + elseif (slot >= INVEN_BODY) and (slot <= INVEN_FEET) then + if obj.to_a < 0 then + return "bad" + elseif obj.to_a > 0 then + return "good" + else + return "average" + end + -- ring + elseif slot == INVEN_RING then + if (obj.to_d + obj.to_h < 0) or (obj.to_a < 0) or (obj.pval < 0) then + return "bad" + else + return "average" + end + -- amulet + elseif slot == INVEN_NECK then + if (obj.pval < 0) then + return "bad" + else + return "average" + end + -- chests + elseif obj.tval == TV_CHEST then + if obj.pval == 0 then + return "empty" + elseif obj.pval < 0 then + return "disarmed" + else + return "average" + end + else + return "average" + end +end + end +end + +-- Recursive function to generate a rule function tree +function gen_rule_fct(r) + -- It is a test rule (or, and, ...) + if r.label == "and" or r.label == "or" then + local i + local fct_tbl = {} + for i = 1, getn(r) do + if r[i].label ~= "comment" then + tinsert(fct_tbl, gen_rule_fct(r[i])) + end + end + if r.label == "and" then + return function(object) + local fcts = %fct_tbl + local i + for i = 1, getn(fcts) do + if not fcts[i](object) then return end + end + return TRUE + end + elseif r.label == "or" then + return function(object) + local fcts = %fct_tbl + local i + for i = 1, getn(fcts) do + if fcts[i](object) then return TRUE end + end + end + end + -- It is a condition rule (name, type, level, ...) + else + if r.label == "not" then + local f + if not r[1] then + f = function (object) return TRUE end + else + f = gen_rule_fct(r[1]) + end + return function(object) return not %f(object) end + elseif r.label == "inventory" then + local f + if not r[1] then + f = function(object) return end + else + f = gen_rule_fct(r[1]) + end + return function(object) + local i = 0 + while i < INVEN_WIELD do + if %f(player.inventory(i)) then + return TRUE + end + i = i + 1 + end + end + elseif r.label == "equipment" then + local f + if not r[1] then + f = function(object) return end + else + f = gen_rule_fct(r[1]) + end + return function(object) + local i = INVEN_WIELD + while i < INVEN_TOTAL do + if %f(player.inventory(i)) then + return TRUE + end + i = i + 1 + end + end + elseif r.label == "name" then + return function(object) if strlower(object_desc(object, -1, 0)) == strlower(%r[1]) then return TRUE end end + elseif r.label == "contain" then + return function(object) if strfind(strlower(object_desc(object, -1, 0)), strlower(%r[1])) then return TRUE end end + elseif r.label == "symbol" then + return function(object) if strchar(get_kind(object).d_char) == %r[1] then return TRUE end end + elseif r.label == "inscribed" then + return function(object) if object.note ~= 0 and strfind(strlower(quark_str(object.note)), strlower(%r[1])) then return TRUE end end + elseif r.label == "discount" then + local d1 = r.args.min + local d2 = r.args.max + if tonumber(d1) == nil then d1 = getglobal(d1) else d1 = tonumber(d1) end + if tonumber(d2) == nil then d2 = getglobal(d2) else d2 = tonumber(d2) end + return function(object) if is_aware(object) == TRUE and object.discount >= %d1 and object.discount <= %d2 then return TRUE end end + elseif r.label == "tval" then + local tv = r[1] + if tonumber(tv) == nil then tv = getglobal(tv) else tv = tonumber(tv) end + return function(object) if object.tval == %tv then return TRUE end end + elseif r.label == "sval" then + assert(r.args.min and r.args.max, "sval rule lacks min or max") + local sv1 = r.args.min + local sv2 = r.args.max + if tonumber(sv1) == nil then sv1 = getglobal(sv1) else sv1 = tonumber(sv1) end + if tonumber(sv2) == nil then sv2 = getglobal(sv2) else sv2 = tonumber(sv2) end + return function(object) if is_aware(object) == TRUE and object.sval >= %sv1 and object.sval <= %sv2 then return TRUE end end + elseif r.label == "status" then + return function(object) if object_status(object) == strlower(%r[1]) then return TRUE end end + elseif r.label == "state" then + if r[1] == "identified" then + return function(object) if is_known(object) == TRUE then return TRUE end end + else + return function(object) if is_known(object) == FALSE then return TRUE end end + end + elseif r.label == "race" then + return function(object) if strlower(get_race_name()) == strlower(%r[1]) then return TRUE end end + elseif r.label == "subrace" then + return function(object) if strlower(get_subrace_name()) == strlower(%r[1]) then return TRUE end end + elseif r.label == "class" then + return function(object) if strlower(get_class_name()) == strlower(%r[1]) then return TRUE end end + elseif r.label == "level" then + assert(r.args.min and r.args.max, "level rule lacks min or max") + return function(object) if player.lev >= tonumber(%r.args.min) and player.lev <= tonumber(%r.args.max) then return TRUE end end + elseif r.label == "skill" then + assert(r.args.min and r.args.max, "skill rule lacks min or max") + local s = find_skill_i(r[1]) + assert(s ~= -1, "no skill "..r[1]) + return function(object) if get_skill(%s) >= tonumber(%r.args.min) and get_skill(%s) <= tonumber(%r.args.max) then return TRUE end end + elseif r.label == "ability" then + local s = find_ability(r[1]) + assert(s ~= -1, "no ability "..r[1]) + return function(object) if has_ability(%s) == TRUE then return TRUE end end + end + end +end + +function auto_inscribe_maker(inscription) + return function(...) + arg.n = arg.n + 1 + arg[getn(arg)] = %inscription + return call(auto_inscribe, arg) + end +end + +-- Generate a rule from a table +function gen_full_rule(t) + -- only honor rules for this module + if not t.args.module then + t.args.module = "ToME" + end + + if not ((t.args.module == "all") or (t.args.module == game_module)) then + return function() end + end + + -- Check for which action to do + local apply_fct = auto_nothing + if t.args.type == "destroy" then apply_fct = auto_destroy + elseif t.args.type == "pickup" then apply_fct = auto_pickup + elseif t.args.type == "inscribe" then apply_fct = auto_inscribe_maker(t.args.inscription) + end + + -- create the function tree + local rf + if t[1] then + rf = gen_rule_fct(t[1]) + else + rf = function (object) end + end + + -- create the final function + return function(...) + local rf = %rf + if rf(arg[1]) then + if call(%apply_fct, arg) == TRUE then return TRUE end + end + end +end + +-- Create a function that checks for the rules(passed in xml form) +function add_ruleset(s) + local tbl = xml:collect(s) + local i + + -- Add all rules + for i = 1, getn(tbl) do + local t = tbl[i] + + if t.label == "rule" then + -- Create the function tree + local fct = gen_full_rule(t) + + -- Create the test function + __rules[__rules_max] = + { + ["table"] = t, + ["fct"] = fct + } + __rules_max = __rules_max + 1 + end + end +end + +-- Apply the current rules to an object +-- call with at least (object, idx) +function apply_rules(...) + local i + for i = 0, __rules_max - 1 do + if call(__rules[i].fct, arg) then return TRUE end + end + return FALSE +end + +-- Clear the current rules +function clean_ruleset() + __rules_max = 0 + __rules = {} +end + +------ helper fonctions for the GUI + +auto_aux = {} +auto_aux.stack = { n = 0 } +auto_aux.idx = 1 +auto_aux.rule = 1 +function auto_aux:go_right() + if auto_aux.rule[1] and type(auto_aux.rule[1]) == "table" then + tinsert(auto_aux.stack, auto_aux.idx) + tinsert(auto_aux.stack, auto_aux.rule) + auto_aux.rule = auto_aux.rule[1] + auto_aux.idx = 1 + end +end + +function auto_aux:go_left(sel) + local n = getn(auto_aux.stack) + + if n > 0 then + auto_aux.idx = auto_aux.stack[n - 1] + auto_aux.rule = auto_aux.stack[n] + tremove(auto_aux.stack) + tremove(auto_aux.stack) + end +end + +function auto_aux:go_down() + if getn(auto_aux.stack) > 1 then + if auto_aux.stack[getn(auto_aux.stack)][auto_aux.idx + 1] then + auto_aux.idx = auto_aux.idx + 1 + auto_aux.rule = auto_aux.stack[getn(auto_aux.stack)][auto_aux.idx] + end + end +end + +function auto_aux:go_up() + if getn(auto_aux.stack) > 1 then + if auto_aux.stack[getn(auto_aux.stack)][auto_aux.idx - 1] then + auto_aux.idx = auto_aux.idx - 1 + auto_aux.rule = auto_aux.stack[getn(auto_aux.stack)][auto_aux.idx] + end + end +end + +function auto_aux:scroll_up() + xml.write_off_y = xml.write_off_y - 1 +end + +function auto_aux:scroll_down() + xml.write_off_y = xml.write_off_y + 1 +end + +function auto_aux:scroll_left() + xml.write_off_x = xml.write_off_x + 1 +end + +function auto_aux:scroll_right() + xml.write_off_x = xml.write_off_x - 1 +end + +function auto_aux:adjust_current(sel) + if __rules_max == 0 then return end + + xml.write_off_y = 0 + xml.write_off_x = 0 + auto_aux.idx = 1 + auto_aux.stack = { n = 0 } + auto_aux.rule = __rules[sel].table +end + +function auto_aux:move_up(sel) + if sel > 0 then + local u = __rules[sel - 1] + local d = __rules[sel] + __rules[sel - 1] = d + __rules[sel] = u + return sel - 1 + end + return sel +end + +function auto_aux:move_down(sel) + if sel < __rules_max - 1 then + local u = __rules[sel] + local d = __rules[sel + 1] + __rules[sel + 1] = u + __rules[sel] = d + return sel + 1 + end + return sel +end + +function auto_aux:new_rule(sel, nam, typ, arg) + local r + + + -- nam can also directly be the table itself + if type(nam) == "table" then + r = + { + ["table"] = nam, + ["fct"] = function (object) end + } + elseif typ == "inscribe" then + if arg == "" then + arg = input_box("Inscription?", 79) + end + r = + { + ["table"] = + { + label = "rule", + args = { name = nam, type = typ, inscription = arg, module = game_module }, + }, + ["fct"] = function (object) end + } + else + r = + { + ["table"] = + { + label = "rule", + args = { name = nam, type = typ, module = game_module }, + }, + ["fct"] = function (object) end + } + end + tinsert(__rules, sel, r) + __rules_max = __rules_max + 1 +end + +function auto_aux:rename_rule(sel, nam) + if sel >= 0 and sel < __rules_max then + __rules[sel].table.args.name = nam + end +end + +function auto_aux:save_ruleset() + xml.write = xml.write_file + + print_hook("clean_ruleset()\nadd_ruleset\n[[\n") + local i + for i = 0, __rules_max - 1 do + xml:print_xml(__rules[i].table, '') + end + print_hook("]]\n") + + xml.write = xml.write_screen +end + +function auto_aux:del_self(sel) + if auto_aux.rule.label == "rule" then + tremove(__rules, sel) + __rules_max = __rules_max - 1 + return sel - 1 + else + local idx = auto_aux.idx + auto_aux:go_left(sel) + tremove(auto_aux.rule, idx) + return sel + end +end + +auto_aux.types_desc = +{ + ["and"] = + { + "Check is true if all rules within it are true", + xml:collect([[<and><foo1>...</foo1><foo2>...</foo2><foo3>...</foo3></and>]]), + function () + return xml:collect("<and></and>") + end, + }, + ["or"] = + { + "Check is true if at least one rule within it is true", + xml:collect([[<or><foo1>...</foo1><foo2>...</foo2><foo3>...</foo3></or>]]), + function () + return xml:collect("<or></or>") + end, + }, + ["not"] = + { + "Invert the result of its child rule", + xml:collect([[<not><foo1>...</foo1></not>]]), + function () + return xml:collect("<not></not>") + end, + }, + ["comment"] = + { + "Comments are meaningless", + xml:collect([[<comment>Comment explaining something</comment>]]), + function () + local n = input_box("Comment?", 79) + if n == "" then return end + return xml:collect("<comment>"..n.."</comment>") + end, + }, + ["name"] = + { + "Check is true if object name matches name", + xml:collect([[<name>potion of healing</name>]]), + function () + local n = input_box("Object name to match?", 79) + if n == "" then return end + return xml:collect("<name>"..n.."</name>") + end, + }, + ["contain"] = + { + "Check is true if object name contains word", + xml:collect([[<contain>healing</contain>]]), + function () + local n = input_box("Word to find in object name?", 79) + if n == "" then return end + return xml:collect("<contain>"..n.."</contain>") + end, + }, + ["inscribed"] = + { + "Check is true if object inscription contains word", + xml:collect([[<inscribed>=g</inscribed>]]), + function () + local n = input_box("Word to find in object inscription?", 79) + if n == "" then return end + return xml:collect("<inscribed>"..n.."</inscribed>") + end, + }, + ["discount"] = + { + "Check is true if object discount is between 2 values", + xml:collect([[<sval min='50' max='100'></sval>]]), + function () + local s = "<discount " + + local n = input_box("Min discount?", 79) + if n == "" then return end + s = s.."min='"..n.."' " + + n = input_box("Max discount?", 79) + if n == "" then return end + s = s.."max='"..n.."'></discount>" + return xml:collect(s) + end, + }, + ["symbol"] = + { + "Check is true if object symbol is ok", + xml:collect([[<symbol>!</symbol>]]), + function () + local n = input_box("Symbol to match?", 1) + if n == "" then return end + return xml:collect("<symbol>"..n.."</symbol>") + end, + }, + ["status"] = + { + "Check is true if object status is ok", + xml:collect([[<status>good</status>]]), + function () + local n = msg_box("[t]errible, [v]ery bad, [b]ad, [a]verage, [G]ood, [V]ery good, [S]pecial?") + local t = + { + ["t"] = "terrible", + ["v"] = "very bad", + ["b"] = "bad", + ["a"] = "average", + ["G"] = "good", + ["V"] = "very good", + ["S"] = "special", + } + if not t[strchar(n)] then return end + return xml:collect("<status>"..t[strchar(n)].."</status>") + end, + }, + ["state"] = + { + "Check is true if object is identified/unidentified", + xml:collect([[<state>identified</state>]]), + function () + local n = msg_box("[i]dentified, [n]on identified?") + local t = + { + ["i"] = "identified", + ["n"] = "not identified", + } + if not t[strchar(n)] then return end + return xml:collect("<state>"..t[strchar(n)].."</state>") + end, + }, + ["tval"] = + { + "Check is true if object tval(from k_info.txt) is ok", + xml:collect([[<tval>55</tval>]]), + function () + local n = input_box("Tval to match?", 79) + if n == "" then return end + return xml:collect("<tval>"..n.."</tval>") + end, + }, + ["sval"] = + { + { + "Check is true if object sval(from k_info.txt) is between", + "2 values", + }, + xml:collect([[<sval min='0' max='100'></sval>]]), + function () + local s = "<sval " + + local n = input_box("Min sval?", 79) + if n == "" then return end + s = s.."min='"..n.."' " + + n = input_box("Max sval?", 79) + if n == "" then return end + s = s.."max='"..n.."'></sval>" + return xml:collect(s) + end, + }, + ["race"] = + { + "Check is true if player race is ok", + xml:collect([[<race>dunadan</race>]]), + function () + local n = input_box("Player race to match?", 79) + if n == "" then return end + return xml:collect("<race>"..n.."</race>") + end, + }, + ["subrace"] = + { + "Check is true if player subrace is ok", + xml:collect([[<subrace>vampire</subrace>]]), + function () + local n = input_box("Player subrace to match?", 79) + if n == "" then return end + return xml:collect("<subrace>"..n.."</subrace>") + end, + }, + ["class"] = + { + "Check is true if player class is ok", + xml:collect([[<class>sorceror</class>]]), + function () + local n = input_box("Player class to match?", 79) + if n == "" then return end + return xml:collect("<class>"..n.."</class>") + end, + }, + ["level"] = + { + "Check is true if player level is between 2 values", + xml:collect([[<level min='20' max='50'></level>]]), + function () + local s = "<level " + + local n = input_box("Min player level?", 79) + if n == "" then return end + s = s.."min='"..n.."' " + + n = input_box("Max player level?", 79) + if n == "" then return end + s = s.."max='"..n.."'></level>" + + return xml:collect(s) + end, + }, + ["skill"] = + { + "Check is true if player skill level is between 2 values", + xml:collect([[<skill min='10' max='20'>Divination</skill>]]), + function () + local s = "<skill " + + local n = input_box("Min skill level?", 79) + if n == "" then return end + s = s.."min='"..n.."' " + + n = input_box("Max skill level?", 79) + if n == "" then return end + s = s.."max='"..n.."'>" + + n = input_box("Skill name?", 79) + if n == "" then return end + if find_skill_i(n) == -1 then return end + s = s..n.."</skill>" + + return xml:collect(s) + end, + }, + ["ability"] = + { + "Check is true if player has the ability", + xml:collect([[<ability>Ammo creation</ability>]]), + function() + local n = input_box("Ability name?", 79) + if n == "" then return end + if find_ability(n) == -1 then return end + return xml:collect("<ability>"..n.."</ability>") + end, + }, + ["inventory"] = + { + { + "Check is true if something in player's inventory matches", + "the contained rule", + }, + xml:collect([[<inventory><foo1>...</foo1></inventory>]]), + function () + return xml:collect("<inventory></inventory>") + end, + }, + ["equipment"] = + { + { + "Check is true if something in player's equipment matches", + "the contained rule", + }, + xml:collect([[<equipment><foo1>...</foo1></equipment>]]), + function () + return xml:collect("<equipment></equipment>") + end, + }, +} + +function auto_aux:display_desc(sel) + local d = auto_aux.types_desc[sel][1] + if type(d) == "string" then + c_prt(TERM_WHITE, d, 1, 17) + else + local k, e, i + i = 0 + for k, e in d do + c_prt(TERM_WHITE, e, 1 + i, 17) + i = i + 1 + end + end +end + +function auto_aux:add_child(sel) + -- <rule> and <not> contain only one match + if (auto_aux.rule.label == "rule" or auto_aux.rule.label == "not") and auto_aux.rule[1] then return end + if (auto_aux.rule.label == "rule" or auto_aux.rule.label == "equipment") and auto_aux.rule[1] then return end + if (auto_aux.rule.label == "rule" or auto_aux.rule.label == "inventory") and auto_aux.rule[1] then return end + + -- Only <and> and <or> can contain + if auto_aux.rule.label ~= "rule" and auto_aux.rule.label ~= "and" and auto_aux.rule.label ~= "or" and auto_aux.rule.label ~= "not" and auto_aux.rule.label ~= "equipment" and auto_aux.rule.label ~= "inventory" then return end + + -- get it + local r = auto_aux.types_desc[sel][3]() + if not r then return end + + -- Ok add it + tinsert(auto_aux.rule, r[1]) +end + +function auto_aux.regen_ruleset() + local i + for i = 0, __rules_max - 1 do + __rules[i].fct = gen_full_rule(__rules[i].table) + end +end + + +-- Easily add new rules +function easy_add_rule(typ, mode, do_status, obj) + local detect_rule + + if mode == "tval" then + detect_rule = "<tval>"..obj.tval.."</tval>" + elseif mode == "tsval" then + detect_rule = "<and><tval>"..obj.tval.."</tval><sval min='"..obj.sval.."' max='"..obj.sval.."'></sval></and>" + elseif mode == "name" then + detect_rule = "<name>"..strlower(object_desc(obj, -1, 0)).."</name>" + end + + if do_status == TRUE then + local status = object_status(obj) + if status and not (status == "") then + detect_rule = "<and>"..detect_rule.."<status>"..status.."</status></and>" + end + end + + local rule = "<rule module='"..game_module.."' name='"..typ.."' type='"..typ.."'>"..detect_rule.."</rule>" + auto_aux:new_rule(0, xml:collect(rule)[1], '') + auto_aux.regen_ruleset() + msg_print("Rule added. Please go to the Automatizer screen (press = then T)") + msg_print("to save the modified ruleset.") +end diff --git a/lib/mods/theme/core/building.lua b/lib/mods/theme/core/building.lua new file mode 100644 index 00000000..8e88888a --- /dev/null +++ b/lib/mods/theme/core/building.lua @@ -0,0 +1,15 @@ +__building_actions = {} + +function add_building_action(a) + assert(a.index, "No building action index") + assert(a.action, "No building action action") + __building_actions[a.index] = a.action +end + +function __bact_activate(bact) + if __building_actions[bact] then + return __building_actions[bact]() + end +end + +add_hook_script(HOOK_BUILDING_ACTION, "__bact_activate", "__bact_activate") diff --git a/lib/mods/theme/core/crpt_aux.lua b/lib/mods/theme/core/crpt_aux.lua new file mode 100644 index 00000000..e4f16e2a --- /dev/null +++ b/lib/mods/theme/core/crpt_aux.lua @@ -0,0 +1,243 @@ +-- Core functions for corruptions + +__corruptions = {} +__corruptions_max = 0 +__corruptions_callbacks_max = 0 + +-- Get the corruption +function player.corruption(c, set) + if set then + player.corruptions_aux[c + 1] = set + player.redraw = bor(player.redraw, PR_BASIC) + player.update = bor(player.update, PU_BONUS, PU_TORCH, PU_BODY, PU_POWERS) + if (set == TRUE) and (__corruptions[c].gain) then + __corruptions[c].gain() + end + if (set == FALSE) and (__corruptions[c].lose) then + __corruptions[c].lose() + end + else + return player.corruptions_aux[c + 1] + end +end + +-- Test if we have that corruption +-- We must: +-- 1) have it or be willing to get it +-- 2) have all its dependancies +-- 3) have none of its opposing corruptions +-- 4) pass the possible tests +function test_depend_corrupt(corrupt, can_gain) + local i, c + + if not can_gain then can_gain = FALSE end + + if can_gain == TRUE then + if (player.corruption(corrupt) ~= FALSE) then + return FALSE + end + else + if (player.corruption(corrupt) ~= TRUE) then + return FALSE + end + end + + for c, i in __corruptions[corrupt].depends do + if test_depend_corrupt(c) ~= TRUE then + return FALSE + end + end + + for c, i in __corruptions[corrupt].oppose do + if test_depend_corrupt(c) ~= FALSE then + return FALSE + end + end + + -- are we even allowed to get it? + if __corruptions[corrupt].can_gain and (not __corruptions[corrupt].can_gain()) then + return FALSE + end + + return TRUE +end + +-- Gain a new corruption +function gain_corruption(group) + local i, max + local pos = {} + + -- Get the list of all possible ones + max = 0 + for i = 0, __corruptions_max - 1 do + if __corruptions[i].group == group and test_depend_corrupt(i, TRUE) == TRUE and __corruptions[i].random == TRUE and __corruptions[i].allow() then + pos[max] = i + max = max + 1 + end + end + + -- Ok now get one of them + if (max > 0) then + local ret = rand_int(max) + + player.corruption(pos[ret], TRUE) + cmsg_print(TERM_L_RED, __corruptions[pos[ret]].get_text) + + return pos[ret] + else + return -1 + end +end + +-- Lose an existing corruption +function lose_corruption() + local i, max + local pos = {} + + -- Get the list of all possible ones + max = 0 + for i = 0, __corruptions_max - 1 do + if test_depend_corrupt(i) == TRUE and __corruptions[i].removable == TRUE then + pos[max] = i + max = max + 1 + end + end + + -- Ok now get one of them + if (max > 0) then + local ret = rand_int(max) + + player.corruption(pos[ret], FALSE) + cmsg_print(TERM_L_RED, __corruptions[pos[ret]].lose_text) + + -- Ok now lets see if it broke some dependancies + for i = 0, max - 1 do + if player.corruption(pos[i]) ~= test_depend_corrupt(pos[i]) then + player.corruption(pos[i], FALSE) + cmsg_print(TERM_L_RED, __corruptions[pos[i]].lose_text) + end + end + + return pos[ret] + else + return -1 + end +end + +-- Lose all corruptions (for e.g. Potion of New Life) +function lose_all_corruptions() + local i; + for i = 0, __corruptions_max - 1 do + lose_corruption() + end + return -1 +end + +-- Creates a new corruption +function add_corruption(c) + assert(c.color, "No corruption color") + assert(c.name, "No corruption name") + assert(c.get_text, "No corruption get_text") + assert(c.lose_text, "No corruption lose_text") + assert(c.desc, "No corruption desc") + assert(c.hooks, "Nothing to do for corruption") + if not c.random then c.random = TRUE end + if not c.removable then c.removable = TRUE end + if not c.allow then c.allow = function() return not nil end end + + if c.depends == nil then c.depends = {} end + if c.oppose == nil then c.oppose = {} end + + -- We must make sure the other ones opposes too + local o, i + for o, i in c.oppose do + __corruptions[o].oppose[__corruptions_max] = TRUE + end + + local index, h + for index, h in c.hooks do + add_hook_script(index, "__lua__corrupt_callback"..__corruptions_callbacks_max, "__lua__corrupt_callback"..__corruptions_callbacks_max) + setglobal("__lua__corrupt_callback"..__corruptions_callbacks_max, + function (...) + if test_depend_corrupt(%__corruptions_max) == TRUE then + return call(%h, arg) + end + end + ) + __corruptions_callbacks_max = __corruptions_callbacks_max + 1 + end + + if type(c.desc) == "table" then + local new_desc = "" + for index, h in c.desc do + new_desc = new_desc..h.."\n" + end + c.desc = new_desc + end + + __corruptions[__corruptions_max] = c + __corruptions_max = __corruptions_max + 1 + return (__corruptions_max - 1) +end + + + +---------- Corruption spoiler generator ----------- +function corruption_spoiler_generate() + make_temp_file() + print_hook( +[[~~~~~01|Corruptions (Spoiler) +~~~~~02|Spoilers|Corruptions +#####R=== ToME Corruptions Spoiler === + +Sometimes adventurers become exposed to the dark powers of Morgoth. If they +are unable to resist these powers, they become corrupted. Corruptions can +change their physical or mental abilities, some of which can be good, and +some bad. Most corruptions will affect you permanently, although some only +operate when they are activated (whether by player choice or as a random +event). You can check which corruptions you have in the knowledge screen 6 +(accessed through the '~' menu) or in a character dump. + +#####GGaining and (not) losing corruptions +There are several ways that you can become corrupted. + +You can become corrupted by quaffing a Potion of Corruption or by drinking +from a Fountain of Corruption. Also some strange items can be activated +for corruption. + +Corruptions are permanent. Once you have one, you have it for life. + +]]) + local i, e + for i = 0, __corruptions_max - 1 do + print_hook("[[[[[B"..__corruptions[i].name.."]\n") + print_hook(__corruptions[i].desc) + print_hook("[[[[[GGain message: "..__corruptions[i].get_text.."]\n") + if __corruptions[i].removable == TRUE then + print_hook("[[[[[RLose message: "..__corruptions[i].lose_text.."]\n") + else + print_hook("It is not removable.\n") + end + + local ok + ok = nil + for e, _ in __corruptions[i].depends do ok = not nil end + if ok then + print_hook("It depends on:\n") + for e, _ in __corruptions[i].depends do + print_hook(" "..__corruptions[e].name.."\n") + end + end + ok = nil + for e, _ in __corruptions[i].oppose do ok = not nil end + if ok then + print_hook("It is opposed to:\n") + for e, _ in __corruptions[i].oppose do + print_hook(" "..__corruptions[e].name.."\n") + end + end + print_hook("\n\n") + end + close_temp_file() + msg_print("File created as: "..get_temp_name()) +end diff --git a/lib/mods/theme/core/dungeon.lua b/lib/mods/theme/core/dungeon.lua new file mode 100644 index 00000000..2877838d --- /dev/null +++ b/lib/mods/theme/core/dungeon.lua @@ -0,0 +1,106 @@ +-- Internal lua file in charge of dungeon stuff + +function place_dungeon(y, x, d_idx) + if d_idx then + wild_map(y, x).entrance = 1000 + d_idx + else + wild_map(y, x).entrance = 0 + end +end + +function dungeon(d_idx) + return d_info[1 + d_idx] +end + +function wild_feat(wild) + return wf_info[1 + wild.feat] +end + +function explode_dir(dir) + return ddy[dir + 1], ddx[dir + 1] +end + +function rotate_dir(dir, mov) + if mov > 0 then + if dir == 7 then dir = 8 + elseif dir == 8 then dir = 9 + elseif dir == 9 then dir = 6 + elseif dir == 6 then dir = 3 + elseif dir == 3 then dir = 2 + elseif dir == 2 then dir = 1 + elseif dir == 1 then dir = 4 + elseif dir == 4 then dir = 7 + end + elseif mov < 0 then + if dir == 7 then dir = 4 + elseif dir == 4 then dir = 1 + elseif dir == 1 then dir = 2 + elseif dir == 2 then dir = 3 + elseif dir == 3 then dir = 6 + elseif dir == 6 then dir = 9 + elseif dir == 9 then dir = 8 + elseif dir == 8 then dir = 7 + end + end + + return dir +end + +-- Check if the map is a filename or directly a map +function load_map(map, y, x) + if strsub(map, 1, 5) == "#!map" then + %load_map(TRUE, map, y, x) + else + %load_map(FALSE, map, y, x) + end +end +function get_map_size(map) + if strsub(map, 1, 5) == "#!map" then + return %get_map_size(TRUE, map) + else + return %get_map_size(FALSE, map) + end +end + +-- Place a trap for a specific level +function place_trap(y, x, level) + local old_dun = dun_level + dun_level = level + %place_trap(y, x) + dun_level = old_dun +end + +-- Level generators processing +__level_generators = {} + +function level_generator(t) + assert(t.name, "no generator name") + assert(t.gen, "no generator function") + + if not t.stairs then t.stairs = TRUE end + if not t.monsters then t.monsters = TRUE end + if not t.objects then t.objects = TRUE end + if not t.miscs then t.miscs = TRUE end + + __level_generators[t.name] = t.gen + add_scripted_generator(t.name, t.stairs, t.monsters, t.objects, t.miscs) +end + +function level_generate(name) + assert(__level_generators[name], "Unknown level generator '"..name.."'") + return __level_generators[name]() +end + +--[[ Example +level_generator +{ + ["name"] = "test", + ["gen"] = function() + print("zog") + for i = 1, 30 do + cave(i, 2).feat = 1 + end + return new_player_spot(get_branch()) + end, +} +]] diff --git a/lib/mods/theme/core/gen_idx.lua b/lib/mods/theme/core/gen_idx.lua new file mode 100644 index 00000000..5f3af435 --- /dev/null +++ b/lib/mods/theme/core/gen_idx.lua @@ -0,0 +1,261 @@ +-- Place here the list of files to parse +files = +{ + "birth.txt", + "experien.hlp", + "gods.txt", + "explore.hlp", + "newbie.hlp", + "advanced.hlp", + "help.hlp", + "general.txt", + "whattome.txt", + "dungeon.txt", + "spoiler.hlp", + "g_melkor.txt", + "skills.txt", + "c_bard.txt", + "c_druid.txt", + "c_lorema.txt", + "c_mage.txt", + "c_mimic.txt", + "c_mindcr.txt", + "c_monk.txt", + "c_palad.txt", + "c_posses.txt", + "c_pr_drk.txt", + "c_pr_eru.txt", + "c_pr_man.txt", + "c_symbia.txt", + "c_alchem.txt", + "c_archer.txt", + "c_assass.txt", + "c_axemas.txt", + "c_demono.txt", + "c_geoman.txt", + "c_hafted.txt", + "c_necro.txt", + "c_polear.txt", + "c_ranger.txt", + "c_rogue.txt", + "c_runecr.txt", + "c_sorcer.txt", + "c_swordm.txt", + "c_thaum.txt", + "c_unbel.txt", + "c_warper.txt", + "c_warrio.txt", + "m_meta.txt", + "rm_skel.txt", + "rm_zomb.txt", + "luckspoi.txt", + "m_air.txt", + "dunspoil.txt", + "g_eru.txt", + "g_manwe.txt", + "g_tulkas.txt", + "m_divin.txt", + "m_mimic.txt", + "m_water.txt", + "magic.txt", + "r_drkelf.txt", + "r_dwarf.txt", + "r_elf.txt", + "r_hielf.txt", + "r_hobbit.txt", + "r_pettyd.txt", + "r_wodelf.txt", + "rm_spec.txt", + "tome_faq.txt", + "ability.txt", + "automat.txt", + "c_summon.txt", + "command.txt", + "corspoil.txt", + "debug.txt", + "m_music.txt", + "rm_barb.txt", + "macrofaq.txt", + "m_necrom.txt", + "m_mindcr.txt", + "m_symbio.txt", + "m_thaum.txt", + "magic.hlp", + "m_convey.txt", + "m_fire.txt", + "m_mana.txt", + "m_mind.txt", + "m_nature.txt", + "m_tempo.txt", + "m_udun.txt", + "m_geoman.txt", + "essences.txt", + "r_ent.txt", + "g_yavann.txt", + "defines.txt", + "rm_vamp.txt", + "inscrip.txt", + "m_earth.txt", + "option.txt", + "attack.txt", + "version.txt", + "m_demono.txt", + "r_beorn.txt", + "r_deathm.txt", + "r_rohank.txt", + "r_hafogr.txt", + "r_human.txt", + "r_kobold.txt", + "r_maia.txt", + "r_orc.txt", + "r_thlord.txt", + "r_troll.txt", + "r_yeek.txt", + "rm_class.txt", + "rm_herm.txt", + "rm_lsoul.txt", + "wishing.txt", + "c_priest.txt", + "fatespoi.txt", + "gambling.txt", + "r_dunad.txt", + "r_gnome.txt", + "r_hafelf.txt", + "c_merch.txt", + "spoil_faq.txt", +} + +out_file = "index.txt" + +index = {} + +function parse_file(file) + local fff = openfile(path_build(ANGBAND_DIR_HELP, file), "r") + local line + + line = read(fff, "*l") + while line do + local i, j, anchor, name, subname = strfind(line, "~~~~~(%d+)|([%d%a -]+)|([%d%a -]+)") + if not i then + i, j, anchor, name = strfind(line, "~~~~~(%d+)|([%d%a -]+)") + + subname = nil + end + + if i then + if not index[name] then + index[name] = {} + end + if subname then + tinsert(index[name], { __name__ = subname, __file__ = file, __anchor__ = anchor}) + else + tinsert(index[name], { __name__ = "__primary__", __file__ = file, __anchor__ = anchor}) + end + end + + line = read(fff, "*l") + end + + closefile(fff) +end + +function sort_fct(a, b) + local i, len + + a = a.__name__ + b = b.__name__ + + if strlen(a) > strlen(b) then len = strlen(b) else len = strlen(a) end + + for i = 1, len do + local ac = strbyte(a, i) + local bc = strbyte(b, i) + + if ac < bc then + return not nil + elseif ac > bc then + return nil + end + end + if strlen(a) > strlen(b) then return nil else return not nil end +end + +function generate_index() + local k, e, index_list + for _, e in files do + parse_file(e) + end + + index_list = {} + for k, e in index do + -- Ok either my sort function or lua sort function sucks ass .. + sort(e, sort_fct) + sort(e, sort_fct) + sort(e, sort_fct) + sort(e, sort_fct) + sort(e, sort_fct) + tinsert(index_list, {__name__= k, __table__ = e}) + end + + -- Ok either my sort function or lua sort function sucks ass .. + sort(index_list, sort_fct) + sort(index_list, sort_fct) + sort(index_list, sort_fct) + sort(index_list, sort_fct) + sort(index_list, sort_fct) + index = index_list +end + +function out_link(fff, space, name, file, anchor) + write(fff, space.."*****"..file.."*"..anchor.."["..name.."]\n") +end + +function print_index() + local i, j, c, new_c + local fff = openfile(path_build(ANGBAND_DIR_HELP, out_file), "w") + + write(fff, +[[|||||oy +#####R /----------------------------------------\ +#####R < Help Index > +#####R \----------------------------------------/ + +This is the index of everything in the T.o.M.E. documentation. + +#####BHit a letter key to jump to the entries for that letter. + +Some entries in the index link to the same place as other entries. This is +intentional, so that the information you want is easy to find. + +Don't forget you can browse the help from the *****help.hlp*02[Main menu]. + +#####sSpotted a problem with the help files, or some content thats missing? +#####sContact fearoffours@t-o-m-e.net . + +]]) + + c = ' ' + for i = 1, getn(index) do + new_c = strbyte(index[i].__name__, 1) + if c ~= new_c then + c = new_c + write(fff, "~~~~~"..c.."\n") + write(fff, "*****/"..strchar(c)..out_file.."*"..c.."["..strchar(c).."]\n") + end + for j = 1, getn(index[i].__table__) do + if index[i].__table__[j].__name__ == "__primary__" then + out_link(fff, " ", index[i].__name__, index[i].__table__[j].__file__, index[i].__table__[j].__anchor__) + end + end + for j = 1, getn(index[i].__table__) do + if index[i].__table__[j].__name__ ~= "__primary__" then + out_link(fff, " ", index[i].__table__[j].__name__, index[i].__table__[j].__file__, index[i].__table__[j].__anchor__) + end + end + end + closefile(fff) +end + +generate_index() + +print_index() diff --git a/lib/mods/theme/core/gods.lua b/lib/mods/theme/core/gods.lua new file mode 100644 index 00000000..77e0aad5 --- /dev/null +++ b/lib/mods/theme/core/gods.lua @@ -0,0 +1,40 @@ +-- Gods helper files + +-- Gods structs + +__gods_hook = {} +__gods_callbacks = {} +__gods_callbacks_max = 0 + +function add_god(q) + local i, index, d, z, qq + + assert(q.name, "No god name") + assert(q.desc, "No god desc") + assert(q.hooks, "No god hooks") + + i = add_new_gods(q.name); + + z = 0 + for index, d in q.desc do + desc_god(i, z, d); + z = z + 1 + end + + __gods_hook[i] = q.hooks + for index, d in q.hooks do + add_hook_script(index, "__lua__gods_callback"..__gods_callbacks_max, "__lua__gods_callback"..__gods_callbacks_max) + setglobal("__lua__gods_callback"..__gods_callbacks_max, d) + __gods_callbacks_max = __gods_callbacks_max + 1 + end + if q.data then + for index, d in q.data do + -- Besure it exists + setglobal(index, d) + + -- Make it save & load + add_loadsave(index, d) + end + end + return i +end diff --git a/lib/mods/theme/core/help.lua b/lib/mods/theme/core/help.lua new file mode 100644 index 00000000..a581fe63 --- /dev/null +++ b/lib/mods/theme/core/help.lua @@ -0,0 +1,141 @@ +-- Ingame contextual help + +-- We use our own hook list as to not overburn the hook proccessor +-- with many hooks that would slow down things +-- It would be very meaningless if the option is not even on +__ingame_hooks = {} + +__ingame_help_max = 0 + +function ingame_help(t, ...) + -- This function can also be used to call the callbacks + if type(t) == "string" then + local f = getglobal("__ingame_help_fct_"..t) + call(f, arg) + return + end + + assert(t.desc or t.fct, "no ingame help desc/fct") + assert(t.hook or t.callback, "no ingame help hook/callback") + if t.hook then assert(t.event, "no ingame hepl event needed by hook") end + + -- Set it to only trigger once + setglobal("__ingame_help_activated_"..__ingame_help_max, FALSE) + -- Save/load it + add_loadsave("__ingame_help_activated_"..__ingame_help_max, FALSE) + + if t.hook then + -- If the hok list didnt exist yet, add it + if not __ingame_hooks[t.hook] then + -- Set it to empty, we'll fill it later + __ingame_hooks[t.hook] = {} + -- Add the global hook + add_hooks + { + [t.hook] = function (...) + if option_ingame_help ~= TRUE then return end + local k, e + for k, e in __ingame_hooks[%t.hook] do + if k ~= "n" then + call(e, arg) + end + end + end + } + end + if t.desc then + tinsert(__ingame_hooks[t.hook], + function (...) + local tbl = %t + if getglobal("__ingame_help_activated_"..%__ingame_help_max) == FALSE then + if call(tbl.event, arg) == TRUE then + local k, e + for k, e in tbl.desc do + msg_print(TERM_YELLOW, e) + end + setglobal("__ingame_help_activated_"..%__ingame_help_max, TRUE) + end + end + end + ) + elseif t.fct then + tinsert(__ingame_hooks[t.hook], + function (...) + local tbl = %t + if getglobal("__ingame_help_activated_"..%__ingame_help_max) == FALSE then + if call(tbl.event, arg) == TRUE then + if tbl.fct() == TRUE then + setglobal("__ingame_help_activated_"..%__ingame_help_max, TRUE) + end + end + end + end + ) + end + else + local no_test = FALSE + if t.no_test == TRUE then no_test = TRUE end + if t.desc then + setglobal + ( + "__ingame_help_fct_"..(t.callback), + function (...) + local tbl = %t + if ((option_ingame_help == TRUE) or (%no_test == TRUE)) and (getglobal("__ingame_help_activated_"..%__ingame_help_max) == FALSE) then + local k, e + for k, e in tbl.desc do + msg_print(TERM_YELLOW, e) + end + setglobal("__ingame_help_activated_"..%__ingame_help_max, TRUE) + end + end + ) + elseif t.fct then + setglobal + ( + "__ingame_help_fct_"..(t.callback), + function (...) + local tbl = %t + if ((option_ingame_help == TRUE) or (%no_test == TRUE)) and (getglobal("__ingame_help_activated_"..%__ingame_help_max) == FALSE) then + if call(tbl.fct, arg) == TRUE then + setglobal("__ingame_help_activated_"..%__ingame_help_max, TRUE) + end + end + end + ) + end + end + + __ingame_help_max = __ingame_help_max + 1 +end + +-- Clean up the ingame help seen at birth +add_hooks +{ + [HOOK_BIRTH_OBJECTS] = function() + local i + for i = 0, __ingame_help_max - 1 do + setglobal("__ingame_help_activated_"..i, FALSE) + end + end +} + +function ingame_clean() + local i + for i = 0, __ingame_help_max - 1 do + setglobal("__ingame_help_activated_"..i, FALSE) + end +end + +-- helper function, brings up a doc +function ingame_help_doc(name, anchor) + -- Save screen + screen_save(); + + -- Peruse the help file + if not anchor then anchor = 0 end + show_file(name, 0, -anchor, 0) + + -- Load screen + screen_load() +end diff --git a/lib/mods/theme/core/init.lua b/lib/mods/theme/core/init.lua new file mode 100644 index 00000000..9a9ec1ee --- /dev/null +++ b/lib/mods/theme/core/init.lua @@ -0,0 +1,84 @@ +-- +-- This file is loaded at the initialisation of ToME +-- Load the system functions +-- + +-- Name of globals to save +tome_dofile_anywhere(ANGBAND_DIR_CORE, "load.lua") + +-- Very thin xml parser(49 lines ;) +tome_dofile_anywhere(ANGBAND_DIR_CORE, "xml.lua") + +-- various vital helper code +tome_dofile_anywhere(ANGBAND_DIR_CORE, "util.lua") +tome_dofile_anywhere(ANGBAND_DIR_CORE, "player.lua") +tome_dofile_anywhere(ANGBAND_DIR_CORE, "objects.lua") +tome_dofile_anywhere(ANGBAND_DIR_CORE, "monsters.lua") +tome_dofile_anywhere(ANGBAND_DIR_CORE, "powers.lua") +tome_dofile_anywhere(ANGBAND_DIR_CORE, "building.lua") +tome_dofile_anywhere(ANGBAND_DIR_CORE, "dungeon.lua") +tome_dofile_anywhere(ANGBAND_DIR_CORE, "s_aux.lua") +tome_dofile_anywhere(ANGBAND_DIR_CORE, "crpt_aux.lua") +tome_dofile_anywhere(ANGBAND_DIR_CORE, "mimc_aux.lua") +tome_dofile_anywhere(ANGBAND_DIR_CORE, "quests.lua") +tome_dofile_anywhere(ANGBAND_DIR_CORE, "gods.lua") + +-- Load the ingame contextual help +tome_dofile_anywhere(ANGBAND_DIR_CORE, "help.lua") + +-- let the store specific stuff happen! +tome_dofile_anywhere(ANGBAND_DIR_CORE, "stores.lua") + +-------------------------------------------------------------- +-------------------------------------------------------------- +-------------------------------------------------------------- +-------------Here we load the non vital scripts--------------- +-----------------------from lib/scpt-------------------------- +-------------------------------------------------------------- +-------------------------------------------------------------- +tome_dofile("init.lua") + +-- The dofile functions for each patch +patch_dofile = {} + +-- Now load patches +function load_patches() + scansubdir(ANGBAND_DIR_PATCH) + for i = 0, scansubdir_max - 1 do + if (scansubdir_result[i + 1] ~= ".") and (scansubdir_result[i + 1] ~= "..") then + local dir = path_build(ANGBAND_DIR_PATCH, scansubdir_result[i + 1]) + local file = path_build(dir, "patch.lua") + if file_exist(file) == TRUE then + patch_init = nil + tome_dofile_anywhere(dir, "patch.lua", TRUE) + unset_safe_globals() + if patch_init == nil then + set_safe_globals() + quit("Patch in "..file.." did not include a patch_init() function") + else + set_safe_globals() + + -- create the dofile function + patch_dofile[scansubdir_result[i + 1]] = function(f) + tome_dofile_anywhere(%dir, f, TRUE) + end + + local name, version = patch_init() + if name == nil or version == nil then + quit("Patch in "..file.." did not return valid name or version.\nIt must return name, version") + end + patch_version(name, version) + end + end + end + end +end +load_patches() + +-------------------------------------------------------------- +-------------------------------------------------------------- +-------------------------------------------------------------- +-- +-- Do not thouch after this line +-- +tome_dofile_anywhere(ANGBAND_DIR_CORE, "load2.lua") diff --git a/lib/mods/theme/core/load.lua b/lib/mods/theme/core/load.lua new file mode 100644 index 00000000..9522ec91 --- /dev/null +++ b/lib/mods/theme/core/load.lua @@ -0,0 +1,37 @@ +-- Savefile stuff +-- Do not meddle in the affairs of savefiles for they are subtle and quick to be become incompatible + +__loadsave_name = {} +__loadsave_max = 0 +__loadsave_tmp = 0 + +function add_loadsave(name, default) + assert(name, "No variable name to save") + assert(default, "No default value") + + -- if it is a table we must create many entries + if type(default) == "table" then + for k, e in default do + add_loadsave(name.."."..k, e) + end + else + __loadsave_name[__loadsave_max] = { name = name, default = default } + __loadsave_max = __loadsave_max + 1 + end +end + +-- Example of how to save a table +-- NOTE: { 1, 2, 3 } will NOT work, the key MUST be a string +--[[ +add_loadsave("t", +{ + foo = 7, + tab = { + a = 1, + b = 2, + tab = { + a=1, b=2, c=3, + }, + }, +}) +]] diff --git a/lib/mods/theme/core/load2.lua b/lib/mods/theme/core/load2.lua new file mode 100644 index 00000000..7ea432e9 --- /dev/null +++ b/lib/mods/theme/core/load2.lua @@ -0,0 +1,63 @@ +-- Savefile helpers + +-- function called when a key in the variable part ofthe savefile is read +-- if the key matches what we need, we use it, otehrwise just ignore it +function __savefile_load(key, val) + local index, elem + + for index, elem in __loadsave_name do + if (key == elem.name) then + dostring(elem.name.." = "..val) + end + end +end + +function dump_loadsave() + local k, e + for k, e in __loadsave_name do + msg_print(k.." :: ".. e.name.." ["..e.default.."]") + end +end + +-- called when the game is saved, can only save numbers +-- assosiate a key with them to allow the loading code to recognize them +function __savefile_save() + local index, elem + for index, elem in __loadsave_name do + dostring("__loadsave_tmp = "..elem.name) + save_number_key(elem.name, __loadsave_tmp); + end +end + +register_savefile(__loadsave_max) +add_hook_script(HOOK_LOAD_GAME, "__savefile_load", "__hook_load") +add_hook_script(HOOK_SAVE_GAME, "__savefile_save", "__hook_save") + +-- Parse a flattened(i.e: foo.bar.zog) table path and recrate tables +function reconstruct_table(name) + for i = 1, strlen(name) - 1 do + if strsub(name, i, i) == "." then + local tbl = strsub(name, 1, i - 1) + + if dostring("return "..tbl) == nil then + dostring(tbl.."={}") + end + end + end +end + +-- Automagically set unkown variables, otherwise the savefile code +-- might get VERY upset +do + local k, e + -- We need to be able to check for unknown globals + unset_safe_globals() + for k, e in __loadsave_name do + reconstruct_table(e.name) + if dostring("return "..(e.name)) == nil then + dostring((e.name).." = "..(e.default)) + end + end + -- Now taht we did, we set it back, for it is usefull ;) + set_safe_globals() +end diff --git a/lib/mods/theme/core/mimc_aux.lua b/lib/mods/theme/core/mimc_aux.lua new file mode 100644 index 00000000..cea1f4dc --- /dev/null +++ b/lib/mods/theme/core/mimc_aux.lua @@ -0,0 +1,96 @@ +-- Mimic shapes helper file + +__mimics = {} +__mimics_max = 1 +__mimics_names = {} + +function add_mimic_shape(t) + assert(t.name, "no mimic name") + assert(t.desc, "no mimic desc") + assert(t.calc, "no mimic calc") + assert(t.level, "no mimic level") + assert(t.duration, "no mimic duration") + + if not t.limit then t.limit = 0 end + + if not t.obj_name then + t.obj_name = t.name + end + + t.show_name = '['..t.name..']' + + -- if it needs hooks, add them + if t.hooks then + add_hooks(t.hooks) + end + + -- Add it in a name to index hash table + __mimics_names[t.name] = __mimics_max + + __mimics[__mimics_max] = t + __mimics_max = __mimics_max + 1 +end + +function resolve_mimic_name(name) + if __mimics_names[name] then + return __mimics_names[name] + else + return -1 + end +end + +function find_random_mimic_shape(level, limit, realm) + local mimic, tries + + tries = 1000 + while tries > 0 do + tries = tries - 1 + mimic = rand_range(1, __mimics_max - 1) + if (not realm) or (__mimics[mimic].realm == realm) then + if limit >= __mimics[mimic].limit then + if (rand_int(__mimics[mimic].level * 3) < level) and (__mimics[mimic].rarity < 100) and (magik(100 - __mimics[mimic].rarity) == TRUE) then + break + end + end + end + end + if tries > 0 then + return mimic + else + return resolve_mimic_name("Abomination") + end +end + +function get_mimic_info(mimic, info) + if not __mimics[mimic] then return 0 end + return __mimics[mimic][info] +end + +function get_mimic_rand_dur(mimic) + return rand_range(__mimics[mimic].duration[1], __mimics[mimic].duration[2]) +end + +function calc_mimic(mimic) + return __mimics[mimic].calc() +end + +function calc_mimic_power(mimic) + if __mimics[mimic].power then __mimics[mimic].power() end +end + +--- Here comes the only vital shape + +add_mimic_shape +{ + ["name"] = "Abomination", + ["obj_name"] = "Abominable Cloak", + ["desc"] = "Abominations are failed experiments of powerful wizards.", + ["realm"] = nil, + ["level"] = 1, + ["rarity"] = 101, + ["duration"] = {20, 100}, + ["calc"] = function () + apply_flags(TR1_SPEED + TR1_STR + TR1_INT + TR1_WIS + TR1_DEX + TR1_CON + TR1_CHR, 0, 0, 0, 0, 0, -10) + player.xtra_f3 = bor(player.xtra_f3, TR3_AGGRAVATE) + end, +} diff --git a/lib/mods/theme/core/monsters.lua b/lib/mods/theme/core/monsters.lua new file mode 100644 index 00000000..ca2851a0 --- /dev/null +++ b/lib/mods/theme/core/monsters.lua @@ -0,0 +1,16 @@ +-- SYSTEM FILE +-- +-- Monster stuff, do not touch +-- + +function summon_monster(y, x, lev, friend, typ) + if type(typ) == "number" then + if friend == TRUE then + return summon_specific_friendly(y, x, lev, typ, FALSE) + else + return summon_specific(y, x, lev, typ) + end + else + return summon_monster_aux(y, x, lev, friend, typ) + end +end diff --git a/lib/mods/theme/core/objects.lua b/lib/mods/theme/core/objects.lua new file mode 100644 index 00000000..97320b82 --- /dev/null +++ b/lib/mods/theme/core/objects.lua @@ -0,0 +1,45 @@ +-- SYSTEM FILE +-- +-- Lua object funtions +-- + +function create_object(tval, sval) + local obj = new_object() + object_prep(obj, lookup_kind(tval, sval)) + return (obj) +end + +function set_item_tester(tester) + if tolua.type(tester) == "number" then + lua_set_item_tester(tester, "") + end + if tolua.type(tester) == "string" then + lua_set_item_tester(0, tester) + end + if tolua.type(tester) == "function" then + __get_item_hook_default = tester + lua_set_item_tester(0, "__get_item_hook_default") + end +end + +function create_artifact(a_idx) + local obj + local tval, sval + + tval = a_info[a_idx + 1].tval + sval = a_info[a_idx + 1].sval + obj = create_object(tval, sval) + obj.name1 = a_idx + apply_magic(obj, -1, TRUE, TRUE, TRUE) + + return (obj) +end + +function get_kind(obj) + return k_info[obj.k_idx + 1] +end + +function get_item(ask, deny, flags, mask) + set_item_tester(mask) + return get_item_aux(0, ask, deny, flags) +end diff --git a/lib/mods/theme/core/player.lua b/lib/mods/theme/core/player.lua new file mode 100644 index 00000000..3017d94f --- /dev/null +++ b/lib/mods/theme/core/player.lua @@ -0,0 +1,140 @@ +-- SYSTEM FILE +-- +-- Lua player funtions +-- + +-- Gods +function deity(i) + return deity_info[1 + i] +end + +-------- skill stuff --------- + +-- Easy skill access +function skill(i) + return s_info[i + 1] +end + +-- Sart a lasting spell +function player.start_lasting_spell(spl) + player.music_extra = -spl +end + +-- stat mods +function player.modify_stat(stat, inc) + player.stat_add[1 + stat] = player.stat_add[1 + stat] + inc +end + +-- powers mods +function player.add_power(pow) + player.powers[1 + pow] = TRUE +end + +-- easier inventory access +function player.inventory(i) + return player.inventory_real[i + 1] +end + +-- modify mana +-- returns TRUE if there is a pb +function increase_mana(amt) + player.csp = player.csp + amt + player.redraw = bor(player.redraw, PR_MANA) + if (player.csp < 0) then + player.csp = 0 + return TRUE + end + if (player.csp > player.msp) then + player.csp = player.msp + end + return FALSE +end + + +-- Return the coordinates of the player whether in wild or not +function player.get_wild_coord() + if player.wild_mode == TRUE then + return player.py, player.px + else + return player.wilderness_y, player.wilderness_x + end +end + +-- Create a new power +__power_fct = {} +function add_power(p) + local i + + assert(p.name, "No power name!") + assert(p.desc, "No power desc!") + assert(p.desc_get, "No power desc get!") + assert(p.desc_lose, "No power desc lose!") + assert(p.stat, "No power stat!") + assert(p.level, "No power level!") + assert(p.cost, "No power cost!") + assert(p.fail, "No power fail!") + assert(p.power, "No power power!") + + i = add_new_power(p.name, p.desc, p.desc_get, p.desc_lose, p.level, p.cost, p.stat, p.fail) + __power_fct[i] = p.power + return i +end + +function __power_fct_activate(power) + if __power_fct[power] then + __power_fct[power]() + return TRUE + else + return FALSE + end +end + +-- Register in the hook list +add_hook_script(HOOK_ACTIVATE_POWER, "__power_fct_activate", "__power_fct_activate") + + +--- Mkeys + +-- Create a new power +__mkey_fct = {} +function add_mkey(p) + local i + + assert(p.mkey, "No mkey mkey!") + assert(p.fct, "No mkeey fct!") + + __mkey_fct[p.mkey] = p.fct +end + +function __mkey_fct_activate(power) + if __mkey_fct[power] then + __mkey_fct[power]() + return TRUE + else + return FALSE + end +end + +-- Register in the hook list +add_hook_script(HOOK_MKEY, "__mkey_fct_activate", "__mkey_fct_activate") + + +-- Subraces +function subrace(racem) + return race_mod_info[racem + 1] +end + +function subrace_add_power(subrace, power) + for i = 1, 4 do + if subrace.powers[i] == -1 then + subrace.powers[i] = power + return not nil + end + end + return nil +end + +-- Body parts +function player.add_body_part(part, nb) + player.extra_body_parts[part + 1] = player.extra_body_parts[part + 1] + nb +end diff --git a/lib/mods/theme/core/powers.lua b/lib/mods/theme/core/powers.lua new file mode 100644 index 00000000..839a921d --- /dev/null +++ b/lib/mods/theme/core/powers.lua @@ -0,0 +1,105 @@ +-- +-- Helper functions for magic powers +-- + +__magic_powers = {} + +function add_magic(m) + local i, ret + + if type(m.spell_list) ~= "table" then + error("add_magic called without a table") + end + + -- Ok iterate over all the powers to add + local index, p, max + + -- First, count them + max = 0 + for index, p in m.spell_list do + max = max + 1 + end + + -- Now register it + ret = {} + i = new_magic_power(max) + ret.spells = i + ret.max = max + ret.fail_fct = m.fail + if m.stat then + ret.stat = m.stat + else + ret.stat = A_INT + end + if m.get_level then + ret.get_current_level = m.get_level + else + ret.get_current_level = function() + return player.lev + end + end + + -- And add each spells + max = 0 + ret.info = {} + ret.spell = {} + for index, p in m.spell_list do + assert(p.name, "No name for the spell!") + assert(p.desc, "No desc for the spell!") + assert(p.mana, "No mana for the spell!") + assert(p.level, "No level for the spell!") + assert(p.fail, "No fail for the spell!") + assert(p.info, "No info for the spell!") + assert(p.spell, "No spell for the spell!") + + get_magic_power(i, max).name = p.name + get_magic_power(i, max).desc = p.desc + get_magic_power(i, max).mana_cost = p.mana + get_magic_power(i, max).min_lev = p.level + get_magic_power(i, max).fail = p.fail + ret.info[max] = p.info + ret.spell[max] = p.spell + + max = max + 1 + end + + return ret +end + +function __get_magic_info(power) + return __current_magic_power_info[power]() +end + +function execute_magic(m) + local sn, ret + + -- Ask for a spell + __current_magic_power_info = m.info + ret, sn = select_magic_power(0, m.spells, m.max, "__get_magic_info", m.get_current_level(), m.stat) + if (ret == FALSE) then return end + + -- Verify mana needs + if (get_magic_power(m.spells, sn).mana_cost > player.csp) then msg_print("Not enough mana!") return end + + -- Verify failure(second parameter is optional) + if m.fail then + __current_magic_power_fail = m.fail_fct + if (magic_power_sucess(get_magic_power(m.spells, sn), m.stat, "__current_magic_power_fail") == FALSE) then return end + else + if (magic_power_sucess(get_magic_power(m.spells, sn), m.stat) == FALSE) then return end + end + + -- Actually cast the spells + m.spell[sn]() + + -- use up some mana + increase_mana(-get_magic_power(m.spells, sn).mana_cost) +end + +-- Get the level of a power +function get_level_power(s, max, min) + if not max then max = 50 end + if not min then min = 1 end + + return value_scale(s.get_current_level(), 50, max, min) +end diff --git a/lib/mods/theme/core/quests.lua b/lib/mods/theme/core/quests.lua new file mode 100644 index 00000000..dfe9db51 --- /dev/null +++ b/lib/mods/theme/core/quests.lua @@ -0,0 +1,57 @@ +-- Quest helper files + +-- Quest structs + +__quest_hook = {} +__quest_callbacks = {} +__quest_callbacks_max = 0 +__quest_dynamic_desc = {} + +function add_quest(q) + local i, index, d, z, qq + + assert(q.global, "No quest global name") + assert(q.name, "No quest name") + assert(q.desc, "No quest desc") + assert(q.level, "No quest level") + assert(q.hooks, "No quest hooks") + + i = new_quest(q.name); + setglobal(q.global, i) + + -- Make it save & load + add_loadsave("quest("..q.global..").status", QUEST_STATUS_UNTAKEN) + + if type(q.desc) == "table" then + z = 0 + for index, d in q.desc do + quest_desc(i, z, d); + z = z + 1 + end + else + __quest_dynamic_desc[i] = q.desc + quest(i).dynamic_desc = TRUE + end + quest(i).level = q.level + if not q.silent then + quest(i).silent = FALSE + else + quest(i).silent = q.silent + end + __quest_hook[i] = q.hooks + for index, d in q.hooks do + add_hook_script(index, "__lua__quest_callback"..__quest_callbacks_max, "__lua__quest_callback"..__quest_callbacks_max) + setglobal("__lua__quest_callback"..__quest_callbacks_max, d) + __quest_callbacks_max = __quest_callbacks_max + 1 + end + if q.data then + for index, d in q.data do + -- Besure it exists + setglobal(index, d) + + -- Make it save & load + add_loadsave(index, d) + end + end + return i +end diff --git a/lib/mods/theme/core/s_aux.lua b/lib/mods/theme/core/s_aux.lua new file mode 100644 index 00000000..abd1269d --- /dev/null +++ b/lib/mods/theme/core/s_aux.lua @@ -0,0 +1,742 @@ +-- Functions to help with spells, do not touch + +__schools = {} +__schools_num = 0 + +__tmp_spells = {} +__tmp_spells_num = 0 + +function add_school(s) + __schools[__schools_num] = s + + __schools_num = __schools_num + 1 + return (__schools_num - 1) +end + +function finish_school(i) + local s + + s = __schools[i] + assert(s.name, "No school name!") + assert(s.skill, "No school skill!") + + -- Need hooks? + if s.hooks then + add_hooks(s.hooks) + end + + new_school(i, s.name, s.skill) +end + +function add_spell(s) + __tmp_spells[__tmp_spells_num] = s + + __tmp_spells_num = __tmp_spells_num + 1 + return (__tmp_spells_num - 1) +end + +function finish_spell(must_i) + local i, s + + s = __tmp_spells[must_i] + assert(s.name, "No spell name!") + assert(s.school, "No spell school!") + assert(s.level, "No spell level!") + assert(s.mana, "No spell mana!") + if not s.mana_max then s.mana_max = s.mana end + assert(s.fail, "No spell failure rate!") + assert(s.spell, "No spell function!") + if not s.info then s.info = function() return "" end end + assert(s.desc, "No spell desc!") + if not s.random then s.random = SKILL_MAGIC end + if s.lasting then + assert(type(s.lasting) == "function", "Spell lasting is not function") + end + if s.stick then + local k, e + for k, e in s.stick do + if type(k) == "table" then + assert(e.base_level, "Arg no stick base level") + assert(e.max_level, "Arg no stick max level") + end + end + end + + i = new_spell(must_i, s.name) + assert(i == must_i, "ACK ! i != must_i ! please contact the maintainer") + if type(s.school) == "number" then __spell_school[i] = {s.school} + else __spell_school[i] = s.school end + spell(i).mana = s.mana + spell(i).mana_max = s.mana_max + spell(i).fail = s.fail + spell(i).skill_level = s.level + __spell_spell[i] = s.spell + __spell_info[i] = s.info + __spell_desc[i] = s.desc + return i +end + +-- Creates the school books array +__spell_spell = {} +__spell_info = {} +__spell_desc = {} +__spell_school = {} +school_book = {} + +-- Find a spell by name +function find_spell(name) + local i + + i = 0 + while (i < __tmp_spells_num) do + if __tmp_spells[i].name == name then return i end + i = i + 1 + end + return -1 +end + +-- Find if the school is under the influence of a god, returns nil or the level +function get_god_level(sch) + if __schools[sch].gods[player.pgod] then + return (s_info[__schools[sch].gods[player.pgod].skill + 1].value * __schools[sch].gods[player.pgod].mul) / __schools[sch].gods[player.pgod].div + else + return nil + end +end + +-- Change this fct if I want to switch to learnable spells +function get_level_school(s, max, min) + local lvl, sch, index, num, bonus + local allow_spell_power = TRUE + + lvl = 0 + num = 0 + bonus = 0 + + -- No max specified ? assume 50 + if not max then + max = 50 + end + if not min then + min = 1 + end + + -- Do we pass tests? + if __tmp_spells[s].depend then + if __tmp_spells[s].depend() ~= TRUE then + return min, "n/a" + end + end + + for index, sch in __spell_school[s] do + local r, s, p, ok = 0, 0, 0, 0 + + -- Does it require we worship a specific god? + if __schools[sch].god then + if __schools[sch].god ~= player.pgod then + if min then return min, "n/a" + else return 1, "n/a" end + end + end + + -- Take the basic skill value + r = s_info[(school(sch).skill) + 1].value + + -- Do we pass tests? + if __schools[sch].depend then + if __schools[sch].depend() ~= TRUE then + return min, "n/a" + end + end + + -- Are we under sorcery effect ? + if __schools[sch].sorcery then + s = s_info[SKILL_SORCERY + 1].value + end + + -- Are we affected by spell power ? + -- All teh schools must allow it for it to work + if not __schools[sch].spell_power then + allow_spell_power = nil + end + + -- Are we under a god effect ? + if __schools[sch].gods then + p = get_god_level(sch) + if not p then p = 0 end + end + + -- Find the higher + ok = r + if ok < s then ok = s end + if ok < p then ok = p end + + -- Do we need to add a special bonus ? + if __schools[sch].bonus_level then + bonus = bonus + (__schools[sch].bonus_level() * (SKILL_STEP / 10)) + end + + -- All schools must be non zero to be able to use it + if ok == 0 then return min, "n/a" end + + -- Apply it + lvl = lvl + ok + num = num + 1 + end + + -- Add the Spellpower skill as a bonus + if allow_spell_power then + bonus = bonus + (get_skill_scale(SKILL_SPELL, 20) * (SKILL_STEP / 10)) + end + + -- Add bonus from objects + bonus = bonus + (player.to_s * (SKILL_STEP / 10)) + + -- / 10 because otherwise we can overflow a s32b and we can use a u32b because the value can be negative + -- The loss of information should be negligible since 1 skill = 1000 internally + lvl = (lvl / num) / 10 + lvl = lua_get_level(s, lvl, max, min, bonus) + + return lvl, nil +end + +-- This is the function to use when casting through a stick +function get_level_device(s, max, min) + local lvl + + -- No max specified ? assume 50 + if not max then + max = 50 + end + + lvl = s_info[SKILL_DEVICE + 1].value + lvl = lvl + (get_level_use_stick * SKILL_STEP) + + -- Sticks are limited + if lvl - ((spell(s).skill_level + 1) * SKILL_STEP) >= get_level_max_stick * SKILL_STEP then + lvl = (get_level_max_stick + spell(s).skill_level - 1) * SKILL_STEP + end + + -- / 10 because otherwise we can overflow a s32b and we can use a u32b because the value can be negative + -- The loss of information should be negligible since 1 skill = 1000 internally + lvl = lvl / 10 + if not min then + lvl = lua_get_level(s, lvl, max, 1, 0) + else + lvl = lua_get_level(s, lvl, max, min, 0) + end + + return lvl +end + +-- The real get_level, works for schooled magic and for innate powers +get_level_use_stick = -1 +get_level_max_stick = -1 +function get_level(s, max, min) + if type(s) == "number" then + -- Ahah shall we use Magic device instead ? + if get_level_use_stick > -1 then + return get_level_device(s, max, min) + else + local lvl, na = get_level_school(s, max, min) + return lvl + end + else + return get_level_power(s, max, min) + end +end + +-- Can we cast the spell ? +function is_ok_spell(s, obj) + if get_level(s, 50, 0) == 0 then return nil end + if __tmp_spells[s].pval and obj.pval < __tmp_spells[s].pval then return nil end + return 1 +end + +-- Get the amount of mana(or power) needed +function get_mana(s) + return spell(s).mana + get_level(s, spell(s).mana_max - spell(s).mana, 0) +end + +-- Return the amount of power(mana, piety, whatever) for the spell +function get_power(s) + if check_affect(s, "piety", FALSE) then + return player.grace + else + return player.csp + end +end + +-- Return the amount of power(mana, piety, whatever) for the spell +function get_power_name(s) + if check_affect(s, "piety", FALSE) then + return "piety" + else + return "mana" + end +end + +-- Changes the amount of power(mana, piety, whatever) for the spell +function adjust_power(s, x) + if check_affect(s, "piety", FALSE) then + inc_piety(GOD_ALL, x) + else + increase_mana(x) + end +end + +-- Print the book and the spells +function print_book(book, spl, obj) + local x, y, index, sch, size, s + + x = 0 + y = 2 + size = 0 + + -- Hack if the book is 255 it is a random book + if book == 255 then + school_book[book] = {spl} + end + + -- Parse all spells + for index, s in school_book[book] do + local color = TERM_L_DARK + local lvl, na = get_level_school(s, 50, -50) + local xx, sch_str + + if is_ok_spell(s, obj) then + if get_mana(s) > get_power(s) then color = TERM_ORANGE + else color = TERM_L_GREEN end + end + + xx = nil + sch_str = "" + for index, sch in __spell_school[s] do + if xx then + sch_str = sch_str.."/"..school(sch).name + else + xx = 1 + sch_str = sch_str..school(sch).name + end + end + + if na then + c_prt(color, format("%c) %-20s%-16s %3s %4s %3d%s %s", size + strbyte("a"), spell(s).name, sch_str, na, get_mana(s), spell_chance(s), "%", __spell_info[s]()), y, x) + else + c_prt(color, format("%c) %-20s%-16s %3d %4s %3d%s %s", size + strbyte("a"), spell(s).name, sch_str, lvl, get_mana(s), spell_chance(s), "%", __spell_info[s]()), y, x) + end + y = y + 1 + size = size + 1 + end + prt(format(" %-20s%-16s Level Cost Fail Info", "Name", "School"), 1, x) + return y +end + +-- Output the describtion when it is used as a spell +function print_spell_desc(s, y) + local index, desc, x + + x = 0 + + if type(__spell_desc[s]) == "string" then c_prt(TERM_L_BLUE, __spell_desc[s], y, x) + else + for index, desc in __spell_desc[s] do + c_prt(TERM_L_BLUE, desc, y, x) + y = y + 1 + end + end + if check_affect(s, "piety", FALSE) then + c_prt(TERM_L_WHITE, "It uses piety to cast.", y, x) + y = y + 1 + end + if not check_affect(s, "blind") then + c_prt(TERM_ORANGE, "It is castable even while blinded.", y, x) + y = y + 1 + end + if not check_affect(s, "confusion") then + c_prt(TERM_ORANGE, "It is castable even while confused.", y, x) + y = y + 1 + end +end + +-- Output the desc when sued as a device +function print_device_desc(s) + local index, desc + + if type(__spell_desc[s]) == "string" then text_out(__spell_desc[s]) + else + for index, desc in __spell_desc[s] do + text_out("\n" .. desc) + end + end +end + +function book_spells_num(book) + local size, index, sch + + size = 0 + + -- Hack if the book is 255 it is a random book + if book == 255 then + return 1 + end + + -- Parse all spells + for index, s in school_book[book] do + size = size + 1 + end + return size +end + +function spell_x(book, spl, s) + if book == 255 then + return spl + else + local i, x, val + + i, val = next(school_book[book], nil) + x = 0 + while x < s do + i, val = next(school_book[book], i) + x = x + 1 + end + return val + end +end + +function spell_in_book(book, spell) + local i, s + + for i, s in school_book[book] do + if s == spell then return TRUE end + end + return FALSE +end + +-- Returns spell chance of failure for spell +function spell_chance(s) + local chance, s_ptr + + s_ptr = spell(s) + + -- Extract the base spell failure rate + if get_level_use_stick > -1 then + chance = lua_spell_device_chance(s_ptr.fail, get_level(s, 50), s_ptr.skill_level) + else + chance = lua_spell_chance(s_ptr.fail, get_level(s, 50), s_ptr.skill_level, get_mana(s), get_power(s), get_spell_stat(s)) + end + + -- Return the chance + return chance +end + +function check_affect(s, name, default) + local s_ptr = __tmp_spells[s] + local a + + if type(s_ptr[name]) == "number" then + a = s_ptr[name] + else + a = default + end + if a == FALSE then + return nil + else + return TRUE + end +end + +-- Returns the stat to use for the spell, INT by default +function get_spell_stat(s) + if not __tmp_spells[s].stat then return A_INT + else return __tmp_spells[s].stat end +end + +function cast_school_spell(s, s_ptr, no_cost) + local use = FALSE + + -- No magic + if (player.antimagic > 0) then + msg_print("Your anti-magic field disrupts any magic attempts.") + return + end + + -- No magic + if (player.anti_magic == TRUE) then + msg_print("Your anti-magic shell disrupts any magic attempts.") + return + end + + -- if it costs something then some condition must be met + if not no_cost then + -- Require lite + if (check_affect(s, "blind")) and ((player.blind > 0) or (no_lite() == TRUE)) then + msg_print("You cannot see!") + return + end + + -- Not when confused + if (check_affect(s, "confusion")) and (player.confused > 0) then + msg_print("You are too confused!") + return + end + + -- Enough mana + if (get_mana(s) > get_power(s)) then + if (get_check("You do not have enough "..get_power_name(s)..", do you want to try anyway?") == FALSE) then return end + end + + -- Invoke the spell effect + if (magik(spell_chance(s)) == FALSE) then + if (__spell_spell[s]() ~= nil) then + use = TRUE + end + else + local index, sch + + -- added because this is *extremely* important --pelpel + if (flush_failure) then flush() end + + msg_print("You failed to get the spell off!") + for index, sch in __spell_school[s] do + if __schools[sch].fail then + __schools[sch].fail(spell_chance(s)) + end + end + use = TRUE + end + else + __spell_spell[s]() + end + + if use == TRUE then + -- Reduce mana + adjust_power(s, -get_mana(s)) + + -- Take a turn + if is_magestaff() == TRUE then energy_use = 80 + else energy_use = 100 end + end + + player.redraw = bor(player.redraw, PR_MANA) + player.window = bor(player.window, PW_PLAYER) +end + + +-- Helper functions +HAVE_ARTIFACT = 0 +HAVE_OBJECT = 1 +HAVE_EGO = 2 +function have_object(mode, type, find, find2) + local o, i, min, max + + max = 0 + min = 0 + if band(mode, USE_EQUIP) == USE_EQUIP then + min = INVEN_WIELD + max = INVEN_TOTAL + end + if band(mode, USE_INVEN) == USE_INVEN then + min = 0 + if max == 0 then max = INVEN_WIELD end + end + + i = min + while i < max do + o = get_object(i) + if o.k_idx ~= 0 then + if type == HAVE_ARTIFACT then + if find == o.name1 then return i end + end + if type == HAVE_OBJECT then + if find2 == nil then + if find == o.k_idx then return i end + else + if (find == o.tval) and (find2 == o.sval) then return i end + end + end + if type == HAVE_EGO then + if (find == o.name2) or (find == o.name2b) then return i end + end + end + i = i + 1 + end + return -1 +end + +-- Can the spell be randomly found(in random books) +function can_spell_random(i) + return __tmp_spells[i].random +end + +-- Find a random spell +function get_random_spell(typ, level) + local spl, tries + + tries = 1000 + while tries > 0 do + tries = tries - 1 + spl = rand_int(__tmp_spells_num) + if (can_spell_random(spl) == typ) and (rand_int(spell(spl).skill_level * 3) < level) then + break + end + end + if tries > 0 then + return spl + else + return -1 + end +end + +-- Execute a lasting spell +function exec_lasting_spell(spl) + assert(__tmp_spells[spl].lasting, "No lasting effect for spell "..__tmp_spells[spl].name.." but called as such") + return __tmp_spells[spl].lasting() +end + +-- Helper function for spell effect to know if they are or not obvious +function is_obvious(effect, old) + if old then + if old == TRUE or effect == TRUE then + return TRUE + else + return FALSE + end + else + return effect + end +end + +-------------------------Sticks------------------------- + +-- Fire off the spell +function activate_stick(spl) + local ret = __spell_spell[spl]() + local charge, obvious + if not ret then + charge = FALSE + obvious = FALSE + else + charge = TRUE + obvious = ret + end + return obvious, charge +end + +----------------------------------- Wand, Staves, Rods specific functions ---------------------------- + +-- Get a spell for a given stick(wand, staff, rod) +function get_random_stick(stick, level) + local spl, tries + + tries = 1000 + while tries > 0 do + tries = tries - 1 + spl = rand_int(__tmp_spells_num) + if __tmp_spells[spl].stick and (type(__tmp_spells[spl].stick[stick]) == "table") then + if (rand_int(spell(spl).skill_level * 3) < level) and (magik(100 - __tmp_spells[spl].stick[stick].rarity) == TRUE) then + break + end + end + end + if tries > 0 then + return spl + else + return -1 + end +end + +-- Get a random base level +function get_stick_base_level(stick, level, spl) + -- Paranoia + if spl < 0 or spl >= __tmp_spells_num or not __tmp_spells[spl].stick[stick] then return 0 end + + local min, max = __tmp_spells[spl].stick[stick].base_level[1], __tmp_spells[spl].stick[stick].base_level[2] + local range = max - min; + + -- Ok the basic idea is to have a max possible level of half the dungeon level + if range * 2 > level then range = level / 2 end + + -- Randomize a bit + range = m_bonus(range, dun_level) + + -- And get the result + return min + range +end + +-- Get a random max level +function get_stick_max_level(stick, level, spl) + -- Paranoia + if spl < 0 or spl >= __tmp_spells_num or not __tmp_spells[spl].stick[stick] then return 0 end + + local min, max = __tmp_spells[spl].stick[stick].max_level[1], __tmp_spells[spl].stick[stick].max_level[2] + local range = max - min; + + -- Ok the basic idea is to have a max possible level of half the dungeon level + if range * 2 > level then range = level / 2 end + + -- Randomize a bit + range = m_bonus(range, dun_level) + + -- And get the result + return min + range +end + +-- Get the number of desired charges +function get_stick_charges(spl) + return __tmp_spells[spl].stick.charge[1] + randint(__tmp_spells[spl].stick.charge[2]); +end + +-- Get activation desc +function get_activation_desc(spl) + local turns + if type(__tmp_spells[spl].activate) == 'number' then + turns = __tmp_spells[spl].activate + else + turns = __tmp_spells[spl].activate[1] .. '+d' .. __tmp_spells[spl].activate[2] + end + return __tmp_spells[spl].desc[1] .. ' every ' .. turns .. ' turns' +end + +-- Compute the timeout of an activation +function get_activation_timeout(spl) + if type(__tmp_spells[spl].activate) == 'number' then + return __tmp_spells[spl].activate + else + return __tmp_spells[spl].activate[1] + randint(__tmp_spells[spl].activate[2]) + end +end + +-- Fire off the spell +function activate_activation(spl, item) + __spell_spell[spl](item) +end + + +------- Add new GF type ---------- +max_gf = MAX_GF +function add_spell_type(t) + t.index = max_gf + max_gf = max_gf + 1 + assert(t.color, "No GF color") + if not t.monster then t.monster = function() end end + if not t.angry then t.angry = function() end end + if not t.object then t.object = function() end end + if not t.player then t.player = function() end end + if not t.grid then t.grid = function() end end + + add_hooks + { + [HOOK_GF_COLOR] = function (gf, new_gfx) + local t = %t + if gf == t.index then return TRUE, t.color[new_gfx + 1] end + end, + [HOOK_GF_EXEC] = function (action, who, gf, dam, rad, y, x, extra) + local t = %t + if t.index == gf then + return t[action](who, dam, rad, y, x, extra) + end + end, + } + return t.index +end diff --git a/lib/mods/theme/core/stores.lua b/lib/mods/theme/core/stores.lua new file mode 100644 index 00000000..d4a63168 --- /dev/null +++ b/lib/mods/theme/core/stores.lua @@ -0,0 +1,32 @@ +-- Take care of all concerning stores +function store_buy_list(t) + assert(type(t) == "table", "store_buy_list got no table") + add_hooks + { + [HOOK_STORE_BUY] = function (index, name, obj) + local tbl = %t + local elt = tbl[index] + if not elt then + elt = tbl[name] + end + if elt then + if elt then + if type(elt) == "function" then + return TRUE, elt(obj) + elseif type(elt) == "table" then + local k, e + for k, e in elt do + if type(e) == "number" then + if obj.tval == e then return TRUE, TRUE end + else + if (obj.tval == e[1]) and (obj.sval >= e[2]) and (obj.sval <= e[3]) then return TRUE, TRUE end + end + end + elseif elt == -1 then + return TRUE, FALSE + end + end + end + end, + } +end diff --git a/lib/mods/theme/core/util.lua b/lib/mods/theme/core/util.lua new file mode 100644 index 00000000..997f1eba --- /dev/null +++ b/lib/mods/theme/core/util.lua @@ -0,0 +1,257 @@ +-- various stuff to make scripters life easier + +-- Beware of the scary undefined globals +function safe_getglobal(x) + local v = rawget(globals(), x) + + if v then + return v + else + error("undefined global variable '"..x.."'") + end +end + +function set_safe_globals() + settagmethod(tag(nil), "getglobal", safe_getglobal) +end +function unset_safe_globals() + settagmethod(tag(nil), "getglobal", nil) +end + +set_safe_globals() + +-- Patch modules +__patch_modules = {} + +function patch_version(name, version) + assert(not __patch_modules[name], "Patch " .. name .. " already loaded!!!") + __patch_modules[name] = version +end + +function patchs_list() + local k, e, first + first = FALSE + for k, e in __patch_modules do + if first == FALSE then print_hook("\n\n [Patch modules]\n") first = TRUE end + print_hook("\n "..k.." version "..e) + end + if first == TRUE then print_hook("\n") end +end + +function patchs_display() + local k, e + for k, e in __patch_modules do + msg_print("Patch: "..k.." version "..e) + end +end + + +-- Better hook interface +__hooks_list_callback = {} +__hooks_list_callback_max = 0 + +function add_hooks(h_table, name_prefix) + local k, e + + if not name_prefix then name_prefix = "" end + for k, e in h_table do + add_hook_script(k, "__"..name_prefix.."__hooks_list_callback"..__hooks_list_callback_max, "__"..name_prefix.."__hooks_list_callback"..__hooks_list_callback_max) + setglobal("__"..name_prefix.."__hooks_list_callback"..__hooks_list_callback_max, e) + __hooks_list_callback_max = __hooks_list_callback_max + 1 + end +end + +-- Wrapper for the real msg_print and cmsg_print +-- it understands if we want color or not +function msg_print(c, m) + if type(c) == "number" then + cmsg_print(c, m) + else + call(%msg_print, { c }) + end +end + +-- Returns the direction of the compass that y2, x2 is from y, x +-- the return value will be one of the following: north, south, +-- east, west, north-east, south-east, south-west, north-west, +-- or "close" if it is within 2 tiles. +function compass(y, x, y2, x2) + local y_axis, x_axis, y_diff, x_diff, compass_dir + + -- is it close to the north/south meridian? + y_diff = y2 - y + + -- determine if y2, x2 is to the north or south of y, x + if (y_diff > -3) and (y_diff < 3) then + y_axis = nil + elseif y2 > y then + y_axis = "south" + else + y_axis = "north" + end + + -- is it close to the east/west meridian? + x_diff = x2 - x + + -- determine if y2, x2 is to the east or west of y, x + if (x_diff > -3) and (x_diff < 3) then + x_axis = nil + elseif x2 > x then + x_axis = "east" + else + x_axis = "west" + end + + -- Maybe it is very close + if ((not x_axis) and (not y_axis)) then compass_dir = "close" + -- Maybe it is (almost) due N/S + elseif not x_axis then compass_dir = y_axis + -- Maybe it is (almost) due E/W + elseif not y_axis then compass_dir = x_axis + -- or if it is neither + else compass_dir = y_axis.."-"..x_axis + end + + return compass_dir +end + +-- Returns a relative approximation of the 'distance' of y2, x2 from y, x. +function approximate_distance(y, x, y2, x2) + local y_diff, x_diff, most_dist + + -- how far to away to the north/south + y_diff = y2 - y + + -- make sure it's a positive integer + if y_diff < 0 then + y_diff = 0 - y_diff + end + + -- how far to away to the east/west + x_diff = x2 - x + + -- make sure it's a positive integer + if x_diff < 0 then + x_diff = 0 - x_diff + end + + -- find which one is the larger distance + if x_diff > y_diff then + most_dist = x_diff + else + most_dist = y_diff + end + + -- how far away then? + if most_dist >= 41 then + how_far = "a very long way" + elseif most_dist >= 25 then + how_far = "a long way" + elseif most_dist >= 8 then + how_far = "quite some way" + else + how_far = "not very far" + end + + return how_far + +end + +-- better timer add function +__timers_callback_max = 0 + +function new_timer(t) + assert(t.delay > 0, "no timer delay") + assert(t.enabled, "no timer enabled state") + assert(t.callback, "no timer callback") + + local timer + if type(t.callback) == "function" then + setglobal("__timers_callback_"..__timers_callback_max, t.callback) + timer = %new_timer("__timers_callback_"..__timers_callback_max, t.delay) + __timers_callback_max = __timers_callback_max + 1 + else + timer = %new_timer(t.callback, t.delay) + end + + timer.enabled = t.enabled + + return timer +end + +-- saves all timer values +function save_timer(name) + add_loadsave(name..".enabled", FALSE) + add_loadsave(name..".delay", 1) + add_loadsave(name..".countdown", 1) +end + + +-- displays a scrolling list +function display_list(y, x, h, w, title, list, begin, sel, sel_color) + local l = create_list(getn(list)) + + for i = 1, getn(list) do + add_to_list(l, i - 1, list[i]) + end + + %display_list(y, x, h, w, title, l, getn(list), begin - 1, sel - 1, sel_color) + + delete_list(l, getn(list)) +end + +-- Easier access to special gene stuff +function set_monster_generation(monster, state) + if type(monster) == "string" then + m_allow_special[test_monster_name(monster) + 1] = state + else + m_allow_special[monster + 1] = state + end +end +function set_object_generation(obj, state) + if type(obj) == "string" then + m_allow_special[test_item_name(obj) + 1] = state + else + m_allow_special[obj + 1] = state + end +end +function set_artifact_generation(obj, state) + m_allow_special[obj + 1] = state +end + +-- Strings +function strcap(str) + if strlen(str) > 1 then + return strupper(strsub(str, 1, 1))..strsub(str, 2) + elseif strlen(str) == 1 then + return strupper(str) + else + return str + end +end + +function msg_format(...) + msg_print(call(format, arg)) +end + +-- Stacks +function stack_push(stack, val) + tinsert(stack, val) +end +function stack_pop(stack) + if getn(stack) >= 1 then + return tremove(stack) + else + error("Tried to unstack an empty stack") + return nil + end +end + +-- A way to check if the game is now running(as opposed to initialization/character gen) +game = {} +add_hooks +{ + [HOOK_GAME_START] = function () + game.started = TRUE + end +} diff --git a/lib/mods/theme/core/xml.lua b/lib/mods/theme/core/xml.lua new file mode 100644 index 00000000..14f0511f --- /dev/null +++ b/lib/mods/theme/core/xml.lua @@ -0,0 +1,375 @@ +-- The xml module +xml = {} + +function xml:parseargs (s) + local arg = {} + gsub(s, "(%w+)=([\"'])(.-)%2", function (w, _, a) + %arg[w] = a + end) + return arg +end + +-- s is a xml stream, returns a table +function xml:collect (s) + local stack = {n=0} + local top = {n=0} + tinsert(stack, top) + local ni,c,label,args, empty + local i, j = 1, 1 + while 1 do + ni,j,c,label,args, empty = strfind(s, "<(%/?)(%w+)(.-)(%/?)>", j) + if not ni then break end + local text = strsub(s, i, ni-1) + if not strfind(text, "^%s*$") then + tinsert(top, text) + end + if empty == "/" then -- empty element tag + tinsert(top, {n=0, label=label, args=xml:parseargs(args), empty=1}) + elseif c == "" then -- start tag + top = {n=0, label=label, args=xml:parseargs(args)} + tinsert(stack, top) -- new level + else -- end tag + local toclose = tremove(stack) -- remove top + top = stack[stack.n] + if stack.n < 1 then + error("nothing to close with "..label) + end + if toclose.label ~= label then + error("trying to close "..toclose.label.." with "..label) + end + tinsert(top, toclose) + end + i = j+1 + end + local text = strsub(s, i) + if not strfind(text, "^%s*$") then + tinsert(stack[stack.n], text) + end + if stack.n > 1 then + error("unclosed "..stack[stack.n].label) + end + return stack[1] +end + +-- Viewport coordinates +xml.write_out_y = 0 +xml.write_out_x = 0 +xml.write_out_h = 24 +xml.write_out_w = 80 + +-- Offsets +xml.write_off_y = 0 +xml.write_off_x = 0 + +-- Current position +xml.write_y = 0 +xml.write_x = 0 + +xml.write_screen = function(color, s) + local i + for i = 1, strlen(s) do + local c = strsub(s, i, i + 1) + if c ~= "\n" then + if xml.write_y - xml.write_off_y >= 0 and xml.write_y - xml.write_off_y < xml.write_out_h and xml.write_x - xml.write_off_x >= 0 and xml.write_x - xml.write_off_x < xml.write_out_w then + Term_putch(xml.write_x - xml.write_off_x + xml.write_out_x, xml.write_y - xml.write_off_y + xml.write_out_y, color, strbyte(c)) + end + xml.write_x = xml.write_x + 1 + else + xml.write_x = 0 + xml.write_y = xml.write_y + 1 + end + end +end + +xml.write_file = function (color, s) + print_hook(s) +end + +xml.write = xml.write_screen + +xml.rule2string = { + ['name'] = {"Its ", "name", " is"}, + ['contain'] = {"Its ", "name", " contains"}, + ['symbol'] = {"Its ", "symbol", " is"}, + ['inscribed'] = {"Its ", "inscription", " contains"}, + ['state'] = {"Its ", "state", " is"}, + ['status'] = {"Its ", "status", " is"}, + ['tval'] = {"Its ", "tval", " is"}, + ['race'] = {"Your ", "race", " is"}, + ['subrace'] = {"Your ", "subrace", " is"}, + ['class'] = {"Your ", "class", " is"}, + ['foo1'] = {"The result of ", "test 1 ", "is"}, + ['foo2'] = {"The result of ", "test 2 ", "is"}, + ['foo3'] = {"The result of ", "test 3 ", "is"}, +} + +xml.display_english = 1 +function xml:display_xml(t, tab) + if xml.display_english then + xml:english_xml(t, tab) + else + xml:print_xml(t, tab) + end +end + +function xml:english_xml(t, tab, not_flag) + local i, k, e + local pre, post, recurse + local children_not_flag + local nextlevel + local bcol, ecol = TERM_L_GREEN, TERM_GREEN + + if xml.write_active and t == auto_aux.rule then bcol, ecol = TERM_VIOLET, TERM_VIOLET end + + nextlevel = tab .. " " + + recurse = 1 + + if t.label == "rule" then + if t.args.type == "inscribe" then + xml.write(TERM_WHITE, tab) + xml.write(ecol, "A rule named \"") + xml.write(TERM_WHITE, tostring(t.args.name)) + xml.write(ecol, "\" to ") + xml.write(bcol, "inscribe") + xml.write(ecol, " an item with \"") + xml.write(TERM_WHITE, t.args.inscription) + xml.write(ecol, "\" when") + xml.write(TERM_WHITE, "\n") + else + xml.write(TERM_WHITE, tab) + xml.write(ecol, "A rule named \"") + xml.write(TERM_WHITE, tostring(t.args.name)) + xml.write(ecol, "\" to ") + xml.write(bcol, t.args.type) + xml.write(ecol, " when") + xml.write(TERM_WHITE, "\n") + end + elseif t.label == "and" then + if not_flag then + xml.write(TERM_WHITE, tab) + xml.write(ecol, "At least one of the following is false:") + xml.write(TERM_WHITE, "\n") + else + xml.write(TERM_WHITE, tab) + xml.write(ecol, "All of the following are true:") + xml.write(TERM_WHITE, "\n") + end + elseif t.label == "or" then + if not_flag then + xml.write(TERM_WHITE, tab) + xml.write(ecol, "All of the following are false:") + xml.write(TERM_WHITE, "\n") + else + xml.write(TERM_WHITE, tab) + xml.write(ecol, "At least one of the following are true:") + xml.write(TERM_WHITE, "\n") + end + elseif t.label == "not" then + if bcol == TERM_VIOLET or getn(t) == 0 then + xml.write(ecol, "(a negating rule)") + xml.write(TERM_WHITE, "\n") + else + nextlevel = tab + end + children_not_flag = not nil + elseif t.label == "inventory" then + if not_flag then + xml.write(TERM_WHITE, tab) + xml.write(ecol, "Nothing in your ") + xml.write(bcol, "inventory") + xml.write(ecol, " matches the following:") + xml.write(TERM_WHITE, "\n") + else + xml.write(TERM_WHITE, tab) + xml.write(ecol, "Something in your ") + xml.write(bcol, "inventory") + xml.write(ecol, " matches the following:") + xml.write(TERM_WHITE, "\n") + end + elseif t.label == "equipment" then + if not_flag then + xml.write(TERM_WHITE, tab) + xml.write(ecol, "Nothing in your ") + xml.write(bcol, "equipment") + xml.write(ecol, " matches the following:") + xml.write(TERM_WHITE, "\n") + else + xml.write(TERM_WHITE, tab) + xml.write(ecol, "Something in your ") + xml.write(bcol, "equipment") + xml.write(ecol, " matches the following:") + xml.write(TERM_WHITE, "\n") + end + elseif t.label == "comment" then + xml.write(TERM_WHITE, tab) + xml.write(TERM_WHITE, "(" .. t[1] .. ")") + xml.write(TERM_WHITE, "\n") + elseif t.label == "skill" then + local s = t[1] + if not_flag then + xml.write(TERM_WHITE, tab) + xml.write(ecol, "Your skill in ") + xml.write(bcol, s) + xml.write(ecol, " is not from ") + xml.write(TERM_WHITE, tostring(t.args.min)) + xml.write(ecol, " to ") + xml.write(TERM_WHITE, tostring(t.args.max)) + xml.write(TERM_WHITE, "\n") + else + xml.write(TERM_WHITE, tab) + xml.write(ecol, "Your skill in ") + xml.write(bcol, s) + xml.write(ecol, " is from ") + xml.write(TERM_WHITE, tostring(t.args.min)) + xml.write(ecol, " to ") + xml.write(TERM_WHITE, tostring(t.args.max)) + xml.write(TERM_WHITE, "\n") + end + elseif t.label == "ability" then + local s = t[1] + if not_flag then + xml.write(TERM_WHITE, tab) + xml.write(ecol, "You do not have the ") + xml.write(bcol, s) + xml.write(ecol, " ability") + xml.write(TERM_WHITE, "\n") + else + xml.write(TERM_WHITE, tab) + xml.write(ecol, "You have the ") + xml.write(bcol, s) + xml.write(ecol, " ability") + xml.write(TERM_WHITE, "\n") + end + elseif t.label == "level" then + if not_flag then + xml.write(TERM_WHITE, tab) + xml.write(ecol, "Your ") + xml.write(bcol, "level") + xml.write(ecol, " is not from ") + xml.write(TERM_WHITE, tostring(t.args.min)) + xml.write(ecol, " to ") + xml.write(TERM_WHITE, tostring(t.args.max)) + xml.write(TERM_WHITE, "\n") + else + xml.write(TERM_WHITE, tab) + xml.write(ecol, "Your ") + xml.write(bcol, "level") + xml.write(ecol, " is from ") + xml.write(TERM_WHITE, tostring(t.args.min)) + xml.write(ecol, " to ") + xml.write(TERM_WHITE, tostring(t.args.max)) + xml.write(TERM_WHITE, "\n") + end + elseif t.label == "sval" then + if not_flag then + xml.write(TERM_WHITE, tab) + xml.write(ecol, "Its ") + xml.write(bcol, "sval") + xml.write(ecol, " is not from ") + xml.write(TERM_WHITE, tostring(t.args.min)) + xml.write(ecol, " to ") + xml.write(TERM_WHITE, tostring(t.args.max)) + xml.write(TERM_WHITE, "\n") + else + xml.write(TERM_WHITE, tab) + xml.write(ecol, "Its ") + xml.write(bcol, "sval") + xml.write(ecol, " is from ") + xml.write(TERM_WHITE, tostring(t.args.min)) + xml.write(ecol, " to ") + xml.write(TERM_WHITE, tostring(t.args.max)) + xml.write(TERM_WHITE, "\n") + end + elseif t.label == "discount" then + if not_flag then + xml.write(TERM_WHITE, tab) + xml.write(ecol, "Its ") + xml.write(bcol, "discount") + xml.write(ecol, " is not from ") + xml.write(TERM_WHITE, tostring(t.args.min)) + xml.write(ecol, " to ") + xml.write(TERM_WHITE, tostring(t.args.max)) + xml.write(TERM_WHITE, "\n") + else + xml.write(TERM_WHITE, tab) + xml.write(ecol, "Its ") + xml.write(bcol, "discount") + xml.write(ecol, " is from ") + xml.write(TERM_WHITE, tostring(t.args.min)) + xml.write(ecol, " to ") + xml.write(TERM_WHITE, tostring(t.args.max)) + xml.write(TERM_WHITE, "\n") + end + else + if xml.rule2string[t.label] then + local rule = xml.rule2string[t.label] + a, b, c = rule[1], rule[2], rule[3] + if not_flag then c = c .. " not" end + xml.write(TERM_WHITE, tab) + xml.write(ecol, a) + xml.write(bcol, b) + xml.write(ecol, c) + xml.write(ecol, " \"") + xml.write(TERM_WHITE, t[1]) + xml.write(ecol, "\"") + xml.write(TERM_WHITE, "\n") + else + if not_flag then + xml.write(bcol, "Not:\n") + tab = tab .. " " + xml:print_xml(t, tab) + return + end + end + end + + for i = 1, getn(t) do + if type(t[i]) == "string" then + -- xml.write(TERM_WHITE, t[i].."\n") + else + xml:english_xml(t[i], nextlevel, children_not_flag) + end + end +end + +function xml:print_xml(t, tab) + local i, k, e + local inside = nil + local bcol, ecol = TERM_L_GREEN, TERM_GREEN + + if xml.write_active and t == auto_aux.rule then bcol, ecol = TERM_VIOLET, TERM_VIOLET end + + xml.write(bcol, tab.."<"..t.label) + for k, e in t.args do + xml.write(TERM_L_BLUE, " "..k) + xml.write(TERM_WHITE, "=\"") + xml.write(TERM_YELLOW, e) + xml.write(TERM_WHITE, "\"") + end + xml.write(bcol, ">") + + for i = 1, getn(t) do + if type(t[i]) == "string" then + xml.write(TERM_WHITE, t[i]) + else + if not inside then xml.write(TERM_WHITE, "\n") end + inside = not nil + xml:print_xml(t[i], tab.." ") + end + end + + if not inside then + xml.write(ecol, "</"..t.label..">\n") + else + xml.write(ecol, tab.."</"..t.label..">\n") + end +end + +-- t is a table representing xml, outputs the xml code via xml.write() +function xml:output(t) + local i + for i = 1, getn(t) do + xml:print_xml(t[i], "") + end +end diff --git a/lib/mods/theme/data/delete.me b/lib/mods/theme/data/delete.me new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/lib/mods/theme/data/delete.me diff --git a/lib/mods/theme/dngn/dun1.14 b/lib/mods/theme/dngn/dun1.14 new file mode 100644 index 00000000..6421e80b --- /dev/null +++ b/lib/mods/theme/dngn/dun1.14 @@ -0,0 +1,2 @@ +# On this level there is a stairway leading to the Heart of the Earth +B:10 diff --git a/lib/mods/theme/dngn/dun1.22 b/lib/mods/theme/dngn/dun1.22 new file mode 100644 index 00000000..cbf78046 --- /dev/null +++ b/lib/mods/theme/dngn/dun1.22 @@ -0,0 +1,2 @@ +# On this level there is a stairway leading to a trail left by a purposeful dwarf +B:40
\ No newline at end of file diff --git a/lib/mods/theme/dngn/dun10.0 b/lib/mods/theme/dngn/dun10.0 new file mode 100644 index 00000000..b89ce05e --- /dev/null +++ b/lib/mods/theme/dngn/dun10.0 @@ -0,0 +1,3 @@ +# Father branch is Mirkwood(1), on level 14 +A:1 +L:14 diff --git a/lib/mods/theme/dngn/dun11.20 b/lib/mods/theme/dngn/dun11.20 new file mode 100644 index 00000000..9cc611d3 --- /dev/null +++ b/lib/mods/theme/dngn/dun11.20 @@ -0,0 +1,2 @@ +# On this level there is a stairway leading to the Nether Realm +B:6 diff --git a/lib/mods/theme/dngn/dun11.22 b/lib/mods/theme/dngn/dun11.22 new file mode 100644 index 00000000..149e2c33 --- /dev/null +++ b/lib/mods/theme/dngn/dun11.22 @@ -0,0 +1,2 @@ +#I'm downright evil +F:NO_GENO | diff --git a/lib/mods/theme/dngn/dun17.15 b/lib/mods/theme/dngn/dun17.15 new file mode 100644 index 00000000..d08bf5e7 --- /dev/null +++ b/lib/mods/theme/dngn/dun17.15 @@ -0,0 +1,5 @@ +N:Machine +U:s_factory.map +D:The clatter of strange machinery surrounds you. +F:DESC | NO_GENO | NO_NEW_MONSTER | SPECIAL | NO_STAIR +F:ASK_LEAVE | NO_TELEPORT diff --git a/lib/mods/theme/dngn/dun18.0 b/lib/mods/theme/dngn/dun18.0 new file mode 100644 index 00000000..da1b6c27 --- /dev/null +++ b/lib/mods/theme/dngn/dun18.0 @@ -0,0 +1,2 @@ +# The level is SAVED in the playername.mz? file +#S:mz0 diff --git a/lib/mods/theme/dngn/dun18.1 b/lib/mods/theme/dngn/dun18.1 new file mode 100644 index 00000000..70f27718 --- /dev/null +++ b/lib/mods/theme/dngn/dun18.1 @@ -0,0 +1,2 @@ +# The level is SAVED in the playername.mz? file +#S:mz1 diff --git a/lib/mods/theme/dngn/dun19.11 b/lib/mods/theme/dngn/dun19.11 new file mode 100644 index 00000000..7fba690d --- /dev/null +++ b/lib/mods/theme/dngn/dun19.11 @@ -0,0 +1,5 @@ +N:Deathwatch +U:s_death.map +D:This level looks filled with evilness. +F:DESC | NO_GENO | NO_NEW_MONSTER | SPECIAL | NO_STAIR +F:ASK_LEAVE | NO_TELEPORT diff --git a/lib/mods/theme/dngn/dun2.31 b/lib/mods/theme/dngn/dun2.31 new file mode 100644 index 00000000..dd8669a5 --- /dev/null +++ b/lib/mods/theme/dngn/dun2.31 @@ -0,0 +1,2 @@ +# On this level there is a stairway leading to the Mount Doom +B:5 diff --git a/lib/mods/theme/dngn/dun20.1 b/lib/mods/theme/dngn/dun20.1 new file mode 100644 index 00000000..61bc6a65 --- /dev/null +++ b/lib/mods/theme/dngn/dun20.1 @@ -0,0 +1,5 @@ +U:s_smaug.map +N:Lower Halls +D:You can just make out a malevolent red glow at the end of the corridor. +F:DESC +F:NO_GENO | NO_NEW_MONSTER | SPECIAL | NO_STAIR | ASK_LEAVE
\ No newline at end of file diff --git a/lib/mods/theme/dngn/dun22.10 b/lib/mods/theme/dngn/dun22.10 new file mode 100644 index 00000000..e7eb116e --- /dev/null +++ b/lib/mods/theme/dngn/dun22.10 @@ -0,0 +1,2 @@ +# On this level there is a stairway leading to the Small Water Cave +B:24 diff --git a/lib/mods/theme/dngn/dun22.20 b/lib/mods/theme/dngn/dun22.20 new file mode 100644 index 00000000..a04a2788 --- /dev/null +++ b/lib/mods/theme/dngn/dun22.20 @@ -0,0 +1,5 @@ +N:The Bridge +U:s_bridge.map +D:You hear the beating of drums in the Deep. +F:DESC | NO_GENO | NO_NEW_MONSTER | SPECIAL | NO_STAIR +F:ASK_LEAVE | NO_TELEPORT
\ No newline at end of file diff --git a/lib/mods/theme/dngn/dun22.5 b/lib/mods/theme/dngn/dun22.5 new file mode 100644 index 00000000..11d8e51f --- /dev/null +++ b/lib/mods/theme/dngn/dun22.5 @@ -0,0 +1,5 @@ +N:Orc Town +U:s_orc.map +D:You hear orc warcries. +F:DESC | NO_GENO | NO_NEW_MONSTER | SPECIAL | NO_STAIR +F:ASK_LEAVE | NO_TELEPORT diff --git a/lib/mods/theme/dngn/dun24.0 b/lib/mods/theme/dngn/dun24.0 new file mode 100644 index 00000000..bbb93f85 --- /dev/null +++ b/lib/mods/theme/dngn/dun24.0 @@ -0,0 +1,3 @@ +# Father branch is the Moria(22), on level 10 +A:22 +L:10 diff --git a/lib/mods/theme/dngn/dun29.15 b/lib/mods/theme/dngn/dun29.15 new file mode 100644 index 00000000..4df873b5 --- /dev/null +++ b/lib/mods/theme/dngn/dun29.15 @@ -0,0 +1,6 @@ +N:Galleon +U:s_ship.map +D:A ship of antique design lies jammed in the ice here. +F:DESC | NO_GENO | NO_NEW_MONSTER | SPECIAL | NO_STAIR +F:ASK_LEAVE | NO_TELEPORT + diff --git a/lib/mods/theme/dngn/dun3.18 b/lib/mods/theme/dngn/dun3.18 new file mode 100644 index 00000000..84c0a74a --- /dev/null +++ b/lib/mods/theme/dngn/dun3.18 @@ -0,0 +1,5 @@ +N:Dim Gates +U:s_gates.map +D:Visions of death fill your mind. +F:DESC | NO_GENO | NO_NEW_MONSTER | SPECIAL | NO_STAIR +F:ASK_LEAVE | NO_TELEPORT diff --git a/lib/mods/theme/dngn/dun3.28 b/lib/mods/theme/dngn/dun3.28 new file mode 100644 index 00000000..0acd4193 --- /dev/null +++ b/lib/mods/theme/dngn/dun3.28 @@ -0,0 +1,5 @@ +N:Nameless +U:s_name.map +D:You sense a powerful artifact here. +F:DESC | NO_GENO | NO_NEW_MONSTER | SPECIAL | NO_STAIR +F:ASK_LEAVE | NO_TELEPORT diff --git a/lib/mods/theme/dngn/dun3.3 b/lib/mods/theme/dngn/dun3.3 new file mode 100644 index 00000000..710ef5f8 --- /dev/null +++ b/lib/mods/theme/dngn/dun3.3 @@ -0,0 +1,5 @@ +N:Crypt +U:s_crypt.map +D:Looks like a forgotten crypt... +F:DESC | NO_GENO | NO_NEW_MONSTER | SPECIAL | NO_STAIR +F:ASK_LEAVE | NO_TELEPORT diff --git a/lib/mods/theme/dngn/dun36.5 b/lib/mods/theme/dngn/dun36.5 new file mode 100644 index 00000000..9fddd4dd --- /dev/null +++ b/lib/mods/theme/dngn/dun36.5 @@ -0,0 +1,5 @@ +N:Orthanc +U:s_orthanc.map +D:#BAnd here you shall stay, foolish adventurer, and die quickly. For I am Saruman the Wise, Saruman the Ring-maker, Saruman of Many Colours!#w +F:DESC | NO_GENO | NO_NEW_MONSTER | SPECIAL | NO_STAIR +F:ASK_LEAVE | NO_TELEPORT
\ No newline at end of file diff --git a/lib/mods/theme/dngn/dun39.0 b/lib/mods/theme/dngn/dun39.0 new file mode 100644 index 00000000..57fa485e --- /dev/null +++ b/lib/mods/theme/dngn/dun39.0 @@ -0,0 +1,9 @@ +# Father branch is Barrow-Downs(4), on level 10 +A:4 +L:9 + +N:Bilbo's trail +U:s_bilbo.map +D:#yYou hear someone shout, "I am in a frightful hurry, but Gandalf told me to leave this map for you! Find it, then seek Thorin in Mirkwood!"#w +F:DESC | NO_GENO | NO_NEW_MONSTER | SPECIAL | NO_STAIR +F:ASK_LEAVE | NO_TELEPORT
\ No newline at end of file diff --git a/lib/mods/theme/dngn/dun4.9 b/lib/mods/theme/dngn/dun4.9 new file mode 100644 index 00000000..e09273d6 --- /dev/null +++ b/lib/mods/theme/dngn/dun4.9 @@ -0,0 +1,2 @@ +# On this level there is a stairway leading to a trail left by a fleeing hobbit +B:39
\ No newline at end of file diff --git a/lib/mods/theme/dngn/dun40.0 b/lib/mods/theme/dngn/dun40.0 new file mode 100644 index 00000000..0cd769c4 --- /dev/null +++ b/lib/mods/theme/dngn/dun40.0 @@ -0,0 +1,9 @@ +# Father branch is Mirkwood(1), on level 33 +A:1 +L:22 + +N:Thorin's trail +U:s_thorin.map +D:#yYou hear someone shout, "My mad kinsmen have taken the key to the Lonely Mountain! Get the key, then find that fool hobbit and my map! If you haven't already."#w +F:DESC | NO_GENO | NO_NEW_MONSTER | SPECIAL | NO_STAIR +F:ASK_LEAVE | NO_TELEPORT
\ No newline at end of file diff --git a/lib/mods/theme/dngn/dun5.0 b/lib/mods/theme/dngn/dun5.0 new file mode 100644 index 00000000..48a7bea6 --- /dev/null +++ b/lib/mods/theme/dngn/dun5.0 @@ -0,0 +1,3 @@ +# Father branch is the Mordor, on level 32 +A:2 +L:31 diff --git a/lib/mods/theme/dngn/dun5.14 b/lib/mods/theme/dngn/dun5.14 new file mode 100644 index 00000000..3d7a3080 --- /dev/null +++ b/lib/mods/theme/dngn/dun5.14 @@ -0,0 +1,14 @@ +# The level is SAVED in the playername.mdm file +S:mdm + +# Use the map in s_doom.map file +U:s_doom.map + +# Use Mt Doom as level name +N:Mt Doom + +D:You finally reach the top of Mount Doom, here must lie the Great Fire. +F:DESC +F:NO_GENO | NO_NEW_MONSTER | SPECIAL | NO_STAIR +F:NO_TELEPORT + diff --git a/lib/mods/theme/dngn/dun6.0 b/lib/mods/theme/dngn/dun6.0 new file mode 100644 index 00000000..c750ea67 --- /dev/null +++ b/lib/mods/theme/dngn/dun6.0 @@ -0,0 +1,3 @@ +# Father branch is Void(11), on level 20 +A:11 +L:20 diff --git a/lib/mods/theme/edit/a_info.txt b/lib/mods/theme/edit/a_info.txt new file mode 100644 index 00000000..e2a312c5 --- /dev/null +++ b/lib/mods/theme/edit/a_info.txt @@ -0,0 +1,3359 @@ +# File: a_info.txt + + +# This file is used to initialize the "lib/raw/a_info.raw" file, which is +# used to initialize the "artifact" information for the Angband game. + +# Do not modify this file unless you know exactly what you are doing, +# unless you wish to risk possible system crashes and broken savefiles. + +# After modifying this file, delete the "lib/raw/a_info.raw" file. + + +# The artifact indexes are defined in "defines.h", and must not be changed. + +# Artifacts 1-15 are "special", 16-63 are "armor", and 64-127 are "weapons". + +# Hack -- "Grond" and "Morgoth" MUST have a rarity of one, or they might +# not be dropped when Morgoth is killed. Note that they, like the "special" +# artifacts, are never created "accidentally". + +# Artifacts now have descriptions. Special thanks to J.R.R Tolkien, +# without whom the words would be unwritten, the images unconceived, +# the deed undone. +# -Leon Marrick +# Contributors: Jeff Butler, Neal Hackler, Ethan Sicotte, Pat Tracy, Divia +# The 'Theme' module for ToME introduces many changes into this file; please +# refer to changes.txt in the module root folder for details. + +# Version stamp (required) + +V:2.0.0 + + + +# The Phial of Galadriel + +N:1:of Galadriel +I:39:100:4 +W:20:10:10:10000 +P:0:1d1:0:0:0 +F:ACTIVATE | SEARCH | LITE3 | LUCK +F:INSTA_ART | HIDE_TYPE +a:HARDCORE=LIGHT +D:A small crystal phial, with the light of Earendil's Star contained inside. +D:Its light is imperishable, and near it darkness cannot endure. + + +# The Star of Elendil + +N:2:of Elendil +I:39:101:1 +W:30:25:5:32500 +P:0:1d1:0:0:0 +F:ACTIVATE | SEE_INVIS | HOLD_LIFE | +F:INSTA_ART | SPEED | LITE3 | LITE1 | HIDE_TYPE +a:HARDCORE=MAP_LIGHT +Z:detect curses +D:The shining Star of the West, a famed heirloom of Elendil's house. +D:A white diamond set as a star in a silver fillet to be bound at the +D:forehead. + +# The Arkenstone of Thrain +# Was +2 WIS/DEX + +N:3:of Thrain +I:39:102:3 +W:50:50:5:50000 +P:0:1d1:0:0:0 +F:ACTIVATE | SEE_INVIS | HOLD_LIFE | RES_CHAOS | HIDE_TYPE | LUCK +F:INSTA_ART | SPEED | RES_LITE | RES_DARK | ESP_ORC | LITE3 | SPECIAL_GENE +a:HARDCORE=THRAIN +D:A great globe seemingly filled with moonlight, the famed Heart of the +D:Mountain, which splinters the light that falls upon it into a thousand +D:glowing shards. + +# The Amulet of Annatar (replaces Carlammas in Theme) + +N:4:of Annatar +I:40:10:10 +W:70:30:3:90000 +F:HIDE_TYPE | MANA | LIFE | SPELL | DRAIN_EXP | AGGRAVATE +F:INSTA_ART +D:This fiery golden circle once belonged to one who was known to the elves +D:of Eregion as 'The Lord of Gifts'. Treacherous were his gifts, as was his +D:teaching. Sauron the Sorcerer lurked behind the guise and his gifts, like +D:this necklace, were not without cost. + +# The Amulet of Ingwe + +N:5:of Ingwe +I:40:11:3 +W:65:30:3:90000 +F:INT | WIS | CHR | SEARCH | INFRA | HIDE_TYPE | +F:SEE_INVIS | FREE_ACT | ACTIVATE | +F:RES_ACID | RES_COLD | RES_ELEC | +F:INSTA_ART +a:HARDCORE=DISP_EVIL +D:The ancient heirloom of Ingwe, high lord of the Vanyar, against whom nothing +D:of evil could stand. + + +# The Necklace 'Nauglamir' +# Inherits Flare's old activation, since Flare is gone in Theme. + +N:6:'Nauglamir' +I:40:12:3 +W:70:50:3:75000 +F:STR | CON | DEX | INFRA | HIDE_TYPE | RES_FEAR | +F:SEE_INVIS | FREE_ACT | REGEN | LITE3 | SPEED | +F:INSTA_ART | SPECIAL_GENE +a:HARDCORE=DIM_DOOR +D:A carencet of gold, set with a multitude of shining gems of +D:Valinor. Despite its size, its weight seems as that of gossamer. + +# The Shadow Blade 'Ancanaur' - adapted from Annals of Ea + + +N:7:'Ancanaur' +I:23:32:3 +W:80:120:45:5000000 +P:0:12d12:10:10:0 +F:CHR | CON | DEX | DRAIN_EXP | FREE_ACT | HEAVY_CURSE | HIDE_TYPE | HOLD_LIFE | IM_FIRE | INT | KILL_DEMON | LEVELS | LITE1 | REGEN | RES_DARK | RES_FEAR | RES_NETHER | RES_NEXUS | SEE_INVIS | SHOW_MODS | SLAY_EVIL | SLAY_UNDEAD | SPEED | STR | WIS +Z:mind blast +D:"The Jaws of Fire", this is the sword that Feanor forged in secret +D:to do battle against his enemies. The sword which threatened Fingolfin, +D:the sword which in the end did not prevent its owner's untimely death. + +# The Ring of Barahir + +N:8:of Barahir +I:45:32:1 +W:50:25:2:75000 +F:STR | INT | WIS | DEX | CON | CHR | STEALTH | HIDE_TYPE | +F:RES_POIS | RES_DARK | ACTIVATE | SEE_INVIS | SEARCH | +F:INSTA_ART +a:HARDCORE=BARAHIR +D:A ring shaped into twinned serpents with eyes of emerald meeting beneath +D:a crown of flowers, an ancient treasure of Isildur's house. + +# The Slaughter Axe 'Dramborleg' - Tuor's axe +# Replaces the Ring of Tulkas in Theme +# Inherits the activation. + +N:9:'Dramborleg' +I:24:30:5 +W:90:60:300:500000 +P:0:5d7:18:25:0 +F:CRIT | HIDE_TYPE | KILL_DEMON | SHOW_MODS | VORPAL | WOUNDING | ACTIVATE +a:HARDCORE=TULKAS +D:The great axe of Tuor, Thudder-Sharp is its name. The axe that smote +D:both a heavy dint as of a club and cleft as a sword. When it was swung +D:by the hands of Tuor, it sang like the rush of eagle's wings in the +D:air and took death as it fell. Its name alone instills fear in Balrogs +D:and other corruptions of Morgoth. + +# The Ring of Power 'Narya' + +N:10:of Power 'Narya' +I:45:34:1 +W:70:30:2:100000 +P:0:1d1:6:6:0 +F:STR | INT | WIS | DEX | CON | CHR | SPEED | HIDE_TYPE | LUCK +F:ACTIVATE | FREE_ACT | SEE_INVIS | +F:SUST_STR | SUST_CON | SUST_WIS | SUST_CHR | SPECIAL_GENE | +F:IM_FIRE | RES_NETHER | RES_FEAR | REGEN | +F:INSTA_ART +a:HARDCORE=NARYA +D:The Ring of Fire, set with a ruby that glows like flame. Narya is one +D:of the three Rings of Power created by the Elves and hidden by them from +D:Sauron. + + +# The Ring of Power 'Nenya' + +N:11:of Power 'Nenya' +I:45:35:2 +W:80:40:2:200000 +P:0:1d1:9:9:0 +F:STR | INT | WIS | DEX | CON | CHR | SPEED | HIDE_TYPE | LUCK +F:ACTIVATE | HOLD_LIFE | FREE_ACT | SEE_INVIS | +F:SUST_INT | SUST_WIS | SUST_CHR | +F:IM_COLD | RES_BLIND | STEALTH | ESP_ALL | +F:INSTA_ART +a:HARDCORE=NENYA +D:The Ring of Adamant, with a pure white stone as centrepiece. Nenya is one +D:of the three Rings of Power created by the Elves and hidden by them from +D:Sauron. + + +# The Ring of Power 'Vilya' + +N:12:of Power 'Vilya' +I:45:36:3 +W:90:50:2:300000 +P:0:1d1:12:12:0 +F:STR | INT | WIS | DEX | CON | CHR | SPEED | HIDE_TYPE | LUCK +F:ACTIVATE | HOLD_LIFE | FREE_ACT | SEE_INVIS | +F:FEATHER | SLOW_DIGEST | REGEN | +F:SUST_STR | SUST_DEX | SUST_CON | +F:IM_ELEC | RES_POIS | RES_DISEN | +F:INSTA_ART +a:HARDCORE=VILYA +D:The Ring of Sapphire, with clear blue gems that shine like stars, +D:glittering untouchable despite all that Sauron ever wrought. Vilya is +D:one of the three Rings of Power created by the Elves and hidden by them +D:from Sauron. + + +# The Ring of Power 'The One Ring' + +N:13:of Power 'The One Ring' +I:45:37:5 +W:100:100:2:5000000 +P:0:1d1:15:15:0 +F:STR | INT | WIS | DEX | CON | CHR | SPEED | HIDE_TYPE | +F:ACTIVATE | AUTO_CURSE | HEAVY_CURSE | INVIS | SPELL | MANA | +F:SEE_INVIS | REGEN | FREE_ACT | CURSED | CURSE_NO_DROP | +F:IM_FIRE | IM_COLD | IM_ELEC | IM_ACID | PERMA_CURSE | +F:SUST_STR | SUST_DEX | SUST_CON | +F:SUST_INT | SUST_WIS | SUST_CHR | +F:RES_BLIND | RES_POIS | RES_DISEN | RES_NETHER | ESP_ALL | +F:DRAIN_MANA | DRAIN_HP | DRAIN_EXP | +F:INSTA_ART +a:HARDCORE=POWER +Z:change the world +D:"Ash nazg durbatuluk, ash nazg gimbatul, ash nazg thrakatuluk agh +D:burzum-ishi krimpatul". Unadorned, made of massive gold, +D:set with runes in the foul speech of Mordor, with power so great that it +D:inevitably twists and masters any earthly being who wears it. + + +# The Anchor of Space-Time + +N:14:of Space-Time +I:39:105:0 +W:30:12:15:50000 +P:0:1d1:0:0:0 +F:INSTA_ART | LITE1 +D:A powerful stone that provides a strong light for any who +D:wields it. It is rumoured that it may even protect the wearer from +D:the passing of time. + + +# The Key of Orthanc - replaces Stone of Lore +# This artifact has a low artifact level to prevent it being worthless for +# chars with poor magic skills. + +N:15:of Orthanc +I:39:106:0 +W:15:12:15:20000 +P:0:1d1:0:0:0 +F:ACTIVATE | SPECIAL_GENE | EASY_USE | LITE1 | +F:INSTA_ART +a:HARDCORE=STONE_LORE +D:The key to the tower of Saruman, which fills your mind +D:with images of knowledge and dreadful understanding. It +D:is not a regular key - it is a perfectly round stone +D:that is meant to fit into a hole. It can be used to +D:light your way in the dungeon as well. + +# The Multi-Hued Dragon Scale Mail 'Lothronfaun' + +N:16:'Lothronfaun' +I:38:6:0 +W:90:9:500:400000 +P:30:2d4:-4:0:25 +F:FREE_ACT | IM_ELEC | SPECIAL_GENE | +F:RES_FIRE | RES_COLD | RES_POIS | RES_LITE | RES_DARK | +F:LITE1 | SEE_INVIS | AGGRAVATE | ESP_DRAGON +F:ACTIVATE +a:HARDCORE=RAZORBACK +D:A massive suit of heavy dragon scales deeply saturated with many colours. +D:It throbs with angry energies. May-cloud it is called, after the +D:element lightning which courses through it with unusual vigour. + +# The Power Dragon Scale Mail of the Sun + +N:17:of the Sun +I:38:30:0 +W:100:16:600:500000 +P:50:2d4:-8:0:35 +F:HOLD_LIFE | REGEN | ESP_DRAGON | +F:RES_ACID | RES_FIRE | RES_COLD | RES_ELEC | RES_POIS | FEATHER | FLY | +F:RES_NETHER | RES_NEXUS | RES_CHAOS | RES_LITE | RES_DARK | ULTIMATE | +F:RES_SHARDS | RES_SOUND | RES_DISEN | RES_BLIND | RES_CONF | +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD | SPECIAL_GENE +F:ACTIVATE +a:HARDCORE=BLADETURNER +D:A suit of tilkal, set with scales of every colour, surrounded in a nimbus +D:of perfectly untramelled yet inextricably intermingled and utterly mastered +D:powers elemental and ethereal. + + +# The Spear of Melkor + +N:18:of Melkor +I:22:2:-4 +W:65:45:200:100000 +P:0:4d6:12:24:0 +F:STEALTH | WIS | CURSED | HEAVY_CURSE | TY_CURSE | ESP_GOOD | +F:DRAIN_MANA | DRAIN_HP | +F:RES_DARK | RES_BLIND | RES_LITE | RES_NETHER | BRAND_POIS | RES_CONF +D:The mighty spear used once by Melkor to slay the trees of Valinor. + +# The Galvorn Plate Mail of Eol + +N:19:of Eol +I:37:30:2 +W:75:9:420:300000 +P:40:2d4:-4:0:20 +F:CON | +F:HOLD_LIFE | SUST_CON | ESP_UNDEAD | RES_CONF | RES_FEAR | +F:RES_ACID | RES_COLD | RES_DARK | RES_NETHER | RES_NEXUS | RES_CHAOS | +F:ACTIVATE +a:HARDCORE=CURE_1000 +D:A suit of imperishable galvorn, with unconquerable strength to endure evil +D:and disruptive magics. It protects the life force of its wearer like +D:nothing else can. Eol the Dark Elf made it in secret for his son, but +D:Maeglin left Nan Elmoth with his mother Aredhel and never got to wear it. + +# The Full Plate Armour of Isildur + +N:20:of Isildur +I:37:15:1 +W:30:3:300:50000 +P:25:2d4:0:0:25 +F:CON | +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | +F:RES_SOUND | RES_CONF | RES_NEXUS +D:A gleaming steel suit covering the wearer from neck to foot, with runes of +D:warding and stability deeply engraved into its surface. + + +# The Metal Brigandine Armour of the Rohirrim + +N:21:of the Rohirrim +I:37:9:2 +W:30:3:200:30000 +P:19:1d4:0:0:15 +F:STR | DEX | SPEED | HIDE_TYPE | RES_FEAR | +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_CONF | RES_SOUND +D:A stiff suit of armour composed of small metal plates sewn to an +D:inner layer of heavy canvas, and covered with a second layer of +D:cloth. Within it is the spirit of Eorl the Young, matchless in combat. + + +# The Mithril Chain Mail 'Belegennon' + +N:22:'Belegennon' +I:37:20:4 +W:40:10:150:135000 +P:28:1d4:-1:0:20 +F:STEALTH | WIS | INT | +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_POIS | +F:HOLD_LIFE | RES_DARK | RES_FEAR | +F:SEE_INVIS | +F:ACTIVATE +a:HARDCORE=BELEGENNON +D:This wondrous suit of fine-linked chain shimmers as though of pure silver. +D:It stands untouched amidst the fury of the elements, and a power of +D:concealment rests within. + + +# The Mithril Plate Mail of Celeborn + +N:23:of Celeborn +I:37:25:4 +W:40:3:250:150000 +P:35:2d4:-3:0:25 +F:STR | CHR | HIDE_TYPE | ESP_ORC +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_DARK | +F:RES_DISEN | ACTIVATE +a:HARDCORE=GENOCIDE +D:A shimmering suit of true-silver, forged long ago by dwarven smiths of +D:legend. It gleams with purest white as you gaze upon it, and mighty are +D:its powers to protect and banish. + + +# The Chain Mail of Arvedui + +N:24:of Arvedui +I:37:4:2 +W:20:3:220:32000 +P:14:1d4:-2:0:15 +F:STR | CHR | HIDE_TYPE | +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_SHARDS | RES_NEXUS +D:A hauberk, leggings, and sleeves of interlocking steel rings, well padded +D:with leather. You feel strong and tall as Arvedui, last king of Arnor, +D:as you put it on. + + +# The Augmented Chain Mail of Caspanion + +N:25:of Caspanion +I:37:6:3 +W:25:9:270:40000 +P:16:1d4:-2:0:20 +F:INT | WIS | CON | HIDE_TYPE | +F:RES_ACID | RES_POIS | RES_CONF | ACTIVATE +a:HARDCORE=DEST_DOOR +D:A hauberk, leggings, and sleeves of interlocking steel rings, strategically +D:reinforced at vital locations with a second layer of chain. Magics to +D:enhance body and mind lie within, and no door can hope to resist the wearer. + + +# The Mithril Helm of Gil-galad +# Designed with no-infravision warrior-types in mind. +# Replaces Marda's coat in Theme + +N:26:of Gil-galad +I:32:8:10 +W:50:80:50:20000 +P:6:1d3:0:0:10 +F:ACTIVATE | HIDE_TYPE | INFRA | LITE2 | LITE3 | SEARCH +a:HARDCORE=SUNLIGHT +D:The shining helm that Gil-galad, legendary Elven-king, wore in battle. + +# The Leather Jerkin of Tom Bombadil +# Based on a suggestion by Maverick in the forums: +# Replaces Trone's coat in Theme. + + +N:27:of Tom Bombadil +I:36:12:1 +W:10:10:70:30000 +P:40:2d4:0:0:0 +F:CHR | CON | DEX | HIDE_TYPE | INT | STR | WIS +Z:teleport +D:This garment was once the property of Tom Bombadil - +D:a strange being rumoured to be older than Arda itself. It +D:may be the explanation for how Tom could always turn up +D:when he was most needed. + +# The Leather Scale Mail 'Thalkettoth' + +N:28:'Thalkettoth' +I:36:11:3 +W:20:3:60:25000 +P:11:1d1:-1:0:25 +F:DEX | SPEED | HIDE_TYPE | SPECIAL_GENE | +F:RES_ACID | RES_SHARDS +D:A tunic and skirt sewn with thick, overlapping scales of hardened +D:leather whose wearer moves with agility and assurance. + + +# The Pair of Soft Leather Boots of Wormtongue + +N:29:of Wormtongue +I:30:2:3 +W:40:20:20:50000 +P:2:1d1:-10:-10:10 +F:INT | DEX | CHR | STEALTH | SEARCH | SPEED | HIDE_TYPE | +F:FREE_ACT | FEATHER | RES_DARK | RES_LITE | ESP_GOOD | ESP_UNIQUE +Z:panic hit +D:The pair of boots used by Grima son of Galmod, also named the Wormtongue: +D:a treacherous but persuasive counsellor, ever ready to betray, sneak, +D:lie, cheat and steal - but never ready to actually fight. + + +# The Small Mithril Shield of Thorin + +N:30:of Thorin +I:34:7:4 +W:30:6:65:60000 +P:5:1d2:0:0:25 +F:STR | CON | HIDE_TYPE | +F:FREE_ACT | IM_ACID | RES_SOUND | +F:RES_CHAOS | ESP_ORC +D:Invoking the strength and endurance of Thorin, King under the Mountain, +D:this little shield forged of true-silver is proof against the Element +D:of Earth. + +# The Large Leather Shield of Celegorm + +N:31:of Celegorm +I:34:4:0 +W:30:3:60:12000 +P:4:1d2:0:0:20 +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_LITE | RES_DARK +D:This shield emblazoned with a multitude of creatures not seen for ages +D:once protected Celegorm, lord of Himlad; around it lies a mystic balance +D:that contains the conflicts of the elements. + + +# The Large Metal Shield of Anarion + +N:32:of Anarion +I:34:5:0 +W:40:9:120:160000 +P:5:1d3:0:0:20 +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | SUST_STR | SUST_INT | +F:SUST_WIS | SUST_DEX | SUST_CON | SUST_CHR | ESP_EVIL +D:The great metal-bound shield of Anarion, son of Elendil, who Sauron found +D:himself powerless to wither or diminish. + + +# The Beaked Axe of Hurin + +N:33:of Hurin +I:22:10:3 +W:20:15:180:90000 +P:0:2d6:12:20:0 +F:STR | CON | HIDE_TYPE | BRAND_ACID | RES_ACID | LITE1 | DRAIN_MANA | +F:SLAY_ORC | KILL_DEMON | SLAY_TROLL | ACTIVATE | SHOW_MODS +F:MUST2H +f:MUST2H +a:HARDCORE=HURIN +D:Wielded by Hurin Thalion in the Fifth Battle of Beleriand, this +D:troll-bane smoked in the black blood of Gothmog's guards. + + +# The Massive Iron Crown of Morgoth + +N:34:of Morgoth +I:33:50:125 +W:100:1:20:10000000 +P:0:1d1:0:0:0 +F:STR | INT | WIS | DEX | CON | CHR | INFRA | HIDE_TYPE | +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_POIS | +F:RES_LITE | RES_DARK | RES_CONF | RES_NEXUS | RES_NETHER | +F:LITE1 | SEE_INVIS | ESP_ALL | +F:CURSED | HEAVY_CURSE | PERMA_CURSE | +F:INSTA_ART | SPECIAL_GENE +D:Two Silmarils of Feanor blaze from the thunderous crown of twisted +D:iron. The corrupted metal feels at once as infernal as hellfire +D:and as chilling as the Outer Darkness. One protrusion from the +D:crown is abruptly ended where a third jewel might have shone. + + +# The Iron Crown of Beruthiel + +N:35:of Beruthiel +I:33:10:-5 +W:40:12:20:0 +P:0:1d1:0:0:20 +F:STR | DEX | CON | HIDE_TYPE | +F:FREE_ACT | SEE_INVIS | ESP_ANIMAL | ESP_EVIL | ESP_NONLIVING | ESP_ALL | +F:CURSED | AUTO_CURSE +D:The midnight-hued steel circlet of the sorceress-queen Beruthiel, which +D:grants extraordinary powers of sight and awareness at a terrible physical +D:cost. + + +# The Hard Leather Cap of Thranduil + +N:36:of Thranduil +I:32:2:2 +W:20:2:15:50000 +P:2:0d0:0:0:10 +F:INT | WIS | HIDE_TYPE | +F:RES_BLIND | ESP_ORC | ESP_EVIL | ESP_TROLL +D:The hunting cap of King Thranduil, to whose ears come all the secrets of +D:his forest domain. + + +# The Metal Cap of Thengel + +N:37:of Thengel +I:32:3:3 +W:10:2:20:22000 +P:3:1d1:0:0:12 +F:WIS | CHR | RES_CONF | HIDE_TYPE | LUCK +D:A ridged helmet made of steel, and embossed with scenes of valour in fine- +D:engraved silver. It grants the wearer nobility, clarity of thought and +D:understanding. + + +# The Steel Helm of Hammerhand + +N:38:of Hammerhand +I:32:6:3 +W:20:2:60:45000 +P:6:1d3:0:0:20 +F:STR | DEX | CON | HIDE_TYPE | SPECIAL_GENE | RES_FEAR | +F:SUST_STR | SUST_DEX | SUST_CON | +F:RES_ACID | RES_NEXUS | RES_COLD | RES_DARK | SLOW_DIGEST | +Z:berserk +D:A great helm as steady as the heroes of the Westdike. Mighty were the +D:blows of Helm, the Hammerhand! + + +# The Dragon Helm of Dor-Lomin + +N:39:of Dor-Lomin +I:32:7:4 +W:40:12:75:300000 +P:8:1d3:0:0:20 +F:STR | DEX | CON | HIDE_TYPE | +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_LITE | RES_BLIND | +F:LITE1 | SEE_INVIS | ESP_DRAGON | ESP_THUNDERLORD | ACTIVATE +a:HARDCORE=GORLIM +D:The legendary dragon helm of Turin Turambar, an object of dread to the +D:servants of Morgoth. + +# The Iron Helm 'Holhenneth' + +N:40:'Holhenneth' +I:32:5:2 +W:20:5:75:100000 +P:5:1d3:0:0:10 +F:INT | WIS | SEARCH | HIDE_TYPE | +F:RES_BLIND | SEE_INVIS | ACTIVATE +a:HARDCORE=DETECT_ALL +D:A famous helm of forged iron granting extraordinary powers of mind and +D:awareness. + + +# The Iron Helm of Gorlim + +N:41:of Gorlim +I:32:5:-5 +W:20:5:75:0 +P:5:1d3:25:25:10 +F:INT | WIS | SEARCH | HIDE_TYPE | SHOW_MODS | +F:SEE_INVIS | NO_MAGIC | HEAVY_CURSE | TY_CURSE +F:RES_DISEN | RES_FEAR | FREE_ACT | RES_ACID | RES_FIRE | RES_POIS | +F:IM_COLD | ACTIVATE | DRAIN_HP | +F:TELEPORT | CURSED +a:HARDCORE=GORLIM +D:A headpiece, gaudy and barbaric, that betrayed a warrior when he most +D:needed succor. + + +# The Golden Crown of Gondor + +N:42:of Gondor +I:33:11:3 +W:40:40:30:125000 +P:0:1d1:0:0:15 +F:STR | WIS | CON | HIDE_TYPE | SPEED | RES_CONF | RES_SOUND | +F:RES_COLD | RES_FIRE | RES_LITE | RES_BLIND | RES_ELEC | RES_CHAOS | +F:LITE1 | SEE_INVIS | REGEN | ACTIVATE +a:HARDCORE=CURE_700 +D:The shining winged circlet brought by Elendil from dying Numenor, emblem of +D:Gondor through an age of the world. + + +# The Jewel Encrusted Crown of Numenor +# Stolen from Oangband + +N:43:of Numenor +I:33:12:3 +W:60:30:40:50000 +P:0:1d1:0:0:18 +F:INT | DEX | CHR | SEARCH | SPEED | HIDE_TYPE | +F:SEE_INVIS | FREE_ACT | RES_DARK | RES_BLIND | +F:RES_SHARDS | RES_SOUND | RES_LITE | RES_COLD | +F:LITE1 | ACTIVATE | DRAIN_MANA +a:HARDCORE=NUMENOR +D:A crown of massive gold, set with wondrous jewels of thought and warding, +D:worn by the kings of ancient Numenor. Its wearer may go into battle +D:always knowing what he faces - unless his own folly blinds him to the +D:nature and magnitude of the task. + +# The Cloak of Valinor +# Replaces Colluin in Theme +# *THE* cloak for Barehanders/Mages + +N:44:of Valinor +I:35:1:0 +W:60:90:10:40000 +P:1:0d0:0:0:20 +F:ACTIVATE | IM_ACID | IM_COLD | IM_ELEC | IM_FIRE | RES_POIS +a:HARDCORE=COLLUIN +D:A cape worn by a hero from Valinor, a land utterly beyond the strife +D:of the elements. + +# The Cloak 'Holcolleth' + +N:45:'Holcolleth' +I:35:1:2 +W:5:25:10:13000 +P:1:0d0:0:0:4 +F:INT | WIS | SPEED | STEALTH | HIDE_TYPE | +F:RES_ACID | ACTIVATE +a:HARDCORE=SLEEP +D:This elven-grey mantle possesses great powers of tranquility and of +D:concealment, and grants the wearer the knowledge and understanding of +D:the Sindar. + + +# The Cloak of Thingol + +N:46:of Thingol +I:35:1:3 +W:10:50:10:35000 +P:1:0d0:0:0:18 +F:DEX | CHR | HIDE_TYPE | +F:FREE_ACT | RES_ACID | RES_FIRE | RES_COLD | ACTIVATE +a:HARDCORE=RECHARGE +D:A sable-hued cloak, with glowing elven-runes to restore magic showing calm +D:and clear as moonlight on still water. + + +# The Cloak of Thorongil + +N:47:of Thorongil +I:35:1:0 +W:5:10:10:8000 +P:1:0d0:0:0:10 +F:FREE_ACT | RES_ACID | SEE_INVIS | RES_FEAR +D:A cloak of shimmering green and brown that grants sight beyond sight and +D:shakes off holding magics, worn by Aragorn son of Arathorn in his youth +D:as he adventured under the name of Thorongil. + + +# The Cloak 'Colannon' + +N:48:'Colannon' +I:35:1:3 +W:5:20:10:11000 +P:1:0d0:0:0:15 +F:STEALTH | SPEED | RES_NEXUS | +F:RES_ACID | ACTIVATE +a:HARDCORE=TELEPORT +D:A crystal-blue cape of fine silk worn by a silent messenger of +D:the forces of Law. Somehow, its wearer is always able to escape +D:trouble. + + +# The Shadow Cloak of Luthien + +N:49:of Luthien +I:35:6:2 +W:40:40:5:55000 +P:6:0d0:0:0:20 +F:INT | WIS | CHR | HIDE_TYPE | SPEED | STEALTH | INVIS | LUCK +F:RES_ACID | RES_FIRE | RES_COLD | SPECIAL_GENE | ACTIVATE | SPELL_CONTAIN | WIELD_CAST +a:HARDCORE=REST_LIFE +D:The opaque midnight folds, inset with a multitude of tiny diamonds, of +D:this cloak swirl around you and you feel a hint, a fragment of the +D:knowledge and power to restore that lay in Luthien, the most beautiful +D:being that ever knew death. + + +# The Shadow Cloak of Tuor + +N:50:of Tuor +I:35:6:4 +W:40:40:5:35000 +P:6:0d0:0:0:12 +F:STEALTH | DEX | HIDE_TYPE | INVIS | WATER_BREATH +F:FREE_ACT | IM_ACID | SEE_INVIS | CLIMB +D:From the ruin of Gondolin did Tuor escape, through secret ways and travail, +D:shielded by his cloak from a multitude of hostile eyes. + + +# The Main Gauche of Azaghal, which wounded Glaurung +N:51:of Azaghal +I:23:5:0 +W:15:30:30:40000 +P:0:2d5:12:14:0 +F:KILL_DRAGON | IM_FIRE | ESP_DRAGON | RES_FEAR +D:The weapon of Azaghal when he wounded Glaurung. It is deadly +D:when fighting dragons and is said to make the breaths of fire +D:completely harmless. + + +# The Set of Leather Gloves 'Cambeleg' + +N:52:'Cambeleg' +I:31:1:2 +W:10:6:5:36000 +P:1:0d0:8:8:15 +F:STR | CON | HIDE_TYPE | +F:FREE_ACT | SHOW_MODS +D:A hero's handgear that lends great prowess in battle. + + +# The Set of Leather Gloves 'Cammithrim' + +N:53:'Cammithrim' +I:31:1:0 +W:10:3:5:30000 +P:1:0d0:0:0:10 +F:FREE_ACT | RES_LITE | SUST_CON | LITE1 | ACTIVATE +F:SPECIAL_GENE +a:HARDCORE=BO_MISS_1 +D:These gloves glow so brightly as to light the way for their owner and cast +D:magical bolts with great frequency. + +# The Set of Gauntlets of Eregion (formerly 'Paurhach') + +N:54:of Eregion +I:31:2:4 +W:10:5:25:33000 +P:2:1d1:0:0:15 +F:RES_FIRE | ACTIVATE | +F:SUST_STR | STR | REGEN | SPELL_CONTAIN | WIELD_CAST +a:HARDCORE=BO_FIRE_1 +D:A fiery set of gauntlets that can even shoot fire from the user's +D:hands. Wrought by Curufin's people, they guard the wearer's +D:strength and enhance it. + +# The Set of Gauntlets of Nargothrond (formerly 'Paurnimmen') + +N:55:of Nargothrond +I:31:2:4 +W:10:5:25:33000 +P:2:1d1:0:0:15 +F:RES_COLD | ACTIVATE | +F:SUST_CON | CON | REGEN | SPELL_CONTAIN | WIELD_CAST +a:HARDCORE=BO_COLD_1 +D:A set of handgear so icy as to be able to fire frost bolts. Wrought by +D:Finrod Felagund himself, it is inscribed with runes that guard and +D:boost health. + +# The Set of Gauntlets of Lorien (formerly 'Pauraegen') + +N:56:of Lorien +I:31:2:4 +W:10:5:25:33000 +P:2:1d1:0:0:15 +F:RES_ELEC | ACTIVATE | FREE_ACT | +F:SUST_DEX | DEX | SPELL_CONTAIN | WIELD_CAST +a:HARDCORE=BO_ELEC_1 +D:A set of handgear wrought by the Galadhrim. Sparks surround it, enabling +D:the wearer to fire bolts of electricity. Ever has lightning improved and +D:protected agility, and these gauntlets are no exception. + +# The Set of Gauntlets of Ossiriand (formerly 'Paurnen') + +N:57:of Ossiriand +I:31:2:4 +W:10:5:25:33000 +P:2:1d1:0:0:15 +F:RES_ACID | ACTIVATE | +F:SUST_CHR | CHR | SPELL_CONTAIN | WIELD_CAST +a:HARDCORE=BO_ACID_1 +D:Mighty was the woodcraft of the Laiquendi, for they learned to control the +D:element of acid to a level theretofore unknown. This set of handgear is so +D:corrosive that it may fire bolts of acid. + +# The Set of Gauntlets 'Camlost' + +N:58:'Camlost' +I:31:2:-3 +W:10:20:25:0 +P:2:1d1:-11:-12:0 +F:STR | DEX | HIDE_TYPE | DRAIN_MANA | +F:RES_POIS | IM_FIRE | IM_COLD | RES_DISEN | RES_NETHER | FREE_ACT | +F:AGGRAVATE | SHOW_MODS | HEAVY_CURSE | TY_CURSE | TELEPORT | CURSED +D:A pair of gauntlets that sap combat ability, named after the empty hand +D:of Beren that once clasped a Silmaril. + + +# The Set of Cesti of Fingolfin + +N:59:of Fingolfin +I:31:5:4 +W:40:15:40:110000 +P:5:1d1:10:10:20 +F:DEX | HIDE_TYPE | LUCK +F:FREE_ACT | RES_ACID | ACTIVATE | SHOW_MODS +a:HARDCORE=BO_MISS_2 +Z:magic missile +D:The hand-sheathing of Fingolfin, warrior-king of Elves and Men, who gave +D:Morgoth seven mighty wounds and pain that will last forever. + + +# The Pair of Hard Leather Boots of Feanor + +N:60:of Feanor +I:30:3:15 +W:40:120:40:300000 +P:3:1d1:0:0:20 +F:SPEED | HIDE_TYPE | +F:RES_NEXUS | ACTIVATE +a:HARDCORE=SPEED +D:This wondrous pair of leather boots once sped Feanor, creator of the +D:Silmarils and the mightiest of the Eldar, along the Grinding Ice and to +D:Middle-earth at last. + + +# The Pair of Soft Leather Boots 'Dal-i-thalion' + +N:61:'Dal-i-thalion' +I:30:2:5 +W:10:25:20:40000 +P:2:1d1:0:0:15 +F:DEX | HIDE_TYPE | CHR | SUST_CHR | +F:ACTIVATE | FREE_ACT | +F:RES_NETHER | RES_CHAOS | RES_CONF | SUST_CON +a:HARDCORE=CURE_POISON +D:A pair of high-laced shoes, strong against the powers of corruption and +D:withering, that grant the wearer extraordinary agility. + + +# The Pair of Metal Shod Boots of Thror + +N:62:of Thror +I:30:6:3 +W:30:25:80:15000 +P:6:1d1:0:0:20 +F:STR | CON | HIDE_TYPE | SPEED | RES_FEAR | CLIMB +D:Sturdy footwear of leather and steel as enduring as the long-suffering +D:Dwarven King-in-exile who wore them. Of dwarven make, these boots will +D:make their wearer completely at home in the mountains. + + +# The Seeker Arrow of Bard +# This is, of course, from my 'Artifact Ammo' thread and doesn't need much +# explanation. It's rather nasty and deals 1000 or more damage on a +# normal hit to a dragon. :) Doesn't put a dent in Sky Drakes and Power +# Dragons, tho it's still good for helping to take down Smaug, Tiamat and +# the other dragon uniques. +# P+ changed name, rarity to 30 + +N:63:of Bard +I:17:2:0 +W:55:30:2:50000 +P:0:8d4:20:15:0 +F:SLAY_ANIMAL | SLAY_EVIL | SLAY_UNDEAD | SLAY_DEMON | +F:SLAY_ORC | SLAY_TROLL | SLAY_GIANT | SLAY_DRAGON | KILL_DRAGON | +F:BRAND_ACID | BRAND_ELEC | BRAND_FIRE | BRAND_COLD | BRAND_POIS +D:Deadliest of arrows, imbued with elemental strength, this shaft is +D:feared especially by the wyrmkin. + + +# The Main Gauche of Maedhros + +N:64:of Maedhros +I:23:5:3 +W:15:30:30:22500 +P:0:2d5:12:15:0 +F:INT | DEX | HIDE_TYPE | SPEED | SPECIAL_GENE +F:SLAY_TROLL | SLAY_GIANT | FREE_ACT | SEE_INVIS | SHOW_MODS +D:A short thrusting blade with a large guard worn by Maedhros the Tall, +D:eldest son of Feanor, and wielded with his left hand after the loss of +D:his right hand in the pits of Thangorodrim. + +# The Broken Dagger 'Angrist' + +N:65:'Angrist' +I:23:1:4 +W:25:80:12:150000 +P:0:2d4:10:15:5 +F:BRAND_ACID | BRAND_POIS | DEX | FREE_ACT | HIDE_TYPE | LUCK | RES_DARK | SEARCH | SEE_INVIS | SHOW_MODS | SLAY_EVIL | SLAY_ORC | SLAY_TROLL | STEALTH | SUST_DEX +D:The knife Beren Barahir`s son took from Curufin and with which he cut +D:out a Silmaril from the crown of Morgoth, The blade snapped and broke +D:when he tried to gain one more and the splint hit Morgoth at his chin. +D:It was made of Telchar the dwarf from Nogrod and it could cut through +D:stone. Even broken, it retains power. + +# The Dagger of Samwise + +N:66:of Samwise +I:23:4:0 +W:4:100:12:12000 +P:0:1d4:4:6:0 +F:ACTIVATE | BRAND_FIRE | LEVELS | LITE1 | RES_FIRE | SHOW_MODS +a:HARDCORE=BO_FIRE_1 +D:The blade of Samwise Gamgee, chosen by him from the hoard of the +D:Barrow-wights. A fiery dagger finely balanced for deadly throws. + +# The Dagger of Peregrin + +N:67:of Peregrin +I:23:4:0 +W:3:100:12:11000 +P:0:1d4:4:6:0 +F:ACTIVATE | BRAND_COLD | LEVELS | RES_COLD | SHOW_MODS +a:HARDCORE=BO_COLD_1 +D:The blade of Peregrin Took, chosen by him from the hoard of the +D:Barrow-wights. A frosty dagger finely balanced for deadly throws. + +# The Dagger of Meriadoc + +N:68:of Meriadoc +I:23:4:0 +W:5:100:12:13000 +P:0:1d4:4:6:0 +F:BRAND_ELEC | RES_ELEC | ACTIVATE | SHOW_MODS | LEVELS +a:HARDCORE=BO_ELEC_1 +D:The blade of Meriadoc Brandybuck, chosen by him from the hoard of +D:the Barrow-wights. A dagger covered in sparks and finely balanced +D:for deadly throws. + +# The Dagger of Rilia + +N:69:of Rilia +I:23:4:0 +W:5:40:12:35000 +P:0:2d4:4:3:0 +F:SLAY_ORC | RES_POIS | RES_DISEN | ACTIVATE | SHOW_MODS | BRAND_POIS +a:HARDCORE=BA_POIS_1 +D:A large stiletto dagger that glistens with odourless poison, to which the +D:wearer seems oddly immune. + + +# The Dagger 'Belangil' + +N:70:'Belangil' +I:23:4:2 +W:10:40:12:50000 +P:0:2d4:6:9:0 +F:DEX | HIDE_TYPE | SPEED | BLOWS | +F:BRAND_COLD | RES_COLD | +F:SEE_INVIS | SLOW_DIGEST | REGEN | +F:ACTIVATE | SHOW_MODS | BRAND_POIS +a:HARDCORE=BELANGIL +D:A frosty dagger surrounded in a nimbus of ice with a hilt of elk horn and +D:an edge to wound the wind. + + +# The Bastard Sword 'Calris' + +N:71:'Calris' +I:23:21:5 +W:30:15:140:100000 +P:0:5d4:-20:20:0 +F:CON | HIDE_TYPE | DRAIN_HP | +F:KILL_DRAGON | SLAY_EVIL | SLAY_DEMON | SLAY_TROLL | RES_DISEN | +F:AGGRAVATE | CURSED | HEAVY_CURSE | SHOW_MODS | ESP_DRAGON | ESP_DEMON | +F:AUTO_CURSE | +F:COULD2H +f:COULD2H +D:This sword has runes of power incised on its ornate hilt and a single +D:blood channel that gleams coldly blue as you grasp this mighty weapon of +D:peril. + + +# The Broad Sword 'Aranruth' + +N:72:'Aranruth' +I:23:16:4 +W:20:45:150:125000 +P:0:3d5:20:12:0 +F:STR | DEX | CON | SUST_CON | SUST_STR +F:REGEN | FREE_ACT | SEE_INVIS | +F:RES_CHAOS | RES_NETHER | HOLD_LIFE | RES_FEAR | +F:RES_COLD | +F:SLAY_DEMON | SLAY_EVIL | SLAY_DRAGON | SLAY_UNDEAD | +F:BRAND_COLD | +F:SLOW_DIGEST | SHOW_MODS | HIDE_TYPE | BLESSED +D:The beautiful sword of Thingol with a hilt of gold and silver inlay, +D:glistening icily enough to freeze the hearts of demons. You feel supple +D:and lightfooted as you hold it. + + +# The Broad Sword 'Glamdring' + +N:73:'Glamdring' +I:23:16:1 +W:20:20:150:40000 +P:0:2d5:10:15:0 +F:SEARCH | HIDE_TYPE | BLESSED | SLAY_DEMON | +F:SLAY_EVIL | BRAND_FIRE | SLAY_ORC | RES_FIRE | RES_LITE | LITE1 | +F:SLOW_DIGEST | SHOW_MODS | ESP_ORC | SPECIAL_GENE +D:This fiery, shining blade earned its sobriquet "Foe-Hammer" from dying orcs +D:who dared to come near hidden Gondolin. Inscribed upon the guard in Cirth +D:is the following -- +D:gûd daedheloth, dam an Glamhoth." - "Turgon King of Gondolin wields, has and +D:holds the sword Glamdring, foe of Morgoth's realm, hammer to the Din-horde." + +# The Quarterstaff of Thranduil [Replaces the 'Aeglin' sword in Theme] + +N:74:of Thranduil +I:21:3:0 +W:20:18:150:50000 +P:0:1d9:10:20:0 +F:BRAND_POIS | COULD2H | RES_POIS | SLAY_ANIMAL | HIDE_TYPE | SHOW_MODS | ESP_ANIMAL +f:COULD2H +D:The carven oak staff of the King of the Woodland Realm, +D:this weapon is a fighter's best friend in a forest. + +# The Broad Sword 'Orcrist' + +N:75:'Orcrist' +I:23:16:3 +W:20:20:150:40000 +P:0:2d5:10:15:0 +F:SEARCH | ESP_ORC | SLAY_DRAGON | ESP_DRAGON | RES_COLD | HIDE_TYPE | +F:SLAY_EVIL | BRAND_COLD | SLAY_ORC | RES_COLD | LITE1 | RES_DARK | +F:SLOW_DIGEST | SHOW_MODS +D:This coldly gleaming blade is called simply "Biter", by orcs who came to +D:know its power all too well. + +# The Two-Handed Sword 'Anglachel' + +N:76:'Anglachel' +I:23:25:2 +W:30:30:200:100000 +P:0:3d6:13:17:0 +F:STR | HIDE_TYPE | VORPAL | ESP_DRAGON | DRAIN_HP | +F:RES_FIRE | RES_POIS | BRAND_FIRE | BRAND_POIS | +F:KILL_DRAGON | SLAY_TROLL | FREE_ACT | SLOW_DIGEST | REGEN | SHOW_MODS | +F:MUST2H +f:MUST2H +D:A giant sword once wielded by mighty Turin, and a great dragonbane which +D:bathed in Glaurung's blood. Its blade once shone brightly, it can cleave +D:iron as though it is old wood. Beleg Cuthalion chose this sword from the +D:armoury of Thingol in Doriath. Turin son of Hurin slew his friend Beleg +D:with it by accident, and since then the blade is black and dull. + +# The Two-Handed Sword 'Zarcuthra' + +N:77:'Zarcuthra' +I:23:25:4 +W:30:180:250:205000 +P:0:4d6:19:21:0 +F:STR | CHR | INFRA | HIDE_TYPE | VORPAL | DRAIN_MANA | +F:KILL_DRAGON | SLAY_ANIMAL | SLAY_EVIL | BRAND_FIRE | +F:SLAY_UNDEAD | SLAY_DEMON | SLAY_TROLL | SLAY_GIANT | SLAY_ORC | +F:RES_FIRE | RES_CHAOS | FREE_ACT | SEE_INVIS | AGGRAVATE | SHOW_MODS | +F:MUST2H +f:MUST2H +D:Dark and deadly runes stand stark against the naked steel of this awesome +D:weapon, and you feel a stunning power of slaying and rending as you +D:slowly approach. + + +# The Dark Sword 'Mormegil' + +N:78:'Mormegil' +I:23:33:2 +W:30:15:250:0 +P:0:6d7:0:0:-20 +F:SPEED | IM_FIRE | RES_FIRE | BRAND_FIRE | RES_DISEN | RES_FEAR | +F:AGGRAVATE | CURSED | HEAVY_CURSE | SHOW_MODS | LEVELS | TY_CURSE | +F:BLOWS | SLAY_DRAGON | RES_CHAOS | ANTIMAGIC_50 | +F:DRAIN_MANA | DRAIN_HP | DRAIN_EXP +D:A foul, twisted sword with blackened spines and knobs, whose very name is a +D:curse upon the lips of Elves and Men. + + +# The Cutlass 'Gondricam' + +N:79:'Gondricam' +I:23:12:3 +W:20:8:110:28000 +P:0:1d7:10:11:0 +F:DEX | STEALTH | HIDE_TYPE | +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | FEATHER | +F:SEE_INVIS | REGEN | SHOW_MODS +D:Famed sea-defender of Lebennin. A short, slightly curved chopping blade +D:with a perfect edge shining cleanly in the sun, an object of hate to the +D:men of Umbar who met it in combat. + + +# The Executioner's Sword 'Crisdurian' + +N:80:'Crisdurian' +I:23:28:0 +W:40:15:260:111000 +P:0:4d5:18:19:0 +F:SLAY_DRAGON | SLAY_EVIL | SLAY_UNDEAD | SLAY_TROLL | SLAY_GIANT | +F:SLAY_ORC | SEE_INVIS | SHOW_MODS | VORPAL | BRAND_POIS | WOUNDING | +F:MUST2H +f:MUST2H +D:A giant's weapon, with a long blade tall and straight thrusting out from a +D:massive double-pronged hilt. On its blade are written doomspells against +D:both the living and undead. + +# The Long Sword 'Herugrim' - sword of Theoden +# Replaces 'Aglarang' in Theme + +N:81:'Herugrim' +I:23:17:2 +W:60:40:130:300000 +P:0:3d5:8:9:0 +F:ACTIVATE | ESP_EVIL | FREE_ACT | HIDE_TYPE | INT | RES_CONF | RES_DARK | SHOW_MODS | VORPAL +a:HARDCORE=CURE_INSANITY +D:The ancient blade of Theoden, King of the Mark. It was taken from +D:the king by Grima the Wormtongue, and hidden from him in a dusty +D:chest. It was once instrumental in restoring the King's wits from +D:evil bewitchment. + +# The Long Sword 'Ringil' + +N:82:'Ringil' +I:23:17:10 +W:20:120:130:300000 +P:0:4d5:22:25:0 +F:SPEED | HIDE_TYPE | RES_FEAR | BLESSED | +F:SLAY_EVIL | BRAND_COLD | SLAY_UNDEAD | KILL_DEMON | SLAY_TROLL | +F:FREE_ACT | RES_COLD | RES_LITE | LITE1 | SEE_INVIS | SLOW_DIGEST | REGEN | +F:ACTIVATE | SHOW_MODS +a:HARDCORE=BA_COLD_2 +D:The weapon of Fingolfin, High King of the Noldor; it shines like a column +D:of ice lit by light unquenchable. Morgoth came but unwillingly to meet it +D:of old; his lame foot will remind him of its might should he meet it again. + + +# The Long Sword 'Anduril' + +N:83:'Anduril' +I:23:17:4 +W:20:40:130:100000 +P:0:3d5:10:15:5 +F:STR | DEX | HIDE_TYPE | RES_FEAR | FREE_ACT | BLESSED | LUCK +F:SLAY_EVIL | BRAND_FIRE | SLAY_TROLL | SLAY_ORC | FREE_ACT | +F:RES_FIRE | SUST_DEX | SEE_INVIS | ACTIVATE | SHOW_MODS | LITE1 | +F:RES_DISEN | SPECIAL_GENE +a:HARDCORE=BA_FIRE_1 +D:The famed "Flame of the West", the sword that was broken and is forged +D:again. It glows with the essence of fire, its wearer is mighty in combat, +D:and no creature of Sauron can withstand it. It will never be stained or +D:broken even in defeat. Its pommel glows anew with the Quenya words -- +D:"Anar. Nanye Anduril i ne Narsil i macil Elendilo. Lercuvanten i moli +D:Mordoreo. Isil." - "Sun. I am Anduril who once was Narsil, sword of Elendil. +D:The slaves of Mordor shall flee from me. Moon." + +# The Long Sword 'Anguirel' + +N:84:'Anguirel' +I:23:17:2 +W:20:30:130:40000 +P:0:2d5:8:12:0 +F:STR | CON | SPEED | HIDE_TYPE | +F:SLAY_EVIL | BRAND_ELEC | SLAY_DEMON | FREE_ACT | RES_ELEC | +F:RES_LITE | RES_DARK | SEE_INVIS | SHOW_MODS | VORPAL | WOUNDING | +F:AGGRAVATE | CURSED +D:Forged of black galvorn by the Dark-Elven smith Eol, this blade has the +D:living lightning trapped inside. + + +# The Long Sword 'Elvagil' + +N:85:'Elvagil' +I:23:17:2 +W:20:8:130:20000 +P:0:2d5:5:7:0 +F:DEX | CHR | STEALTH | HIDE_TYPE | ESP_ORC | ESP_TROLL +F:SLAY_TROLL | SLAY_ORC | FEATHER | SEE_INVIS | SHOW_MODS +D:The "Singing Blade", whose wearer can slay Orcs and Trolls in the hidden +D:and secret places of the earth. + + +# The Rapier 'Forasgil' + +N:86:'Forasgil' +I:23:7:0 +W:15:8:40:15000 +P:0:1d6:12:19:0 +F:SLAY_ANIMAL | BRAND_COLD | RES_COLD | RES_LITE | SHOW_MODS +D:A slender, tapered blade whose wielder strikes icy blows with deadly +D:accuracy. + + +# The Sabre 'Careth Asdriag' + +N:87:'Careth Asdriag' +I:23:11:2 +W:15:8:50:25000 +P:0:2d7:6:8:0 +F:DEX | BLOWS | SPEED | CON | +F:SLAY_DRAGON | SLAY_ANIMAL | SLAY_TROLL | SLAY_GIANT | +F:SLAY_ORC | SHOW_MODS | ESP_ANIMAL +D:An heirloom of the Lords of Rhun far to the east, and a name of +D:dismay to creatures natural and unnatural. + +# The Short Sword 'Sting' + +N:88:'Sting' +I:23:10:2 +W:20:205:75:100000 +P:0:1d7:7:8:0 +F:BLOWS | CON | DEX | ESP_ORC | ESP_SPIDER | ESP_UNDEAD | FREE_ACT | +F:LEVELS | LITE1 | RES_LITE | SEE_INVIS | SHOW_MODS | SLAY_ANIMAL | +F:SLAY_EVIL | SLAY_ORC | SLAY_UNDEAD | SPEED | STR +D:The perfect size for Bilbo, and stamped forever by the courage he found +D:in Mirkwood, this sturdy little blade grants the wearer combat prowess +D:and survival abilities they did not know they had. The blade is inscribed +D:with Tengwar writing -- "Sting is my name, I am the spiders' bane." + +# The Scimitar 'Haradekket' + +N:89:'Haradekket' +I:23:18:2 +W:20:8:130:111111 +P:0:2d5:9:11:0 +F:INT | WIS | BLOWS | +F:SLAY_ANIMAL | SLAY_EVIL | SLAY_UNDEAD | SLAY_DRAGON | SLAY_DEMON | +F:RES_CHAOS | RES_DISEN | RES_NEXUS | +F:SEE_INVIS | BLESSED | +F:SHOW_MODS +D:A damascened scimitar that seems wondrously easy to hold. Famed in song as +D:the "Sickle of Harad", and a deadly foe to the undead. + + +# The Short Sword 'Gilettar' + +N:90:'Gilettar' +I:23:10:2 +W:20:8:80:35000 +P:0:1d7:3:7:0 +F:BLOWS | HIDE_TYPE | +F:SLAY_ANIMAL | SLOW_DIGEST | REGEN | SHOW_MODS | SEE_INVIS | RES_DISEN +D:A stubby blade worn by Beren, whose horn sounded of old in the glades of +D:Brethil. + +# The Blade of Chaos 'Daedheloth' + +N:91:'Daedheloth' +I:23:30:0 +W:70:25:180:250000 +P:0:6d5:18:28:-50 +F:KILL_DRAGON | SLAY_ANIMAL | SLAY_EVIL | BRAND_COLD | SLAY_TROLL | +F:SLAY_ORC | FREE_ACT | RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | +F:RES_CHAOS | SEE_INVIS | ESP_EVIL | AGGRAVATE | SHOW_MODS | +F:CHAOTIC | VORPAL | BRAND_FIRE | BRAND_POIS | SPECIAL_GENE +D:This weapon of wrath, cursed with a violent anger, dives hungrily +D:into the flesh of its enemies. It gathers shadows of death into its +D:owner as they inflict wounds that will never heal. + +# The Long Sword 'Sereghathol' + +N:92:'Sereghathol' +I:23:17:2 +W:50:30:150:250000 +P:0:5d5:32:32:0 +F:DEX | FREE_ACT | LEVELS | REGEN | SEE_INVIS | SLAY_EVIL | SLOW_DIGEST | SPEED | STR | VORPAL | WOUNDING +D:Blood-Sword it is called, after its thirst for the blood of foes. + +# The Beaked Axe of Dain Ironfoot + +N:93:of Dain Ironfoot +I:22:10:3 +W:20:15:180:40000 +P:0:2d6:8:10:0 +F:WIS | CON | HIDE_TYPE | +F:SLAY_DRAGON | ESP_EVIL | ESP_UNDEAD | SLOW_DIGEST | ACTIVATE | SHOW_MODS +a:HARDCORE=DRAIN_2 +D:The narrow axe head of this weapon, finely balanced by a crow's beak, +D:would pierce even the armour of Smaug, and its wielder becomes aware of +D:the minds of their enemies. + + +# The Glaive of Pain + +N:94:of Pain +I:22:13:0 +W:30:155:190:50000 +P:0:9d6:0:30:0 +F:SHOW_MODS | LEVELS | DRAIN_MANA | +F:COULD2H +f:COULD2H +D:The massive chopper that crowns this glaive glows blood-red and black; +D:fell spells of annihilation swirl and dance as you swing death's myrmidon +D:down. + + +# The Halberd 'Osondir' + +N:95:'Osondir' +I:22:15:3 +W:20:8:190:22000 +P:0:3d5:6:9:0 +F:CHR | HIDE_TYPE | +F:BRAND_FIRE | SLAY_UNDEAD | SLAY_GIANT | RES_FIRE | RES_SOUND | +F:FEATHER | SEE_INVIS | SHOW_MODS | ESP_GIANT | +F:COULD2H +f:COULD2H +D:Lordly and tall did Osondir stand against the wrath of giants, and +D:clear-eyed in barrows fell, wielding a halberd glowing ruby red. + + +# The Pike 'Til-i-arc' + +N:96:'Til-i-arc' +I:22:8:2 +W:20:15:160:32000 +P:0:2d5:10:12:10 +F:INT | HIDE_TYPE | +F:BRAND_COLD | BRAND_FIRE | SLAY_DEMON | SLAY_TROLL | SLAY_GIANT | ESP_GIANT +F:RES_FIRE | RES_COLD | SUST_INT | SLOW_DIGEST | SHOW_MODS | +F:COULD2H +f:COULD2H +D:Within this long thrusting spear lie the spirits of frost giants and fire +D:demons, who war forever, trapped by magely spells. + +# The Spear 'Aiglos' + +N:97:'Aiglos' +I:22:2:4 +W:15:45:50:180000 +P:0:3d6:15:25:5 +F:DEX | WIS | HIDE_TYPE | +F:BRAND_COLD | BRAND_ELEC | LITE1 | +F:SLAY_TROLL | SLAY_ORC | SLAY_GIANT | KILL_UNDEAD | +F:FREE_ACT | RES_COLD | RES_ELEC | RES_LITE | +F:SLOW_DIGEST | ACTIVATE | BLESSED | SHOW_MODS +a:HARDCORE=BA_ELEC_2 +D:The mighty spear of Gil-galad, famed as "Snow-point" in the songs of +D:Elves, against which all the foul corruptions of Sauron dashed in vain. +D:The spear is inscribed with Tengwar runes, reading "Gil-galad ech vae +D:vaegannen matha, / Aith heleg nin i orch gostatha; / Nin cíniel na +D:nguruthos / Hon ess nín istatha -- +D:well-made spear, / The Orc will fear my point of ice; / When he sees me, +D:in fear of death / he will know my name + +# The Spear of Caradhras + +N:98:of Caradhras +I:22:2:4 +W:15:45:50:77777 +P:0:4d6:15:15:0 +F:INT | WIS | SPEED | TUNNEL | INFRA | HIDE_TYPE | SEARCH | +F:BRAND_FIRE | +F:SLAY_GIANT | SLAY_EVIL | SLAY_DEMON | SLAY_UNDEAD | SLAY_DRAGON | +F:RES_FIRE | RES_LITE | HOLD_LIFE | RES_FEAR | FEATHER | ESP_GIANT | +F:SEE_INVIS | ACTIVATE | BLESSED | SHOW_MODS +a:HARDCORE=STONE_MUD +D:A magical spear, rumoured to have been forged by Orome himself +D:in the coldest reach of the cruel Redhorn. + +# The Spear 'Nimloth' + +N:99:'Nimloth' +I:22:2:3 +W:15:12:50:30000 +P:0:1d6:11:13:0 +F:STEALTH | RES_DARK | INFRA | SPEED | BLESSED | +F:BRAND_COLD | SLAY_UNDEAD | RES_COLD | SEE_INVIS | SHOW_MODS +D:A thin spike of thrice-forged steel caps a straight sylvan shaft cut from +D:a legendary tree; spells to break the will of the undead and strike cold +D:fear into the hearts of foes lie on this perfectly balanced spear. + + +# The Lance of Eorlingas + +N:100:of Eorlingas +I:22:20:2 +W:20:23:360:55000 +P:0:3d8:3:21:0 +F:STR | DEX | SPEED | HIDE_TYPE | RES_FEAR | +F:SLAY_EVIL | SLAY_TROLL | SLAY_ORC | SEE_INVIS | SHOW_MODS | +F:MUST2H +f:MUST2H +D:"Forth Eorlingas!". To the field of Cormallen came Eorl the Young +D:to save beleaguered Gondor, and from his lance fled massive trolls +D:and dire wolves. + + +# The Great Axe of Durin + +N:101:of Durin +I:24:25:3 +W:30:90:230:150000 +P:0:4d4:10:20:15 +F:STR | CON | TUNNEL | HIDE_TYPE | ESP_EVIL | RES_FEAR | +F:SLAY_DRAGON | KILL_DEMON | SLAY_TROLL | SLAY_ORC | FREE_ACT | +F:RES_ACID | RES_FIRE | RES_LITE | RES_DARK | RES_CHAOS | SHOW_MODS | +F:BRAND_ACID | BRAND_FIRE | +F:MUST2H +f:MUST2H +D:The twin massive axe heads of this ancient demon's dread gleam with +D:mithril inlay, which tell sagas of endurance, invoking the powers of +D:Khazad-dum to protect the wearer and slay all evils found underground. + + +# The Great Axe of Eonwe + +N:102:of Eonwe +I:24:25:2 +W:30:120:230:200000 +P:0:4d4:15:18:8 +F:STR | INT | WIS | DEX | CON | CHR | HIDE_TYPE | +F:SLAY_EVIL | BRAND_COLD | KILL_DEMON | SLAY_UNDEAD | ESP_NONLIVING +F:SLAY_ORC | FREE_ACT | IM_COLD | SEE_INVIS | ACTIVATE | +F:BLESSED | SHOW_MODS +a:HARDCORE=MASS_GENO +D:The axe of Eonwe, leader of the Hosts of the West before the gates of +D:Thangorodrim, strikes with icy wrath at the undead, disperses hosts of +D:evil at a word, and grants Maia-like powers of body and mind. + + +# The Battle Axe of Balli Stonehand + +N:103:of Balli Stonehand +I:22:22:3 +W:30:15:170:90000 +P:0:3d8:8:11:5 +F:STR | CON | STEALTH | HIDE_TYPE | ESP_NONLIVING +F:SLAY_DEMON | SLAY_TROLL | SLAY_ORC | FREE_ACT | +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_BLIND | FEATHER | +F:SEE_INVIS | REGEN | SHOW_MODS | +F:COULD2H +f:COULD2H +D:The twin blades of this weapon were forged in Belegost, and powerful forces +D:to resist and endure lie ready for he who shall wield it once more. + + +# The Battle Axe 'Lotharang' + +N:104:'Lotharang' +I:22:22:1 +W:30:15:170:21000 +P:0:2d8:4:3:0 +F:STR | DEX | HIDE_TYPE | +F:SLAY_TROLL | SLAY_ORC | ACTIVATE | SHOW_MODS +a:HARDCORE=CURE_MW +D:A superbly crafted double-bladed axe that slays the creatures of earth and +D:allows rapid recovery from their blows. + + +# The Lochaber Axe 'Mundwine' -> of the Dwarves + +N:105:of the Dwarves +I:22:28:10 +W:30:8:250:80000 +P:0:3d8:12:17:0 +F:SLAY_EVIL | TUNNEL | INFRA | SEARCH | SLAY_GIANT | +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_FEAR | +F:SHOW_MODS | +F:COULD2H +f:COULD2H +D:A massive axe with twin razor-sharp heads, so large that it usually +D:requires two hands to wield, intricately engraved in gold with spells +D:to ward off the elements and smite evil. + +# The Broad Axe 'Barukkheled' + +N:106:'Barukkheled' +I:24:11:3 +W:20:8:160:50000 +P:0:2d6:13:19:0 +F:CON | HIDE_TYPE | +F:SLAY_EVIL | SLAY_TROLL | SLAY_GIANT | SLAY_ORC | +F:SEE_INVIS | SHOW_MODS | +F:COULD2H +f:COULD2H +D:A royal heirloom of the southern coast, strong in combat against evil +D:creatures of the earth. + +# The Broad Sword 'Guthwine' - sword of Eomer +# Replaces the Trident of Wrath in Theme + +N:107:'Guthwine' +I:23:16:1 +W:30:10:150:45000 +P:0:2d6:6:7:0 +F:CRIT | ESP_ORC | HIDE_TYPE | LITE1 | RES_BLIND | RES_FEAR | +F:SHOW_MODS | SLAY_ORC | WOUNDING +D:The sword of Eomer, son of Eomund, leader of the Riders of the Mark. +D:As one flashed this sword with Anduril during a battle long ago. +D:Legendary are its powers in the rallying of desperate troops. + +# The Trident of Osse + +N:108:of Osse +I:22:5:4 +W:30:90:70:120000 +P:0:4d8:15:19:0 +F:DEX | HIDE_TYPE | +F:SLAY_DRAGON | SLAY_ANIMAL | FREE_ACT | HOLD_LIFE | IM_ACID | +F:RES_NETHER | SEE_INVIS | SLOW_DIGEST | REGEN | ACTIVATE | +F:BLESSED | SHOW_MODS | WATER_BREATH +a:HARDCORE=TELE_AWAY +D:The awesome weapon imbued with some of the power of the Vala Ulmo, +D:Lord of Waters. It allows the wearer to laugh in scorn at the dread +D:powers of the undead, and be utterly in command of the element of water. + +# The Scythe 'Avavir' + +N:109:'Avavir' +I:22:17:3 +W:40:8:250:18000 +P:0:5d3:8:8:10 +F:DEX | CHR | HIDE_TYPE | +F:BRAND_COLD | BRAND_FIRE | FREE_ACT | RES_FIRE | RES_COLD | +F:RES_LITE | SEE_INVIS | ACTIVATE | SHOW_MODS | +F:COULD2H +f:COULD2H +a:HARDCORE=RECALL +D:With elemental powers whose struggles turn this weapon red and purest +D:white, this shining reaper bears within it a power of going forth and +D:returning. + +# The Long Sword of Dernhelm - from T-Plus by Ingeborg S. Norden +# Replaces the Long Sword of the Dawn in Theme + +N:110:of Dernhelm +I:23:17:5 +W:70:50:150:250000 +P:0:3d5:20:25:0 +F:BLESSED | ESP_UNIQUE | FREE_ACT | HIDE_TYPE | HOLD_LIFE | KILL_UNDEAD | +F:LITE1 | LUCK | RES_DISEN | RES_FEAR | RES_MORGUL | SEE_INVIS | +F:SHOW_MODS | SLAY_EVIL | SPEED | STEALTH | VORPAL | WOUNDING | SPECIAL_GENE +D:Eomer's sister Eowyn once wielded this shining sword when she +D:battled the Witch-King of Angmar, hiding her true identity to +D:join the battle. Others are less likely to notice the wielder +D:immediately. Eowyn's sword also allowed her to move swiftly, +D:sense powerful enemies, inflict terrible wounds, and partly +D:withstand the worst attacks of the Nazgul. + +# The Mighty Hammer 'Grond' + +N:111:'Grond' +I:21:50:2 +W:100:1:1000:500000 +P:0:9d9:25:25:10 +F:KILL_DRAGON | SLAY_ANIMAL | SLAY_EVIL | IMPACT | KILL_UNDEAD | NO_MAGIC | +F:KILL_DEMON | SLAY_TROLL | SLAY_ORC | RES_ACID | RES_ELEC | RES_FIRE | +F:RES_COLD | SEE_INVIS | ESP_ALL | AGGRAVATE | SHOW_MODS | INSTA_ART | +F:LEVELS | ACTIVATE | SPECIAL_GENE | +F:MUST2H +f:MUST2H +a:HARDCORE=GROND +D:The mighty Hammer of the Underworld, blackened by doomspells of shattering, +D:whose wielder holds the lives of all Morgoth's servants in his hand. + +# The Flail 'Totila' + +N:112:'Totila' +I:21:13:2 +W:20:8:150:55000 +P:0:3d6:6:8:0 +F:STEALTH | +F:SLAY_EVIL | BRAND_FIRE | RES_FIRE | RES_CONF | ACTIVATE | +F:SHOW_MODS | LITE1 | +F:COULD2H +f:COULD2H +a:HARDCORE=CONFUSE +D:A flail whose head befuddles those who stare as you whirl it around, and +D:becomes a fiery comet as you bring it down. + + +# The Two-Handed Flail 'Thunderfist' + +N:113:'Thunderfist' +I:21:18:4 +W:45:38:300:160000 +P:0:3d6:5:18:0 +F:STR | CON | HIDE_TYPE | RES_FEAR | +F:SLAY_ANIMAL | BRAND_FIRE | BRAND_ELEC | SLAY_TROLL | SLAY_ORC | +F:RES_ELEC | RES_FIRE | RES_DARK | SHOW_MODS | +F:MUST2H +f:MUST2H +D:The long-lost weapon of Kzurin, Dwarven champion of ancient Belegost, +D:with runes of strength in its handle, and flames and sparks that roar and +D:crackle around its massive head. + +# The Morning Star 'Maegnas-in-sereg' + +N:114:'Maegnas-in-sereg' +I:21:12:4 +W:20:30:150:30000 +P:0:2d6:8:22:0 +F:STR | HIDE_TYPE | BRAND_POIS | +F:SLAY_ANIMAL | SLAY_TROLL | SLAY_ORC | RES_NEXUS | SEE_INVIS | +F:SHOW_MODS +D:You feel strong and firm of foot as you whip the chain-suspended spiked orb +D:around - and bathe it in the blood of your foes. + +# The Morning Star 'Naurgil' + +N:115:'Naurgil' +I:21:12:0 +W:20:100:150:35000 +P:0:2d6:5:7:2 +F:BRAND_FIRE | IM_FIRE | ACTIVATE | SHOW_MODS | LITE1 +a:HARDCORE=FIRESTAR +D:A famed battle-lord of old, with a ruddy head, coloured as embers are that +D:can yet rise up in wrath. + + +# The Mace 'Taratol' + +N:116:'Taratol' +I:21:5:0 +W:20:15:200:50000 +P:0:3d4:12:12:0 +F:KILL_DRAGON | BRAND_ELEC | IM_ELEC | ACTIVATE | SHOW_MODS | +F:COULD2H +f:COULD2H +a:HARDCORE=SPEED +D:A great ridged mace that calls around you a nimbus of living lightning; +D:you remain utterly untouched even as fat sparks arc around your +D:fingers and eyebrows. + +# The War Hammer of Gamil Zirak + +N:117:of Gamil Zirak +I:21:8:4 +W:40:75:120:250000 +P:0:9d3:19:21:5 +F:WIS | TUNNEL | HIDE_TYPE | RES_FEAR | +F:KILL_DRAGON | SLAY_EVIL | BRAND_ELEC | SLAY_UNDEAD | SLAY_DEMON | +F:FREE_ACT | RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_NEXUS | +F:SEE_INVIS | SHOW_MODS | +F:COULD2H +f:COULD2H +D:Gamil Zirak was a great craftsman, the master of Telchar of Nogrod. +D:This weapon was rescued from Thingol's treasury, and it is rumoured +D:that its wielder need not fear dragons or other fell beings of the +D:Dark. + +# The Quarterstaff 'Nar-i-vagil' + +N:118:'Nar-i-vagil' +I:21:3:3 +W:20:18:150:70000 +P:0:1d9:10:20:0 +F:INT | HIDE_TYPE | +F:SLAY_ANIMAL | BRAND_FIRE | RES_FIRE | SHOW_MODS | +F:COULD2H +f:COULD2H +D:Named for a fiery star and set with gems of great worth binding mystic +D:virtues of protection and thought. + + +# The Quarterstaff 'Eriril' + +N:119:'Eriril' +I:21:3:4 +W:20:18:150:20000 +P:0:1d9:3:5:0 +F:INT | WIS | HIDE_TYPE | ESP_EVIL | SPELL_CONTAIN | WIELD_CAST +F:SLAY_EVIL | RES_LITE | SEE_INVIS | ACTIVATE | SHOW_MODS +a:HARDCORE=ID_PLAIN +D:The radiant golden staff of an Istari of legend, this wizard's companion +D:grants keen sight and the knowledge of many hidden things. + + +# The Quarterstaff of Olorin + +N:120:of Olorin +I:21:3:4 +W:30:105:150:140000 +P:0:2d9:10:13:0 +F:INT | WIS | CHR | HIDE_TYPE | SEARCH | BRAND_FIRE | +F:SLAY_EVIL | BRAND_FIRE | SLAY_TROLL | SLAY_ORC | SPELL_CONTAIN | WIELD_CAST +F:HOLD_LIFE | RES_FIRE | RES_NETHER | SEE_INVIS | ACTIVATE | SHOW_MODS +a:HARDCORE=DETECT_XTRA +D:A staff tall and sturdy, with rough-hewn runes that invoke the element of +D:Earth, and which strikes down all creatures who live in the shadow of +D:mountains. + +# The Mace of Disruption 'Nguruthos' + +N:121:'Nguruthos' +I:21:20:6 +W:80:38:400:444444 +P:0:7d8:18:18:0 +F:STR | TUNNEL | HIDE_TYPE | NO_TELE | DRAIN_MANA | +F:SLAY_DRAGON | SLAY_ANIMAL | SLAY_EVIL | KILL_UNDEAD | BRAND_FIRE | +F:IM_FIRE | RES_DARK | RES_CHAOS | RES_DISEN | AGGRAVATE | +F:SHOW_MODS | BRAND_POIS | VAMPIRIC | +F:MUST2H +f:MUST2H +D:A weapon so massive it seems beyond the strength of mortals, yet you feel +D:the might of giants within you as you heft it. As you grip the handle +D:of ebony and steel, coronas of fire blaze and mighty spells to preserve +D:magic activate around you. It is named 'Fear of Death' - you wield the +D:Fear of Dragons and the Despair of the Undead. + +# The Lucerne Hammer 'Turmil' + +N:122:'Turmil' +I:21:10:4 +W:20:15:120:30000 +P:0:2d5:10:6:8 +F:WIS | INFRA | HIDE_TYPE | +F:BRAND_COLD | SLAY_ORC | RES_COLD | RES_LITE | REGEN | +F:ACTIVATE | SHOW_MODS | ESP_ORC | ESP_TROLL | ESP_GIANT | +F:COULD2H +f:COULD2H +a:HARDCORE=TURMIL +D:Wielded by the High Priest of Meneltarma, this great mace gleams coldly as +D:though moonlit, and it can strike as mighty a blow spiritually as +D:physically. + + +# The Whip of Gothmog + +N:123:of Gothmog +I:21:2:-2 +W:20:15:120:100000 +P:0:3d6:15:16:0 +F:INT | DEX | INFRA | HIDE_TYPE | DRAIN_HP | HEAVY_CURSE | +F:CURSED | AGGRAVATE | BRAND_FIRE | SLAY_ANIMAL | SLAY_DEMON | +F:RES_FIRE | ESP_SPIDER | VORPAL | RES_LITE | LITE1 | REGEN | +F:ESP_DEMON | WOUNDING | SHOW_MODS +D:With this unbearably bright whip of flame, the Balrog Gothmog has become +D:known for never having lost in combat. + + +# The Long Bow 'Belthronding' + +N:124:'Belthronding' +I:19:13:3 +W:40:20:40:35000 +P:0:0d0:20:22:0 +F:DEX | STEALTH | HIDE_TYPE | +F:RES_DISEN | XTRA_SHOTS | SHOW_MODS +D:The great bow of Beleg, made of black yew and strung with elven hair that +D:faintly shines a pale clear gold. + + +# The Long Bow of Bard + +N:125:of Bard +I:19:13:2 +W:30:20:40:20000 +P:0:0d0:17:19:0 +F:DEX | HIDE_TYPE | ESP_DRAGON | LUCK +F:FREE_ACT | XTRA_MIGHT | SHOW_MODS +D:The great yew bow of grim-faced Bard, who shot the mightiest arrow that +D:songs record. + + +# The Light Crossbow 'Cubragol' + +N:126:'Cubragol' +I:19:23:10 +W:50:25:110:50000 +P:0:0d0:10:14:0 +F:SPEED | HIDE_TYPE | +F:RES_FIRE | ACTIVATE | SHOW_MODS +a:HARDCORE=CUBRAGOL +D:A crossbow that grants fiery speed to he who finds it, and from which +D:shoot bolts that blaze with flame unquenchable. + +# The Mage Staff of Manwe +# The ULTIMATE "weapon" for a mage + +N:127:of Manwe +I:6:1:12 +W:127:220:20:9000000 +P:0:1d4:-19:-19:0 +F:INT | CHR | WIS | MANA | SPELL | ACTIVATE | LUCK | +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | SPECIAL_GENE | +F:SEE_INVIS | ESP_EVIL | ESP_DEMON | NEVER_BLOW | INFRA | +F:PRECOGNITION | IM_FIRE | ULTIMATE | SPELL_CONTAIN | WIELD_CAST | +F:COULD2H +f:COULD2H +a:HARDCORE=GANDALF +D:A simple, wooden wizard's staff. Unremarkable in all aspects... +D:except that it pulses with overwhelming power. + +# Boomerang Artifacts + +# The Metal Boomerang of Beor + +N:128:of Beor +I:15:4:4 +W:20:10:20:40000 +P:0:4d5:8:12:0 +F:DEX | SPEED | +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD +D:Beor's boomerang makes its wielder as agile as the winds, +D:and as hard to harm. + + +# The Metal Boomerang 'Glimdrir' + +N:129:'Glimdrir' +I:15:4:3 +W:40:20:20:60000 +P:0:5d5:15:16:0 +F:DEX | SPEED | FREE_ACT | BRAND_POIS | SLAY_EVIL | SLAY_UNDEAD | REGEN +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_SOUND | NO_TELE | CURSED +D:A powerful boomerang that makes one agile and fast, with a thirst for +D:evil and undead creatures, but demands its wielder not teleport, for fear +D:of desertion. + + +# The Robe of Incanus [aka Gandalf] + +N:130:of Incanus +I:36:2:3 +W:30:20:20:60000 +P:2:0d0:0:0:20 +F:INT | WIS | SEARCH | HIDE_TYPE | SPELL_CONTAIN | WIELD_CAST +F:SUST_INT | SUST_WIS | FREE_ACT | SEE_INVIS | +F:RES_ACID | RES_ELEC | IM_FIRE | RES_COLD +Z:weigh magic +D:Gandalf's long, flowing robe. It provides insight and allows the +D:wearer to see things not seen by all. + + +# The Sling of the Thain + +N:131:of the Thain +I:19:2:4 +W:40:20:40:35000 +P:0:0d0:15:15:0 +F:HIDE_TYPE | DEX | CON +F:RES_NETHER | XTRA_SHOTS | XTRA_MIGHT | SHOW_MODS +D:This sling was crafted by Faramir I, Thain of the Shire, just in case +D:the nasties of his father's stories ever dare to enter the Shire again. + +# The Small Metal Shield of Gimli + +N:132:of Gimli +I:34:3:3 +W:40:3:65:80000 +P:3:0d0:9:10:40 +F:INT | CON | RES_FEAR | HIDE_TYPE | IM_FIRE | RES_SHARDS +Z:find secret passages +D:A gift from the King of Rohan to Gimli the Dwarf, this shield +D:combines the cunning and stamina of Gimli Elf-friend, Gimli the +D:Lock-bearer. + +# The Bearded Axe of Gimli + +N:133:of Gimli +I:24:3:2 +W:35:60:35:65000 +P:0:1d6:5:15:0 +F:STR | BLOWS | LEVELS | SLAY_ORC | FREE_ACT | VORPAL | +F:ESP_UNDEAD | ESP_NONLIVING | COULD2H +f:COULD2H +D:"Gimli sensed the Dead behind following, but he continued on +D:after Aragorn." The trusty axe of Gimli son of Gloin, one of +D:the Nine Walkers of old. + +# The Whip 'Lasher' + +N:134:'Lasher' +I:21:2:3 +W:20:5:30:50000 +P:0:1d6:12:15:0 +F:DEX | BLOWS | HIDE_TYPE | +F:SLAY_ANIMAL | SLAY_ORC | BRAND_POIS | VORPAL | +F:RES_POIS | FREE_ACT | ESP_ORC +D:A powerful whip that is deadly against orcs. It poisons your foes +D:and is said to go "snicker snack". + +# The Harp of Thorin + +N:135:of Thorin +I:14:59:2 +W:50:10:30:40000 +P:0:1d1:0:0:0 +F:ACTIVATE | CHR | INFRA | INSTA_ART | LUCK | STEALTH | SUST_CHR | TUNNEL +a:HARDCORE=CHARM_OTHERS +Z:remove fear +D:This magical instrument once belonged to Thorin Oakenshield, +D:a mighty dwarf warrior of old. The sounds emanating from it +D:once gave a frightened hobbit a glimpse of beauty and helped +D:allay his fears, and to this day the harp preserves its magical +D:powers to encourage when all seems horribly wrong. + +# The Mithril Helm of Thorin + +N:136:of Thorin +I:32:8:3 +W:40:5:20:55000 +P:10:2d4:0:0:0 +F:ACTIVATE | DEX | HIDE_TYPE | HOLD_LIFE | REGEN | RES_FEAR | SUST_CON | SUST_DEX | SUST_STR +a:HARDCORE=TERROR +D:Mighty was Thorin Oakenshield as he emerged from the Gate of the +D:Lonely Mountain on the day of the Battle of the Five Armies, clad +D:in shining armour, part of which was this helm. He gleamed like +D:gold in the dying fire of the day, red light leapt from his +D:eyes, and his foes were terrified at the mere sight of him. + +# The Harp of Maglor + +N:137:of Maglor +I:14:59:3 +W:60:10:20:100000 +P:0:3d4:0:0:0 +F:CHR | SPEED | WIS | SEE_INVIS | RES_SOUND | STEALTH | LUCK +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | ESP_UNIQUE +D:This harp that once belonged to Maglor makes those who use it seem +D:more forceful and convincing. It is also said that those who have +D:used it found themselves walking faster, as if to an unheard beat. + + +# The Drum of the Sky + +N:138:of the Sky +I:14:58:2 +W:40:10:15:80000 +P:0:3d4:0:0:0 +F:CHR | SPEED | WIS | SEE_INVIS | RES_SOUND | STEALTH | LUCK +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD +D:The drum is decorated with the images of the stars, the clouds, the +D:Sun guided by Arien and the Moon with Tilion. It imparts to the +D:wearer an echo of the beauty of the sky, and protects him from the +D:elements day or night. The beat of the drum marks the passage of +D:time, and will make time pass differently for the wearer. + + +# The Harp of Daeron + +N:139:of Daeron +I:14:59:1 +W:20:10:10:50000 +P:0:3d4:0:0:0 +F:CHR | SPEED | WIS | RES_SOUND | STEALTH | LUCK +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD +D:A pretty harp that makes those who play it beautiful, wise and +D:fast. + + +# The Dwarven Pick of Erebor + +N:140:of Erebor +I:20:6:5 +W:50:15:200:55000 +P:0:3d4:5:0:0 +F:STR | TUNNEL | SUST_STR | HIDE_TYPE | LITE1 | ACTIVATE | CLIMB +F:RES_CHAOS | RES_LITE | RES_DARK +a:HARDCORE=EREBOR +D:A pick that provides a magical light by which to see while tunnelling. + + +# The Drum of the Druedain + +N:141:of the Druedain +I:14:58:4 +W:19:10:15:10000 +P:0:3d4:0:0:0 +F:ACTIVATE | STEALTH | SEARCH | INFRA | RES_POIS | RES_DARK +a:HARDCORE=DRUEDAIN +D:The fabled Drum of the Druedain that will protect those who play it +D:from darkness and poison attacks. It also aids in the seeing of +D:warm-blooded creatures. + + +# The Horn of Rohan + +N:142:of Rohan +I:14:60:2 +W:14:10:15:80000 +P:0:3d4:0:0:0 +F:ACTIVATE | CHR | WIS | ESP_DRAGON +a:HARDCORE=ROHAN +D:A horn carved from the bones of the Dragon of Ered-Mithrin, this +D:heirloom of the House of Eorl bestows to its user the gifts of +D:courage and command. + + +# The Horn of Helm + +N:143:of Helm +I:14:60:2 +W:16:10:15:15000 +P:0:3d4:0:0:0 +F:ACTIVATE | STR | CON | IM_COLD | RES_NETHER | RES_FEAR +a:HARDCORE=HELM +D:Heedless of cold, fearless of darkness -- besiegers fled at the wind +D:of the solitary coming of King Helm Hammerhand, proclaimed by a single +D:horn-blast in the dead of winter. + + +# The Horn of Boromir + +N:144:of Boromir +I:14:60:3 +W:18:10:15:18000 +P:0:3d4:0:0:0 +F:ACTIVATE | STR | CON | RES_FEAR | RES_FIRE | AGGRAVATE +a:HARDCORE=BOROMIR +D:The great horn made of the horns of kine of Araw. It is inlaid with silver +D:and gold signs; when blown, it can be heard for miles over. The horn gives +D:courage and endurance to its wearer, provided that secrecy is not desired. +D:"Loud and clear it sounds in the valleys of the hills... and then let all +D:the foes of Gondor flee!" + +# The Lochaber Axe of Gothmog, which slew Fingon + +N:145:of Gothmog +I:22:28:-4 +W:30:8:250:30000 +P:0:3d8:14:19:0 +F:BRAND_FIRE | IM_FIRE | CHR | ACTIVATE | SHOW_MODS | CURSED | TY_CURSE +a:HARDCORE=AXE_GOTHMOG +D:The black axe of Gothmog, which struck Fingon at Nirnaeth. Mighty +D:spells of evil make it unsafe in any hands but those of its original wielder. + + +# The Seeker Arrow of Gondor + +N:146:of Gondor +I:17:2:0 +W:20:5:3:25000 +P:0:10d8:10:20:0 +F:SLAY_EVIL | SLAY_DEMON +D:An arrow that was created to rid the world of demons. + +# The Long Sword of Tulkas +# The ULTIMATE weapon for a Swordmaster class + +N:147:of Tulkas +I:23:17:10 +W:127:220:130:9000000 +P:0:5d6:21:26:50 +F:LIFE | CON | CHR | LUCK +F:SUST_STR | SUST_INT | SUST_WIS | SUST_DEX | SUST_CON | SUST_CHR | +F:BRAND_FIRE | BRAND_COLD | BRAND_ELEC | VORPAL | IM_COLD | +F:SLAY_EVIL | SLAY_UNDEAD | SLAY_DEMON | SLAY_TROLL | SLAY_DEMON | +F:FREE_ACT | RES_FIRE | RES_DARK | LITE1 | SEE_INVIS | SLOW_DIGEST | REGEN | +F:ACTIVATE | SHOW_MODS | BLESSED | +F:PRECOGNITION | NO_MAGIC | ULTIMATE | SPECIAL_GENE +a:HARDCORE=ERU +D:A warm light bathes this translucent blade. The power of the fates are +D:at the command of its wielder as the weapon passes Supreme Judgment on +D:the inhabitants of Angband. + + +# The Robe of Great Luck + +N:148:of Great Luck +I:36:2:60 +W:50:120:20:60000 +P:2:0d0:0:0:0 +F:LUCK | HIDE_TYPE | +F:FREE_ACT | DRAIN_HP | DRAIN_MANA +D:A powerful wizard once created this robe to grant him incredible luck.... +D:It seems he forgot to wear it. + + +# The Sling of Farmer Maggot + +N:149:of Farmer Maggot +I:19:2:2 +W:10:10:5:20000 +P:0:0d0:20:0:0 +F:INFRA | SEARCH | HIDE_TYPE | +F:XTRA_SHOTS | SHOW_MODS | ACTIVATE | SPECIAL_GENE +a:SPELL=Artifact Maggot +D:This ordinary seeming leather sling has been raised to legendary +D:status amongst generations of hobbit children. Farmer Maggot's +D:ability to notice and strike any mushroom thief anywhere within +D:his patch almost keeps young poachers at bay, but once they get +D:within range they soon flee for less painful pastures, frequently +D:with rounded pebbles stinging their backsides... + + +# The Long Sword of Angmar (a.k.a. anti-Ringil) +# The next time someone wields an unidentified Long Sword (4d5) ... + +N:150:of Angmar +I:23:17:-10 +W:20:40:130:30000 +P:0:4d5:-22:-25:0 +F:SPEED | STR | WIS | CHR | ESP_UNDEAD +F:BRAND_FIRE | SEE_INVIS | SLOW_DIGEST | FREE_ACT | +F:VAMPIRIC | NO_TELE | AGGRAVATE | WRAITH | INVIS | +F:CURSED | HEAVY_CURSE | DG_CURSE | SHOW_MODS | CLONE +D:Dark flames wreath the naked steel of the Witch-King of Angmar. +D:A mighty curse to all those who wield it apart from its master, +D:the torture of the wraithworld awaits those who dare. + + +# The Seeker Bolt of Feanor + +N:151:of Feanor +I:18:2:0 +W:127:220:130:100000 +P:0:5d5:5:6:0 +F:BRAND_COLD | BRAND_FIRE | BRAND_ELEC | BRAND_ACID | BRAND_POIS | +F:SLAY_DRAGON | SLAY_GIANT | SLAY_TROLL | KILL_UNDEAD | SLAY_ORC | +F:SLAY_DEMON | SLAY_EVIL | SPECIAL_GENE +D:Made during the war against Morgoth by Feanor, this powerful +D:bolt is the bane of Morgoth's power, and has especial strength +D:against those foes who are already dead. + +# The Heavy Crossbow of Orome +# The ULTIMATE crossbow for a crossbow-master + +N:152:of Orome +I:19:24:5 +W:127:220:130:8000000 +P:0:0d0:36:28:0 +F:CON | DEX | ESP_EVIL | ESP_ORC | ESP_TROLL | FLY | FREE_ACT | IM_ELEC | INFRA | INVIS | LUCK | NO_MAGIC | PRECOGNITION | REFLECT | RES_BLIND | RES_CHAOS | RES_CONF | RES_DISEN | SEE_INVIS | SLOW_DIGEST | SPECIAL_GENE | SPEED | STEALTH | SUST_CHR | SUST_CON | SUST_DEX | SUST_INT | SUST_STR | SUST_WIS | ULTIMATE | XTRA_MIGHT | XTRA_SHOTS +D:A crossbow handcrafted by Aule for the Huntsman of the Valar during +D:the first pursuit of Melkor Bauglir. + +# The Soft Leather Armour of the Sandworm + +N:153:of the Sandworm +I:36:4:5 +W:30:3:80:65000 +P:30:0d0:0:0:0 +F:RES_POIS | RES_ELEC | RES_FIRE | RES_ACID | SPECIAL_GENE +F:TUNNEL | STR | STEALTH | INFRA | ESP_ANIMAL +D:This powerful piece of armour was made using the remains of +D:the Sandworm Queen. + +# The Lochaber Axe 'Lhugdagnir' + +N:154:'Lhugdagnir' +I:22:28:2 +W:70:20:260:33000 +P:0:3d8:20:20:0 +F:BLOWS | KILL_DRAGON | RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | +F:RES_POIS | SHOW_MODS +D:Forged by the Dwarves to defend their home of Khazad-dum from dragons, +D:this axe has been lost to time... until now. + +# The Light War Axe 'Cam-tal-crist' + +N:155:'Cam-tal-crist' +I:24:8:4 +W:15:3:140:12000 +P:0:2d5:12:15:0 +F:DEX | VORPAL | HIDE_TYPE | SHOW_MODS | WOUNDING +D:The Petty-dwarves of Bathak forged this blade, and it shares their thirst +D:for blood. + + +# The Broad Axe 'Orchast' + +N:156:'Orchast' +I:24:11:4 +W:15:2:170:12000 +P:0:2d7:20:14:0 +F:DEX | SEARCH | SLAY_ORC | ACTIVATE | HIDE_TYPE | SHOW_MODS | +F:COULD2H +f:COULD2H +a:HARDCORE=ORCHAST +D:Forged by the dwarves of Khazad-dum in a time of desperation, +D:this axe turned many a battle against the invading orcs. + + +# The Hatchet of the Night + +N:157:of the Night +I:24:1:4 +W:45:20:45:34000 +P:0:2d6:34:22:0 +F:DEX | STEALTH | VAMPIRIC | KILL_UNDEAD | RES_DARK | HIDE_TYPE | +F:SHOW_MODS | SEE_INVIS | ACTIVATE | DRAIN_EXP +a:HARDCORE=NIGHT +D:Found on an unmarked grave after a violent storm, this hatchet +D:has a sinister aura of darkness and decay. + +# The Slaughter Axe 'Lavandagnir' + +N:158:'Lavandagnir' +I:24:30:3 +W:70:20:300:28400 +P:0:5d7:31:27:0 +F:STR | SLAY_ANIMAL | SUST_STR | RES_SHARDS | RES_NEXUS | FEATHER | +F:HIDE_TYPE | SHOW_MODS | ACTIVATE | DRAIN_HP +a:HARDCORE=NATUREBANE +D:Used by the orcs in their battle at Dagor Bragollach against the elves, this +D:axe has a bloodthirst for nature. + +# The Light War Axe of Helcar + +N:159:of Helcar +I:24:8:3 +W:30:25:140:26550 +P:0:2d5:3:15:0 +F:INT | CHR | SUST_DEX | BRAND_COLD | IM_COLD | RES_NEXUS | HIDE_TYPE | +F:SHOW_MODS +D:Crafted of purest ice and held solid by powerful spells, this icy axe +D:delivers a chill of death to its victims. + + +# The Iron Helm of Knowledge + +N:160:of Knowledge +I:32:5:-6 +W:20:5:75:100000 +P:6:1d3:0:0:20 +F:LITE1 | HIDE_TYPE | SPECIAL_GENE | LUCK | +F:AUTO_ID | ACTIVATE +a:HARDCORE=KNOWLEDGE +D:This helm, designed by Petty-Dwarves ages ago to act as the brain of a +D:long lost project, is made of finest glass. Its light banishes all secrets, +D:and makes audible whispers from the deceased. + + +### Trapping Kits ### + +# The Catapult Trap Set of the Edain + +N:161:of the Edain +I:46:3:3 +W:20:10:40:20000 +P:0:0d0:25:15:30 +F:STEALTH | AUTOMATIC_99 | XTRA_MIGHT | HIDE_TYPE +D:A trap that can almost never be detected. Its missiles may be mere pebbles, +D:but fired at an incredibly high velocity to penetrate even the toughest +D:hide or armour. + +# The Device Trap Set of the Noegyth Nibin + +N:162:of the Noegyth Nibin +I:46:6:3 +W:20:20:40:20000 +P:0:0d0:0:0:25 +F:STEALTH | XTRA_SHOTS | TELEPORT_TO | HIDE_TYPE | AUTOMATIC_99 +D:A magical trap, armed with a wand. Unaccountably, its victims keep +D:on coming back for more... + +# The Bolt Trap Set of the Naugrim + +N:163:of the Naugrim +I:46:2:2 +W:20:20:200:20000 +P:0:0d0:17:27:37 +F:STEALTH | XTRA_SHOTS | XTRA_MIGHT | HIDE_TYPE | ONLY_DEMON +D:A snare set not for animals, or people, but for demons alone, and +D:enchanted so that whenever the demon sets foot or claw into the +D:(hidden) pentagram, its hide is immediately pierced by many magical +D:crossbow bolts. + +# The Broken Sword 'Narsil' + +N:164:'Narsil' +I:23:2:2 +W:20:5:30:15000 +P:0:3d2:6:10:0 +F:BLESSED | DEX | HIDE_TYPE | RES_FIRE | SLAY_ORC | SLAY_TROLL | STR +D:These are the shards of the mighty blade of Isildur, which deprived +D:the dark lord Sauron of The One Ring of Power. Legend has it that +D:the sword that was broken shall be reforged. You can barely make out +D:a Tengwar inscription on the pommel, reading "Narsil essenya, macil +D:meletya; Telchar carneron Navarotesse." - "Narsil is my name, a mighty +D:sword; Telchar made me in Nogrod." + +# The Chain Mail of Peregrin Took +# From T-Plus by Ingeborg S. Norden + +N:165:of Peregrin Took +I:37:4:2 +W:20:3:220:32000 +P:14:1d4:3:5:11 +F:ACTIVATE | ESP_TROLL | HIDE_TYPE | LITE1 | REGEN | RES_FEAR | SHOW_MODS | STR | SUST_STR +a:HARDCORE=GORLIM +D:This sturdy mail shirt was a gift from the nobility of Gondor to the halfling +D:Peregrin Took. It enables a warrior to fight more capably and cling to life when +D:others would be killed. It also reveals enemies (especially trolls) hiding in the +D:dark, and terrifies anyone who threatens the wearer. + +# The Balance Dragon Scale Mail 'Loknare' + +N:166:'Loknare' +I:38:20:0 +W:95:12:500:400000 +P:50:2d4:-8:0:35 +F:FEATHER | FLY | ESP_DRAGON | +F:RES_NEXUS | RES_CHAOS | AGGRAVATE | REGEN | +F:RES_SHARDS | RES_SOUND | RES_DISEN | RES_CONF | +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD | +F:ACTIVATE +a:HARDCORE=MEDIATOR +D:A mighty suit of dragon armour, set with the scales of dragons of both +D:Law and Chaos, and with power over both. Loknare means Dragonblaze. + +# The Hard Leather Armour of Himring + +N:167:of Himring +I:36:6:0 +W:50:20:100:35000 +P:6:0d0:0:0:15 +F:RES_CHAOS | RES_NETHER | RES_POIS | ACTIVATE +a:HARDCORE=PROT_EVIL +D:Contained within this studded cuirass of pliable leather is the memory of +D:unvanquished Himring, defiant fortress surrounded by the legions of Morgoth. + + +# The Soft Leather Armour 'Hithlomir' + +N:168:'Hithlomir' +I:36:4:4 +W:20:3:80:45000 +P:4:0d0:0:0:20 +F:STEALTH | HIDE_TYPE | SEARCH | +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_DARK +D:Familiar with the secret ways hidden in darkness, this leather cuirass is +D:truly more than it appears. + + +# The Shield of Deflection of Gil-galad +# Description from Sangband + +N:169:of Gil-galad +I:34:10:5 +W:70:4:80:65000 +P:10:1d3:0:0:20 +F:ACTIVATE | +F:LITE1 | WIS | CHR | SEARCH | LUCK +F:RES_ELEC | RES_ACID | RES_DISEN | RES_DARK | HIDE_TYPE | +F:SUST_WIS | SUST_DEX | SUST_CHR +a:HARDCORE=GILGALAD +D:The legendary shield of Gil-Galad, who fought his way to the gates of +D:the Dark Tower, and with whom came light even to Gorgoroth. + + +# The Metal Cap of Celebrimbor + +N:170:of Celebrimbor +I:32:3:3 +W:55:12:20:45000 +P:3:1d1:0:0:18 +F:INT | DEX | CHR | SPELL | SEARCH | +F:RES_FIRE | RES_ACID | RES_DISEN | RES_SHARDS | +F:ACTIVATE +a:HARDCORE=CELEBRIMBOR +D:This once belonged to Celebrimbor, maker of the Rings of Power. One who +D:knows both fire and acid, from the business of forging and engraving, will +D:fear neither: nor have his enchantments ever faded. Celebrimbor was even +D:aware of Sauron before Sauron became aware of him, when Sauron put on the +D:One Ring for the first time. + + +# The Heavy Crossbow of Umbar + +N:171:of Umbar +I:19:24:2 +W:60:20:200:35000 +P:0:4d1:18:18:0 +F:STR | CON | XTRA_MIGHT | AGGRAVATE | +F:RES_LITE | RES_DARK | RES_BLIND | RES_ELEC | +F:HIDE_TYPE | ACTIVATE | SHOW_MODS +a:HARDCORE=UMBAR +D:A great brazen arbalest with arms of gleaming steel, shooting quarrels with +D:speed and power for those brave enough to risk betrayal. + +# The Short Bows of Amrod and Amras, Feanor's twin sons + +# The Short Bow of Amrod + +N:172:of Amrod +I:19:12:2 +W:25:10:30:9000 +P:0:0d0:12:15:0 +F:STR | CON | XTRA_MIGHT | +F:RES_FIRE | RES_ELEC | RES_COLD | REGEN +D:This bow, and its twin, belonged to Feanor's last two twin sons, Amrod +D:and Amras, who both hunted with the Green-elves for a time. Like the +D:twins, the bows are similar, for both protect their wielders from the +D:elements: and yet they are also unlike, for this bow gives endurance +D:and strength, while the other gives quickness and subtlety. + + +# The Short Bow of Amras + +N:173:of Amras +I:19:12:1 +W:25:10:30:9000 +P:0:0d0:12:15:0 +F:INT | WIS | DEX | XTRA_SHOTS | XTRA_MIGHT | SPEED | +F:RES_FIRE | RES_ELEC | RES_COLD | SLOW_DIGEST +D:This bow, and its twin, belonged to Feanor's last two twin sons, Amrod +D:and Amras, who both hunted with the Green-elves for a time. Like the +D:twins, the bows are similar, for both protect their wielders from the +D:elements: and yet they are also unlike, for this bow gives quickness +D:and subtlety, while the other gives endurance and strength. + + +# The Mattock of Nain + +N:174:of Nain +I:20:7:6 +W:60:5:250:30000 +P:0:3d8:12:18:0 +F:TUNNEL | INFRA | SEARCH | STR | ESP_ORC | CLIMB | +F:SLAY_ORC | SLAY_TROLL | SLAY_GIANT | SLAY_DRAGON | +F:BRAND_ACID | RES_ACID | RES_DARK | RES_DISEN | +F:ACTIVATE +a:HARDCORE=STONE_MUD +D:Wielded by Nain of the Iron Hills at the Battle of Azanulbizar, this great +D:mattock brought victory to the Dwarves over Azog's Orcs - though Nain +D:himself fell at the last, even with victory already assured. + + +# The Ball-and-Chain of Fundin Bluecloak + +N:175:of Fundin Bluecloak +I:21:6:4 +W:25:100:130:60000 +P:0:5d4:13:17:10 +F:STR | WIS | SPEED | LITE1 | HIDE_TYPE | +F:SLAY_EVIL | SLAY_UNDEAD | ACTIVATE | +F:RES_FIRE | RES_ELEC | RES_NETHER | RES_DISEN | HOLD_LIFE | +F:COULD2H +f:COULD2H +a:HARDCORE=FUNDIN +D:The weapon of one of the great dwarven priests, with powers +D:to preserve body, soul and enchantments, and the bane of those +D:who seek life beyond death. + + +# The Large Leather Shield of the Haradrim + +N:176:of the Haradrim +I:34:4:2 +W:35:12:120:25000 +P:4:1d2:0:0:15 +F:ACTIVATE | +F:STR | CON | SUST_STR | SUST_CON | HIDE_TYPE | +F:RES_FEAR | RES_BLIND | RES_POIS | AGGRAVATE +a:HARDCORE=HARADRIM +D:A great shield from the far lands of the South, whose wielder +D:will go charging into battle heedless of danger, with the +D:strength and endurance of a madman. Nor will he fear poison, for +D:the Southron barbarians handle poisoned darts naturally. + +# The Lead-Filled Mace 'Dolcrist' + +N:177:'Dolcrist' +I:21:15:5 +W:30:15:500:60000 +P:0:5d4:11:23:20 +F:STR | TUNNEL | INFRA | HIDE_TYPE | +F:CURSED | AGGRAVATE | NO_MAGIC | ACTIVATE | +F:RES_NEXUS | RES_BLIND | RES_SOUND | +F:KILL_DRAGON | SLAY_ANIMAL | BRAND_POIS | BRAND_ELEC | +F:COULD2H +f:COULD2H +a:HARDCORE=SKULLCLEAVER +D:This mighty bludgeon brings destruction to all around it, and is the +D:bane of dragons and magic. Skull-cleaver (or head-cleaver) it is called. + +# The Set of Gauntlets of Eol + +N:178:of Eol +I:31:2:3 +W:55:35:25:40000 +P:3:1d1:0:0:15 +F:INT | MANA | FREE_ACT | FEATHER | RES_ELEC | RES_DARK | RES_POIS | +F:ACTIVATE | LUCK | SPELL_CONTAIN | WIELD_CAST +a:HARDCORE=EOL +D:The iron-shod gauntlets of the Dark Elven smith Eol, tingling with magics +D:that he could channel in battle. + + +# The Pair of Hard Leather Boots of Nevrast + +N:179:of Nevrast +I:30:3:3 +W:20:8:40:35000 +P:3:1d1:0:0:13 +F:STEALTH | CON | SPEED | HIDE_TYPE +D:Footgear made of bear leather and set with opals, which grant the wearer +D:silent, hasted movement. + + +# The Pair of Metal Shod Boots of Gimli + +N:180:of Gimli +I:30:6:4 +W:40:8:60:22500 +P:4:1d1:5:5:10 +F:INFRA | SEARCH | TUNNEL | CLIMB | HIDE_TYPE +Z:magic map +D:A set of iron-shod boots stamped by Gimli's combat prowess, a peerless +D:ally to those journeying through halls of stone under mountains. + +# The demon garbs of Gothmog + +# The Demonblade of Gothmog + +N:181:of Gothmog +I:115:55:-20 +W:10:0:150:500 +P:0:7d6:13:13:0 +F:SHOW_MODS | SLAY_DEMON | SLAY_EVIL | BRAND_FIRE | BRAND_POIS +F:LUCK | CHAOTIC | LITE1 | WOUNDING | RES_MORGUL | WIELD_CAST +F:HEAVY_CURSE | AUTO_CURSE + + +# The Demonshield of Gothmog + +N:182:of Gothmog +I:115:56:4 +W:15:0:70:500 +P:13:1d1:0:0:13 +F:DEX | INVIS | SUST_STR | SUST_CON | SUST_DEX +F:FEATHER | SH_FIRE | FREE_ACT | HOLD_LIFE +F:HEAVY_CURSE | AUTO_CURSE | WIELD_CAST + + +# The Demonhorn of Gothmog + +N:183:of Gothmog +I:115:57:-5 +W:20:0:30:500 +P:2:1d1:0:0:13 +F:LITE2 | REGEN | ESP_DEMON +F:CHR | SLOW_DIGEST | SEE_INVIS +F:HEAVY_CURSE | AUTO_CURSE | WIELD_CAST + +# The Elven cloak of Peregrin Took +# From T-Plus by Ingeborg S. Norden + +N:184:of Peregrin Took +I:35:2:3 +W:10:10:10:12500 +P:4:0d0:0:0:16 +F:ACTIVATE | CHR | DEX | HIDE_TYPE | INVIS | LUCK | SEARCH | STEALTH +a:HARDCORE=CURE_HUNGER +D:This simple-looking cloak, dyed in hues that blend into the woodlands, was a gift +D:from the elves of Lothlorien to the halfling Peregrin Took. Its wearer has an +D:uncanny knack for making friends, escaping bonds, moving among enemies completely +D:unseen--and finding food. + +# The Harp of Tom Bombadil +# From T-Plus by Ingeborg S. Norden + +N:185:of Tom Bombadil +I:14:59:4 +W:80:60:20:150000 +P:0:3d4:0:0:0 +F:ACTIVATE | BLESSED | CHR | ESP_UNDEAD | FREE_ACT | +F:HIDE_TYPE | HOLD_LIFE | LIFE | LUCK | RES_FEAR | +F:RES_SOUND | SEARCH | SEE_INVIS | STEALTH | SUST_CHR +a:HARDCORE=PROT_EVIL +D:This small, serviceable wooden harp once belonged to Tom Bombadil-- +D:a mysterious figure whose song prevented the Wight-King from +D:attacking Frodo and his companions. Its music still inspires +D:boldness and strengthens the life force of all who play it. + +# The Quarterstaff of Radagast +# From T-Plus by Ingeborg S. Norden + +N:186:of Radagast +I:21:3:2 +W:100:120:150:180000 +P:0:2d9:10:13:0 +F:ACTIVATE | BLESSED | CHR | ESP_ANIMAL | ESP_EVIL | +F:HIDE_TYPE | INFRA | INT | MANA | RES_COLD | RES_ELEC | +F:RES_FIRE | RES_MORGUL | SEARCH | SEE_INVIS | SHOW_MODS | +F:SLAY_ANIMAL | SLAY_EVIL | SPELL | SPELL_CONTAIN | +F:STEALTH | WATER_BREATH | WIELD_CAST | WIS +a:SPELL=Artifact Radagast +Z:grow trees +D:Rumoured to be a gift from Yavanna to Radagast the Brown, this +D:plain-seeming oak staff shields its bearer against the elements +D:and helps him fight off malicious beasts (such as the goblins' +D:Warg-steeds). It also grants exceptional insight into Nature +D:magic, and can even cause trees or healing herbs to spring forth +D:at the bearer's command. + +# The Horn 'Valaroma' +# From T-Plus by Ingeborg S. Norden + +N:187:'Valaroma' +I:14:60:4 +W:80:60:15:90000 +P:0:3d4:0:0:0 +F:ACTIVATE | BLESSED | CON | ESP_ANIMAL | ESP_EVIL | +F:FREE_ACT | HIDE_TYPE | LUCK | RES_CONF | RES_FEAR | +F:RES_SOUND | SEARCH | SEE_INVIS | STEALTH +a:SPELL=Artifact Valaroma +D:This heavenly instrument, wrought from gleaming silver, most +D:often appears in the hands of the Valarin huntsman Orome; yet +D:he may lend mortal champions the horn from time to time. Its +D:music inspires courage and clarity of mind in pure-hearted +D:beings, but drives evil ones far away. + +# The Cloak 'Menelcol' +# From T-Plus by Ingeborg S. Norden + +N:188:'Menelcol' +I:35:1:5 +W:70:70:10:27500 +P:1:0d0:0:0:25 +F:ACTIVATE | CHR | FLY | HIDE_TYPE | IM_ELEC | INFRA | +F:LITE1 | MAGIC_BREATH | RES_COLD | RES_DARK | RES_LITE | +F:SEARCH | SEE_INVIS | SUST_CHR +a:HARDCORE=GILGALAD +D:This deep-blue velvet cloak, embroidered with silvery stars, sheds a +D:celestial light that reveals hidden things and bestows unearthly +D:beauty. It also wards off damage from elements of the skies, and +D:allows the wearer to fly unscathed even through airless space. + +# The Filthy Rag of Ghan-buri-Ghan +# Suggested by ShinesmanOffWhite in the forums + +N:189:of Ghan-buri-Ghan +I:36:1:2 +W:25:10:20:30000 +P:2:0d0:0:0:32 +F:CON | HIDE_TYPE | LIFE | RES_COLD | RES_FIRE | +F:RES_POIS | RES_SOUND | STR | SUST_CON | +F:SUST_STR | SUST_WIS | WIS +Z:poison dart +D:The wrappings of a leader among the wild Men of Druadan +D:forest. It contains a multitude of tiny pockets filled +D:with small darts dripping with venom. + +# The Cloak of Ghan-buri-Ghan +# Suggested by ShinesmanOffWhite in the forums + +N:190:of Ghan-buri-Ghan +I:35:1:5 +W:30:15:10:25000 +P:1:0d0:5:5:13 +F:DEX | HIDE_TYPE | INVIS | SPEED | STEALTH | SUST_DEX +Z:berserk +D:This dark-coloured cloak once belonged to the leader of the +D:Druedain. As you put it on, you feel safer from attempts to +D:waylay you on your travels. + +# The Black Banner of Gondor +# Suggested by ShinesmanOffWhite in the forums + +N:191:of Gondor +I:39:108:-3 +W:60:30:50:50000 +P:0:0d0:0:0:0 +F:ACTIVATE | ESP_UNDEAD | HIDE_TYPE | INSTA_ART | INVIS | +F:LITE1 | RES_CHAOS | RES_DARK | RES_NETHER | STEALTH +a:HARDCORE=SUMMON_UNDEAD +D:A large banner of pure black, strangely gleaming with a dark light +D:that is faint and at the same time so bright it attracts attention. + +# The Mage Staff of Saruman +# Suggested by ShinesmanOffWhite in the forums + +N:192:of Saruman +I:6:1:4 +W:60:80:12:60000 +P:0:1d4:5:5:0 +F:ACTIVATE | HIDE_TYPE | INT | MANA | SHOW_MODS | SPEED | +F:SPELL | SPELL_CONTAIN | WIELD_CAST +a:HARDCORE=BA_COLD_1 +Z:weigh magic +D:A white quarterstaff that faintly gleams a pale white, it once belonged +D:to one of the most powerful beings on Middle-Earth, Saruman the White. +D:Saruman fell into shadow, and the staff left him during his travels. As +D:you wield it, you become much more attuned to magic. + +# The Robe of Curunir +# Suggested by ShinesmanOffWhite in the forums + +N:193:of Curunir +I:36:2:10 +W:60:80:20:2000000 +P:2:0d0:-40:-40:36 +F:ACTIVATE | HIDE_TYPE | IM_COLD | IM_ELEC | SPEED | SPELL_CONTAIN | +F:SUST_CHR | SUST_CON | SUST_DEX | SUST_INT | SUST_STR | WIELD_CAST +a:HARDCORE=BA_ELEC_2 +D:The white robe of the Istari wizard Curunir, known on Middle-earth as +D:Saruman the White and Saruman of Many Colours. Imbued with cold and +D:lightning used in the creation of the Fire of Orthanc, it grants the +D:wearer some mastery over these elements. + +# The Light Crossbow of Brand +# Adapted from Hengband + +N:194:of Brand +I:19:23:10 +W:30:10:110:40000 +P:0:0d0:5:7:0 +F:ACTIVATE | HIDE_TYPE | RES_COLD | SHOW_MODS | STEALTH +a:HARDCORE=RUNE_EXPLO +D:The bow of Brand, last King of Dale. It was given to him +D:as a gift by the King under the Mountain of Erebor, and +D:has access to an especially secret realm of Dwarven lore. + +# The Pearl 'Nimphelos' +# Adapted from Annals of Ea by Feanor + +N:195:'Nimphelos' +I:39:109:1 +W:20:10:10:40000 +P:0:1d1:0:0:0 +F:HIDE_TYPE | INFRA | INSTA_ART | LITE3 | SEARCH +Z:dazzle +D:It was a gift from the Falas-Elves to the Naugrim who built Menegroth, +D:the abode of Thingol and Melian. It shines like starlight on the waves +D:of the sea. + +# The Silmaril of Flames +# Adapted from Annals of Ea by Feanor + +N:196:of Flames +I:39:110:2 +W:75:90:200:100000 +P:0:10d10:0:0:0 +F:ACTIVATE | AUTO_CURSE | CURSED | DRAIN_EXP | DRAIN_MANA | +F:ESP_EVIL | HEAVY_CURSE | HIDE_TYPE | INSTA_ART | LITE2 | +F:LITE3 | RES_CHAOS | RES_DARK | RES_FIRE | RES_LITE | +F:RES_NETHER | RES_NEXUS | RES_SHARDS | SEE_INVIS | STR +a:HARDCORE=INVULN +Z:banish evil +D:A Silmaril of Feanor. It shines with the unquenchable light of the +D:White Trees of Valinor. It was stolen from the camp of Eonwe by +D:Maedhros the Tall, whose evil deeds made him unable to hold the +D:shining jewel. Desperate and anguished, he cast himself into a +D:fiery chasm, along with the jewel. Yet the jewel seems to have +D:survived. Forever did the Oath of Feanor bind this jewel to the fate +D:of Middle-earth. + +# The Silmaril of the Seas +# Adapted from Annals of Ea by Feanor + +N:197:of the Seas +I:39:111:2 +W:75:90:200:100000 +P:0:10d10:0:0:0 +F:ACTIVATE | AUTO_CURSE | CURSED | DRAIN_EXP | DRAIN_HP | ESP_EVIL | +F:HEAVY_CURSE | HIDE_TYPE | INSTA_ART | INT | LITE2 | LITE3 | +F:RES_CHAOS | RES_DARK | RES_LITE | RES_NETHER | RES_NEXUS | SEE_INVIS +a:HARDCORE=RECALL +Z:banish evil +D:A Silmaril of Feanor. It shines with the unquenchable light of the +D:White Trees of Valinor. It was stolen from the camp of Eonwe by +D:Maglor, yet he soon discovered that the light of the Valar cannot +D:abide in the hands of evildoers. Thus he could not bear to hold it, +D:and he cast it into the sea. Thereafter he wandered ever upon the +D:shores singing in pain, regret and sorrow. Forever did the Oath of +D:Feanor bind this jewel to the fate of Middle-earth. + +# The Sceptre of Numenor + +N:198:of Numenor +I:12:2:-3 +W:50:40:24:80000 +P:0:0d0:0:0:0 +F:ACTIVATE | AUTO_CURSE | CHR | CON | CURSED | HEAVY_CURSE | +F:INSTA_ART | LUCK | SPEED | SPELL_CONTAIN | STR | WIELD_CAST | WRAITH +a:HARDCORE=DISP_GOOD +D:The chief mark of royalty in Westernesse, it is said to have perished +D:in the fall of Numenor. It once belonged to Ar-Pharazon the Golden and +D:the evilness of that fallen King still courses through it. + +# The Rod of Annuminas + +N:199:of Annuminas +I:12:3:4 +W:60:50:24:80000 +P:0:0d0:0:0:0 +F:ACTIVATE | BLESSED | CHR | FREE_ACT | INSTA_ART | LUCK | +F:RES_CONF | SPELL_CONTAIN | WIELD_CAST +a:HARDCORE=RUNE_PROT +D:The chief mark of royalty in Arnor, possibly the oldest remaining work +D:of Men. It came from Numenor, but it belonged to the Lords of Andunie +D:of whom the first was Valandil son of Silmarien. It was passed down to +D:Elendil and thus survived the downfall of Numenor. +# The Feanorian Lamp of Taniquetil +# From T-Plus by Ingeborg S. Norden + +N:200:of Taniquetil +I:39:4:2 +W:75:60:200:100000 +P:0:1d1:0:0:0 +F:ACTIVATE | BLESSED | ESP_ALL | HIDE_TYPE | INFRA | INT | +F:LITE1 | LITE2 | LITE3 | RES_BLIND | RES_LITE | SEARCH | +F:SEE_INVIS | WATER_BREATH | WIS +a:HARDCORE=PALANTIR +Z:detect curses +D:This holy lamp once belonged to a seeress who warned Ar-Pharazon of +D:the dire fate Numenor would suffer for daring to break the ban against +D:mortals' entering the Blessed Realms alive. The king had the seeress +D:executed and discarded her possessions--but rumors persist that a source +D:of pure vision, untainted by Sauron's darkness, lies hidden away +D:somewhere on Arda. + +# The template for artifacts corpses + +N:201: +I:9:1:0 +W:200:1:10:0 +P:0:1d1:0:0:0 +F:INSTA_ART | SPECIAL_GENE + + +# The Palantir of Orthanc + +N:202:of Orthanc +I:39:104:2 +W:75:60:200:100000 +P:0:10d10:0:0:0 +F:WIS | INT | SEARCH | INFRA | HIDE_TYPE | ACTIVATE | ESP_ALL | +F:SEE_INVIS | RES_BLIND | AGGRAVATE | DRAIN_MANA | LITE2 +F:INSTA_ART +a:HARDCORE=PALANTIR +D:A shining white ball of unbreakable crystal, the ancient Palantiri +D:were used by kings of Numenor and later by the Exiles for rapid +D:communication between distant lands. Nothing is hidden from one who +D:gazes into a Palantir, but the observed will also be aware of the +D:observer, as was Sauron when Saruman tried to spy on him with this +D:particular Palantir. + +# The Ring 'Fuin' + +N:203:'Fuin' +I:45:55:15 +W:110:0:2:3000000 +P:0:1d1:0:0:0 +F:SPEED | SEE_INVIS | LUCK | MAGIC_BREATH +F:CURSED | HEAVY_CURSE | REGEN +F:WRAITH | IM_NETHER | DRAIN_EXP | HOLD_LIFE | SPECIAL_GENE | +F:INSTA_ART +Z:teleport +D:Imbued with the screams of the victims of undead everywhere, this +D:ring is more a hole in reality than anything else. Strange forces ripple over +D:its surface, giving you visions of a reality considerably less solid than this +D:one. You feel your senses reel, and must make a conscious effort not to throw +D:this ring as far from you as possible. + +# The Blue Stone 'Coimir' (formerly 'Toris Mejistos') +# From T-Plus by Ingeborg S. Norden + +N:204:'Coimir' +I:40:18:2 +W:80:120:3:120000 +P:0:0d0:0:0:0 +F:FREE_ACT | HIDE_TYPE | HOLD_LIFE | INSTA_ART | LIFE | LITE1 | LUCK | REGEN | RES_NETHER | SLOW_DIGEST | SPECIAL_GENE | SPELL_CONTAIN | SUST_CON | SUST_DEX | SUST_STR | WATER_BREATH | WIELD_CAST +Z:restore life +D:Called 'Life-jewel' by the Vanyar of old, this flawless sapphire +D:pendant bears potent runes that preserve body and soul. + +# The Ring of Durin - last of the Seven Rings of the Dwarf-lords + +N:205:of Durin +I:45:57:2 +W:70:70:2:65000 +F:CON | CHR | STR | SUST_CHR | SUST_CON | SUST_STR | HIDE_TYPE | +F:ESP_EVIL | AGGRAVATE | HEAVY_CURSE | HOLD_LIFE | DRAIN_EXP | +F:RES_DARK | RES_CHAOS | RES_NETHER | RES_COLD | RES_ACID | +F:INSTA_ART | SPECIAL_GENE | CURSED +Z:Midas touch +D:The greatest of the Seven Rings of the Dwarf-lords, and the last to be +D:lost. Alone among the Seven, it was not taken by Sauron when he made +D:war on the Elves, but was given as a gift from Celebrimbor to King Durin +D:III of Moria in token of friendship: nevertheless, Sauron in disguise +D:had a hand in its making, and so it is cursed, and draws evil towards it. + + +# The Elfstone 'Elessar' + +N:206:'Elessar' +I:40:19:4 +W:60:60:3:40000 +P:0:0d0:7:7:10 +F:STR | WIS | CHR | SPEED | LITE3 | INSTA_ART | +F:RES_FEAR | RES_FIRE | RES_POIS | RES_DISEN | HIDE_TYPE | +F:ACTIVATE +a:HARDCORE=ELESSAR +D:This green gem glows with inner light. Aragorn son of Arathorn wore +D:it at the Battle of the Pelennor Fields, and he was himself given the +D:name of 'Elessar' by the people of Gondor because of this. + + +# The Jewel 'Evenstar' + +N:207:'Evenstar' +I:40:20:3 +W:50:50:3:35000 +F:HOLD_LIFE | SUST_CON | SUST_WIS | SUST_INT | LITE1 | CON | +F:RES_DARK | RES_COLD | RES_NETHER | REGEN | INSTA_ART | +F:ACTIVATE +a:HARDCORE=REST_ALL +D:A pure white jewel, the last gift of Queen Arwen Undomiel to Frodo +D:Baggins, intended to be worn around his neck on the chain that had +D:once borne the One Ring. + +# The Palantir of Minas Ithil + +N:208:of Minas Ithil +I:39:107:-3 +W:75:60:200:0 +P:0:10d10:0:0:-30 +F:LIFE | CON | INT | WIS | ESP_ALL | LITE3 | LITE1 +F:CURSED | HEAVY_CURSE | TY_CURSE | DRAIN_EXP | +F:RES_BLIND | SEE_INVIS | ACTIVATE +a:HARDCORE=PALANTIR +D:A shining white ball of unbreakable crystal, the ancient Palantiri +D:were used by kings of Numenor and later by the Exiles for rapid +D:communication between distant lands. This Palantir, however, was +D:taken by Sauron long ago, and mastered to his evil uses, to the +D:destruction of all others who would gaze into it. + +### More new artifacts in Theme ### + +# The Map of Thror + +N:209:of Thror +I:8:33:0 +W:70:100:30:1 +P:0:0d0:0:0:0 +F:INSTA_ART | SPECIAL_GENE +D:A map made by Thror, the King under the Mountain. It shows the Lonely +D:Mountain of Erebor, the Running River, and the lands about devastated by +D:Smaug. It also contains mention of a secret entrance to the Mountain. +D:This map and a key are all you need to enter a special cavern in Erebor. + +# The Key of Thorin + +N:210:of Thorin +I:11:13:0 +W:70:100:5:1 +P:0:0d0:0:0:0 +F:INSTA_ART | SPECIAL_GENE +D:A small silver key, given to Thorin Oakenshield by Gandalf the Grey, +D:who got it from Thrain, Thorin's father, in Dol Guldur. It opens a +D:magical gate to a special cavern in the Lonely Mountain - you will +D:also need a map to show you the gate's precise location. + +# The Cup of Thror + +N:211:of Thror +I:11:14:0 +W:70:100:50:100000 +P:0:0d0:0:0:0 +F:ACTIVATE | ACTIVATE_NO_WIELD | HIDE_TYPE | INSTA_ART | SPECIAL_GENE +a:HARDCORE=ALCHEMY +D:It was made for Thror, King under the Mountain. It is a huge golden bowl +D:with two handles, hammered and carved, with birds and flowers whose eyes +D:and leaves are made in jewels. + +# The Red Arrow of Gondor + +N:212:of Gondor +I:11:15:0 +W:40:70:2:70000 +P:0:0d0:0:0:0 +F:ACTIVATE | ACTIVATE_NO_WIELD | HIDE_TYPE | INSTA_ART +a:HARDCORE=BOROMIR +D:The summons of Gondor, an arrow sent as a symbol of desperate need from +D:Gondor to its northern allies, the Rohirrim. The tradition dates back to +D:the time of Borondir, who rode north from Gondor to summon aid from the +D:ancestors of the Rohirrim, the Eotheod. The Red Arrow was only sent north +D:in the most perilous of circumstances. + +# ToME artifacts (new since 2.3.x) # + +# The Mage Staff of Forochel + +N:213:of Forochel +I:6:1:3 +W:65:70:60:60000 +P:0:3d4:-12:-8:0 +F:INT | WIS | MANA | SPELL | INFRA | SEE_INVIS | +F:SUST_INT | SUST_WIS | RES_BLIND | IM_COLD | SENS_FIRE | +F:SPECIAL_GENE | WIELD_CAST | +F:COULD2H +f:COULD2H +D:A shaft of pure, invincible crystal cut from the heart of one +D:of the great glaciers ringing the Ice-Bay of Forochel. +D:While you hold it, your mind feels as clear as the winter sky. + + +# The Elven Cloak of Mellyrn + +N:214:of Mellyrn +I:35:2:4 +W:40:40:5:65000 +P:4:0d0:0:0:20 +F:HIDE_TYPE | INVIS | DEX | SPEED | STEALTH | LUCK | +F:SUST_DEX | RES_LITE | RES_DARK +D:Bearing the same lyrical name as the great trees of Lothlorien +D:and containing in its close-woven folds the speed and skill of +D:the Galadrim, this grey cloak is ideal for those who travel in +D:forests. + + +# The Bluesteel Blade of Ephel Duath + +N:215:of Ephel Duath +I:23:31:-3 +W:60:60:50:30000 +P:0:2d6:-20:-18:0 +F:STR | WIS | CHR | BRAND_POIS | VAMPIRIC | VORPAL | +F:INVIS | AGGRAVATE | CURSED | HEAVY_CURSE | SHOW_MODS | +D:This filthy orc-blade is famed for vile deeds of torture and blood, +D:and its wielder will never cease to fear treachery. + + +# The Slaughter Axe 'Garachoth' + +N:216:'Garachoth' +I:24:30:2 +W:70:50:400:0 +P:0:7d5:18:18:-20 +F:STR | CON | SPEED | LEVELS | BLACK_BREATH | +F:KILL_DEMON | SLAY_ANIMAL | BRAND_FIRE | VORPAL | +F:RES_FEAR | RES_FIRE | RES_CHAOS | RES_NETHER | +F:HIDE_TYPE | SHOW_MODS +D:A ghastly axe with the soul of a demon lord trapped inside, this horrifying +D:creation reverberates with the screams of the damned. As you gaze into its +D:glassy, translucent blade, it seems that endless sulphrous wastelands +D:stretch away from you into the distance, obscured by sheets of fire. + + +# The Set of Cesti 'Skycleaver' + +N:217:'Skycleaver' +I:31:5:1 +W:40:45:40:100000 +P:5:1d1:16:7:16 +F:STR | CON | DEX | CHR | LUCK | FLY | +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_POIS | +F:HIDE_TYPE | SHOW_MODS +D:The handgear of a legendary dragonslaying hero. The wearer of these +D:wyrmskin gauntlets will be versed in all aerial ways, and will fear no +D:dragon that walks or flies. + + +# The Pair of Metal Shod Boots of the Machine +# Replaced the stealth malus with AGGRAVATE + +N:218:of the Machine +I:30:6:3 +W:30:100:170:19000 +P:6:1d1:0:0:24 +F:INT | SPEED | TUNNEL | AGGRAVATE | +F:RES_CHAOS | RES_SHARDS | RES_CONF | +F:ESP_NONLIVING | HIDE_TYPE | SPECIAL_GENE +D:A massive pair of adamantine boots studded with gold, the final and +D:greatest product of the petty-dwarven magical forge. Despite +D:the great powers they contain, they are heavy and awkward enough to +D:make quite a racket whenever you move. + +# Theme artifacts continued # + +# The Robe of Belegaer +# Based on Robe of the Seven Seas from T-Plus by Ingeborg S. Norden + +N:219:of Belegaer +I:36:2:5 +W:100:200:20:1500000 +P:2:0d0:0:0:20 +F:FREE_ACT | HIDE_TYPE | IM_ACID | IM_COLD | IM_ELEC | LITE1 | LUCK | RES_BLIND | RES_DARK | SEARCH | STEALTH | WATER_BREATH +D:This pearl-trimmed blue robe was created by a Maia loremaster in +D:Ulmo's service. No ocean storm can harm its wearer or anything +D:he carries; the pressure and darkness of deep water cannot hinder +D:him, either. + +# The Necklace of Girion + +N:220:of Girion +I:40:4:5 +W:20:5:2:15000 +P:0:1d1:0:0:10 +F:ACTIVATE | CHR | INSTA_ART | RES_NEXUS | RES_POIS | SEE_INVIS | SUST_CHR +a:HARDCORE=GROW_MOLD +D:A necklace of emeralds, green as the grass. It once belonged to Girion, +D:King of Dale, and was given to the Dwarves of the Lonely Mountain as +D:payment for a mithril mail shirt for Girion's son. It seems to have +D:overgrown with a strange moss over the years. + +# The Silver Bolt 'Dailir' - the 'dart' of Beleg Cuthalion, based on Heart's Blood + +N:221:'Dailir' +I:18:3:5 +W:85:40:3:35000 +P:0:8d5:15:20:0 +F:CRIT | HIDE_TYPE | SHOW_MODS | VORPAL | WOUNDING +D:The beloved dart of Beleg Cuthalion. It never failed to be found +D:unharmed, until it broke when Beleg fell upon it while he was +D:carrying Turin Turambar away from an Orc-camp, the night Beleg +D:met his end. Turin remade the bolt and kept it to his dying day in +D:memory of his friend. + +# The Amulet of Faramir [adapted from Oangband] +# The equivalent of the Phial (not too rare) for a stealth bonus and a source of RES_CONF early + +N:222:of Faramir +I:40:29:5 +W:10:2:2:10000 +P:0:0d0:18:0:8 +F:HIDE_TYPE | INSTA_ART | RES_CONF | SHOW_MODS | STEALTH | SUST_DEX +D:A slim neckpiece of True-silver, with quiet spells of Ithilien to aid and +D:protect the wearer. + +# The Large Mithril Shield of Earendil +# Adapted from Oangband; its chief benefits are the +to_ac and the activation + +N:223:of Earendil +I:34:8:0 +W:95:80:100:90000 +P:20:1d1:0:0:80 +F:ACTIVATE | RES_BLIND | RES_DARK | RES_ELEC | RES_FIRE | RES_NETHER +a:HARDCORE=BLADETURNER +D:A shining shield, once borne by the great mariner Earendil, "scored with +D:runes to keep all wounds and harm from him". + +# The Long Bow of Legolas + +N:224:of Legolas +I:19:13:3 +W:40:20:40:30000 +P:0:0d0:17:19:0 +F:XTRA_MIGHT | XTRA_SHOTS | FREE_ACT | HIDE_TYPE | ESP_ORC | +F:STEALTH | INFRA | DEX +D:The great bow of Legolas, one of the Nine Walkers of old. +D:Handcrafted specially for Thranduil's son in Lothlorien, +D:this bow gives clarity of sight and agility to the wielder. + +# The Large Metal Shield of Erkenbrand + +N:225:of Erkenbrand +I:34:5:3 +W:40:9:120:200000 +P:0:0d0:0:0:30 +F:REFLECT | STR | CHR | SUST_DEX | HIDE_TYPE | ESP_ORC | +F:FREE_ACT | REGEN +D:Tall and strong stood Erkenbrand, Lord of the Westfold, as he rode +D:to combat the forces of Isengard. The valour of Helm Hammerhand lived +D:again in him. This shield is painted red according to Rohan custom +D:and it grants magical protection against enemy projectiles, as well +D:as lets the wearer sense approaching enemy hordes. + +# XXX 226 Room for another artifact here XXX # +# XXX 227 Room for another artifact here XXX # +# XXX 228 Room for another artifact here XXX # +# XXX 229 Room for another artifact here XXX # +# XXX 230 Room for another artifact here XXX # +# XXX 231 Room for another artifact here XXX # +# XXX 232 Room for another artifact here XXX # +# XXX 233 Room for another artifact here XXX # +# XXX 234 Room for another artifact here XXX # +# XXX 235 Room for another artifact here XXX # +# XXX 236 Room for another artifact here XXX # +# XXX 237 Room for another artifact here XXX # +# XXX 238 Room for another artifact here XXX # +# XXX 239 Room for another artifact here XXX # +# XXX 240 Room for another artifact here XXX # + +### New Ultimate items added in Theme ### + +# The Lucerne Hammer of the Eruchin (Haftedmasters/Eru warriors) + +N:241:of the Eruchin +I:21:10:10 +W:127:220:130:9000000 +P:0:5d6:21:26:50 +F:ACTIVATE | BLESSED | BRAND_COLD | BRAND_ELEC | BRAND_FIRE | +F:CHR | CON | FREE_ACT | IM_COLD | LIFE | LITE1 | LUCK | +F:NO_MAGIC | PRECOGNITION | REGEN | RES_DARK | RES_FIRE | +F:SEE_INVIS | SHOW_MODS | SLAY_DEMON | SLAY_EVIL | SLAY_TROLL | +F:SLAY_UNDEAD | SLOW_DIGEST | SPECIAL_GENE | SUST_CHR | SUST_CON | +F:SUST_DEX | SUST_INT | SUST_STR | SUST_WIS | ULTIMATE | VORPAL +a:HARDCORE=ERU +D:A weapon forged by Aule himself and blessed by Eru Iluvatar, +D:calling upon the strength of all his children (hence the name, +D:which means Children of Eru). It is Eru Iluvatar's gift to you, +D:made for a single purpose + +# The Trident of Ulmo (Polearmmasters) + +N:242:of Ulmo +I:22:5:10 +W:127:220:130:9000000 +P:0:5d6:21:26:50 +F:ACTIVATE | BLESSED | BRAND_COLD | BRAND_ELEC | BRAND_FIRE | +F:CHR | CON | FREE_ACT | IM_COLD | LIFE | LITE1 | LUCK | +F:NO_MAGIC | PRECOGNITION | REGEN | RES_DARK | RES_FIRE | +F:SEE_INVIS | SHOW_MODS | SLAY_DEMON | SLAY_EVIL | SLAY_TROLL | +F:SLAY_UNDEAD | SLOW_DIGEST | SPECIAL_GENE | SUST_CHR | SUST_CON | +F:SUST_DEX | SUST_INT | SUST_STR | SUST_WIS | ULTIMATE | VORPAL +a:HARDCORE=ERU +D:The awesome weapon of the Vala Ulmo, Lord of Waters. Mightiest of all the +D:powers of good save Manwe himself, Ulmo laughs in scorn at the dread powers +D:of the undead, and is utterly in command of the element of water. + +# The Broad Axe of Aule (Axemasters) + +N:243:of Aule +I:24:11:10 +W:127:220:130:9000000 +P:0:5d6:21:26:50 +F:ACTIVATE | BLESSED | BRAND_COLD | BRAND_ELEC | BRAND_FIRE | +F:CHR | CON | FREE_ACT | IM_COLD | LIFE | LITE1 | LUCK | +F:NO_MAGIC | PRECOGNITION | REGEN | RES_DARK | RES_FIRE | +F:SEE_INVIS | SHOW_MODS | SLAY_DEMON | SLAY_EVIL | SLAY_TROLL | +F:SLAY_UNDEAD | SLOW_DIGEST | SPECIAL_GENE | SUST_CHR | SUST_CON | +F:SUST_DEX | SUST_INT | SUST_STR | SUST_WIS | ULTIMATE | VORPAL +a:HARDCORE=ERU +D:Aule's mighty weapon, granted to you to aid the defeat of Melkor. + +# The Rapier of Vaire (Rogues, whose Critical-hits skill is only useful with lighter swords) + +N:244:of Vaire +I:23:7:10 +W:127:220:130:9000000 +P:0:5d6:21:26:50 +F:ACTIVATE | BLESSED | BRAND_COLD | BRAND_ELEC | BRAND_FIRE | CHR | +F:CON | FREE_ACT | IM_COLD | LIFE | LITE1 | LUCK | NO_MAGIC | +F:PRECOGNITION | REGEN | RES_DARK | RES_FIRE | SEE_INVIS | SHOW_MODS | +F:SLAY_DEMON | SLAY_EVIL | SLAY_TROLL | SLAY_UNDEAD | SLOW_DIGEST | +F:SPECIAL_GENE | SUST_CHR | SUST_CON | SUST_DEX | SUST_INT | SUST_STR | +F:SUST_WIS | ULTIMATE | VORPAL +a:HARDCORE=ERU +D:A shining rapier used by Vaire to cut the strings of time when +D:dire need arises. Its power with that of the Flame Imperishable +D:will let you destroy Melkor forever. + +# The Long Bow of Irmo (Bow-masters) + +N:245:of Irmo +I:19:13:5 +W:127:220:130:8000000 +P:0:0d0:36:28:0 +F:CON | DEX | ESP_EVIL | ESP_ORC | ESP_TROLL | FLY | FREE_ACT | +F:IM_ELEC | INFRA | INVIS | LUCK | NO_MAGIC | PRECOGNITION | +F:REFLECT | RES_BLIND | RES_CHAOS | RES_CONF | RES_DISEN | +F:SEE_INVIS | SLOW_DIGEST | SPECIAL_GENE | SPEED | STEALTH | +F:SUST_CHR | SUST_CON | SUST_DEX | SUST_INT | SUST_STR | +F:SUST_WIS | ULTIMATE | XTRA_MIGHT | XTRA_SHOTS +D:A gift from Orome to Irmo, a mighty bow that sings the songs of the +D:garden of Lorien. It will guide your hand and steady your grip in +D:your encounter with Melkor. + +# The Sling of Nessa (Sling-masters) + +N:246:of Nessa +I:19:2:5 +W:127:220:130:8000000 +P:0:0d0:36:28:0 +F:CON | DEX | ESP_EVIL | ESP_ORC | ESP_TROLL | FLY | FREE_ACT | +F:IM_ELEC | INFRA | INVIS | LUCK | NO_MAGIC | PRECOGNITION | +F:REFLECT | RES_BLIND | RES_CHAOS | RES_CONF | RES_DISEN | +F:SEE_INVIS | SLOW_DIGEST | SPECIAL_GENE | SPEED | STEALTH | +F:SUST_CHR | SUST_CON | SUST_DEX | SUST_INT | SUST_STR | SUST_WIS | +F:ULTIMATE | XTRA_MIGHT | XTRA_SHOTS +D:This sling was made for the most lithe of the Valier to provide +D:her with amusement as she used it to shoot magical pebbles of +D:cheer and charm while dancing in the lush green fields of Valinor. +D:She grants it to you now in your time of trial. + +# The Metal Boomerang of Varda (Boomerang-masters) + +N:247:of Varda +I:15:4:5 +W:127:220:130:8000000 +P:0:0d0:36:28:0 +F:CON | DEX | ESP_EVIL | ESP_ORC | ESP_TROLL | FLY | FREE_ACT | +F:IM_ELEC | INFRA | INVIS | LUCK | NO_MAGIC | PRECOGNITION | +F:REFLECT | RES_BLIND | RES_CHAOS | RES_CONF | RES_DISEN | +F:SEE_INVIS | SLOW_DIGEST | SPECIAL_GENE | SPEED | STEALTH | +F:SUST_CHR | SUST_CON | SUST_DEX | SUST_INT | SUST_STR | SUST_WIS | +F:ULTIMATE | XTRA_MIGHT | XTRA_SHOTS +D:Made from living starlight, this boomerang will dispel the darkest +D:of darkness. It is a gift from Varda Elentari, to aid you in your +D:task. + +# The Amulet of Mandos (Weaponless fighters) + +N:248:of Mandos +I:40:27:0 +W:100:16:60:500000 +P:0:2d4:0:0:85 +F:ACTIVATE | ESP_DRAGON | FEATHER | FLY | HOLD_LIFE | IGNORE_ACID | +F:IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE | REGEN | RES_ACID | +F:RES_BLIND | RES_CHAOS | RES_COLD | RES_CONF | RES_DARK | RES_DISEN | +F:RES_ELEC | RES_FIRE | RES_LITE | RES_NETHER | RES_NEXUS | RES_POIS | +F:RES_SHARDS | RES_SOUND | SPECIAL_GENE | ULTIMATE +a:HARDCORE=BLADETURNER +D:This amulet contains the power of Mandos, the Doomsman of the +D:Valar. It will grant you protection against the foul dark magic +D:of Melkor, though you will still need your wits and strength +D:about you as you face your ultimate foe. + +# XXX 249 Room for another artifact here XXX ### +# XXX 250 Room for another artifact here XXX ### +# XXX 251 Room for another artifact here XXX ### +# XXX 252 Room for another artifact here XXX ### +# XXX 253 Room for another artifact here XXX ### +# XXX 254 Room for another artifact here XXX ### +# XXX 255 Room for another artifact here XXX ### +# XXX 256 Room for another artifact here XXX ### + +### 256 is the maximum number of artifacts (257 in misc.txt). + +# N: serial number : & object name~ +# G: symbol : color +# I: tval : sval : pval +# W: depth : rarity : weight : cost +# P: base armor class : base damage : plus to-hit : plus to-dam : plus to-ac +# F: flag | flag | etc +# D: description diff --git a/lib/mods/theme/edit/ab_info.txt b/lib/mods/theme/edit/ab_info.txt new file mode 100644 index 00000000..4272776a --- /dev/null +++ b/lib/mods/theme/edit/ab_info.txt @@ -0,0 +1,109 @@ +# File: ab_info.txt + + +# This file is used to initialize the "lib/data/ab_info.raw" file, which is +# used to initialize the "abilities" information for the ToME game. + +# Do not modify this file unless you know exactly what you are doing, +# unless you wish to risk possible system crashes and broken savefiles. + +# The ToME abilities indexes are defined in "defines.h", and must not be changed. +# If you want to add new ones, add them after the tome ones + +# N:idx:name +# D:desc +# I:cost(in skill points) +# A:action mkey:action desc + +# Prerequisites +# k:level:skill +# S:level(linear mode):stats +# a:needed ability + +# E:excluding ability:excluding ability + +# If you need more sophisticated prereqs use the HOOK_LEARN_ABILITY + +# Version stamp (required) + +# Do not forget to update misc.txt with an entry like the following : +# Maximum number of traits in ab_info.txt +# M:b:50 + +V:2.2.0 + +N:0:Spread blows +D:If a monster dies to your attack but you still have blows left +D:you won't lose the full turn, allowing you to attack some other +D:monster in the same turn +D:Prereq: Weaponmastery skill@30, Dex@17 +I:5 +k:30:Weaponmastery +S:17:DEX + +N:1:Tree walking +D:Allows you to walk in dense forest +D:Prereq: Nature skill@20 +I:7 +k:20:Nature + +N:2:Perfect casting +D:Allows you to reach 0% failure rate on spells +D:Prereq: Magic skill@35 +I:6 +k:35:Magic + +N:3:Extra Max Blow(1) +D:Increases your max possible blows number by 1 +D:Prereq: Combat@10 +I:7 +k:10:Combat + +N:4:Extra Max Blow(2) +D:Increases your max possible blows number by 1 +D:Prereq: Combat@20, Extra Max Blow(1) +I:7 +k:20:Combat +a:Extra Max Blow(1) + +N:5:Ammo creation +D:Allows you to create shots, arrows and bolts from various materials +D:Prereq: Archery@10 +A:10:Forge ammo +I:8 +k:10:Archery + +N:6:Touch of death +D:Your melee blows can insta-kill, but you only receive 1/3 of the experience +D:Prereq: Necromancy@50, Combat@40, DEX@30, STR@30 +A:100:Activate touch of death +I:15 +k:50:Necromancy +k:40:Combat +S:30:DEX +S:30:STR + +N:8:Far reaching attack +D:You can attack an enemy one square far using a long polearm. +D:At high levels of Polearm-mastery skill, you can even hit two enemies at once. +D:Prereq: Combat@15, Polearm-mastery@15 +I:10 +A:102:Far reaching attack +k:15:Combat +k:15:Polearm-mastery + +N:9:Trapping +D:Ability to set monster traps +D:Prereq: Disarming@15 +I:10 +A:14:Set trap +k:15:Disarming + +N:10:Undead Form +D:Ability to turn into a weak undead being when you "die". +D:You must then kill enough monsters to absorb enough life energy +D:to come back to life. +D:Prereq: Necromancy@30, INT@25 +I:15 +k:30:Necromancy +S:25:INT diff --git a/lib/mods/theme/edit/al_info.txt b/lib/mods/theme/edit/al_info.txt new file mode 100644 index 00000000..c5e7c55d --- /dev/null +++ b/lib/mods/theme/edit/al_info.txt @@ -0,0 +1,12 @@ +# File: al_info.txt + + +# This file is used to initialize the "lib/raw/al_info.raw" file, which is +# used as the alchemist recipes in ToME + +# This file is intentionally blank in Theme +# because the Alchemist class has been removed. + +# Version stamp (required) + +V:2.0.0
\ No newline at end of file diff --git a/lib/mods/theme/edit/ba_info.txt b/lib/mods/theme/edit/ba_info.txt new file mode 100644 index 00000000..b76f79dd --- /dev/null +++ b/lib/mods/theme/edit/ba_info.txt @@ -0,0 +1,310 @@ +# File: ba_info.txt + + +# This file is used to initialize the "lib/raw/ba_info.raw" file, which is +# used to initialize the "store/building actions type" information for +# the Angband game. + +# Do not modify this file unless you know exactly what you are doing, +# unless you wish to risk possible system crashes and broken savefiles. + +# N:<index>:<name> +# C:<hated cost>:<normal cost>:<liked cost> +# I:<action>:<acttion restriction>:<letter> + +# Restriction: +# 0 = No restrictions +# 1 = Restrict to normal & liked +# 2 = Restrict to liked + +# Version stamp (required) + +V:2.0.0 + +N:0:Nothing +C:0:0:0 +I:0:0:. + +N:1:Sell an item +C:0:0:0 +I:43:0:s:d + +N:2:Purchase an item +C:0:0:0 +I:44:0:p:g + +N:3:Examine an item +C:0:0:0 +I:45:0:x + +N:4:Steal an item +C:0:0:0 +I:46:0:Z + +N:5:Rest for the night +C:25:20:15 +I:17:0:r + +N:6:Buy food and drink +C:3:2:1 +I:18:0:f + +N:7:Listen for rumours +C:0:0:0 +I:19:0:u + +N:8:Presage fate +C:600:500:480 +I:42:0:l + +N:9:In-Between +C:0:0:0 +I:12:0:b + +N:10:Play craps +C:0:0:0 +I:14:0:c + +N:11:Spin the wheel +C:0:0:0 +I:15:0:s + +N:12:Play dice slots +C:0:0:0 +I:16:0:d + +N:13:Game rules +C:0:0:0 +I:13:0:r + +N:14:Research item +C:1400:1300:1200 +I:1:0:a + +N:15:Town history +C:0:0:0 +I:2:0:h + +N:16:Race legends +C:0:0:0 +I:3:0:l + +N:17:Look at busts of Kings +C:0:0:0 +I:5:0:l + +N:18:Research monster +C:1600:1500:1400 +I:20:0:r + +N:19:View bounties +C:0:0:0 +I:38:0:v + +N:20:Receive bounty money +C:0:0:0 +I:39:0:b + +N:21:Get quest monster +C:0:0:0 +I:54:0:q + +N:22:Turn in quest corpse +C:0:0:0 +I:55:0:m + +N:23:Compare weapons +C:220:200:180 +I:21:0:c + +N:24:Enchant weapon +C:750:700:150 +I:23:0:w + +N:25:Enchant armour +C:750:700:150 +I:24:0:a + +N:26:Recharge item +C:350:300:75 +I:25:0:r + +N:27:Identify possessions +C:900:800:100 +I:26:0:i + +N:28:Healing prayer +C:600:400:0 +I:28:0:h + +N:29:Restoration +C:600:500:100 +I:29:0:r + +N:30:Get share of stolen gold +C:0:0:0 +I:7:2:g + +N:31:Enchant arrows +C:550:500:100 +I:30:0:a + +N:32:Enchant bow +C:550:500:100 +I:31:0:b + +N:33:Recall to dungeon +C:300:200:100 +I:33:0:r + +N:34:Teleport to dungeon-level +C:15000:10000:1000 +I:34:0:t + +N:35:Get a quest +C:0:0:0 +I:6:0:q + +# Restrict to liked/normal +N:36:Get a quest +C:0:0:0 +I:46:1:q + +N:37:Get a quest +C:0:0:0 +I:47:0:q + +N:38:Get a quest +C:0:0:0 +I:49:0:q + +N:39:Herbal Healing +C:32000:10000:0 +I:50:0:h + +N:40:Song of Lore +C:2000:800:50 +I:26:0:s + +N:41:Distribute earnings +C:0:0:0 +I:7:2:d + +N:42:Morph restoration +C:3000:1500:750 +I:37:0:r + +#for The Mirror +N:43:View fate +C:500:500:500 +I:42:0:v + +#for The Mirror +N:44:Research item +C:1500:1500:1500 +I:1:0:a + +#for library in gondol +N:45:Research item +C:2000:2000:2000 +I:1:0:a + +#for Star-Dome +N:46:Identify possessions +C:1200:1000:250 +I:26:0:i + +#for Star-Dome +N:47:Recharge item +C:1200:1000:150 +I:25:0:r + +#for Valarin Temple +N:48:Restoration +C:1200:1000:200 +I:29:0:r + +#for Sea-Dome +N:49:Morph restoration +C:1500:1500:1500 +I:37:0:r + +#for The Golden Flower +N:50:Enchant arrows +C:1100:1000:200 +I:30:0:a + +#for The Golden Flower +N:51:Enchant bow +C:1100:1000:200 +I:31:0:b + +#for The Fountain +N:52:Enchant armour +C:1100:1000:200 +I:24:0:a + +#for The Fountain +N:53:See Healers +C:1100:1000:0 +I:28:0:h + +N:54:Drop an item +C:0:0:0 +I:43:0:d:s + +N:55:Get an item +C:0:0:0 +I:44:0:g:p + +N:56:Request an item +C:0:0:0 +I:51:2:r + +N:57:Ask for loan +C:0:0:0 +I:52:2:a + +N:58:Pay back loan +C:0:0:0 +I:53:2:p + +N:59:Donate an item +C:0:0:0 +I:43:0:d + +# Mage Tower quest in Lothlorien +N:60:Get a quest +C:0:0:0 +I:56:0:q + +N:61:Get a quest +C:0:0:0 +I:61:0:q + +# Free rest for the night option for homes +N:62:Rest for the night +C:0:0:0 +I:17:0:r + +# Free rest for the night option at some 'town' locations +# Restricted to 'liked' races for thematic reasons +N:63:Rest for the night +C:0:0:0 +I:17:2:r + +# Enchant arrows option with a different letter for Imladris forge +N:64:Enchant arrows +C:550:500:100 +I:30:0:r + +# Getting free dinner at some 'town' locations +# Restricted to 'liked' races for thematic reasons +N:65:Get food and drink +C:0:0:0 +I:18:2:f + +# Ask Bard for directions to Erebor +N:66:Ask about Erebor +C:0:0:0 +I:66:0:a
\ No newline at end of file diff --git a/lib/mods/theme/edit/between.map b/lib/mods/theme/edit/between.map new file mode 100644 index 00000000..4fed5c95 --- /dev/null +++ b/lib/mods/theme/edit/between.map @@ -0,0 +1,71 @@ +# Created by Mynstral (mynstral@thehelm.com) +# Made for PernAngband on 14/08/2001 + +# Monsters starts awake +N:0 + +# Permanent wall +F:X:63:3 + +# Floor with dirt +F:.:88:3 + +# Floor with grass +F:,:89:3 + +# Tree +F:T:96:3 + +# Floor with grass with a green thunderlord +F:G:89:5:955 + +# Floor with grass with a blue thunderlord +F:L:89:5:956 + +# Floor with grass with a brown thunderlord +F:B:89:5:957:0:0:0:0:0:0:2 + +# Floor with grass with a bronze thunderlord +F:z:89:5:958:0:0:0:0:0:0:2 + +# Floor with dirt with a bronze thunderlord +F:Z:88:5:958:0:0:0:0:0:0:2 + +# Floor with grass with a gold thunderlord +F:D:88:5:959:0:0:0:0:0:0:2 + +D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +D:X..T.TT..T...T...T...T.....T....T......T...T.,,.....T......T....T...T.T..T..TT...T..T.TT.T.TT.TX +D:X.T.TTTTT...T..TT..T..T.T.T.T...T.....T..T.TT,,..T...T.....T..T......T..T.T..T.T.TT.T.T.T..TTT.X +D:XTTT.T.T.T.T..TTT.T.T.TTT.T.T.T..T..T.T..T..T.,,..T....T....T..T.T.T..T.T..T.T.TT.T.TT.TT.TTT.TX +D:XTTT.T...T....T....T..T.TT..T.T.T...T...GG....,,...GG....T...T...T.TTT.T..TTTT.TT...T.TT..T.T.TX +D:X.TTT..T.T..TTTT.T.T..T..T.TT...T......G..L..,,...L..G..T..T.T...T....T.TTTTTT..TTTTT.T..TT..T.X +D:XTT.T.TTT.T.T.T.T.T.T.T...T..T...T..T.G..L..B,,.B..L..G....T..T...TT.T.T..TTT.T.TTTT.TTTT..T.T.X +D:X.T.TT..T.TT.TTT.T.T.T.T.T.T...T.T.T.G..L..B.,,..B..L..G..T..T...T...T.T.T..TTTT.T.T.TT.T.T.TT.X +D:X.TT.T.TTT.T.T.T.T..T.T..T....T..T..G..L..B..,Z...B..L..G..T...T.T..T...T...T.T.T.TTT.T.T.T..T.X +D:XT.T.TT.TTTT.TT.T.TTT...T.T.T...T.T.G..L..B..ZDz..B..L..G...T.T...T.T...T..T..T...T..T.TT.T.T.TX +D:XTTT..TTTT.T.T.T..T.T....T...T..T.T..G..L..B.,,..B..L..G..T....T...T....T....T..T..TT.T.T.TTT..X +D:XTT.TT..T.T.T.T.T...T...T....T.T..T.T.G..L...,,....L..G..T..T...T..T.......T...T....T..T..TT...X +D:XTTT.T..T.T..T.T..T...T..T....TT..T.T..GG....,,.....GG...T.T...T.T...T..T.T...T....T...T..T.T..X +D:XTT...T.T..T....T....T....T....T...T....T.T..,,,.....T...T..T...T.....T...T...T..T..T...T..T.T.X +D:XT..T.T...T...T...T.....T....T....T....T...TTTTTTTT...T...T...T....T.....T......T....T.....T..TX +D:XT.T...T...T..T.T...T.T.T..T...T.T...T...T.T...,.T...T...T...T...T..T.....T....T....T...T...T.TX +D:XTT.T.T.T.T..T..T.T.T.....T....T..T...T.......,,..T........T...T...T...T...T.....T..T..T...TTT.X +D:X..TT...T..T.....T...T....T...T...T...T..T...,,.....T..T..T.....T.T...T...T...T..T..T.T...T.TT.X +D:X.TT..T....T.T..T...T..T...T..T.T.T..T..T.T.,,..T..T..T....T..T..T...T.T....T....T...TT.TTTTTT.X +D:X.T.TTTTTT.T.T.T...T..T..T.....T.T..T...T.T.,,...T...T......T.....T....T...T..T....T..TT.TTTTTTX +D:XTTT.T.T.TTTTT.TTT...T..T...TT.T.T...T.T....,,.T...T.....T.....T....T.......T..T...T.TT.T.T.TT.X +D:XTT.T..T.TT.T.T.TT.T...T.T..T.T.......T..T.,,.....T....T....T...........T..T...TT.TTTTTTTTTTTTTX +D:XTTTT....TT.T.T.TTTTT.T...T..T.T..T......T.,,T......T....T....T.....T...T...T..TTTT.T.TT.T.TTTTX +D:XTT.TTTTTT.T.TT.TTTTTT...T....TT.T...T....,,.T...T....T.....T....T....T....T..TT.T.TTT.T.T.T.TTX +D:XTT.T..TTT.T.T.TTTTTTTT.T...T....T....T.T,,.........T....T....T....T...T.T.T.TTT.T.T.T.T..T.T.TX +D:XTT.T..TTT..T.T.T.T.TT..T.T.T......T.T.T.,,..T...T...T...T..T...T...T.T.TTT.T.T.T.T.T.T.T.T..T.X +D:X.T.T.T.T.T.T..T.T.T.T.T.T..T...T..T.TT.T.,,..T...T.....T.....T.....T..TTT.T.T.TTTTT.T.TTT.TT.TX +D:XTT.T.T.T.TTTT.T..T.T.T.TTTT.T..T.T..T.TT.,,.T...T..T..T.......T.T....TTTTT.TTTT.T.TTT.TTTT.T.TX +D:XT.T.TT.TTTT.T.T.T.TTT.T.T.TT......T...T...,,..T...T...T....T....T.TTT.T.T.T.T.T.T..T.T.T.T.TT.X +D:XT.TTT.T.T.TTTT.T.T.T.T.TTT.TT..T...T...T..,,..T...T....T....T..TT.T.TT.TTTTT.T.T.TT.TT.TT.T.T.T +D:XTT.T.T.TT.T.TTTT.T..TT.T.T.TT.T.T.T..T....,,.T...T...T....T..TTTTTTTT.T.T.T.T.T.TT.T.TTTTT.T.TX +D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + +# Starting position +P:17:47 diff --git a/lib/mods/theme/edit/d_info.txt b/lib/mods/theme/edit/d_info.txt new file mode 100644 index 00000000..c54c9f8f --- /dev/null +++ b/lib/mods/theme/edit/d_info.txt @@ -0,0 +1,701 @@ +# File: d_info.txt + + +# This file is used to initialize the "lib/raw/d_info.raw" file, which is +# used to initialize the "dungeon type" information for the Angband game. + +# Do not modify this file unless you know exactly what you are doing, +# unless you wish to risk possible system crashes and broken savefiles. + +# Some store indexes are defined in "defines.h", and must not be +# changed. + +# N:<index>:<name> +# D:<3 letter short name>:<long name> +# W:<min depth>:<max depth>:<min player level>:<next dungeon>:<min alloc>:<max alloc chance> +# L:<floor1>:<%1>:<floor2>:<%2>:<floor3>:<%3> +# A:<wall1>:<%1>:<wall2>:<%2>:<wall3>:<%3>:<outer wall>:<inner wall> +# O:<%treasure>:<%combat>:<%magic>:<%tools> +# E:<dices>d<sides>:<frequency>:<attack type> +# F:<flags> +# R:<percent>:<flags mode> +# M:<monster flags> +# S:<monster spells> + +# Note for <flags mode> : +# 0 = No restriction +# 1 = AND +# 2 = NAND +# 3 = OR +# 4 = NOR + +# Version stamp (required) + +V:2.0.0 + +### Wilderness(purely cosmetic, never used) ### + +N:0:Wilderness +D:Wil:a way to the Wilderness +W:0:0:0:0:14:500 +L:89:80:199:20:1:0 +A:96:100:56:0:56:0:57:58 +O:20:20:20:20 +F:PRINCIPAL | FLAT | NO_RECALL +R:100:0 + +### The principal dungeons, they were created by spliting the vanilla dungeon ### + +N:1:Mirkwood +D:Mkw:a way to the Mirkwood Forest. +W:11:33:5:0:14:160 +L:89:95:199:5:88:0 +A:96:100:97:0:56:0:202:96 +O:20:20:20:20 +F:PRINCIPAL | NO_DOORS | NO_DESTROY | FLAT +F:FILL_METHOD_0 +R:100:0 + +N:2:Barad-Dur +D:BDr:a door to the tower of Barad-Dur. +W:34:66:15:0:14:160 +L:88:67:93:33:1:0 +L:0:100:0 +A:97:50:56:50:56:0:57:97 +A:0:100:0 +O:20:20:20:20 +F:PRINCIPAL | LAVA_RIVER | CAVERN | NO_STREAMERS +F:FILL_METHOD_2 | NO_RECALL +R:100:0 + +N:3:Angband +D:Ang:an entrance to the Pits of Angband. +W:67:100:30:0:14:160 +L:1:100:1:0:1:0 +A:56:100:56:0:56:0:57:58 +O:20:20:20:20 +F:PRINCIPAL | CAVERN | NO_EASY_MOVE | NO_RECALL +F:ADJUST_LEVEL_1_2 | ADJUST_LEVEL_1 +F:FILL_METHOD_0 +R:100:0 + +N:4:Barrow-Downs +D:BDw:a way to the Barrow-Downs. +W:1:10:1:0:14:160 +# Theme adds *fog* (dense mist) on the Barrow-Downs :) +L:88:94:210:2:199:4 +A:96:80:97:19:57:1:57:97 +A:100:0:0 +O:20:20:20:20 +F:PRINCIPAL | FLAT +F:FILL_METHOD_3 +R:25:1 +M:UNDEAD +R:75:0 + +# The Additional dungeons + +# Mount Doom +# Levels 85-99 +N:5:Orodruin +D:MDm:a way to the top of the Mount Doom. +W:85:99:18:0:14:160 +L:86:90:205:10:1:0 +A:177:100:0:0:0:0:85:87 +O:10:10:30:30 +E:2d10:10:FIRE +F:CAVE | LAVA_RIVER | NO_RECALL | NO_STREAMERS +F:FILL_METHOD_0 | NO_EASY_MOVE +R:100:1 +M:IM_FIRE + +# Nether Realm +# Levels 666-696 (!!!) +# guarded by Tik'srvzllat, who has the Ring 'Fuin' +N:6:Nether Realm +D:Nth:a magical portal to the Nether Realm. +W:666:696:40:0:14:160 +L:102:80:86:15:85:5 +A:85:80:87:20:87:0:57:85 +A:50:50:0 +O:25:25:25:25 +E:10d10:3:NETHER +F:EMPTY | FORGET | NO_BREATH | NO_EASY_MOVE | NO_SHAFT +F:ADJUST_LEVEL_2 | NO_RECALL | NO_STREAMERS +F:LAVA_RIVER | FINAL_GUARDIAN_1032 | FINAL_ARTIFACT_203 +F:FILL_METHOD_2 | NO_RECALL_OUT +R:5:0 +R:95:3 +M:RES_NETH | R_CHAR_G | R_CHAR_W | R_CHAR_U + +# The Lost Land of Numenor +# levels 35-50 +# guarded by Ar-Pharazon the Golden, who has the stone "Coimir". +N:7:Submerged Ruins +D:Num:a submerged way to the lost land of Numenor. +W:35:50:25:0:14:160 +L:84:95:187:5:1:0 +A:187:80:84:10:56:10:57:187 +A:60:0:40 +O:30:30:10:10 +E:1d1:1:ACID +F:NO_STREAMERS +F:FINAL_GUARDIAN_980 | FINAL_ARTIFACT_204 +F:FILL_METHOD_3 | WATER_BREATH +R:20:0 +R:80:3 +M:AQUATIC | CAN_SWIM | CAN_FLY + +# Used for astral mode +N:8:Halls of Waiting +D:HWa:*A BUG*YOU should see this message!* +W:1:98:1:0:14:160 +L:1:100:1:0:1:0 +O:20:20:20:20 +A:56:100:56:0:56:0:57:58 +F:RANDOM_TOWNS | NO_RECALL | NO_SHAFT +F:FILL_METHOD_0 +R:100:2 +M:UNIQUE + +# Cirith Ungol +# levels 25-50 +# guarded by Shelob. +# Updated for Theme to lead out into Gorgoroth a la Moria +N:9:Cirith Ungol +D:CUg:an entrance to Cirith Ungol. +W:25:50:10:0:14:160 +L:87:5:88:65:16:30 +A:97:90:16:10:56:0:16:58 +O:30:30:30:10 +E:4d4:20:POISON +F:FINAL_GUARDIAN_481 +F:RANDOM_TOWNS | CIRCULAR_ROOMS +F:FILL_METHOD_2 +F:FORCE_DOWN +F:WILD_65_56__67_53 +R:2:0 +R:49:3 +M:SPIDER | R_CHAR_a | R_CHAR_I | +R:49:3 +M:ORC | R_CHAR_w | R_CHAR_m | R_CHAR_j + +# The Heart of the Earth +# levels 25-36 +# guarded by Golgarach, the Living Rock +N:10:Heart of the Earth +D:HoE:a passage leading into the very heart of the world. +W:25:36:10:0:14:160 +L:1:100:1:0:1:0 +A:56:100:56:0:56:0:57:58 +O:40:10:10:20 +G:life +F:EVOLVE | FINAL_GUARDIAN_1035 | NO_RECALL | NO_SHAFT +R:40:3 +M:R_CHAR_# | R_CHAR_X | R_CHAR_g | R_CHAR_E | +R:30:3 +M:PASS_WALL | KILL_WALL | HURT_ROCK +R:30:0 + +# The Void +# Levels 128-150 +# Where Melkor lurks for the final battle! +N:11:The Void +D:Vod:a jumpgate to the Void +W:128:150:40:0:20:160 +L:183:97:102:3:0:0 +A:183:90:102:10:0:0:102:102 +A:40:60:0 +O:25:25:25:25 +E:20d6:100:DARK +F:EMPTY | FORGET | NO_BREATH | NO_EASY_MOVE | NO_RECALL_OUT | NO_RECALL | +F:ADJUST_LEVEL_1_2 | ADJUST_LEVEL_1 | NO_STREAMERS | NO_SHAFT +F:FILL_METHOD_2 +F:FINAL_GUARDIAN_1044 | +R:1:0 +R:99:3 +M:UNDEAD | DEMON | DRAGON | NONLIVING | SPIRIT + +# TEST dungeon +N:12:Test +D:Tst:a way to test dungeon gen +W:1:10:1:0:14:160 +L:88:78:89:18:199:4 +L:0:95:5 +A:177:100:0:0:0:0:85:87 +A:100:0:0 +O:20:20:20:20 +F:FILL_METHOD_3 | SMALL +R:100:0 +G:dungeon2 + + +# The Paths of the Dead +# levels 40-70 +# Feagwath is there, guarding Doomcaller +N:16:Paths of the Dead +D:PoD:the entrance to the Paths of the Dead. +W:40:70:18:0:24:100 +L:88:85:84:15:1:0 +A:56:75:87:25:56:0:57:58 +O:30:30:30:2 +E:1d1:20:RAISE +F:FINAL_GUARDIAN_804 | FINAL_ARTIFACT_91 +F:FILL_METHOD_3 +R:5:0 +R:10:3 +M:R_CHAR_p +R:85:3 +M:UNDEAD | NONLIVING + +# The Illusory Castle +# levels 35-52 +# Guarded by The Glass Golem guarding The Helm of Knowledge +N:17:Illusory Castle +D:Ill:an entrance to the Illusory Castle. +W:35:52:10:0:24:100 +L:1:98:188:2:1:0 +A:56:50:189:50:56:0:57:58 +O:50:10:20:20 +E:6d2:6:CONFUSION +F:RANDOM_TOWNS | NO_STREAMERS +F:FINAL_GUARDIAN_1033 | FINAL_ARTIFACT_160 +F:FILL_METHOD_1 +R:30:0 +R:70:3 +M:STUPID | WEIRD_MIND | SHAPECHANGER | ATTR_MULTI | CHAR_MULTI | RAND_25 | +M:RAND_50 | EMPTY_MIND | INVISIBLE | PASS_WALL | KILL_WALL +S:BR_CONF | BR_CHAO | BA_CHAO | CONF | FORGET | TRAPS | MULTIPLY + +# The Maze +# Levels 25-37 +# Guarded by The Minotaur of the Labyrinth with the Steel Helm of Hammerhand +N:18:Maze +D:Maz:a small tunnel leading to a maze of twisty little passages, all alike. +W:25:37:15:0:20:160 +L:1:100:1:0:1:0 +A:56:98:48:2:56:0:57:58 +O:2:40:10:40 +G:maze +F:SMALLEST | FORGET +F:FINAL_GUARDIAN_1029 | FINAL_ARTIFACT_38 +R:80:0 +R:20:3 +M:R_CHAR_p + +# The Orc Cave +# levels 10-22 +# There is Azog with the Wand of Thrain at the bottom +N:19:Orc Cave +D:Orc:a dark tunnel leading to an Orc Cave. +W:10:22:8:0:35:200 +L:88:100:1:0:1:0 +A:97:100:56:0:56:0:57:97 +O:5:50:10:25 +F:RANDOM_TOWNS | +F:FINAL_OBJECT_810 | FINAL_GUARDIAN_373 | CAVE | +F:FILL_METHOD_0 +F:FORCE_DOWN +F:WILD_21_49__51_19 +R:30:3 +M:TROLL +R:20:0 +R:50:3 +M:ORC | R_CHAR_o | R_CHAR_O + +# Erebor +# levels 60-72 +# There is Glaurung +N:20:Erebor +D:Ere:a tunnel leading into depths of the Lonely Mountain. +W:60:72:35:0:20:140 +L:88:100:1:0:1:0 +A:97:90:87:10:56:0:57:97 +O:40:40:40:40 +F:BIG | LAVA_RIVER | CAVERN | NO_RECALL | NO_STREAMERS +F:CAVE | DOUBLE | FINAL_GUARDIAN_715 | +F:FILL_METHOD_2 +R:10:0 +R:60:1 +M:DRAGON | R_CHAR_D +R:30:1 +M:DRAGON | R_CHAR_d + +# The Old Forest +# levels 13-25 +# Old Man Willow protects it +N:21:The Old Forest +D:OFr:a path into the Old Forest. +W:13:25:5:0:15:100 +L:88:76:84:16:199:8 +L:68:16:16 +A:96:100:56:0:56:0:202:96 +O:20:5:15:30 +F:WATER_RIVERS | NO_DOORS | NO_DESTROY | FLAT | NO_STREAMERS +F:RANDOM_TOWNS | FINAL_GUARDIAN_206 +F:FILL_METHOD_3 +R:30:0 +R:40:3 +M:ANIMAL +R:30:3 +M:UNDEAD | R_CHAR_h | R_CHAR_l + +# The Mines of Moria +# levels 30-50 +# There is Durin's Bane +N:22:Moria +D:MoM:a stone door leading to the Mines of Moria. +W:30:50:20:0:40:40 +L:88:100:1:0:1:0 +A:97:100:56:0:56:0:57:97 +O:30:50:10:5 +F:FINAL_GUARDIAN_872 | WATER_RIVER | NO_STREAMERS +F:FORCE_DOWN +F:RANDOM_TOWNS +F:WILD_45_30__44_37 +F:FILL_METHOD_0 +R:40:3 +M:ORC +R:30:3 +M:TROLL | GIANT +R:20:3 +M:DEMON +R:10:0 + +# The tower of Dol Guldur +# Levels 57-70 +# The Necromancer (weak Sauron) at the bottom, with the Ring of Durin +N:23:Dol Guldur +D:TDG:a gate leading to the tower of Dol Guldur. +W:57:70:34:0:24:160 +L:1:80:174:20:1:0 +A:56:100:56:0:56:0:57:58 +O:20:1:70:9 +F:SMALL | FINAL_GUARDIAN_819 | FINAL_ARTIFACT_205 +F:FILL_METHOD_3 +R:30:3 +M:R_CHAR_p | R_CHAR_P +R:10:3 +M:ORC | TROLL +R:20:3 +M:UNDEAD +R:30:3 +M:DEMON | DRAGON +R:10:0 + +# Dungeons from Variaz + +# The Small Water Cave +# levels 32-34 +# The Watcher in the Water is at the bottom +N:24:The Small Water Cave +D:SWC:the entrance to a small water cave. +W:32:34:20:0:14:160 +L:84:100:84:0:84:0 +A:97:100:56:0:56:0:57:58 +O:10:10:30:30 +E:1d1:20:ACID +F:FINAL_GUARDIAN_517 | NO_RECALL +F:FILL_METHOD_0 +R:10:0 +R:10:3 +M:AQUATIC +R:40:1 +M:IM_COLD +S:BA_WATE +R:40:3 +M:IM_COLD + +# The Land of Mountains +# Trone the rebel Thunderlord is hiding here, with +# the Robe of Curunir (Theme update as Trone's coat is gone) +# Levels 45-70 +N:25:The Sacred Land Of Mountains +D:LoM:the way to the Sacred Land of Mountains. +W:45:70:20:0:14:160 +L:89:100:89:0:89:0 +A:97:100:56:0:56:0:97:97 +O:20:20:20:20 +F:RANDOM_TOWNS | FLAT | NO_STREAMERS +F:FINAL_GUARDIAN_789 | FINAL_ARTIFACT_228 +F:FILL_METHOD_0 +R:60:3 +M:CAN_FLY +R:40:0 + +# The Land of Rhun +# levels 26-40 +# Guarded by Ulfang the Black, Morgoth's first Easterling follower. +N:26:The Land Of Rhun +D:LoR:a way to the Land of Rhun. +W:26:40:15:0:14:160 +L:89:100:1:0:1:0 +A:89:50:96:25:84:25:57:58 +O:20:20:20:20 +F:RANDOM_TOWNS | FLAT | NO_STREAMERS | FINAL_GUARDIAN_990 +F:FILL_METHOD_1 +R:30:3 +M:R_CHAR_p | R_CHAR_h | R_CHAR_l +R:30:3 +M:ANIMAL +R:40:0 + +# The Withered Heath +# level 22-30 +# guarded by the Sandworm Queen (and her children), who will drop her armour +N:27:The Withered Heath +D:SwL:the Withered Heath, from whence came the Great Worms. +W:22:30:12:0:5:200 +L:91:85:94:10:93:5 +A:98:100:96:0:84:0:94:94 +O:15:5:60:20 +F:NO_DOORS | SAND_VEIN | +F:FINAL_GUARDIAN_1030 | FINAL_ARTIFACT_153 +F:FILL_METHOD_0 +R:100:1 +M:R_CHAR_w +R:10:3 +S:MULTIPLY + +# Used by the death fate +N:28:Death fate +D:Dth:a fated death. +W:1:1:1:0:30:255 +L:1:100:1:0:1:0 +A:1:100:1:0:1:0:1:1 +O:1:1:1:1 +F:EMPTY | SMALLEST | NO_RECALL | NO_STREAMERS +F:FILL_METHOD_0 +R:100:0 + +# The Grinding Ice +# levels 20-40 +# Guarded by Elenwe the Lost +N:29:The Helcaraxe +D:Ice:the entrance to the Grinding Ice of the Helcaraxe. +W:20:40:10:0:14:160 +L:90:0:88:70:84:30 +L:90:0:10 +A:95:0:56:100:56:0:57:58 +A:100:0:0 +O:20:20:20:20 +E:1d4:15:COLD +F:DOUBLE | WATER_RIVER | CAVERN | NO_STREAMERS +F:FINAL_GUARDIAN_1034 | +F:FILL_METHOD_2 +R:100:1 +M:IM_COLD + +# The Lost Temple of "..player.pgod.." +# Generated in god quest. +# Most dungeon attributes altered during the quest. +# See god.lua for details +N:30:a Lost Temple +D:LTm:the entrance to a lost temple. +W:1:50:1:0:14:160 +L:1:100:1:0:1:0 +A:56:100:56:0:56:0:57:58 +O:20:20:20:20 +F:FILL_METHOD_4 | NO_RECALL +R:100:0 + +### New dungeons added for Theme module ### + + +# Forodwaith +# levels 75-80 +# Guarded by The Hunter +N:31:Forodwaith +D:NWa:a path leading through the wastelands of the North +W:75:80:40:0:14:160 +# ice, ash, and dirt +L:90:20:93:40:88:40 +#Ugly - using floor tiles for walls, only rooms have real walls +A:90:20:93:40:88:40:88:211 +O:20:20:20:20 +# it is always dark here in the northern wastelands +E:2d4:1:DARK +F:NO_DOORS | CAVERN | COLD | NO_DESTROY | EMPTY | FLAT | +F:NO_RECALL | LIFE_LEVEL | NO_STREAMERS | NO_SHAFT | +F:FINAL_GUARDIAN_389 | +F:FILL_METHOD_4 +R:100:3 +M:COLD_BLOOD | HURT_LITE | IM_COLD + +# Emyn Luin +# levels 60-70 +# Guarded by Naugladur, who has Nauglamir +N:32:Emyn Luin +D:ELu:a path into the depths of the Blue Mountains +W:60:70:30:0:14:160 +# grass, flowers, and dirt +L:89:45:81:5:88:50 +# blue mountains, granite, hailstones +A:215:100:215:0:215:0:56:211 +# lots of treasure, not much magic +O:50:20:10:30 +F:CAVE | CAVERN | CIRCULAR_ROOMS | RANDOM_TOWNS | +F:NO_STREAMERS | NO_RECALL | NO_DESTROY +# no_recall because it should not be so easy to get Nauglamir. :P +F:FINAL_GUARDIAN_457 | FINAL_ARTIFACT_6 +F:FILL_METHOD_3 +R:100:0 +M:R_CHAR_k | R_CHAR_o + +#Dol Amroth - Castle of Prince Imrahil +#levels 25-35 +#Guarded by Prince Imrahil (yes, he's evil in this game) +N:33:Dol Amroth +D:DAm:a way to the top of the castle of Dol Amroth +W:25:35:15:0:14:160 +# Vanilla-style +L:1:100:1:0:1:0 +A:56:100:56:0:56:0:57:58 +O:20:20:20:20 +F:SMALLEST | NO_DESTROY | TOWER | RANDOM_TOWNS | +F:ADJUST_LEVEL_1 | NO_STREAMERS | NO_SHAFT | NO_STAIR | +F:NO_EASY_MOVE | FILL_METHOD_2 +F:FINAL_GUARDIAN_402 | +R:80:3 +M:R_CHAR_p | R_CHAR_P +R:20:3 +M:SMART | TAKE_ITEM + +#Angmar +#levels 80-90 +#Guarded by Fuinur, who has Eowyn's sword +N:34:Angmar +D:WRA:a dark path through the Witch Realm of Angmar +W:80:90:49:0:14:160 +# Tainted, dark, evil +L:93:70:174:20:226:10 +# Dark mountain chains only +A:214:100:214:0:214:0:214:214 +O:20:20:20:20 +# In addition to swamp water poison, we have disenchantment +E:1d1:1:DISENCHANT +F:ADJUST_LEVEL_1_2 | NO_DOORS | NO_STREAMERS | +F:HOT | FLAT | NO_SHAFT | NO_NEW_MONSTER | CIRCULAR_ROOMS | +F:FINAL_GUARDIAN_242 | FINAL_ARTIFACT_110 +F:FILL_METHOD_2 +R:50:0 +R:50:3 +M:RES_DISE | UNDEAD | DEMON | NONLIVING + +#Near Harad +#levels 20-25 +#Guarded by Herumor, who has the heavy crossbow of Umbar +N:35:Near Harad +D:NHa:a desert path into Near Harad +W:20:25:15:0:14:160 +#It's a desert, so sand and only sand +L:91:100:91:0:91:0 +#Ugly - using floor tiles for walls, only rooms have real walls +A:91:100:91:0:91:0:98:91 +O:20:20:20:20 +#Living is slow in the desert, heh :) +E:1d1:1:INERTIA +F:NO_DOORS | CAVE | CAVERN | HOT | NO_DESTROY | EMPTY | FLAT +F:RANDOM_TOWNS | NO_STREAMERS | NO_SHAFT | +F:FINAL_GUARDIAN_395 | FINAL_ARTIFACT_171 +F:FILL_METHOD_4 +#It's a desert (sort of wilderness) so WILD_TOO monsters, plus the 'p's for the Haradrim +R:30:0 +R:70:3 +M:WILD_TOO | R_CHAR_p + +#Isengard - Orc Cave on steroids. +#levels 35-40 +#It ends in a special level with the Palantir of Orthanc and Sharkey +N:36:Isengard +D:Isg:a passage to the caves beneath Isengard +W:35:40:20:0:14:160 +# Like the Orc caves +L:88:100:1:0:1:0 +A:97:100:56:0:56:0:57:97 +O:20:20:20:20 +F:CAVE | ADJUST_LEVEL_2 | NO_STREAMERS | +F:FILL_METHOD_0 +R:20:0 +R:30:3 +M:TROLL | R_CHAR_T | +R:50:3 +M:ORC | R_CHAR_o | R_CHAR_O + +# Tol Eressea - of course you never actually set foot on Tol Eressea ;) +# levels 40-45 +# Guarded by Marda and the Robe of Belegaer +N:37:Tol Eressea +D:TEr:a way to the Lonely Isle +W:40:45:40:0:14:160 +# shallow water, lilies +L:84:60:222:40:222:0 +# Going to have to add walls here to avoid being overly nasty +A:211:100:211:0:211:0:211:211 +# As little loot as possible, this is open water, after all +O:1:1:1:1 +F:SMALLEST | NO_DOORS | NO_DESTROY | EMPTY | FLAT | +F:ADJUST_LEVEL_1 | NO_STREAMERS | NO_SHAFT | NO_NEW_MONSTER | +F:FINAL_GUARDIAN_791 | FINAL_ARTIFACT_219 | +F:FILL_METHOD_0 +R:1:0 +R:99:1 +M:R_CHAR_B + +#Utumno +#levels 101-127 +#Guarded by no one (yet!) +N:38:Utumno +D:Utu:an entrance to the depths of Utumno +W:101:127:30:0:14:160 +L:1:100:1:0:1:0 +A:56:100:56:0:56:0:57:58 +O:20:20:20:20 +F:CAVERN | NO_EASY_MOVE | NO_RECALL +F:ADJUST_LEVEL_1_2 | ADJUST_LEVEL_1 +F:FILL_METHOD_0 +R:100:0 + +# Bilbo's trail in the Barrow-downs +# just one special level that later becomes a different one, sans princess. +N:39:Bilbo's trail +D:Btr:a trail left by a fleeing hobbit +W:10:10:1:0:14:160 +L:88:94:210:2:199:4 +A:96:80:97:19:57:1:57:97 +A:100:0:0 +O:20:20:20:20 +F:FLAT +F:FILL_METHOD_3 +R:25:1 +M:UNDEAD +R:75:0 + +# Thorin's trail in Mirkwood +# just one special level that later becomes a different one, sans princess. +N:40:Thorin's trail +D:Ttr:a trail left by a purposeful dwarf +W:33:33:15:0:14:160 +L:89:95:199:5:88:0 +A:96:100:97:0:56:0:202:96 +O:20:20:20:20 +F:NO_DOORS | NO_DESTROY | FLAT +F:FILL_METHOD_0 +R:100:0 + +# N:<index>:<name> +# D:<3 letter short name>:<long name> +# W:<min depth>:<max depth>:<min player level>:<next dungeon>:<min alloc>:<max alloc chance> +# L:<floor1>:<%1>:<floor2>:<%2>:<floor3>:<%3> +# A:<wall1>:<%1>:<wall2>:<%2>:<wall3>:<%3>:<outer wall>:<inner wall> +# O:<%treasure>:<%combat>:<%magic>:<%tools> +# E:<dices>d<sides>:<frequency>:<attack type> +# F:<flags> +# R:<percent>:<flags mode> +# M:<monster flags> +# S:<monster spells> +# 0 = No restriction +# 1 = AND +# 2 = NAND +# 3 = OR +# 4 = NOR diff --git a/lib/mods/theme/edit/dragons.map b/lib/mods/theme/edit/dragons.map new file mode 100644 index 00000000..164c97c8 --- /dev/null +++ b/lib/mods/theme/edit/dragons.map @@ -0,0 +1,43 @@ +# permanent wall +F:X:61:0 + +# Mountain Chain +F:^:97:0 + +# granite +F:#:57:0 + +# up staircase +F:<:6:0 + +# Dirt +F:.:88:0 + +# Dungeon layout +D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +D:X^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^X +D:X^^^^^.....................^^^^^X +D:X^^^.........................^^^X +D:X^^...........................^^X +D:X^^...........................^^X +D:X^.............................^X +D:X^.............................^X +D:X^.............................^X +D:X^.............................^X +D:X^.............................^X +D:X^.............................^X +D:X^.............................^X +D:X^.............................^X +D:X^.............................^X +D:X^.............................^X +D:X^.............................^X +D:X^^...........................^^X +D:X^^...........................^^X +D:X^^^........................<^^^X +D:X^^^^^.....................^^^^^X +D:X^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^X +D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + +# Starting position +P:6:6 + diff --git a/lib/mods/theme/edit/e_info.txt b/lib/mods/theme/edit/e_info.txt new file mode 100644 index 00000000..72b8348e --- /dev/null +++ b/lib/mods/theme/edit/e_info.txt @@ -0,0 +1,3007 @@ +# File: e_info.txt + + +# This file is used to initialize the "lib/data/e_info.raw" file, which is +# used to initialize the "ego-item" information for the Angband game. + +# Do not modify this file unless you know exactly what you are doing, +# unless you wish to risk possible system crashes and broken savefiles. + +# After modifying this file, delete the "lib/data/e_info.raw" file. + +# The ego-item indexes are defined in "defines.h", and must not be changed. + +# Note that every "ego-item" type has a different "index", and can only be +# created from items that belong to a certain "slot" in the equipment, if +# one assumes that "ammo" belongs to an imaginary slot (23). However, it +# is possible for several "ego-item" types to have the same "textual name", +# such as with "Armor of Resistance" and "Shield of Resistance". + +# === Understanding e_info.txt === + +# N: serial number : ego type +# D: description +# T: tval : min sval : max sval +# R: rarity +# X: position : slot : rating +# W: depth : rarity1 : rarity2 : cost +# C: to-hit : to-dam : to-ac : pval +# r:N:needed flags on the base object +# r:F:forbidden flags on the base object +# Z: granted_power +# F: flags + +# 'N' indicated the beginning of an entry. The serial number must increase +# for each new item. + +# 'D' contains description. This field is currently not supported. + +# 'T' is for possible tval and sval value of the base item. +# Up to 5 entries are possible. + +# 'R' stands for rarity, or randomness. It specifies percentual chance +# of generated item to have following 'F' flags. I.e. 'R:40' followed +# by 'F:SPEED' means, that 40% of item of this ego type will boost speed. + +# 'X' is for extra information. Position value 'A' means that ego-type name +# will appear after base-item name ('Robe of Permanence'), value 'B' means +# that ego-type name will appear before base-item name ('Elven Plate Mail'). +# Slot is determining in which equipment slots item could be equipped. This +# value is currently ignored. Rating determines how level feeling will be +# affected. + +# 'W' is for extra information. Depth is the depth the object is normally +# found at, rarity determines how common the object is and cost is the items +# value. + +# 'C' stands for 'creation'. It determines maximal to-hit, to-damage, AC and +# stats (pval) values item can get. + +# 'Z' is granted power. See tables.c, array powers_type_init (lines 4511-4943). + +# 'F' contains flags. Most are self explaining, rest could be found in source. + + + +# Version stamp (required) + +V:2.0.0 + +### Mage Staff ### + +N:1:of Mana +X:A:24:20 +T:6:0:99 +W:5:3:8:10000 +C:-30:-30:0:3 +R:100 +F:MANA +f:MANA +R:70 +F:PVAL_M2 + +N:2:of Power +X:A:24:30 +T:6:0:99 +W:5:5:8:20000 +C:-30:-30:0:10 +R:100 +F:SPELL +f:SPELL +R:70 +F:PVAL_M2 + +N:3:of Wizardry +X:A:24:60 +T:6:0:99 +W:10:1:8:50000 +C:-40:-40:0:3 +R:100 +F:MANA | SPELL +R:50 +F:PVAL_M2 + +N:4:of Spell +T:6:0:99 +X:A:24:60 +W:0:2:8:40000 +C:0:0:0:0 +R:100 +F:ACTIVATE +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD + +### Body Armor ### + +N:5:of Resist Acid +T:36:0:99 +T:37:0:99 +X:A:30:16 +W:0:4:20:1000 +R:100 +F:RES_ACID | IGNORE_ACID +f:RES_ACID | IGNORE_ACID + +N:6:of Resist Lightning +T:36:0:99 +T:37:0:99 +X:A:30:10 +W:0:4:20:400 +R:100 +F:RES_ELEC | IGNORE_ELEC +f:RES_ELEC | IGNORE_ELEC + +N:7:of Resist Fire +T:36:0:15 +T:36:17:99 +T:37:0:99 +X:A:30:14 +W:0:4:20:800 +R:100 +F:RES_FIRE | IGNORE_FIRE +f:RES_FIRE | IGNORE_FIRE + +N:8:of Resist Cold +T:36:0:15 +T:36:17:99 +T:37:0:99 +X:A:30:12 +W:0:4:20:600 +R:100 +F:RES_COLD | IGNORE_COLD +f:RES_COLD | IGNORE_COLD + +N:9:of Resistance +T:36:0:99 +T:37:0:99 +X:A:30:20 +W:0:2:20:12500 +C:0:0:10:0 +R:100 +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +f:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | +R:25 +F:R_HIGH + +N:10:Elven +T:36:0:99 +T:37:0:99 +X:B:30:25 +W:0:2:20:15000 +C:0:0:10:3 +R:100 +F:STEALTH | ESP_ORC +f:STEALTH +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +F:OLD_RESIST +R:25 +F:RES_POIS + +# Robe +N:11:of Permanence +T:36:2:2 +X:A:30:30 +W:0:1:10:30000 +C:0:0:10:0 +R:100 +F:SUST_STR | SUST_DEX | SUST_CON | SUST_INT | SUST_WIS | SUST_CHR | +F:HOLD_LIFE | RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +F:OLD_RESIST +R:2 +F:R_IMMUNITY + +# Armour of Dunharrow - built on Filthy rags of leprousness +N:12:of Dunharrow +T:35:0:99 +T:36:0:99 +T:37:0:99 +X:A:30:0 +W:0:1:10:0 +C:0:0:0:-6 +R:100 +F:CON | STR | R_STAT | CURSED | HEAVY_CURSE | AGGRAVATE +# No CURSE_NO_DROP here, players seems to unlike surprises + +# Mithirl & Galvorn mails & PDSM +N:13:of Immunity +T:37:25:25 +T:37:30:30 +T:38:30:30 +X:A:30:40 +W:60:10:100:30000 +C:0:0:5:0 +R:100 +F:R_IMMUNITY + +# Ego DSM +N:14:of Defense +T:38:0:99 +X:A:30:5 +W:20:40:100:1000 +C:0:0:8:0 +R:100 +F:SUSTAIN + +# Boots of Jumping +N:15:of Jumping +T:30:0:99 +X:A:35:16 +W:0:3:27:500 +C:0:0:0:3 +Z:blink +R:100 +F:ACTIVATE +a:HARDCORE=JUMP + +### Shields ### + +N:16:of Resist Acid +T:115:56:56 +T:34:0:5 +T:34:7:99 +X:A:32:16 +W:0:6:22:1000 +R:100 +F:RES_ACID | IGNORE_ACID +f:RES_ACID | IGNORE_ACID + +N:17:of Resist Lightning +T:34:0:5 +T:34:7:99 +T:115:56:56 +X:A:32:10 +W:0:6:22:400 +R:100 +F:RES_ELEC | IGNORE_ELEC +f:RES_ELEC | IGNORE_ELEC + +N:18:of Resist Fire +T:34:0:5 +T:34:7:99 +T:115:56:56 +X:A:32:14 +W:0:6:22:800 +R:100 +F:RES_FIRE | IGNORE_FIRE +f:RES_FIRE | IGNORE_FIRE + +N:19:of Resist Cold +T:115:56:56 +T:34:0:5 +T:34:7:99 +X:A:32:12 +W:0:6:22:600 +R:100 +F:RES_COLD | IGNORE_COLD +f:RES_COLD | IGNORE_COLD + +N:20:of Resistance +T:115:56:56 +T:34:0:5 +T:34:7:99 +X:A:32:20 +W:0:2:22:12500 +C:0:0:10:0 +R:100 +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | +f:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD + +N:21:of Reflection +T:115:56:56 +T:34:0:5 +T:34:7:99 +X:A:32:20 +W:0:2:22:15000 +C:0:0:5:0 +R:100 +F:REFLECT +f:REFLECT +F:IGNORE_ELEC | IGNORE_ACID | IGNORE_COLD | IGNORE_FIRE + +# Metal shields only +N:22:of Electricity +T:34:3:3 +T:34:5:5 +T:34:10:10 +X:A:32:10 +W:0:2:22:400 +R:100 +F:RES_ELEC | IGNORE_ELEC | SH_ELEC +f:SH_ELEC + +### Crowns and Helms ### + +N:23:of the Noldor +T:115:57:57 +T:32:0:6 +T:32:8:99 +X:A:33:13 +C:0:0:0:2 +W:0:1:8:500 +R:100 +F:DEX | SUST_DEX | ACTIVATE | ESP_ORC +a:HARDCORE=NOLDOR + +N:24:of Intelligence +X:A:33:13 +C:0:0:0:2 +W:0:2:15:500 +T:32:0:6 +T:32:8:99 +T:115:57:57 +R:100 +F:INT | SUST_INT +f:INT + +N:25:of Wisdom +X:A:33:13 +W:0:2:15:500 +C:0:0:0:2 +T:32:0:6 +T:32:8:99 +T:115:57:57 +R:100 +F:WIS | SUST_WIS +f:WIS + +N:26:of Beauty +X:A:33:8 +W:0:2:15:1000 +C:0:0:0:4 +T:32:0:6 +T:32:8:99 +T:115:57:57 +R:100 +F:CHR | SUST_CHR +f:CHR + +# 40% chance of increase spell power +N:27:of the Magi +X:A:33:15 +W:0:1:8:7500 +C:0:0:0:3 +T:33:0:99 +R:100 +F:INT | SUST_INT | +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +F:ABILITY | R_HIGH +R:40 +F:SPELL +R:50 +F:SPELL_CONTAIN | WIELD_CAST + +N:28:of Gondor +X:A:33:19 +W:0:1:8:2000 +C:0:0:0:3 +T:32:0:99 +T:33:0:99 +R:100 +F:STR | DEX | CON | SUST_STR | SUST_DEX | SUST_CON | FREE_ACT +F:R_HIGH + +N:29:of Arnor +X:A:33:17 +W:0:1:8:2000 +C:0:0:0:3 +T:32:0:99 +T:33:0:99 +R:100 +F:WIS | CHR | SUST_WIS | SUST_CHR +F:R_HIGH + +N:30:of Seeing +X:A:33:8 +W:0:1:8:1000 +C:0:0:0:5 +T:32:0:6 +T:32:8:99 +T:33:0:99 +T:115:57:57 +R:100 +F:SEARCH | RES_BLIND | SEE_INVIS +f:SEARCH +R:20 +F:ESP_ALL + +N:31:of Infravision +X:A:33:11 +W:0:1:15:500 +C:0:0:0:5 +T:32:0:6 +T:32:8:99 +T:115:57:57 +R:100 +F:INFRA | HIDE_TYPE +f:INFRA + +N:32:of Light +X:A:33:6 +W:0:2:15:500 +T:32:0:6 +T:32:8:99 +T:115:57:57 +R:100 +F:LITE1 | RES_LITE +f:LITE1 + +N:33:of Telepathy +X:A:33:20 +W:0:1:8:50000 +T:33:0:99 +R:100 +F:ESP_ALL +f:ESP_ALL + +N:34:of Regeneration +X:A:33:10 +W:0:1:8:1500 +T:32:0:6 +T:32:8:99 +T:33:0:99 +T:115:57:57 +R:100 +F:REGEN +f:REGEN + +N:35:of Teleportation +X:A:33:0 +W:0:1:7:50 +T:32:0:6 +T:32:8:99 +T:115:57:57 +R:100 +F:TELEPORT +f:TELEPORT +R:90 +F:CURSED + +N:36:of Stupidity +X:A:33:0 +C:0:0:0:-5 +W:0:2:7:0 +T:32:0:6 +T:32:8:99 +T:115:57:57 +R:100 +F:INT | CURSED +f:INT +# No CURSE_NO_DROP here, players seems to unlike surprises + +N:37:of Naivety +X:A:33:0 +C:0:0:0:-5 +W:0:2:7:0 +T:32:0:6 +T:32:8:99 +T:115:57:57 +R:100 +F:WIS +f:WIS + +N:38:of Ugliness +X:A:33:0 +C:0:0:0:-5 +W:0:1:7:0 +T:32:0:6 +T:32:8:99 +T:115:57:57 +R:100 +F:CHR +f:CHR + +N:39:of Sickliness +X:A:33:0 +C:0:0:0:-5 +W:0:1:7:0 +T:33:0:99 +R:100 +F:STR | DEX | CON + +N:40:Dwarven +T:32:0:6 +T:32:8:99 +X:B:33:13 +C:0:0:0:2 +W:0:1:8:500 +R:100 +F:INFRA | CON | RES_FIRE | ESP_TROLL | ESP_DRAGON + + +### Cloaks ### + +N:41:of Protection +X:A:31:10 +W:0:4:19:1500 +C:0:0:10:0 +T:35:0:99 +R:100 +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD | RES_SHARDS + +N:42:of Eriador +X:A:31:10 +W:0:8:18:500 +C:0:0:0:3 +T:35:0:99 +R:100 +F:STEALTH +f:STEALTH +R:10 +F:LUCK +f:LUCK + +N:43:of Aman +X:A:31:20 +W:0:1:28:4000 +C:0:0:20:3 +T:35:0:99 +R:100 +F:STEALTH | +f:STEALTH | +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +F:OLD_RESIST + +# Aura, Fire +N:44:of Immolation +X:A:31:16 +W:0:1:18:4000 +C:0:0:4:0 +T:35:0:99 +R:100 +F:IGNORE_ACID | IGNORE_FIRE | SH_FIRE | RES_FIRE +f:SH_FIRE + +N:45:of Enveloping +X:A:31:0 +W:0:1:3:0 +C:-10:-10:0:0 +T:35:0:99 +R:100 +F:SHOW_MODS + +N:46:of Vulnerability +X:A:31:0 +W:0:1:3:0 +C:0:0:-50:0 +T:35:0:99 +R:100 +F:AGGRAVATE + +N:47:of Irritation +X:A:31:0 +W:0:1:3:0 +C:-15:-15:0:0 +T:35:0:99 +R:100 +F:AGGRAVATE | SHOW_MODS + +# Aura, Electricity +N:48:of Electricity +X:A:31:16 +W:0:1:18:4000 +C:0:0:4:0 +T:35:0:99 +R:100 +F:IGNORE_ACID | IGNORE_ELEC | SH_ELEC | RES_ELEC + +### Gloves ### + +N:49:of Free Action +X:A:34:11 +W:0:4:10:1000 +T:31:0:99 +R:100 +F:FREE_ACT +f:FREE_ACT + +N:50:of Slaying +X:A:34:17 +W:0:3:10:1500 +C:6:6:0:0 +T:31:0:99 +R:100 +F:SHOW_MODS + +N:51:of Agility +X:A:34:14 +W:0:2:10:1000 +C:0:0:0:5 +T:31:0:99 +R:100 +F:DEX | HIDE_TYPE +f:DEX + +N:52:of Power +T:31:0:99 +X:A:34:22 +W:0:1:10:2500 +C:5:5:0:5 +R:100 +F:STR | SHOW_MODS | HIDE_TYPE +f:STR +F:R_HIGH + +# 53 Gauntlets only +N:53:of Peace +X:A:34:0 +W:0:1:3:0 +C:-10:-10:0:0 +T:31:2:2 +R:100 +F:HEAVY_CURSE | CURSED + +# 54 Gloves only +N:54:of Charming +X:A:34:5 +T:31:1:1 +W:0:1:11:400 +C:0:0:0:6 +R:100 +F:CHR +R:33 +F:STEALTH +f:STEALTH + +N:55:of Weakness +T:31:0:99 +X:A:34:0 +W:0:1:3:0 +C:0:0:0:-10 +R:100 +F:STR + +N:56:of Clumsiness +X:A:34:0 +W:0:1:3:0 +C:0:0:0:-10 +R:100 +F:DEX +T:31:0:99 + + +### Boots ### + +N:57:of Levitation +X:A:35:7 +W:0:8:27:250 +T:30:0:99 +R:100 +F:FEATHER +f:FEATHER +R:40 +F:R_HIGH + +N:58:of Eriador +X:A:35:16 +W:0:8:27:500 +C:0:0:0:3 +T:30:0:99 +R:100 +F:STEALTH +f:STEALTH +R:10 +F:LUCK +f:LUCK + +N:59:of Free Action +X:A:35:15 +W:0:5:27:1000 +T:30:0:99 +R:100 +F:FREE_ACT +f:FREE_ACT + +N:60:of Rohan +X:A:35:25 +W:0:1:27:200000 +C:0:0:0:10 +T:30:0:99 +R:100 +F:SPEED | HIDE_TYPE +f:SPEED +R:10 +F:PVAL_M3 + +# 61 Metal boots only + +N:61:of Dwarvish Endurance +X:A:35:15 +W:0:1:20:5000 +C:0:0:0:6 +T:30:6:6 +R:100 +F:CON | INFRA | RES_DARK +R:33 +F:STR + +N:62:of Noise +X:A:35:0 +W:0:1:3:0 +T:30:0:99 +R:100 +F:AGGRAVATE +f:AGGRAVATE + +N:63:of Slowness +X:A:35:0 +W:0:1:3:0 +C:0:0:0:-5 +T:30:0:99 +R:100 +F:SPEED +f:SPEED + +N:64:of Annoyance +X:A:35:0 +W:0:1:3:0 +C:0:0:0:-10 +T:30:0:99 +R:100 +F:SPEED | AGGRAVATE + + +### Weapons ### + +N:65:of Aman +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +X:A:24:30 +W:0:2:44:20000 +C:6:6:4:3 +R:100 +F:WIS | +F:SLAY_EVIL | SLAY_UNDEAD | SLAY_DEMON | +F:SEE_INVIS | BLESSED | RES_FEAR | ESP_EVIL +F:SUSTAIN | LIMIT_BLOWS +R:10 +F:BLOWS +R:1 +F:PVAL_M1 + +N:66:(Defender) +T:125:0:99 +T:15:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +X:A:24:25 +W:0:2:44:15000 +C:4:4:8:4 +R:100 +F:STEALTH | +f:STEALTH | +F:FREE_ACT | SEE_INVIS | FEATHER | REGEN | +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +F:SUSTAIN | R_HIGH +R:33 +F:RES_POIS + +N:67:Blessed +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +X:B:24:20 +W:0:1:44:5000 +C:0:0:0:3 +R:100 +F:WIS | ESP_GOOD +F:BLESSED | ABILITY +f:BLESSED + +N:68:of Greater Life +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:A:24:20 +W:0:1:50:30000 +C:5:5:0:3 +r:N:MUST2H +R:100 +F:LIFE | HOLD_LIFE +f:LIFE + +N:69:of Westernesse +T:15:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +X:A:24:20 +W:0:2:44:20000 +C:5:5:0:2 +R:100 +F:STR | DEX | CON | +F:SLAY_ORC | SLAY_TROLL | SLAY_GIANT | +F:FREE_ACT | SEE_INVIS | ESP_ORC | ESP_TROLL | ESP_GIANT +R:33 +F:RES_FEAR +R:50 +F:RES_MORGUL + +N:70:of Extra Attacks +T:125:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:A:24:20 +W:0:1:44:10000 +C:0:0:0:3 +R:100 +F:BLOWS +f:BLOWS + +N:71:of Slaying +T:125:0:99 +T:15:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:A:24:15 +W:0:2:44:2500 +C:0:0:0:0 +R:100 +F:SLAY_WEAP | WOUNDING + +N:72:of Spinning +T:125:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:A:24:18 +W:0:1:44:9000 +C:8:8:0:2 +R:100 +F:DEX | STR | VORPAL | ACTIVATE +a:HARDCORE=SPIN + +# The "Elemental" brands (4) (6) + +N:73:Acidic +T:125:0:99 +T:15:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:B:24:15 +W:0:4:44:5000 +R:100 +F:BRAND_ACID | RES_ACID | IGNORE_ACID +f:BRAND_ACID + +N:74:Shocking +T:125:0:99 +T:15:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:B:24:20 +W:0:4:44:4500 +R:100 +F:BRAND_ELEC | RES_ELEC | IGNORE_ELEC +f:BRAND_ELEC + +N:75:Fiery +T:125:0:99 +T:15:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:B:24:20 +W:0:4:44:3500 +R:100 +F:BRAND_FIRE | RES_FIRE | IGNORE_FIRE | LITE1 +f:BRAND_FIRE | + +N:76:Frozen +T:125:0:99 +T:15:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:B:24:15 +W:0:4:44:3000 +R:100 +F:BRAND_COLD | RES_COLD | IGNORE_COLD +f:BRAND_COLD | + +N:77:Venomous +T:125:0:99 +T:15:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:B:24:20 +W:0:4:44:4000 +R:100 +F:BRAND_POIS | RES_POIS +f:BRAND_POIS | + +N:78:Chaotic +T:125:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:29 +T:23:31:99 +T:24:0:99 +T:115:55:55 +X:B:24:28 +W:0:1:44:10000 +R:100 +F:CHAOTIC | RES_CHAOS | IGNORE_ELEC | IGNORE_ACID | IGNORE_FIRE +f:CHAOTIC +F:R_ANY + +N:79:Sharp +T:125:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:B:24:20 +W:0:2:44:5000 +R:100 +F:VORPAL +f:VORPAL + +N:80:of Earthquakes +T:125:0:99 +T:21:0:99 +T:115:55:55 +X:A:24:20 +W:0:1:44:4000 +C:10:10:0:6 +R:100 +F:IMPACT | STR | TUNNEL | HIDE_TYPE +f:IMPACT + +# The "Slay" brands (8) + +N:81:of Slay Animal +T:15:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:A:24:18 +W:0:6:44:3500 +R:100 +F:SLAY_ANIMAL +f:SLAY_ANIMAL + +N:82:of Slay Evil +T:15:0:99 +T:125:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:A:24:18 +W:0:6:44:3500 +R:100 +F:SLAY_EVIL +f:SLAY_EVIL + +N:83:of Slay Undead +T:15:0:99 +T:21:0:19 +T:21:21:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:A:24:18 +W:0:6:44:3500 +R:100 +F:SLAY_UNDEAD +f:SLAY_UNDEAD + +N:84:of Slay Demon +T:15:0:99 +T:125:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:A:24:14 +W:0:6:44:2500 +R:100 +F:SLAY_DEMON +f:SLAY_DEMON + +N:85:of Slay Orc +T:15:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:A:24:10 +W:0:6:44:2500 +R:100 +F:SLAY_ORC +f:SLAY_ORC + +N:86:of Slay Troll +T:15:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:A:24:10 +W:0:6:44:2500 +R:100 +F:SLAY_TROLL +f:SLAY_TROLL + +N:87:of Slay Giant +T:15:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:A:24:14 +W:0:6:44:2500 +R:100 +F:SLAY_GIANT +f:SLAY_GIANT + +N:88:of Slay Dragon +T:15:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:A:24:18 +W:0:6:44:3500 +R:100 +F:SLAY_DRAGON +f:SLAY_DRAGON + +# The "Kill" brands (8) + +N:89:of *Slay Animal* +T:15:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:A:24:20 +W:0:2:44:6000 +C:0:0:0:2 +R:100 +F:INT | SLAY_ANIMAL | SLOW_DIGEST | STEALTH | ESP_ANIMAL +f:SLAY_ANIMAL | STEALTH + +N:90:of *Slay Evil* +T:125:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:A:24:20 +W:0:2:44:6000 +C:0:0:0:2 +R:100 +F:WIS | SLAY_EVIL | BLESSED | ESP_EVIL | RES_FEAR | ABILITY +f:SLAY_EVIL | + +N:91:of *Slay Undead* +T:125:0:99 +T:15:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:A:24:24 +W:0:2:44:8000 +C:0:0:0:2 +R:100 +F:WIS | KILL_UNDEAD | SEE_INVIS | ESP_UNDEAD | RES_NETHER +f:KILL_UNDEAD | + +N:92:of *Slay Demon* +T:125:0:99 +T:15:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:A:24:16 +W:0:2:44:8000 +C:0:0:0:2 +R:100 +F:INT | KILL_DEMON | ESP_DEMON | RES_FIRE | RES_CHAOS +f:KILL_DEMON | + +N:93:of *Slay Orc* +T:15:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:A:24:14 +W:0:2:44:4000 +C:0:0:0:2 +R:100 +F:DEX | SLAY_ORC | ESP_ORC | SUST_DEX | +f:SLAY_ORC | + +N:94:of *Slay Troll* +T:15:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:A:24:14 +W:0:2:44:4000 +C:0:0:0:2 +R:100 +F:STR | SLAY_TROLL | ESP_TROLL | REGEN | SUST_STR +f:SLAY_TROLL | + +N:95:of *Slay Giant* +T:15:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:A:24:16 +W:0:2:44:4000 +C:0:0:0:2 +R:100 +F:STR | SLAY_GIANT | ESP_GIANT | RES_SHARDS | SUST_STR +f:SLAY_GIANT | + +N:96:of *Slay Dragon* +T:15:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:A:24:24 +W:0:2:44:8000 +C:0:0:0:2 +R:100 +F:CON | KILL_DRAGON | ESP_DRAGON | RES_FEAR | +f:KILL_DRAGON +F:R_LOW | R_ELEM +R:20 +F:RES_POIS + +N:97:Vampiric +T:125:0:99 +T:23:0:99 +T:115:55:55 +X:B:24:25 +W:0:2:44:10000 +C:0:0:0:-2 +R:100 +F:LIFE | VAMPIRIC | HOLD_LIFE +f:LIFE | VAMPIRIC + +N:98:(*Defender*) +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +X:A:24:35 +W:0:1:100:50000 +C:-15:-15:20:4 +R:100 +F:STEALTH | RES_POIS | DEX | CON | WIS | HOLD_LIFE | +f:STEALTH +F:FREE_ACT | SEE_INVIS | FEATHER | REGEN | +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +F:R_ANY | R_LOW | SUSTAIN +R:30 +F:R_ANY | R_LOW | SUSTAIN +R:20 +F:R_ANY | R_LOW | SUSTAIN | R_HIGH +R:10 +F:R_IMMUNITY | R_ANY + +# 'of the Thunderlords' renamed to 'of Tulkas' and picked up some new flags:) --furiosity +N:99:of Tulkas +T:15:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +X:A:24:22 +W:10:6:90:45000 +C:4:4:0:2 +a:HARDCORE=TELEPORT +R:100 +F:SLAY_EVIL | KILL_DRAGON | TELEPORT | FREE_ACT | SEARCH | BRAND_ELEC +F:REGEN | SLOW_DIGEST | RES_MORGUL | ACTIVATE | ESP_DRAGON +R:50 +F:RES_NEXUS | HOLD_LIFE +R:30 +F:R_HIGH | KILL_UNDEAD +R:12 +F:ABILITY | KILL_DEMON +R:2 +F:R_P_ABILITY | PVAL_M3 | LIMIT_BLOWS + +N:100:of Gondolin +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +X:A:24:26 +W:0:1:44:25000 +C:7:7:0:3 +R:100 +F:STR | CON | ESP_EVIL | RES_FEAR | +F:SLAY_EVIL | SLAY_TROLL | SLAY_DRAGON | SLAY_DEMON | +F:FREE_ACT | SEE_INVIS | LITE1 | RES_DARK | ABILITY | +F:IGNORE_ACID | IGNORE_FIRE +R:33 +F:R_HIGH +R:33 +F:HOLD_LIFE +R:22 +F:DEX + +# Diggers only + +N:101:of Digging +T:20:0:99 +X:A:24:4 +W:0:1:2:500 +C:0:0:0:5 +R:100 +F:TUNNEL | +f:TUNNEL | +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD + +# More weapons + +N:102:Spectral +T:125:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:B:24:30 +W:0:1:5:5000 +R:100 +F:SLAY_UNDEAD | SEE_INVIS | HOLD_LIFE | DRAIN_HP +F:ACTIVATE +a:HARDCORE=SPECTRAL + +N:103:of Morgul +T:125:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:A:24:0 +W:0:1:1:0 +C:-20:-20:-10:-10 +R:100 +F:LUCK +F:SEE_INVIS | AGGRAVATE | HEAVY_CURSE | CURSED | BLACK_BREATH | DRAIN_EXP | +F:AUTO_CURSE | WOUNDING +# No CURSE_NO_DROP here, players seems to unlike surprises + +N:104:of Angmar +T:125:0:99 +T:15:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +X:A:24:0 +W:0:1:2:0 +C:-100:-100:0:0 +R:100 +F:NEVER_BLOW | HEAVY_CURSE | CURSED | AUTO_CURSE + + +### Missile Launchers ### + +N:105:of Accuracy +T:19:0:99 +T:15:0:99 +X:A:25:10 +W:0:8:21:1000 +C:15:5:0:0 + +N:106:of Power +T:19:0:99 +T:15:0:99 +X:A:25:10 +W:0:8:21:1000 +C:5:15:0:0 + +N:107:of Extra Might +T:19:0:99 +X:A:25:20 +W:0:4:21:10000 +C:5:10:0:1 +R:100 +F:XTRA_MIGHT | PVAL_M3 | R_ANY +f:XTRA_MIGHT | + +N:108:of Extra Shots +T:19:0:99 +X:A:25:20 +C:10:5:0:1 +W:0:4:21:10000 +R:100 +F:XTRA_SHOTS | PVAL_M2 +f:XTRA_SHOTS | + +# Bows only +N:109:of Lothlorien +T:19:12:13 +X:A:25:20 +W:50:2:21:30000 +C:10:10:0:2 +R:100 +F:DEX | XTRA_MIGHT | FREE_ACT | IGNORE_ACID | IGNORE_FIRE | HIDE_TYPE | +F:BLESSED | ABILITY + +# Crossbows only +N:110:of the Haradrim +T:19:23:24 +X:A:25:30 +W:50:2:21:20000 +C:5:15:0:1 +R:100 +F:XTRA_MIGHT | XTRA_SHOTS | IGNORE_ACID | IGNORE_FIRE | HIDE_TYPE + +# Slings only +N:111:of Buckland +X:A:25:25 +W:40:2:21:20000 +C:8:8:0:2 +T:19:1:1 +R:100 +F:DEX | XTRA_SHOTS | XTRA_MIGHT | IGNORE_ACID | IGNORE_FIRE | HIDE_TYPE + + +### Ammo ### + +N:112:of Slay Animal +T:16:0:99 +T:17:0:99 +T:18:0:99 +X:A:23:10 +W:0:2:12:25 +R:100 +F:SLAY_ANIMAL +f:SLAY_ANIMAL + +N:113:of Slay Evil +T:16:0:99 +T:17:0:99 +T:18:0:99 +X:A:23:10 +W:0:2:12:25 +R:100 +F:SLAY_EVIL +f:SLAY_EVIL + +N:114:of Slay Undead +T:16:0:99 +T:17:0:99 +T:18:0:99 +X:A:23:10 +W:0:1:12:35 +R:100 +F:SLAY_UNDEAD +f:SLAY_UNDEAD + +N:115:of Venom +T:16:0:99 +T:17:0:2 +T:18:0:2 +X:A:23:10 +R:100 +F:BRAND_POIS +f:BRAND_POIS +W:0:2:12:25 + +N:116:of Acid +T:16:0:99 +T:17:0:99 +T:18:0:99 +X:A:23:10 +R:100 +F:BRAND_ACID | IGNORE_ACID +f:BRAND_ACID | +W:0:1:12:30 + +# 117 All Elements at once - melee weapon +N:117:Elemental +X:B:24:30 +W:10:1:50:26000 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +R:100 +F:BRAND_ACID | RES_ACID | IGNORE_ACID +F:BRAND_ELEC | RES_ELEC | IGNORE_ELEC +F:BRAND_FIRE | RES_FIRE | IGNORE_FIRE +F:BRAND_COLD | RES_COLD | IGNORE_COLD +F:BRAND_POIS | RES_POIS | DRAIN_MANA +f:BRAND_ACID | +f:BRAND_ELEC | +f:BRAND_FIRE | +f:BRAND_COLD | +f:BRAND_POIS | + +N:118:of Slay Demon +T:16:0:99 +T:17:0:99 +T:18:0:99 +X:A:23:10 +W:0:1:12:35 +R:100 +F:SLAY_DEMON +f:SLAY_DEMON + +N:119:of Slay Dragon +T:16:0:99 +T:17:0:99 +T:18:0:99 +X:A:23:10 +R:100 +F:SLAY_DRAGON +f:SLAY_DRAGON +W:0:1:12:35 + +N:120:of Slaying +X:A:23:15 +W:0:1:12:20 +C:12:12:0:0 +R:100 +F:DAM_DIE + +N:121:of Lightning +T:16:0:99 +T:17:0:99 +T:18:0:99 +X:A:23:10 +R:100 +F:BRAND_ELEC | IGNORE_ELEC +f:BRAND_ELEC | +W:0:1:12:30 + +N:122:of Flame +T:16:0:99 +T:17:0:99 +T:18:0:99 +X:A:23:10 +R:100 +F:BRAND_FIRE | IGNORE_FIRE +f:BRAND_FIRE | +W:0:2:12:25 + +N:123:of Frost +T:16:0:99 +T:17:0:99 +T:18:0:99 +X:A:23:10 +R:100 +F:BRAND_COLD | IGNORE_COLD +f:BRAND_COLD | +W:0:2:12:25 + +N:124:of Wounding +T:16:0:99 +T:17:0:99 +T:18:0:99 +X:A:23:5 +W:0:3:12:20 +C:6:6:0:0 + +N:125:of Backbiting +T:16:0:99 +T:17:0:99 +T:18:0:99 +X:A:23:0 +W:0:1:2:0 +C:-50:-50:0:0 + + +### Special Broken Items ### + +# Destroyed Weapon +N:126:Shattered +T:16:0:99 +T:17:0:99 +T:18:0:99 +X:B:24:0 +W:0:1:2:0 +C:-5:-5:0:0 + +# Destroyed Body Armor + +N:127:Blasted +T:16:0:99 +T:17:0:99 +T:18:0:99 +X:B:30:0 +W:0:1:2:0 +C:0:0:-10:0 + + +# Instruments + +N:128:of the Eldar +T:14:0:59 +T:14:61:99 +X:A:25:20 +W:0:2:3:1000 +C:0:0:0:0 +R:100 +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD | +F:RES_ACID | CHR | SEE_INVIS +F:R_ANY | PVAL_M2 +R:25 +F:PVAL_M1 + +N:129:of Power +T:14:0:59 +T:14:61:99 +X:A:25:20 +W:0:1:3:2000 +C:0:0:0:0 +R:100 +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD | SUST_CHR | +F:RES_FIRE | RES_COLD | RES_ELEC | RES_ACID | CHR | SEE_INVIS +F:R_ANY | PVAL_M3 +R:50 +F:PVAL_M1 +R:35 +F:PVAL_M1 + +# Horn, now four different ego items (for different GF_ values) +# see items 181, 182 & 183. +N:130:Dragon +T:14:60:60 +X:B:25:20 +W:0:1:2:2000 +C:0:0:0:0 +R:100 +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD | ACTIVATE +F:R_ANY | PVAL_M2 +R:50 +F:PVAL_M1 +R:25 +F:PVAL_M1 +a:HARDCORE=BA_ACID_H + +# Rods ego +N:131:Capacity of +T:67:0:99 +X:A:51:10 +W:0:2:10:1000 +C:0:0:0:0 +R:100 +F:CAPACITY +f:CAPACITY + +N:132:Cheapness of +T:67:0:99 +X:A:51:10 +W:0:2:10:700 +C:0:0:0:0 +R:100 +F:CHEAPNESS +f:CHEAPNESS + +N:133:Quickness of +T:67:0:99 +X:A:51:15 +W:0:3:10:1100 +C:0:0:0:0 +R:100 +F:FAST_CAST +f:FAST_CAST + +N:134:Charging of +T:67:0:99 +X:A:51:15 +W:0:2:10:1500 +C:0:0:0:0 +R:100 +F:CHARGING +f:CHARGING + +N:135:the Istari of +T:67:0:99 +X:A:51:10 +W:0:1:10:10000 +C:0:0:0:0 +R:100 +F:CAPACITY | CHARGING | CHEAPNESS | FAST_CAST | + +### Lights ### + +N:136:of Boldness +X:A:0:5 +T:39:0:99 +W:0:1:5:1000 +Z:remove fear + +N:137:of Fearlessness +X:A:0:5 +T:39:0:99 +W:0:1:10:1500 +R:100 +F:RES_FEAR + +N:138:of Illumination +X:A:0:5 +T:39:0:99 +W:0:3:10:1000 +Z:illuminate +R:10 +F:LITE1 +R:5 +F:LITE2 +R:2 +F:LITE3 + +N:139:of Brightness +X:A:0:5 +T:39:0:99 +W:0:3:10:1000 +R:100 +F:LITE1 +f:LITE1 +R:60 +F:LITE2 +R:30 +F:LITE3 +R:30 +F:RES_DARK + +N:140:of *Brightness* +X:A:0:9 +T:39:0:99 +W:0:1:40:5000 +R:100 +F:LITE1 +F:LITE2 +F:LITE3 +f:LITE1 +f:LITE2 +f:LITE3 +F:RES_DARK + +N:141:of the Shadows +X:A:0:6 +T:39:0:99 +W:0:1:20:3000 +C:0:0:0:2 +R:100 +F:INVIS +R:70 +F:RES_DARK +R:50 +F:RES_LITE + +N:142:of Infravision +X:A:0:3 +T:39:0:99 +W:0:1:10:700 +C:0:0:0:3 +R:100 +F:INFRA +f:INFRA + +N:143:of the Eternal Eye +X:A:0:7 +T:39:0:99 +W:0:3:40:4000 +C:0:0:0:0 +R:100 +F:RES_BLIND | SEE_INVIS + +N:144:of the Ethereal Eye +X:A:0:7 +T:39:0:99 +W:0:3:40:4000 +C:0:0:0:0 +Z:magic map + +N:145:of Fading +X:A:0:0 +T:39:2:99 +W:0:1:1:0 +C:0:0:0:0 +R:100 +F:FUEL_LITE + +# Armor (dwarven): must be heavy metal, and not rusty chain mail + +N:146:Dwarven +T:37:2:99 +X:B:30:18 +W:0:2:20:5000 +C:0:0:15:2 +R:100 +F:STR | CON | INFRA | FREE_ACT | HIDE_TYPE | +F:RES_FEAR | RES_DARK | SUST_STR | SUST_CON | +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD + +# Magical: affects soft armour, gloves, cloaks + +N:147:Magical +X:B:0:2 +T:31:0:99 +T:35:0:99 +T:36:0:99 +T:40:0:99 +T:45:0:99 +W:5:1:10:2000 +C:0:0:0:0 +R:100 +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +f:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +R:50 +F:SPELL_CONTAIN | WIELD_CAST +f:SPELL_CONTAIN | WIELD_CAST + +# Ring and Amulet egos + +N:148:Cursed +X:B:0:0 +T:40:0:99 +T:45:0:99 +W:0:1:10:0 +C:0:0:0:0 +R:100 +F:AUTO_CURSE +f:AUTO_CURSE + +# Scrolls & school spellbooks & staves +N:149:Fireproof +X:B:0:1 +T:70:0:99 +T:111:0:99 +T:55:0:99 +W:0:1:10:1000 +C:0:0:0:0 +R:100 +F:IGNORE_FIRE +f:IGNORE_FIRE + +# Wands & Staffs(NOT wishing nor nothing) +N:150:of Plenty +X:A:0:1 +T:55:0:29 +T:55:32:99 +T:65:0:29 +T:65:31:99 +W:0:1:20:1000 +C:0:0:0:3 +R:100 +F:PVAL_M5 | PVAL_M3 +R:50 +F:PVAL_M5 | PVAL_M3 +R:10 +F:PVAL_M5 | PVAL_M3 +R:1 +F:PVAL_M5 | PVAL_M3 + + +### Trapping Kits ### + +N:151:of Extra Might +X:A:0:5 +T:46:1:3 +W:0:1:10:1000 +C:20:20:0:2 +R:100 +F:XTRA_MIGHT +f:XTRA_MIGHT + +N:152:of Extra Shots +X:A:0:10 +T:46:0:99 +W:0:1:10:2000 +C:20:20:0:3 +R:100 +F:XTRA_SHOTS +f:XTRA_SHOTS + +N:153:Automatic +X:B:0:15 +T:46:0:99 +W:0:1:10:3000 +C:10:10:0:0 +R:100 +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_COLD | IGNORE_FIRE | +F:AUTOMATIC_5 +f:AUTOMATIC_5 + +N:154:Fully Automatic +X:B:0:15 +T:46:0:99 +W:0:1:15:5000 +C:10:10:0:0 +R:100 +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_COLD | IGNORE_FIRE | +F:AUTOMATIC_99 +f:AUTOMATIC_99 + +N:155:Well-hidden +X:B:0:5 +T:46:0:99 +W:0:1:8:1000 +C:15:15:5:12 +R:100 +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_COLD | IGNORE_FIRE | +F:STEALTH | HIDE_TYPE +f:STEALTH + +N:156:Complicated +X:B:0:10 +T:46:0:99 +W:0:1:12:2000 +C:15:15:30:0 +R:100 +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_COLD | IGNORE_FIRE + +N:157:Obvious +X:B:0:0 +T:46:0:99 +W:0:1:1:0 +C:-20:-20:-20:-20 +R:100 +F:STEALTH | CURSED | HIDE_TYPE +f:STEALTH + +N:158:for Dragons +X:A:0:5 +T:46:0:99 +W:0:3:10:500 +C:20:20:10:4 +R:100 +F:STEALTH | ONLY_DRAGON | HIDE_TYPE | XTRA_SHOTS | +F:IGNORE_ACID | IGNORE_FIRE + +N:159:for Demons +X:A:0:5 +T:46:0:99 +W:0:3:10:500 +C:20:20:10:4 +R:100 +F:STEALTH | ONLY_DEMON | HIDE_TYPE | XTRA_SHOTS +F:IGNORE_ACID | IGNORE_FIRE + +N:160:for Animals +X:A:0:5 +T:46:0:99 +W:0:3:10:500 +C:20:20:10:4 +R:100 +F:STEALTH | ONLY_ANIMAL | HIDE_TYPE | XTRA_SHOTS + +N:161:for Undead +X:A:0:5 +T:46:0:99 +W:0:3:10:500 +C:20:20:10:4 +R:100 +F:STEALTH | ONLY_UNDEAD | HIDE_TYPE | XTRA_SHOTS | KILL_GHOST + +N:162:for Evil +X:A:0:5 +T:46:0:99 +W:0:3:10:500 +C:20:20:10:4 +R:100 +F:STEALTH | ONLY_EVIL | HIDE_TYPE | XTRA_SHOTS | KILL_GHOST + +# Lite ego +N:163:of the Magi +X:A:0:0 +T:39:1:99 +W:0:1:150:2000 +C:0:0:0:3 +Z:magic map +R:100 +F:INT | WIS | CHR +R:60 +F:INVIS | RES_BLIND +R:30 +F:R_HIGH +R:30 +F:PVAL_M2 +R:50: +F:SPELL_CONTAIN | WIELD_CAST + +### New ego-items added by JLE + +# Armor of Vulnerability (the only cursed armor) [not in Theme, it isn't!] +N:164:of Vulnerability +X:A:30:0 +W:0:2:20:0 +C:0:0:-50:0 +T:36:0:99 +T:37:0:99 +R:100 +F:AGGRAVATE | CURSED + +# Shield of Vulnerability (the only cursed shield) [not in Theme, it isn't!] +N:165:of Vulnerability +X:A:32:0 +W:0:2:22:0 +C:0:0:-50:0 +T:115:56:56 +T:34:0:99 +R:100 +F:AGGRAVATE | CURSED + +# Shield of Preservation - +N:166:of Preservation +X:A:32:25 +W:40:2:44:20000 +C:-10:-10:20:0 +T:115:56:56 +T:34:0:99 +R:100 +F:RES_DISEN | SUST_STR | SUST_CON | SUST_DEX | HOLD_LIFE | R_HIGH | +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +R:33 +F:R_LOW +R:33 +F:R_LOW + +# Helm/Crown of Serenity +N:167:of Serenity +X:A:33:20 +W:35:1:15:4000 +T:32:0:6 +T:32:8:99 +T:33:0:99 +R:100 +F:RES_SOUND | RES_CONF | RES_FEAR + +# Crown of Night and Day +N:168:of Night and Day +X:A:33:18 +W:35:1:15:4000 +T:33:0:99 +R:100 +F:RES_LITE | RES_DARK | LITE1 | SEE_INVIS | RES_BLIND | IGNORE_ACID + +# Cloak of the Magi +N:169:of the Magi +X:A:31:15 +W:30:1:18:2000 +C:-5:-5:5:3 +T:35:0:99 +R:100 +F:INT | SPEED | SUST_INT | FREE_ACT | STEALTH | HIDE_TYPE | IGNORE_ACID +R:30 +F:SPELL_CONTAIN | WIELD_CAST + +# Cloak of Invisibility +N:170:of Invisibility +X:A:31:20 +W:40:1:18:3000 +C:0:0:10:5 +T:35:0:99 +R:100 +F:STEALTH | HIDE_TYPE | INVIS +f:INVIS + +# Cloak of the Bat +N:171:of the Bat +X:A:31:15 +W:50:1:35:3000 +C:-10:-10:10:3 +T:35:0:99 +R:100 +F:SPEED | FLY | RES_DARK | SEE_INVIS | INFRA | HIDE_TYPE | STEALTH + +# Leather Gloves of Thievery +N:172:of Thievery +X:A:34:22 +W:40:1:15:5000 +C:8:3:0:5 +T:31:1:1 +R:100 +F:DEX | SEARCH | SHOW_MODS | FEATHER | FREE_ACT | HIDE_TYPE | IGNORE_ACID +R:10 +F:SPEED + +# Gauntlets and Cesti of Combat +N:173:of Combat +X:A:34:22 +W:50:1:15:7000 +C:6:8:-20:2 +T:31:2:99 +R:100 +F:STR | CON | SHOW_MODS | AGGRAVATE | HIDE_TYPE | IGNORE_ACID | RES_FEAR | +F:DRAIN_HP +R:25 +F:BLOWS + +# Boots of Stability +N:174:of Stability +X:A:35:20 +W:0:3:27:5000 +T:30:0:99 +R:100 +F:RES_NEXUS | FEATHER + +# Boots of Elvenkind (leather boots only) +N:175:of Elvenkind +X:A:35:30 +W:60:1:36:200000 +C:0:0:0:4 +T:30:2:3 +R:100 +F:STEALTH | HIDE_TYPE | FEATHER | IGNORE_ACID | IGNORE_FIRE | ABILITY +R:50 +F:SPEED + +# Weapon of Fury (must be big heavy type of weapon, no daggers or whips) +N:176:of Fury +X:A:24:30 +W:40:1:66:20000 +T:21:12:99 +T:22:10:99 +T:23:16:99 +T:24:8:99 +T:125:0:99 +C:10:10:-20:2 +R:100 +F:STR | BLOWS | AGGRAVATE | RES_FEAR | HIDE_TYPE | +F:IGNORE_ACID | IGNORE_FIRE | DRAIN_MANA + +# Staffs of wishing +N:177:of Plenty +X:A:0:1 +T:55:31:31 +W:0:1:20:1000 +C:0:0:0:2 +R:100 +F:PVAL_M2 + + +# Diggers only + +N:178:Magical +T:20:0:99 +X:B:24:4 +W:0:1:10:500 +C:0:0:0:0 +Z:stone to mud +R:100 + +# Rod +N:179:Simplicity of +T:67:0:99 +X:A:51:8 +W:3:2:8:1000 +C:0:0:0:0 +R:100 +F:EASY_USE +f:EASY_USE + +# Lite ego +N:180:of Warmth +X:A:0:0 +T:39:1:99 +W:0:1:10:500 +C:0:0:0:0 +R:100 +F:RES_COLD + +#Three more horn types, for different activation types... +N:181:Dragon +T:14:7:7 +X:B:25:20 +W:0:1:2:2000 +C:0:0:0:0 +a:HARDCORE=BA_COLD_3 +R:100 +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD | + +N:182:Dragon +T:14:7:7 +X:B:25:20 +W:0:1:2:2000 +C:0:0:0:0 +a:HARDCORE=BA_ELEC_3 +R:100 +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD | + +N:183:Dragon +T:14:7:7 +X:B:25:20 +W:0:1:2:2000 +C:0:0:0:0 +a:HARDCORE=BA_FIRE_H +R:100 +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD | + +# Helm of water breathing +N:184:of Water Breathing +X:A:33:13 +C:0:0:0:2 +W:15:1:25:1000 +T:32:5:10 +R:100 +F:WATER_BREATH | IGNORE_ACID +f:WATER_BREATH + +# A second of life for non MUST2H weapons, much lower value tho +N:185:of Life +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +T:115:55:55 +X:A:24:20 +W:0:1:50:30000 +C:5:5:0:1 +r:F:MUST2H +R:100 +F:LIFE | HOLD_LIFE +f:LIFE + +# Cloak of Air +N:186:of Air +X:A:31:10 +W:30:1:35:1500 +C:0:0:0:0 +T:35:0:99 +R:100 +F:MAGIC_BREATH + +# Ego DSM +N:187:Polished +T:38:0:99 +X:B:30:5 +W:40:25:100:25000 +C:0:0:0:0 +R:100 +F:REFLECT + +# Ego Heavy Crossbow +N:188:of Siegecraft +T:19:24:24 +X:A:25:30 +W:60:5:30:30000 +C:10:15:20:2 +R:120 +F:XTRA_MIGHT | XTRA_SHOTS | REFLECT | IMMOVABLE + +### New ego-items from T-Plus by Ingeborg S. Norden ### + +# Rogue's Boots, no Metal-Shod or cursed ones allowed // Reworked to balance in Theme 1.1.5 + +N:189:Rogue's +X:B:35:15 +W:15:10:25:2500 +C:-5:-5:0:2 +r:F:CURSED | HEAVY_CURSE | AUTO_CURSE | +T:30:2:3 +Z:panic hit +R:100 +F:SEARCH +f:SEARCH +R:50 +F:STEALTH +f:STEALTH +R:25 +F:LUCK +f:LUCK +R:10 +F:R_HIGH | + +### Egos for rings, amulets and crowns (partly inspired by Multiband) + +# Glowing (no "Nothings", Amulets of Brilliance, or Rings of +# Light and Darkness Resistance) + +N:190:Glowing +X:B:0:5 +T:33:0:99 +T:40:0:5 +T:40:7:15 +T:45:0:38 +W:5:1:10:1250 +C:0:0:0:0 +R:100 +F:LITE1 | +f:LITE1 | + +# Dazzling (as above, with more light plus resistance/granted ability) + +N:191:Dazzling +X:B:0:7 +T:33:0:99 +T:40:0:5 +T:40:7:15 +T:45:0:38 +W:10:3:12:2500 +C:0:0:0:0 +Z:illuminate +R:100 +F:LITE2 | RES_LITE | +f:LITE2 | +R:50 +F:LITE1 | +f:LITE1 | +R:25 +F:LITE3 | +f:LITE3 | + +# Radiant (Dazzling with some extras; +# no cursed jewelry) + +N:192:Radiant +X:B:0:12 +T:33:0:99 +T:40:17:99 +T:45:0:38 +T:45:40:49 +T:45:51:99 +W:15:5:15:3500 +C:0:0:0:0 +Z:illuminate +r:F:CURSED | HEAVY_CURSE | AUTO_CURSE | +R:100 +F:LITE3 | RES_LITE | +f:LITE3 | +R:50 +F:LITE2 | +f:LITE2 | +R:25 +F:LITE1 | +f:LITE1 | +R:20 +F:RES_BLIND | +R:2 +F:REFLECT | + +# Blazing (Glowing plus fiery sheath, resistance, undamaged by +# fire; restrictions as per Glowing, but no Cold Resistance/Ice +# rings either) + +N:193:Blazing +X:B:0:15 +T:33:0:99 +T:40:17:99 +T:45:20:38 +T:45:40:49 +T:45:51:99 +W:15:5:15:3000 +C:0:0:0:0 +R:100 +F:LITE1 | RES_FIRE | SH_FIRE | +f:LITE1 | SH_FIRE | IGNORE_FIRE +R:25 +F:LITE2 | +f:LITE2 | +R:10 +F:LITE3 | +f:LITE3 | +R:2 +F:IM_FIRE | + +# Lucky (amulets only--resists cursing, undamaged by elements, luck +# bonus added; no inherently cursed types or Nothing amulets) + +N:194:Lucky +X:B:0:12 +T:40:2:15 +T:40:17:99 +W:15:5:15:2750 +C:0:0:0:5 +r:F:CURSED | HEAVY_CURSE | AUTO_CURSE | +R:100 +F:BLESSED | LUCK | + +# Unlucky (amulets only; no Prot/Evil, Doom, or Nothing amulets) +N:195:Unlucky +X:B:0:0 +T:40:3:15 +T:40:17:99 +W:0:3:10:0 +C:-5:-5:-5:-5 +R:100 +F:CURSED | AUTO_CURSE | LUCK | AGGRAVATE +R:20 +F:HEAVY_CURSE | + +# Armour of the Maiar (of the Chosen in T-Plus) + +N:196:of the Maiar +T:36:2:99 +T:37:2:99 +X:A:30:30 +W:10:3:45:15000 +C:0:0:15:0 +R:100 +F:BLESSED | ESP_EVIL | ESP_GIANT | ESP_TROLL | +F:FREE_ACT | RES_FEAR | +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | +F:OLD_RESIST | +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE | +f:FREE_ACT | IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE | +Z:berserk +R:25 +F:R_HIGH | SUSTAIN | + +### Weapons of the Maiar (of the Chosen in T-Plus) +N:197:of the Maiar +T:15:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +X:A:24:35 +W:10:5:45:30000 +C:6:6:4:3 +R:100 +F:SLAY_GIANT | SLAY_TROLL | +F:SEE_INVIS | FREE_ACT | BLESSED | RES_FEAR | +F:ESP_GIANT | ESP_TROLL | +F:LIMIT_BLOWS | +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE | +f:FREE_ACT | IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE | +R:33 +F:ESP_EVIL | SLAY_EVIL | R_ANY | +R:10 +F:BLOWS +R:1 +F:PVAL_M1 +r:F:CHAOTIC | DRAIN_HP | VAMPIRIC | CURSED | HEAVY_CURSE | + +# Robe of Ithryn (of the Archmagi in T-Plus) +N:198:of the Ithryn +T:36:2:2 +X:A:30:30 +W:15:3:45:15000 +C:-5:-5:15:2 +R:100 +F:FREE_ACT | RES_BLIND | RES_CONF | R_HIGH | SUST_INT | +F:SPELL_CONTAIN | WIELD_CAST | +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE | +f:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE | SUST_INT | +r:F:CURSED | HEAVY_CURSE | AUTO_CURSE | +R:33 +F:RES_DISEN | SPELL | +R:10 +F:MANA | + +# Robe of Sanctity + +N:199:of Sanctity +T:36:2:2 +X:A:30:30 +W:15:3:45:15000 +C:0:0:15:2 +R:100 +F:FREE_ACT | RES_BLIND | RES_CONF | R_HIGH | SUST_WIS | +F:BLESSED | ACTIVATE | +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE | +f:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE | SUST_WIS | +a:HARDCORE=PROT_EVIL +r:F:CURSED | HEAVY_CURSE | AUTO_CURSE | +R:33 +F:ESP_EVIL | +R:10 +F:SPELL | + +N:200:Ethereal +T:35:0:99 +T:36:2:2 +X:B:25:25 +W:15:2:20:27500 +C:0:0:20:0 +R:100 +F:FREE_ACT | SEE_INVIS | HOLD_LIFE | +F:ACTIVATE | +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE | +f:FREE_ACT | IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE | +r:F:CURSED | HEAVY_CURSE | AUTO_CURSE | +a:HARDCORE=SPECTRAL +R:33 +F:RES_NETHER | +R:5 +F:MAGIC_BREATH | +f:MAGIC_BREATH | + +### More new ego-items from Annals of Ea by Feanor: + +# Mage staff of the Sindar +N:201:of the Sindar +T:6:0:99 +X:A:24:80 +W:40:25:100:25000 +C:0:0:0:5 +R:100 +F:ESP_EVIL | SPELL | MANA +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD + +# Swords of the Noldor +N:202:of the Noldor +T:23:0:99 +X:A:24:35 +W:40:25:100:50000 +C:15:15:20:4 +R:100 +F:STEALTH | RES_POIS | DEX | CON | WIS | HOLD_LIFE | +f:STEALTH +F:FREE_ACT | SEE_INVIS | FEATHER | REGEN | +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +F:R_ANY | R_LOW | SUSTAIN +F:SLAY_EVIL | BLESSED | WOUNDING +R:30 +F:R_ANY | R_LOW | SUSTAIN +R:20 +F:R_ANY | R_LOW | SUSTAIN | R_HIGH +R:10 +F:R_IMMUNITY | R_ANY + +# Spear of Vanyar +N:203:of the Vanyar +T:22:0:99 +R:100 +X:A:24:35 +W:40:25:100:50000 +C:15:15:20:4 +F:STEALTH | HOLD_LIFE | SEE_INVIS | WIS | INT | +F:REGEN | RES_FEAR | RES_DARK | RES_LITE | RES_BLIND | +F:IGNORE_ACID | IGNORE_FIRE | IGNORE_ELEC | IGNORE_COLD | +F:SLAY_DEMON | SLAY_UNDEAD | BLESSED | +F:R_ANY | R_LOW | SUSTAIN +R:30 +F:R_ANY | R_LOW | SUSTAIN +R:20 +F:R_ANY | R_LOW | SUSTAIN | R_HIGH +R:10 +F:R_IMMUNITY | R_ANY + +# Axe of the Nandor +N:204:of the Nandor +T:24:0:99 +R:100 +X:A:24:35 +W:40:25:100:50000 +C:15:15:20:5 +F:STEALTH | SPEED | SEE_INVIS | RES_COLD | RES_ELEC | +F:IGNORE_ACID | IGNORE_FIRE | IGNORE_COLD | IGNORE_ELEC | +F:SLAY_ORC | SLAY_ANIMAL | RES_POIS | +F:R_ANY | R_LOW | SUSTAIN +R:30 +F:R_ANY | R_LOW | SUSTAIN +R:20 +F:R_ANY | R_LOW | SUSTAIN | R_HIGH +R:10 +F:R_IMMUNITY | R_ANY + +# Arrow of Teleri +N:205:of the Teleri +T:17:0:99 +X:A:23:10 +W:40:25:100:5000 +R:100 +F:R_ANY | WOUNDING | BLESSED + +# Hafted of Avari +N:206:of the Avari +T:21:0:99 +R:100 +X:A:24:35 +W:40:25:100:50000 +C:15:15:20:5 +F:STEALTH | INVIS | SEE_INVIS | INFRA | RES_DARK | +F:RES_BLIND | SLAY_UNDEAD | +F:R_ANY | R_LOW | SUSTAIN +R:30 +F:R_ANY | R_LOW | SUSTAIN +R:20 +F:R_ANY | R_LOW | SUSTAIN | R_HIGH +R:10 +F:R_IMMUNITY | R_ANY + +### Ravenred's Weapons of Unmagic + +N:207:of Unmagic +T:15:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +X:A:24:24 +W:0:2:44:8000 +C:-10:-10:0:0 +R:100 +F:ANTIMAGIC_50 +f:ANTIMAGIC_50 + +### Amulet and ring egos suggested by power + +#Blessed - anything but Doom +N:208:Blessed +T:40:0:99 +T:45:1:99 +X:B:0:10 +W:0:5:100:2000 +C:0:0:10:2 +r:F:CURSED | HEAVY_CURSE | AUTO_CURSE | +R:100 +F:WIS | SEE_INVIS | HOLD_LIFE | BLESSED +f:WIS | SEE_INVIS | HOLD_LIFE | BLESSED + +#Demonic - anything but Devotion and Protection from Evil +N:209:Demonic +T:40:0:1 +T:40:3:24 +T:40:26:99 +T:45:0:99 +X:B:0:10 +W:0:5:100:2000 +C:0:0:0:2 +r:F:BLESSED +R:100 +F:ESP_DEMON | RES_FIRE +f:ESP_DEMON | RES_FIRE + +# Jewellery of the Rohirrim - no speed rings +N:210:Rohirric +T:40:0:99 +T:45:0:30 +T:45:32:99 +X:B:0:10 +W:0:5:100:20000 +C:0:0:0:3 +r:F:CURSED | HEAVY_CURSE | AUTO_CURSE | +R:100 +F:RES_FEAR | SPEED +f:RES_FEAR | SPEED + +# Draconic - anything but Devotion and Protection from Evil +N:211:Draconic +T:40:0:1 +T:40:3:24 +T:40:26:99 +T:45:0:99 +X:B:0:10 +W:0:5:100:2000 +C:5:5:10:1 +r:F:BLESSED +R:100 +F:ESP_DRAGON +f:ESP_DRAGON + +#Elemental - the ones that already give resists are obviously not eligible +N:212:Elemental +T:40:16:28 +T:40:30:99 +T:45:10:16 +T:45:20:99 +X:B:0:30 +W:25:5:50:1000 +C:0:0:0:0 +R:100 +F:IGNORE_ACID | IGNORE_FIRE | IGNORE_COLD | IGNORE_ELEC | +F:RES_ACID | RES_FIRE | RES_COLD | RES_ELEC | R_ANY +R:20 +F:IM_FIRE | R_HIGH +R:15 +F:IM_COLD | R_HIGH +R:10 +F:IM_ELEC | R_HIGH +R:5 +F:IM_ACID | R_HIGH +R:1 +F:IM_NETHER + +### New ego-items unique to Theme module ### + +#Musical instruments of Melkor + +N:213:of Melkor +T:14:0:59 +T:14:61:99 +X:A:0:30 +W:0:5:30:0 +C:0:0:0:-10 +R:100 +F:IGNORE_ACID | IGNORE_FIRE | IGNORE_COLD | IGNORE_ELEC | +F:CURSED | HEAVY_CURSE | AUTO_CURSE | AGGRAVATE +R:50 +F:R_STAT | CURSED | HEAVY_CURSE | AUTO_CURSE + +#Horns of Ulmo (Ulumuri) + +N:214:of Ulmo +T:14:60:60 +X:A:0:80 +W:0:5:80:5000 +C:0:0:0:0 +R:100 +F:IGNORE_ACID | IGNORE_FIRE | IGNORE_COLD | IGNORE_ELEC | +F:PVAL_M5 | R_IMMUNITY + +# Reverse Armour of the Maiar (of the Chosen in T-Plus) +N:215:of the Fallen +T:36:2:99 +T:37:2:99 +X:A:30:30 +W:0:3:45:0 +C:0:0:-15:0 +R:25 +F:CURSED | AUTO_CURSE | ESP_GOOD | +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | +R:50 +F:CURSED | AUTO_CURSE | R_LOW | SUSTAIN | AGGRAVATE +R:75 +F:CURSED | AUTO_CURSE | WRAITH | DRAIN_EXP | +R:100 +F:CURSED | AUTO_CURSE | DRAIN_MANA | DRAIN_HP | BLACK_BREATH + +###Reverse Weapons of the Maiar (of the Chosen in T-Plus) +N:216:of the Fallen +T:15:0:99 +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +X:A:24:35 +W:0:5:45:0 +C:+6:+6:-5:-3 +R:100 +F:NEVER_BLOW | IM_NETHER | PERMA_CURSE +R:50 +F:CURSED | HEAVY_CURSE | AUTO_CURSE | NO_MAGIC | CLONE +R:33 +F:CURSED | HEAVY_CURSE | AUTO_CURSE | DRAIN_EXP | DRAIN_MANA +R:10 +F:CURSED | HEAVY_CURSE | AUTO_CURSE | CHAOTIC | DRAIN_HP +R:1 +F:R_STAT | CURSED | AUTO_CURSE | ESP_GOOD | +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | + +# Robe of Fools (reverse of Ithryn/Archmagi in T-Plus) +N:217:of the Fools +T:36:2:2 +X:A:30:30 +W:0:3:45:0 +C:-5:-5:-15:-2 +R:100 +F:CURSED | HEAVY_CURSE | AUTO_CURSE | LIFE +R:33 +F:CURSED | HEAVY_CURSE | AUTO_CURSE | RES_DISEN | SPELL | NO_MAGIC | +R:10 +F:CURSED | HEAVY_CURSE | AUTO_CURSE | MANA | + +# Robe of Vice (reverse of Sanctity in T-Plus) +N:218:of Vice +T:36:2:2 +X:A:30:30 +W:0:3:45:0 +C:0:0:-15:-2 +R:100 +F:CURSED | HEAVY_CURSE | AUTO_CURSE | LIFE | AGGRAVATE +R:33 +F:ESP_GOOD | ANTIMAGIC_50 + +# Soft and Hard Armour of Sensitivity, no paper armour +N:219:of Sensitivity +T:30:0:99 +T:31:0:99 +T:32:0:99 +T:33:0:99 +T:34:0:99 +X:A:30:30 +W:0:3:45:0 +C:0:0:-5:-2 +R:100 +F:CURSED | SENS_FIRE | R_STAT | + +# Elemental ammo +N:220:Elemental +T:16:0:99 +T:17:0:99 +T:18:0:99 +X:B:30:30 +W:0:1:50:1000 +C:5:5:0:0 +R:100 +F:BRAND_ACID | IGNORE_ACID +F:BRAND_ELEC | IGNORE_ELEC +F:BRAND_FIRE | IGNORE_FIRE +F:BRAND_COLD | IGNORE_COLD +F:BRAND_POIS | +f:BRAND_ACID | +f:BRAND_ELEC | +f:BRAND_FIRE | +f:BRAND_COLD | +f:BRAND_POIS | + +# Cursed ammo + +N:221:of Angmar +T:16:0:99 +T:17:0:99 +T:18:0:99 +X:A:30:30 +W:0:1:50:0 +C:-10:-10:0:0 +R:100 +F:CURSED | IMMOVABLE + +# Bows of Numenor + +N:222:of Numenor +T:19:12:34 +X:A:50:50 +W:0:1:50:0 +C:10:10:0:3 +R:100 +F:DEX | XTRA_MIGHT | XTRA_SHOTS | +F:RES_FEAR | RES_POIS | RES_DARK | FREE_ACT + +# Lights of Valinor (no refillable lights) + +N:223:of Valinor +T:39:2:4 +X:A:60:60 +W:0:2:60:45000 +C:0:0:0:2 +R:100 +F:STR | INT | WIS | DEX | CON | CHR +F:ESP_ALL +f:STR | INT | WIS| DEX | CON | CHR | ESP_ALL + +# Lucky weapons - named after smith of legend +N:224:of Telchar +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +X:A:70:70 +W:10:2:70:3000 +C:10:10:0:2 +r:F:CURSED | HEAVY_CURSE | AUTO_CURSE +R:100 +F:LUCK +f:LUCK + +# Unlucky weapons - of the Din-horde (Orcs) +N:225:of the Glamhoth +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +X:A:50:50 +W:0:2:50:0 +C:5:5:0:-2 +R:100 +F:LUCK | CURSED | HEAVY_CURSE | AUTO_CURSE | AGGRAVATE +f:LUCK | CURSED | HEAVY_CURSE | AUTO_CURSE | AGGRAVATE + +# Holy ammo - based on 'Of Holy Might' from Hengband +N:226:Blessed +T:16:0:99 +T:17:0:99 +T:18:0:99 +X:B:30:30 +W:0:5:60:600 +C:5:10:0:0 +R:100 +F:SLAY_EVIL | SLAY_DEMON | SLAY_UNDEAD | BRAND_FIRE | BLESSED +F:IGNORE_FIRE | IGNORE_ACID + +# Holy Avenger weapons brought back, modified +N:227:(Holy Avenger) +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +X:A:50:50 +W:0:2:60:20000 +C:5:5:0:3 +R:100 +F:WIS | SUSTAIN | +F:SLAY_EVIL | SLAY_UNDEAD | SLAY_DEMON | +F:SEE_INVIS | BLESSED + +# A Whip of the Balroeg, adapted from Oangband +N:228:of the Balroeg +T:21:2:2 +X:A:50:50 +W:0:3:50:12000 +C:-10:10:0:-3 +R:100 +F:STEALTH | BRAND_FIRE | RES_FIRE | LITE2 | +F:IGNORE_FIRE | ESP_GOOD | +R:5 +F:IM_FIRE + +# Bows of the Nazgul, adapted from Angband +N:229:of the Nazgul +T:19:0:99 +T:15:0:99 +R:80 +X:A:25:10 +W:0:3:50:0 +C:0:0:0:-1 +r:F:BLESSED +F:DRAIN_EXP | SEE_INVIS | CHR + +# Magical missile launchers +# Tiny mana boost for magic-using archers or warrior-types +N:230:Magical +T:19:0:99 +T:15:0:99 +X:B:25:10 +W:25:9:30:8000 +C:0:0:0:1 +R:100 +F:MANA +f:MANA + +# Magical jewelry (no rings/amulets of spell, anti-magic, cursed items) +N:231:Magical +X:B:0:2 +T:40:0:12 +T:40:14:26 +T:40:28:99 +T:45:0:56 +T:45:59:99 +W:5:1:10:2000 +C:0:0:0:0 +r:F:CURSED | HEAVY_CURSE | AUTO_CURSE +R:100 +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +f:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +R:50 +F:SPELL_CONTAIN | WIELD_CAST +f:SPELL_CONTAIN | WIELD_CAST + +# Magestaves of Sorcery, added in Theme 1.0.1 +N:232:of Sorcery +X:A:24:60 +T:6:0:99 +W:30:1:8:100000 +C:-80:-80:0:3 +r:F:CURSED | HEAVY_CURSE | PERMA_CURSE +R:100 +F:MANA | SPELL | LIFE +R:50 +F:PVAL_M2 + +# Sentient weapons, added in Theme 1.0.2 +N:233:of Doriath +T:21:0:99 +T:22:0:99 +T:23:0:99 +T:24:0:99 +X:A:70:70 +W:0:2:70:50000 +C:1:1:0:0 +r:F:CURSED | HEAVY_CURSE | AUTO_CURSE +R:100 +F:LEVELS +f:LEVELS + +# Bows of Mirkwood, added in Theme 1.0.2 +N:234:of Mirkwood +T:19:12:13 +X:A:25:20 +W:50:2:21:50000 +C:10:10:0:2 +R:100 +F:CON | XTRA_MIGHT | XTRA_SHOTS | RES_POIS | STEALTH +F:IGNORE_ACID | IGNORE_FIRE | HIDE_TYPE | SEE_INVIS + +# Spear of Mirkwood, added in Theme 1.0.2 +N:235:of Mirkwood +T:22:2:2 +X:A:24:35 +W:40:25:100:50000 +C:15:15:20:3 +r:F:CURSED | HEAVY_CURSE | AUTO_CURSE +R:100 +F:STEALTH | HOLD_LIFE | SEE_INVIS | CON | +F:RES_FEAR | RES_DARK | RES_LITE | RES_BLIND | +F:IGNORE_ACID | IGNORE_FIRE | +F:R_ANY | R_LOW | SUSTAIN +R:30 +F:R_ANY | R_LOW | SUSTAIN +R:20 +F:R_ANY | R_LOW | SUSTAIN | R_HIGH + +# Dwarven jewelry - no speed rings; added in Theme 1.1.4 +N:236:Dwarven +T:40:0:99 +T:45:0:30 +T:45:32:99 +X:B:0:5 +W:5:1:10:1250 +C:0:0:10:1 +R:100 +F:INFRA +Z:stone to mud +R:50 +F:SUSTAIN +R:25 +F:R_ANY | SUSTAIN +R:5 +F:CON + +# Sharpened arrows and bolts; added in Theme 1.1.5 +# Separating from 'Sharp' weapons to avoid cost of 5000 AU per missile +N:237:Sharpened +T:17:0:99 +T:18:0:99 +X:B:23:10 +W:5:2:30:400 +R:100 +F:VORPAL +f:VORPAL + +# N: serial number : ego type +# D: description +# T: tval : min sval : max sval +# R: rarity +# X: position : slot : rating +# W: depth : rarity1 : rarity2 : cost +# C: to-hit : to-dam : to-ac : pval +# r:N:needed flags on the base object +# r:F:forbidden flags on the base object +# Z: granted_power +# F: flags diff --git a/lib/mods/theme/edit/evil.map b/lib/mods/theme/edit/evil.map new file mode 100644 index 00000000..a2f00914 --- /dev/null +++ b/lib/mods/theme/edit/evil.map @@ -0,0 +1,52 @@ +# permanent wall +F:X:61:0 + +# granite +F:#:57:0 + +# Mountain Chain +F:^:97:0 + +# up staircase +F:<:6:0 + +# Dirt +F:.:88:0 + +# Lesser Balrog +F:b:88:0:996:0:0:0:0:0:0:2 + +# Greater Balrog +F:B:88:0:807:0:0:0:0:0:0:2 + +# Pit Fiend +F:P:88:0:812:0:0:0:0:0:0:2 + +# Dungeon layout +D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +D:X^..^^^^^^^^^^^^^^^^^^^^^^^^^^^^X +D:X^..^^^^^^^^^..^^^^^^^^^^^^^^^^^X +D:X^...^^^^^^.........^^^^^^^^^^^^X +D:X^^..^^^^^..^^^^..^B^^^^^^^^^^^^X +D:X^...^^^^...^^^^^..^^^^^^^^^^^^^X +D:X^^..^^^..^^.^^^^^^^^^^^^^^^^^^^X +D:X^..^^^^^.....^^^^^.^^^^^^^^^^^^X +D:X^^..^^^^..^^.^^^.^......^^^^^^^X +D:X^..^^^^..^^...^^...^..^.^^^^^^^X +D:X^^..^^^..^^^..^...^^^....^^^^^^X +D:X^^^...^.^^^.....^^^^P...<^^^^^^X +D:X^^^.....^^^^..^^^^^^^^..^^^^^^^X +D:X^^^^^^.^^^^..^^^^^^^^^^^^^^^^^^X +D:X^^^^^^^^^^^...^^^^^^^^^^^^^^^^^X +D:X^^^^^.^^^^.^..^^^^^^^^^^^^^^^^^X +D:X^^^^...^^...^^^...^^^^^^...^^^^X +D:X^^^^.^....^^^^.^.....^..^..^^^^X +D:X^^^^..^^^^^.....^...^..^^^B^^^^X +D:X^^^P........^.....^^^^^^^^^^^^^X +D:X^^^^^^...^^^^^^^^^^^^^^^^^^^^^^X +D:X^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^X +D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + +# Starting position +P:3:4 + diff --git a/lib/mods/theme/edit/f_info.txt b/lib/mods/theme/edit/f_info.txt new file mode 100644 index 00000000..dbfec51a --- /dev/null +++ b/lib/mods/theme/edit/f_info.txt @@ -0,0 +1,1245 @@ +# File: f_info.txt + + +# This file is used to initialize the "lib/raw/f_info.raw" file, which is +# used to initialize the "terrain feature" information for the Angband game. + +# Do not modify this file unless you know exactly what you are doing, +# unless you wish to risk possible system crashes and broken savefiles. + +# After modifying this file, delete the "lib/raw/f_info.raw" file. + +# Note that the terrain feature are grouped into very regular groups, +# such that each of the bits in the feature type conveys information. + +# Note that terrain feature zero contains the "darkness" picture. + + +# Version stamp (required) + +V:2.0.0 + + +# 0x00 --> nothing + +N:0:nothing +G: :w +F:FLOOR + +# 0x01 --> open floor + +N:1:open floor +G:.:w +F:FLOOR | DONT_NOTICE_RUNNING | SUPPORT_LIGHT | CAN_RUN +F:SUPPORT_GROWTH + +# 0x02 -> fountain +N:2:fountain +G:_:w +F:FLOOR | NOTICE | REMEMBER | CAN_RUN +D:0:The liquid here seems magical. + +# 0x03 --> glyph of warding + +N:3:glyph of warding +G:;:y +F:FLOOR | NOTICE | SUPPORT_LIGHT | CAN_RUN | REMEMBER +D:0:There is a mighty spell of protection here. + +# 0x04 --> open door + +N:4:open door +G:':U +F:FLOOR | NOTICE | REMEMBER | CAN_RUN | DOOR + +# 0x05 --> broken door + +N:5:broken door +G:':U +F:FLOOR | NOTICE | REMEMBER | CAN_RUN | DOOR + +# 0x06 --> up stairs (perm) + +N:6:up staircase +G:<:w +F:FLOOR | PERMANENT | NOTICE | SUPPORT_LIGHT | REMEMBER | CAN_RUN +D:0:There is an up staircase here. +D:1:You cannot tunnel a stair. + +# 0x07 --> down stairs (perm) + +N:7:down staircase +G:>:w +F:FLOOR | PERMANENT | NOTICE | SUPPORT_LIGHT | REMEMBER | CAN_RUN +D:0:There is a down staircase here. +D:1:You cannot tunnel a stair. + +N:8:quest entrance +G:>:y +F:FLOOR | PERMANENT | REMEMBER | NOTICE | CAN_RUN +D:1:You cannot tunnel a quest entrance. + +N:9:quest exit +G:<:y +F:FLOOR | PERMANENT | REMEMBER | NOTICE | CAN_RUN +D:1:You cannot tunnel a quest exit. + +N:10:quest down level +G:>:r +F:FLOOR | PERMANENT | REMEMBER | NOTICE | CAN_RUN + +N:11:quest up level +G:<:r +F:FLOOR | PERMANENT | REMEMBER | NOTICE | CAN_RUN + +N:12:town exit +G:>:g +F:FLOOR | PERMANENT | REMEMBER | NOTICE | CAN_RUN + +N:13:shaft down +G:>:U +F:FLOOR | PERMANENT | REMEMBER | NOTICE | CAN_RUN +D:0:There is a shaft down here. +D:1:You cannot tunnel a shaft. + +N:14:shaft up +G:<:U +F:FLOOR | PERMANENT | REMEMBER | NOTICE | CAN_RUN +D:0:There is a shaft up here. +D:1:You cannot tunnel a shaft. + +# 0x0F -> empty fountain +N:15:fountain +G:_:D +F:FLOOR | NOTICE | REMEMBER | CAN_RUN +D:0:The fountain seems empty. + +N:16:web +G:+:y +F:CAN_PASS | NOTICE | WEB | NOTICE | TUNNELABLE +D:1:You tunnel through the web. +D:2:a web blocking your way + +# Trap -- the flags are not used by the program +N:17:trap +G:^:w +F:FLOOR | NOTICE | REMEMBER + +# 0x12 --> 0x1F -- UNUSED + +# 0x2x --> locked door (power 0) + +N:32:door +G:+:U +M:32 +F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | REMEMBER | DOOR +F:TUNNELABLE +D:1:You bash the boor. + +# 0x2x --> locked door (power 1) + +N:33:locked door +G:+:U +M:32 +F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | REMEMBER | DOOR +F:TUNNELABLE +D:1:You bash the boor. + +# 0x2x --> locked door (power 2) + +N:34:locked door +G:+:U +M:32 +F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | REMEMBER | DOOR +F:TUNNELABLE +D:1:You bash the boor. + +# 0x2x --> locked door (power 3) + +N:35:locked door +G:+:U +M:32 +F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | REMEMBER | DOOR +F:TUNNELABLE +D:1:You bash the boor. + +# 0x2x --> locked door (power 4) + +N:36:locked door +G:+:U +M:32 +F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | REMEMBER | DOOR +F:TUNNELABLE +D:1:You bash the boor. + +# 0x2x --> locked door (power 5) + +N:37:locked door +G:+:U +M:32 +F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | REMEMBER | DOOR +F:TUNNELABLE +D:1:You bash the boor. + +# 0x2x --> locked door (power 6) + +N:38:locked door +G:+:U +M:32 +F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | REMEMBER | DOOR +F:TUNNELABLE +D:1:You bash the boor. + +# 0x2x --> locked door (power 7) + +N:39:locked door +G:+:U +M:32 +F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | REMEMBER | DOOR +F:TUNNELABLE +D:1:You bash the boor. + +# 0x2x --> jammed door (power 0) + +N:40:jammed door +G:+:U +M:32 +F:WALL | NO_WALK | CAN_PASS | NO_VISION | REMEMBER | NOTICE +F:TUNNELABLE +D:1:You bash the boor. + +# 0x2x --> jammed door (power 1) + +N:41:jammed door +G:+:U +M:32 +F:WALL | NO_WALK | CAN_PASS | NO_VISION | REMEMBER | NOTICE +F:TUNNELABLE +D:1:You bash the boor. + +# 0x2x --> jammed door (power 2) + +N:42:jammed door +G:+:U +M:32 +F:WALL | NO_WALK | CAN_PASS | NO_VISION | REMEMBER | NOTICE +F:TUNNELABLE +D:1:You bash the boor. + +# 0x2x --> jammed door (power 3) + +N:43:jammed door +G:+:U +M:32 +F:WALL | NO_WALK | CAN_PASS | NO_VISION | REMEMBER | NOTICE +F:TUNNELABLE +D:1:You bash the boor. + +# 0x2x --> jammed door (power 4) + +N:44:jammed door +G:+:U +M:32 +F:WALL | NO_WALK | CAN_PASS | NO_VISION | REMEMBER | NOTICE +F:TUNNELABLE +D:1:You bash the boor. + +# 0x2x --> jammed door (power 5) + +N:45:jammed door +G:+:U +M:32 +F:WALL | NO_WALK | CAN_PASS | NO_VISION | REMEMBER | NOTICE +F:TUNNELABLE +D:1:You bash the boor. + +# 0x2x --> jammed door (power 6) + +N:46:jammed door +G:+:U +M:32 +F:WALL | NO_WALK | CAN_PASS | NO_VISION | REMEMBER | NOTICE +F:TUNNELABLE +D:1:You bash the boor. + +# 0x2x --> jammed door (power 7) + +N:47:jammed door +G:+:U +M:32 +F:WALL | NO_WALK | CAN_PASS | NO_VISION | REMEMBER | NOTICE +F:TUNNELABLE +D:1:You bash the boor. + +# 0x30 --> secret door + +N:48:secret door +G:#:w +M:56 +F:WALL | NO_WALK | CAN_PASS | NO_VISION | DOOR +F:DONT_NOTICE_RUNNING +F:TUNNELABLE +D:1:You tunnel. + +# 0x31 --> rubble + +N:49:pile of rubble +G:::w +F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE +F:CAN_FLY | SUPPORT_LIGHT +F:TUNNELABLE +D:1:You dig in the rubble. + +# 0x32 --> magma vein + +N:50:magma vein +G:%:s +F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING +F:TUNNELABLE +D:1:You tunnel into the magma vein. + +# 0x33 --> quartz vein + +N:51:quartz vein +G:%:w +F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING +F:TUNNELABLE +D:1:You tunnel into the quartz vein. + +# 0x34 --> magma vein + treasure + +N:52:magma vein +G:%:s +M:50 +F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING +F:TUNNELABLE +D:1:You tunnel into the magma vein. + +# 0x35 --> quartz vein + treasure + +N:53:quartz vein +G:%:w +M:51 +F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING +F:TUNNELABLE +D:1:You tunnel into the quartz vein. + +# 0x36 --> magma vein + known treasure + +N:54:magma vein with treasure +G:*:o +F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING +F:TUNNELABLE +D:1:You tunnel into the magma vein. + +# 0x37 --> quartz vein + known treasure + +N:55:quartz vein with treasure +G:*:o +F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING +F:TUNNELABLE +D:1:You tunnel into the quartz vein. + +# 0x38 --> granite wall -- basic + +N:56:granite wall +G:#:w +F:WALL | NO_WALK | CAN_PASS | NO_VISION | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING +F:TUNNELABLE +D:1:You tunnel into the granite wall. + +# 0x39 --> granite wall -- inner + +N:57:granite wall +G:#:w +M:56 +F:WALL | NO_WALK | CAN_PASS | NO_VISION | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING +F:TUNNELABLE +D:1:You tunnel into the granite wall. + +# 0x3A --> granite wall -- outer + +N:58:granite wall +G:#:w +M:56 +F:WALL | NO_WALK | CAN_PASS | NO_VISION | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING +F:TUNNELABLE +D:1:You tunnel into the granite wall. + +# 0x3B --> granite wall -- solid + +N:59:granite wall +G:#:w +M:56 +F:WALL | NO_WALK | CAN_PASS | NO_VISION | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING +F:TUNNELABLE +D:1:You tunnel into the granite wall. + +# 0x3C --> permanent wall -- basic (perm) + +N:60:permanent wall +G:#:w +F:WALL | NO_WALK | NO_VISION | PERMANENT | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING + +# 0x3D --> permanent wall -- inner (perm) + +N:61:permanent wall +G:#:w +M:60 +F:WALL | NO_WALK | NO_VISION | PERMANENT | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING + +# 0x3E --> permanent wall -- outer (perm) + +N:62:permanent wall +G:#:w +M:60 +F:WALL | NO_WALK | NO_VISION | PERMANENT | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING + +# 0x3F --> permanent wall -- solid (perm) + +N:63:permanent wall +G:#:w +M:60 +F:WALL | NO_WALK | NO_VISION | PERMANENT | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING + +N:64:explosive rune +G:*:R +F:FLOOR | CAN_LEVITATE | CAN_FLY | NOTICE | SUPPORT_LIGHT +D:0:This rune seems unstable. + +N:65:Straight Road startpoint +G:*:w +F:FLOOR | REMEMBER | NOTICE + +N:66:section of the Straight Road +G:*:B +F:FLOOR | REMEMBER | NOTICE + +N:67:section of the Straight Road +G:*:b +F:FLOOR | REMEMBER | NOTICE + +N:68:section of the Straight Road +G:*:B +F:FLOOR | REMEMBER | NOTICE + +N:69:section of the Straight Road +G:*:b +F:FLOOR | REMEMBER | NOTICE + +N:70:section of the Straight Road +G:*:W +F:FLOOR | REMEMBER | NOTICE + +N:71:section of the Straight Road (discharged) +G:*:W +F:FLOOR | REMEMBER | NOTICE + +N:72:Straight Road exit +G:*:w +F:FLOOR | REMEMBER | NOTICE + +N:73:corrupted section of the Straight Road +G:*:D +F:FLOOR | REMEMBER | NOTICE + +# 74 --> shop + +N:74:Building +G:1:U +F:FLOOR | PERMANENT | REMEMBER | NOTICE | CAN_RUN + +# 75 --> 78 Quests index + +N:75:permanent wall +G:#:w +F:WALL | NO_WALK | NO_VISION | PERMANENT | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING + +N:76:permanent wall +G:#:w +F:WALL | NO_WALK | NO_VISION | PERMANENT | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING + +N:77:permanent wall +G:#:w +F:WALL | NO_WALK | NO_VISION | PERMANENT | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING + +N:78:permanent wall +G:#:w +F:WALL | NO_WALK | NO_VISION | PERMANENT | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING + +#Elanor +N:79:grass with Elanor flowers +G:&:y +F:FLOOR | DONT_NOTICE_RUNNING | CAN_RUN +F:SUPPORT_GROWTH + +#Fumellar +N:80:grass with Fumella flowers +G:;:r +F:FLOOR | DONT_NOTICE_RUNNING | CAN_RUN +F:SUPPORT_GROWTH + +#Anemones +N:81:grass with anemones +G:;:v +F:FLOOR | DONT_NOTICE_RUNNING | CAN_RUN +F:SUPPORT_GROWTH + +#Niphredil +N:82:grass with Niphredil flowers +G:;:w +F:FLOOR | DONT_NOTICE_RUNNING | CAN_RUN +F:SUPPORT_GROWTH + +#Iris +N:83:grass with irises +G:;:b +F:FLOOR | DONT_NOTICE_RUNNING | CAN_RUN +F:SUPPORT_GROWTH + +N:84:stream of shallow water +G:~:B +S:B:B:B:B:B:B:b +F:ATTR_MULTI +F:FLOOR | CAN_LEVITATE | CAN_FLY | REMEMBER | SUPPORT_LIGHT | CAN_RUN +F:DONT_NOTICE_RUNNING +F:SUPPORT_GROWTH + +# -1 = player level +N:85:pool of deep lava +G:.:R +E:-1d2:1:FIRE +F:FLOOR | CAN_LEVITATE | CAN_FLY | REMEMBER | SUPPORT_LIGHT +D:0:You move across the deep lava. + +N:86:stream of shallow lava +G:.:r +E:-1d1:1:FIRE +F:FLOOR | CAN_LEVITATE | CAN_FLY | REMEMBER | SUPPORT_LIGHT +D:0:You move across the shallow lava. + +N:87:dark pit +G:#:D +F:CAN_LEVITATE | CAN_FLY +F:NO_WALK | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING +D:0:Ohhh, it is dark and deep. + +N:88:dirt +G:.:U +F:FLOOR | SUPPORT_LIGHT | CAN_RUN +F:DONT_NOTICE_RUNNING +F:SUPPORT_GROWTH + +N:89:patch of grass +G:.:G +F:FLOOR | SUPPORT_LIGHT | CAN_RUN +F:DONT_NOTICE_RUNNING +F:SUPPORT_GROWTH + +N:90:ice +G:.:W +E:1d1:50:ICE +F:FLOOR | NOTICE + +N:91:sand +G:.:y +F:FLOOR | DONT_NOTICE_RUNNING | CAN_RUN +F:SUPPORT_GROWTH + +N:92:dead tree +G:#:D +F:CAN_FLY | CAN_PASS +F:WALL | NO_WALK | NO_VISION | NOTICE +F:DONT_NOTICE_RUNNING +F:TUNNELABLE +D:1:You chop away at the dead tree. +D:2:a tree blocking your way + +N:93:ash +G:.:s +F:FLOOR | DONT_NOTICE_RUNNING | CAN_RUN +F:SUPPORT_GROWTH + +N:94:puddle of mud +G:.:u +F:FLOOR | DONT_NOTICE_RUNNING | CAN_RUN +F:SUPPORT_GROWTH + +N:95:ice wall +G:#:W +F:WALL | NO_WALK | CAN_PASS | NO_VISION | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING +F:TUNNELABLE +D:1:You tunnel into the ice wall... #BOh, chilly#w. +D:2:an ice wall blocking your way + +N:96:tree +G:#:G +F:CAN_FLY | CAN_PASS | SUPPORT_LIGHT +F:WALL | NO_WALK | NO_VISION +F:DONT_NOTICE_RUNNING +F:TUNNELABLE +D:1:You chop away at the tree. +D:2:a tree blocking your way + +N:97:mountain chain +G:^:U +F:CAN_CLIMB | CAN_PASS | SUPPORT_LIGHT +F:WALL | NO_WALK | NO_VISION +F:DONT_NOTICE_RUNNING +F:PERMANENT +D:1:You cannot tunnel into such a hard stone. +D:2:a hard stone block blocking your way + +# 0x62 --> sandwall + +N:98:sandwall +G:#:y +F:WALL | NO_WALK | CAN_PASS | NO_VISION +F:DONT_NOTICE_RUNNING +F:TUNNELABLE +D:1:You easily dig into the sandwall. +D:2:a sandwall blocking your way + +# 0x63 --> sandwall + treasure + +N:99:sandwall +G:%:y +M:98 +F:WALL | NO_WALK | CAN_PASS | NO_VISION +F:DONT_NOTICE_RUNNING +F:TUNNELABLE +D:1:You easily dig into the sandwall. +D:2:a sandwall blocking your way + +# 0x64 --> sandwall + known treasure + +N:100:sandwall with treasure +G:*:o +F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE +F:DONT_NOTICE_RUNNING +F:TUNNELABLE +D:1:You easily tunnel into the sandwall. +D:2:a sandwall blocking your way + +N:101:high mountain chain +G:^:W +F:WALL | NO_WALK | NO_VISION | PERMANENT +F:DONT_NOTICE_RUNNING +D:1:This rock is far too hard. +D:2:a very hard stone block blocking your way + +N:102:nether mist +G:.:v +S:v:R:r:v:R:r:D +E:1d1:40:NETHER +F:ATTR_MULTI +F:FLOOR | DONT_NOTICE_RUNNING | CAN_RUN + +# A diggable glass wall. +N:103:molten glass wall +G:.:B +F:NO_WALK | WALL | CAN_PASS | TUNNELABLE | NOTICE +F:DONT_NOTICE_RUNNING +D:1:You tunnel into the molten glass wall... +D:2:a molten glass wall blocking your way + +N:159:Void Jumpgate +G:+:v +F:FLOOR | REMEMBER | NOTICE | PERMANENT | CAN_RUN +D:0:A dark rift opens to the void here. + +N:160:Void Jumpgate +G:+:v +F:FLOOR | REMEMBER | NOTICE | PERMANENT | CAN_RUN +D:0:A dark rift opens to the void here. + +###### Here are the altars. ###### + +N:161:Altar of Being +G:0:W +F:FLOOR | REMEMBER | NOTICE | CAN_RUN +D:0:You feel at peace. + +N:162:Altar of Winds +G:0:B +F:FLOOR | REMEMBER | NOTICE | CAN_RUN +D:0:You grow a desire to become a bird. + +N:163:Altar of Force +G:0:R +F:FLOOR | REMEMBER | NOTICE | CAN_RUN +D:0:You grow a desire to fight evil. + +N:164:Altar of Darkness +G:0:D +F:FLOOR | REMEMBER | NOTICE | CAN_RUN +D:0:Images of pain and death fill your mind. + +N:165:Altar of Nature +G:0:g +F:FLOOR | REMEMBER | NOTICE | CAN_RUN +D:0:You feel the desire to walk in a great forest. + +N:166:Altar of Stone +G:0:s +F:FLOOR | REMEMBER | NOTICE | CAN_RUN +D:0:You grow a desire to forge items. + +N:167:Altar of Light +G:0:y +F:FLOOR | REMEMBER | NOTICE | CAN_RUN +D:0:You grow a desire to light up dark places. + +N:168:Altar of Waters +G:0:b +F:FLOOR | REMEMBER | NOTICE | CAN_RUN +D:0:You grow a desire to bathe in the ocean. + +N:169:Altar of Doom +G:0:o +F:FLOOR | REMEMBER | NOTICE | CAN_RUN +D:0:You grow a desire to do justice. + +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX + +# Used as a marker for random quests +N:172:open floor +G:.:w +F:FLOOR | CAN_RUN | DONT_NOTICE_RUNNING +F:SUPPORT_GROWTH + +# Underground Tunnel +N:173:Underground Tunnel +G:#:s +F:FLOOR | REMEMBER | SUPPORT_LIGHT | DONT_NOTICE_RUNNING | CAN_RUN +D:0:Oh, an underground tunnel! + +# Tainted water +N:174:stream of tainted water +G:~:u +F:FLOOR | CAN_LEVITATE | CAN_FLY | REMEMBER | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING + +N:175:monster trap +G:;:v +F:FLOOR + +N:176:Void Jumpgate +G:+:v +F:FLOOR | REMEMBER | NOTICE | PERMANENT | CAN_RUN +D:0:A dark rift opens to the void here. + +N:177:lava wall +G:#:R +S:R:R:r:r:U:u:R +F:ATTR_MULTI +F:WALL | NO_WALK | NO_VISION | PERMANENT | DONT_NOTICE_RUNNING +D:1:The lava is far too hot to tunnel into it. +D:2:a lava wall blocking your way + +N:178:Great Fire +G:%:v +S:R:R:y:v:y:v:R +E:150d2:1:HELL_FIRE +F:ATTR_MULTI +F:FLOOR | REMEMBER | NOTICE | PERMANENT +D:0:This fire is so powerful it could destroy even the most powerful artifacts. + +N:179:path to the next area +G:>:w +F:FLOOR | PERMANENT | NOTICE | REMEMBER | CAN_RUN +D:0:There is a path leading to the next area here. +D:1:You cannot tunnel a path. + +N:180:path to the previous area +G:<:w +F:FLOOR | PERMANENT | NOTICE | REMEMBER | CAN_RUN +D:0:There is a path leading to the previous area here. +D:1:You cannot tunnel a path. + +N:181:field +G:::g +F:FLOOR | PERMANENT | NOTICE | REMEMBER +F:DONT_NOTICE_RUNNING +D:1:You cannot tunnel a field. + +N:182:Ekkaia, the Encircling Sea +G:*:b +S:b:b:b:b:b:b:B +F:ATTR_MULTI +F:WALL | NO_WALK | NO_VISION | PERMANENT | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING + +N:183:void +G: :d +F:FLOOR + +# XXX 182 - 186 + +# 187 --> terrain -- deep water + +N:187:pool of deep water +G:~:b +S:b:b:b:b:b:b:B +F:ATTR_MULTI +F:FLOOR | CAN_LEVITATE | CAN_FLY | REMEMBER | SUPPORT_LIGHT + +# Glass wall -- can see but not pass +N:188:glass wall +G:.:B +F:NO_WALK | WALL | PERMANENT | NOTICE +F:DONT_NOTICE_RUNNING +D:1:This glass seems to be totaly impenetrable. +D:2:a glass wall blocking your way + +# Illusion wall -- can't see but can pass +N:189:illusion wall +G:#:w +F:FLOOR | NO_VISION | REMEMBER | SUPPORT_LIGHT | DONT_NOTICE_RUNNING +D:0:Looks like this wall is not so real. + +# Grass roof +N:190:Grass roof +G:#:y +F:WALL | NO_WALK | NO_VISION | PERMANENT | DONT_NOTICE_RUNNING + +# grass roof top +N:191:grass roof top +G:#:y +F:WALL | NO_WALK | NO_VISION | PERMANENT | DONT_NOTICE_RUNNING + +# grass roof chimney +N:192:grass roof chimney +G:#:y +F:WALL | NO_WALK | NO_VISION | PERMANENT | DONT_NOTICE_RUNNING + +# brick roof +N:193:brick roof +G:#:r +F:WALL | NO_WALK | NO_VISION | PERMANENT | DONT_NOTICE_RUNNING + +# brick roof top +N:194:brick roof top +G:#:r +F:WALL | NO_WALK | NO_VISION | PERMANENT | DONT_NOTICE_RUNNING + +# brick roof chimney +N:195:brick roof chimney +G:#:r +F:WALL | NO_WALK | NO_VISION | PERMANENT | DONT_NOTICE_RUNNING + +# window +N:196:window +G:#:w +F:WALL | NO_WALK | NO_VISION | PERMANENT | DONT_NOTICE_RUNNING + +# small window +N:197:small window +G:#:w +F:WALL | NO_WALK | NO_VISION | PERMANENT | DONT_NOTICE_RUNNING + +# rain barrel +N:198:rain barrel +G:#:w +F:WALL | NO_WALK | NO_VISION | PERMANENT | DONT_NOTICE_RUNNING + +# grass with Kingsfoil flowers +N:199:grass with Kingsfoil flowers +G:;:G +F:FLOOR | DONT_NOTICE_RUNNING | CAN_RUN +F:SUPPORT_GROWTH + +# cobblestone road +N:200:cobblestone road +G:.:w +F:FLOOR | DONT_NOTICE_RUNNING | CAN_RUN + +# cobblestone with outlet +N:201:cobblestone with outlet +G:.:w +F:FLOOR | DONT_NOTICE_RUNNING | CAN_RUN + +N:202:small tree +G:#:g +F:FLOOR | DONT_NOTICE_RUNNING | CAN_RUN | SUPPORT_LIGHT | REMEMBER +F:NO_VISION + +# Just to have a town entrance picture +N:203:town +G:*:w +F:FLOOR | NOTICE + +# Underground Tunnel +N:204:Underground Tunnel +G:^:U +F:FLOOR | REMEMBER | SUPPORT_LIGHT | DONT_NOTICE_RUNNING | CAN_RUN +D:0:Oh, an underground tunnel! + +# Fire +N:205:a blazing fire +G:%:y +S:y:y:y:R:r:y:R +E:-1d2:1:FIRE +D:0:The blazing fire burns you! +F:ATTR_MULTI +F:FLOOR | CAN_FLY | REMEMBER | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING + +# Permanent rubble -- town use +N:206:pile of rubble +G:::w +F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE +F:CAN_FLY | SUPPORT_LIGHT | PERMANENT +D:1:Looks like this pile of rubble is quite hard. + +# Rocky ground - rougher terrain. +N:207:rocky ground +G:.:s +F:FLOOR | SUPPORT_LIGHT | CAN_RUN +F:DONT_NOTICE_RUNNING + +# cloud-like vapour. Floor for Eru's temple +N:208:cloud-like vapour +G:.:W +S:W:B:B:W:w:W:B +F:FLOOR | CAN_LEVITATE | CAN_FLY | SUPPORT_LIGHT +F:ATTR_MULTI | CAN_RUN | DONT_NOTICE_RUNNING + +# condensing water +N:209:condensing water +G:~:B +S:B:B:B:B:B:B:b +F:ATTR_MULTI +F:FLOOR | CAN_LEVITATE | CAN_FLY | REMEMBER | SUPPORT_LIGHT | CAN_RUN +F:DONT_NOTICE_RUNNING + +# Dense mist. Can pass through, but not see through +N:210:dense mist +G:#:w +S:w:W:s:s:s:w:w +F:FLOOR | NO_VISION | REMEMBER | SUPPORT_LIGHT +F:ATTR_MULTI | DONT_NOTICE_RUNNING +D:0:You wander through the mist. +D:1:You cannot tunnel through mist! + +# Hail-stone wall +N:211:hail-stone wall +G:#:W +F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING +F:TUNNELABLE +D:1:You tunnel into the hail-stone wall. + +N:212:dead small tree +G:#:D +F:FLOOR | DONT_NOTICE_RUNNING | CAN_RUN | SUPPORT_LIGHT | REMEMBER +F:NO_VISION + +# Low hill +N:213:low hill +G:^:g +F:FLOOR | DONT_NOTICE_RUNNING| CAN_RUN | SUPPORT_LIGHT | NO_VISION +D:0:You go over the hill. +D:1:You cannot tunnel through that. + +#Angband and Mordor (Ered Lithui, Ephel Duath) mountains +N:214:dark mountain chain +G:^:D +F:WALL | NO_WALK | NO_VISION | PERMANENT +F:DONT_NOTICE_RUNNING +D:1:This rock is far too hard. +D:2:a very hard stone block blocking your way + +#Ered Luin - Blue Mountains +N:215:blue mountain chain +G:^:B +F:CAN_CLIMB | CAN_PASS | SUPPORT_LIGHT +F:WALL | NO_WALK | NO_VISION +F:DONT_NOTICE_RUNNING +F:PERMANENT +D:1:You cannot tunnel into such a hard stone. +D:2:a hard stone block blocking your way + +#Ered Mithrin - Grey Mountains +N:216:grey mountain chain +G:^:s +F:CAN_CLIMB | CAN_PASS | SUPPORT_LIGHT +F:WALL | NO_WALK | NO_VISION +F:DONT_NOTICE_RUNNING +F:PERMANENT +D:1:You cannot tunnel into such a hard stone. +D:2:a hard stone block blocking your way + +#Orodruin - Mount Doom +N:217:part of Mount Doom +G:^:R +F:WALL | NO_WALK | NO_VISION | NOTICE | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING +F:PERMANENT +D:1:You cannot tunnel through that. +D:2:a stream of searing lava barring your way + +#Snow-capped peak +N:218:snow-capped peak +G:^:w +F:WALL | NO_WALK | NO_VISION | NOTICE | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING | PERMANENT +D:1:The ice is too cold to tunnel into it. +D:2:an unusually thick wall of ice barring your way + +#Fir tree +#BUG - these do not burn. +N:219:fir tree +G:#:g +F:CAN_FLY | CAN_PASS | SUPPORT_LIGHT +F:WALL | NO_WALK | NO_VISION +F:DONT_NOTICE_RUNNING +F:TUNNELABLE +D:1:You chop away at the fir tree. +D:2:a fir tree blocking your way + +#section of a flet (wooden platforms built high up in the trees of Lothlórien) +N:220:section of a flet +G:_:u +F:FLOOR | DONT_NOTICE_RUNNING | CAN_RUN + +#light post +N:221:light post +G:|:w +F:WALL | NO_WALK | CAN_FLY | CAN_PASS +F:SUPPORT_LIGHT | REMEMBER +D:1:You cannot tunnel a light post. +D:2:A light post blocking your way + +#Water lily +N:222:water lily +G:;:B +F:FLOOR | DONT_NOTICE_RUNNING | CAN_RUN +F:SUPPORT_GROWTH + +#Dead Marshes swamp water +N:223:part of the Dead Marshes +G:~:G +E:10d10:6:CONFUSION +F:FLOOR | CAN_LEVITATE | CAN_FLY | REMEMBER | SUPPORT_LIGHT + +#Morannon +N:224:Black Gate +G:+:D +F:CAN_CLIMB | CAN_PASS | SUPPORT_LIGHT +F:WALL | NO_WALK | NO_VISION | NOTICE +F:DONT_NOTICE_RUNNING +F:PERMANENT +D:1:You cannot tunnel through that. +D:2:a closed Black Gate blocking your way + +#River (overland view only) +N:225:river +G:~:w +S:w:w:w:B:w:w:B +F:ATTR_MULTI +F:FLOOR | CAN_LEVITATE | CAN_FLY | REMEMBER | SUPPORT_LIGHT | CAN_RUN +F:DONT_NOTICE_RUNNING | SUPPORT_GROWTH + +#Swamp +N:226:swamp pool +G:~:g +E:1d1:1:POISON +F:FLOOR | CAN_LEVITATE | CAN_FLY | REMEMBER | SUPPORT_LIGHT + +#Anduin river +N:227:stream of the Anduin river +G:~:B +E:1d1:1:WATER +S:w:w:w:b:w:w:b +F:ATTR_MULTI +F:FLOOR | CAN_LEVITATE | CAN_FLY | REMEMBER | SUPPORT_LIGHT | SUPPORT_GROWTH + +#Road sign to Gondolin to avoid Maeglin quest silliness somewhat +N:228:road sign that says 'Find Gondolin!' +G:?:v +S:v:R:B:G:w:v:R +F:ATTR_MULTI +F:WALL | PERMANENT | NOTICE | SUPPORT_LIGHT | REMEMBER | + +### New terrain features for town use ### + +#Beehive +N:229:beehive +G:*:o +E:1d1:1:POISON +F:WALL | PERMANENT | CAN_FLY | REMEMBER | SUPPORT_LIGHT | +F:CAN_PASS | NO_WALK | NO_VISION | DONT_NOTICE_RUNNING | +D:0:Ouch! A bee stung you! +D:1:You'll just get stung. +D:2:a beehive blocking your way + +#Dirt road - same as dirt but more appropriate for towns +N:230:dirt road +G:.:U +F:FLOOR | DONT_NOTICE_RUNNING | CAN_RUN +F:SUPPORT_GROWTH + +#Wide gate +N:231:wide gate +G:-:D +F:WALL | PERMANENT | CAN_FLY | SUPPORT_LIGHT | NOTICE | +F:CAN_PASS | NO_WALK | NO_VISION | DONT_NOTICE_RUNNING | +D:1:You cannot tunnel through that. +D:2:a closed gate barring your way + +#Same gate, but opened +N:232:open gate +G:':D +F:FLOOR | DONT_NOTICE_RUNNING | CAN_RUN | SUPPORT_LIGHT | + +### For wood houses, bridges, etc: + +#Wooden board - horizontal +N:233:wooden board +G:-:u +F:WALL | PERMANENT | SUPPORT_LIGHT | NO_WALK | NO_VISION | CAN_FLY +D:1:You cannot tunnel through that. +D:2:a wooden board blocking your way + +#Wooden board - vertical +N:234:wooden board +G:|:u +F:WALL | PERMANENT | SUPPORT_LIGHT | NO_WALK | NO_VISION | CAN_FLY +D:1:You cannot tunnel through that. +D:2:a wooden board blocking your way + +#Light wooden board - horizontal +N:235:wooden board +G:-:U +F:WALL | PERMANENT | SUPPORT_LIGHT | NO_WALK | NO_VISION | CAN_FLY +D:1:You cannot tunnel through that. +D:2:a wooden board blocking your way + +#Light wooden board - vertical +N:236:wooden board +G:|:U +F:WALL | PERMANENT | SUPPORT_LIGHT | NO_WALK | NO_VISION | CAN_FLY +D:1:You cannot tunnel through that. +D:2:a wooden board blocking your way + +#White tree +#BUG - these do not burn. +N:237:white tree +G:#:w +F:CAN_FLY | CAN_PASS | SUPPORT_LIGHT +F:WALL | NO_WALK | NO_VISION | PERMANENT +F:DONT_NOTICE_RUNNING +D:1:You cannot tunnel through that. +D:2:a white tree blocking your way + +#Swift waterfall +N:238:swift waterfall +G:|:B +E:25d10:1:WATER +S:w:w:w:b:w:w:b +F:ATTR_MULTI +F:FLOOR | CAN_LEVITATE | CAN_FLY | REMEMBER | SUPPORT_LIGHT | +F:DONT_NOTICE_RUNNING | SUPPORT_GROWTH | + +#Slippery rock ledge +N:239:slippery rock ledge +G:&:s +E:5d10:1:COLD +F:FLOOR | CAN_LEVITATE | CAN_FLY | SUPPORT_LIGHT | +F:SUPPORT_GROWTH + +#Stable +N:240:stable +G:#:u +F:WALL | NO_WALK | NO_VISION | PERMANENT | CAN_FLY +D:1:You cannot tunnel through that. +D:2:a stable wall blocking your way + +#Wooden plank +N:241:wooden plank +G:%:U +F:FLOOR | CAN_RUN | DONT_NOTICE_RUNNING | SUPPORT_LIGHT | +F:SUPPORT_GROWTH | + +#Fosse (dry moat) +N:242:fosse pit +G:&:g +F:CAN_LEVITATE | CAN_FLY +F:NO_WALK | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING +D:1:You cannot tunnel through that. +D:2:a dry moat blocking your way + +#Mallorn +N:243:Mallorn +G:*:y +S:y:W:W:y:w:W:y +F:CAN_FLY | CAN_PASS | SUPPORT_LIGHT +F:WALL | NO_WALK | NO_VISION +F:DONT_NOTICE_RUNNING +D:1:It isn't a good idea to harm a Mallorn. +D:2:a Mallorn blocking your way + +# New features for the Maps of Lord Dimwit + +N:244:copper pillar +G:#:u +S:u:u:u:o:u:u:u +F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING | ATTR_MULTI +D:1:The copper is too tough to tunnel through. +D:2:a copper pillar blocking your way + +N:245:ethereal wall +G:.:w +F:WALL | NO_WALK | PERMANENT | NOTICE | DONT_NOTICE_RUNNING +D:1:You can't even see your obstruction! +D:2:an unseen force blocking your way + +N:246:glacial wall +G:#:B +F:WALL | NO_WALK | CAN_PASS | NO_VISION | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING | TUNNELABLE +D:1:You tunnel into the glacial wall... #BOh, chilly!#w. +D:2:a hard glacial wall blocking your way + +N:247:battlement +G:#:w +F:NO_WALK | CAN_PASS | NOTICE | SUPPORT_LIGHT +F:DONT_NOTICE_RUNNING | TUNNELABLE +D:1:You tunnel into the battlement. +D:2:a hard stone battlement blocking your way + +N:248:door of Orthanc +G:':r +F:FLOOR | NOTICE | REMEMBER | CAN_RUN +F:SUPPORT_LIGHT | DONT_NOTICE_RUNNING +D:0:The Key of Orthanc allows you to pass.
\ No newline at end of file diff --git a/lib/mods/theme/edit/haunted.map b/lib/mods/theme/edit/haunted.map new file mode 100644 index 00000000..49f72d5b --- /dev/null +++ b/lib/mods/theme/edit/haunted.map @@ -0,0 +1,49 @@ +# permanent wall +F:X:61:0 + +# granite +F:#:57:0 + +# up staircase +F:<:6:0 + +# Floor +F:.:1:0 + +# Locked Door +F:D:38:0 + +# Secret Door +F:S:48:0 + +# Great item +F:g:1:0:0:*:* + +# Dungeon layout +D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +D:XXX...D.........................X +D:XXX...XXXXXXXXXXXXXXXXXXXXXXXXX.X +D:XXX...X....X....X....X....X...X.X +D:XXX...X....X....X....X....X...X.X +D:XXX...X....X....X....X....X...X.X +D:XXXDXXXDXXXXDXXXXDXXXXDXXXXDXXX.X +D:XXX.............................X +D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.X +D:X.S.....X.....X.....X.....X...X.X +D:X.X.....X.....X.....X.....X...X.X +D:X.X.....X.....X.....X.....X...X.X +D:X.X.....X.....X.....X.....X...X.X +D:XgX.....X.....X.....X.....X...X.X +D:XXXDXXXXXDXXXXXDXXXXXDXXXXXDXXX.X +D:XXX.............................X +D:XXXXXXXDXXXXXDXXXXXDXXXXXDXXXXXDX +D:XgX<....X.....X.....X.....X.....X +D:X.X.....X.....X.....X.....X.....X +D:X.X.....X.....X.....X.....X.....X +D:X.X.....X.....X.....X.....X.....X +D:X.S.....X.....X.....X.....X.....X +D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + +# Starting position +P:3:5 + diff --git a/lib/mods/theme/edit/k_info.txt b/lib/mods/theme/edit/k_info.txt new file mode 100644 index 00000000..07e4bbe2 --- /dev/null +++ b/lib/mods/theme/edit/k_info.txt @@ -0,0 +1,6865 @@ +# File: k_info.txt + + +# This file is used to initialize the "lib/data/k_info.raw" file, which is +# used to initialize the "object kind" information for the Angband game. + +# Do not modify this file unless you know exactly what you are doing, +# unless you wish to risk possible system crashes and broken savefiles. + +# After modifying this file, delete the "lib/data/k_info.raw" file. + +# Available slots are marked with # XXX: 294, 299, 444-464, ... + +# XXX XXX Add some "IGNORE_XXX" flags to Rings, Amulets, etc. + +# The old "MULTI_HUED" objects are now "violet", and no other object +# is violet, so all six violet objects can be made "multi-hued", though +# this would be a heinous hack. XXX XXX + +# Note that object zero is used for the "stack" picture (unused). + +# N: serial number : & object name~ +# G: symbol : color +# I: tval : sval : pval +# W: depth : rarity : weight : cost +# P: base armor class : base damage : plus to-hit : plus to-dam : plus to-ac +# A: depth/rarity : depth/rarity : etc +# F: flag | flag | etc + +# Version stamp (required) + +V:2.0.0 + + +##### Something special ##### + +N:0:something +G:&:w + + +##### Mushrooms ##### + +N:1:Blindness +G:,:d +I:80:1:500 +W:5:0:1:0 +A:5/1 +D:'E'ating this mushrooms will blind you. You cannot cast magic +D:or see monsters when you are blinded. You can still use magic items or +D:quaff potions. + +N:2:Fear +G:,:d +I:80:2:500 +W:5:0:1:0 +A:5/1 +D:'E'ating this mushroom will make you scared. +D:You will not be able to hit your enemies in combat if you're scared. + +N:3:Confusion +G:,:d +I:80:3:500 +W:5:0:1:0 +A:5/1 +D:'E'ating this mushroom will confuse you. You will not be able to cast spells, +D:use wands, staves or scrolls. You can still quaff potions, though. + +N:4:Hallucination +G:,:d +I:80:4:500 +W:10:0:1:0 +A:10/1 +D:'E'ating this mushroom will make you hallucinate. +D:You will not be able to recognise any monster or item. + +N:5:Cure Poison +G:,:d +I:80:12:500 +W:10:0:1:60 +A:10/1 +D:'E'ating this mushroom will cure you from poison. + +N:6:Cure Blindness +G:,:d +I:80:13:500 +W:10:0:1:50 +A:10/1 +D:'E'ating this mushroom will cure you from blindness. + +N:7:Cure Fear +G:,:d +I:80:14:500 +W:10:0:1:25 +A:10/1 +D:'E'ating this mushroom will cure your paranoia. Paranoia is the state when you are +D:too afraid to attack monsters. + +N:8:Cure Confusion +G:,:d +I:80:15:500 +W:10:0:1:50 +A:10/1 +D:'E'ating this mushroom will cure your confusion. Confusion is when you are too confused +D:to cast spells, zap staves, aim wands or read scrolls. + +N:9:Weakness +G:,:d +I:80:6:500 +W:10:0:1:0 +A:10/1 +P:0:5d5:0:0:0 +D:'E'ating this mushroom will reduce your strength by one point. + +N:10:Unhealth +G:,:d +I:80:10:500 +W:15:0:1:50 +A:15/1 +P:0:10d10:0:0:0 +D:'E'ating this mushroom will reduce your constitution by one point. + +N:11:Restore Constitution +G:,:d +I:80:18:500 +W:20:0:1:350 +A:20/1 +D:'E'ating this mushroom will restore your constitution. Your constitution +D:needs restoring when it is displayed in yellow. + +N:12:Restoring +G:,:d +I:80:19:500 +W:20:0:1:1000 +A:20/8:30/4:40/1 +D:'E'ating this mushroom will restore your strength, dexterity, constitution, +D:intelligence, wisdom and charisma. These need restoring when they +D:are displayed in yellow. + +N:13:Stupidity +G:,:d +I:80:8:500 +W:15:0:1:0 +A:15/1 +D:'E'ating this mushroom will reduce your intelligence by one point. +D:That's a bad thing. + +N:14:Naivety +G:,:d +I:80:9:500 +W:15:0:1:0 +A:15/1 +D:'E'ating this mushroom will reduce your wisdom by one point. +D:That's a bad thing. + +N:15:Poison +G:,:d +I:80:0:500 +W:5:0:1:0 +A:5/1:5/1 +P:0:4d4:0:0:0 +D:'E'ating this mushroom will poison you. Poisoning makes you lose one hitpoint +D:per turn until you magically stop the poison or until your body has +D:fought off the poison. +D:That's a bad thing. + +N:16:Sickness +G:,:d +I:80:7:500 +W:10:0:1:0 +A:10/1 +P:0:4d4:0:0:0 +D:'E'ating this mushroom will reduce your constitution by one point. +D:It will also damage you quite severely in the process. +D:That's a bad thing. + +N:17:Paralysis +G:,:d +I:80:5:500 +W:20:0:1:0 +A:20/1 +D:'E'ating this mushroom will paralyse you for a certain time. +D:Any nearby monsters will take this opportunity to kill you. +D:That's a bad thing. + +N:18:Restore Strength +G:,:d +I:80:17:500 +W:20:0:1:350 +A:20/1 +D:'E'ating this mushroom will restore your strength. Your strength +D:needs restoring when it is displayed in yellow. + +N:19:Disease +G:,:d +I:80:11:500 +W:20:0:1:50 +A:20/1 +P:0:10d10:0:0:0 +D:'E'ating this mushroom will reduce your strength by one point. +D:It will also damage you quite severely in the process. +D:That's a bad thing. + +N:20:Cure Serious Wounds +G:,:d +I:80:16:500 +W:15:0:1:75 +A:15/1 +D:'E'ating this mushroom will heal several hit points. Your hit points +D:need healing when they are displayed in yellow or red. + +##### Normal Food ##### + +N:21:& Ration~ of Cram +G:,:U +I:80:35:5000 +W:0:0:10:3 +A:0/1:5/1:10/1 +D:It is biscuitish, keeps good indefinitely, is supposed to be sustaining but +D:certainly not entertaining. Its origin is Esgaroth, the city of Lake-men. +D:You can 'E'at it. + +N:22:& Round Seed-Cake~ +G:,:U +I:80:32:500 +W:0:0:2:1 +D:It's a treat, but 'E'ating it will only fill your stomach for a short time. + +N:23:& Strip~ of Venison +G:,:u +I:80:33:1500 +W:0:0:2:2 +D:It looks great, and 'E'ating it will fill your stomach well. + +N:24:& Slime Mold~ +G:,:g +I:80:36:3000 +W:1:0:5:2 +A:1/1 +D:It looks disgusting, but if you really want to you can 'E'at it. +D:Not an incredible taste experience, but that'd be asking a bit much. + +# New - now Lembas works as a scroll of Satisfy Hunger +N:25:& Lembas~ +G:,:B +I:80:37:0 +W:5:0:3:10 +A:5/1:10/1:20/1 +D:Small golden-brown wafers wrapped in silver leaves. Its fabrication is a +D:secret of the Elves, and it sustains life where nothing else can. If you +D:'E'at it, you will be full. + +N:26:& Pint~ of Fine Ale +G:,:y +I:80:38:500 +W:0:0:5:1 +D:A bottle of a dark beer-like beverage from Eriador. You can drink it by pressing 'E'. + +N:27:& Pint~ of Old Winyards +G:,:r +I:80:39:1000 +W:0:0:10:2 +D:A bottle of fine wine from Eriador. You can drink it by pressing 'E'. + +##### Extra digger ##### + +N:28:& Mattock~ +G:\:D +I:20:7:3 +W:50:0:250:700 +A:50/2 +P:0:1d8:0:0:0 +F:TUNNEL +f:TUNNEL +D:This is a digging tool. Use it to dig in walls, destroy doors, or cut wood. + +# The Blue Stone 'Coimir' -- see artifact list + +N:29:& Blue Stone~ +G:":B +I:40:18:0 +W:60:0:3:90000 +F:INSTA_ART | SPECIAL_GENE + +##### Edged Weapons ##### + +N:30:& Broken Dagger~ +G:|:D +I:23:1:0 +W:0:0:5:1 +A:0/2:5/2 +P:0:1d1:-2:-4:0 +F:SHOW_MODS +D:The blade itself is a foot long and broken off not far above the hilt. + +N:31:& Bastard Sword~ +G:|:W +I:23:21:0 +W:15:0:140:350 +A:15/1 +P:0:3d4:0:0:0 +F:SHOW_MODS | COULD2H +f:COULD2H +D:This is a long, double-edged sword with a plain hilt that could +D:be wielded in one or two hands. It's called a "bastard sword" because in +D:size, it falls between the broad sword and the two-handed sword, thus not +D:having a family of its own. It's typically around 51 inches long. +D:It is effective for cutting through tougher armours. It could be used for +D:thrusting, but most wielders swing it like a bat. + +N:32:& Scimitar~ +G:|:W +I:23:18:0 +W:10:0:130:250 +A:10/1 +P:0:2d5:0:0:0 +F:SHOW_MODS +D:This oriental blade has 2 edges and is deeply curved. It has a wide +D:and very sharp end. It is the forefather of the sabre. + +N:33:& Tulwar~ +G:|:W +I:23:15:0 +W:5:0:100:200 +A:5/1 +P:0:2d4:0:0:0 +F:SHOW_MODS +D:This vicious sword is half sword and half club, with a slight hook on the tip. + +N:34:& Broad Sword~ +G:|:W +I:23:16:0 +W:10:0:150:255 +A:10/1:15/1 +P:0:2d5:0:0:0 +F:SHOW_MODS +D:This broader version of the long sword is a standard weapon in the army +D:of Gondolin. + +N:35:& Short Sword~ +G:|:W +I:23:10:0 +W:5:0:80:90 +A:5/1 +P:0:1d7:0:0:0 +F:SHOW_MODS +D:This shorter version of the long sword is a common weapon for rogues +D:and mages. + +N:36:& Blade~ of Chaos +G:|:v +I:23:30:0 +W:70:0:180:4000 +A:70/8 +P:0:6d5:0:0:0 +F:ATTR_MULTI +F:RES_CHAOS | CHAOTIC | SHOW_MODS +f:RES_CHAOS | CHAOTIC +D:A mighty sword which seems to be completely blunt. However, it is a conduit +D:into the realms of pure chaos and strikes its victims with the devastating +D:might of chaos itself whenever it connects. It gives you resistance to chaos +D:and it can polymorph, teleport, confuse or drain hit points from the monster +D:you hit. It occasionally causes earthquakes as well. + +N:37:& Two-Handed Sword~ +G:|:W +I:23:25:0 +W:30:0:200:775 +A:30/1:40/1 +P:0:3d6:0:0:0 +F:SHOW_MODS | MUST2H +f:MUST2H +D:This blade is lot longer, wider and heavier than a long sword. You have to +D:wield it with two hands. This means that wielding a shield makes fighting +D:very difficult. + +N:38:& Main Gauche~ +G:|:W +I:23:5:0 +W:3:0:30:25 +A:3/1 +P:0:1d5:0:0:0 +F:SHOW_MODS +D:This blade is sinuously curved and tipped with a harpoon-like end. +D:This blade has a large handguard and was designed as an off-hand weapon. +D:This short but cruel blade is a favourite among orcs. + +N:39:& Cutlass~ +G:|:W +I:23:12:0 +W:5:0:110:85 +A:5/1 +P:0:1d7:0:0:0 +F:SHOW_MODS +D:This oriental weapon is a short, thick, curving sword +D:with a single cutting edge. This simple slashing weapon +D:is typically carried by buccaneers, pirates, and sailors. + +N:40:& Executioner's Sword~ +G:|:r +I:23:28:0 +W:40:0:260:850 +A:40/1 +P:0:4d5:0:0:0 +F:SHOW_MODS | MUST2H +f:MUST2H +D:These weapons have been built in all sizes. They are custom-made +D:for warriors that want to set out and kill their archenemy. These +D:blades are rare, costly and very deadly. + +N:41:& Katana~ +G:|:W +I:23:20:0 +W:20:0:120:400 +A:20/1 +P:0:3d4:0:0:0 +F:SHOW_MODS | COULD2H +f:COULD2H +D:The katana is a long blade with only a small disk for a guard. +D:Its hilt is long enough for two hands, though it could be used +D:with only one hand, and is usually wrapped in cloth or leather. +D:The art of forging such swords is largely unknown in this part +D:of Middle-earth, and such weapons are typically imported from +D:distant lands. + +N:42:& Long Sword~ +G:|:W +I:23:17:0 +W:10:0:130:300 +A:10/1:20/1 +P:0:2d5:0:0:0 +F:SHOW_MODS +D:A long straight sword, tapering to a pronounced point. Mainly good for +D:piercing attacks, but it can be used for slashing, too. It is a very +D:popular design and has become standard issue in many armies. + +N:43:& Dagger~ +G:|:W +I:23:4:0 +W:0:0:12:10 +A:0/1:5/1:10/1:20/1 +P:0:1d4:0:0:0 +F:SHOW_MODS +D:It's the standard weapon of rogues and thieves. The blade is +D:a foot long. + +N:44:& Rapier~ +G:|:W +I:23:7:0 +W:5:0:40:42 +A:5/1 +P:0:1d6:0:0:0 +F:SHOW_MODS +D:The rapier's hilt consisted of a pair of oval guards pierced with holes, +D:recurved quillions, and a knuckle guard. The guard is very intricate +D:and very effective as protection. + +N:45:& Sabre~ +G:|:W +I:23:11:0 +W:5:0:50:50 +A:5/1 +P:0:1d7:0:0:0 +F:SHOW_MODS +D:A long, one-edged, slightly curved sword with a knuckle guard and short +D:hilt. It is two-edged in its lower part. + +N:46:& Small Sword~ +G:|:W +I:23:8:0 +W:5:0:75:48 +A:5/1 +P:0:1d6:0:0:0 +F:SHOW_MODS +D:It's the favourite weapon of strong mages and thieves. The blade is +D:about twenty inches long. It's very easy to handle, although it is a lot less +D:efficient than the longer and heavier designs. + +N:47:& Broken Sword~ +G:|:D +I:23:2:0 +W:0:0:30:2 +A:0/2:5/2 +P:0:1d2:-2:-4:0 +F:SHOW_MODS +D:Just a hilt and a few inches of blade, broken off in a jagged stump. +D:Probably worthless. + +##### Hafted Weapons ##### + +N:48:& Ball-and-Chain~ +G:\:D +I:21:6:0 +W:20:0:150:200 +A:20/1 +P:0:2d4:0:0:0 +F:SHOW_MODS | COULD2H +f:COULD2H +D:This weapon has a ball linked with a chain to a wooden handle. +D:Preferred tactic is smashing the brains of your opponent. + +N:49:& Whip~ +G:\:D +I:21:2:0 +W:3:0:30:30 +A:3/1 +P:0:1d6:0:0:0 +F:SHOW_MODS +D:This weapon is light and easy to fight with. It has nasty barbs and +D:hooks fixed to the thong to make it useful in combat. +D:Whips easily give multiple attacks. + +N:50:& Flail~ +G:\:D +I:21:13:0 +W:10:0:150:353 +A:10/1 +P:0:2d6:0:0:0 +F:SHOW_MODS | COULD2H +f:COULD2H +D:This weapon was originally used to cut corn. More warlike versions +D:sport a large blade stuck on a wooden handle. The hinge allows it to get +D:past enemy defences or to strike with added momentum when used skillfully. + +N:51:& Two-Handed Flail~ +G:\:y +I:21:18:0 +W:45:0:280:590 +A:45/1 +P:0:3d6:0:0:0 +F:SHOW_MODS | MUST2H +f:MUST2H +D:This two-handed version of the flail gives the fighter a fearsome +D:weapon that can do a fair amount of damage. It typically has several +D:spiked metal lumps on chains. + +N:52:& Morning Star~ +G:\:D +I:21:12:0 +W:10:0:150:396 +A:10/1 +P:0:2d6:0:0:0 +F:SHOW_MODS +D:This weapon consists of a large club with chains that have wooden balls +D:with metal spikes on the end. + +N:53:& Mace~ +G:\:D +I:21:5:0 +W:5:0:120:130 +A:5/1 +P:0:2d4:0:0:0 +F:SHOW_MODS | COULD2H +f:COULD2H +D:This weapon is a club ending in a sphere. The sphere is studded +D:with metal shards, and thus can both crush and cut your adversary. + +N:54:& Quarterstaff~ +G:\:U +I:21:3:0 +W:10:0:150:200 +A:10/1 +P:0:1d9:0:0:0 +F:SHOW_MODS | COULD2H +f:COULD2H +D:A long, wooden pole, usually the height of the wielder. Four of them can be +D:made out of the trunk of one young tree, hence the name. The quarterstaff +D:is an excellent weapon for travellers as it doubles both as a walking staff +D:and as a deterrent against brigands. The quarterstaff is used more in +D:fencing and brawling than melee combat. + +N:55:& War Hammer~ +G:\:D8 +I:21:8:0 +W:5:0:120:225 +A:5/1 +P:0:3d3:0:0:0 +F:SHOW_MODS | COULD2H +f:COULD2H +D:A large hammer, designed to crush skulls with mighty strikes. + +N:56:& Lead-Filled Mace~ +G:\:D +I:21:15:0 +W:15:0:180:502 +A:15/1 +P:0:3d4:0:0:0 +F:SHOW_MODS | COULD2H +f:COULD2H +D:A large, mean mace filled with lead in order to wreak a maximum of havoc. + +N:57:& Mace~ of Disruption +G:\:v +I:21:20:0 +W:80:0:400:4300 +A:80/5 +P:0:5d8:0:0:0 +F:SLAY_UNDEAD | SHOW_MODS | MUST2H +f:MUST2H | SLAY_UNDEAD +D:This mace is custom-made for priests that go out to destroy evil. +D:It is deadly, especially for undead. + +N:58:& Lucerne Hammer~ +G:\:B +I:21:10:0 +W:10:0:120:376 +A:10/1 +P:0:2d5:0:0:0 +F:SHOW_MODS | COULD2H +f:COULD2H +D:A war hammer combined with a spearpoint, mounted on a long pole. + +##### Polearms ##### + +N:59:& Beaked Axe~ +G:/:s +I:22:10:0 +W:15:0:180:408 +A:15/1 +P:0:2d6:0:0:0 +F:SHOW_MODS | MUST2H +f:MUST2H +D:This polearm has a beak mounted opposite the blade. + +N:60:& Glaive~ +G:/:s +I:22:13:0 +W:20:0:190:363 +A:20/1 +P:0:2d6:0:0:0 +F:SHOW_MODS | COULD2H +f:COULD2H +D:A polearm with a long, slightly curved knife-like blade. It has spurs on +D:the dull side of the blade. It's primarily a slashing and chopping weapon. Glaives +D:are often used to protect archers, crossbowmen, and gunners while they reload. +D:Outside of combat they are a popular processional weapon and therefore many +D:have ornately carved blades. + +N:61:& Halberd~ +G:/:s +I:22:15:0 +W:25:0:190:430 +A:25/1 +P:0:3d5:0:0:0 +F:SHOW_MODS | COULD2H +f:COULD2H +D:The halberd has a broad, short axe blade on a 5-6 ft long haft, with a +D:spearpoint at the top, often a back-spike and occasionally a butt-spike. Used to +D:combat heavier armour. It's usually used for cutting and stabbing. It's the most +D:versatile polearm in Middle-earth. The axe is used in general melee. The top +D:pike is used to pierce armour, or is set against a cavalry charge. The back +D:hook could unseat horses, trip opponents, parry a blow, or be a general +D:piercing weapon. + +N:62:& Awl-Pike~ +G:/:s +I:22:4:0 +W:10:0:160:340 +A:10/1 +P:0:1d8:0:0:0 +F:SHOW_MODS | COULD2H +f:COULD2H +D:This is a polearm with a long square-sectioned spike on the end. + +N:63:& Pike~ +G:/:s +I:22:8:0 +W:15:0:160:358 +A:15/1 +P:0:2d5:0:0:0 +F:SHOW_MODS | COULD2H +f:COULD2H +D:A staff, 16-18 feet long, that has a small piercing head about 10 inches +D:long. The pike is often used by infantry to fend off cavalry. It is very +D:effective against mounted troops. + +N:64:& Spear~ +G:/:s +I:22:2:0 +W:5:0:50:36 +A:5/1 +P:0:1d6:0:0:0 +F:SHOW_MODS +D:Spears tend to have a strong, wide, leaf-shaped head with a ridge down the +D:middle. The spearhead is attached to the wooden shaft by a socket. The +D:sockets are usually riveted to the shaft and some have two small lugs near +D:the base of the socket to allow the head to be possibly bound on as well. +D:This spear is 7 feet long. + +N:65:& Trident~ +G:/:y +I:22:5:0 +W:5:0:70:120 +A:5/1 +P:0:1d8:0:0:0 +F:SHOW_MODS | COULD2H +f:COULD2H +D:The trident is based on the pitchfork. In fact, when not used as a weapon, +D:it is often employed as a pitchfork. It is famous for its uses in +D:gladiatorial arenas. It is used much like a spear and could even be thrown +D:like one in desperate situations. + +N:66:& Lance~ +G:/:s +I:22:20:0 +W:10:0:300:230 +A:10/1 +P:0:2d8:0:0:0 +F:SHOW_MODS | MUST2H +f:MUST2H +D:This is the original polearm. It is shaped like a spear but is bigger. It's +D:meant to fend off enemies, not to be thrown. + +N:67:& Great Axe~ +G:/:s +I:24:25:0 +W:40:0:230:500 +A:40/1 +P:0:4d4:0:0:0 +F:SHOW_MODS | MUST2H +f:MUST2H +D:A huge and heavy two-headed axe. + +N:68:& Battle Axe~ +G:/:s +I:22:22:0 +W:15:0:170:334 +A:15/1 +P:0:2d8:0:0:0 +F:SHOW_MODS | COULD2H +f:COULD2H +D:Nordic polearm with a broad blade and a hook mounted on the end of the shaft. +D:The Nordics' take on the halberd. The polearm of choice for many Nordics, +D:ideally suited for slashing, thrusting, and unseating cavalry. + +N:69:& Lochaber Axe~ +G:/:D +I:22:28:0 +W:45:0:250:750 +A:45/1 +P:0:3d8:0:0:0 +F:SHOW_MODS | COULD2H +f:COULD2H +D:Nordic polearm with a broad blade and a hook mounted on the end of the shaft. +D:Another Nordic version of the halberd. The polearm of choice for many Nordics, +D:this weapon is ideally suited for slashing, thrusting, and unseating cavalry. + +N:70:& Broad Axe~ +G:/:s +I:24:11:0 +W:15:0:160:304 +A:15/1 +P:0:2d6:0:0:0 +F:SHOW_MODS | COULD2H +f:COULD2H +D:A one-headed axe made for combat, with an elongated moon-shaped blade. + +N:71:& Scythe~ +G:/:s +I:22:17:0 +W:45:0:250:800 +A:45/1 +P:0:5d3:0:0:0 +F:SHOW_MODS | COULD2H +f:COULD2H +D:A simple farm implement, converted into a weapon by slightly straightening +D:its blade and putting it in line with its pole, instead of the typical +D:right angle. + +N:72:& Scythe~ of Slicing +G:/:r +I:22:30:0 +W:80:0:250:10000 +A:80/20 +P:0:8d4:0:0:0 +F:SHOW_MODS | MUST2H | WOUNDING | VORPAL +f:MUST2H | VORPAL | WOUNDING +D:The simple design of the war scythe, but this one uses a finely crafted and +D:incredibly sharp steel blade which causes terrible wounds when it hits. + +##### Bows, Crossbows, Slings ##### + +N:73:& Short Bow~ +G:}:U +I:19:12:0 +W:3:0:30:50 +A:3/1:50/2 +F:SHOW_MODS +D:A piece of bent wood, fitted with a string. Easy to transport and use, but +D:its effect is not very impressive. You can 'f'ire it after you 'w'ield it. + +N:74:& Long Bow~ +G:}:U +I:19:13:0 +W:10:0:40:120 +A:10/1:70/2 +F:SHOW_MODS +D:A bow almost as long as a human. It takes considerable strength and skill to +D:use and is rather awkward to carry around inside buildings. Nevertheless, it +D:shoots arrows with astonishing force. You can 'f'ire it after you 'w'ield it. + +N:75:& Light Crossbow~ +G:}:s +I:19:23:0 +W:15:0:110:140 +A:15/1:60/2 +F:SHOW_MODS +D:A metal bow mounted on a wooden stock. It is used for shooting bolts. This +D:design is relatively light and not too difficult to cock, but also shoots its +D:quarrels with less force. You can 'f'ire with it after you 'w'ield it. + +N:76:& Heavy Crossbow~ +G:}:s +I:19:24:0 +W:30:0:200:300 +A:30/1:80/2 +F:SHOW_MODS +D:A metal bow mounted on a wooden stock, with attached cocking mechanism. It +D:takes considerable time and strength to cock it and it's rather heavy. +D:However, it hurls its ammunition with incredible force. You can 'f'ire with +D:it after you 'w'ield it. + +N:77:& Sling~ +G:}:u +I:19:2:0 +W:1:0:5:5 +A:1/1:40/2 +F:SHOW_MODS +D:A simple cloth or leather pouch with two strings attached. It is used to hurl +D:pebbles or iron shots. You can 'f'ire with it after you 'w'ield it. + +##### Missiles ##### + +N:78:& Arrow~ +G:{:U +I:17:1:0 +W:3:0:2:1 +A:3/1:15/1:50/1 +P:0:1d4:0:0:0 +F:SHOW_MODS +D:A simple metal head on a piece of wood or bamboo, fitted with some feathers. +D:You can use it for 'f'iring a bow. + +N:79:& Seeker Arrow~ +G:{:G +I:17:2:0 +W:55:0:2:20 +A:55/2:80/2 +P:0:4d4:0:0:0 +F:SHOW_MODS +D:A precision-made arrow, which allows you to hit precisely the most vulnerable +D:place of an opponent. You can use it for 'f'iring a bow. + +N:80:& Bolt~ +G:{:s +I:18:1:0 +W:3:0:3:2 +A:3/1:25/1:60/1 +P:0:1d5:0:0:0 +F:SHOW_MODS +D:Short metal arrows, to be fired with crossbows. You can use it for 'f'iring a +D:crossbow. + +N:81:& Seeker Bolt~ +G:{:B +I:18:2:0 +W:65:0:3:25 +A:65/2:90/2 +P:0:4d5:0:0:0 +F:SHOW_MODS +D:A precision-made bolt, which allows you to hit exactly the most vulnerable +D:place of an opponent. You can use it for 'f'iring a crossbow. + +N:82:& Rounded Pebble~ +G:{:s +I:16:0:0 +W:0:0:4:1 +A:0/1:10/2 +P:0:1d2:0:0:0 +F:SHOW_MODS +D:Small round stones. When fired with a sling, they could even hurt a giant. +D:You can use them for 'f'iring a sling. + +N:83:& Iron Shot~ +G:{:s +I:16:1:0 +W:3:0:5:2 +A:3/1:40/2 +P:0:1d4:0:0:0 +F:SHOW_MODS +D:Metal balls, made for shooting with slings. You can use them for 'f'iring a +D:sling. + +##### Shovels and Picks ##### + +N:84:& Shovel~ +G:\:s +I:20:1:1 +W:1:0:60:10 +A:5/2 +P:0:1d2:0:0:0 +F:TUNNEL +f:TUNNEL +D:A simple digging tool for shovelling away rubble and maybe even soft rock. + +N:85:& Gnomish Shovel~ +G:\:G +I:20:2:2 +W:20:0:60:100 +A:20/3 +P:0:1d2:0:0:0 +F:TUNNEL +f:TUNNEL +D:Crafted by the gnomes, its design profits greatly from the gnomes' expertise +D:honed in the burrowing of their hovels. + +N:86:& Dwarven Shovel~ +G:\:B +I:20:3:3 +W:40:0:120:200 +A:40/4 +P:0:1d3:0:0:0 +F:TUNNEL +f:TUNNEL +D:The lighter digging tool used by dwarves to remove debris, but also good +D:enough to clear away bits of rock when no pick is easily available. + +N:87:& Pick~ +G:\:s +I:20:4:1 +W:5:0:150:50 +A:10/2 +P:0:1d3:0:0:0 +F:TUNNEL +f:TUNNEL +D:A heavy digging tool, primarily for earthworking, but also good for tunnelling +D:through stone, if one is willing to perform the time-consuming labour. + +N:88:& Orcish Pick~ +G:\:g +I:20:5:2 +W:30:0:180:300 +A:30/3 +P:0:1d3:0:0:0 +F:TUNNEL +f:TUNNEL +D:Although orcs tend to dig rather untidy mines and overcome difficulties in +D:this work less by skill than mere stubbornness, they have amassed +D:quite some expertise in mining, which has gone into this digging tool. + +N:89:& Dwarven Pick~ +G:\:b +I:20:6:3 +W:50:0:200:600 +A:50/4 +P:0:1d4:0:0:0 +F:TUNNEL +f:TUNNEL +D:The dwarves, miners of legend, have made this pick, which is so expertly +D:crafted that even weaklings can bore through solid rock with it. + +##### Armour ##### + +N:90:& Elven Cloak~ +G:(:G +I:35:2:0 +W:30:0:5:1500 +A:30/4 +P:4:0d0:0:0:4 +F:IGNORE_ACID | IGNORE_COLD | IGNORE_FIRE | IGNORE_ELEC +F:STEALTH | SEARCH | LUCK +f:STEALTH +D:A wonderfully light cloak coloured in brown and green hues. Its colouring +D:greatly helps the wearer to avoid undesired attention. Wearing it makes you +D:feel lucky and somehow you seem to see what was meant to stay unseen. + +N:91:& Pair~ of Soft Leather Boots +G:]:U +I:30:2:0 +W:3:0:20:7 +A:3/1 +P:2:1d1:0:0:0 +D:A pair of low boots, comfortable to wear. + +N:92:& Pair~ of Hard Leather Boots +G:]:U +I:30:3:0 +W:5:0:40:12 +A:5/1 +P:3:1d1:0:0:0 +D:A pair of boots, with hardened leather at the caps, offering a little +D:extra protection for the feet. + +N:93:& Pair~ of Metal Shod Boots +G:]:s +I:30:6:0 +W:20:0:80:50 +A:20/1 +P:6:1d1:0:0:0 +D:Heavy boots, with metal strips at the toes, heels and other vulnerable parts, +D:to better protect the wearer's feet from harm. + +N:94:& Hard Leather Cap~ +G:]:u +I:32:2:0 +W:3:0:15:12 +A:3/1 +P:2:0d0:0:0:0 +D:A piece of protective headgear made from hardened leather, just covering the +D:skull. + +N:95:& Metal Cap~ +G:]:s +I:32:3:0 +W:10:0:20:30 +A:10/1 +P:3:1d1:0:0:0 +D:A metal skullcap with nose and cheekguards. + +N:96:& Iron Helm~ +G:]:s +I:32:5:0 +W:20:0:75:75 +A:20/1 +P:5:1d3:0:0:0 +D:A large helmet that can protect the entire head. Ventilation and bad vision +D:can be a problem, however. + +N:97:& Steel Helm~ +G:]:W +I:32:6:0 +W:40:0:60:200 +A:40/1 +P:6:1d3:0:0:0 +D:A helmet which protects the entire head. The expensive steel as base material +D:allows it to offer very good protection while being fairly light. + +N:98:& Iron Crown~ +G:]:s +I:33:10:0 +W:45:0:20:500 +A:45/1 +P:0:1d1:0:0:0 +D:An iron circlet which might be worn, but which is purely ornamental unless it +D:has special powers. + +N:99:& Golden Crown~ +G:]:y +I:33:11:0 +W:45:0:30:1000 +A:45/1 +P:0:1d1:0:0:0 +F:IGNORE_ACID +D:A gilded crown, which just looks good. Sometimes such headgear also has +D:additional properties which might make it worth wearing. + +N:100:& Jewel Encrusted Crown~ +G:]:v +I:33:12:0 +W:50:0:40:2000 +A:50/1 +P:0:1d1:0:0:0 +F:IGNORE_ACID +D:A gorgeous-looking silver crown, adorned with several gems. You might wear it +D:on your head, if you really think you're worthy. + +N:101:& Robe~ +G:(:b +I:36:2:0 +W:1:0:20:4 +A:1/1:50/1 +P:2:0d0:0:0:0 +D:A full-length garment which can be worn on the body. It is not really +D:armour, but mages often wear them as they are very light and don't hinder +D:movement much. + +N:102:& Filthy Rag~ +G:(:D +I:36:1:0 +W:0:0:20:1 +A:0/1 +P:1:0d0:0:0:-1 +D:A piece of discarded cloth, smelly and dirty. Probably worthless. + +N:103:& Soft Leather Armour~ +G:(:U +I:36:4:0 +W:3:0:80:18 +A:3/1 +P:4:0d0:0:0:0 +D:A suit of soft armour, light and unencumbering, but not very protective. + +N:104:& Soft Studded Leather~ +G:(:U +I:36:5:0 +W:3:0:90:35 +A:3/1 +P:5:1d1:0:0:0 +D:A leather jerkin with metal studs in critical places offering slightly better +D:protection. + +N:105:& Hard Leather Armour~ +G:(:U +I:36:6:0 +W:5:0:100:150 +A:5/1 +P:6:1d1:-1:0:0 +D:A leather armour covering only the body. It is made of hardened leather to +D:make it harder to penetrate. It's also a bit harder to move in, as it is +D:rather stiff. + +N:106:& Hard Studded Leather~ +G:(:U +I:36:7:0 +W:10:0:110:200 +A:10/1 +P:7:1d2:-1:0:0 +D:A suit of hardened leather armour, reinforced with metal studs. + +N:107:& Leather Scale Mail~ +G:(:U +I:36:11:0 +W:15:0:140:450 +A:15/1 +P:11:1d1:-1:0:0 +D:A suit of armour made of overlapping hardened leather scales. It offers good +D:protection while still being rather lightweight. + +N:108:& Metal Scale Mail~ +G:[:s +I:37:3:0 +W:25:0:250:550 +A:25/1 +P:13:1d4:-2:0:0 +D:A suit of overlapping metal scales, sewn onto a leather or cloth jerkin. + +N:109:& Chain Mail~ +G:[:s +I:37:4:0 +W:25:0:220:750 +A:25/1 +P:14:1d4:-2:0:0 +D:A suit of interlinked metal rings, to be worn over a woollen garment. + +N:110:& Rusty Chain Mail~ +G:[:r +I:37:1:0 +W:25:0:200:550 +A:25/1 +P:14:1d4:-5:0:-8 +D:This chain mail has rusted beyond repair. It can still be worn, but some of +D:the rings have gone missing and the rust has made the suit inflexible. +D:Consequently, it offers very poor protection and is cumbersome to move in. + +N:111:& Augmented Chain Mail~ +G:[:s +I:37:6:0 +W:30:0:270:900 +A:30/1 +P:16:1d4:-2:0:0 +D:A suit of interlinked metal rings, with additional metal plates or scales +D:covering vulnerable parts of the wearer. + +N:112:& Bar Chain Mail~ +G:[:s +I:37:8:0 +W:35:0:280:950 +A:35/1 +P:18:1d4:-2:0:0 +D:A suit of interlinked metal rings, with additional short metal bars added in +D:many places to prevent penetration of the armour by piercing attacks. + +N:113:& Metal Brigandine Armour~ +G:[:s +I:37:9:0 +W:35:0:290:1100 +A:35/1 +P:19:1d4:-3:0:0 +D:This is a leather armour with many small metal plates fixed to it, covering +D:it entirely. + +N:114:& Partial Plate Armour~ +G:[:W +I:37:12:0 +W:45:0:260:1200 +A:45/1 +P:22:1d6:-3:0:0 +D:An armour made of steel plates, covering only the body of the wearer. + +N:115:& Metal Lamellar Armour~ +G:[:W +I:37:13:0 +W:45:0:340:1250 +A:45/1 +P:23:1d6:-3:0:0 +D:Lamellar consists of small rectangular plates (lames) attached to each other +D:at each edge or corner with leather lacings through small holes in the plates. + +N:116:& Full Plate Armour~ +G:[:W +I:37:15:0 +W:45:0:380:1350 +A:45/1 +P:25:2d4:-3:0:0 +D:A suit of armour made of metal plates, covering the body, arms and upper legs. +D:A very effective but very heavy armour. + +N:117:& Ribbed Plate Armour~ +G:[:W +I:37:18:0 +W:50:0:380:1500 +A:50/1 +P:28:2d4:-3:0:0 +D:This full suit of armour has been strengthened in places to better deflect or +D:absorb blows. + +N:118:& Galvorn Plate Mail~ +G:[:g +I:37:30:0 +W:75:0:420:20000 +A:75/4 +P:40:2d4:-4:0:0 +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE | +D:A suit of plate armour fashioned from a metal whose secret is only known to Eol, +D:the dark Elvensmith. It is practically unbreakable. + +N:119:& Mithril Plate Mail~ +G:[:B +I:37:25:0 +W:60:0:300:15000 +A:60/3 +P:35:2d4:-3:0:0 +F:IGNORE_ACID +D:A full suit of plate armour, fashioned from the rare true-silver. Only the +D:dwarves know the secret of making armour or weapons of this metal. + +N:120:& Mithril Chain Mail~ +G:[:B +I:37:20:0 +W:55:0:150:7000 +A:55/3 +P:28:1d4:-1:0:0 +F:IGNORE_ACID +D:A suit of chain mail, made by dwarven smiths from the rare and precious metal +D:also called true-silver. + +N:121:& Double Chain Mail~ +G:[:s +I:37:7:0 +W:30:0:250:850 +A:30/1 +P:16:1d4:-2:0:0 +D:A suit of chain mail, with an additional layer of mail in some places. + +# This shield does not belong here + +N:122:& Shield~ of Deflection +G:[:B +I:34:10:0 +W:70:0:100:10000 +A:70/3 +P:10:1d1:0:0:10 +F:IGNORE_ACID +D:A large shield fashioned from a metal alloy that is not subject to corrosion. +D:It was especially crafted to better deflect attacks. + +### The Cloaks ### + +N:123:& Cloak~ +G:(:g +I:35:1:0 +W:1:0:10:3 +A:1/1:20/1 +P:1:0d0:0:0:0 +D:A cloth coat typically worn as a loose outer garment. It is spacious enough +D:to be worn even over bulky metal armour. + +N:124:& Shadow Cloak~ +G:(:D +I:35:6:1 +W:60:0:5:7500 +A:75/4 +P:6:0d0:0:0:4 +F:RES_DARK | RES_LITE | STEALTH +f:STEALTH +D:A rare cloak imbued with magic to radiate a strange twilight, absorbing both +D:extreme brightness and darkness. + +### The Gloves ### + +N:125:& Set~ of Leather Gloves +G:]:U +I:31:1:0 +W:1:0:5:3 +A:1/1 +P:1:0d0:0:0:0 +D:Light gloves which do not seriously hinder finger movements, while still +D:protecting the hands somewhat. + +N:126:& Set~ of Gauntlets +G:]:U +I:31:2:0 +W:10:0:25:35 +A:10/1 +P:2:1d1:0:0:0 +D:Metal gloves protecting the hands up to the middle of the lower arm. + +N:127:& Set~ of Cesti +G:]:W +I:31:5:0 +W:50:0:40:100 +A:50/1 +P:5:1d1:0:0:0 +D:A set of metal gloves with nasty spikes and barbs. Though originally made to +D:help in combat, the additional metal on the backs of the hands also offers a +D:lot more protection. + +### The shields ### + +N:128:& Small Leather Shield~ +G:):U +I:34:2:0 +W:3:0:50:30 +A:3/1 +P:2:1d1:0:0:0 +D:A small disc of lindenwood, with a leather covering on one side. + +N:129:& Large Leather Shield~ +G:):U +I:34:4:0 +W:15:0:100:120 +A:15/1 +P:4:1d2:0:0:0 +D:A large oval or rectangular shield. It is made of wood, typically linden, and +D:covered with a layer of hardened leather to offer better protection. + +N:130:& Small Metal Shield~ +G:):s +I:34:3:0 +W:10:0:65:50 +A:10/1 +P:3:1d2:0:0:0 +D:A small shield strengthened with a layer of metal. + +N:131:& Large Metal Shield~ +G:):s +I:34:5:0 +W:30:0:120:200 +A:30/1 +P:5:1d3:0:0:0 +D:A large piece of wood, rectangular or oval in shape, and covered with metal +D:to strengthen it. It's to be worn strapped to the arm not occupied by the +D:weapon when fighting. + +##### Rings ##### + +N:132:Strength +G:=:d +I:45:24:0 +W:30:0:2:500 +A:30/1 +F:STR | HIDE_TYPE | SUST_STR +f:STR +D:This bauble magically improves your strength. + +N:133:Dexterity +G:=:d +I:45:26:0 +W:30:0:2:500 +A:30/1 +F:DEX | HIDE_TYPE | SUST_DEX +f:DEX +D:This piece of jewellery magically improves your agility. + +N:134:Constitution +G:=:d +I:45:27:0 +W:30:0:2:500 +A:30/1 +F:CON | HIDE_TYPE | SUST_CON +f:CON +D:This ring magically grants you health, improving your constitution. + +N:135:Intelligence +G:=:d +I:45:25:0 +W:30:0:2:500 +A:30/1 +F:INT | HIDE_TYPE | SUST_INT +f:INT +D:This magical piece of jewellery makes you smarter. + +N:136:Speed +G:=:d +I:45:31:0 +W:75:0:2:100000 +A:75/1 +F:SPEED | HIDE_TYPE +f:SPEED +D:This wonderful ring grants you additional energy, allowing you to act faster. + +N:137:Searching +G:=:d +I:45:23:0 +W:5:0:2:250 +A:5/1 +F:SEARCH | HIDE_TYPE +f:SEARCH +D:This ring magically improves your attention, so you can detect hidden things better. + +# New : It can be activated but at the cost of its destruction +N:138:Teleportation +G:=:d +I:45:4:0 +W:5:0:2:250 +A:5/1 +a:HARDCORE=DEST_TELE +F:CURSED | TELEPORT | EASY_KNOW | ACTIVATE +f:TELEPORT +D:This ring will uncontrollably send you to different places at its whim. +D:You can use its power once at your will, but it will destroy the ring. + +N:139:Slow Digestion +G:=:d +I:45:6:0 +W:5:0:2:250 +A:5/1 +F:SLOW_DIGEST | EASY_KNOW +f:SLOW_DIGEST +D:This magical bauble grants you some sustenance, allowing you to subsist on less food. + +N:142:Levitation +G:=:d +I:45:7:0 +W:5:0:2:200 +A:5/1 +F:FEATHER | EASY_KNOW +f:FEATHER +D:When you put on this ring, you will be able to float just above the floor. +D:It prevents you from drowning, and all your falls will be painless. + +N:143:Poison Resistance +G:=:d +I:45:20:0 +W:60:0:2:16000 +A:60/2 +F:RES_POIS | EASY_KNOW +f:RES_POIS +D:This magical ring grants protection from poison. +D:It is rumoured that in deep dungeons monsters can kill you at once if you +D:don't have poison resistance. + +N:144:Free Action +G:=:d +I:45:21:0 +W:20:0:2:1500 +A:20/1 +F:FREE_ACT | EASY_KNOW +f:FREE_ACT +D:This magical bauble prevents you from being held. +D:Some monsters will paralyse you and then kill you if you lack free action. + +N:145:Weakness +G:=:d +I:45:2:-5 +W:5:0:2:0 +A:5/1 +F:CURSED | STR | HIDE_TYPE +f:STR +D:This accursed ring will sap your strength, rendering you much weaker as long as you wear it. + +N:146:Flames +G:=:d +I:45:18:0 +W:50:0:2:3000 +A:50/1 +P:0:0d0:0:0:15 +a:HARDCORE=BA_FIRE_4 +F:RES_FIRE | ACTIVATE +f:RES_FIRE | IGNORE_FIRE +D:This fiery circlet grants you protection, makes fire less dangerous and even +D:allows you to call forth a ball of flame. + +N:147:Acid +G:=:d +I:45:17:0 +W:50:0:2:3000 +A:50/1 +P:0:0d0:0:0:15 +a:HARDCORE=BA_ACID_4 +F:RES_ACID | ACTIVATE +f:RES_ACID | IGNORE_ACID +D:This magical ring is imbued with spells of devouring acid, granting protection against such +D:assaults and the ability to shoot acid at your foes. + +N:148:Ice +G:=:d +I:45:19:0 +W:50:0:2:3000 +A:50/1 +a:HARDCORE=BA_COLD_4 +P:0:0d0:0:0:15 +F:RES_COLD | ACTIVATE +f:RES_COLD | IGNORE_COLD +D:This ring is imbued with supernatural cold, which makes you less vulnerable to such effects +D:and occasionally allows you to throw balls of ice at your foes. + +N:149:Woe +G:=:d +I:45:0:-5 +W:50:0:2:0 +A:50/1 +F:CURSED | TELEPORT | WIS | CHR | HIDE_TYPE | AUTO_CURSE +D:This accursed ring will turn you into a bumbling fool and, in addition, magically +D:transports you to places you never wanted to see. It can recurse itself if +D:you leave it on too long. + +N:150:Stupidity +G:=:d +I:45:3:-5 +W:5:0:2:0 +A:5/1 +F:CURSED | INT | HIDE_TYPE +f:INT +D:This wicked ring feeds off your intellect, magically making you stupid. + +N:151:Damage +G:=:d +I:45:29:0 +W:20:0:2:500 +A:20/1 +F:HIDE_TYPE +D:This ring makes your hands magically strong in combat, allowing you to inflict +D:greater pain with your hand-to-hand attacks. + +N:152:Accuracy +G:=:d +I:45:28:0 +W:20:0:2:500 +A:20/1 +F:HIDE_TYPE | EASY_USE | ACTIVATE | +a:HARDCORE=WHIRLWIND +D:This ring magically improves your control in combat, allowing you to hit more often. +D:It can also sometimes be used to hit several nearby opponents with deadly accuracy. + +N:153:Protection +G:=:d +I:45:16:0 +W:10:0:2:500 +A:10/1 +D:This ring creates a magical aura around you, protecting you against the blows of your enemies. + +N:154:Aggravate Monster +G:=:d +I:45:1:0 +W:5:0:2:0 +A:5/1 +F:CURSED | AGGRAVATE | EASY_KNOW | AUTO_CURSE +f:AGGRAVATE +D:This faithless ring will draw opponents' attention towards its hapless owner. +D:If you have any pets, it will also make them turn against you. + +N:155:See Invisible +G:=:d +I:45:22:0 +W:30:0:2:340 +A:30/1 +F:SEE_INVIS | EASY_KNOW +f:SEE_INVIS +D:This magical piece of jewellery allows your eyes to perceive beings otherwise unseen. + +N:162:Slaying +G:=:d +I:45:30:0 +W:40:0:2:1000 +A:40/1 +F:SHOW_MODS +D:This ring magically improves your fighting prowess, allowing to hit more often and harder. + +##### Amulets ##### + +N:163:Brilliance +G:":d +I:40:6:0 +W:50:0:3:1000 +A:50/4 +F:INT | WIS | HIDE_TYPE | LITE1 +D:This talisman grants a sharper wit, greater insight and brightness to light dark places. + +N:164:Charisma +G:":d +I:40:7:0 +W:30:0:3:500 +A:30/1 +F:CHR | HIDE_TYPE +f:CHR +D:This amulet grants beauty beyond mere looks. + +N:165:Searching +G:":d +I:40:5:0 +W:15:0:3:600 +A:15/1 +F:SEARCH | HIDE_TYPE +f:SEARCH +D:This amulet grants keen sight, finding things that are hidden. + +N:166:Teleportation +G:":d +I:40:1:0 +W:10:0:3:250 +A:10/1 +F:CURSED | TELEPORT | EASY_KNOW +f:TELEPORT +D:This amulet nastily throws you all over the place. + +# Replacing Adornment with Protection from Evil from T-Plus by Ingeborg S. Norden + +N:169:Protection from Evil +G:":d +I:40:2:0 +W:25:0:3:10000 +A:25/1 +F:EASY_KNOW | ACTIVATE | BLESSED | ESP_EVIL +a:HARDCORE=PROT_EVIL +D:This blessed amulet fends off evil beings and warns the wearer +D:of their presence. + +##### Extra armour ##### + +N:170:& Double Ring Mail~ +G:[:s +I:37:5:0 +W:25:0:230:700 +A:25/1 +P:15:1d4:-2:0:0 +D:A suit of leather armour with metal rings sewn onto it. In addition, in important parts it is +D:reinforced with mail. + +##### Additional amulets ##### + +N:171:the Magi +G:":d +I:40:8:0 +W:70:0:3:30000 +A:70/8 +P:0:0d0:-4:-4:0 +F:INT | SUST_INT | SEARCH | SPELL_CONTAIN | WIELD_CAST +F:FREE_ACT | RES_BLIND | RES_CONF | +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +D:This rare amulet is highly desirable for mages, as it makes its wearer smarter, more attentive +D:and impervious to magics which would make their own magic-use impossible. + +N:172:Doom +G:":d +I:40:0:-5 +W:50:0:3:0 +A:50/1 +F:CURSED | STR | INT | WIS | DEX | CON | CHR | HIDE_TYPE +F:AUTO_CURSE | CURSE_NO_DROP +D:This wicked amulet will drain all your abilities, turning you into a mere shadow of yourself. It +D:is exceedingly hard to get rid of. + +##### Scrolls ##### + +N:173:Enchant Weapon To-Hit +G:?:d +I:70:17:0 +W:15:0:5:125 +A:15/1 +D:This magical scroll will allow you to improve the accuracy of a weapon in your possession. +D:However, weapons which are already very highly enchanted are more difficult to improve +D:further. + +N:174:Enchant Weapon To-Dam +G:?:d +I:70:18:0 +W:15:0:5:125 +A:15/1 +D:Upon reading this scroll, a magical enchantment will be placed on a weapon in your +D:possession, increasing the pain it inflicts when hitting. On very highly enchanted weapons this +D:enchantment may fail, wasting the scroll. + +N:175:Enchant Armour +G:?:d +I:70:16:0 +W:15:0:5:125 +A:15/1 +D:This scroll will try to enchant a piece of armour in your possession, making it more effective +D:in protecting you. Highly enchanted armour is likely not to accept this enchantment, however. + +N:176:Identify +G:?:d +I:70:12:0 +W:1:0:5:50 +A:1/1:5/1:10/1:30/1 +D:If you read this scroll, the identity of an item you specify will be laid open to you. + +N:177:*Identify* +G:?:d +I:70:13:0 +W:30:0:5:1000 +A:30/1:50/2:80/1:100/1 +D:This scroll will allow you to gain insight into an object's special properties. +D:Only the highly magical objects, like rare rings and amulets or very unusual weapons +D:and armour possess abilities which warrant the use of this magic. + +N:178:Rumour +G:?:d +I:70:51:0 +W:1:0:5:10 +A:1/1 +D:A piece of paper inscribed with a little text. You may meditate over it or ignore it at your +D:leisure. + +N:179:Chaos +G:?:d +I:70:50:0 +W:100:0:5:10000 +A:100/8 +F:IGNORE_FIRE | IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC +D:A piece of paper inscribed with strange shifting runes. Upon reading them, they will release +D:a blast of chaotic forces. + +N:180:Remove Curse +G:?:d +I:70:14:0 +W:10:0:5:100 +A:10/1:20/2:40/2 +D:A scroll inscribed with a beneficial formula. Upon reading it, evil magics will be removed +D:from your possessions. + +N:181:Light +G:?:d +I:70:24:0 +W:0:0:5:15 +A:0/1:3/1:10/1 +D:A scroll which will create a permanent magical light, illuminating your surroundings. + +N:182:Fire +G:?:d +I:70:48:0 +W:50:0:5:1000 +A:50/4 +F:IGNORE_FIRE +D:A piece of paper inscribed with runes glowing brightly red. Upon reading them, a large blast +D:of fire will be released. + +N:183:Ice +G:?:d +I:70:49:0 +W:75:0:5:5000 +A:75/6 +F:IGNORE_COLD +D:A piece of paper inscribed with light-blue runes that radiate a strange cold. Upon reading them, +D:a large icy blast will be released. + +N:184:Summon Monsters +G:?:d +I:70:4:0 +W:1:0:5:0 +A:1/1 +D:This scroll was made by mischievous sorcerers. If it is read, a few creatures will appear to fight +D:you. + +N:185:Phase Door +G:?:d +I:70:8:0 +W:1:0:5:15 +A:1/1 +D:Upon reading this scroll, you will be translocated over a short distance. + +N:186:Teleportation +G:?:d +I:70:9:0 +W:10:0:5:40 +A:10/1 +D:If you read this scroll, you will immediately be transported to another place on the level. + +N:187:Teleport Level +G:?:d +I:70:10:0 +W:20:0:5:50 +A:20/1 +D:This scroll will magically transport you to the level directly above or below, when read. + +N:188:Monster Confusion +G:?:d +I:70:36:0 +W:5:0:5:30 +A:5/1 +D:Reading this scroll will cause your hands to glow with a strange mesmerising light that will +D:attempt to confuse the next creature you hit with a hand or weapon attack. + +N:189:Magic Mapping +G:?:d +I:70:25:0 +W:5:0:5:40 +A:5/1 +D:Reading this scroll will reveal the layout of your immediate surroundings to you. + +N:190:Rune of Protection +G:?:d +I:70:38:0 +W:50:0:5:500 +A:50/2:90/4 +D:This scroll is inscribed with a powerful protective incantation. When read, this will erect a +D:strong magical ward around the location you currently stand on. Be aware that this magic is +D:easily disturbed by already present structures and thus cannot work where an object is lying, or +D:on a trap. + +N:191:*Remove Curse* +G:?:d +I:70:15:0 +W:50:0:5:8000 +A:50/2:75/2:85/2:95/1 +D:This valuable scroll is inscribed with a powerful blessing capable of dispelling all but the +D:mightiest curses which may have been laid on your possessions. + +N:192:Treasure Detection +G:?:d +I:70:26:0 +W:0:0:5:15 +A:0/1 +D:This scroll magically reveals the locations of nearby loose change to you. + +N:193:Object Detection +G:?:d +I:70:27:0 +W:0:0:5:15 +A:0/1 +D:This scroll shows nearby objects to you. It only makes you aware of items on the floor, +D:however, not those carried by creatures. + +N:194:Trap Detection +G:?:d +I:70:28:0 +W:5:0:5:35 +A:5/1:10/1 +D:This scroll is very helpful, because it reveals the locations of nearby snares and traps which you +D:might otherwise blunder into. + +##### Extra ammunition ##### + +N:195:& Sheaf Arrow~ +G:{:o +I:17:1:0 +W:10:0:4:3 +A:15/2:50/2 +P:0:1d5:0:0:0 +F:SHOW_MODS +D:These arrows have bigger arrowheads and bigger feathers. +D:They also make bigger holes. + +N:196:& Mithril Shot~ +G:{:B +I:16:2:0 +W:40:0:4:20 +A:40/2:65/1 +P:0:3d4:5:5:0 +F:SHOW_MODS | IGNORE_ACID +D:Sling bullets made from the slags of mithril smelting. They are unusually heavy, hitting +D:with great force, and are almost imperishable. + +##### Additional scrolls ##### + +N:197:Door/Stair Location +G:?:d +I:70:29:0 +W:5:0:5:35 +A:5/1:10/1:15/1 +D:This scroll will reveal nearby doors and stairs. + +N:198:Acquirement +G:?:d +I:70:46:0 +W:20:0:5:100000 +A:20/8 +D:A great treasure is magically stored within the shimmering runes of this scroll. Reading the +D:words will release it. + +N:199:*Acquirement* +G:?:d +I:70:47:0 +W:60:0:5:200000 +A:60/16 +D:Several great treasures have been hidden in a magical compartment. This scroll serves as the +D:key and will release them when read. + +N:200:Mass Genocide +G:?:d +I:70:45:0 +W:50:0:5:1000 +A:50/4:100/4 +D:An astoundingly powerful death spell is stored in the runes of this spell. Reading +D:it will annihilate all nearby creatures. Only a few beings of legendary stature +D:can withstand it. + +N:201:Detect Invisible +G:?:d +I:70:30:0 +W:1:0:5:15 +A:1/1 +D:A minor detection spell is stored in this scroll, showing you the locations of otherwise +D:unseen beings for a brief moment. + +N:202:Aggravation +G:?:d +I:70:1:0 +W:5:0:5:0 +A:5/1 +D:This nasty scroll will make a loud noise when read, waking up foes in your vicinity. + +N:203:Trap Creation +G:?:d +I:70:7:0 +W:10:0:5:0 +A:10/1 +D:If you read this rather annoying scroll, snares and pitfalls will magically be planted all around +D:you, ready to do nasty things to you once you walk onto them. + +N:204:Trap/Door Destruction +G:?:d +I:70:39:0 +W:10:0:5:50 +A:10/1 +D:A very specifically destructive spell is written on this scroll. It will smash all traps and all +D:doors immediately next to you. + +N:205:Artifact Creation +G:?:d +I:70:52:0 +W:70:0:5:200000 +A:70/16 +D:The mighty magic on this scroll will imbue a mundane item you possess with supernatural powers, +D:also rendering the object indestructible. + +N:206:Recharging +G:?:d +I:70:22:0 +W:40:0:5:200 +A:40/1 +D:This scroll is inscribed with a spell releasing the enchantments used to give wands and +D:staves their power, allowing you to replenish their spent charges. + +N:207:Genocide +G:?:d +I:70:44:0 +W:40:0:5:750 +A:40/4:80/4 +D:This rare and powerful scroll will annihilate all members of a specified race of monsters in +D:your current location, but this will also exact a price of pain from you. + +N:208:Darkness +G:?:d +I:70:0:0 +W:1:0:5:0 +A:1/1 +D:This scroll will create a blast of utter darkness, which then fades to leave the immediate +D:surroundings in a lasting gloom. The extreme darkness can blind those who are not used to +D:it. + +N:209:Protection from Evil +G:?:d +I:70:37:0 +W:30:0:5:250 +A:30/1 +D:Upon reading the runes on this piece of paper, a faint aura of holiness will spring into existence +D:around you, protecting you from blows of evil creatures, unless they are more powerful than you. + +N:210:Satisfy Hunger +G:?:d +I:70:32:0 +W:5:0:5:10 +A:5/1:20/1:50/1:75/1 +D:Reading this scroll will create a nutritious mass in your stomach, satisfying your hunger. + +N:211:Dispel Undead +G:?:d +I:70:42:0 +W:40:0:5:200 +A:40/1 +D:A powerful exorcism is inscribed on this scroll. When read it will hurt undead abominations +D:nearby, possibly even destroying them. + +N:212:*Enchant Weapon* +G:?:d +I:70:21:0 +W:50:0:5:500 +A:50/1 +D:Reading this scroll will magically infuse a weapon of your choice, making it more effective +D:in combat. It may not work on weapons that are already powerful or unique. + +N:213:Curse Weapon +G:?:d +I:70:3:0 +W:50:0:5:0 +A:50/1 +D:This scroll will ruin your weapon beyond repair. Only weapons of legend have a hope of +D:escaping destruction, but even they will often be shattered. + +N:214:*Enchant Armour* +G:?:d +I:70:20:0 +W:50:0:5:500 +A:50/1:50/1 +D:This scroll will place a great enchantment on a piece of armour of your choice, making it much +D:better at protecting you. Mark that improving armours which are already highly enchanted is very +D:difficult and will often fail. + +N:215:Curse Armour +G:?:d +I:70:2:0 +W:50:0:5:0 +A:50/1 +D:This scroll bears a curse that will tear your armour to shreds. + +N:216:Summon Undead +G:?:d +I:70:5:0 +W:15:0:5:0 +A:15/1 +D:These spells scribed by ancient necromancers will call their horrible creatures to haunt you. + +N:217:Blessing +G:?:d +I:70:33:0 +W:1:0:5:15 +A:1/1 +D:The recitation of this scroll will grant you a blessing of the Valar, making you more confident +D:in attack and defence for a few moments. + +N:218:Holy Chant +G:?:d +I:70:34:0 +W:10:0:5:40 +A:10/1 +D:This blessing will give you a holy warrior's prowess in battle for a while. + +N:219:Holy Prayer +G:?:d +I:70:35:0 +W:25:0:5:80 +A:25/1 +D:This incantation lets you fight as a warrior of Valinor for quite a while, supreme in attack and +D:defence. + +N:220:Word of Recall +G:?:d +I:70:11:0 +W:5:0:5:150 +A:5/1 +D:The spell on this scroll will slowly build an ethereal conduit to the surface for you if you are in +D:a dungeon, and into the dungeon if you are above ground. Upon completion, which takes a while, you +D:will suddenly be translocated to the other place. + +N:221:*Destruction* +G:?:d +I:70:41:0 +W:40:0:5:250 +A:40/1 +D:This scroll is inscribed with a mighty conjuration which wrecks the dungeon all around you. +D:Monsters and objects will be annihilated by this blast; only completely indestructible things can +D:withstand it. + +##### Potions ##### + +N:222:Slime Mold Juice +G:!:d +I:71:2:400 +W:0:0:4:2 +A:0/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:A strange sort of yellowish-green slime, too viscous to even slosh in the bottle. + +N:223:Apple Juice +G:!:d +I:71:1:250 +W:0:0:4:1 +A:0/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:A healthy fruit beverage. + +N:224:Water +G:!:d +I:71:0:200 +W:0:0:4:1 +A:0/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:A small bottle filled with pure water. + +N:225:Strength +G:!:d +I:71:48:0 +W:20:0:4:8000 +A:20/6:25/3:30/1 +P:0:1d1:0:0:0 +D:This beneficial potion will permanently improve your physical strength. + +N:226:Weakness +G:!:d +I:71:16:0 +W:3:0:4:0 +A:3/1 +P:0:3d12:0:0:0 +F:FOUNTAIN +D:This nasty potion will sap your strength, making you weaker. + +N:227:Restore Strength +G:!:d +I:71:42:0 +W:25:0:4:300 +A:25/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This magical potion will bring back your physical power to its full extent, should it be drained. + +N:228:Intelligence +G:!:d +I:71:49:0 +W:20:0:4:8000 +A:20/6:25/3:30/1 +P:0:1d1:0:0:0 +D:This beneficial potion will magically enhance your wit, permanently improving your intellect. + +N:229:Stupidity +G:!:d +I:71:17:0 +W:20:0:4:0 +A:20/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This accursed potion will cloud your intellect, making you stupid. + +N:230:Restore Intelligence +G:!:d +I:71:43:0 +W:25:0:4:300 +A:25/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This beneficial potion will magically heal your brain, restoring drained intelligence. + +N:231:Wisdom +G:!:d +I:71:50:0 +W:20:0:4:8000 +A:20/6:25/3:30/1 +P:0:1d1:0:0:0 +D:This potion grants great insight, making you permanently wiser. + +N:232:Naivety +G:!:d +I:71:18:0 +W:20:0:4:0 +A:20/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This potion casts a shadow on your knowledge, making you naive. + +N:233:Restore Wisdom +G:!:d +I:71:44:0 +W:25:0:4:300 +A:25/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This potion benefits the naive, bringing back their wisdom to what it once was. + +N:234:Charisma +G:!:d +I:71:53:0 +W:20:0:4:1000 +A:20/1:25/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This potion infuses you with permanent beauty and charm. + +N:235:Ugliness +G:!:d +I:71:21:0 +W:20:0:4:0 +A:20/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This wicked potion slightly twists your features, making you appear less fair. + +N:236:Restore Charisma +G:!:d +I:71:47:0 +W:20:0:4:300 +A:20/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This useful potion restores drained charm. + +N:237:Curing +G:!:d +I:71:61:100 +W:18:0:4:250 +A:18/1:40/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This blessed potion helps to recover from a wide variety of ailments. + +### Note! Invulnerability decreases your food... ### + +N:238:Invulnerability +G:!:d +I:71:62:-2500 +W:90:0:4:100000 +A:90/9 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This immensely powerful potion makes your physique almost indestructible for a very short +D:time. Very rarely, an attempt to hurt you will still succeed, so don't be too confident. + +N:239:New Life +G:!:d +I:71:63:100 +W:50:0:4:750000 +A:50/20:100/10:120/5 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This potion fundamentally twists your physical features, as if you were another mother's child. +D:Your physique will be shaped anew. This may make you more or less hardy in battle. + +N:240:Cure Serious Wounds +G:!:d +I:71:35:100 +W:3:0:4:40 +A:3/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This beneficial potion will cure some wounds and other inhibiting ailments. + +N:241:Cure Critical Wounds +G:!:d +I:71:36:100 +W:5:0:4:100 +A:5/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This potion will cure a good bit of hurt you have suffered and also allows you to recover +D:from unhealthy conditions like blood poisoning, confusion or blindness. + +N:242:Healing +G:!:d +I:71:37:200 +W:15:0:4:300 +A:15/1:30/1:60/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This blessed potion greatly heals you and also cures many other ailments from +D:which you might suffer. + +N:243:Constitution +G:!:d +I:71:52:0 +W:20:0:4:8000 +A:20/6:25/3:30/1 +P:0:1d1:0:0:0 +D:This magical concoction greatly improves your health, making you permanently tougher. + +N:244:Experience +G:!:d +I:71:59:0 +W:65:0:4:25000 +A:65/1 +P:0:1d1:0:0:0 +D:This exceptional drink instills into you knowledge, allowing you to advance further in your trade. + +N:245:Sleep +G:!:d +I:71:11:100 +W:0:0:4:0 +A:0/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This potion will make you fall asleep for some turns, allowing monsters +D:to attack you with impunity. + +N:246:Blindness +G:!:d +I:71:7:0 +W:0:0:4:0 +A:0/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This slightly poisonous potion temporarily impedes your eyesight, making you unable to see. + +N:247:Booze +G:!:d +I:71:9:50 +W:0:0:4:0 +A:0/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:A small bottle of a dark brown distilled beverage. It will impede your ability to see clearly. + +N:248:Poison +G:!:d +I:71:6:0 +W:3:0:4:0 +A:3/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This bottle is filled with a mild but still dangerous liquid poison. Drinking it would be highly +D:unwise. + +N:249:Speed +G:!:d +I:71:29:0 +W:1:0:4:75 +A:1/1:40/1:60/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:A magical drink which temporarily allows you to act much faster. + +N:250:Slowness +G:!:d +I:71:4:50 +W:1:0:4:0 +A:1/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:A magical concoction that will temporarily force you to move and act a lot slower. + +N:251:Dexterity +G:!:d +I:71:51:0 +W:20:0:4:8000 +A:20/6:25/3:30/1 +P:0:1d1:0:0:0 +D:A strange magical drink which permanently improves your agility. + +N:252:Restore Dexterity +G:!:d +I:71:45:0 +W:25:0:4:300 +A:25/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This magical brew brings your agility back to its former glory should it have been reduced. + +N:253:Restore Constitution +G:!:d +I:71:46:0 +W:25:0:4:300 +A:25/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:A beneficial magical concoction, restoring your damaged health. + +N:254:Lose Memories +G:!:d +I:71:13:0 +W:10:0:4:0 +A:10/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This wicked potion will make you lose a lot of the experience you've gained. + +N:255:Salt Water +G:!:d +I:71:5:0 +W:0:0:4:1 +A:0/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:A solution of salt in water, made for curing meat. Drinking it causes violent nausea. + +N:256:Enlightenment +G:!:d +I:71:56:0 +W:25:0:4:800 +A:25/1:50/1:100/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:An exceptional magical drink which lets you "remember" your current location as if you had +D:already seen all of it. + +N:257:Heroism +G:!:d +I:71:32:0 +W:1:0:4:35 +A:1/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:Quaffing this potion will temporarily make you fight like a hero of great might. + +N:258:Berserk Strength +G:!:d +I:71:33:0 +W:3:0:4:100 +A:3/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This strange drink will instill in you a wild battle rage for a while. + +N:259:Boldness +G:!:d +I:71:28:0 +W:1:0:4:10 +A:1/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This drink will improve your courage, dispelling all fear. + +N:260:Restore Life Levels +G:!:d +I:71:41:0 +W:40:0:4:400 +A:40/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:If your life force has been drained, this blessed brew will bring it back. + +N:261:Resist Heat +G:!:d +I:71:30:0 +W:1:0:4:30 +A:1/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This magical potion will render you less vulnerable to outward heat. + +N:262:Resist Cold +G:!:d +I:71:31:0 +W:1:0:4:30 +A:1/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This magical potion will for a short while grant you a familiarity with frost, so that you take +D:less harm from extreme cold. + +N:263:Detect Invisible +G:!:d +I:71:25:0 +W:3:0:4:50 +A:3/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This magical concoction will temporarily improve your eyesight so that you can see creatures +D:otherwise unseen. + +N:264:Slow Poison +G:!:d +I:71:26:0 +W:1:0:4:25 +A:1/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This healthy potion will dilute poisons in your blood and reduce the damage they cause. + +N:265:Neutralise Poison +G:!:d +I:71:27:0 +W:5:0:4:75 +A:5/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This powerful antidote will negate the effect of all poisons currently affecting you. + +N:266:Restore Mana +G:!:d +I:71:40:0 +W:25:0:4:350 +A:25/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This potion infuses the drinker with pure magic force, bringing their magical potential back to +D:its full extent. + +N:267:Infra-vision +G:!:d +I:71:24:0 +W:3:0:4:20 +A:3/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This potion temporarily grants or improves the ability to optically perceive heat sources. + +N:268:Resistance +G:!:d +I:71:60:100 +W:20:0:4:250 +A:20/1:45/1:80/1:100/1 +P:0:1d1:0:0:0 +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +F:FOUNTAIN +D:This great potion infuses you with the power of the elements, so that you can better +D:withstand their ravages. + +##### Wands ##### + +# Wand of school spells +N:269:Spell +G:-:d +I:65:1:0 +W:3:0:10:100 +A:3/1:13/1:23/1:43/1:63/1:83/1 +P:0:1d1:0:0:0 +F:SPECIAL_GENE + +N:270:Manathrust +G:-:d +I:65:3:-1:SPELL=Manathrust +W:3:0:10:100 +A:3/1 +P:0:1d1:0:0:0 + +N:271:Fireflash +G:-:d +I:65:4:-1:SPELL=Fireflash +W:10:0:10:100 +A:10/2 +P:0:1d1:0:0:0 + +N:272:Firewall +G:-:d +I:65:5:-1:SPELL=Firewall +W:20:0:10:100 +A:20/1 +P:0:1d1:0:0:0 + +N:273:Tidal Wave +G:-:d +I:65:6:-1:SPELL=Tidal Wave +W:20:0:10:100 +A:20/1 +P:0:1d1:0:0:0 + +N:274:Ice Storm +G:-:d +I:65:7:-1:SPELL=Ice Storm +W:15:0:10:100 +A:15/1 +P:0:1d1:0:0:0 + +N:275:Noxious Cloud +G:-:d +I:65:8:-1:SPELL=Noxious Cloud +W:5:0:10:100 +A:5/2 +P:0:1d1:0:0:0 + +N:276:Poison Blood +G:-:d +I:65:9:-1:SPELL=Poison Blood +W:30:0:10:100 +A:30/2 +P:0:1d1:0:0:0 + +N:277:Thunderstorm +G:-:d +I:65:10:-1:SPELL=Thunderstorm +W:40:0:10:100 +A:40/2 +P:0:1d1:0:0:0 + +N:278:Dig +G:-:d +I:65:11:-1:SPELL=Dig +W:15:0:10:100 +A:15/1 +P:0:1d1:0:0:0 + +N:279:Stone Prison +G:-:d +I:65:12:-1:SPELL=Stone Prison +W:50:0:10:100 +A:50/3 +P:0:1d1:0:0:0 + +N:280:Strike +G:-:d +I:65:13:-1:SPELL=Strike +W:30:0:10:100 +A:30/1 +P:0:1d1:0:0:0 + +N:281:Teleport Away +G:-:d +I:65:14:-1:SPELL=Teleport Away +W:20:0:10:100 +A:20/1 +P:0:1d1:0:0:0 + +N:282:Summon Animal +G:-:d +I:65:15:-1:SPELL=Summon Animal +W:60:0:10:100 +A:60/1 +P:0:1d1:0:0:0 + +N:283:Magelock +G:-:d +I:65:16:-1:SPELL=Magelock +W:1:0:10:100 +A:3/2 +P:0:1d1:0:0:0 + +N:284:Slow Monster +G:-:d +I:65:17:-1:SPELL=Slow Monster +W:3:0:10:100 +A:3/2 +P:0:1d1:0:0:0 + +N:285:Essence of Speed +G:-:d +I:65:18:-1:SPELL=Essence of Speed +W:25:0:10:100 +A:25/2 +P:0:1d1:0:0:0 + +N:286:Banishment +G:-:d +I:65:19:-1:SPELL=Banishment +W:45:0:10:100 +A:45/2 +P:0:1d1:0:0:0 + +N:287:Disperse Magic +G:-:d +I:65:20:-1:SPELL=Disperse Magic +W:10:0:10:100 +A:10/2 +P:0:1d1:0:0:0 + +N:288:Charm +G:-:d +I:65:21:-1:SPELL=Charm +W:15:0:10:100 +A:15/1 +P:0:1d1:0:0:0 + +N:289:Confuse +G:-:d +I:65:22:-1:SPELL=Confuse +W:7:0:10:100 +A:7/2 +P:0:1d1:0:0:0 + +N:290:Demon Blade +G:-:d +I:65:23:-1:SPELL=Demon Blade +W:60:0:10:100 +A:60/1 +P:0:1d1:0:0:0 + +N:291:Heal Monster +G:-:d +I:65:24:-1:SPELL=Heal Monster +W:1:0:10:0 +A:1/4 +P:0:1d1:0:0:0 + +N:292:Haste Monster +G:-:d +I:65:25:-1:SPELL=Haste Monster +W:1:0:10:0 +A:1/4 +P:0:1d1:0:0:0 + + +##### Extra ammunition ##### + +N:293:& Flight Arrow~ +G:{:y +I:17:1:0 +W:3:0:1:1 +A:3/2 +P:0:1d3:0:0:0 +F:SHOW_MODS +D:An arrow designed for longer flight. Consequently, it is lighter and hits with less force. You can use it for 'f'iring a bow. + +# XXX + +N:295:& Boulder~ +G:*:W +I:11:1:0 +W:3:0:50:1 +A:3/200 +P:0:5d5:0:0:0 +F:SPECIAL_GENE +D:A big nasty-looking piece of rock. + +# Used for a quest +N:296:& Flame~ Imperishable +G:~:v +I:11:255:0 +W:127:0:4:0 +A:127/255 +P:0:1d1:0:0:0 +T:39:2 +F:NORM_ART | FULL_NAME | SPECIAL_GENE +F:ACTIVATE | ACTIVATE_NO_WIELD +a:SPELL=Artifact Eternal Flame +D:An impossibly bright, flickering living flame. It can be used +D:once to imbue an object with the power of Eru Iluvatar himself. + +N:297:& Necromantic Teeth~ +G:|:D +I:23:34:0 +W:0:0:7:10 +A:0/1:5/1:10/1:20/1 +P:0:1d4:0:0:0 +F:SHOW_MODS | VAMPIRIC | SPECIAL_GENE +D:A temporary weapon that only a necromancer can use. + +# The Horn of the Thunderlords +N:298:& Golden Horn~ of the Thunderlords +G:_:d +I:55:23:-1:SPELL=Artifact Thunderlords +W:50:10:10:12000 +P:0:1d4:0:0:0 +A:50/200 +T:55:8 +F:IGNORE_ACID | IGNORE_FIRE | IGNORE_ELEC | IGNORE_COLD | +F:NO_RECHARGE | EASY_USE | RECHARGED | NORM_ART | FULL_NAME | SPECIAL_GENE +D:This horn was given to you as a reward. Blow it if you are in dire need +D:of leaving your current location fast. + +# XXX + +##### Staves ##### + +N:300:Spell +G:_:d +I:55:1:0 +W:5:0:50:100 +A:5/1:15/1:35/1:45/1:65/1:75/1:85/1:95/1 +P:0:1d2:0:0:0 +F:SPECIAL_GENE + +N:301:Nothing +G:_:d +I:55:2:-1:SPELL=Nothing +W:5:0:50:100 +A:5/1 +P:0:1d2:0:0:0 + +N:302:Globe of Light +G:_:d +I:55:3:-1:SPELL=Globe of Light +W:7:0:50:100 +A:7/1 +P:0:1d2:0:0:0 + +N:303:Fiery Shield +G:_:d +I:55:4:-1:SPELL=Fiery Shield +W:15:0:50:100 +A:15/2 +P:0:1d2:0:0:0 + +N:304:Remove Curses +G:_:d +I:55:5:-1:SPELL=Remove Curses +W:10:0:50:100 +A:10/1 +P:0:1d2:0:0:0 + +N:305:Wings of Winds +G:_:d +I:55:6:-1:SPELL=Wings of Winds +W:25:0:50:100 +A:25/2 +P:0:1d2:0:0:0 + +N:306:Shake +G:_:d +I:55:7:-1:SPELL=Shake +W:30:0:50:100 +A:30/1 +P:0:1d2:0:0:0 + +N:307:Disarm +G:_:d +I:55:8:-1:SPELL=Disarm +W:2:0:50:100 +A:2/1 +P:0:1d2:0:0:0 + +N:308:Teleportation +G:_:d +I:55:9:-1:SPELL=Teleportation +W:20:0:50:100 +A:20/1 +P:0:1d2:0:0:0 + +N:309:Probability Travel +G:_:d +I:55:10:-1:SPELL=Probability Travel +W:50:0:50:100 +A:50/3 +P:0:1d2:0:0:0 + +N:310:Recovery +G:_:d +I:55:11:-1:SPELL=Recovery +W:20:0:50:100 +A:20/1 +P:0:1d2:0:0:0 + +N:311:Healing +G:_:d +I:55:12:-1:SPELL=Healing +W:25:0:50:100 +A:25/2 +P:0:1d2:0:0:0 + +N:312:Vision +G:_:d +I:55:13:-1:SPELL=Vision +W:30:0:50:100 +A:30/1 +P:0:1d2:0:0:0 + +N:313:Identify +G:_:d +I:55:14:-1:SPELL=Identify +W:10:0:50:100 +A:10/1 +P:0:1d2:0:0:0 + +N:314:Sense Hidden +G:_:d +I:55:15:-1:SPELL=Sense Hidden +W:10:0:50:100 +A:10/1 +P:0:1d2:0:0:0 + +N:315:Reveal Ways +G:_:d +I:55:16:-1:SPELL=Reveal Ways +W:5:0:50:100 +A:5/1 +P:0:1d2:0:0:0 + +N:316:Sense Monsters +G:_:d +I:55:17:-1:SPELL=Sense Monsters +W:5:0:50:100 +A:5/1 +P:0:1d2:0:0:0 + +N:317:Genocide +G:_:d +I:55:18:-1:SPELL=Genocide +W:55:0:50:100 +A:55/2 +P:0:1d2:0:0:0 + +N:318:Summon +G:_:d +I:55:19:-1:SPELL=Summon +W:5:0:50:100 +A:5/1 +P:0:1d2:0:0:0 + +N:319:Sterilization +G:_:d +I:55:24:-1:SPELL=Sterilize +W:20:0:50:100 +A:20/3 +P:0:1d2:0:0:0 + +N:320:Wish +G:_:d +I:55:20:-1:SPELL=Wish +W:95:0:50:10000 +A:95/40 +P:0:1d2:0:0:0 +F:NO_RECHARGE + +N:321:Mana +G:_:d +I:55:21:-1:SPELL=Mana +W:60:0:50:100 +A:60/2 +P:0:1d2:0:0:0 + +# XXX +# ... +# XXX + +##### School Books ##### + +N:330:& Tome~ of Magical Energy +G:?:B +I:111:0:0 +W:50:0:30:25000 +A:50/4 +P:0:1d1:0:0:0 +F:FULL_NAME | EASY_KNOW +D:The slick black cover of this tome seems to glow +D:with an inner violet light. You feel more attuned +D:to raw magic as you hold it. + +N:331:& Tome~ of the Eternal Flame +G:?:R +I:111:1:0 +W:50:0:30:25000 +A:50/4 +P:0:1d1:0:0:0 +F:FULL_NAME | EASY_KNOW | IGNORE_FIRE +D:The cover of this tome is bright red, with flickering +D:flames dancing across it once in a while. As you hold +D:it, you begin to gain a much closer knowledge of all +D:that is fiery. + +N:332:& Tome~ of the Blowing Wind +G:?:b +I:111:2:0 +W:50:0:30:25000 +A:50/4 +P:0:1d1:0:0:0 +F:FULL_NAME | EASY_KNOW | IGNORE_ELEC +D:The pages of this tome have a tendency to turn themselves, +D:as though flipped by an errant wind. As you hold it, +D:you start feeling wind at your fingertips. + +N:333:& Tome~ of the Impenetrable Earth +G:?:U +I:111:3:0 +W:50:0:30:25000 +A:50/4 +P:0:1d1:0:0:0 +F:FULL_NAME | EASY_KNOW | IGNORE_ACID +D:The solid leather cover of this tome seems permanently +D:stained with caked mud and grass. Heavy it is to lift, +D:yet strangely comforting to hold - you feel stronger +D:and better supported. + +N:334:& Tome~ of the Everrunning Wave +G:?:B +I:111:4:0 +W:50:0:30:25000 +A:50/4 +P:0:1d1:0:0:0 +F:FULL_NAME | EASY_KNOW +D:The cover and pages of this tome seem to be perpetually +D:wet, though they are not wet to the touch. As you hold +D:it, you begin to understand ocean storms better. + +N:335:& Tome~ of Translocation +G:?:B +I:111:5:0 +W:50:0:30:25000 +A:50/4 +P:0:1d1:0:0:0 +F:FULL_NAME | EASY_KNOW +D:This book seems to flicker strangely. It's one of those books +D:with an annoying tendency to disappear when you need it and +D:reappear in the unlikeliest places. As you hold it, you start +D:to understand what conveyance really means. + +N:336:& Tome~ of the Tree +G:?:G +I:111:6:0 +W:50:0:30:25000 +A:50/4 +P:0:1d1:0:0:0 +F:FULL_NAME | EASY_KNOW +D:The cover of this tome is a bright shade of green, and it gives off +D:a healthy, zesty scent that makes your thoughts clearer. As you +D:hold it, your heart goes out to all living things upon Arda. + +N:337:& Tome~ of Knowledge +G:?:D +I:111:7:0 +W:50:0:30:25000 +A:50/4 +P:0:1d1:0:0:0 +F:FULL_NAME | EASY_KNOW +D:A thick book with solid leather binding. It looks entirely +D:unremarkable, but as you hold it, you feel strangely able +D:to learn the inner workings of things and creatures. + +##### Chests ##### + +N:338:& Small wooden chest~ +G:~:s +I:7:1:0 +W:5:0:250:20 +A:5/1 +P:0:2d3:0:0:0 +D:A small wooden box, locked and possibly trapped. + +N:339:& Large wooden chest~ +G:~:s +I:7:5:0 +W:15:0:500:60 +A:15/1 +P:0:2d5:0:0:0 +D:A large wooden box, locked and possibly trapped + +N:340:& Small iron chest~ +G:~:s +I:7:2:0 +W:25:0:300:100 +A:25/1 +P:0:2d4:0:0:0 +D:A small rectangular container made of wood and reinforced with iron corners and latches. +D:It is locked and possibly trapped. + +N:341:& Large iron chest~ +G:~:s +I:7:6:0 +W:35:0:1000:150 +A:35/1 +P:0:2d6:0:0:0 +D:A large container made of wood, with a heavy iron lock, and probably a trap. + +N:342:& Small steel chest~ +G:~:s +I:7:3:0 +W:45:0:500:200 +A:45/1 +P:0:2d4:0:0:0 +D:A small wooden box with strong steel locks and reinforcements. It's likely to be trapped. + +N:343:& Large steel chest~ +G:~:s +I:7:7:0 +W:55:0:1000:250 +A:55/1 +P:0:2d6:0:0:0 +D:A nearly indestructible chest of wood and steel. The lock doesn't look impenetrable, but it +D:might be trapped. + +N:344:& Ruined chest~ +G:~:s +I:7:0:0 +W:0:0:250:0 +A:75/1 +D:A broken, empty chest. + +##### Various Stuff ##### + +N:345:& Iron Spike~ +G:~:W +I:5:0:0 +W:1:0:10:1 +A:1/1 +P:0:1d1:0:0:0 +D:A small spur of iron. Ramming one between a door and its frame might jam it. + +N:346:& Wooden Torch~ +G:~:u +I:39:0:0:4000 +W:1:0:30:2 +A:1/1 +P:0:1d1:0:0:0 +F:EASY_KNOW | LITE1 | FUEL_LITE +f:LITE1 | FUEL_LITE +D:A piece of wood with an oily rag wrapped around it. When lit, it will give off a little light and +D:much smoke. + +N:347:& Brass Lantern~ +G:~:U +I:39:1:0:7500 +W:3:0:50:35 +A:3/1 +P:0:1d1:0:0:0 +F:EASY_KNOW | IGNORE_FIRE | LITE2 | FUEL_LITE +f:LITE2 | FUEL_LITE +D:A brass container with a wick emerging from it, protected from draughts by a sheet of greased +D:paper. It can be carried by a handle. + +N:348:& Flask~ of oil +G:!:y +I:77:0:7500 +W:1:0:10:3 +A:1/1 +P:0:2d6:0:0:0 +D:A small clay container, filled with thick oil. The oil is flammable and can be used as lantern +D:fuel. + +N:349:& Empty Bottle~ +G:!:w +I:2:1:0 +W:0:0:2:1 +A:0/1 +P:0:1d1:0:0:0 +D:A small glass bottle. It's empty. + + +##### Here are the Rod Tips ##### + +N:350:Havoc +G:-:d +I:66:28:90 +W:95:0:15:150000 +A:100/16 +P:0:1d1:0:0:0 +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE +D:This powerful rod will release great blasts of destructive energy, but there's no knowing what +D:this effect will concentrate on. + +N:351:Door/Stair Location +G:-:d +I:66:1:10 +W:15:0:15:1000 +A:15/1 +P:0:1d1:0:0:0 +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE +D:When fuelled with enough ambient mana, this rod can detect nearby passages. + +N:352:Trap Location +G:-:d +I:66:29:8 +W:5:0:15:100 +A:5/1:10/1:20/1 +P:0:1d1:0:0:0 +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE +D:Zapping this rod will release a minor detection magic, alerting you of nearby pits and snares. + +N:353:Probing +G:-:d +I:66:7:50 +W:40:0:15:4000 +A:40/4 +P:0:1d1:0:0:0 +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE +D:A rod of knowledge which will tell you about nearby creatures' health. +D:If they are sleeping, the intrusion will wake them. + +N:354:Recall +G:-:d +I:66:3:80 +W:30:0:15:4500 +A:30/4 +P:0:1d1:0:0:0 +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE +D:A rod which can transport you from the depths to your home and back. + +N:355:Illumination +G:-:d +I:66:4:8 +W:20:0:15:1000 +A:20/1 +P:0:1d1:0:0:0 +F:EASY_KNOW +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE +D:This rod carries a minor spell of brightness, lighting your immediate surroundings whenever +D:activated. + +N:356:Light +G:-:d +I:66:15:15 +W:10:0:15:500 +A:10/1 +P:0:1d1:0:0:0 +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE +D:This rod can shoot a lance of bright light, hurting creatures which lurk in the dark. + +N:357:Lightning Bolts +G:-:d +I:66:21:30 +W:20:0:15:2000 +A:20/1 +P:0:1d1:0:0:0 +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE +D:This rod shoots a small spark of lightning, zapping the creature it hits. + +N:358:Frost Bolts +G:-:d +I:66:23:35 +W:25:0:15:2500 +A:25/1 +P:0:1d1:0:0:0 +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE +D:A small but extremely cold shard of ice will fly from this rod to the enemy you zap it at. + +N:359:Fire Bolts +G:-:d +I:66:22:40 +W:30:0:15:3000 +A:30/1 +P:0:1d1:0:0:0 +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE +D:This rod fires a magical flaming arrow at your foe, burning them. + +N:360:Polymorph +G:-:d +I:66:19:25 +W:35:0:15:1200 +A:35/1 +P:0:1d1:0:0:0 +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE +D:This rod of change will cause its target creature to mutate into someone else. +D:Beware, it can make a weak enemy into a more powerful one. + +N:361:Slow Monster +G:-:d +I:66:17:25 +W:30:0:15:1500 +A:30/1 +P:0:1d1:0:0:0 +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE +D:This obstructive rod will slow the creature its spell hits. + +N:362:Sleep Monster +G:-:d +I:66:16:25 +W:30:0:15:1500 +A:30/1 +P:0:1d1:0:0:0 +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE +D:This sorcerous rod will cause its target to stop in its tracks. + +N:363:Drain Life +G:-:d +I:66:18:30 +W:75:0:15:3600 +A:75/4 +P:0:1d1:0:0:0 +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE +D:This necromantic magical rod will hurt a living creature struck by its spell. + +N:364:Teleport Other +G:-:d +I:66:13:60 +W:45:0:15:1400 +A:45/2 +P:0:1d1:0:0:0 +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE +D:This rod of movement will displace its target to another location. + +N:365:Disarming +G:-:d +I:66:14:50 +W:35:0:15:2100 +A:35/1 +P:0:1d1:0:0:0 +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE +D:This rod will clear a path for you, triggering and thus rendering harmless all traps on the way. + +N:366:Lightning Balls +G:-:d +I:66:25:50 +W:55:0:15:4000 +A:55/1 +P:0:1d1:0:0:0 +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE +D:This rod will hurl a large ball of lightning at its target, electrifying all it engulfs. + +N:367:Cold Balls +G:-:d +I:66:27:55 +W:60:0:15:4500 +A:60/1 +P:0:1d1:0:0:0 +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE +D:This rod will call forth a minor storm of ice which freezes everything in the area of its blast. + +N:368:Fire Balls +G:-:d +I:66:26:60 +W:75:0:15:5000 +A:75/1 +P:0:1d1:0:0:0 +D:This rod will cause a small storm of flame to rage in a small circular area of your choice. +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE + +N:369:Acid Balls +G:-:d +I:66:24:60 +W:70:0:15:5500 +A:70/1 +P:0:1d1:0:0:0 +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE +D:This destructive rod will drown its target and its immediate surroundings in caustic acid. + +N:370:Acid Bolts +G:-:d +I:66:20:40 +W:40:0:15:3500 +A:40/1 +P:0:1d1:0:0:0 +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE +D:This rod will shoot a small glob of powerful acid at its target. + +N:371:Enlightenment +G:-:d +I:66:5:40 +W:65:0:15:10000 +A:65/4 +P:0:1d1:0:0:0 +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE +D:This rod grants you knowledge of your surroundings. + +N:372:Perception +G:-:d +I:66:2:20 +W:50:0:15:13000 +A:50/8:100/8 +P:0:1d1:0:0:0 +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE +D:This rod makes you insightful, laying open the identity of your possessions. + +N:373:Curing +G:-:d +I:66:8:35 +W:65:0:15:15000 +A:65/8 +P:0:1d1:0:0:0 +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE +D:This is a rod with minor healing powers, alleviating many disabling conditions. + +N:374:Healing +G:-:d +I:66:9:120 +W:80:0:15:20000 +A:80/8 +P:0:1d1:0:0:0 +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE +D:This rod has major healing powers and can restore your health if you have been wounded. + +N:375:Detection +G:-:d +I:66:6:80 +W:30:0:15:5000 +A:30/8 +P:0:1d1:0:0:0 +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE +D:This rod grants knowledge about all things worthy of notice in your vicinity. + +N:376:Restoration +G:-:d +I:66:10:140 +W:80:0:15:25000 +A:80/16 +P:0:1d1:0:0:0 +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE +D:This rod lets you remember and gain back previously reduced abilities. + +N:377:Speed +G:-:d +I:66:11:100 +W:95:0:15:50000 +A:95/16 +P:0:1d1:0:0:0 +F:IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE +D:This energising rod will allow you to act a lot faster for some time. + +# Ring of Spell + +N:378:Spell +G:=:d +I:45:58:0 +W:10:0:2:1000 +A:10/1 +F:SPELL_CONTAIN | WIELD_CAST +f:SPELL_CONTAIN +D:This ring is a container for spells. Those that are skilled in copying spells can inscribe a +D:spell onto it. + +# Amulet of Spell + +N:379:Spell +G:":d +I:40:27:0 +W:10:0:2:1000 +A:10/1 +F:SPELL_CONTAIN | WIELD_CAST +f:SPELL_CONTAIN +D:This amulet is a container for spells. Those that are skilled in copying spells can inscribe a +D:spell onto it. + +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX + +##### Skeletons ##### + +N:391:& Broken Skull~ +G:~:w +I:1:1:0 +W:0:0:1:0 +A:0/1 +P:0:1d1:0:0:0 +D:A yellowing, mud-stained, cracked skull. + +N:392:& Broken Bone~ +G:~:w +I:1:2:0 +W:0:0:2:0 +A:0/1 +P:0:1d1:0:0:0 +D:A yellowish bone, broken off. + +N:393:& Canine Skeleton~ +G:~:w +I:1:4:0 +W:1:0:10:0 +A:1/1 +P:0:1d1:0:0:0 +D:The only thing this dog has is its bones. + +N:394:& Rodent Skeleton~ +G:~:w +I:1:3:0 +W:1:0:10:0 +A:1/1 +P:0:1d1:0:0:0 +D:A dead critter's remains. + +N:395:& Human Skeleton~ +G:~:w +I:1:8:0 +W:5:0:60:0 +A:5/1 +P:0:1d2:0:0:0 +D:The remains of a human who met his or her demise here. + +N:396:& Dwarf Skeleton~ +G:~:w +I:1:7:0 +W:5:0:50:0 +A:5/1 +P:0:1d2:0:0:0 +D:The remains of a dwarf who met his or her demise here. + +N:397:& Elf Skeleton~ +G:~:w +I:1:6:0 +W:5:0:40:0 +A:5/1 +P:0:1d2:0:0:0 +D:The remains of an elf who met his or her demise here. + +N:398:& Gnome Skeleton~ +G:~:w +I:1:5:0 +W:5:0:30:0 +A:5/1 +P:0:1d2:0:0:0 +D:The remains of a gnome who met his or her demise here. + +##### Additional weapon ##### + +N:399:& Great Hammer~ +G:\:D +I:21:19:0 +W:45:0:300:350 +A:45/3 +P:0:4d6:0:0:0 +F:SHOW_MODS +D:A massive smith's hammer, so large and heavy it can be used as a weapon. + +##### Dragon Scale Mail ##### + +N:400:& Black Dragon Scale Mail~ +G:[:s +I:38:1:0 +W:60:0:200:50000 +A:60/8 +P:30:2d4:-2:0:10 +a:HARDCORE=BR_ACID +F:RES_ACID | FLY | +f:RES_ACID | +F:ACTIVATE | IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +D:A pitch-black armour made from a black dragon's hide. +D:It contains some of the dead beast's powers. + +N:401:& Blue Dragon Scale Mail~ +G:[:b +I:38:2:0 +W:50:0:200:40000 +A:50/8 +P:30:2d4:-2:0:10 +a:HARDCORE=BR_ELEC +F:RES_ELEC | FLY | +f:RES_ELEC | +F:ACTIVATE | IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +D:A shimmering bright blue armour made from a blue dragon's hide. +D:It contains some of the dead beast's powers. + +N:402:& White Dragon Scale Mail~ +G:[:w +I:38:3:0 +W:50:0:200:40000 +A:50/8 +a:HARDCORE=BR_COLD +P:30:2d4:-2:0:10 +F:RES_COLD | FLY | +f:RES_COLD | +F:ACTIVATE | IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +D:A gleaming white armour made from a white dragon's hide. +D:It contains some of the dead beast's powers. + +N:403:& Red Dragon Scale Mail~ +G:[:r +I:38:4:0 +W:60:0:200:50000 +A:60/8 +P:30:2d4:-2:0:10 +a:HARDCORE=BR_FIRE +F:RES_FIRE | FLY | +f:RES_FIRE | +F:ACTIVATE | IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +D:A glowing red armour made from a red dragon's hide. +D:It contains some of the dead beast's powers. + +N:404:& Green Dragon Scale Mail~ +G:[:g +I:38:5:0 +W:50:0:200:40000 +A:50/8 +P:30:2d4:-2:0:10 +a:HARDCORE=BR_POIS +F:RES_POIS | FLY | +f:RES_POIS | +F:ACTIVATE | IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +D:A dirty green, foul-smelling armour made from a green dragon's hide. +D:It contains some of the dead beast's powers. + +N:405:& Multi-Hued Dragon Scale Mail~ +G:[:v +I:38:6:0 +W:90:0:200:150000 +A:90/32 +P:30:2d4:-2:0:10 +a:HARDCORE=BR_MANY +F:ATTR_MULTI +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_POIS | FLY | +f:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_POIS | +F:ACTIVATE | IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +D:A powerful armour glowing red, blue, green, black, and white. +D:made from a multihued dragon's hide, it contains some of the dead beast's powers. + +N:406:& Pseudo Dragon Scale Mail~ +G:[:v +I:38:10:0 +W:70:0:200:70000 +A:70/16 +P:30:2d4:-2:0:10 +a:HARDCORE=BR_LIGHT +F:RES_LITE | RES_DARK | FLY | +F:ACTIVATE | IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +D:A strangely glowing armour made from a pseudo-dragon's hide. +D:It contains some of the dead beast's powers. + +N:407:& Law Dragon Scale Mail~ +G:[:B +I:38:12:0 +W:80:0:200:80000 +A:80/16 +P:30:2d4:-2:0:10 +a:HARDCORE=BR_SHARD +F:RES_SOUND | RES_SHARDS | FLY | +F:ACTIVATE | IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +D:A sharp-scaled armour that seems to roar, made from a law dragon's hide. +D:It contains some of the dead beast's powers. + +N:408:& Bronze Dragon Scale Mail~ +G:[:U +I:38:14:0 +W:50:0:200:40000 +A:50/8 +P:30:2d4:-2:0:10 +a:HARDCORE=BR_CONF +F:RES_CONF | FLY | +F:ACTIVATE | IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +D:A brownish armour glittering in a dazzling light, made from a bronze dragon's hide. +D:It contains some of the dead beast's powers. + +N:409:& Gold Dragon Scale Mail~ +G:[:y +I:38:16:0 +W:60:0:200:50000 +A:60/8 +P:30:2d4:-2:0:10 +a:HARDCORE=BR_SOUND +F:RES_SOUND | FLY | +F:ACTIVATE | IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +D:A suit of armour with rustling scales, made from a gold dragon's hide. +D:It contains some of the dead beast's powers. + +N:410:& Chaos Dragon Scale Mail~ +G:[:v +I:38:18:0 +W:80:0:200:80000 +A:80/16 +P:30:2d4:-2:0:10 +a:HARDCORE=BR_CHAOS +F:ATTR_MULTI +F:RES_CHAOS | RES_DISEN | FLY | +f:RES_CHAOS | +F:ACTIVATE | IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +D:A suit of armour made of dragon hide. It glows in colours you have never seen before. As you +D:put it on, you feel like you could change the world and are no longer afraid of your equipment +D:losing its magic. + +N:411:& Balance Dragon Scale Mail~ +G:[:v +I:38:20:0 +W:95:0:200:100000 +A:95/32 +P:30:2d4:-2:0:10 +a:HARDCORE=BR_BALANCE +F:RES_CHAOS | RES_DISEN | RES_SOUND | RES_SHARDS | FLY | +F:ACTIVATE | IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +D:A suit of armour made of the hide of a dead dragon. When wearing it, you feel like you +D:understand the principles of law and chaos, and no longer fear either. + +N:412:& Power Dragon Scale Mail~ +G:[:v +I:38:30:0 +W:100:0:250:350000 +A:100/64 +P:40:2d4:-3:0:15 +a:HARDCORE=BR_POWER +F:ATTR_MULTI +F:RES_ACID | RES_FIRE | RES_COLD | RES_ELEC | RES_POIS | FLY | +F:RES_NETHER | RES_NEXUS | RES_CHAOS | RES_LITE | RES_DARK | +F:RES_SHARDS | RES_SOUND | RES_DISEN | RES_CONF | +F:ACTIVATE | IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +D:A suit of armour made of a very thick richly coloured dragonhide. You think you'll never have +D:to fear dragons if you put it on. + +#### PDSM has been restored to (almost) its former glory in Zangband + +N:413:& Dragon Helm~ +G:]:G +I:32:7:0 +W:45:0:50:10000 +A:80/4 +P:8:1d3:0:0:10 +F:IGNORE_ACID | IGNORE_FIRE | IGNORE_ELEC | IGNORE_COLD +D:An iron helmet, covered with a layer of dragonhide. It offers great protection and may grant +D:protection against some dragon's attacks, based on the dragon the hide was taken from. + +N:414:& Dragon Shield~ +G:[:G +I:34:6:0 +W:70:0:100:10000 +A:80/4 +P:8:1d3:0:0:10 +F:IGNORE_ACID | IGNORE_FIRE | IGNORE_ELEC | IGNORE_COLD +D:A large shield, with a dragonskin cover. Depending on which dragon the hide came from, it +D:might grant protection against some sorts of dragon breath. + +##### Extra potions ##### + +N:415:Death +G:!:d +I:71:23:0 +W:55:0:4:0 +A:55/4 +P:0:20d20:0:0:0 +F:FOUNTAIN +D:A potent and very quickly working poison, sometimes utilised by those who wish to end their +D:lives. It is immensely toxic and will seriously hurt you even if you just get some of it on your +D:hands. + +N:416:Ruination +G:!:d +I:71:15:0 +W:40:0:4:0 +A:40/8 +P:0:20d20:0:0:0 +F:FOUNTAIN +D:This wicked potion will seriously damage your abilities beyond the powers of magical +D:restoration. + +N:417:Detonations +G:!:d +I:71:22:0 +W:60:0:4:10000 +A:60/8 +P:0:25d25:0:0:0 +F:FOUNTAIN +D:This bottle is filled with a strange substance which will violently explode if strongly agitated. + +N:418:Augmentation +G:!:d +I:71:55:0 +W:40:0:4:60000 +A:40/16 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This blessed potion will greatly improve all your abilities if they can still be improved. + +N:419:*Healing* +G:!:d +I:71:38:0 +W:40:0:4:1500 +A:40/4:60/2:80/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This highly desirable potion will greatly help recovering from wounds, typically healing you +D:fully. + +N:420:Life +G:!:d +I:71:39:0 +W:60:0:4:5000 +A:60/4:100/2 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This wonderful potion will fully heal you no matter how badly you're hurt, allow drained +D:abilities to recover and remove various other ailments. + +N:421:Self Knowledge +G:!:d +I:71:58:0 +W:40:0:4:2000 +A:40/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:A drink of insight that lets you know yourself better. + +N:422:*Enlightenment* +G:!:d +I:71:57:0 +W:70:0:4:80000 +A:70/4 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This magical concoction will grant you great insight, magically improving your wits and +D:wisdom, letting you know precisely who and where you are and what you possess. + +# XXX +# XXX + +N:425:Fear Resistance +G:=:d +I:45:38:0 +W:10:0:2:300 +A:10/2 +F:RES_FEAR | EASY_KNOW +f:RES_FEAR | +D:This ring grants courage, so that you can never become afraid. + +N:426:Light and Darkness Resistance +G:=:d +I:45:39:0 +W:30:0:2:3000 +A:30/2 +F:RES_LITE | RES_DARK | EASY_KNOW +f:RES_LITE | RES_DARK | +D:This ring protects against fluctuations of the light. + +N:427:Nether Resistance +G:=:d +I:45:40:0 +W:34:0:2:14500 +A:34/2 +F:RES_NETHER | HOLD_LIFE | EASY_KNOW +f:RES_NETHER | +D:This blessed ring improves your life force, protecting you from the draining forces of nether +D:and other attempts to suck your lifeblood. + +N:428:Nexus Resistance +G:=:d +I:45:41:0 +W:24:0:2:3000 +A:24/2 +F:RES_NEXUS | EASY_KNOW +f:RES_NEXUS | +D:This ring of stability protects you from the warping forces of nexus. + +N:429:Sound Resistance +G:=:d +I:45:42:0 +W:26:0:2:3000 +A:26/2 +F:RES_SOUND | EASY_KNOW +f:RES_SOUND | +D:This ring projects an aura of quiet around you, protecting you from loud noise. + +N:430:Confusion Resistance +G:=:d +I:45:43:0 +W:22:0:2:3000 +A:22/2 +F:RES_CONF | EASY_KNOW +f:RES_CONF | +D:This ring stabilises your mind, protecting you from all kinds of befuddlement. + +N:431:Shard Resistance +G:=:d +I:45:44:0 +W:25:0:2:3000 +A:25/2 +F:RES_SHARDS | EASY_KNOW +f:RES_SHARDS | +D:This piece of jewellery magically toughens your skin, protecting you from flying shrapnel. + +N:432:Disenchantment Resistance +G:=:d +I:45:45:0 +W:90:0:2:15000 +A:90/10 +F:RES_DISEN | EASY_KNOW +f:RES_DISEN | +D:This rare ring of preservation protects your equipment from attempts to sap its magic, also +D:causing you to suffer less pain from such attacks. + +N:433:Chaos Resistance +G:=:d +I:45:46:0 +W:50:0:2:13000 +A:50/2 +F:RES_CHAOS | RES_CONF | EASY_KNOW +f:RES_CHAOS | +D:This ring protects you from the horribly warping forces of chaos. + +N:434:Blindness Resistance +G:=:d +I:45:47:0 +W:60:0:2:7500 +A:60/2 +F:RES_BLIND | EASY_KNOW +f:RES_BLIND | +D:This ring magically preserves your eyesight, making you impervious to any attempt to blind +D:you. + +N:435:Arnor +G:=:d +I:45:48:0 +W:100:0:2:100000 +A:100/5 +F:RES_DISEN | RES_POIS | HOLD_LIFE | FREE_ACT +f:RES_DISEN | RES_POIS | HOLD_LIFE | FREE_ACT +D:This blessed ring will protect you from disenchantment, poison, attempts to drain your life +D:force and holding magic. + +N:436:Extra Attacks +G:=:d +I:45:49:0 +W:50:0:2:100000 +A:50/2 +F:BLOWS | ACTIVATE | EASY_USE | +f:BLOWS | ACTIVATE +a:HARDCORE=SPIN +D:This powerful ring of fighters greatly enhances your fighting speed, allowing you to attack +D:more often in a round of combat. + +N:437:Cure Light Wounds +G:!:d +I:71:34:50 +W:0:0:4:15 +A:0/1:1/1:3/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This healthy drink heals a little damage you have taken. + +N:438:Clumsiness +G:!:d +I:71:19:0 +W:5:0:4:0 +A:5/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This nasty concoction will numb your nerves, making you clumsier. + +N:439:Sickliness +G:!:d +I:71:20:0 +W:10:0:4:0 +A:10/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This unhealthy drink damages your health, reducing your physical constitution. + +###### Here start the maps ##### + +# Map of Bree +N:440:Map of Bree +G:?:s +I:8:200:0 +W:3:100:5:100 +A:3/3 +D:A map, showing the town of Bree and the landscape around it. + +# Map of Gondolin +N:441:Map of Gondolin +G:?:s +I:8:201:0 +W:70:100:5:50000 +A:70/3 +D:A map detailing the place of the hidden city of Gondolin. + +# Map of Lothlorien +N:442:Map of Lothlorien +G:?:s +I:8:202:0 +W:6:100:5:1000 +A:6/3 +D:A map vaguely describing the forest of Lothlorien and the elven settlements therein. + +# Map of Minas Anor +N:443:Map of Minas Anor +G:?:s +I:8:203:0 +W:36:100:5:10000 +A:36/3 +D:A map of the great city of Gondor. + +# XXX Numbers 444-464 unused # + +N:465:& Silver Arrow~ +G:{:W +I:17:3:0 +W:55:0:2:35 +A:50/4:90/2 +P:0:3d4:0:0:0 +F:SHOW_MODS | SLAY_EVIL | IGNORE_ACID | IGNORE_FIRE +D:An arrow to be shot with a bow, its iron head coated with hallowed silver, +D:a material that sears the flesh of all evil creatures. + +N:466:& Silver Bolt~ +G:{:w +I:18:3:0 +W:50:0:2:40 +A:60/4:95/2 +P:0:3d5:0:0:0 +F:SHOW_MODS | SLAY_EVIL | IGNORE_ACID | IGNORE_FIRE +D:This crossbow bolt has a silver tip, blessed by the Valar for fighting evil. + +N:468:Wisdom +G:":d +I:40:28:0 +W:30:0:3:500 +A:30/1 +F:WIS | SUST_WIS | HIDE_TYPE +f:WIS | +D:This magical amulet will magically make you wiser, and fend off +D:attacks that would reduce your wisdom. Beware: if cursed, the +D:amulet will do the opposite. + +N:469:Regeneration +G:":d +I:40:30:0 +W:30:0:3:600 +A:30/3 +F:REGEN | EASY_KNOW +f:REGEN | +D:Wearing this amulet will trigger your body's regenerational +D:processes quicker and make them proceed faster. + +N:470:Infravision +G:":d +I:40:26:0 +W:10:0:3:200 +A:10/1 +F:INFRA | HIDE_TYPE +f:INFRA | +D:This amulet will increase your ability to sense warm-blooded +D:creatures in your vicinity. Beware: if cursed, it will do +D:just the opposite. + +N:471:Devotion +G:":d +I:40:25:0 +W:70:0:3:30000 +A:70/8 +F:WIS | CHR | SUST_WIS | SUST_CHR | LITE1 | HIDE_TYPE | +F:RES_DARK | RES_LITE | RES_FIRE | HOLD_LIFE | +D:This blessed amulet will protect your wisdom and charms from +D:diminishing, often adding to them as well. It also grants +D:some extra protective magics by the grace of the Valar. + +N:472:Weaponmastery +G:":d +I:40:24:0 +W:70:0:3:30000 +A:70/8 +F:STR | CON | SUST_STR | SUST_CON | FREE_ACT | HIDE_TYPE | +F:RES_FEAR | RES_DISEN | +D:The ultimate amulet for a warrior, it will grant protection +D:in the face of some evil magics, protect your strength and health, +D:also increasing them. Beware: if cursed, the amulet will +D:sap your strength and health instead. + +N:473:Trickery +G:":d +I:40:23:0 +W:70:0:3:30000 +A:70/8 +F:DEX | SUST_DEX | STEALTH | SPEED | INFRA | HIDE_TYPE | +F:RES_NEXUS | RES_POIS +D:The ultimate amulet for a rogue or assassin, it protects the +D:wearer against some evil magics, granting improvements in +D:the abilities vital to these adventurers. Beware: if cursed, +D:the amulet will do just the opposite. + +N:474:Telepathy +G:":d +I:40:22:0 +W:50:0:3:25000 +A:50/6 +F:ESP_ALL | +f:ESP_ALL | +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +D:This rare and powerful amulet lays bare the minds of monsters +D:before the wearer. + +N:475:Sustenance +G:":d +I:40:21:0 +W:60:0:3:20000 +A:60/4 +F:SUST_STR | SUST_INT | SUST_WIS | SUST_DEX | SUST_CON | SUST_CHR | +F:HOLD_LIFE | SLOW_DIGEST | EASY_KNOW | +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +D:This blessed amulet will make the wearer impervious to evil magics +D:that would sap innate abilities. It also slows down the digestive +D:system, making food less necessary on long journeys. + +# The Palantir of Minas Ithil -- see artifact list + +N:476:& Palantir~ +G:~:y +I:39:107:0 +W:75:0:200:0 +P:0:10d10:0:0:0 +F:INSTA_ART + +# The Elfstone 'Elessar' -- see artifact list + +N:477:& Elfstone~ +G:":g +I:40:19:0 +W:60:0:3:50000 +F:INSTA_ART + +# The Jewel 'Evenstar' -- see artifact list + +N:478:& Jewel~ +G:":w +I:40:20:0 +W:50:0:3:35000 +F:INSTA_ART + +# The Ring of Durin -- see artifact list + +N:479:& Ring~ +G:=:d +I:45:57:0 +W:70:0:2:65000 +F:INSTA_ART | SPECIAL_GENE + +##### And here starts the gold/gems ##### + +N:480:copper +G:$:u +I:100:1:0 +W:1:0:0:3 + +N:481:copper +G:$:u +I:100:2:0 +W:1:0:0:4 + +N:482:copper +G:$:u +I:100:3:0 +W:1:0:0:5 + +N:483:silver +G:$:s +I:100:4:0 +W:1:0:0:6 + +N:484:silver +G:$:s +I:100:5:0 +W:1:0:0:7 + +N:485:silver +G:$:s +I:100:6:0 +W:1:0:0:8 + +N:486:garnets +G:$:r +I:100:7:0 +W:1:0:0:9 + +N:487:garnets +G:$:r +I:100:8:0 +W:1:0:0:10 + +N:488:gold +G:$:y +I:100:9:0 +W:1:0:0:12 + +N:489:gold +G:$:y +I:100:10:0 +W:1:0:0:14 + +N:490:gold +G:$:y +I:100:11:0 +W:1:0:0:16 + +N:491:opals +G:$:W +I:100:12:0 +W:1:0:0:18 + +N:492:sapphires +G:$:b +I:100:13:0 +W:1:0:0:20 + +N:493:rubies +G:$:r +I:100:14:0 +W:1:0:0:24 + +N:494:diamonds +G:$:w +I:100:15:0 +W:1:0:0:28 + +N:495:emeralds +G:$:g +I:100:16:0 +W:1:0:0:32 + +N:496:mithril +G:$:B +I:100:17:0 +W:1:0:0:40 + +N:497:adamantite +G:$:G +I:100:18:0 +W:1:0:0:80 + + +##### Objects 498 and 499 are the "Morgoth Artifacts" ##### + +# These objects, like objects 500 to 511, are never created +# without being turned into artifacts. This simplifies the +# code for "killing the winner monster". + +N:498:& Mighty Hammer~ +G:\:D +I:21:50:0 +W:15:0:200:1000 +P:0:3d9:0:0:0 +F:SHOW_MODS | INSTA_ART | MUST2H | SPECIAL_GENE +f:MUST2H + +N:499:& Massive Iron Crown~ +G:]:D +I:33:50:0 +W:44:0:20:1000 +P:0:1d1:0:0:0 +F:INSTA_ART | SPECIAL_GENE + + +##### Objects 500 to 511 are "Special Artifacts" ##### + +# These objects do not specify "full names" because the artifact name +# is added in "obj-desc.c" based on the artifact index ("i_ptr->name1"). +# +# These objects do specify a "base name", which is used when the object +# is "aware" (always true for lites) +# +# The Lites (and the One Ring) specify "physical colors", which +# over-ride the "flavor" colors, if any. Note that the "One Ring" +# also has a specific check for "unknown" in which it changes its +# name to "a plain gold ring". See "object1.c" +# +# Note that ALL artifacts are given "IGNORE_ACID/ELEC/FIRE/COLD", +# so we do not need to specify that here. +# +# Note that the "INSTA_ART" flag is used to prevent these objects from +# being created without also turning them into artifacts. This flag +# must be specified both here and in the artifact template. +# +# The only reason for having six different "ring" templates and three +# different "amulet" templates is to allow each "special artifact" to +# have a different "color" and "flavor", and also to allow the use of +# special "base names" (such as "Necklace"). + + +# The Phial of Galadriel -- see artifact list + +N:500:& Phial~ +G:~:y +I:39:100:0 +W:20:0:10:10000 +P:0:1d1:0:0:0 +F:INSTA_ART + +# The Star of Elendil -- see artifact list + +N:501:& Star~ +G:~:B +I:39:101:0 +W:30:0:5:25000 +P:0:1d1:0:0:0 +F:INSTA_ART + +# The Arkenstone of Thrain -- see artifact list + +N:502:& Arkenstone~ +G:~:R +I:39:102:0 +W:60:0:5:60000 +P:0:1d1:0:0:0 +F:INSTA_ART + + +# The Amulet of Annatar -- see artifact list + +N:503:& Amulet~ +G:":d +I:40:10:0 +W:70:0:3:90000 +F:INSTA_ART + +# The Amulet of Ingwe -- see artifact list + +N:504:& Amulet~ +G:":d +I:40:11:0 +W:60:0:3:90000 +F:INSTA_ART + +# The Necklace 'Nauglamir' -- see artifact list + +N:505:& Necklace~ +G:":d +I:40:12:0 +W:70:0:3:75000 +F:INSTA_ART + + +# The Ring of Barahir -- see artifact list + +N:506:& Ring~ +G:=:d +I:45:32:0 +W:50:0:2:65000 +F:INSTA_ART + +# The Ring of Tulkas -- see artifact list +# Gone in Theme +#N:507:& Ring~ +#G:=:d +#I:45:33:0 +#W:90:0:2:150000 +#F:INSTA_ART + +# The Ring of Power 'Narya' -- see artifact list + +N:508:& Ring~ +G:=:d +I:45:34:0 +W:80:0:2:100000 +F:INSTA_ART | SPECIAL_GENE + +# The Ring of Power 'Nenya' -- see artifact list + +N:509:& Ring~ +G:=:d +I:45:35:0 +W:90:0:2:200000 +F:INSTA_ART + +# The Ring of Power 'Vilya' -- see artifact list + +N:510:& Ring~ +G:=:d +I:45:36:0 +W:100:0:2:300000 +F:INSTA_ART + +# The Ring of Power 'The One Ring' -- see artifact list + +N:511:& Ring~ +G:=:y +I:45:37:0 +W:110:0:2:5000000 +F:INSTA_ART + + +### Room for new objects added after 511 (Zangband 2.1.0): 512-575 + +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX + +N:520:Reflection +G:":d +I:40:9:0 +W:60:0:3:30000 +A:60/4 +F:REFLECT | EASY_KNOW +f:REFLECT | +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +D:This wondrous amulet will magically make the wearer +D:reflect arrows and bolts launched by adversaries. + +#521 and 522 cannot have EASY_KNOW because they may be cursed + +N:521:Anti-Magic +G:":d +I:40:13:0 +W:40:0:3:30000 +A:40/4 +F:NO_MAGIC +f:NO_MAGIC +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +D:This amulet wards off magic of any kind, good or bad. + +N:522:Anti-Teleportation +G:":d +I:40:14:0 +W:30:0:3:15000 +A:30/4 +F:NO_TELE +f:NO_TELE +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +D:This amulet will prevent the space-time continuum from +D:being disrupted around the wearer. + +#523 cannot have EASY_KNOW because it can get random resistances + +N:523:Resistance +G:":d +I:40:15:0 +W:50:0:3:25000 +A:50/4 +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD +f:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +D:This amulet will make the wearer resist the elements. + +##### New arms ##### + +N:524:& Zweihander~ +G:|:w +I:23:29:0 +W:40:0:280:580 +A:40/3 +P:0:4d6:0:0:0 +F:SHOW_MODS | MUST2H +f:MUST2H +D:This great sword of foreign origin is approximately 6 feet long. The hilt is +D:long enough for even four hands to grip. A mighty weapon for a warrior. + +# Dwarven lantern +N:525:& Dwarven Lantern~ +G:~:b +I:39:3:0 +W:15:0:50:5000 +A:15/2 +P:0:1d1:0:0:0 +F:EASY_KNOW | IGNORE_FIRE | LITE2 +f:LITE2 +D:Made by the Dwarves, this lantern provides light in the +D:darkest recesses of the earth. + +N:526:& Splint Mail~ +G:[:D +I:37:10:0 +W:35:0:250:950 +A:35/1 +P:19:1d4:-2:0:0 +D:A variant of banded mail. The metal strips are applied to the backing of chain, +D:leather, or cloth rather than horizontally. + +# Everburning torch +N:527:& Everburning Torch~ +G:~:R +I:39:2:0 +W:5:0:50:2500 +A:5/1 +P:0:1d1:0:0:0 +F:EASY_KNOW | IGNORE_FIRE | LITE1 +f:LITE1 +D:This enchanted torch never needs to be fuelled. + +N:528:& Trifurcate Spear~ +G:/:o +I:22:26:0 +W:35:0:140:400 +A:35/3 +P:0:2d9:0:0:0 +F:SHOW_MODS +D:This deadly spear's point has three branches, suited for inflicting +D:slightly greater damage per hit than a regular spear. + +N:529:& Three Piece Rod~ +G:\:u +I:21:11:0 +W:20:0:120:350 +A:20/3 +P:0:3d3:0:0:0 +F:SHOW_MODS +D:A descendant of the threshing flail, consisting of three short wooden +D:pieces linked by chain or rope. + +# Feanorian Lamp +N:530:& Feanorian Lamp~ +G:~:B +I:39:4:0 +W:25:0:50:15000 +A:25/3 +P:0:1d1:0:0:0 +F:EASY_KNOW | IGNORE_FIRE | LITE3 +f:LITE3 +D:Made by the descendants of the Noldo craftsman, this lamp +D:contains a part of the flame which burned inside Feanor. + +N:531:& Fur Cloak~ +G:(:W +I:35:3:0 +W:20:0:30:100 +A:20/2:30/2 +P:3:0d0:0:0:0 +F:RES_COLD +D:A coat made from the fur of various wild animals - it is +D:somewhat bulky, but still spacious enough to wear over armour. +D:It is ideal for cold weather conditions. + +N:532:Water Curing +G:!:d +I:72:18:80 +W:0:0:4:0 +A:0/1 +P:0:1d1:0:0:0 +F:SPECIAL_GENE +D:It is a magical component that can purify water. + +N:533:& Hatchet~ +G:/:s +I:24:1:0 +W:10:0:60:120 +A:10/2 +P:0:1d5:0:0:0 +F:SHOW_MODS | COULD2H +f:COULD2H +D:This is a larger version of a throwing axe. It has a single +D:blade with a pick on the reverse, designed for armour piercing. + +##### New armour ##### + +N:535:& Mumak Hide Armour~ +G:(:s +I:36:8:0 +W:15:0:110:400 +A:15/1 +P:8:1d1:-1:0:0 +D:This suit of armour is fashioned from the hide of a dead Mumak, +D:or Oliphaunt. It is tough, leathery, and a bit cumbersome. + +N:536:& Leather Jerkin~ +G:(:U +I:36:12:0 +W:20:0:70:550 +A:20/3 +P:7:1d2:0:0:0 +D:A kind of vest with a colarless neck, made from roughout leather. This +D:is what Middle-earth rangers usually wear on their travels. + +##### New weapons ##### + +N:537:& Sickle~ +G:/:s +I:22:3:0 +W:10:0:70:110 +A:10/3 +P:0:2d3:0:0:0 +F:SHOW_MODS +D:A semicircular blade attached to a short handle, good for chopping +D:things up into pieces. + +# XXX +# XXX +# XXX +# XXX + +N:542:& Club~ +G:\:u +I:21:1:0 +W:0:0:100:3 +A:0/1 +P:0:1d4:0:0:0 +F:SHOW_MODS +D:A stout heavy stick, thicker at one end. Useful for +D:shattering and smashing things. + +N:543:& Broad Spear~ +G:/:w +I:22:7:0 +W:14:0:100:240 +A:14/3 +P:0:1d9:0:0:0 +F:SHOW_MODS +D:It looks like it has just come from the forge. Designed specifically for +D:foot soldiers combatting mounted cavalry, it is too heavy to be effective +D:when thrown. + +N:544:& Khopesh~ +G:|:W +I:23:14:0 +W:10:0:130:190 +A:10/2 +P:0:2d4:0:0:0 +F:SHOW_MODS +D:This sword comes from the regions of Far Harad. The blade is straight +D:for 18 inches, and then it curves for another 2 feet. + +N:545:& Flamberge~ +G:|:W +I:23:26:0 +W:40:0:230:600 +A:40/2 +P:0:3d7:0:0:0 +F:SHOW_MODS | MUST2H +f:MUST2H +D:A large, two-handed sword with a blade that weaves +D:l |