diff options
Diffstat (limited to 'lib')
442 files changed, 126505 insertions, 0 deletions
diff --git a/lib/.gitignore b/lib/.gitignore new file mode 100644 index 00000000..2de989fd --- /dev/null +++ b/lib/.gitignore @@ -0,0 +1,2 @@ +*.raw + diff --git a/lib/apex/delete.me b/lib/apex/delete.me new file mode 100644 index 00000000..2e65efe2 --- /dev/null +++ b/lib/apex/delete.me @@ -0,0 +1 @@ +a
\ No newline at end of file diff --git a/lib/bone/bone001.012 b/lib/bone/bone001.012 new file mode 100644 index 00000000..ee81bc54 --- /dev/null +++ b/lib/bone/bone001.012 @@ -0,0 +1,4 @@ +Truigar +162 +7 +13 diff --git a/lib/bone/bone004.001 b/lib/bone/bone004.001 new file mode 100644 index 00000000..1c6921d6 --- /dev/null +++ b/lib/bone/bone004.001 @@ -0,0 +1,4 @@ +Olorin +13 +21 +10 diff --git a/lib/bone/bone004.002 b/lib/bone/bone004.002 new file mode 100644 index 00000000..0669019f --- /dev/null +++ b/lib/bone/bone004.002 @@ -0,0 +1,4 @@ +Pruirk +108 +12 +24 diff --git a/lib/bone/bone004.003 b/lib/bone/bone004.003 new file mode 100644 index 00000000..93350245 --- /dev/null +++ b/lib/bone/bone004.003 @@ -0,0 +1,4 @@ +Bearn +166 +11 +24 diff --git a/lib/bone/bone004.004 b/lib/bone/bone004.004 new file mode 100644 index 00000000..cbd93dd5 --- /dev/null +++ b/lib/bone/bone004.004 @@ -0,0 +1,4 @@ +Druldo +64 +19 +0 diff --git a/lib/bone/bone004.005 b/lib/bone/bone004.005 new file mode 100644 index 00000000..6231f5bc --- /dev/null +++ b/lib/bone/bone004.005 @@ -0,0 +1,4 @@ +Sook +56 +0 +23 diff --git a/lib/bone/bone004.006 b/lib/bone/bone004.006 new file mode 100644 index 00000000..ae40af60 --- /dev/null +++ b/lib/bone/bone004.006 @@ -0,0 +1,4 @@ +Sook +55 +0 +23 diff --git a/lib/bone/bone004.007 b/lib/bone/bone004.007 new file mode 100644 index 00000000..357c390b --- /dev/null +++ b/lib/bone/bone004.007 @@ -0,0 +1,4 @@ +Sook +45 +0 +23 diff --git a/lib/bone/bone004.008 b/lib/bone/bone004.008 new file mode 100644 index 00000000..1f61a166 --- /dev/null +++ b/lib/bone/bone004.008 @@ -0,0 +1,4 @@ +Sook +44 +0 +23 diff --git a/lib/bone/bone004.009 b/lib/bone/bone004.009 new file mode 100644 index 00000000..f0b57b40 --- /dev/null +++ b/lib/bone/bone004.009 @@ -0,0 +1,4 @@ +Sook +46 +0 +23 diff --git a/lib/bone/bone004.010 b/lib/bone/bone004.010 new file mode 100644 index 00000000..1e215878 --- /dev/null +++ b/lib/bone/bone004.010 @@ -0,0 +1,4 @@ +Luthien +114 +20 +22 diff --git a/lib/cmov/delete.me b/lib/cmov/delete.me new file mode 100644 index 00000000..2e65efe2 --- /dev/null +++ b/lib/cmov/delete.me @@ -0,0 +1 @@ +a
\ No newline at end of file diff --git a/lib/core/auto.lua b/lib/core/auto.lua new file mode 100644 index 00000000..fa2457ff --- /dev/null +++ b/lib/core/auto.lua @@ -0,0 +1,803 @@ +-- 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 == "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, + }, +} + +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 + + -- 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" 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/core/building.lua b/lib/core/building.lua new file mode 100644 index 00000000..8e88888a --- /dev/null +++ b/lib/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/core/crpt_aux.lua b/lib/core/crpt_aux.lua new file mode 100644 index 00000000..e4f16e2a --- /dev/null +++ b/lib/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/core/dungeon.lua b/lib/core/dungeon.lua new file mode 100644 index 00000000..2877838d --- /dev/null +++ b/lib/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/core/gen_idx.lua b/lib/core/gen_idx.lua new file mode 100644 index 00000000..5f3af435 --- /dev/null +++ b/lib/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/core/gods.lua b/lib/core/gods.lua new file mode 100644 index 00000000..77e0aad5 --- /dev/null +++ b/lib/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/core/help.lua b/lib/core/help.lua new file mode 100644 index 00000000..a581fe63 --- /dev/null +++ b/lib/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/core/init.lua b/lib/core/init.lua new file mode 100644 index 00000000..9a9ec1ee --- /dev/null +++ b/lib/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/core/load.lua b/lib/core/load.lua new file mode 100644 index 00000000..9522ec91 --- /dev/null +++ b/lib/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/core/load2.lua b/lib/core/load2.lua new file mode 100644 index 00000000..7ea432e9 --- /dev/null +++ b/lib/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/core/mimc_aux.lua b/lib/core/mimc_aux.lua new file mode 100644 index 00000000..c37a869b --- /dev/null +++ b/lib/core/mimc_aux.lua @@ -0,0 +1,95 @@ +-- 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, TR3_AGGRAVATE, 0, 0, 0, -10) + end, +} diff --git a/lib/core/monsters.lua b/lib/core/monsters.lua new file mode 100644 index 00000000..ca2851a0 --- /dev/null +++ b/lib/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/core/objects.lua b/lib/core/objects.lua new file mode 100644 index 00000000..97320b82 --- /dev/null +++ b/lib/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/core/player.lua b/lib/core/player.lua new file mode 100644 index 00000000..3017d94f --- /dev/null +++ b/lib/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/core/powers.lua b/lib/core/powers.lua new file mode 100644 index 00000000..839a921d --- /dev/null +++ b/lib/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/core/quests.lua b/lib/core/quests.lua new file mode 100644 index 00000000..dfe9db51 --- /dev/null +++ b/lib/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/core/s_aux.lua b/lib/core/s_aux.lua new file mode 100644 index 00000000..abd1269d --- /dev/null +++ b/lib/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/core/stores.lua b/lib/core/stores.lua new file mode 100644 index 00000000..d4a63168 --- /dev/null +++ b/lib/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/core/util.lua b/lib/core/util.lua new file mode 100644 index 00000000..997f1eba --- /dev/null +++ b/lib/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/core/xml.lua b/lib/core/xml.lua new file mode 100644 index 00000000..f1188d51 --- /dev/null +++ b/lib/core/xml.lua @@ -0,0 +1,347 @@ +-- 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 == "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/data/delete.me b/lib/data/delete.me new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/lib/data/delete.me diff --git a/lib/dngn/dun1.14 b/lib/dngn/dun1.14 new file mode 100644 index 00000000..6421e80b --- /dev/null +++ b/lib/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/dngn/dun10.0 b/lib/dngn/dun10.0 new file mode 100644 index 00000000..b89ce05e --- /dev/null +++ b/lib/dngn/dun10.0 @@ -0,0 +1,3 @@ +# Father branch is Mirkwood(1), on level 14 +A:1 +L:14 diff --git a/lib/dngn/dun11.20 b/lib/dngn/dun11.20 new file mode 100644 index 00000000..9cc611d3 --- /dev/null +++ b/lib/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/dngn/dun11.22 b/lib/dngn/dun11.22 new file mode 100644 index 00000000..149e2c33 --- /dev/null +++ b/lib/dngn/dun11.22 @@ -0,0 +1,2 @@ +#I'm downright evil +F:NO_GENO | diff --git a/lib/dngn/dun17.15 b/lib/dngn/dun17.15 new file mode 100644 index 00000000..d08bf5e7 --- /dev/null +++ b/lib/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/dngn/dun18.0 b/lib/dngn/dun18.0 new file mode 100644 index 00000000..da1b6c27 --- /dev/null +++ b/lib/dngn/dun18.0 @@ -0,0 +1,2 @@ +# The level is SAVED in the playername.mz? file +#S:mz0 diff --git a/lib/dngn/dun18.1 b/lib/dngn/dun18.1 new file mode 100644 index 00000000..70f27718 --- /dev/null +++ b/lib/dngn/dun18.1 @@ -0,0 +1,2 @@ +# The level is SAVED in the playername.mz? file +#S:mz1 diff --git a/lib/dngn/dun19.11 b/lib/dngn/dun19.11 new file mode 100644 index 00000000..7fba690d --- /dev/null +++ b/lib/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/dngn/dun2.31 b/lib/dngn/dun2.31 new file mode 100644 index 00000000..dd8669a5 --- /dev/null +++ b/lib/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/dngn/dun22.10 b/lib/dngn/dun22.10 new file mode 100644 index 00000000..e7eb116e --- /dev/null +++ b/lib/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/dngn/dun22.5 b/lib/dngn/dun22.5 new file mode 100644 index 00000000..11d8e51f --- /dev/null +++ b/lib/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/dngn/dun24.0 b/lib/dngn/dun24.0 new file mode 100644 index 00000000..bbb93f85 --- /dev/null +++ b/lib/dngn/dun24.0 @@ -0,0 +1,3 @@ +# Father branch is the Moria(22), on level 10 +A:22 +L:10 diff --git a/lib/dngn/dun29.15 b/lib/dngn/dun29.15 new file mode 100644 index 00000000..4df873b5 --- /dev/null +++ b/lib/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/dngn/dun3.18 b/lib/dngn/dun3.18 new file mode 100644 index 00000000..84c0a74a --- /dev/null +++ b/lib/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/dngn/dun3.28 b/lib/dngn/dun3.28 new file mode 100644 index 00000000..0acd4193 --- /dev/null +++ b/lib/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/dngn/dun3.3 b/lib/dngn/dun3.3 new file mode 100644 index 00000000..710ef5f8 --- /dev/null +++ b/lib/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/dngn/dun5.0 b/lib/dngn/dun5.0 new file mode 100644 index 00000000..48a7bea6 --- /dev/null +++ b/lib/dngn/dun5.0 @@ -0,0 +1,3 @@ +# Father branch is the Mordor, on level 32 +A:2 +L:31 diff --git a/lib/dngn/dun5.14 b/lib/dngn/dun5.14 new file mode 100644 index 00000000..3d7a3080 --- /dev/null +++ b/lib/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/dngn/dun6.0 b/lib/dngn/dun6.0 new file mode 100644 index 00000000..c750ea67 --- /dev/null +++ b/lib/dngn/dun6.0 @@ -0,0 +1,3 @@ +# Father branch is Void(11), on level 20 +A:11 +L:20 diff --git a/lib/edit/a_info.txt b/lib/edit/a_info.txt new file mode 100644 index 00000000..427d5060 --- /dev/null +++ b/lib/edit/a_info.txt @@ -0,0 +1,2889 @@ +# 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 + +# 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. + + +# 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 +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 Carlammas + +N:4:of Carlammas +I:40:10:2 +W:50:10:3:60000 +F:CON | HIDE_TYPE | +F:ACTIVATE | RES_FIRE | +F:INSTA_ART +a:HARDCORE=PROT_EVIL +D:A fiery circle of bronze, with mighty spells to ward off evil. + + +# 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' + +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 +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 Ring of Flare +# (note: pval reduced to 3, otherwise it would probably be preferable +# even to The One Ring!) + +N:7:of Flare +I:45:52:3 +W:50:35:2:75000 +F:STR | CON | CHR | HIDE_TYPE | +F:IM_FIRE | ACTIVATE | SEARCH | +F:ESP_THUNDERLORD | SEE_INVIS | FLY | +F:INSTA_ART +a:HARDCORE=DIM_DOOR +Z:swap position +D:The mighty ring of the Thunderlord Flare that makes the wearer +D:strong and healthy. Once a ring of power, it was +D:given to Flare by Celegorm when he arrived on Middle-earth with a full nest +D:of Thunderlords. + + +# 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 Ring of Tulkas + +N:9:of Tulkas +I:45:33:4 +W:70:50:2:175000 +F:STR | DEX | CON | HIDE_TYPE | +F:ACTIVATE | SPEED | ESP_EVIL | +F:INSTA_ART +a:HARDCORE=TULKAS +D:The treasure of Tulkas, most fleet and wrathful of the Valar. + + +# 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. + + +# This artifact has a low artifact level to prevent it being worthless for +# chars with poor magic skills. + +# The Stone of Lore + +N:15:of Lore +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:A great emerald that fills your mind with images of knowledge and dreadful +D:understanding as you stare into its depths. + + +# The Multi-Hued Dragon Scale Mail 'Razorback' + +N:16:'Razorback' +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, and you feel the raw elemental might of +D:untamed Lightning as you put it on. + + +# The Power Dragon Scale Mail of Eternity +# The ULTIMATE armour + +N:17:of Eternity +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 adamant, 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 Adamantite Plate Mail 'Soulkeeper' + +N:19:'Soulkeeper' +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 adamant, with unconquerable strength to endure evil +D:and disruptive magics, that protects the life force of its wearer as +D:nothing else can. + + +# 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 Thunderlord Coat of Marda + +N:26:of Marda +I:36:16:5 +W:70:3:80:80000 +P:9:0d0:0:0:25 +F:FREE_ACT | RES_BLIND | RES_CONF | RES_FEAR | DRAIN_MANA | +F:REFLECT | RES_NEXUS | SH_FIRE | SUST_INT | SUST_CON | SUST_CHR | +F:ESP_THUNDERLORD | CON | CHR | INT | +F:RES_ACID | RES_ELEC | IM_COLD | RES_COLD | AGGRAVATE | HEAVY_CURSE | +F:CURSED +D:The flying suit of Marda, very powerful armour that protects +D:the wearer from cold. Wonderful as this mighty +D:armour is, beware wearing it, for it has been cursed by a +D:powerful wizard since Marda had it and is said to have gained +D:a couple of undesirable side-effects... + + +# The Thunderlord Coat of Trone + +N:27:of Trone +I:36:16:4 +W:30:3:80:65000 +P:9:0d0:0:0:20 +F:REFLECT | RES_NEXUS | SH_FIRE | FLY | SPECIAL_GENE | +F:STEALTH | ESP_THUNDERLORD | CON | INT | SPEED | +F:RES_ACID | RES_ELEC | IM_FIRE | RES_COLD +D:The flying suit of Trone. It protects the user from fire and +D:imps are said to be less annoying with this on. + + +# 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 Metal Shield of Thorin + +N:30:of Thorin +I:34:3:4 +W:30:6:65:60000 +P:3: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 metal shield is proof against the Element 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 'Colluin' + +N:44:'Colluin' +I:35:1:0 +W:5:45:10:40000 +P:1:0d0:0:0:20 +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_POIS | ACTIVATE | ESP_GOOD +a:HARDCORE=COLLUIN +D:A cape worn by a hero from Valinor, a land utterly beyond the strife +D:of 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 'Paurhach' + +N:54:'Paurhach' +I:31:2:0 +W:10:5:25:15000 +P:2:1d1:0:0:15 +F:RES_FIRE | ACTIVATE | 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. + + +# The Set of Gauntlets 'Paurnimmen' + +N:55:'Paurnimmen' +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. + + +# The Set of Gauntlets 'Pauraegen' + +N:56:'Pauraegen' +I:31:2:0 +W:10:5:25:11000 +P:2:1d1:0:0:15 +F:RES_ELEC | ACTIVATE | SPELL_CONTAIN | WIELD_CAST +a:HARDCORE=BO_ELEC_1 +D:A set of handgear with sparks surrounding it, able to fire +D:bolts of electricity. + + +# The Set of Gauntlets 'Paurnen' + +N:57:'Paurnen' +I:31:2:0 +W:10:5:25:12000 +P:2:1d1:0:0:15 +F:RES_ACID | ACTIVATE | SPELL_CONTAIN | WIELD_CAST +a:HARDCORE=BO_ACID_1 +D:A set of handgear so 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 Dagger 'Angrist' + +N:65:'Angrist' +I:23:4:4 +W:20:80:12:125000 +P:0:2d4:10:15:5 +F:DEX | HIDE_TYPE | STEALTH | SEARCH | BRAND_POIS | +F:SLAY_EVIL | SLAY_TROLL | SLAY_ORC | BRAND_ACID | +F:FREE_ACT | RES_DARK | SUST_DEX | SEE_INVIS | +F:SHOW_MODS +D:Forged from meteoric iron, this long chopping dagger slices through +D:ordinary metal as easily as its title, "Iron Cleaver", suggests. + + +# The Dagger 'Narthanc' + +N:66:'Narthanc' +I:23:4:0 +W:4:100:12:12000 +P:0:1d4:4:6:0 +F:BRAND_FIRE | RES_FIRE | ACTIVATE | SHOW_MODS | LITE1 | LEVELS +a:HARDCORE=BO_FIRE_1 +D:A fiery dagger finely balanced for deadly throws. + + +# The Dagger 'Nimthanc' + +N:67:'Nimthanc' +I:23:4:0 +W:3:100:12:11000 +P:0:1d4:4:6:0 +F:BRAND_COLD | RES_COLD | ACTIVATE | SHOW_MODS | LEVELS +a:HARDCORE=BO_COLD_1 +D:A frosty dagger finely balanced for deadly throws. + + +# The Dagger 'Dethanc' + +N:68:'Dethanc' +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:A dagger covered in sparks and finely balanced 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. + + +# The Broad Sword 'Aeglin' + +N:74:'Aeglin' +I:23:16:4 +W:20:90:150:95000 +P:0:2d5:12:16:0 +F:SEARCH | BLESSED | LITE1 | HIDE_TYPE | +F:BRAND_ELEC | SLAY_ORC | SLAY_GIANT | SLAY_TROLL | RES_FEAR | +F:RES_ELEC | RES_FIRE | RES_BLIND | ESP_ORC | ESP_GIANT | ESP_TROLL | +F:SLOW_DIGEST | SHOW_MODS +D:Like unto Orcrist and Glamdring, and like them long lost, this sword is +D:continually coved in tiny arcs of captive lightning that flash and dance +D:eerily in the globe of light they create. + + +# 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 'Gurthang' + +N:76:'Gurthang' +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: but beware, it will drink the blood of those +D:who wield it eventually. + + +# 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 Katana 'Aglarang' + +N:81:'Aglarang' +I:23:20:5 +W:35:25:50:40000 +P:0:8d4:0:0:0 +F:DEX | TUNNEL | SPEED | HIDE_TYPE | +F:SUST_DEX | SHOW_MODS +F:COULD2H +f:COULD2H +D:An utterly perfect, cleanly chiselled sword, with a edge that effortlessly +D:slices rock and bone, and spells to render the wearer lithe and nimble. It +D:is combat incarnate. + + +# 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. + + +# 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 Small Sword 'Sting' + +N:88:'Sting' +I:23:8:2 +W:20:205:75:100000 +P:0:1d6:7:8:0 +F:STR | DEX | CON | BLOWS | SPEED | LEVELS | +F:ESP_ORC | ESP_UNDEAD | ESP_SPIDER | +F:SLAY_EVIL | SLAY_UNDEAD | SLAY_ORC | SLAY_ANIMAL | LITE1 | +F:FREE_ACT | RES_LITE | SEE_INVIS | SHOW_MODS | +D:"I will give you a name, and I shall call you Sting." The perfect size +D:for Bilbo, and stamped forever by the courage he found in Mirkwood, this +D:sturdy little blade grants the wearer combat prowess and survival +D:abilities they did not know they had. + + +# 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 'Doomcaller' + +N:91:'Doomcaller' +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 'Vorpal Blade' + +N:92:'Vorpal Blade' +I:23:17:2 +W:50:30:150:250000 +P:0:5d5:32:32:0 +F:VORPAL | SLAY_EVIL | WOUNDING +F:FREE_ACT | SEE_INVIS | SLOW_DIGEST | REGEN | SPEED | STR | DEX +D:"One, two! One, two! And through, and through, the vorpal blade +D:went snicker-snack!" + + +# The Beaked Axe of Theoden + +N:93:of Theoden +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 'Aeglos' + +N:97:'Aeglos' +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. + + +# The Spear of Orome + +N:98:of Orome +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 | +F:FEATHER | ESP_GIANT +F:SEE_INVIS | +F:ACTIVATE | BLESSED | SHOW_MODS +a:HARDCORE=STONE_MUD +D:The thrusting spear of wise Orome the Vala, strong against giants of frost, +D:which can melt rock or flesh with ease. + + +# 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 Trident of Wrath + +N:107:of Wrath +I:22:5:2 +W:15:35:300:90000 +P:0:3d8:16:18:0 +F:STR | DEX | HIDE_TYPE | CHAOTIC | DRAIN_MANA | +F:SLAY_EVIL | KILL_UNDEAD | RES_LITE | RES_DARK | SEE_INVIS | +F:BLESSED | SHOW_MODS +F:COULD2H +f:COULD2H +D:A massive triple-pronged spear, so great it normally requires two hands to +D:wield, evoking the spirit of Osse who with it pierced legions of +D:evil and undead. + + +# The Trident of Ulmo + +N:108:of Ulmo +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 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 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 the Dawn + +N:110:of the Dawn +I:23:17:3 +W:40:160:130:250000 +P:0:3d5:20:20:0 +F:ACTIVATE | BRAND_FIRE | FREE_ACT | RES_FIRE | INFRA | LEVELS | +F:SLAY_EVIL | SLAY_DRAGON | SLAY_UNDEAD | SLAY_DEMON | VORPAL | CLONE | +F:CHR | SUST_CHR | RES_FEAR | RES_LITE | RES_BLIND | REGEN | SHOW_MODS +a:HARDCORE=DAWN +D:Forged in the farthest East by a race of mighty spellcasters, this +D:shiny pale sword gleams with the rays of rising sun as you invoke +D:its power of commanding legions of powerful immortal warriors... + + +# 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 'Bloodspike' + +N:114:'Bloodspike' +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 'Firestar' + +N:115:'Firestar' +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 Aule + +N:117:of Aule +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:The wondrous hammer of Aule, creator of the wise Dwarven lords of old. +D:It bears magics of demolishing that no serpent or demon can withstand, and +D:invokes the strength of mountains to ward off the tumult of the elements. + + +# 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 'Deathwreaker' + +N:121:'Deathwreaker' +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. You wield the Fear of Dragons and the Despair +D: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 | +F:HEAVY_CURSE | CURSED | AGGRAVATE | +F:BRAND_FIRE | SLAY_ANIMAL | SLAY_DEMON | RES_FIRE | ESP_SPIDER +F:VORPAL | RES_LITE | LITE1 | REGEN | ESP_DEMON | WOUNDING +F: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 Eternity +# Really powerful for a mage but extremely rare +# The ULTIMATE "weapon" for a Sorceror or a magic class + +N:127:of Eternity +I:6:1:12 +W:127:220:20:9000000 +P:0:1d4:-19:-19:0 +F:INT | CHR | WIS | MANA | SPELL | ACTIVATE | +F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | LUCK | 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 | RES_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 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 Seeker Arrow 'Bullseye' + +N:135:'Bullseye' +I:17:2:0 +W:45:1:2:50000 +P:0:7d4:20:15:0 +F:SLAY_ANIMAL | SLAY_EVIL | SLAY_UNDEAD | KILL_DEMON | +F:SLAY_ORC | SLAY_TROLL | SLAY_GIANT | SLAY_DRAGON | +F:BRAND_ACID | BRAND_ELEC | BRAND_FIRE | BRAND_COLD | BRAND_POIS +D:A powerful arrow that is feared by even the mightiest demons. + + +# The Rounded Pebble 'Travak' + +N:136:'Travak' +I:16:0:0 +W:5:1:2:5000 +P:0:3d6:8:5:0 +F:BRAND_ACID | BRAND_ELEC | BRAND_FIRE | BRAND_COLD | BRAND_POIS +D:A rounded pebble imbued with the powers of the elements. + + +# 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 | WIELD_CAST +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 | WIELD_CAST +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 | WIELD_CAST +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:0: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 | WIELD_CAST +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 | WIELD_CAST +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 | WIELD_CAST +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 | WIELD_CAST +a:HARDCORE=BOROMIR +D:Boromir's horn gives courage and endurance to the wearer, provided he does +D:not wish to travel in secrecy: for it must always sound when its wielder +D:sets forth on a journey. "Loud and clear it sounds in the valleys of the +D:hills... and then let all 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 Eternity +# The ULTIMATE weapon for a warrior class + +N:147:of Eternity +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:-30:0d0:0:0:-20 +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 Eternity +# The ULTIMATE bow for an archer class + +N:152:of Eternity +I:19:24:5 +W:127:220:130:8000000 +P:0:0d0:36:28:0 +F:SEE_INVIS | SLOW_DIGEST | FREE_ACT | SPEED | DEX | CON | FLY | LUCK +F:XTRA_MIGHT | XTRA_SHOTS | IM_ELEC | REFLECT | INVIS | STEALTH | +F:SUST_STR | SUST_INT | SUST_WIS | SUST_DEX | SUST_CON | SUST_CHR | +F:RES_CHAOS | RES_DISEN | RES_CONF | RES_BLIND | INFRA | ESP_ORC | ESP_TROLL | ESP_EVIL | +F:PRECOGNITION | NO_MAGIC | ULTIMATE | SPECIAL_GENE +D:Designed to be used with the Seeker Bolt of Feanor, this Crossbow +D:is perfect against the terrible powers of Morgoth. + + +# 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 'Dragonbane' + +N:154:'Dragonbane' +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 'Limbslicer' + +N:155:'Limbslicer' +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 'Naturebane' + +N:158:'Naturebane' +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 Ice + +N:159:of Ice +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 ### + +### note prices and rarities may have to be adjusted ### + +# The Catapult Trap Set of Ahromarwar + +N:161:of Ahromarwar +I:46:1: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 'Hanisbroner's Surprise' + +N:162:'Hanisbroner's Surprise' +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 'Merlion Karc's Demonbane' + +N:163:'Merlion Karc's Demonbane' +I:46:3: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:2000 +P:0:3d2:6:10:0 +F:STR | DEX | HIDE_TYPE | BLESSED | +F:SLAY_ORC | SLAY_TROLL | RES_FIRE +D:The sword that was broken shall be reforged... + + +# The Steel Helm 'Lebohaum' +# The name comes from a french parody of dungeon dwelling in mp3 +# http://penofchaos.com/warham.htm + +N:165:'Lebohaum' +I:32:6:0 +W:20:15:15:25000 +P:20:0d0:0:0:80 +F:ACTIVATE +a:SPELL=Artifact Lebauhaum +D:With the Helm 'Lebohaum' your head is safe! + + +# The Power Dragon Scale Mail 'Mediator' + +N:166:'Mediator' +I:38:30: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. + + +# 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 | +F:RES_FIRE | RES_ELEC | RES_NETHER | RES_DISEN | HOLD_LIFE | +F:ACTIVATE +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 'Skullcleaver' + +N:177:'Skullcleaver' +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 | +F:RES_NEXUS | RES_BLIND | RES_SOUND | +F:KILL_DRAGON | SLAY_ANIMAL | BRAND_POIS | BRAND_ELEC | +F:ACTIVATE +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. + + +# 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 | ACTIVATE +F: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 Long Sword 'Durandil' +# The name comes from a french parody of dungeon dwelling in mp3 +# http://penofchaos.com/warham.htm +N:184:'Durandil' +I:23:17:3 +W:5:10:130:500 +P:0:2d5:5:6:0 +F:RES_FEAR | LUCK +F:ACTIVATE | SHOW_MODS +a:SPELL=Artifact Durandil +D:Don't go adventuring without your Durandil sword! + + +# The Phial of Undeath + +N:200:of Undeath +I:39:103:-5 +W:20:10:10:0 +P:0:1d1:0:0:0 +F:CURSED | INT | WIS | CON | DEX | CHR | STR | ACTIVATE | +F:LITE3 | LITE2 | LUCK | MAGIC_BREATH +F:INSTA_ART | DG_CURSE | ESP_UNDEAD | +a:HARDCORE=UNDEATH +D:It appears like the Phial of Galadriel at first - but wait! It +D:is a cursed phial created by an evil wizard to lure adventurers +D:into wielding it unknowingly. + + +# 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 of Phasing + +N:203:of Phasing +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 'Toris Mejistos' + +N:204:'Toris Mejistos' +I:40:18:2 +W:50:10:3:60000 +Z:restore life +F:INT | WIS | HIDE_TYPE | MANA | LUCK +F:SUST_INT | SUST_WIS | LITE1 | REGEN +F:SLOW_DIGEST | AUTO_CURSE | HEAVY_CURSE +F:ESP_GOOD | ESP_EVIL | HOLD_LIFE +F:INSTA_ART | SPECIAL_GENE | WATER_BREATH +F:SPELL_CONTAIN | WIELD_CAST +D:A blue stone, with an incredible number of incredibly small runes of power +D:on it. It carries many secrets. + + +# 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 (be warned - it's *cursed*!) + +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. + + +# some artifact bolts +# The Silver Bolt 'Balefire' + +N:209:'Balefire' +I:18:3:0 +W:55:30:2:50000 +P:0:6d5:20:15:0 +F:ESP_DEMON | ESP_UNDEAD | LITE1 | +F:BRAND_FIRE | KILL_DEMON | KILL_UNDEAD | +D:This silver-tipped bolt, ablaze with undying celestial fire, +D:is especially potent against undead and creatures of the +D:netherworld; it even points the way to places where such +D:enemies lurk. + + +# The Silver Bolt 'Stone-biter' + +N:210:'Stone-biter' +I:18:3:3 +W:55:30:2:50000 +P:0:6d5:20:15:0 +F:ESP_ORC | ESP_TROLL | +F:INFRA | SEARCH | TUNNEL | LUCK +F:BRAND_ACID | SLAY_ORC | SLAY_TROLL | +D:Wherever it strikes, this silver-tipped bolt eats through rock +D:and metal as easily as through flesh. The dwarf-smith who +D:crafted Stone-biter also inscribed the shaft with powerful +D:doom-spells against the orcs and trolls who had destroyed his +D:ancestral home. + + +# The Seeker Bolt 'Heart's Blood' + +N:211:'Heart's Blood' +I:18:2:5 +W:85:40:3:35000 +P:0:8d5:15:20:0 +F:VORPAL | WOUNDING | CRIT | +D:The barbed head of this bolt glows deep red with terrible runes +D:of destruction; legend has it that Heart's Blood cannot hit its +D:mark without causing a mortal wound. + + +# The Seeker Bolt 'Scale-piercer' + +N:212:'Scale-piercer' +I:18:2:0 +W:85:40:3:35000 +P:0:8d5:15:20:0 +F:ESP_DRAGON | RES_FEAR | +F:KILL_DRAGON | +D:This bolt, crafted from the bones of a Great Wyrm, is less famous +D:and less powerful than Bard's black arrow. Nonetheless it enables +D:the owner to find dragons unerringly, face them bravely, and kill +D:them swiftly. + + +# Artifacts from ToME 3.0.0 for the new maps of Lord Dimwit +# The pval was set to the average of the flag values. + + +# 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 | SPECIAL_GENE +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 +F:SPECIAL_GENE +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:300:400:91000 +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 | SPECIAL_GENE +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 | SPECIAL_GENE +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. diff --git a/lib/edit/ab_info.txt b/lib/edit/ab_info.txt new file mode 100644 index 00000000..7b9aa152 --- /dev/null +++ b/lib/edit/ab_info.txt @@ -0,0 +1,118 @@ +# 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:7:Artifact Creation +D:In combination with a high alchemy skill this ability will let you +D:design your very own artifacts +D:Prereq: Alchemy@40, INT@35, WIS@35 +I:70 +k:40:Alchemy +S:35:INT +S:35:WIS + +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/edit/al_info.txt b/lib/edit/al_info.txt new file mode 100644 index 00000000..fbd4c9a0 --- /dev/null +++ b/lib/edit/al_info.txt @@ -0,0 +1,2097 @@ +# 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 + +# Do not modify this file unless you know exactly what you are doing, +# unless you wish to risk possible system crashes. + +# Version stamp (required) + +V:2.0.0 + + +#Note: when you add anything to this file, you also need to change the M:a +#line of misc.txt. Unlike other files, there is no 'count' entry. The +#easiest and fastest way to find out what to say in misc.txt is: +# +# grep '^[Ia]:' <al.txt | wc -l +# you need to add one to the result of the above statement. +# +# Which only works on unix systems. But if you have the misfortune not to +#be working on a unix system, you can use an editor and to a global search +#and replace, searching for I: and then for a:, which will give you a count +#that's a few high, but will still work. + + +#Format: There's only one kind of line here, and that's the +# Item line. Goes like this: + + +# I:tval:sval:Qty:essence +# +# The problem here is that it doesn't matter what order things are in. +# Since the tval and sval are specified on each line, the lines that +# describe a particular recipe for a particular item don't have to be +# anywhere even close to each other in the file. This could cause a problem: +# if the same item has two different entries for the same essence, it will +# find one, assume that the player has enough, and display that one in green. +# But when the player goes to make it, they may not have enough. It would also +# cause weird recipe displays, with one essence listed twice. Funny-looking + + + +# Some special tvals: +# 0 Not a tval, used internally by the parser to store the artifact flag essences. +# We don't currently have any mechanism to control which tvals flags are used on. +# 1 Not actually a tval, used for ego items, in which case the 'sval' is the e_idx +# We don't need tvals or svals for ego items, because that information is +# contained in the e_info record, which the e_idx points us to. +# +# 40 Amulet +# 45 ring +# 55 staff +# 65 wand +# 66 rod tip +# 70 scroll +# 71 potion +# 40 Amulet +# 45 ring +# 55 staff +# 65 wand +# 66 rod tip +# 70 scroll +# 71 potion +# 72 potion2 +# 80 Food ('shrooms, etc) + +# I:tval:sval:Qty:essence + +#**********************Mushrooms*********************** + +#SV_FOOD_POISON 0 +I:80:0:1:LIFE +I:80:0:8:POISON + +#SV_FOOD_BLINDNESS 1 +I:80:1:1:LIFE +I:80:1:6:DARKNESS +I:80:1:2:LITE + +#SV_FOOD_PARANOIA 2 +I:80:2:1:LIFE +I:80:2:4:KNOWLEDGE +I:80:2:4:CONFUSION + +#SV_FOOD_CONFUSION 3 +I:80:3:1:LIFE +I:80:3:8:CONFUSION + +#SV_FOOD_HALLUCINATION 4 +I:80:4:1:LIFE +I:80:4:4:CONFUSION +I:80:4:4:MANA +I:80:4:4:TELEPORT + +#SV_FOOD_PARALYSIS 5 +I:80:5:1:LIFE +I:80:5:8:FORCE + +#SV_FOOD_WEAKNESS 6 +I:80:6:1:LIFE +I:80:6:4:POISON +I:80:6:4:FORCE + +#SV_FOOD_SICKNESS 7 +I:80:7:8:LIFE +I:80:7:1:POISON + +#SV_FOOD_STUPIDITY 8 +I:80:8:1:LIFE +I:80:8:1:MANA +I:80:8:8:KNOWLEDGE + +#SV_FOOD_NAIVETY 9 +I:80:9:1:LIFE +I:80:9:1:MANA +I:80:9:4:CONFUSION +I:80:9:4:KNOWLEDGE + +#SV_FOOD_UNHEALTH 10 +I:80:10:8:LIFE +I:80:10:1:FORCE +I:80:10:1:POISON + +#SV_FOOD_DISEASE 11 +I:80:11:1:LIFE +I:80:11:1:TIME +I:80:11:8:POISON + +#SV_FOOD_CURE_POISON 12 +I:80:12:1:LIFE +I:80:12:8:POISON + +#SV_FOOD_CURE_BLINDNESS 13 +I:80:13:1:LIFE +I:80:13:6:LITE +I:80:13:2:DARKNESS + +#SV_FOOD_CURE_PARANOIA 14 +I:80:14:1:LIFE +I:80:14:1:TIME + +#SV_FOOD_CURE_CONFUSION 15 +I:80:15:1:LIFE +I:80:15:12:KNOWLEDGE + +#SV_FOOD_CURE_SERIOUS 16 +I:80:16:8:LIFE + +#SV_FOOD_RESTORE_STR 17 +I:80:17:20:LIFE +I:80:17:2:TIME + +#SV_FOOD_RESTORE_CON 18 +I:80:18:20:LIFE +I:80:18:2:TIME + +#SV_FOOD_RESTORING 19 +I:80:19:40:LIFE +I:80:19:4:TIME + +#/* many missing mushrooms */ +#Note - the comment below appears on the list in defines.h, but I can't find +#any more mushrooms in k_info.txt + +#define SV_FOOD_BISCUIT 32 +#define SV_FOOD_JERKY 33 +#define SV_FOOD_RATION 35 +#define SV_FOOD_SLIME_MOLD 36 +#define SV_FOOD_WAYBREAD 37 +#define SV_FOOD_PINT_OF_ALE 38 +#define SV_FOOD_PINT_OF_WINE 39 +#define SV_FOOD_ATHELAS 40 +#define SV_FOOD_GREAT_HEALTH 41 +#define SV_FOOD_FORTUNE_COOKIE 42 + + + +#***************************Artifact Flags************************************ +# +#A:Group:tval:sval:pval:pval?:level:xp +# The first three describe the required item, they can be left unspecified +# for no object, or specify starting with tval for increasingly specific +# objects. +# Note: pval? is boolean (0 or 1) if true, then this flag has a +# variable effect, and we should require more experience and times for +# increasing pvals. +# Note:for tval=TV_CORPSE, sval=corpse type, pval=monster idx, +# or use f:moster_race_flags, or leave all blank for any corpse at all. +#F:object flag to be set +#D:Description of flag +#x:Description of activation (instead of description of flag, see below) +#d:Description of required item +#p:Description of required item (plural, optional. Illegal if pval != 1) +#a:qty:object_flag_to_be_set Essence_name (not used) + +# Note that like I: lines, a: lines can be anywhere and in any order. +# Note: 'flag' is the flag name from a_info.txt, +# 'monster_race_flag' is from r_info.txt + +#The group numbers are 1-5, and the descriptions of the groups +#are hard coded. see cmd7.c + + +A:1:45:24:1:1:40:5000 +F:STR +D:Add to Strength +d:Ring of Strength +p:Rings of Strength + +A:1:45:25:1:1:43:5000 +F:INT +D:Add to Intelligence +d:Ring of Intelligence +p:Rings of Intelligence + +A:1:40:28:1:1:46:5000 +F:WIS +D:Add to Wisdom +d:Amulet of Wisdom +p:Amulets of Wisdom + +A:1:45:26:1:1:46:5000 +F:DEX +D:Add to Dexterity +d:Ring of Dexterity +p:Rings of Dexterity + +A:1:45:27:1:1:42:5000 +F:CON +D:Add to Constitution +d:Ring of Constitution +p:Rings of Constitution + +A:1:40:2:0:1:30:5000 +F:CHR +D:Add to Charisma +d:Amulet of Adornment +p:Amulets of Adornment + +A:1:45:10:0:0:32:1000 +F:SUST_STR +D:Sustain Strength +d:Ring of Sustain Strength + +A:1:45:11:0:0:34:1000 +F:SUST_INT +D:Sustain Intelligence +d:Ring of Sustain Intelligence + +A:1:45:12:0:0:28:1000 +F:SUST_WIS +D:Sustain Wisdom +d:Ring of Sustain Wisdom + +A:1:45:14:0:0:36:1000 +F:SUST_DEX +D:Sustain Dexterity +d:Ring of Sustain Dexterity + +A:1:45:13:0:0:36:1000 +F:SUST_CON +D:Sustain Constitution +d:Ring of Sustain Constitution + +A:1:45:15:0:0:25:1000 +F:SUST_CHR +D:Sustain Charisma +d:Ring of Sustain Charisma + +A:1:45:31:1:1:40:50000 +F:SPEED +D:Speed +d:Ring of Speed +p:Rings of Speed + +A:1:45:49:1:1:38:150000 +F:BLOWS +D:Extra Attacks +d:Ring of Extra Attacks +p:Rings of Extra Attacks + +A:1:30:2:0:1:32:5000 +F:STEALTH +D:Stealthy +d:Left Insole from a Used Soft Boot +p:Left Insoles from Used Soft Boots + +A:1:36:1:0:1:29:2000 +F:SEARCH +D:Adds to Searching +d:Filthy Rag +p:Filthy Rags + +A:1:39:1:0:1:6:1000 +F:INFRA +D:Helps Infravision +d:Brass Lantern +p:Brass Lanterns + +A:1:9:-1:5:1:30:1000 +F:LUCK +D:Lucky +d:Rabbit's Left Forefoot +p:Rabbit's Left Forefeet + +A:1:20:4:0:1:25:30000 +F:TUNNEL +D:Aids in digging +d:Pick +p:Picks + +A:1:9:1:0:1:40:50000 +F:LIFE +f:TROLL +D:Multiplies Life +d:Troll's Heart +p:Troll's Hearts + +A:2:71:8:0:0:20:15000 +F:INVIS +D:Invisibility +d:Potion of Invisibility + +A:2:71:8:0:0:20:4000 +F:SEE_INVIS +D:See Invisible +d:Potion of Invisibility + +A:2:5:0:0:0:20:30000 +F:FREE_ACT +D:Free Action +d:Iron Spike + +A:2:34:5:0:0:38:90000 +F:REFLECT +D:Reflection +d:Large Metal Shield + +A:2:9:1:644:0:20:30000 +F:SH_FIRE +D:Aura of Fire +d:Lungs from an Ancient Red Dragon + +A:2:9:1:601:0:25:30000 +F:SH_ELEC +D:Aura of Lightning +d:Lungs from an Ancient Blue Dragon + +A:2:39:2:0:0:8:1000 +F:LITE1 +D:Light +d:Everburning Torch + +A:2:39:3:0:0:20:10000 +F:LITE2 +D:Bright Light +d:Dwarven Lantern + +A:2:39:4:0:0:40:100000 +F:LITE3 +D:Sunlight +d:Feanorian Lamp + +A:2:38:-1:0:0:40:200000 +F:FLY +D:Flight +d:Suit of Dragon Armour (any colour) + +A:2:9:-1:862:0:50:10000000 +F:AUTO_ID +D:Automatically IDs +d:Morgoth's Testicles + +A:2:40:14:0:0:29:2000 +F:NO_TELE +D:Anti-Teleportation +d:Teleport Inhibiting Amulet + +A:2:40:13:0:0:34:2000 +F:NO_MAGIC +D:Anti-Magic +d:Magic Inhibiting Amulet + +A:2:71:62:0:0:50:100000 +F:WRAITH +D:Wraith Form +d:Potion of Invulnerability + +A:2:71:33:0:0:15:1000 +F:FEATHER +D:Levitation +d:Potion of Berserk Strength + +A:2:80:37:0:0:20:10000 +F:SLOW_DIGEST +D:Slow Digestion +d:Lembas Wafer + +A:2:80:10:0:0:32:20000 +F:REGEN +D:Regenerate +d:Mushroom of Unhealth + +A:2:80:3:0:0:12:20000 +F:TELEPORT +D:Teleport +d:Mushroom of Confusion + +A:3:21:2:0:1:30:20000 +F:CRIT +D:Extra Critical Hits +d:Whip +p:Whips + +A:3:23:30:0:0:30:30000 +F:WOUNDING +D:Wounds Monsters +d:Blade of Chaos + +A:3:66:18:0:1:26:6000 +F:VAMPIRIC +D:Vampiric +d:Rod Tip of Drain Life + +A:3:9:1:0:0:16:2000 +F:SLAY_ANIMAL +f:ANIMAL +D:Slay Animal +d:Dead Animal's Body + +A:3:9:-1:0:0:25:2000 +F:SLAY_EVIL +f:EVIL +D:Slay Evil +d:Evil Dead Thing's Remains + +A:3:9:-1:0:0:30:2000 +F:SLAY_UNDEAD +f:UNDEAD +D:Slay Undead +d:Remains of Undead Monster + +A:3:9:1:0:0:40:1500 +F:SLAY_DEMON +f:DEMON +D:Slay Demon +d:Demon's Corpse + +A:3:9:1:0:0:10:700 +F:SLAY_ORC +f:ORC +D:Slay Orc +d:Dead Orc + +A:3:9:1:0:0:16:700 +F:SLAY_TROLL +f:TROLL +D:Slay Troll +d:Dead Troll + +A:3:9:1:0:0:25:900 +F:SLAY_GIANT +f:GIANT +D:Slay Giant +d:Dead Giant + +A:3:9:1:0:0:33:2000 +F:SLAY_DRAGON +f:DRAGON +D:Slay Dragon +d:Dead Dragon (any size will do) + +A:3:9:-1:593:0:41:5000 +F:KILL_DRAGON +D:*Slay* Dragon +d:Mature Multi-Hued Dragon's Remains + +A:3:9:-1:0:0:41:90000 +F:KILL_UNDEAD +f:S_HI_UNDEAD +D:*Slay* Undead +d:Dead Summoner of Greater Undead + +A:3:9:-1:996:0:41:90000 +F:KILL_DEMON +D:*Slay* Demon +d:Lesser Balrog's Corpse + +A:3:0:0:0:0:36:20000 +F:VORPAL +D:Vorpal + +A:3:0:0:0:0:40:90000 +F:IMPACT +D:Earthquakes + +A:3:0:0:0:0:3:2000 +F:BRAND_POIS +D:Poison Brand + +A:3:0:0:0:0:12:2000 +F:BRAND_ACID +D:Acid Brand + +A:3:0:0:0:0:10:2000 +F:BRAND_ELEC +D:Lightning Brand + +A:3:0:0:0:0:6:2000 +F:BRAND_FIRE +D:Fire Brand + +A:3:0:0:0:0:8:2000 +F:BRAND_COLD +D:Frost Brand + +A:3:0:0:0:1:30:3000 +F:XTRA_MIGHT +D:Extra Might (Bows Only) + +A:3:0:0:0:1:35:3000 +F:XTRA_SHOTS +D:Extra Shots (Bows Only) + +A:4:9:1:624:0:49:500000 +F:IM_ACID +D:Immune to Acid +d:Ancient Black Dragon's Foreskin + +A:4:9:1:601:0:50:500000 +F:IM_ELEC +D:Immune to Lightning +d:Ancient Blue Dragon's Foreskin + +A:4:9:1:644:0:49:500000 +F:IM_FIRE +D:Immune to Fire +d:Ancient Red Dragon's Foreskin + +A:4:9:1:617:0:50:500000 +F:IM_COLD +D:Immune to Cold +d:Ancient White Dragon's Foreskin + +A:4:40:8:0:0:30:30000 +F:HOLD_LIFE +D:Hold Life +d:Amulet of the Magi + +A:4:45:17:0:0:12:10000 +F:RES_ACID +D:Resist Acid +d:Ring of Acid + +A:4:45:56:0:0:15:10000 +F:RES_ELEC +D:Resist Lightning +d:Ring of Lightning + +A:4:71:30:0:0:13:10000 +F:RES_FIRE +D:Resist Fire +d:Potion of Resist Heat + +A:4:71:31:0:0:14:10000 +F:RES_COLD +D:Resist Cold +d:Potion of Resist Cold + +A:4:71:27:0:0:25:30000 +F:RES_POIS +D:Resist Poison +d:Potion of Cure Poison + +A:4:45:38:0:0:26:10000 +F:RES_FEAR +D:Resist Fear +d:Ring of Fear Resistance + +A:4:45:39:0:0:31:60000 +F:RES_LITE +D:Resist Light +d:Ring of Light and Darkness Resistance + +A:4:45:39:0:0:31:60000 +F:RES_DARK +D:Resist Darkness +d:Ring of Light and Darkness Resistance + +A:4:45:47:0:0:30:30000 +F:RES_BLIND +D:Resist Blindness +d:Ring of Blindness Resistance + +A:4:45:43:0:0:30:30000 +F:RES_CONF +D:Resist Confusion +d:Ring of Confusion Resistance + +A:4:45:42:0:0:30:60000 +F:RES_SOUND +D:Resist Sound +d:Ring of Sound Resistance + +A:4:45:44:0:0:30:60000 +F:RES_SHARDS +D:Resist Shards +d:Ring of Shard Resistance + +A:4:45:40:0:0:30:60000 +F:RES_NETHER +D:Resist Nether +d:Ring of Nether Resistance + +A:4:45:41:0:0:30:60000 +F:RES_NEXUS +D:Resist Nexus +d:Ring of Nexus Resistance + +A:4:45:46:0:0:30:60000 +F:RES_CHAOS +D:Resist Chaos +d:Ring of Chaos Resistance + +A:4:45:45:0:0:30:60000 +F:RES_DISEN +D:Resist Disenchantment +d:Ring of Disenchantment Resistance + +A:5:9:1:0:0:50:-100000 +F:TEMPORARY +D:Temporary Item +d:Corpse, any corpse + +A:5:36:1:0:0:10:-2000 +F:AUTO_CURSE +D:Self-Cursing +d:Filthy Rag + +A:5:80:40:0:0:45:-10000 +F:BLACK_BREATH +D:Causes the Black Breath +d:Sprig of Athelas + +A:5:70:15:0:0:40:-5000 +F:TY_CURSE +D:Ancient Curse +d:Scroll of *Remove Curse* + +A:5:0:0:0:0:40:-5000 +F:DRAIN_EXP +D:Drains your Experience + +A:5:0:0:0:0:30:-5000 +F:AGGRAVATE +D:Aggravates Monsters + +A:5:70:14:0:0:30:-500 +F:CURSED +D:Curse +d:Scroll of Remove Curse + +#Removed for balance - allows you to trade two essences of extra life, +# and 25+ magic essence for 10000xp on your artifact, which isn't +# anything to sneeze at. Curse, above, has the same problem, but +# for 1000xp, I figure it's a fair trade. +#A:5:70:15:0:0:40:-10000 +#D:Heavy Curse +#F:HEAVY_CURSE +#d:Scroll of *Remove Curse* + +A:5:0:0:0:0:50:-5000 +F:PERMA_CURSE +D:Permanently Cursed + +A:5:0:0:0:0:35:-2000 +F:CURSE_NO_DROP +D:Can't be Dropped + +A:5:0:0:0:0:45:-5000 +F:DRAIN_HP +D:Drains your Hit Points + +A:5:0:0:0:0:20:-50000 +F:IMMOVABLE +D:Wielder Can't Move + +#/* Floating eye corpse for esp all :) other ESP's don't require anything at all...*/ +A:5:9:1:32:0:40:20000 +F:ESP_ALL +D:Telepathy +d:Formerly Floating Eye + +A:5:0:0:0:0:25:3000 +F:ESP_ORC +D:Sense Orcs + +A:5:0:0:0:0:25:3000 +F:ESP_TROLL +D:Sense Trolls + +A:5:0:0:0:0:25:5000 +F:ESP_DRAGON +D:Sense Dragons + +A:5:0:0:0:0:25:5000 +F:ESP_GIANT +D:Sense Giants + +A:5:0:0:0:0:25:5000 +F:ESP_DEMON +D:Sense Demons + +A:5:0:0:0:0:25:5000 +F:ESP_UNDEAD +D:Sense Undead + +A:5:0:0:0:0:25:5000 +F:ESP_EVIL +D:Sense Evil + +A:5:0:0:0:0:25:5000 +F:ESP_ANIMAL +D:Sense Animals + +A:5:0:0:0:0:25:5000 +F:ESP_THUNDERLORD +D:Sense Thunderlords + +A:5:0:0:0:0:25:5000 +F:ESP_GOOD +D:Sense Good + +A:5:0:0:0:0:25:5000 +F:ESP_NONLIVING +D:Sense Nonliving + +A:5:0:0:0:0:25:5000 +F:ESP_UNIQUE +D:Sense Unique Monsters + +A:5:0:0:0:0:25:2000 +F:ESP_SPIDER +D:Sense Spiders + + +#***************************Activations for artifacts*********************** +# Activations follow all of the rules for artifact flags. +# except: group number and pval are IGNORED +# They MUST come after ALL artifact flags in this file!!! +# There is no way (currently) to require essences... +# +# They use a LOWER CASE x: instead of the F: object flag +# +# all ACT_ constants are supported, anything else must be coded into init1.c +# Internally, they are assigned the magic group number of '88' +# and a NEGATIVE flag number (which is the activation number) +# Note that although you can use the p: to give activations a plural +# item description, it will never be used, because pval is forced to 0. +# +#A:<îgnored>:tval:sval:<ignored>:<ignored>:level:xp +# tval and sval describe the required item, they can be left unspecified +# for no object, or specify starting with tval for increasingly specific +# objects. +#F:object flag to be set +#D:Description of flag +#x:Description of activation (instead of description of flag) +#d:Description of required item +#p:Description of required item (plural, not used for activations) +#a:qty:object_flag_to_be_set Essence_name + +#define ACT_PET_SUMMON 150 +#define ACT_CURE_PARA 151 +#define ACT_CURE_HALLU 152 +#define ACT_CURE_POIS 153 +#define ACT_CURE_HUNGER 154 +#define ACT_CURE_STUN 155 +#define ACT_CURE_CUTS 156 +#define ACT_CURE_FEAR 157 +#define ACT_CURE_CONF 158 +#define ACT_CURE_BLIND 159 +#define ACT_CURING 160 +#define ACT_ACQUIREMENT 163 +#define ACT_MUT 166 +#define ACT_CURE_INSANITY 167 +#define ACT_CURE_MUT 168 +#define ACT_REST_LIFE 84 +#define ACT_REST_ALL 85 +#define ACT_CURE_LW 81 +#define ACT_CURE_MW 82 +#define ACT_CURE_POISON 83 +#define ACT_CURE_700 86 +#define ACT_CURE_1000 87 + +#define ACT_LIGHT 111 + +#define ACT_SUNLIGHT 1 +A:0:70:15:0:0:40:40000 +x:SUNLIGHT +D:Sunlight +d:Brass Lantern + +#define ACT_MAP_LIGHT 112 +#define ACT_DETECT_ALL 113 +#define ACT_DETECT_XTRA 114 +#define ACT_ID_FULL 115 +#define ACT_ID_PLAIN 116 + +#define ACT_GROW_MOLD 197 + + +#define ACT_BO_MISS_1 2 +A:0:0:0:0:0:20:4000 +x:BO_MISS_1 +D:Magic Missile (1) + +#define ACT_BO_MISS_2 15 +A:0:0:0:0:0:30:300000 +x:BO_MISS_2 +D:Magic Missile (2) + +#define ACT_BA_MISS_3 24 +A:0:0:0:0:0:40:400000 +x:BA_MISS_3 +D:Ball of Missiles + +#define ACT_BO_ELEC_1 4 +A:0:0:0:0:0:30:300000 +x:BO_ELEC_1 +D:Bolt of Lightning + +#define ACT_BA_ELEC_2 12 +A:0:0:0:0:0:30:300000 +x:BA_ELEC_2 +D:Ball of Lightning + +#define ACT_BA_ELEC_3 18 +A:0:0:0:0:0:35:350000 +x:BA_ELEC_3 +D:Ball of Lightning(2) + +#define ACT_BA_ELEC_H 172 +A:0:0:0:0:0:40:400000 +x:BA_ELEC_H +D:Ball of Lightning(3) + +#define ACT_BA_ELEC_4 183 +A:0:0:0:0:0:40:400000 +x:BA_ELEC_4 +D:Ball of Lightning(4) + +#define ACT_BR_ELEC 184 +A:0:0:0:0:0:45:450000 +x:BR_ELEC +D:Breathe Lightning + +#define ACT_BO_ACID_1 5 +#define ACT_BA_COLD_1 8 +#define ACT_BA_ACID_H 173 +#define ACT_BA_ACID_4 182 +#define ACT_BR_ACID 187 +#define ACT_BO_COLD_1 6 +#define ACT_BA_COLD_2 11 +#define ACT_BA_COLD_3 17 +#define ACT_BA_COLD_H 171 +#define ACT_BA_COLD_4 180 +#define ACT_BR_COLD 185 +#define ACT_BO_FIRE_1 7 +#define ACT_BA_FIRE_1 9 +#define ACT_BA_FIRE_2 16 +#define ACT_BA_FIRE_H 170 +#define ACT_BA_FIRE_4 181 +#define ACT_BR_FIRE 186 +#define ACT_BA_POIS_1 3 +#define ACT_BA_POIS_4 179 +#define ACT_BR_POIS 188 +#define ACT_BR_MANY 189 +#define ACT_BR_CONF 190 +#define ACT_BR_SOUND 191 +#define ACT_BR_CHAOS 192 +#define ACT_BR_SHARD 193 +#define ACT_BR_BALANCE 194 +#define ACT_BR_LIGHT 195 +#define ACT_BR_POWER 196 +#define ACT_ROCKET 22 +A:0:0:0:0:0:50:40000 +x:ROCKET +D:Fire a Rocket + +#define ACT_JUMP 177 +#define ACT_WHIRLWIND 19 +#define ACT_CALL_CHAOS 21 +#define ACT_DISP_EVIL 23 +#define ACT_DISP_GOOD 25 +#define ACT_DAWN 61 +#define ACT_CHARM_ANIMAL 65 +#define ACT_CHARM_UNDEAD 66 +#define ACT_CHARM_OTHER 67 +#define ACT_CHARM_ANIMALS 68 +#define ACT_CHARM_OTHERS 69 +#define ACT_SUMMON_ANIMAL 70 +#define ACT_SUMMON_PHANTOM 71 +#define ACT_SUMMON_ELEMENTAL 72 +#define ACT_SUMMON_DEMON 73 +#define ACT_SUMMON_UNDEAD 74 +#define ACT_RUNE_EXPLO 117 +#define ACT_RUNE_PROT 118 +#define ACT_SATIATE 119 +#define ACT_DEST_DOOR 120 +#define ACT_STONE_MUD 121 +#define ACT_RECHARGE 122 +#define ACT_ALCHEMY 123 +#define ACT_DIM_DOOR 124 +#define ACT_TELEPORT 125 +#define ACT_RECALL 126 + +#define ACT_SPIN 174 +#define ACT_NOLDOR 175 +#define ACT_SPECTRAL 176 +#define ACT_DEST_TELE 178 +#define ACT_DRAIN_1 10 +#define ACT_DRAIN_2 13 +#define ACT_VAMPIRE_1 14 +#define ACT_VAMPIRE_2 20 +#define ACT_GILGALAD 26 +#define ACT_CELEBRIMBOR 27 +#define ACT_SKULLCLEAVER 28 +#define ACT_HARADRIM 29 +#define ACT_FUNDIN 30 +#define ACT_EOL 31 +#define ACT_UMBAR 32 +#define ACT_NUMENOR 33 +#define ACT_KNOWLEDGE 34 +#define ACT_UNDEATH 35 +#define ACT_THRAIN 36 +#define ACT_BARAHIR 37 +#define ACT_TULKAS 38 +#define ACT_NARYA 39 +#define ACT_NENYA 40 +#define ACT_VILYA 41 +#define ACT_POWER 42 +#define ACT_STONE_LORE 43 +#define ACT_RAZORBACK 44 +#define ACT_BLADETURNER 45 +#define ACT_MEDIATOR 46 +#define ACT_BELEGENNON 47 +#define ACT_GORLIM 48 +#define ACT_COLLUIN 49 +#define ACT_BELANGIL 50 +#define ACT_CONFUSE 51 +#define ACT_SLEEP 52 +#define ACT_QUAKE 53 +#define ACT_TERROR 54 +#define ACT_TELE_AWAY 55 +#define ACT_BANISH_EVIL 56 +#define ACT_GENOCIDE 57 +#define ACT_MASS_GENO 58 +#define ACT_ANGUIREL 59 +#define ACT_ERU 60 +#define ACT_FIRESTAR 62 +#define ACT_TURMIL 63 +#define ACT_CUBRAGOL 64 +#define ACT_ELESSAR 75 +#define ACT_GANDALF 76 +#define ACT_MARDA 77 +#define ACT_PALANTIR 78 +#define ACT_ROBINTON 79 +#define ACT_PIEMUR 80 +#define ACT_MENOLLY 88 +#define ACT_EREBOR 89 +#define ACT_DRUEDAIN 90 +#define ACT_ESP 91 +#define ACT_BERSERK 92 +#define ACT_PROT_EVIL 93 +#define ACT_RESIST_ALL 94 +#define ACT_SPEED 95 +#define ACT_XTRA_SPEED 96 +#define ACT_WRAITH 97 +#define ACT_INVULN 98 +#define ACT_ROHAN 99 +#define ACT_HELM 100 +#define ACT_BOROMIR 101 +#define ACT_HURIN 102 +#define ACT_AXE_GOTHMOG 103 +#define ACT_MELKOR 104 +#define ACT_GROND 105 +#define ACT_NATUREBANE 106 +#define ACT_NIGHT 107 +#define ACT_ORCHAST 108 + +#define ACT_DEATH 127 +#define ACT_RUINATION 128 +#define ACT_DESTRUC 129 +#define ACT_UNINT 130 +#define ACT_UNSTR 131 +#define ACT_UNCON 132 +#define ACT_UNCHR 133 +#define ACT_UNDEX 134 +#define ACT_UNWIS 135 +#define ACT_STATLOSS 136 +#define ACT_HISTATLOSS 137 +#define ACT_EXPLOSS 138 +#define ACT_HIEXPLOSS 139 +#define ACT_SUMMON_MONST 140 +#define ACT_PARALYZE 141 +#define ACT_HALLU 142 +#define ACT_POISON 143 +#define ACT_HUNGER 144 +#define ACT_STUN 145 +#define ACT_CUTS 146 +#define ACT_PARANO 147 +#define ACT_CONFUSION 148 +#define ACT_BLIND 149 +#define ACT_DARKNESS 161 +#define ACT_LEV_TELE 162 +#define ACT_WEIRD 164 +#define ACT_AGGRAVATE 165 +#define ACT_LIGHT_ABSORBTION 169 +#define ACT_MUSIC 200 + + +#***************************Amulets*********************** + +#SV_AMULET_ADORNMENT +I:40:2:4:DARKNESS + +#SV_AMULET_BRILLANCE +I:40:6:1:KNOWLEDGE +I:40:6:2:CONFUSION + +#SV_AMULET_CHARISMA +I:40:7:4:DARKNESS + +#SV_AMULET_DEVOTION +I:40:25:1:MAGIC +I:40:25:2:CONFUSION +I:40:25:8:KNOWLEDGE + +#SV_AMULET_ESP +I:40:22:4:KNOWLEDGE + +#SV_AMULET_INFRA +I:40:26:1:LITE + +#SV_AMULET_NO_MAGIC +I:40:13:4:MAGIC + +#SV_AMULET_NO_TELE +I:40:14:8:TELEPORT + +#SV_AMULET_REFLECTION +I:40:9:10:FORCE +I:40:9:10:MANA + +#SV_AMULET_REGENERATION +I:40:30:4:LIFE + +#SV_AMULET_RESISTANCE +I:40:15:4:ACID +I:40:15:4:COLD +I:40:15:4:FIRE +I:40:15:4:LIGHTNING + +#SV_AMULET_RESIST_ACID +I:40:4:4:ACID + +#SV_AMULET_RESIST_ELEC +I:40:29:4:LIGHTNING + +#SV_AMULET_SEARCHING +I:40:5:4:KNOWLEDGE +I:40:5:4:LITE + +#SV_AMULET_SERPENT +I:40:17:1:MANA +I:40:17:4:ACID + +#SV_AMULET_SLOW_DIGEST +I:40:3:4:LIFE + +#SV_AMULET_SUSTENANCE +I:40:21:8:LIFE + +#SV_AMULET_TELEPORT +I:40:1:8:TELEPORT + +#SV_AMULET_THE_MAGI +I:40:8:1:MAGIC +I:40:8:4:KNOWLEDGE + +#SV_AMULET_TRICKERY +#I:40:23:1:MAGIC +I:40:23:8:CONFUSION + +#SV_AMULET_WEAPONMASTERY +I:40:24:12:EXPLOSION +I:40:24:1:MAGIC + +#SV_AMULET_WISDOM +I:40:28:1:KNOWLEDGE +I:40:28:2:CONFUSION + +#*********Potions****************************** +#Note that these first few potions are the ones which +#can be thrown for much damage, and are thus an integral part of +#the alchemist's arsenal. + +#SV_POTION_DETONATIONS +I:71:22:6:EXPLOSION + +#SV_POTION_DEATH +I:71:23:10:LIFE + +#SV_POTION_RUINATION +I:71:15:5:DARKNESS + +#SV_POTION_APPLE_JUICE +I:71:1:1:LIFE + +#SV_POTION_AUGMENTATION +I:71:55:16:POISON +I:71:55:24:CONFUSION +I:71:55:6:MAGIC +I:71:55:8:EXPLOSION +I:71:55:16:LIFE +I:71:55:8:LIGHTNING +I:71:55:16:DARKNESS + +#SV_POTION_BESERK_STRENGTH +I:71:33:1:FIRE + +#SV_POTION_BLINDNESS +I:71:7:1:DARKNESS + +#SV_POTION_BOLDNESS +I:71:28:1:LITE + +#SV_POTION_CONFUSION +I:71:9:1:CONFUSION + +#SV_POTION_CURE_CRITICAL +I:71:36:4:LIFE + +#SV_POTION_CURE_LIGHT +I:71:34:1:LIFE + +#SV_POTION_CURE_SERIOUS +I:71:35:2:LIFE + +#SV_POTION_CURING +I:71:61:1:LIFE + +#SV_POTION_DEC_CHR +I:71:21:1:MANA +I:71:21:8:DARKNESS +I:71:21:8:CONFUSION + +#SV_POTION_DEC_CON +I:71:20:1:MANA +I:71:20:8:LIFE +I:71:20:8:POISON + +#SV_POTION_DEC_DEX +I:71:19:1:MANA +I:71:19:8:LIGHTNING +I:71:19:8:DARKNESS + +#SV_POTION_DEC_INT +I:71:17:1:MANA +I:71:17:8:CONFUSION +I:71:17:8:KNOWLEDGE + +#SV_POTION_DEC_STR +I:71:16:1:MANA +I:71:16:8:EXPLOSION +I:71:16:8:POISON + +#SV_POTION_DEC_WIS +I:71:18:1:MANA +I:71:18:8:CONFUSION +I:71:18:8:LIFE + +#SV_POTION_DETECT_INVIS +I:71:25:1:DARKNESS +I:71:25:1:LITE + +#SV_POTION_ENLIGHTENMENT +I:71:56:8:KNOWLEDGE + +#SV_POTION_EXPERIENCE +I:71:59:30:EXTRALIFE + +#SV_POTION_HEALING +I:71:37:1:EXTRALIFE + +#SV_POTION_HEROISM +I:71:32:1:COLD + +#SV_POTION_INC_CHR +I:71:53:1:MAGIC +I:71:53:8:DARKNESS +I:71:53:8:CONFUSION + +#SV_POTION_INC_CON +I:71:52:1:MAGIC +I:71:52:8:LIFE +I:71:52:8:POISON + +#Potion of Slow Poison +I:71:26:1:POISON + +#Potion of Cure Poison +I:71:27:2:POISON + +#Potion of Poison +I:71:6:1:POISON + +#SV_POTION_INC_DEX +I:71:51:1:MAGIC +I:71:51:8:LIGHTNING +I:71:51:8:DARKNESS + +#SV_POTION_INC_INT +I:71:49:1:MAGIC +I:71:49:8:KNOWLEDGE +I:71:49:8:CONFUSION + +#SV_POTION_INC_STR +I:71:48:1:MAGIC +I:71:48:8:EXPLOSION +I:71:48:8:POISON + +#SV_POTION_INC_WIS +I:71:50:1:MAGIC +I:71:50:8:CONFUSION +I:71:50:8:LIFE + +#SV_POTION_INFRAVISION +I:71:24:1:LITE + +#SV_POTION_INVIS +I:71:8:4:DARKNESS + +#SV_POTION_INVULNERABILITY +I:71:62:10:FORCE +I:71:62:4:MAGIC + +#SV_POTION_LIFE +I:71:39:8:EXTRALIFE + +#SV_POTION_LOSE_MEMORIES +I:71:13:20:DARKNESS + +#SV_POTION_MUTATION +I:71:10:12:CHAOS + +#SV_POTION_NEW_LIFE +I:71:63:16:EXTRALIFE + +#SV_POTION_RESISTANCE +I:71:60:2:ACID +I:71:60:2:COLD +I:71:60:2:FIRE +I:71:60:2:LIGHTNING + +#SV_POTION_RESIST_COLD +I:71:31:1:COLD + +#SV_POTION_RESIST_HEAT +I:71:30:1:FIRE + +#SV_POTION_RESTORE_EXP +I:71:41:8:LIFE +I:71:41:3:KNOWLEDGE + +#SV_POTION_RESTORE_MANA +I:71:40:12:MANA + +#SV_POTION_RES_CHR +I:71:47:12:LIFE + +#SV_POTION_RES_CON +I:71:46:12:LIFE + +#SV_POTION_RES_DEX +I:71:45:12:LIFE + +#SV_POTION_RES_INT +I:71:43:12:LIFE + +#SV_POTION_RES_STR +I:71:42:12:LIFE + +#SV_POTION_RES_WIS +I:71:44:12:LIFE + +#SV_POTION_SALT_WATER +I:71:5:1:LIGHTNING + +#SV_POTION_SELF_KNOWLEDGE +I:71:58:2:KNOWLEDGE + +#SV_POTION_SLEEP +I:71:11:1:MANA + +#SV_POTION_SLIME_MOLD +I:71:2:1:LIFE + +#SV_POTION_SLOWNESS +I:71:4:1:MANA + +#SV_POTION_SPEED +I:71:29:1:TIME + +#SV_POTION_STAR_ENLIGHTENMENT +I:71:57:12:KNOWLEDGE + +#SV_POTION_STAR_HEALING +I:71:38:4:EXTRALIFE + +#SV_POTION_WATER +I:71:0:1:LIFE + +#********************************Potion 2********************************* + +#SV_POTION2_MIMIC 1 +I:72:1:2:LIFE +#SV_POTION2_CURE_LIGHT_SANITY 14 +I:72:14:1:CONFUSION +I:72:14:1:DARKNESS +#SV_POTION2_CURE_SERIOUS_SANITY 15 +I:72:15:2:CONFUSION +I:72:15:2:DARKNESS +#SV_POTION2_CURE_CRITICAL_SANITY 16 +I:72:16:4:CONFUSION +I:72:16:4:DARKNESS +#SV_POTION2_CURE_SANITY 17 +I:72:17:8:CONFUSION +I:72:17:8:DARKNESS +#SV_POTION2_CURE_WATER 18 +#I:72:18:4:EXPLOSION +#I:72:18:4:POISON +#I:72:18:2:EXTRALIFE + +#************Rod Tips.**************************** + +#SV_ROD_ACID_BALL +I:66:24:1:MAGIC +I:66:24:8:ACID + +#SV_ROD_ACID_BOLT +I:66:20:4:ACID + +#SV_ROD_COLD_BALL +I:66:27:1:MAGIC +I:66:27:8:COLD + +#SV_ROD_COLD_BOLT +I:66:23:4:COLD + +#SV_ROD_CURING +I:66:8:3:LIFE + +#SV_ROD_DETECTION +I:66:6:8:KNOWLEDGE + +#SV_ROD_DETECT_DOOR +I:66:1:1:KNOWLEDGE + +#SV_ROD_DETECT_TRAP +I:66:29:1:KNOWLEDGE + +#SV_ROD_DISARMING +I:66:14:4:TELEPORT + +#SV_ROD_DRAIN_LIFE +I:66:18:10:LIFE + +#SV_ROD_ELEC_BALL +I:66:25:1:MAGIC +I:66:25:8:LIGHTNING + +#SV_ROD_ELEC_BOLT +I:66:21:4:LIGHTNING + +#SV_ROD_FIRE_BALL +I:66:26:1:MAGIC +I:66:26:8:FIRE + +#SV_ROD_FIRE_BOLT +I:66:22:4:FIRE + +#SV_ROD_HAVOC +I:66:28:5:CHAOS + +#SV_ROD_HEALING +I:66:9:4:EXTRALIFE + +#SV_ROD_IDENTIFY +I:66:2:4:MANA +I:66:2:4:KNOWLEDGE + +#SV_ROD_ILLUMINATION +I:66:4:4:LITE + +#SV_ROD_LITE +I:66:15:1:LITE + +#SV_ROD_MAPPING +I:66:5:1:KNOWLEDGE +I:66:5:8:LITE + +#SV_ROD_POLYMORPH +I:66:19:1:CHAOS + +#SV_ROD_PROBING +I:66:7:20:KNOWLEDGE +I:66:7:3:MANA + +#SV_ROD_RECALL +I:66:3:3:FORCE +I:66:3:9:TELEPORT + +#SV_ROD_RESTORATION +I:66:10:30:LIFE + +#SV_ROD_SLEEP_MONSTER +I:66:16:1:MANA + +#SV_ROD_SLOW_MONSTER +I:66:17:1:TIME + +#SV_ROD_SPEED +I:66:11:10:TIME + +#SV_ROD_TELEPORT_AWAY +I:66:13:8:TELEPORT + +#**************************Scrolls ******************** + +#SV_SCROLL_ACQUIREMENT +I:70:46:10:MAGIC + +#SV_SCROLL_ARTIFACT +I:70:52:99:MAGIC + +#SV_SCROLL_BLESSING +I:70:33:1:LIFE + +#SV_SCROLL_CHAOS +I:70:50:2:CHAOS + +#SV_SCROLL_DARKNESS +I:70:0:1:DARKNESS + +#SV_SCROLL_DETECT_DOOR +I:70:29:1:KNOWLEDGE + +#SV_SCROLL_DETECT_GOLD +I:70:26:1:KNOWLEDGE + +#SV_SCROLL_DETECT_INVIS +I:70:30:1:DARKNESS +I:70:30:1:KNOWLEDGE + +#SV_SCROLL_DETECT_ITEM +I:70:27:2:KNOWLEDGE + +#SV_SCROLL_DETECT_TRAP +I:70:28:1:KNOWLEDGE + +#SV_SCROLL_DISPEL_UNDEAD +I:70:42:1:EXTRALIFE + +#SV_SCROLL_ENCHANT_ARMOR +I:70:16:3:EXPLOSION + +#SV_SCROLL_ENCHANT_WEAPON_PVAL +I:70:19:10:MAGIC + +#SV_SCROLL_ENCHANT_WEAPON_TO_DAM +I:70:18:3:EXPLOSION + +#SV_SCROLL_ENCHANT_WEAPON_TO_HIT +I:70:17:3:LITE + +#SV_SCROLL_FIRE +I:70:48:1:FIRE + +#SV_SCROLL_GENOCIDE +I:70:44:1:FORCE +I:70:44:5:DARKNESS + +#SV_SCROLL_HOLY_CHANT +I:70:34:2:LIFE + +#SV_SCROLL_HOLY_PRAYER +I:70:35:3:LIFE + +#SV_SCROLL_ICE +I:70:49:1:COLD + +#SV_SCROLL_IDENTIFY +I:70:12:1:KNOWLEDGE + +#SV_SCROLL_LIGHT +I:70:24:1:LITE + +#SV_SCROLL_MAPPING +I:70:25:2:KNOWLEDGE +I:70:25:5:LITE + +#SV_SCROLL_MASS_GENOCIDE +I:70:45:1:FORCE +I:70:45:30:DARKNESS + +#SV_SCROLL_MONSTER_CONFUSION +I:70:36:1:CONFUSION + +#SV_SCROLL_PHASE_DOOR +I:70:8:1:TELEPORT + +#SV_SCROLL_PROTECTION_FROM_EVIL +I:70:37:1:MANA +I:70:37:9:LIFE + +#SV_SCROLL_RECHARGING +I:70:22:4:LIGHTNING + +#SV_SCROLL_REMOVE_CURSE +I:70:14:1:LIFE + +#SV_SCROLL_RESET_RECALL +I:70:23:1:FORCE + +#SV_SCROLL_RUMOR +I:70:51:1:LIGHTNING + +#SV_SCROLL_RUNE_OF_PROTECTION +I:70:38:1:EXTRALIFE +I:70:38:6:FORCE + +#SV_SCROLL_SATISFY_HUNGER +I:70:32:1:LIFE + +#SV_SCROLL_STAR_ACQUIREMENT +I:70:47:20:MAGIC + +#SV_SCROLL_STAR_DESTRUCTION +I:70:41:12:FORCE + +#SV_SCROLL_STAR_ENCHANT_ARMOR +I:70:20:9:EXPLOSION + +#SV_SCROLL_STAR_ENCHANT_WEAPON +I:70:21:9:EXPLOSION +I:70:21:9:LITE + +#SV_SCROLL_STAR_IDENTIFY +I:70:13:1:MAGIC +I:70:13:20:KNOWLEDGE + +#SV_SCROLL_STAR_REMOVE_CURSE +I:70:15:1:EXTRALIFE + +#SV_SCROLL_TELEPORT +I:70:9:1:TELEPORT + +#SV_SCROLL_TELEPORT_LEVEL +I:70:10:5:TELEPORT + +#SV_SCROLL_TRAP_CREATION +I:70:7:1:CONFUSION +I:70:7:1:TELEPORT + +#SV_SCROLL_TRAP_DOOR_DESTRUCTION +I:70:39:1:FORCE + +#SV_SCROLL_WORD_OF_RECALL +I:70:11:1:FORCE +I:70:11:3:TELEPORT + +#***************************Staves************************ + +#Globe of Light +I:55:3:1:LITE +#Fiery Shield +I:55:4:2:FIRE +I:55:4:1:MANA +#Remove Curse +I:55:5:2:LIFE +#Wings of Winds +I:55:6:1:FORCE +#Shake +I:55:7:4:FORCE +#Disarm +I:55:8:1:FORCE +I:55:8:1:KNOWLEDGE +#Teleportation +I:55:9:1:TELEPORT +#Probability Travel +I:55:10:1:MANA +I:55:10:1:TELEPORT +#11 Recovery +I:55:11:1:LIFE +#12 Healing +I:55:12:1:EXTRALIFE +#13 Vision +I:55:13:1:LITE +#Identify +I:55:14:1:KNOWLEDGE +I:55:14:1:MANA +#Sense Hidden +I:55:15:1:KNOWLEDGE +#Reveal Ways +I:55:16:1:KNOWLEDGE +#Sense Monsters +I:55:17:1:KNOWLEDGE +#Genocide +I:55:18:1:FORCE +I:55:18:5:DARKNESS +#19 Summon +I:55:19:1:LIFE +I:55:19:1:TELEPORT +#Wish +I:55:20:99:MAGIC +#Mana +I:55:21:1:MANA +#Sterilize +I:55:24:1:POISON +I:55:24:1:MANA + +#********************Wands***************** + +#MannaThrust +I:65:3:4:MANA + +#FireFlash +I:65:4:1:FIRE + +#FireWall +I:65:5:4:FIRE +I:65:5:1:MANA + +#Tidal Wave +I:65:6:1:POISON +I:65:6:1:ACID +I:65:6:1:COLD + +#Ice Storm +I:65:7:4:COLD +I:65:7:1:MANA + +#Wand of Noxious Cloud +I:65:8:1:POISON + +#Poison Blood +I:65:9:2:POISON +I:65:9:1:LIFE + +#Thunderstorm +I:65:10:4:LIGHTNING + +#DIG +I:65:11:1:FORCE + +#Stone Prison +I:65:12:3:FORCE +I:65:12:1:MANA + +#Strike +I:65:13:1:FORCE +#Teleport Away +I:65:14:1:TELEPORT +#Summon Animal +I:65:15:4:LIFE +I:65:15:1:MANA +#MageLock +I:65:16:1:FORCE +#Slow Monster +I:65:17:1:MANA +#Essence of Speed +I:65:18:1:TIME +#Banishment +I:65:19:2:TELEPORT +#20 Disperse Magic +I:65:20:4:LIFE +I:65:20:4:MANA +#Charm +I:65:21:1:MANA +I:65:21:1:LIFE +#Confuse +I:65:22:1:CONFUSION +#Deamon Blade +I:65:23:1:FORCE +I:65:23:1:FIRE +#Heal Monster +I:65:24:1:LIFE +#25 Haste Monster +I:65:25:1:MANA + + + +#RINGS********************************************************* + +#ring of poison resistance +I:45:20:8:POISON + +#Ring of Critical Hits +I:45:59:8:MANA + +#Damage +I:45:29:1:EXPLOSION + +#Slaying +I:45:30:8:EXPLOSION +I:45:30:8:LITE + +#Sound Resistance +I:45:42:4:EXPLOSION +I:45:42:4:LITE + +#Shard Resistance +I:45:44:4:EXPLOSION +I:45:44:4:TELEPORT + +#Flying +I:45:54:12:TELEPORT + +#Extra Attacks +I:45:49:8:TELEPORT +I:45:49:4:TIME + +#Teleportation +I:45:4:8:TELEPORT + +#Lordly Protection +I:45:48:4:TELEPORT +I:45:48:12:LITE +I:45:48:1:EXTRALIFE + +#Ring of Ice +I:45:19:8:COLD + +#Ring of Cold Resistance +I:45:9:4:COLD + +#Ring of Flames +I:45:18:8:FIRE + +#Ring of Fire Resistance +I:45:8:4:FIRE + +#Ring of Acid +I:45:17:8:ACID + +#Ring of Disenchantment Resistance +I:45:45:8:ACID +I:45:45:2:CHAOS + +#Ring of slow digestion +I:45:6:4:LIFE +I:45:6:1:TIME + +#ring of confusion resistance +I:45:43:8:CONFUSION + +#Ring of Stupidity +I:45:3:1:CONFUSION + +#Ring of Blindness Resistance +I:45:47:8:LITE + +#Ring of Accuracy +I:45:28:1:LITE + +#Ring of Searching +I:45:23:4:LITE +I:45:23:3:KNOWLEDGE + +#Ring of Chaos +I:45:46:8:LITE + +#Ring of Light and Darkness Resistance +I:45:39:8:LITE +I:45:39:8:DARKNESS + +#Ring of Speed +I:45:31:12:TIME + +#ring of Weakness +I:45:2:1:POISON + +#ring of Constitution +I:45:27:2:POISON +I:45:27:8:LIFE + +#ring of Strength +I:45:24:1:POISON +I:45:24:1:EXPLOSION + +#Ring of Dexterity +I:45:26:1:KNOWLEDGE +I:45:26:1:LIGHTNING + +#ring of Sustain Constitution +I:45:13:1:POISON +I:45:13:4:LIFE +I:45:13:1:MANA + +#ring of Sustain Strength +I:45:10:1:POISON +I:45:10:1:EXPLOSION +I:45:10:1:MANA + +#ring of Sustain Intelligence +I:45:11:1:CONFUSION +I:45:11:1:MANA + +#ring of Intelligence +I:45:25:1:CONFUSION +I:45:25:12:KNOWLEDGE + +#Ring of Sustain Wisdom +I:45:12:1:MANA +I:45:12:4:CONFUSION + +#Ring of Sustain Dexterity +I:45:14:1:MANA +I:45:14:1:LIGHTNING + +#Ring of Sustain Charisma +I:45:15:1:MANA +I:45:15:1:DARKNESS + +#Ring of See Invisible +I:45:22:8:DARKNESS + +#Ring of Invisibility +I:45:53:8:DARKNESS + +#Ring of Fear resistance +I:45:38:1:MAGIC + +#Ring of Levitation +I:45:7:1:MANA + +#Ring of Nether Resistance +I:45:40:1:MANA +I:45:40:12:LIFE + +#Ring of Nexus Resistance +I:45:41:1:MANA + +#Ring of Free Action +I:45:21:1:FORCE + +#Ring of Protection +I:45:16:10:FORCE + +#Ring of Lightning +I:45:56:12:LIGHTNING + +#EGO ITEMS, in order by e_idx +I:1:1:1:MAGIC },/*of Mana*/ +I:1:2:2:MAGIC },/*of Power*/ +I:1:3:3:MAGIC },/*of Wizardry*/ +I:1:4:2:MAGIC },/*of Spell*/ +I:1:5:4:ACID },/*of Resist Acid*/ +I:1:6:4:LIGHTNING },/*of Resist Lightning*/ +I:1:7:4:FIRE },/*of Resist Fire*/ +I:1:8:4:COLD },/*of Resist Cold*/ +I:1:9:4:ACID },/*of Resistance*/ +I:1:9:4:COLD },/*of Resistance*/ +I:1:9:4:FIRE },/*of Resistance*/ +I:1:9:4:LIGHTNING },/*of Resistance*/ +I:1:10:5:ACID },/*Elven*/ +I:1:10:5:COLD },/*Elven*/ +I:1:10:5:FIRE },/*Elven*/ +I:1:10:5:LIGHTNING },/*Elven*/ +I:1:11:1:MAGIC },/*of Permanence*/ +I:1:11:6:ACID },/*of Permanence*/ +I:1:11:6:COLD },/*of Permanence*/ +I:1:11:6:FIRE },/*of Permanence*/ +I:1:11:6:LIGHTNING },/*of Permanence*/ +I:1:12:1:POISON },/*of Leprousness*/ +I:1:13:3:MAGIC },/*of Immunity*/ +I:1:14:5:MAGIC },/*of Defense*/ +I:1:15:4:TELEPORT },/*of Jumping*/ +I:1:16:4:ACID },/*of Resist Acid*/ +I:1:17:4:LIGHTNING },/*of Resist Lightning*/ +I:1:18:4:FIRE },/*of Resist Fire*/ +I:1:19:4:COLD },/*of Resist Cold*/ +I:1:20:4:ACID },/*of Resistance*/ +I:1:20:4:COLD },/*of Resistance*/ +I:1:20:4:FIRE },/*of Resistance*/ +I:1:20:4:LIGHTNING },/*of Resistance*/ +I:1:21:12:FORCE },/*of Reflection*/ +I:1:22:8:LIGHTNING },/*of Electricity*/ +I:1:23:4:DARKNESS },/*of the Noldor*/ +I:1:24:4:KNOWLEDGE },/*of Intelligence*/ +I:1:25:4:KNOWLEDGE },/*of Wisdom*/ +I:1:26:4:KNOWLEDGE },/*of Beauty*/ +I:1:27:12:KNOWLEDGE },/*of the Magi*/ +I:1:28:12:EXPLOSION },/*of Might*/ +I:1:29:4:MANA },/*of Lordliness*/ +I:1:30:8:KNOWLEDGE },/*of Seeing*/ +I:1:31:1:LITE },/*of Infravision*/ +I:1:32:1:LITE },/*of Light*/ +I:1:33:8:KNOWLEDGE },/*of Telepathy*/ +I:1:34:4:LIFE },/*of Regeneration*/ +I:1:35:4:TELEPORT },/*of Teleportation*/ +I:1:40:8:EXPLOSION },/*Dwarven*/ +I:1:40:8:FIRE },/*Dwarven*/ +I:1:40:8:LIFE },/*Dwarven*/ +I:1:40:8:LITE },/*Dwarven*/ +I:1:40:8:MANA },/*Dwarven*/ +I:1:41:4:FORCE },/*of Protection*/ +I:1:42:4:DARKNESS },/*of Stealth*/ +I:1:43:4:ACID },/*of Aman*/ +I:1:43:4:COLD },/*of Aman*/ +I:1:43:4:DARKNESS },/*of Aman*/ +I:1:43:4:FIRE },/*of Aman*/ +I:1:43:4:LIGHTNING },/*of Aman*/ +I:1:44:8:FIRE },/*of Immolation*/ +I:1:48:8:LIGHTNING },/*of Electricity*/ +I:1:49:1:FORCE },/*of Free Action*/ +I:1:50:4:FORCE },/*of Slaying*/ +I:1:50:4:LITE },/*of Slaying*/ +I:1:51:4:LIGHTNING },/*of Agility*/ +I:1:52:4:EXPLOSION },/*of Power*/ +I:1:54:2:DARKNESS },/*of Charming*/ +I:1:57:3:DARKNESS },/*of Levitation*/ +I:1:58:3:DARKNESS },/*of Stealth*/ +I:1:59:3:DARKNESS },/*of Free Action*/ +I:1:60:5:TIME },/*of Speed*/ +I:1:61:2:DARKNESS },/*of Dwarvish Endurance*/ +I:1:61:2:EXPLOSION },/*of Dwarvish Endurance*/ +I:1:65:4:ACID },/*of Aman*/ +I:1:65:4:COLD },/*of Aman*/ +I:1:65:4:DARKNESS },/*of Aman*/ +I:1:65:4:FIRE },/*of Aman*/ +I:1:65:4:LIGHTNING },/*of Aman*/ +I:1:66:1:MAGIC },/*(Defender)*/ +I:1:66:4:ACID },/*(Defender)*/ +I:1:66:4:COLD },/*(Defender)*/ +I:1:66:4:FIRE },/*(Defender)*/ +I:1:66:4:LIGHTNING },/*(Defender)*/ +I:1:67:8:KNOWLEDGE },/*Blessed*/ +I:1:68:12:LIFE },/*of Greater Life*/ +I:1:68:2:MAGIC },/*of Greater Life*/ +I:1:69:4:DARKNESS },/*of Westernesse*/ +I:1:69:4:EXPLOSION },/*of Westernesse*/ +I:1:69:4:LIGHTNING },/*of Westernesse*/ +I:1:69:4:LITE },/*of Westernesse*/ +I:1:70:2:TIME },/*of Extra Attacks*/ +I:1:71:4:FORCE },/*of Slaying*/ +I:1:71:4:LITE },/*of Slaying*/ +I:1:72:4:EXPLOSION },/*of Spinning*/ +I:1:72:4:LIGHTNING },/*of Spinning*/ +I:1:73:4:ACID },/*Acidic*/ +I:1:74:4:LIGHTNING },/*Shocking*/ +I:1:75:4:FIRE },/*Fiery*/ +I:1:76:4:COLD },/*Frozen*/ +I:1:77:4:POISON },/*Venomous*/ +I:1:78:4:CHAOS },/*Chaotic*/ +I:1:79:4:FORCE },/*Sharp*/ +I:1:80:4:FORCE },/*of Earthquakes*/ +I:1:81:8:CHAOS },/*of Slay Animal*/ +I:1:82:8:CHAOS },/*of Slay Evil*/ +I:1:83:8:CHAOS },/*of Slay Undead*/ +I:1:84:8:CHAOS },/*of Slay Demon*/ +I:1:85:8:CHAOS },/*of Slay Orc*/ +I:1:86:8:CHAOS },/*of Slay Troll*/ +I:1:87:8:CHAOS },/*of Slay Giant*/ +I:1:88:8:CHAOS },/*of Slay Dragon*/ +I:1:89:12:CHAOS },/*of *Slay Animal**/ +I:1:90:12:CHAOS },/*of *Slay Evil**/ +I:1:91:12:CHAOS },/*of *Slay Undead**/ +I:1:92:12:CHAOS },/*of *Slay Demon**/ +I:1:93:12:CHAOS },/*of *Slay Orc**/ +I:1:94:12:CHAOS },/*of *Slay Troll**/ +I:1:95:12:CHAOS },/*of *Slay Giant**/ +I:1:96:12:CHAOS },/*of *Slay Dragon**/ +I:1:97:8:LIFE },/*Vampiric*/ +I:1:98:4:MAGIC },/*(*Defender*)*/ +I:1:98:8:ACID },/*(*Defender*)*/ +I:1:98:8:COLD },/*(*Defender*)*/ +I:1:98:8:FIRE },/*(*Defender*)*/ +I:1:98:8:LIGHTNING },/*(*Defender*)*/ +I:1:98:8:POISON },/*(*Defender*)*/ +I:1:99:12:TELEPORT },/*of the Thunderlords*/ +I:1:100:12:KNOWLEDGE },/*of Gondolin*/ +I:1:100:1:MAGIC },/*of Gondolin*/ +I:1:101:1:FORCE },/*of Digging*/ +I:1:102:12:LIFE },/*Spectral*/ +I:1:102:4:MANA },/*Spectral*/ +I:1:105:1:LITE },/*of Accuracy*/ +I:1:106:2:FORCE },/*of Power*/ +I:1:107:2:FORCE },/*of Extra Might*/ +I:1:108:1:FORCE },/*of Extra Shots*/ +I:1:108:1:LITE },/*of Extra Shots*/ +I:1:108:1:TIME },/*of Extra Shots*/ +I:1:109:2:FORCE },/*of Lothlorien*/ +I:1:109:2:LITE },/*of Lothlorien*/ +I:1:110:2:FORCE },/*of the Haradrim*/ +I:1:110:2:LITE },/*of the Haradrim*/ +I:1:111:2:FORCE },/*of Buckland*/ +I:1:111:2:LITE },/*of Buckland*/ +I:1:112:1:CHAOS },/*of Slay Animal*/ +I:1:113:1:CHAOS },/*of Slay Evil*/ +I:1:114:1:CHAOS },/*of Slay Undead*/ +I:1:115:1:POISON },/*of Venom*/ +I:1:116:1:ACID },/*of Acid*/ +I:1:117:12:ACID },/*Elemental*/ +I:1:117:12:COLD },/*Elemental*/ +I:1:117:12:FIRE },/*Elemental*/ +I:1:117:12:LIGHTNING },/*Elemental*/ +I:1:117:12:POISON },/*Elemental*/ +I:1:118:1:CHAOS },/*of Slay Demon*/ +I:1:119:1:CHAOS },/*of Slay Dragon*/ +I:1:120:1:FORCE },/*of Slaying*/ +I:1:120:1:LITE },/*of Slaying*/ +I:1:121:1:LIGHTNING },/*of Lightning*/ +I:1:121:1:LITE },/*of Lightning*/ +I:1:122:1:FIRE },/*of Flame*/ +I:1:122:1:LITE },/*of Flame*/ +I:1:123:1:COLD },/*of Frost*/ +I:1:123:1:LITE },/*of Frost*/ +I:1:124:1:LIFE },/*of Wounding*/ +I:1:128:2:ACID },/*of the Eldar*/ +I:1:128:2:DARKNESS },/*of the Eldar*/ +I:1:129:2:ACID },/*of Power*/ +I:1:129:2:COLD },/*of Power*/ +I:1:129:2:DARKNESS },/*of Power*/ +I:1:129:2:FIRE },/*of Power*/ +I:1:129:2:LIGHTNING },/*of Power*/ +I:1:130:1:MANA },/*Dragon*/ +I:1:131:1:MANA },/*Capacity of */ +I:1:132:1:LIFE },/*Cheapness of */ +I:1:133:1:TIME },/*Quickness of */ +I:1:134:1:TIME },/*Charging of */ +I:1:135:3:LIFE },/*the Istari of */ +I:1:135:3:MANA },/*the Istari of */ +I:1:135:3:TIME },/*the Istari of */ +I:1:136:1:LITE },/*of Boldness*/ +I:1:137:1:LITE },/*of Fearlessness*/ +I:1:138:2:LITE },/*of Illumination*/ +I:1:139:2:LITE },/*of Brightness*/ +I:1:140:4:LITE },/*of *Brightness**/ +I:1:141:4:DARKNESS },/*of the Shadows*/ +I:1:141:4:LITE },/*of the Shadows*/ +I:1:142:4:DARKNESS },/*of Infravision*/ +I:1:142:4:LITE },/*of Infravision*/ +I:1:143:8:DARKNESS },/*of the Eternal Eye*/ +I:1:144:4:MANA },/*of the Ethereal Eye*/ +I:1:146:4:DARKNESS },/*Dwarven*/ +I:1:146:4:EXPLOSION },/*Dwarven*/ +I:1:146:4:LITE },/*Dwarven*/ +I:1:147:1:MAGIC },/*Indestructible*/ +I:1:147:4:ACID },/*Indestructible*/ +I:1:147:4:COLD },/*Indestructible*/ +I:1:147:4:FIRE },/*Indestructible*/ +I:1:147:4:LIGHTNING },/*Indestructible*/ +I:1:147:4:MANA },/*Indestructible*/ +I:1:149:1:FIRE },/*Fireproof*/ +I:1:163:3:DARKNESS },/*of the Magi*/ +I:1:163:3:KNOWLEDGE },/*of the Magi*/ +I:1:163:3:MANA },/*of the Magi*/ +I:1:166:4:MAGIC },/*of Preservation*/ +I:1:166:4:MANA },/*of Preservation*/ +I:1:167:12:MANA },/*of Serenity*/ +I:1:168:4:DARKNESS },/*of Night and Day*/ +I:1:168:4:LITE },/*of Night and Day*/ +I:1:169:1:TIME },/*of the Magi*/ +I:1:169:8:KNOWLEDGE },/*of the Magi*/ +I:1:170:4:DARKNESS },/*of Invisibility*/ +I:1:171:8:DARKNESS },/*of the Bat*/ +I:1:171:8:TELEPORT },/*of the Bat*/ +I:1:172:4:LIGHTNING },/*of Thievery*/ +I:1:173:4:FORCE },/*of Combat*/ +I:1:174:4:TELEPORT },/*of Stability*/ +I:1:175:4:ACID },/*of Elvenkind*/ +I:1:175:4:COLD },/*of Elvenkind*/ +I:1:175:4:FIRE },/*of Elvenkind*/ +I:1:175:4:LIGHTNING },/*of Elvenkind*/ +I:1:176:1:MAGIC },/*of Fury*/ +I:1:176:4:CHAOS },/*of Fury*/ +I:1:176:4:EXPLOSION },/*of Fury*/ +I:1:176:4:MANA },/*of Fury*/ +I:1:178:8:FORCE },/*Magical*/ +I:1:179:4:KNOWLEDGE },/*Simplicity of */ +I:1:180:1:FIRE },/*of Warmth*/ +I:1:185:12:LIFE },/*of Life*/ +I:1:185:2:MAGIC },/*of Life*/ diff --git a/lib/edit/ba_info.txt b/lib/edit/ba_info.txt new file mode 100644 index 00000000..8156fd2f --- /dev/null +++ b/lib/edit/ba_info.txt @@ -0,0 +1,283 @@ +# 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 diff --git a/lib/edit/between.map b/lib/edit/between.map new file mode 100644 index 00000000..16fcf484 --- /dev/null +++ b/lib/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 + +# Floor with grass with a bronze thunderlord +F:z:89:5:958 + +# Floor with dirt with a bronze thunderlord +F:Z:88:5:958 + +# Floor with grass with a gold thunderlord +F:D:88:5:959 + +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/edit/d_info.txt b/lib/edit/d_info.txt new file mode 100644 index 00000000..76cde668 --- /dev/null +++ b/lib/edit/d_info.txt @@ -0,0 +1,512 @@ +# 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:Mordor +D:Mdr:a door to the Land of Mordor. +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 +R:100:0 + +N:3:Angband +D:Ang:an entrance to the Pits of Angband. +W:67: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: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 +L:88:78:89:18:199:4 +L:0:95:5 +A:96:34:97:66:56:0: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:Mount Doom +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 of Phasing +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:RANDOM_TOWNS | 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 "Toris Mejistos". +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 Mandos +D:HMa:*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. +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:CIRCULAR_ROOMS +F:FILL_METHOD_2 +R:2:0 +R:49:3 +M:SPIDER | R_CHAR_c | 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 +R:30:3 +M:TROLL +R:20:0 +R:50:3 +M:ORC | R_CHAR_k | 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 + +# 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 | BIG | 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 his suit of +# thunderlord armour. +# 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_27 +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:30:3 +M:ANIMAL +R:40:0 + +# The Sandworm's Lair +# level 22-30 +# guarded by the Sandworm Queen (and her children), who will drop her armour +N:27:The Sandworm lair +D:SwL:a sandhole. +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:90:3 +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 the White Balrog +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 + +# 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/edit/dragons.map b/lib/edit/dragons.map new file mode 100644 index 00000000..164c97c8 --- /dev/null +++ b/lib/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/edit/e_info.txt b/lib/edit/e_info.txt new file mode 100644 index 00000000..f01d8cf7 --- /dev/null +++ b/lib/edit/e_info.txt @@ -0,0 +1,2210 @@ +# 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:255 +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:255 +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:255 +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:255 +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:255 +T:37:0:255 +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:255 +T:37:0:255 +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:255 +T:37:0:255 +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:255 +T:37:0:255 +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:255 +T:37:0:255 +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:255 +T:37:0:255 +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 + +# Filthy rags of leprousness +N:12:of Leprousness +T:36:1:1 +X:A:30:0 +W:0:1:10:0 +C:0:0:0:-6 +R:100 +F:CON | STR | R_STAT | CURSED +# No CURSE_NO_DROP here, players seems to unlike surprises + +# Mithirl & Adamantite 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:255 +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:255 +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:255 +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:255 +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:255 +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:255 +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:255 +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:255 +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 Might +X:A:33:19 +W:0:1:8:2000 +C:0:0:0:3 +T:33:0:99 +R:100 +F:STR | DEX | CON | SUST_STR | SUST_DEX | SUST_CON | FREE_ACT +F:R_HIGH + +N:29:of Lordliness +X:A:33:17 +W:0:1:8:2000 +C:0:0:0:3 +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:255 +R:100 +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD | RES_SHARDS + +N:42:of Stealth +X:A:31:10 +W:0:8:18:500 +C:0:0:0:3 +T:35:0:99 +R:100 +F:STEALTH +f:STEALTH + +N:43:of Aman +X:A:31:20 +W:0:1:28:4000 +C:0:0:20:3 +T:35:0:255 +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:255 +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:255 +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:255 +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:255 +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:255 +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 Stealth +X:A:35:16 +W:0:8:27:500 +C:0:0:0:3 +T:30:0:99 +R:100 +F:STEALTH +f:STEALTH + +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 Speed +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:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:15:0:255 +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:15:0:255 +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:15:0:255 +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:15:0:255 +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:15:0:255 +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:15:0:255 +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:15:0:255 +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:21:0:255 +T:22:0:255 +T:23:0:29 +T:23:31:255 +T:24:0:255 +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:255 +T:23:0:255 +T:24:0:255 +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:255 +T:21:0:255 +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:255 +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:125:0:255 +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:21:0:19 +T:21:21:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:125:0:255 +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:15:0:255 +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:15:0:255 +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:23:0:255 +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:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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 + +N:99:of the Thunderlords +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +X:A:24:22 +W:0:1:100:7000 +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_NEXUS | ACTIVATE | FLY | ESP_DRAGON +F:R_HIGH +R:12 +F:ABILITY +R:2 +F:R_P_ABILITY | PVAL_M3 | LIMIT_BLOWS + +N:100:of Gondolin +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +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:255 +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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 Nothingness +T:125:0:255 +T:15:0:255 +T:21:0:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +T:15:0:255 +X:A:25:10 +W:0:8:21:1000 +C:15:5:0:0 + +N:106:of Power +T:19:0:255 +T:15:0:255 +X:A:25:10 +W:0:8:21:1000 +C:5:15:0:0 + +N:107:of Extra Might +T:19:0:255 +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:255 +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:2:2 +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:255 +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:255 +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:255 +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:255 +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:255 +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:255 +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:255 +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:255 +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 + +# Ring and Amulet egos + +N:147:Indestructible +X:B:0:2 +T:40:0:255 +T:45:0:255 +W:0:1:10:1000 +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 + +N:148:Cursed +X:B:0:0 +T:40:0:255 +T:45:0:255 +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:255 +T:111:0:255 +T:55:0:255 +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:255 +T:65:0:29 +T:65:31:255 +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) +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) +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:5 +T:30:2:3 +R:100 +F:STEALTH | SPEED | HIDE_TYPE | FEATHER | IGNORE_ACID | IGNORE_FIRE | ABILITY + +# 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:255 +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:255 +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:255 +T:22:0:255 +T:23:0:255 +T:24:0:255 +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:255 +R:100 +F:MAGIC_BREATH + +# Ego DSM +N:187:Polished +T:38:0:255 +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 + +# 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/edit/evil.map b/lib/edit/evil.map new file mode 100644 index 00000000..d407c4ef --- /dev/null +++ b/lib/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 + +# Greater Balrog +F:B:88:0:807 + +# Pit Fiend +F:P:88:0:812 + +# 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/edit/f_info.txt b/lib/edit/f_info.txt new file mode 100644 index 00000000..21f7954d --- /dev/null +++ b/lib/edit/f_info.txt @@ -0,0 +1,933 @@ +# 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 + +# 79 --> 83 UNSUSED + +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: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 | NOTICE +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 | NOTICE +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 + +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. + +# 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 flowers +N:199:grass with 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 + + +# New features for the Maps of Lord Dimwit + +N:213: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:214: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:215: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:216: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 diff --git a/lib/edit/haunted.map b/lib/edit/haunted.map new file mode 100644 index 00000000..49f72d5b --- /dev/null +++ b/lib/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/edit/k_info.txt b/lib/edit/k_info.txt new file mode 100644 index 00000000..ffae3ed1 --- /dev/null +++ b/lib/edit/k_info.txt @@ -0,0 +1,6418 @@ +# 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). + + +# 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:Paranoia +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 Paranoia +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 Food +G:,:U +I:80:35:5000 +W:0:0:10:3 +A:0/1:5/1:10/1 +D:Lightweight and filling. Not an incredible taste experience, but that'd be asking a bit much. +D:You can 'E'at it. + +N:22:& Hard Biscuit~ +G:,:U +I:80:32:500 +W:0:0:2:1 +D:It doesn't look great, and 'E'ating it will only fill your stomach a bit, +D: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:A sort of cake, tasty and sustaining. It even helps to overcome weariness. Its fabrication +D:is a secret of the elves. If you '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. You can drink it by pressing 'E'. + +N:27:& Pint~ of Fine Wine +G:,:r +I:80:39:1000 +W:0:0:10:2 +D:A bottle of fine wine. 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 'Toris Mejistos' -- 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:Think Doctor Jones. This weapon is light and easy to fight with. +D:It has nasty barbs and hooks fixed to the thong to make it useful +D:in combat. Whips give easily 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 - 6ft 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:A 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:A short metal arrow, to be 'f'ired with a 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. Eurgh. You're not going to +D:wear this, are you? + +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 leather jerkin, 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:& Adamantite 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 +D:A suit of plate armour fashioned from an unbreakable crystal by mage-smiths. + +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 +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 +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 +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 +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:140:Fire Resistance +G:=:d +I:45:8:0 +W:10:0:2:250 +A:10/1 +F:RES_FIRE | IGNORE_FIRE | EASY_KNOW +f:RES_FIRE +D:This piece of jewellery grants you some protection from the burning heat of fire. + +N:141:Cold Resistance +G:=:d +I:45:9:0 +W:10:0:2:250 +A:10/1 +F:RES_COLD | IGNORE_COLD | EASY_KNOW +f:RES_COLD +D:This piece of jewellery grants you some protection from the chilling forces of cold. + +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 | IGNORE_FIRE | ACTIVATE +f:RES_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 | IGNORE_ACID | ACTIVATE +f:RES_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 | IGNORE_COLD | ACTIVATE +f:RES_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 +D:This ring magically improves your control in combat, allowing you to hit more often. + +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. + +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:156:Sustain Strength +G:=:d +I:45:10:0 +W:20:0:2:400 +A:20/1 +F:SUST_STR | EASY_KNOW +f:SUST_STR +D:This magical bauble protects your physical force against attacks attempting to drain it. + +N:157:Sustain Intelligence +G:=:d +I:45:11:0 +W:20:0:2:400 +A:20/1 +F:SUST_INT | EASY_KNOW +f:SUST_INT +D:This magical ring protects your intellect against attempts to lower it. + +N:158:Sustain Wisdom +G:=:d +I:45:12:0 +W:20:0:2:400 +A:20/1 +F:SUST_WIS | EASY_KNOW +f:SUST_WIS +D:This magical ring protects you from attempts to make you more foolish. + +N:159:Sustain Constitution +G:=:d +I:45:13:0 +W:20:0:2:400 +A:20/1 +F:SUST_CON | EASY_KNOW +f:SUST_CON +D:This magical ring protects your health, making it impossible for your opponents to lower it. + +N:160:Sustain Dexterity +G:=:d +I:45:14:0 +W:20:0:2:400 +A:20/1 +F:SUST_DEX | EASY_KNOW +f:SUST_DEX +D:This magical ring protects your nerves, so that you will never become clumsy. + +N:161:Sustain Charisma +G:=:d +I:45:15:0 +W:20:0:2:400 +A:20/1 +F:SUST_CHR | EASY_KNOW +f:SUST_CHR +D:This ring magically protects your beauty and charm from attempts to make you ugly. + +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. + +N:167:Slow Digestion +G:":d +I:40:3:0 +W:15:0:3:200 +A:15/1 +F:SLOW_DIGEST | EASY_KNOW +f:SLOW_DIGEST +D:This talisman will make you hungry less quickly when worn. + +N:168:Acid Resistance +G:":d +I:40:4:0 +W:10:0:3:250 +A:10/1 +F:RES_ACID | IGNORE_ACID | EASY_KNOW +f:RES_ACID +D:This magical talisman will make the corroding forces of acid less threatening to your health. + +N:169:Adornment +G:":d +I:40:2:0 +W:10:0:3:20 +A:10/1 +F:EASY_KNOW +D:This amulet is not magical. It just looks good. + +##### 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 the 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 passages. + +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:Aggravate Monster +G:?:d +I:70:1:0 +W:5:0:5:0 +A:5/1 +D:This nasty scroll will make a loud noise, 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 transport a good portion of nourishing gruel directly into your +D:stomach. Some people say that this is a ploy of a food producer whose food nobody wants to eat. + +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. + +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. Don't read it! + +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 town 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. And as I know +D:you, you're going to slurp it down. + +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 magically 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 nice 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 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 foolish. + +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 +D:This potion infuses you with 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 +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 +D:This potion fundamentally twists your physical features, as if you were another mother's child. +D:Your physique will be shaped anew. + +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 nice 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 was made to help people with bad sleeping disorders to find rest. Surely you don't +D:want to take a nap while nasty goblins are searching for you? + +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 +D:a thing. + +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. By its look and smell, it contains a fair +D:amount of still muck and wood alcohol. + +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 when imbibed. + +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 which drains force from you, forcing you to move and act a lot slower, +D:until it wears off. + +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 greatly improves your agility and nimbleness. + +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:A wicked potion, making you less of an adventurer than by right you should be. + +N:255:Salt Water +G:!:d +I:71:5:0 +W:0:0:4:0 +A:0/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:A solution of salt in water, made for curing meat. Drinking it would cause 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 drink 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 make fire flow in your veins, rendering you less vulnerable to outward +D: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. + +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 completely negate the effect of 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. + +# 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:This looks like some animal's teeth or at least you think +D:it comes from an animal... + +# 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: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 bright blue 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. You wonder what might be inside. + +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. It doesn't seem to be locked - why not risk a look inside? + +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. + +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 big container made of wood, with a heavy iron lock. + +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. + +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 +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 +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 +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 +D:A rod of knowledge which will tell you about nearby creatures' health. + +N:354:Recall +G:-:d +I:66:3:80 +W:30:0:15:4500 +A:30/4 +P:0:1d1:0:0:0 +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 +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 +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 +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 +D:A small but extremely cold shard of ice will fly from this rod to your enemy. + +N:359:Fire Bolts +G:-:d +I:66:22:40 +W:30:0:15:3000 +A:30/1 +P:0:1d1:0:0:0 +D:This rod fires a magical flaming arrow at your foe, burning it. + +N:360:Polymorph +G:-:d +I:66:19:25 +W:35:0:15:1200 +A:35/1 +P:0:1d1:0:0:0 +D:This rod of change will cause its target creature to mutate into something else. + +N:361:Slow Monster +G:-:d +I:66:17:25 +W:30:0:15:1500 +A:30/1 +P:0:1d1:0:0:0 +D:This obstructive rod emits an energy bolt which will slow the creature it 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 +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 +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 +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 +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 +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 +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. + +N:369:Acid Balls +G:-:d +I:66:24:60 +W:70:0:15:5500 +A:70/1 +P:0:1d1:0:0:0 +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 +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 +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 +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 +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 +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 +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 +D:This rod lets you remember your previous abilities and gain them back, should they have been +D:reduced. + +N:377:Speed +G:-:d +I:66:11:100 +W:95:0:15:50000 +A:95/16 +P:0:1d1:0:0:0 +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 into 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 into 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:Good old Yorick. So that's where he ended up. + +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. Obviously, its owner no longer has a use for it. + +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:Lassie? + +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:The remains of a cat's meal. + +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:It's dead, Jim. + +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:A person of about human shape, but considerably more slightly built, has died here long ago. + +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:This was once a gnome. Looks very dead now. + +##### 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:An armour made of a black dragon's hide, containing some of this 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 piece of dragon hide fashioned into an armour, shimmering bright blue. + +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:An armour fashioned from dragon hide, glistening the white of snow. + +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:The skin of a dragon made into a suit of armour. It glows a bright red and radiates heat. + +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 suit of armour fashioned of dragon hide. It is dirty green and smells awful. + +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 made of dragonhide. It glows red, blue, green, black and white. + +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 suit of armour made of dragon hide, glowing with a strange light, or is it darkness? + +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 piece of dragonhide cut and shaped so it can be worn as armour. The scales are very sharp, +D:and the roaring of a storm seems to come from it, but you're not afraid of either. + +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 suit of armour made from dragon skin. Its brownish scales glitter in a dazzling light. + +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 golden-hued armour made of dragonhide. The rustle of its scales occasionally +D:increases to a loud boom. + +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. +D:You don't want to know what it might do to your intestines. + +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 potions 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 +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, letting 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:Lordly Protection +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 +f:BLOWS +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. Consider yourself lucky someone +D:lost a map here, since the location is yet unknown even to Morgoth. + +# 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:467:Lightning Resistance +G:":d +I:40:29:0 +W:10:0:3:250 +A:10/1 +F:RES_ELEC | IGNORE_ELEC | EASY_KNOW +f:RES_ELEC | +D:This amulet will protect you from electrical discharges and storms. + +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 Carlammas -- see artifact list + +N:503:& Amulet~ +G:":d +I:40:10:0 +W:50:0:3:60000 +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 + +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 suit of metal armour that consists of metal strips applied vertically +D:to the backing of chain, leather, or cloth. + +# 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:greater damage 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 +D:A coat made from the fur of various wild animals - it is +D:somewhat bulky, but still spacious enough to wear over armour. + +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 large axe that could be wielded in one or two hands. It has +D:a single blade with a pick on the reverse, designed for armour piercing. + +##### New armour ##### + +N:535:& Rhino Hide Armour~ +G:(:s +I:36:8:0 +W:15:0:110:400 +A:15/1 +P:8:1d1:-1:0:0 +D:A hard leather armour made from the thick hide of a rhinoceros. + +N:536:& Leather Jacket~ +G:(:U +I:36:12:0 +W:20:0:130:550 +A:20/3 +P:12:1d2:-1:0:0 +D:A garment fashioned from animal hide, resembling a robe that has been +D:shortened to waist-length, with straight-cut sleeves and a bit of decorative +D:fringe around the collar. + +##### 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:Designed specifically for foot soldiers combatting cavalry, this spear +D:is too heavy to be effective 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:left and right until it reaches the hilt. + +N:546:& Claymore~ +G:|:W +I:23:23:0 +W:40:0:200:600 +A:40/2 +P:0:2d8:0:0:0 +F:SHOW_MODS | COULD2H +f:COULD2H +D:Also known as a Claidhmore, or Greatsword, this weapon is favoured +D:by powerful mercenaries. The blade is large, straight, and broad, +D:almost as large as a two-handed sword. + +N:547:& Espadon~ +G:|:W +I:23:24:0 +W:40:0:200:600 +A:40/3 +P:0:2d9:0:0:0 +F:SHOW_MODS | MUST2H +f:MUST2H +D:This is the strictly two-handed version of the bastard sword. +D:The blade is of medium length, double-edged, and considerably +D:heavy to wield. + +N:548:& Great Scimitar~ +G:|:W +I:23:22:0 +W:40:0:240:500 +A:40/3 +P:0:4d5:0:0:0 +F:SHOW_MODS | MUST2H +f:MUST2H +D:This is a larger version of the curved oriental blade. +D:Runes of war decorate its golden hilt. + + +### Trapping Kits + +N:549:Arrow +G:`:r +I:46:2:0 +W:10:0:60:150 +A:10/2:50/2 +F:SHOW_MODS +D:It must be loaded with arrows, which will be +D:fired at the monster who triggers the trap. + +N:550:Bolt +G:`:o +I:46:3:0 +W:20:0:220:300 +A:20/2:50/2 +F:SHOW_MODS +D:It must be loaded with crossbow bolts, which will +D:be fired at the monster who triggers the trap. + +N:551:& Fauchard~ +G:/:s +I:22:6:0 +W:18:0:155:301 +A:18/2 +P:0:1d10:0:0:0 +F:SHOW_MODS | COULD2H +f:COULD2H +D:It is a type of glaive with two ornate hooks on the back +D:of the blade. It is typically 8 to 9 feet long. + +N:552:& Guisarme~ +G:/:s +I:22:16:0 +W:21:0:165:320 +A:21/1 +P:0:2d5:0:0:0 +F:SHOW_MODS | COULD2H +f:COULD2H +D:Mounted on a long shaft for maximum reach, this weapon is +D:effective at repelling both cavalry and infantry. + +N:553:& Heavy Lance~ +G:/:s +I:22:29:0 +W:43:0:400:700 +A:43/2 +P:0:4d8:0:0:0 +F:SHOW_MODS | MUST2H +f:MUST2H +D:This is a shock weapon. Its purpose is to unhorse a rider +D:in single combat, or smash through the armour of opposing lines. + +N:554:& Basilard~ +G:|:w +I:23:9:0 +W:15:0:80:220 +A:15/3 +P:0:1d8:0:0:0 +F:SHOW_MODS +D:This is a two-edged dagger with a long blade. A favourite among travellers +D:and warriors alike, it can be worn comfortably with plain clothes +D:as well as armour. + +### Trapping Kits + +N:555:Catapult +G:`:R +I:46:1:0 +W:1:0:50:40 +A:1/2:20/2 +F:SHOW_MODS +D:It must be loaded with sling bullets, which will +D:be fired at the monster who triggers the trap. + +N:556:& Ring Mail~ +G:[:s +I:37:2:0 +W:20:0:200:500 +A:20/1 +P:12:1d4:-2:0:0 +D:A suit of non-overlapping metal rings sewn onto a +D:heavy leather backing. + +N:557:& Cord Armour~ +G:(:y +I:36:9:0 +W:5:0:80:40 +A:5/1 +P:6:1d1:0:0:0 +D:Fibres of hemp or other natural material woven and knotted +D:into a thick, tough fabric. + +N:558:& Paper Armour~ +G:(:w +I:36:3:0 +W:5:0:30:40 +A:5/2 +P:4:1d1:0:0:0 +D:Thickly pleated sheets of paper assembled together into +D:a suit of armour. + +N:559:& Padded Armour~ +G:(:y +I:36:10:0 +W:2:0:60:40 +A:2/1 +P:4:1d1:0:0:0 +D:Heavy, multi-layered cloth sewn together to cover the body, +D:with extra padding between layers. + +### Trapping Kits + +N:560:Fumes +G:`:G +I:46:4:0 +W:2:0:20:50 +A:2/2:30/2 +D:It must be loaded with potions, which will splatter +D:over the monster who triggers the trap. + +N:561:& Stone and Hide Armour~ +G:(:U +I:36:15:0 +W:35:0:200:500 +A:35/7 +P:15:1d1:-1:0:0 +D:A primitive armour made from a thick hide reinforced by stone shards. + +### Trapping Kits + +N:562:Magic +G:`:g +I:46:5:0 +W:5:0:20:50 +A:5/2:40/2 +F:IGNORE_ACID | IGNORE_FIRE | IGNORE_COLD | IGNORE_ELEC +D:It must be loaded with scrolls, which will release +D:their spells at the monster who triggers the trap. + +N:563:Device +G:`:v +I:46:6:0 +W:20:0:20:50 +A:20/2:40/2:60/2 +F:IGNORE_ACID | IGNORE_FIRE | IGNORE_COLD | IGNORE_ELEC +D:It must be loaded with a magic device (wand, staff, or rod), which +D:will fire its spell at the monster who triggers the trap. + +N:564:Nothing +G:?:d +I:70:53:0 +W:1:0:5:2 +A:1/1 +P:0:1d1:0:0:0 + +N:565:Poison +G:*:G +I:4:1:5 +W:0:0:4:2 +A:0/1 +P:0:1d1:0:0:0 + +# wand +N:566:Nothing +G:-:d +I:65:2:-1:SPELL=Nothing +W:2:0:10:20 +A:2/1 +P:0:1d1:0:0:0 +F:NO_RECHARGE | SPECIAL_GENE + +N:567:Nothing +G:=:d +I:45:50:0 +W:5:0:2:20 +A:5/1 +P:0:1d1:0:0:0 + +N:568:Nothing +G:_:d +I:55:30:0 +W:5:0:50:50 +A:5/1 +P:0:1d1:0:0:0 +F:NO_RECHARGE | SPECIAL_GENE + +N:569:Nothing +G:-:d +I:66:0:1 +W:5:0:10:50 +A:5/1 +P:0:1d1:0:0:0 + + +# Here comes the Essences (randomly interspersed with other stuff...) + +N:570:Explosion +G:*:G +I:4:2:50 +W:0:0:4:2 +A:0/1:20/1:40/1:60/1 +P:0:1d1:0:0:0 + +N:571:Teleport +G:*:G +I:4:3:190 +W:0:0:4:2 +A:5/1:20/1:40/1:60/1 +P:0:1d1:0:0:0 + +# Amulet of Nothing + +N:572:Nothing +G:":d +I:40:16:0 +W:10:0:3:20 +A:10/1 +P:0:1d1:0:0:0 + +# An artifact potion! The Blood of Life... + +N:573:& Blood~ of Life +G:!:d +I:71:3:200 +W:70:0:4:10000 +A:70/16 +P:0:1d1:0:0:0 +T:71:2 +F:NORM_ART | FULL_NAME +D:Quaffing this measure of living blood will imbue your body and soul +D:with the power to escape death one time. + +N:574:Cold +G:*:G +I:4:4:200 +W:0:0:4:2 +A:5/1:20/1:40/1:60/1 +P:0:1d1:0:0:0 + +N:575:Fire +G:*:G +I:4:5:200 +W:0:0:4:2 +A:5/1:20/1:40/1:60/1 +P:0:1d1:0:0:0 + +N:576:Acid +G:*:G +I:4:6:200 +W:0:0:4:2 +A:6/1:20/1:40/1:60/1 +P:0:1d1:0:0:0 + +# Mage staffs (for Sorcerers to wield.) + +N:577:& Mage Staff~ +G:\:B +I:6:1:0 +W:5:0:12:300 +A:5/1:20/1:50/1:80/1 +P:0:1d4:0:0:0 +F:SHOW_MODS | COULD2H +f:COULD2H +D:It looks like a simple walking stick, plain and nondescript. +D:In the hands of a spellcaster, it can be a deadly weapon. + +# An extra ring, out of place + +N:578:Lightning +G:=:d +I:45:56:0 +W:50:0:2:3000 +A:50/1 +P:0:0d0:0:0:15 +a:HARDCORE=BA_ELEC_4 +F:RES_ELEC | IGNORE_ELEC | ACTIVATE +f:RES_ELEC | +D:This sparkling circlet grants you protection, makes electricity less +D:dangerous and even allows you to call forth a ball of lightning. + +# More essences + +N:579:Life +G:*:G +I:4:7:300 +W:0:0:4:2 +A:0/1:20/1:40/1:60/1 +P:0:1d1:0:0:0 + +N:580:Confusion +G:*:G +I:4:8:100 +W:0:0:4:2 +A:0/1:20/1:40/1:60/1 +P:0:1d1:0:0:0 + +N:581:Light +G:*:G +I:4:9:60 +W:0:0:4:2 +A:0/1:20/1:40/1:60/1 +P:0:1d1:0:0:0 + +# The Ring of Flare -- see artifact list + +N:582:& Ring~ +G:=:y +I:45:52:5 +W:50:25:2:75000 +F:INSTA_ART + +# Potion of Invisibility + +N:583:Invisibility +G:!:d +I:71:8:0 +W:3:0:4:50 +A:3/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This magical brew will temporarily hide you from sight, and also attunes you +D:to this state so that your eyes can still perceive your hidden form. + +N:584:Chaos +G:*:G +I:4:10:200 +W:20:0:4:2 +A:20/1 +P:0:1d1:0:0:0 +F:ATTR_MULTI + +# Potion of Corruption + +N:585:Corruption +G:!:d +I:71:10:0 +W:3:0:4:0 +A:20/1:30/1:40/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This concoction of toxic wastes will strangely warp your shape. + +# Ring of Invisibility + +N:586:Invisibility +G:=:d +I:45:53:4 +W:50:0:2:10000 +A:50/1 +F:INVIS | HIDE_TYPE +f:INVIS | +D:This magical bauble will hide you from sight. + +### Just another essence, to confuse the edit file hackers ;) ### + +N:587:Time +G:*:G +I:4:11:600 +W:20:0:4:2 +A:20/1:40/1:60/1 +P:0:1d1:0:0:0 + +######### Here are the parchments ######## + +N:588:Deep Thoughts +G:?:o +I:8:0:0 +W:3:0:5:50 +A:3/1 +D:This parchment contains the thoughts of a powerful +D:wizard who departed Middle-earth long ago. + +N:589:More Deep Thoughts +G:?:o +I:8:1:0 +W:4:0:5:50 +A:4/1 +D:This parchment contains the thoughts of a powerful +D:wizard who departed Middle-earth long ago. + +N:590:Compendium of Deep Thoughts +G:?:o +I:8:2:0 +W:5:0:5:50 +A:5/1 +D:This parchment contains the thoughts of a powerful +D:wizard who departed Middle-earth long ago. + +N:591:Artifact Lore Vol. I +G:?:o +I:8:6:0 +W:40:0:5:50 +A:40/3 +D:This parchment contains information about unique +D:artifacts that are rumoured to exist upon Arda. + +N:592:Artifact Lore Vol. II +G:?:o +I:8:7:0 +W:40:0:5:50 +A:40/3 +D:This parchment contains information about unique +D:artifacts that are rumoured to exist upon Arda. + +N:593:Artifact Lore Vol. III +G:?:o +I:8:8:0 +W:40:0:5:50 +A:40/3 +D:This parchment contains information about unique +D:artifacts that are rumoured to exist upon Arda. + +N:594:Monstrous Compendium 1 +G:?:o +I:8:9:0 +W:10:0:5:50 +A:10/2 +D:This parchment contains a small part of the collected +D:lore concerning monsters inhabiting Arda. + +N:595:Monstrous Compendium 2 +G:?:o +I:8:10:0 +W:11:0:5:50 +A:11/2 +D:This parchment contains a small part of the collected +D:lore concerning monsters inhabiting Arda. + +N:596:Monstrous Compendium 3 +G:?:o +I:8:11:0 +W:12:0:5:50 +A:12/2 +D:This parchment contains a small part of the collected +D:lore concerning monsters inhabiting Arda. + +N:597:Monstrous Compendium 4 +G:?:o +I:8:12:0 +W:13:0:5:50 +A:13/2 +D:This parchment contains a small part of the collected +D:lore concerning monsters inhabiting Arda. + +N:598:Monstrous Compendium 5 +G:?:o +I:8:13:0 +W:14:0:5:50 +A:14/2 +D:This parchment contains a small part of the collected +D:lore concerning monsters inhabiting Arda. + +N:599:Monstrous Compendium 6 +G:?:o +I:8:14:0 +W:15:0:5:50 +A:15/2 +D:This parchment contains a small part of the collected +D:lore concerning monsters inhabiting Arda. + +N:600:Monstrous Compendium 7 +G:?:o +I:8:15:0 +W:16:0:5:50 +A:16/2 +D:This parchment contains a small part of the collected +D:lore concerning monsters inhabiting Arda. + +N:601:Monstrous Compendium 8 +G:?:o +I:8:16:0 +W:17:0:5:50 +A:17/2 +D:This parchment contains a small part of the collected +D:lore concerning monsters inhabiting Arda. + +N:602:Monstrous Compendium 9 +G:?:o +I:8:17:0 +W:18:0:5:50 +A:18/2 +D:This parchment contains a small part of the collected +D:lore concerning monsters inhabiting Arda. + +N:603:Monstrous Compendium 10 +G:?:o +I:8:18:0 +W:19:0:5:50 +A:19/2 +D:This parchment contains a small part of the collected +D:lore concerning monsters inhabiting Arda. + +N:604:Monstrous Compendium 11 +G:?:o +I:8:19:0 +W:20:0:5:50 +A:20/2 +D:This parchment contains a small part of the collected +D:lore concerning monsters inhabiting Arda. + +#### Here come the shape-shifting potions. #### + +N:605:& Morphic Oil~ of # +G:!:d +I:72:1:0 +W:5:0:4:100 +A:1/3:5/1:10/1 +P:0:1d1:0:0:0 +F:FULL_NAME | EASY_KNOW +D:This concoction can transform your body for a short period of time. + +# XXX 606 -> 617 + +# The Mimic's cloaks + +N:618:& #~ +G:(:y +I:35:100:0:50 +W:5:130:30:100 +A:5/1:15/1:35/1:55/1:75/1 +P:1:1d1:0:0:0 +D:Combined with proper skill, this cloak can make you seem +D:like a different creature. Otherwise, it just provides some +D:extra protection. + +# XXX 619 -> 639 + +# One more essence... + +N:640:Magic +G:*:G +I:4:12:700 +W:20:0:4:2 +A:30/1:50/1:80/1 +P:0:1d1:0:0:0 + +# Here are the corpses + +N:641:corpse +G:~:U +I:9:1:3000 +W:20:0:80:0 +A:30/1 +P:0:1d1:0:0:0 +F:DECAY +D:Whatever happened with this one, it wasn't pretty. + +N:642:skeleton +G:~:U +I:9:2:800 +W:20:0:2:0 +A:30/1 +P:0:1d1:0:0:0 +D:The sorry, bony remains of some hapless creature. + +N:643:head +G:~:U +I:9:3:600 +W:20:0:10:0 +A:30/1 +P:0:1d1:0:0:0 +F:DECAY +D:2 eyes, 2 ears, a mouth, some hair -- yep, that's a head. + +N:644:skull +G:~:U +I:9:4:1000 +W:20:0:20:0 +A:30/1 +P:0:1d1:0:0:0 +D:It's a white bony skull, smiling to you without teeth. + +N:645:raw meat +G:~:U +I:9:5:1200 +W:20:0:10:2 +A:30/1 +P:0:1d1:0:0:0 +F:DECAY +D:Yuck, just looking at it makes your stomach upset. + +# New armour: Thunderlord Coat. (With two low resists, it shouldn't be +# at only 5th level. Make it 25th. -JLE...) + +N:646:& Thunderlord Coat~ +G:(:y +I:36:16:0 +W:5:0:60:400 +A:25/1 +P:9:1d1:0:0:0 +F:RES_FIRE | RES_COLD | +D:This suit of thick impregnated cloth is worn by the riders of flying steeds, +D:and protects them from extremes of temperatures. + +# The Stone of Lore -- see artifact list +N:647:& Stone~ +G:~:g +I:39:106:0 +W:15:0:15:20000 +F:INSTA_ART | SPECIAL_GENE + +# Here are the boomerangs + +N:648:& Small Wooden Boomerang~ +G:{:y +I:15:1:0 +W:1:0:60:10 +A:1/1:5/2:10/2:20/2 +P:0:1d4:0:0:0 +D:A small curved piece of wood. + +N:649:& Wooden Boomerang~ +G:{:y +I:15:2:0 +W:10:0:60:100 +A:10/1:20/2 +P:0:1d8:0:0:0 +D:A strange, curved leaf-shaped piece of wood. + +N:650:& Small Metal Boomerang~ +G:{:y +I:15:3:0 +W:20:0:60:400 +A:20/1:30/2 +P:0:3d4:0:0:0 +D:A short boomerang with metal blades on the "forward" edges. + +N:651:& Metal Boomerang~ +G:{:y +I:15:4:0 +W:30:0:60:800 +A:30/1:50/2 +P:0:4d5:0:0:0 +D:A strange curved leaf-shaped piece of wood, its "forward" edges enhanced with metal blades. + +# The Space-Time Anchor -- see artifact list +N:652:& Anchor~ +G:~:v +I:39:105:0 +W:30:0:15:50000 +F:INSTA_ART + +# To convert monsters into objects for wielding them ! ! ! :) +# Funny, funny, funny :) +# pval the monster idx, pval2 for the monster hp +N:653:& ~ +G:~:y +I:99:1:0 +W:127:200:60:0 +A:127/255 +P:0:0d0:0:0:0 + +N:654:Summon Never-Moving Pet +G:?:d +I:70:6:0 +W:5:0:5:125 +A:5/1:15/1:25/1:35/1:65/1:85/1:95/1 +D:A piece of paper, inscribed with runes which will summon an immobile creature to your aid. + +# XXX +# XXX + +###The potions of cure insanity, in light, medium, regular, and full +###versions. Cure light's W:x entry reduced to 1, so it doesn't boost level rating when appearing +###at 50' - nyra + +N:657:Cure Light Insanity +G:!:d +I:72:14:0 +W:1:5:4:15 +A:5/1:1/1:3/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:A magical potion which drives away irrational quirks of behaviour. + +N:658:Cure Serious Insanity +G:!:d +I:72:15:0 +W:10:5:4:40 +A:10/1 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:A magical brew which will lift shadows that have been cast on your soul. + +N:659:Cure Critical Insanity +G:!:d +I:72:16:0 +W:15:5:4:100 +A:15/3 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This drink will cure you even of serious mental disorders. + +N:660:Cure Insanity +G:!:d +I:72:17:0 +W:25:5:4:300 +A:25/3 +P:0:1d1:0:0:0 +F:FOUNTAIN +D:This blessed potion can make you completely sane and healthy, even if you have only the +D:faintest shred of sanity left. + +# The Phial of Undeath -- see artifact list. He he he he... + +N:661:& Phial~ +G:~:y +I:39:103:0 +W:1:0:10:0 +P:0:1d1:0:0:0 +F:INSTA_ART + +# Here is the random artifact type. +# This is used as a template -- the sval will be chosen later +# on in the game to be an index to the random_artifacts array, +# which in turn determines: +# +# Name +# Color +# Level +# Cost + +N:662:Random Artifact +G:~:o +I:102:0:0 +W:1:0:50:0 +A:1/1:10/1:20/1:30/1 +F:INSTA_ART | ACTIVATE | ACTIVATE_NO_WIELD + +N:663:Craftsmanship +G:?:d +I:70:19:0 +W:80:0:5:200000 +A:80/16 +D:A powerful scroll, desired by many, as it can magically improve the special powers of magical +D:weaponry. + +# A Parchment, not the Artifact +N:664:The One Ring +G:?:s +I:8:4:0 +W:10:100:5:50 +A:10/2 +D:This parchment contains words in the Black Speech and Westron, +D:and they seem to speak of a powerful Ring... could it be true? + +# XXX 665 - 668 were the old music books + +### Musical Instruments ### + +N:669:& Horn~ +G:/:W +I:14:60:1 +W:7:0:30:400 +A:7/2:20/1:40/1:80/1 +P:0:1d1:0:0:0 +F:CON | ACTIVATE | WIELD_CAST +D:A simple wind instrument made from brass. If used by inexperienced musicians it sounds +D:like somebody making "prbbt!" noises down a drainpipe. + +N:670:& Drum~ +G:/:W +I:14:58:1 +W:7:0:30:400 +A:7/2:20/1:40/1:80/1 +P:0:1d1:0:0:0 +F:STR | WIELD_CAST +D:A sort of clay pot with a bit of skin stretched over its mouth. + +N:671:& Harp~ +G:/:W +I:14:59:1 +W:7:0:30:400 +A:7/2:20/1:40/1:80/1 +P:0:1d1:0:0:0 +F:CHR | WIELD_CAST +D:A number of strings held by a wooden frame. + +#N:672:& Banjo~ +#G:/:W +#I:14:2:0 +#W:15:0:30:200 +#A:15/1 +#P:0:1d1:0:0:0 +#D:A combination of kithara and tambourine. It looks strange and sounds bad. + +#N:673:& Lute~ +#G:/:W +#I:14:3:0 +#W:20:0:30:200 +#A:20/1 +#P:0:1d1:0:0:0 +#D:A string instrument, to be plucked with your fingers. + +#N:674:& Mandolin~ +#G:/:W +#I:14:4:0 +#W:25:0:30:300 +#A:25/1 +#P:0:1d1:0:0:0 +#D:A small string instrument, typically strummed with your fingers or a plectron. + +# The Palantir of Orthanc -- see artifact list + +N:675:& Palantir~ +G:~:y +I:39:104:0 +W:75:0:200:100000 +P:0:10d10:0:0:0 +F:INSTA_ART + +### The Monster Egg template; note the theoretical weight of 3 lbs ### + +N:676:Egg +G:,:W +I:10:1:0 +W:5:0:30:100 +A:5/1:15/1:25/1:35/1 +P:0:1d1:0:0:0 +F:ACTIVATE | ACTIVATE_NO_WIELD + +### Two more scrolls ### + +N:677:Reset Recall +G:?:d +I:70:23:0 +W:20:0:5:125 +A:20/1:25/1:35/1 +D:A strange formula is inscribed on this scroll, which allows you to define another place as the +D:location to which recalls shall move you. + +N:678:Divination +G:?:d +I:70:31:0 +W:20:0:5:600 +A:30/1:45/1:55/1 +D:This scroll is inscribed with a ritual which allows you to discern what fate holds in store for +D:you. + +### Here comes the Runes ### + +N:679:Self +G:?:b +I:105:0:0 +W:3:5:2:40 +A:3/1 +P:0:1d1:0:0:0 + +N:680:Ray +G:?:b +I:105:2:0 +W:10:5:2:300 +A:10/1 +P:0:1d1:0:0:0 +F:IGNORE_COLD | IGNORE_ELEC + +N:681:Sphere +G:?:b +I:105:3:0 +W:15:5:2:1000 +A:15/1 +P:0:1d1:0:0:0 +F:IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD + +N:682:Knowledge +G:?:b +I:104:91:0 +W:6:5:2:200 +A:6/1 +P:0:1d1:0:0:0 + +N:683:Life +G:?:D +I:104:53:0 +W:3:5:2:200 +A:3/1 +P:0:1d1:0:0:0 + +N:684:Fire +G:?:r +I:104:5:0 +W:10:5:2:300 +A:10/1 +P:0:1d1:0:0:0 +F:IGNORE_FIRE + +N:685:Cold +G:?:b +I:104:4:0 +W:12:5:2:300 +A:12/1 +P:0:1d1:0:0:0 +F:IGNORE_COLD + +N:686:Lightning +G:?:W +I:104:1:0 +W:13:5:2:300 +A:13/1 +P:0:1d1:0:0:0 +F:IGNORE_ELEC + +N:687:Acid +G:?:B +I:104:3:0 +W:16:5:2:300 +A:16/1 +P:0:1d1:0:0:0 +F:IGNORE_ACID + +N:688:Element +G:?:g +I:104:10:0 +W:23:5:2:1000 +A:23/1 +P:0:1d1:0:0:0 +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD + +N:689:Chaos +G:?:v +I:104:30:0 +W:26:5:2:2000 +A:26/1 +P:0:1d1:0:0:0 +F:ATTR_MULTI +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD + +N:690:Mind +G:?:D +I:104:85:0 +W:19:5:2:3000 +A:19/1 +P:0:1d1:0:0:0 +F:IGNORE_ELEC + +N:691:Holding +G:?:B +I:104:75:0 +W:5:5:2:500 +A:5/1 +P:0:1d1:0:0:0 +F:IGNORE_ACID + +N:692:Arrow +G:?:b +I:105:1:0 +W:6:5:2:100 +A:6/1 +P:0:1d1:0:0:0 +F:IGNORE_ELEC + +N:693:Power Surge +G:?:b +I:105:4:0 +W:50:5:2:5000 +A:50/1 +P:0:1d1:0:0:0 +F:IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD | IGNORE_ACID + +N:694:Armageddon +G:?:b +I:105:5:0 +W:30:5:2:4000 +A:30/1 +P:0:1d1:0:0:0 +F:IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD | IGNORE_ACID + +N:695:Gravity +G:?:G +I:104:35:0 +W:16:5:2:300 +A:16/1 +P:0:1d1:0:0:0 +F:IGNORE_ACID + +# And, among the runes, one more essence... + +N:696:Extra Life +G:*:G +I:4:13:900 +W:50:0:4:2 +A:50/1:70/1:90/1 +P:0:1d1:0:0:0 + +# Now, the rest of the runes... + +N:697:Undeath +G:?:G +I:104:92:0 +W:35:5:2:1000 +A:35/1 +P:0:1d1:0:0:0 +F:IGNORE_ACID + +N:698:Protection +G:?:G +I:104:74:0 +W:45:5:2:1500 +A:45/1 +P:0:1d1:0:0:0 +F:IGNORE_ACID + +# XXX + +# The Ring of Precognition (now a k_info.txt artifact) +N:700:& Ring~ of Precognition +G:=:d +I:45:51:0 +W:90:0:2:300000 +A:90/100 +T:45:23 +F:PRECOGNITION | +f:PRECOGNITION | +F:NORM_ART | FULL_NAME +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +D:This magical ring allows you to know what you will encounter in the near future. + +# Athelas, cures Black Breath + +N:701:& Sprig~ of Athelas +G:,:g +I:80:40:0 +W:25:5:2:450 +A:25/2:55/1:85/1 +D:'When the black breath blows / And death's shadow grows / +D:And all lights pass / Come Athelas! Come Athelas! / +D:Life to the dying / In the King's hands lying.' + +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX + +# The Scroll of Deincarnation (now an artifact) + +N:720:& Old Scroll~ of Deincarnation +G:?:d +I:70:40:0 +W:90:0:5:160000 +A:90/140 +T:70:51 +F:NORM_ART | FULL_NAME +F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD +D:It allows you to leave your body to reincarnate into +D:another one, however, your current body is lost in the process. + +N:721:& Dark Sword~ +G:|:D +I:23:33:0 +W:25:0:70:500 +A:25/1:80/2 +P:0:3d7:0:0:0 +F:SHOW_MODS | ANTIMAGIC_50 +f:ANTIMAGIC_50 +D:A strange, very sharp long sword, which seems to drain light from its surroundings. As you +D:wield it, you feel much less attuned to magic. + +N:722:Numenorean for Beginners (I) +G:?:s +I:8:101:0 +W:10:100:5:50 +A:10/2 +D:These ancient words still contain magic. + +N:723:Numenorean for Beginners (II) +G:?:s +I:8:102:0 +W:5:100:5:50 +A:5/2 +D:These ancient words still contain magic. + +N:724:Advanced Lessons of Numenorean +G:?:s +I:8:103:0 +W:20:100:5:50 +A:20/2 +D:These ancient words still contain magic. + +N:725:Advanced Lessons of Sindarin +G:?:s +I:8:104:0 +W:20:100:5:50 +A:20/2 +D:These ancient words still contain magic. + +##### Junk ##### + +N:726:& Shard~ of Pottery +G:~:r +I:11:3:0 +W:0:0:5:0 +A:0/1 +P:0:1d1:0:0:0 +F:EASY_KNOW +D:Half a clay jar -- how many failed artists have taken refuge in these dungeons? + +N:727:& Broken Stick~ +G:~:r +I:11:6:0 +W:0:0:3:0 +A:0/1 +P:0:1d1:0:0:0 +F:EASY_KNOW +D:A piece of rotten wood. + +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX + +N:738:& Book~ of Beginner Cantrips +G:?:w +I:111:50:0 +W:5:0:30:100 +A:5/1 +P:0:1d1:0:0:0 +D:The blood smudged on the cover makes you wonder how many people had it before you... + +N:739:& Book~ of Teleportation +G:?:w +I:111:51:0 +W:10:0:30:1000 +A:10/1 +P:0:1d1:0:0:0 +D:A standard spellbook with a few spells. + +# XXX + +N:741:& Book~ of Summoning +G:?:w +I:111:52:0 +W:7:0:30:700 +A:7/1 +P:0:1d1:0:0:0 +D:A standard spellbook with a few spells. +D:It smells like camel. + +# XXX + +# The Potion of Learning - another artifact! + +N:743:& Potion~ of Learning +G:!:d +I:71:12:200 +W:90:0:4:100000 +A:90/25 +P:0:1d1:0:0:0 +T:71:49 +F:NORM_ART | FULL_NAME +F:IGNORE_ACID | IGNORE_FIRE | IGNORE_COLD | IGNORE_ELEC +D:This old potion is supposed to grant more learning power +D:to its user. + +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX +# XXX + +N:751:Khuzdul - The Hidden Tongue of the Dwarves +G:?:s +I:8:105:0 +W:2:100:5:50 +A:2/2 +D:These ancient words still contain magic. + +N:752:Nandorin for Dummies +G:?:s +I:8:106:0 +W:20:100:5:50 +A:20/2 +D:These ancient words still contain magic. + +N:753:Advanced Lessons of Orcish +G:?:s +I:8:107:0 +W:30:100:5:50 +A:30/2 +D:These ancient words still contain magic. + +# Here's the Ring of Flying +N:755:Flying +G:=:d +I:45:54:0 +W:20:0:2:16000 +A:20/3 +F:FLY | EASY_KNOW +f:FLY | +D:This ring is imbued with the power of eagles. It grants you the power of flight. + +N:756:& Tome~ of the Time +G:?:b +I:111:8:0 +W:50:0:30:25000 +A:50/4 +P:0:1d1:0:0:0 +F:FULL_NAME | EASY_KNOW +D:This tome seems to have trouble deciding whether it really exists now. Its flickering pages +D:contain all that is known about the currents of time. + +N:757:& Spellbook~ of # +G:?:w +I:111:255:0 +W:10:0:30:200 +A:10/1:20/1:30/1:40/1:50/1:60/1:70/1 +P:0:1d1:0:0:0 +D:This book contains a single spell within its pages. + |