customize equipment for each game, in Lua.

no more equipment.xml for e3
This commit is contained in:
Enno Rehling 2018-05-13 21:58:01 +02:00
parent a741eaca97
commit 2be0e9bd41
6 changed files with 77 additions and 72 deletions

View File

@ -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",

View File

@ -1,11 +0,0 @@
<?xml version="1.0"?>
<eressea>
<equipment>
<set name="spo_seaserpent">
<item name="dragonblood" amount="2"/>
<item name="seaserpenthead" amount="1"/>
</set>
</equipment>
</eressea>

View File

@ -36,11 +36,6 @@
<skill name="perception" level="3"/>
</set>
<set name="spo_seaserpent">
<item name="dragonblood" amount="6"/>
<item name="seaserpenthead" amount="1"/>
</set>
</equipment>
</eressea>

View File

@ -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'),
}

View File

@ -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')
}

View File

@ -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