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 ArmureHolder = require "classes.dataholders.armureholder"
local BoostHolder = require "classes.dataholders.boostholder"
function RawData.fromLine(line)
line = utils.removeComment(line)
if (#line == 0) then
@ -78,6 +80,8 @@ function DataList:new(forceLevel)
for key, struct in pairs(commands.structs) do
self.holders[key] = DataList.getHolder(key, struct)
end
self.boosts = BoostHolder(self)
end
function DataList:addLine(line)
@ -88,6 +92,10 @@ function DataList:forceName(name)
self.forcedName = name
end
function DataList:addToHolder(key, command, arguments)
self.holders[key]:applyCommand(command, arguments)
end
function DataList:reduce()
local level = 0
local mode = "creature"
@ -98,6 +106,9 @@ function DataList:reduce()
if (rawdata.name == "mode") then
mode = rawdata.arguments
end
if (rawdata.name == "boost") then
self.boosts:add(rawdata.arguments[1], rawdata.arguments[2])
end
end
@ -106,13 +117,14 @@ function DataList:reduce()
end
for _, rawdata in ipairs(self.list) do
if (rawdata:canBeUsed(level)) then
self.holders[rawdata:getKey()]:applyCommand(rawdata:getCommand(), rawdata.arguments)
if (rawdata:canBeUsed(level) and rawdata.name ~= "boost" and rawdata.name ~= "halfboost") then
self:addToHolder(rawdata:getKey(), rawdata:getCommand(), rawdata.arguments)
end
end
self.boosts:apply()
for key, holder in pairs(self.holders) do
--self.reducedList[key] = holder:reduce(level)
self:addToReducedList(key, holder:reduce(level, mode))
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;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;5;generique/canides
beast;Chef-Loup;6;generique/canides
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;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 du pandémonium;11;generique/canides;bases/tailles/grand
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
mixins;bases/corps/quadripede
// 10~11 points de stats à distribuer par niveaux
atk.lvl;3
hab.lvl;2
dis.lvl;1
con.lvl;3
int.lvl;1
// 4 boosts à rajouter
pv.lvl;4
pe.lvl;2
boost;atk;1.5
boost;pv;1
boost;pe;.5
boost;hab;.5
boost;con;.5
armurephy.base;2
armurepsy.base;0

View file

@ -1,24 +1,24 @@
type;bete
mixins;bases/corps/quadripede
// 10~11 points de stats à distribuer par niveaux
atk.lvl;2
hab.lvl;3
dis.lvl;3
con.lvl;1
int.lvl;2
// 4 boosts à rajouter
pv.lvl;4
pe.lvl;2
boost;atk;1
boost;hab;1
boost;pv;1
boost;int;.5
boost;dis;.5
armurephy.base;1
armurepsy.base;0
armurespe.base;1
competence;Chasse;10;
competence.lvl;Chasse;3;
competence.lvl;Chasse;2;
competence;Pistage;10;
competence.lvl;Pistage;3;
competence.lvl;Pistage;2;
competence;Grimpette;10;
competence.lvl;Pistage;2;
armes;Griffe;3;
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/tailles/grand
// 10~11 points de stats à distribuer par niveaux
atk.lvl;4
cha.lvl;2
con.lvl;4
pv.lvl;6
pe.lvl;1
// 4 boost à passer par niveau
boost;atk;1
boost;con;1
boost;pv;2
armurephy.base;4
armurepsy.base;0
@ -22,5 +19,5 @@ competence.lvl;Pistage;3;
armes;Griffe;4;
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;

View file

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

View file

@ -8,6 +8,7 @@ return {
immunite={contentType = "list", args=1},
level={contentType = "number", default = 0, preParse = true},
pression={contentType = "number", default = 5},
boost={dataType = "boost", args=2},
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"},
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"},
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"},
pv= {dataType= "stat", modulo= 1, default= 12, max=9999999, min=1, to="vita.pv", lvl=3},
pe= {dataType= "stat", modulo= 1, default= 12, max=9999999, min=1, to="vita.pe", 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=1},
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"},
armurepsy= {dataType= "armure", modulo= 1, default= 0, max=9999999, min=0, to="armure.psy"},