Compare commits
3 commits
5be98ee175
...
ae89979c80
Author | SHA1 | Date | |
---|---|---|---|
|
ae89979c80 | ||
|
c63ae444ac | ||
|
ed7004754d |
14 changed files with 111 additions and 21 deletions
|
@ -38,6 +38,10 @@ function BeastFile:loadMixin(mixin)
|
|||
end
|
||||
end
|
||||
|
||||
function BeastFile:forceName(name)
|
||||
self.datas:forceName(name)
|
||||
end
|
||||
|
||||
function BeastFile:prepareJson(simplercreatures, creatures, parent)
|
||||
assert(simplercreatures ~= nil)
|
||||
assert(creatures ~= nil)
|
||||
|
|
|
@ -67,7 +67,8 @@ function DataList.getHolder(key, value)
|
|||
end
|
||||
|
||||
function DataList:new(forceLevel)
|
||||
self.forceLevel = forceLevel
|
||||
self.forcedLevel = forceLevel
|
||||
self.forcedName = nil
|
||||
self.list = {}
|
||||
self.holders = {}
|
||||
self.reducedList = {}
|
||||
|
@ -83,6 +84,10 @@ function DataList:addLine(line)
|
|||
table.insert(self.list, RawData.fromLine(line))
|
||||
end
|
||||
|
||||
function DataList:forceName(name)
|
||||
self.forcedName = name
|
||||
end
|
||||
|
||||
function DataList:reduce()
|
||||
local level = 0
|
||||
local mode = "creature"
|
||||
|
@ -96,8 +101,8 @@ function DataList:reduce()
|
|||
end
|
||||
|
||||
|
||||
if (self.forceLevel ~= nil) then
|
||||
level = self.forceLevel
|
||||
if (self.forcedLevel ~= nil) then
|
||||
level = self.forcedLevel
|
||||
end
|
||||
|
||||
for _, rawdata in ipairs(self.list) do
|
||||
|
@ -111,8 +116,12 @@ function DataList:reduce()
|
|||
self:addToReducedList(key, holder:reduce(level, mode))
|
||||
end
|
||||
|
||||
if (self.forceLevel ~= nil) then
|
||||
self.reducedList["level"] = self.forceLevel
|
||||
if (self.forcedLevel ~= nil) then
|
||||
self.reducedList["level"] = self.forcedLevel
|
||||
end
|
||||
|
||||
if (self.forcedName ~= nil) then
|
||||
self.reducedList["name"] = self.forcedName
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
local FolderLoader = Object:extend()
|
||||
local BeastFile = require "classes.beastfile"
|
||||
local GroupFile = require "classes.groupfile"
|
||||
|
||||
function FolderLoader.getAllDatas(value, bestiaires, creatures)
|
||||
local folderLoader = FolderLoader(value)
|
||||
|
@ -21,6 +22,8 @@ function FolderLoader:new(value)
|
|||
local file = utils.split(filename, ".", true)
|
||||
if (file[2] == "beast") then
|
||||
table.insert(self.files, BeastFile(self.folder, filename))
|
||||
elseif (file[2] == "group") then
|
||||
table.insert(self.files, GroupFile(self.folder, filename))
|
||||
else
|
||||
print("[WARNING] Unknown extension " .. file[2] .. " for " .. filename)
|
||||
end
|
||||
|
|
64
classes/groupfile.lua
Normal file
64
classes/groupfile.lua
Normal file
|
@ -0,0 +1,64 @@
|
|||
local GroupFile = Object:extend()
|
||||
local BeastFile = require "classes.beastfile"
|
||||
|
||||
local parseFile = require "libs.filereader"
|
||||
|
||||
function GroupFile:new(folder, name, forceLevel)
|
||||
self.filepath = folder .. "/" .. name
|
||||
print("Loading " .. self.filepath)
|
||||
self.datas = {}
|
||||
|
||||
self:readLines()
|
||||
end
|
||||
|
||||
function GroupFile:readLines()
|
||||
self:readAllLines(self.filepath)
|
||||
end
|
||||
|
||||
function GroupFile:readAllLines(path)
|
||||
parseFile(path, function (line) self:addLine(line) end)
|
||||
end
|
||||
|
||||
function GroupFile:addLine(line)
|
||||
if (utils.startswith(line, "beast;") or utils.startswith(line, "beasts;")) then
|
||||
local datas = utils.split(line, ";", true)
|
||||
self:addBeast(datas[2], datas[3], datas[4], self:getMixins(datas))
|
||||
end
|
||||
end
|
||||
|
||||
function GroupFile:getMixins(datas)
|
||||
if (#datas < 4) then
|
||||
return {}
|
||||
else
|
||||
local list = {}
|
||||
for index, value in ipairs(datas) do
|
||||
if (index > 4) then
|
||||
table.insert(list, value)
|
||||
end
|
||||
end
|
||||
return list
|
||||
end
|
||||
end
|
||||
|
||||
function GroupFile:addBeast(name, level, baseFile, mixins)
|
||||
local beast = BeastFile("data", baseFile .. ".beast", tonumber(level))
|
||||
if (#mixins > 0) then
|
||||
for index, mixin in ipairs(mixins) do
|
||||
beast:loadMixin(mixin)
|
||||
end
|
||||
end
|
||||
|
||||
beast:forceName(name)
|
||||
table.insert(self.datas, beast)
|
||||
end
|
||||
|
||||
function GroupFile:prepareJson(simplercreatures, creatures, parent)
|
||||
assert(simplercreatures ~= nil)
|
||||
assert(creatures ~= nil)
|
||||
--self.datas:prepareJson(simplercreatures, creatures, parent)
|
||||
for _, beast in ipairs(self.datas) do
|
||||
beast:prepareJson(simplercreatures, creatures, parent)
|
||||
end
|
||||
end
|
||||
|
||||
return GroupFile
|
|
@ -1,3 +1,5 @@
|
|||
return {
|
||||
{nom = "Animaux", folder = "animaux", description = "Des animaux génériques et communs (ou moins communs)"}
|
||||
{nom = "Animaux", folder = "animaux", description = "Des animaux génériques et communs (ou moins communs)", descriptionPage = "Cette page comporte les animaux génériques et communs qu'on peut voir tout les jours, plus quelques animaux plus grand que d'habitude. Ces créatures vont être généralement de niveaux plus faible que d'autres que vous pourrez rencontrer plus tard dans le jeu (apres une vache ça reste dangereux hein)"},
|
||||
{nom = "Démons et enfer", folder = "demons", description = "Créatures des enfers et satanistes", descriptionPage = "Cette page comporte les créatures et base de PNJ lié aux enfers. Cela peut contenir des démons, des satanistes, ou d'autres créatures lié aux enfers. Ces êtres sont souvent lié à l'élément *chaos*."},
|
||||
|
||||
}
|
6
data/animaux/canides.group
Normal file
6
data/animaux/canides.group
Normal file
|
@ -0,0 +1,6 @@
|
|||
beast;Chien;0;generique/canides
|
||||
beast;Petit Chien;0;generique/canides;bases/tailles/petit
|
||||
beast;Chien-Loup;3;generique/canides
|
||||
beast;Loup;6;generique/canides
|
||||
beast;Chef-Loup;7;generique/canides
|
||||
beast;Loup Géant;9;generique/canides;bases/tailles/grand
|
|
@ -1,3 +0,0 @@
|
|||
mixins;generique/canides
|
||||
|
||||
name;Chien // nom de la créature
|
|
@ -1,3 +0,0 @@
|
|||
mixins;generique/canides
|
||||
name;Chien-Loup // nom de la créature
|
||||
level;2
|
|
@ -1,3 +0,0 @@
|
|||
mixins;generique/canides
|
||||
name;Loup
|
||||
level;5
|
|
@ -1,5 +0,0 @@
|
|||
mixins;animaux/loup
|
||||
name;Loup en Chef // nom de la créature
|
||||
level;6
|
||||
|
||||
skill;Chef de meute;Peut ajouter +1 dégat brut à une attaque par loup présent, mais perdra 50% pour esquiver et encaisser au tour suivant. Cinq tours de cooldown;
|
2
data/bases/special/demons-betes.beast
Normal file
2
data/bases/special/demons-betes.beast
Normal file
|
@ -0,0 +1,2 @@
|
|||
mixins;bases/special/demons
|
||||
skill;Blessure infernale;besoin de deux soin pour soigner une blessure, les blessures restante après le combat provoque un malus physique sur le long terme;
|
5
data/bases/special/demons.beast
Normal file
5
data/bases/special/demons.beast
Normal file
|
@ -0,0 +1,5 @@
|
|||
faiblesse;ordre
|
||||
resistence;chaos
|
||||
|
||||
skill;Force chaotique;Regagne 1D6 PV - 3 par tour en terrain chaotique;
|
||||
skill;Attaque démoniaque;Attaque avec effet de chaos (L'attaque fait moitié dégats sur le corps et l'esprit.)
|
8
data/demons/canides.group
Normal file
8
data/demons/canides.group
Normal file
|
@ -0,0 +1,8 @@
|
|||
beast;Chien des enfers;1;generique/canides
|
||||
beast;Chihuahua infernal;1;generique/canides;bases/tailles/petit;bases/special/demons-betes
|
||||
beast;Chien-Loup des enfers;4;generique/canides;bases/special/demons-betes
|
||||
beast;Loup des enfers;7;generique/canides;bases/special/demons-betes
|
||||
beast;Chef-Loup des enfers;8;generique/canides;bases/special/demons-betes
|
||||
beast;Loup du pandémonium;10;generique/canides;bases/special/demons-betes
|
||||
beast;Loup Géant des enfers;12;generique/canides;bases/tailles/grand;bases/special/demons-betes
|
||||
beast;Loup Géant du pandémonium;15;generique/canides;bases/tailles/grand;bases/special/demons-betes
|
|
@ -26,3 +26,4 @@ armes;Croc;4;
|
|||
skill;Morsure;Une attaque qui utilise les crocs et fait 1 blessure;
|
||||
skill;Griffure;Fait deux attaques à -30% de chance de toucher;
|
||||
skill;Bêtes de meute;+5% pour toucher des zones difficiles par créature de meute présente;
|
||||
skill;Férocité (trois tour de cooldown);Peut doubler les dégats d'une attaque, mais se prendra 50% des dégats en retour | 6
|
Loading…
Reference in a new issue