From f13647f886467ccd29d0c9fd2d62c9e6497b735d Mon Sep 17 00:00:00 2001 From: george-claude Date: Sun, 12 Jul 2026 09:42:39 +0100 Subject: [PATCH] Add wiki page: Architecture/Entities-And-Combat --- Architecture%2FEntities-And-Combat.-.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 Architecture%2FEntities-And-Combat.-.md diff --git a/Architecture%2FEntities-And-Combat.-.md b/Architecture%2FEntities-And-Combat.-.md new file mode 100644 index 0000000..16ae2bb --- /dev/null +++ b/Architecture%2FEntities-And-Combat.-.md @@ -0,0 +1,16 @@ +# Entities & Combat + +## BaseMob (`base_mob.py`) +Classe unique pour joueur et ennemis. `mob_type` : `FRIEND` (0) / `NEUTRAL` (1) / `ENEMY` (2). + +- `change_pv(pv_modifier)` : positif = soin (plafonné à `max_pv`) ; négatif = dégâts, où `protection` réduit le montant encaissé (`damage = pv_modifier + protection`). +- `perform_attack(target)` : boucle `speed` fois, s'arrête si la cible tombe à 0 PV en cours de route. + +## Roster (`mobs_utils.py`) +Trois mobs codés en dur : `Yanaar`, `Ulnarain`, `Skroll`. Voir [[Known-Issues]] pour le chevauchement de noms avec le GDD d'`eliron-world-dungeons`. + +- `generate_random_mob_list(max_mobs)` — tire un sous-ensemble aléatoire du roster. +- `generate_random_rooms(mobs_in_level, num_rooms)` — répartit les mobs en pièces. **Consomme la liste passée en argument** via `pop(0)` (effet de bord, pas une lecture pure). + +## Level (`level_one.py`) +Construit `mobs_in_level`/`rooms` à l'instanciation, expose `combat(mob, player)` (l'ordre des attaques dépend de `speed`). Possède son propre bloc `if __name__ == "__main__":` avec une boucle de jeu quasi-dupliquée de celle d'`app.py` — voir [[Known-Issues]].