Compare commits

...

4 commits

Author SHA1 Message Date
Kazhnuz
d5d707ad00 feat: ajout chauve souris et rats 2024-08-13 20:31:12 +02:00
Kazhnuz
ba0968968d feat: passage au systeme de boost 2024-08-13 20:02:14 +02:00
Kazhnuz
a72bdf1315 feat: system de boosts 2024-08-13 19:50:20 +02:00
Kazhnuz
478e6fb95b feat: ajoute plus de bêtes 2024-08-13 18:39:21 +02:00
22 changed files with 252 additions and 39 deletions

View file

@ -0,0 +1,30 @@
local BoostHolder = Object:extend()
function BoostHolder:new(list)
self.parent = list
self.table = {}
end
function BoostHolder:add(name, val)
if (self.table[name] == nil) then
self.table[name] = val
else
self.table[name] = self.table[name] + val
end
end
function BoostHolder:getValue(name, val)
if (name == "pv" or name == "pe") then
return val * 3
else
return val * 5
end
end
function BoostHolder:apply()
for key, value in pairs(self.table) do
self.parent:addToHolder(key, "lvl", self:getValue(key, value))
end
end
return BoostHolder

View file

@ -8,6 +8,8 @@ local CompetenceHolder = require "classes.dataholders.competenceholder"
local ArmesHolder = require "classes.dataholders.armesholder" local ArmesHolder = require "classes.dataholders.armesholder"
local ArmureHolder = require "classes.dataholders.armureholder" local ArmureHolder = require "classes.dataholders.armureholder"
local BoostHolder = require "classes.dataholders.boostholder"
function RawData.fromLine(line) function RawData.fromLine(line)
line = utils.removeComment(line) line = utils.removeComment(line)
if (#line == 0) then if (#line == 0) then
@ -78,6 +80,8 @@ function DataList:new(forceLevel)
for key, struct in pairs(commands.structs) do for key, struct in pairs(commands.structs) do
self.holders[key] = DataList.getHolder(key, struct) self.holders[key] = DataList.getHolder(key, struct)
end end
self.boosts = BoostHolder(self)
end end
function DataList:addLine(line) function DataList:addLine(line)
@ -88,6 +92,10 @@ function DataList:forceName(name)
self.forcedName = name self.forcedName = name
end end
function DataList:addToHolder(key, command, arguments)
self.holders[key]:applyCommand(command, arguments)
end
function DataList:reduce() function DataList:reduce()
local level = 0 local level = 0
local mode = "creature" local mode = "creature"
@ -98,6 +106,9 @@ function DataList:reduce()
if (rawdata.name == "mode") then if (rawdata.name == "mode") then
mode = rawdata.arguments mode = rawdata.arguments
end end
if (rawdata.name == "boost") then
self.boosts:add(rawdata.arguments[1], rawdata.arguments[2])
end
end end
@ -106,13 +117,14 @@ function DataList:reduce()
end end
for _, rawdata in ipairs(self.list) do for _, rawdata in ipairs(self.list) do
if (rawdata:canBeUsed(level)) then if (rawdata:canBeUsed(level) and rawdata.name ~= "boost" and rawdata.name ~= "halfboost") then
self.holders[rawdata:getKey()]:applyCommand(rawdata:getCommand(), rawdata.arguments) self:addToHolder(rawdata:getKey(), rawdata:getCommand(), rawdata.arguments)
end end
end end
self.boosts:apply()
for key, holder in pairs(self.holders) do for key, holder in pairs(self.holders) do
--self.reducedList[key] = holder:reduce(level)
self:addToReducedList(key, holder:reduce(level, mode)) self:addToReducedList(key, holder:reduce(level, mode))
end end

26
data/animaux/belier.beast Normal file
View file

@ -0,0 +1,26 @@
type;bete
mixins;bases/corps/quadripede
level;1
name;Belier
// 4 boosts de stats
boost;hab;.5
boost;rel;1
boost;con;.5
boost;per;1
boost;pv;1
armurephy.base;3
armurepsy.base;0
armurespe.base;3
competence;Charge;10;
competence.lvl;Charge;3;
competence;Evasion;10;
competence.lvl;Evasion;3;
armes;Corne;3;
skill;Charge (1 tours de cooldown);Peut charger et envoyer deux dés d'attaque au lieu d'un;
skill;Broute; Peut faire une attaque qui fait des dégats mentaux aux végétaux;
skill;Laine;+2 armures spéciale de base (scale avec le niveau, déjà présent dans les armures);

View file

@ -1,6 +1,5 @@
beast;Chien;0;generique/canides beast;Chien;0;generique/canides
beast;Petit Chien;0;generique/canides;bases/tailles/petit beast;Petit Chien;0;generique/canides;bases/tailles/petit
beast;Chien-Loup;3;generique/canides beast;Loup;5;generique/canides
beast;Loup;6;generique/canides beast;Chef-Loup;6;generique/canides
beast;Chef-Loup;7;generique/canides
beast;Loup Géant;9;generique/canides;bases/tailles/grand beast;Loup Géant;9;generique/canides;bases/tailles/grand

22
data/animaux/cheval.beast Normal file
View file

@ -0,0 +1,22 @@
type;bete
mixins;bases/corps/quadripede
mixins;bases/tailles/grand
level;3
name;Cheval
// 4 boosts de stats
boost;hab;.5
boost;rel;.5
boost;con;1
boost;pv;2
armurephy.base;3
armurepsy.base;0
armurespe.base;1
competence;Charge;10;
competence.lvl;Charge;3;
skill;Galop;Peut faire sa vitesse pur sur sa FOR;
skill;Monture;Peut servir de monture, jouera au même tour;
skill;Ruade (2 tours de cooldown);Une attaque qui projette l'ennemi et à 1/4 chance de stun;

25
data/animaux/chevre.beast Normal file
View file

@ -0,0 +1,25 @@
type;bete
mixins;bases/corps/quadripede
level;1
name;Chèvre
// 4 boosts de stats
boost;hab;.5
boost;rel;.5
boost;int;1
boost;per;1
boost;pv;1
armurephy.base;3
armurepsy.base;0
armurespe.base;1
competence;Charge;10;
competence.lvl;Charge;3;
competence;Evasion;10;
competence.lvl;Evasion;3;
armes;Corne;3;
skill;Charge (1 tours de cooldown);Peut charger et envoyer deux dés d'attaque au lieu d'un;
skill;Broute; Peut faire une attaque qui fait des dégats mentaux aux végétaux;

View file

@ -0,0 +1,4 @@
beast;Chat;0;generique/felides;bases/tailles/petit
beast;Lynx;3;generique/felides
beast;Fauve;7;generique/felides
beast;Lion géant;10;generique/felides;bases/tailles/grand

3
data/animaux/ours.beast Normal file
View file

@ -0,0 +1,3 @@
mixins;generique/ursides
level;8
name;Ours

11
data/animaux/rats.group Normal file
View file

@ -0,0 +1,11 @@
beast;Rat;0;generique/rat
beast;Chauve souris;1;generique/rat;types/aerien
beast;Gros rat;2;generique/rat;bases/tailles/petit
beast;Nuée de rats;3;generique/rat;bases/special/nuee
beast;Nuée de chauve souris;4;generique/rat;types/aerien
beast;Rat pestiféré;4;generique/rat;bases/special/pestilent
beast;Rat géant;4;generique/rat
beast;Chauve souris vampire;4;generique/rat;types/aerien;bases/special/vampirisme
beast;Rat géant pestiféré;5;generique/rat;generique/rat;bases/special/pestilent
beast;Nuée de rats pestiféré;7;generique/rat;bases/special/nuee;bases/special/pestilent
beast;Nuée de chauve souris vampire;7;generique/rat;types/aerien;bases/special/nuee;bases/special/vampirisme

27
data/animaux/renard.beast Normal file
View file

@ -0,0 +1,27 @@
type;bete
mixins;bases/corps/quadripede
level;2
name;Renard
// 4 boosts de stats
boost;int;1
boost;hab;1
boost;rel;.5
boost;atk;.5
boost;pv;.5
boost;int;.5
armurephy.base;2
armurepsy.base;0
armurespe.base;1
competence;Chasse;10;
competence.lvl;Chasse;3;
competence;Pistage;10;
competence.lvl;Pistage;3;
armes;Griffe;3;
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;

24
data/animaux/vache.beast Normal file
View file

@ -0,0 +1,24 @@
type;bete
mixins;bases/corps/quadripede
mixins;bases/tailles/grand
level;3
name;Vache
// 4 boosts de stats
boost;atk;.5
boost;rel;.5
boost;con;1
boost;pv;2
armurephy.base;4
armurepsy.base;0
armurespe.base;2
competence;Charge;10;
competence.lvl;Charge;3;
armes;Corne;3;
skill;Charge (1 tours de cooldown);Peut charger et envoyer deux dés d'attaque au lieu d'un;
skill;Monture;Peut servir de monture, jouera au même tour;
skill;Empalement (2 tours de cooldown);Attaque qui provoque 1D4 blessure, mais n'a qu'une chance sur 2 de réussir; | 6

View file

@ -0,0 +1 @@
skill;Nuée;PV × 1D8, correspond au nombre de créature. Au max 3 attaque par tour tant qu'il y a assez de créature. Les attaque non de zone font max le nombre de PV de base de la créature. Les soins ne peuvent ramener des membres de la nuée. La nuée perd 10% en hab pour esquiver tant qu'il y a des membres.;

View file

@ -0,0 +1 @@
skill;Pestilence;Ses attaques physique font l'effet poison;

View file

@ -0,0 +1 @@
skill;Vampirisme (1 tour de cooldown);Une attaque au corps à corps qui soigne à l'attaquant 50% des dégats infligés à l'ennemi.;

View file

@ -0,0 +1,8 @@
// Créature normale
atk.bonus;0
con.bonus;0
hab.bonus;0
per.bonus;0
pv.bonus;0;
armurephy.bonus;0;

View file

@ -1,8 +1,6 @@
beast;Chien des enfers;1;generique/canides beast;Chien des enfers;1;generique/canides
beast;Chihuahua infernal;1;generique/canides;bases/tailles/petit;bases/special/demons-betes 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;Loup des enfers;7;generique/canides;bases/special/demons-betes
beast;Chef-Loup des enfers;8;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 du pandémonium;11;generique/canides;bases/tailles/grand
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 beast;Loup Géant du pandémonium;15;generique/canides;bases/tailles/grand;bases/special/demons-betes

View file

@ -1,15 +1,13 @@
type;bete type;bete
mixins;bases/corps/quadripede mixins;bases/corps/quadripede
// 10~11 points de stats à distribuer par niveaux // 4 boosts à rajouter
atk.lvl;3
hab.lvl;2
dis.lvl;1
con.lvl;3
int.lvl;1
pv.lvl;4 boost;atk;1.5
pe.lvl;2 boost;pv;1
boost;pe;.5
boost;hab;.5
boost;con;.5
armurephy.base;2 armurephy.base;2
armurepsy.base;0 armurepsy.base;0

View file

@ -1,24 +1,24 @@
type;bete type;bete
mixins;bases/corps/quadripede mixins;bases/corps/quadripede
// 10~11 points de stats à distribuer par niveaux // 4 boosts à rajouter
atk.lvl;2
hab.lvl;3
dis.lvl;3
con.lvl;1
int.lvl;2
pv.lvl;4 boost;atk;1
pe.lvl;2 boost;hab;1
boost;pv;1
boost;int;.5
boost;dis;.5
armurephy.base;1 armurephy.base;1
armurepsy.base;0 armurepsy.base;0
armurespe.base;1 armurespe.base;1
competence;Chasse;10; competence;Chasse;10;
competence.lvl;Chasse;3; competence.lvl;Chasse;2;
competence;Pistage;10; competence;Pistage;10;
competence.lvl;Pistage;3; competence.lvl;Pistage;2;
competence;Grimpette;10;
competence.lvl;Pistage;2;
armes;Griffe;3; armes;Griffe;3;
armes;Croc;4; armes;Croc;4;

25
data/generique/rat.beast Normal file
View file

@ -0,0 +1,25 @@
type;bete
mixins;bases/corps/quadripede
mixins;bases/tailles/trespetit
level;0
name;Rat
// 4 boosts de stats
boost;int;1
boost;hab;2
boost;dis;1
armurephy.base;0
armurepsy.base;0
armurespe.base;0
competence;Cachette;10;
competence.lvl;Cachette;3;
competence;Fouille;10;
competence.lvl;Fouille;3;
armes;Griffe;1;
armes;Croc;2;
skill;Morsure;Une attaque qui utilise les crocs et fait 1 blessure;
skill;Attaque accrochée;S'accroche et fait 1 dégats / tour;

View file

@ -2,13 +2,10 @@ type;bete
mixins;bases/corps/quadripede mixins;bases/corps/quadripede
mixins;bases/tailles/grand mixins;bases/tailles/grand
// 10~11 points de stats à distribuer par niveaux // 4 boost à passer par niveau
atk.lvl;4 boost;atk;1
cha.lvl;2 boost;con;1
con.lvl;4 boost;pv;2
pv.lvl;6
pe.lvl;1
armurephy.base;4 armurephy.base;4
armurepsy.base;0 armurepsy.base;0
@ -22,5 +19,5 @@ competence.lvl;Pistage;3;
armes;Griffe;4; armes;Griffe;4;
armes;Croc;5; armes;Croc;5;
skill;Morsure;Une attaque qui utilise les crocs et fait 1 blessure; skill;Morsure;Une attaque qui utilise les crocs et fait 2 blessure;
skill;Griffure;Fait deux attaques à -30% de chance de toucher; skill;Griffure;Fait deux attaques à -30% de chance de toucher;

View file

@ -1,5 +1,5 @@
nomType;aerien nomType;aerien
categorie;biologique categorie;biologique
faiblesse;air faiblesse;air
resistance;terre resistence;terre
skill;Vol;Peut voler skill;Vol;Peut voler, +30% pour esquiver les attaques terrestres

View file

@ -8,6 +8,7 @@ return {
immunite={contentType = "list", args=1}, immunite={contentType = "list", args=1},
level={contentType = "number", default = 0, preParse = true}, level={contentType = "number", default = 0, preParse = true},
pression={contentType = "number", default = 5}, pression={contentType = "number", default = 5},
boost={dataType = "boost", args=2},
atk= {dataType= "stat", modulo= 5, default= 50, max=255, min=10, to="stats.for"}, atk= {dataType= "stat", modulo= 5, default= 50, max=255, min=10, to="stats.for"},
con= {dataType= "stat", modulo= 5, default= 50, max=255, min=10, to="stats.con"}, con= {dataType= "stat", modulo= 5, default= 50, max=255, min=10, to="stats.con"},
hab= {dataType= "stat", modulo= 5, default= 50, max=255, min=10, to="stats.hab"}, hab= {dataType= "stat", modulo= 5, default= 50, max=255, min=10, to="stats.hab"},
@ -18,8 +19,8 @@ return {
dis= {dataType= "stat", modulo= 5, default= 50, max=255, min=10, to="stats.dis"}, dis= {dataType= "stat", modulo= 5, default= 50, max=255, min=10, to="stats.dis"},
rel= {dataType= "stat", modulo= 5, default= 50, max=255, min=10, to="stats.rel"}, rel= {dataType= "stat", modulo= 5, default= 50, max=255, min=10, to="stats.rel"},
per= {dataType= "stat", modulo= 5, default= 50, max=255, min=10, to="stats.per"}, per= {dataType= "stat", modulo= 5, default= 50, max=255, min=10, to="stats.per"},
pv= {dataType= "stat", modulo= 1, default= 12, max=9999999, min=1, to="vita.pv", lvl=3}, pv= {dataType= "stat", modulo= 1, default= 12, max=9999999, min=1, to="vita.pv", lvl=1},
pe= {dataType= "stat", modulo= 1, default= 12, max=9999999, min=1, to="vita.pe", lvl=3}, pe= {dataType= "stat", modulo= 1, default= 12, max=9999999, min=1, to="vita.pe", lvl=1},
eclat= {dataType= "stat", modulo= 1, default= 10, max=200, min=1, to="vita.eclat"}, eclat= {dataType= "stat", modulo= 1, default= 10, max=200, min=1, to="vita.eclat"},
armurephy= {dataType= "armure", modulo= 1, default= 0, max=9999999, min=0, to="armure.phy"}, armurephy= {dataType= "armure", modulo= 1, default= 0, max=9999999, min=0, to="armure.phy"},
armurepsy= {dataType= "armure", modulo= 1, default= 0, max=9999999, min=0, to="armure.psy"}, armurepsy= {dataType= "armure", modulo= 1, default= 0, max=9999999, min=0, to="armure.psy"},