diff --git a/res/e3a/armor/towershield.xml b/res/e3a/armor/towershield.xml index e80c03523..dcd2858cf 100644 --- a/res/e3a/armor/towershield.xml +++ b/res/e3a/armor/towershield.xml @@ -1,6 +1,6 @@ - + diff --git a/res/e3a/races.xml b/res/e3a/races.xml index 2e5a81aee..fc16645c6 100644 --- a/res/e3a/races.xml +++ b/res/e3a/races.xml @@ -71,7 +71,11 @@ - + @@ -116,7 +120,11 @@ - + @@ -156,7 +164,11 @@ - + diff --git a/res/races/goblin-3.xml b/res/races/goblin-3.xml index a65d4c99a..8deb33f5e 100644 --- a/res/races/goblin-3.xml +++ b/res/races/goblin-3.xml @@ -3,7 +3,7 @@ recruitcost="60" maintenance="6" weight="600" capacity="440" speed="1.0" hp="16" damage="1d5" unarmedattack="-2" unarmeddefense="0" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" -getitem="yes" equipment="yes" healing="2.0"> +getitem="yes" equipment="yes" healing="2.0" items="4"> diff --git a/scripts/tests/e3/items.lua b/scripts/tests/e3/items.lua index b2100f5ed..5594eed67 100644 --- a/scripts/tests/e3/items.lua +++ b/scripts/tests/e3/items.lua @@ -14,7 +14,9 @@ function test_goblins() local f1 = faction.create("goblin@eressea.de", "goblin", "de") local f2 = faction.create("dwarf@eressea.de", "dwarf", "de") local f3 = faction.create("elf@eressea.de", "elf", "de") - local u1 = unit.create(f1, r, 1) + local ud = unit.create(f1, r, 1) + local uh = unit.create(f1, r, 1) + uh.race = "halfling" local u2 = unit.create(f2, r, 1) local u3 = unit.create(f3, r, 1) @@ -24,12 +26,15 @@ function test_goblins() "plate", "rustyhalberd", "halberd", "greatsword" } for k, v in ipairs(restricted) do - u1:add_item(v, 1) + ud:add_item(v, 1) + uh:add_item(v, 1) u2:add_item(v, 1) u3:add_item(v, 1) end - u1:add_order("ATTACKIERE " .. itoa36(u2.id)) - u1:add_order("ATTACKIERE " .. itoa36(u3.id)) + uh:add_order("ATTACKIERE " .. itoa36(u2.id)) + uh:add_order("ATTACKIERE " .. itoa36(u3.id)) + ud:add_order("ATTACKIERE " .. itoa36(u2.id)) + ud:add_order("ATTACKIERE " .. itoa36(u3.id)) process_orders() end diff --git a/src/kernel/xmlreader.c b/src/kernel/xmlreader.c index af0a9dd23..3a6ba6d81 100644 --- a/src/kernel/xmlreader.c +++ b/src/kernel/xmlreader.c @@ -782,6 +782,8 @@ static item_type *xml_readitem(xmlXPathContextPtr xpath, resource_type * rtype) itype = rtype->itype ? rtype->itype : it_get_or_create(rtype); itype->weight = xml_ivalue(node, "weight", 0); itype->capacity = xml_ivalue(node, "capacity", 0); + itype->mask_allow = xml_ivalue(node, "allow", 0); + itype->mask_deny = xml_ivalue(node, "deny", 0); itype->flags |= flags; /* reading item/construction */ @@ -1575,6 +1577,7 @@ static int parse_races(xmlDocPtr doc) rc->speed = (float)xml_fvalue(node, "speed", rc->speed); rc->hitpoints = xml_ivalue(node, "hp", rc->hitpoints); rc->armor = (char)xml_ivalue(node, "ac", rc->armor); + rc->mask_item = (char)xml_ivalue(node, "items", rc->mask_item); study_speed_base = xml_ivalue(node, "studyspeed", 0); rc->at_default = (char)xml_ivalue(node, "unarmedattack", -2);