From 2be0e9bd410def15e0a1bfafec809a7d26a4742a Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Sun, 13 May 2018 21:58:01 +0200 Subject: [PATCH] customize equipment for each game, in Lua. no more equipment.xml for e3 --- conf/e3/config.json | 1 - res/e3a/equipment.xml | 11 ---- res/eressea/equipment.xml | 5 -- scripts/eressea/e2/init.lua | 22 ++++++-- scripts/eressea/e3/init.lua | 12 ++++- scripts/eressea/equipment.lua | 98 +++++++++++++++++------------------ 6 files changed, 77 insertions(+), 72 deletions(-) delete mode 100644 res/e3a/equipment.xml diff --git a/conf/e3/config.json b/conf/e3/config.json index ad7a44b2f..0cd2c1606 100644 --- a/conf/e3/config.json +++ b/conf/e3/config.json @@ -8,7 +8,6 @@ "config://conf/e3/items.json", "config://conf/e3/races.json", "config://res/e3a/familiars.xml", - "config://res/e3a/equipment.xml", "config://res/e3a/ships.xml", "config://res/e3a/buildings.xml", "config://res/e3a/spells.xml", diff --git a/res/e3a/equipment.xml b/res/e3a/equipment.xml deleted file mode 100644 index d8c529d8a..000000000 --- a/res/e3a/equipment.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/res/eressea/equipment.xml b/res/eressea/equipment.xml index a03aba2ce..2a39a5295 100644 --- a/res/eressea/equipment.xml +++ b/res/eressea/equipment.xml @@ -36,11 +36,6 @@ - - - - - diff --git a/scripts/eressea/e2/init.lua b/scripts/eressea/e2/init.lua index ba6c9895b..4ef2212c0 100644 --- a/scripts/eressea/e2/init.lua +++ b/scripts/eressea/e2/init.lua @@ -1,5 +1,22 @@ require 'eressea.spells' -eressea.log.debug("rules for game E2") +eressea.log.debug('rules for game E2') + +local equipment = require('eressea.equipment') +local sets = { + ['new_orc'] = { + ['skills'] = { + ['polearm'] = 1, + ['melee'] = 1 + } + }, + ['spo_seaserpent'] = { + ['items'] = { + ['dragonblood'] = 6, + ['seaserpenthead'] = 1 + } + } +} +equipment.add_multiple(sets) return { require('eressea'), @@ -13,6 +30,5 @@ return { require('eressea.astral'), require('eressea.jsreport'), require('eressea.ents'), - require('eressea.equipment'), - require('eressea.cursed') + require('eressea.cursed'), } diff --git a/scripts/eressea/e3/init.lua b/scripts/eressea/e3/init.lua index 0b1d21664..a19049512 100644 --- a/scripts/eressea/e3/init.lua +++ b/scripts/eressea/e3/init.lua @@ -2,10 +2,20 @@ require 'eressea.spells' eressea.log.debug("rules for game E3") +local equipment = require('eressea.equipment') +local sets = { + ['spo_seaserpent'] = { + ['items'] = { + ['dragonblood'] = 2, + ['seaserpenthead'] = 1 + } + } +} +equipment.add_multiple(sets) + return { require('eressea'), require('eressea.xmasitems'), require('eressea.frost'), - require('eressea.equipment'), require('eressea.ents') } diff --git a/scripts/eressea/equipment.lua b/scripts/eressea/equipment.lua index 423fc0280..b85fd587b 100644 --- a/scripts/eressea/equipment.lua +++ b/scripts/eressea/equipment.lua @@ -1,46 +1,7 @@ -- forward declaration required: -local sets = {} -local function equip_new_orc(u, flags) - local eqname = 'orc_' .. config.rules - local set = sets[eqname] - if set then - return equip_unit(u, eqname, flags) - end - return false -end - -function equip_unit(u, name, flags) - local set = sets[name] - if set then - local items = set['items'] - if items then - for k,v in pairs(items) do - u:add_item(k, v) - end - end - local skills = set['skills'] - if skills then - for k,v in pairs(skills) do - u:set_skill(k, v) - end - end - local spells = set['spells'] - if spells then - for k, v in ipairs(spells) do - u:add_spell(v) - end - end - local callback = set['callback'] - if callback and type(callback) == 'function' then - callback(u, flags) - end - return true - end - return false -end - -sets = { +local self = {} +local mysets = { ['first_unit'] = { ['items'] = { ['money'] = 2500, @@ -65,15 +26,6 @@ sets = { ['melee'] = 1 } }, - ['new_orc'] = { - ['callback'] = equip_new_orc - }, - ['orc_e2'] = { - ['skills'] = { - ['polearm'] = 1, - ['melee'] = 1 - } - }, ['seed_dwarf'] = { ['items'] = { ['axe'] = 1, @@ -157,4 +109,48 @@ sets = { }, } -return nil +function equip_unit(u, name, flags) + local set = mysets[name] + if set then + local items = set['items'] + if items then + for k,v in pairs(items) do + u:add_item(k, v) + end + end + local skills = set['skills'] + if skills then + for k,v in pairs(skills) do + u:set_skill(k, v) + end + end + local spells = set['spells'] + if spells then + for k, v in ipairs(spells) do + u:add_spell(v) + end + end + local callback = set['callback'] + if callback and type(callback) == 'function' then + callback(u, flags) + end + return true + end + return false +end + +self.add = function(name, set) + mysets[name] = set +end + +self.add_multiple = function(sets) + for name, v in pairs(sets) do + mysets[name] = v + end +end + +self.get = function(name) + return mysets[name] +end + +return self