Compare commits

...

3 commits

Author SHA1 Message Date
Kazhnuz
ae89979c80 feat: ajoute chien des enfers 2024-08-12 19:41:27 +02:00
Kazhnuz
c63ae444ac feat: ajout Férocité 2024-08-12 19:36:18 +02:00
Kazhnuz
ed7004754d feat: ajout support fichiers groupes 2024-08-12 13:08:29 +02:00
14 changed files with 111 additions and 21 deletions

View file

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

View file

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

View file

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

View file

@ -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*."},
}

View 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

View file

@ -1,3 +0,0 @@
mixins;generique/canides
name;Chien // nom de la créature

View file

@ -1,3 +0,0 @@
mixins;generique/canides
name;Chien-Loup // nom de la créature
level;2

View file

@ -1,3 +0,0 @@
mixins;generique/canides
name;Loup
level;5

View file

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

View 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;

View 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.)

View 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

View file

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