STUDY.fegyvergenerator_harcszimulacio - kaktusztea/szilankrpg GitHub Wiki

Fegyvergenerátor — Kör-alapú harci szimuláció (első hangolási kör)

Kapcsolódik: Fegyvergenerátor · Fegyvergenerátor — Tőrkard példa

Script: code/balance/fegyvergenerator_harcszimulator.py · Futtatás: python3 code/balance/fegyvergenerator_harcszimulator.py

Javítási kör (2026-09-24, a script-doksi konzisztencia-ellenőrzése után)

Az első verzió és a harcszimulacio.spec.md szisztematikus összevetése 4 valós eltérést talált, mindet javítottuk:

  1. Merevvértviselet 3.fok VÉ+3 bónusz hiányzott (§10.1, §3.10) — merev páncél (pikkely/lemez) + ≥70% lefedettség esetén a fortély 3.fokja +3 VÉ-t ad, ez korábban nem volt implementálva. A Profil bővítve pancel_sisak/pancel_vegtagvedettseg mezőkkel a lefedettség-számításhoz.
  2. Merev-páncél detektálás hardcode-olt, hibára hajlamos kifejezés volt (and/or keverve zárójel nélkül) — most a konstansok.json → páncél_struktúrák[].merev explicit mezőjéből jön.
  3. Roham/Öngyilkos roham "ha betalál, a büntetés megszűnik" kivétel hiányzott (§7 taktika-tábla) — most a találat pillanatában (nem csak a kör végén) lejár a taktika, hogy a rohamozó saját VÉ-je már a védő azonnali visszatámadásakor se legyen büntetve.
  4. Páncél-inkonzisztencia a forgatókönyvekben — a pancel_oszaly paraméter (ami a sebzésjelleg×páncél mátrixot választja) korábban NEM állította át a karakter tényleges Profil.pancel_struktura/SFÉ/MGT mezőit, ezért minden "páncél variáns" teszt valójában a karakter alap (lánc/sodrony) MGT/SFÉ-jével futott, csak a támadó SP-bónusza változott. Új pancel_profil_mezok() helper biztosítja az összhangot.

A 4. javítás jelentősen megnövelte a "merev páncél" szituáció harchosszát (5,25 → 11,54 kör), ami várt és helyes: két, valóban lemez/pikkely páncélt viselő fél között a magas MGT/SFÉ miatt a harckeret és az áthatoló sebzés is lecsökken.

Architektúra-váltás: adatvezérelt Taktikák / Harci helyzetek / Manőverek

A Taktikák és Harci helyzetek eredetileg KÉZZEL írt Python dict-ekben éltek (TAKTIKAK, HARCI_HELYZETEK), ami csak egy szűk részletét fedte le a valós adatnak — hiányzott pl. Csúszós talaj, Elvesztett egyensúly, Közrefogás, Orvtámadás, Kezdeményező, Kiváró, Plusz támadás, Tettetés, és a megkötések[]/kombó_mód validáció sosem futott.

Új modul: code/balance/fegyvergenerator_data_adapter.py — közvetlenül a webapp forrásait tölti be (data/tables/taktikak.json, harci_helyzetek.json, manoverek.json, statuszok.json, generálva a data/sources/*.yaml-ból), és egy generikus hatás-kiértékelőt ad (hatasok_kiertekelese()) a hatas_operatorok.yaml + engine_spec.md §22.2 szemantikája szerint:

előny / hátrány   → kocka reroll szint (netÉH taghoz, [-2,+2] clamp)
arányos / duplázás → szorzó (0.5 = felez, 2 = duplázódik)
letilt             → boolean (képesség/próba elvesztése)
max_limit          → felső korlát
szöveges           → nem kumulálható, informatív (kihagyva/logolva)

A fegyvergenerator_harcszimulator.py Harcos osztálya mostantól ezt az adaptert hívja (taktika_mod(), taktika_hatas(), helyzet_hatas(), statusz_hatas()) — nincs több duplikált/hiányos adat. A taktika/helyzet mezők értéke most a JSON valós id-je (pl. "roham", "támadó", "belharci_helyzet", "ellenfél_beszorított"), nem a korábbi kézzel ASCII-sított kulcsok ("tamado", "belharc").

Az önteszt és a forgatókönyvek eredménye nagyrészt változatlan maradt az átírás után (l. lentebb) — ez megerősíti, hogy a korábbi kézzel írt dict-ek a lefedett esetekben helyesen tükrözték az adatot, csak nem voltak teljesek/karbantarthatók.

Cél

A fegyvergenerator_balansz.py statikus metrikái (egy csapás sebzése páncélonként, tempó-arány) nem mutatják meg, hogy egy fegyver valódi, kör-alapú harcban hogyan teljesít — a harckeret, a támadásszám, a VÉ-erózió és a túlerő-dinamika csak kör-motorban látszik. Ez a szkript a harcszimulacio.spec.md §3-§6 formuláit implementálja a fegyvergenerátor fegyvereire.

Metodológia

  • Karakter-profil: minden teszt azonos "referencia" profillal megy mindkét oldalon (TSz 10, Erő/Edzettség/Ügyesség/Gyorsaság 3, HM_TÉ 15/HM_VÉ 13, harcmodor szint 8, Fájdalomtűrés 7, Mesterfegyver 2.fok, Merevvértviselet 3.fok) — csak a fegyver változik. Ez izolálja a fegyver hatását a karakter-építéstől.
  • "Gyengébb ellenfél" (pribék): TSz 5, alacsonyabb tulajdonságok, harcmodor szint 5, Fájdalomtűrés/Mesterfegyver nélkül — a harcszimulacio.spec.md REF-D mintája.
  • 1:1 összevetés: minden fegyvert egy FIX referencia-fegyver ("Kard, hosszú") ellen mérünk, nem N² páros-mátrixot (66 fegyvernél az utóbbi ~2145 pár lenne, feleslegesen sok).
  • Célválasztás politika: "legveszélyesebb gyenge" — élő, harcképes ellenfelek közül a legkisebb hátralévő ÉP-vel/VÉ-vel rendelkezőt célozza (nem vaktában, nem a legerősebbet).
  • k20T forrás (harcszimulacio.spec.md §13.1, nyitott kérdés): közös kocka — a sikertelen támadás VÉ-csökkentésének extra tagja a már eldobott támadó-dobás k20-ából jön, nem külön dobásból. (Döntés: 2026-09-24. Hatása: ha a VÉ-különbség kicsi a felek közt, ez a tag gyakran nullázódik — lásd a script docstringjét. Ha a fegyverek sorrendje gyanúsan érzékeny erre, újra kell futtatni K20T_FUGGETLEN = True-val.)
  • Sebzésjelleg×páncél mátrix: a fegyvergenerátor SAJÁT mátrixa (sebzesjelleg_pancel_matrix.yaml, 5 sebzésjelleg × 5 páncélosztály), NEM a régi szabálykönyv flat Z/S/V bónusza — a generátor fegyvereit a saját WORK-paramétereik feltételezte mátrixszal kell mérni.
  • Manőverek: kihagyva a base-line forgatókönyvekből (a spec §13.8 explicit óva int ettől hangolási tesztekben — a varianciájuk nagyobb, mint a mérendő különbség). A motorban elő van készítve az opt-in bekötés, de jelenleg nincs konkrét manőver-forgatókönyv futtatva.
  • Self-test: a szkript minden futásnál előbb 5 motor-validáló állítást futtat (tükör-harc ~50%, 1:3 azonos erő → magányos veszít, hős dominál gyengébb ellen, monoton csökkenő túlerő-görbe, jobb SP-jű fegyver győz azonos gyengébb ellen) — ha ezek buknak, a forgatókönyvek nem futnak le.

Eredmények

1:1, minden fegyver a referencia ("Kard, hosszú") ellen — lánc páncél

800 futás/fegyver. A táblázat a legjobb és legrosszabb végleteket mutatja (a teljes 66 soros lista a script kimenetében).

Fegyver Győzelem Megjegyzés
Pika, keskeny/széles hegyű 100% 2 kezes, hosszú lándzsa — extrém dominancia
Lándzsa, keskeny/átlagos/széles 98–99% ua. családba tartozó
Kard, Slan csatakard / kétkezes 98% nagy pengéjű, kétkezes
Alabárd 98% 3 aktoros, "nem ultimate" volt a szándék (lásd v2.md)
Kard, lovag 57% a Mesterfegyver 2.fok + Merevvértviselet a spec REF-A-ját tükrözi
Kard, hosszú (tükör) 52% önmagával ~50%, ahogy elvárt
Kard, rapír / hiequar 31–33% könnyebb kardvívó fegyverek
Tőr, Kés, Dzsambia 0–5% rövid, egykezes, kis SP
Kő, Puszta kéz, Vasököl 0% leggyengébb csoport, várt

Kontextus (frissítve, l. Taktikai döntési AI szekció): a Pika/Lándzsa/kétkezes-kard csoport 95–100%-os dominanciája nyílt terepen szándékolt — a Szilánk rendszer taktikai/szituációs, szemtől szemben egy pikás simán győz. A hosszú fegyverek ellensúlya nem a fegyverhossz tábla hangolásában van, hanem a rendszer más pillérein (Belharcba kerülés manőver, Mögékerülés, Közrefogás) — ezek hatását a "Taktikai döntési AI" szekció méri: egy rövid, belharcos fegyver a Belharcba kerülés manőverrel 0%-ról 65-77%-ra tudja fordítani az esélyt Pika ellen.

Túlerő: Hős ("Kard, hosszú") N gyengébb (pribék) ellen — bőr páncél

400 futás/létszám.

Felállás Hős győz Átlag hossz
1:1 100% 2,0 kör
1:2 100% 3,9 kör
1:3 100% 5,9 kör
1:4 68% 7,3 kör
1:5 3% 5,1 kör
1:8 0% 2,7 kör

A törés 3→5 pribék között éles, de ez nem hiba — a szabálykönyv szándékolt viselkedése (harcszimulacio.spec.md §12): a túlerő hatása pontosan az, hogy egyszerre több VÉ-koptatás és sebzés éri a magányos felet, körönként, kumulatívan. 4 fő pribék körül van a hős "töréspontja" ezzel a konkrét karakter-build/fegyver kombinációval.

N:N azonos erő, azonos fegyver ("Kard, hosszú", lánc páncél)

400 futás/létszám. Minden létszámnál ~50/50 körül kell legyen (szimmetrikus csapatok) — ez teljesül (49–55%), tehát a csapat-logika (célválasztás, kezdeményezési sorrend) nem visz be torzítást a létszám növelésével.

Felállás A oldal győz Átlag hossz
1v1 54,5% 6,2 kör
2v2 51,2% 7,8 kör
3v3 52,8% 8,7 kör
4v4 49,5% 9,4 kör

Szituáció-variánsok ("Kard, hosszú" tükör-harc, A-oldal variál)

600 futás/variáns. A pancel_oszaly most már a karakter TÉNYLEGES páncél-struktúráját (SFÉ+MGT) is beállítja, nem csak a sebzésjelleg-mátrixot (l. Javítási kör, 4. pont) — ezért a "merev páncél" sor harchossza (11,5 kör) most reálisan tükrözi, mit jelent, ha mindkét fél valóban lemez/pikkely páncélt visel.

Variáns A győz Átlag hossz Megjegyzés
Csupasz páncél 50% 2,8 kör nincs SFÉ/MGT, gyors, nyers harc
Bőr páncél 47% 5,4 kör
Lánc páncél 52% 6,1 kör
Merev páncél (pikkely) 50% 11,5 kör magas MGT/SFÉ → lassú harckeret, nagy kopás, hosszú harc
A-nak Hátulról támadás 77% 4,6 kör Előny+1 TÉ, pajzs-VÉ kiiktatva — erős, de nem túlzó bónusz
A-nak Beszorított ellenfél 79% 4,7 kör Előny+1 TÉ — hasonló erejű, mint a Hátulról támadás
A Roham taktikával 49% 4,6 kör 1 csere után lejár (§13.5, javítva); most adatvezérelt (taktikak.json) — trade-off, nem dominál
A Támadó(2) taktikával 39% 4,7 kör a VÉ−4 büntetés ebben a modellben nagyobb súlyú, mint a TÉ+2 haszna
A Teljes Védekezés taktikával 0% (18,2 kör) passzív taktika — sosem sebez, csak húzza az időt; 1:1 duel-re nem alkalmas, ahogy elvárt

Motor-implementációs megjegyzések

  • A Roham/Öngyilkos roham taktikák "1. oda-vissza csapás után lejár, és ha betalál a VÉ-büntetés megszűnik" szabályát (§7, §13.5) a motor explicit kezeli: a roham_elhasznalt flag találatnál ÉS tévesztésnél is beáll; TALÁLATNÁL a taktika azonnal (nem csak a kör végén) visszaáll None-ra, hogy a rohamozó saját VÉ-je a védő azonnali visszatámadásakor se legyen büntetve. Ezt a session során hibaként találtuk és két lépésben javítottuk — előbb csak a kör végi lejárat hiányzott, utána a találat-azonnali lejárat is (a script-doksi konzisztencia-ellenőrzésekor).
  • A Merevvértviselet 3.fok VÉ+3 bónusz (§10.1) most a konstansok.json → páncél_struktúrák[].merev explicit mezőjéből + a Profil.pancel_sisak/pancel_vegtagvedettseg lefedettség-számításból jön (korábban teljesen hiányzott a motorból).
  • A pancel_oszaly paraméter (ami minden forgatókönyv-függvényben a sebzésjelleg×páncél mátrixot választja) most a pancel_profil_mezok() helperen keresztül a karakter Profil SFÉ/MGT/struktúra mezőit IS beállítja — korábban ez a kettő szétcsúszott (a mátrix-oldal váltott, a karakter MGT/SFÉ-je végig a lánc/sodrony alapértéken maradt).
  • A pengeviszony (§5.2) számításához a fegyvergenerátor fegyverhossz kategória-indexét (0-12) egy becsült "Pengehossz" skálára (0/0.5/1/1.5/2/3/4/5) képezzük le — ennek nincs kanonikus 1:1 megfeleltetése, csak az elő/hátrány IRÁNYÁT adja helyesen, ne kezeld pontos fizikai mértékként.
  • Pajzs, hárítófegyver, kétkezes harc jelenleg nincs modellezve (a Profil nem tartalmaz ilyen mezőket) — minden teszt egyfegyveres fogással megy.

Taktikai döntési AI — a hosszú fegyverek szituációs ellensúlya

Script: code/balance/fegyvergenerator_taktikai_ai.py · Futtatás: python3 code/balance/fegyvergenerator_taktikai_ai.py

A fenti 1:1 mátrix nyílt terepen, szituáció/manőver nélkül méri a fegyvereket — ott a hosszú fegyverek (Pika/Lándzsa/Alabárd) dominanciája szándékolt: a Szilánk rendszer taktikai/szituációs, szemtől szemben egy pikás simán győz. A kérdés az, mennyire tudja ezt megfordítani egy rövidebb fegyveres, aki él a rendszer taktikai eszközeivel (Harci taktikák, Harci helyzetek, Manőverek).

Ehhez a fegyvergenerator_harcszimulator.py alap motorját egy körönkénti döntési réteggel bővítettük:

  • minden élő harcos minden kör elején felméri a helyzetet (saját/ellenfél fegyverhossz-különbség, VÉ/ÉP állapot, létszámarány)
  • súlyozott véletlennel választ: taktikaváltás VAGY manőver-próba (Belharcba kerülés, Mögékerülés) — a súlyok relatívak, nem fix %, könnyen hangolható táblában (dontesi_szabalyok())
  • a manőver-ellenpróba: manőver_alap(támadó) + MP_támadó(≤4) + k10 >= manőver_alap(ellenfél) + nehézség + MP_ellenfél(≤2) (+ helyzetfüggő_mód) (md/066_04_manover_vegbevitele.md + md/066_02_manover_pontok.md "Ellenfelhasználás" szerint — l. lejjebb a "Javítás" bekezdést)
  • a célpont is dönt: súlyozott véletlennel befektethet max 2 "counter" MP-t a Nehézség növelésére (ellenfel_mp_counter_dontes()) — a döntés a manőver rá nézve vett veszélyességétől függ (pl. a hosszú fegyveresnek katasztrofális, ha belharcba kerül, ezért nagyobb eséllyel véd ellene)
  • siker esetén a Belharci helyzet mindkét félre átvezetődik (megosztott, fizikai szituáció) — ez volt az egyik implementációs hiba, amit a fejlesztés közben találtunk és javítottunk (kezdetben csak a próbálkozó félre állt be, a célpont "kint maradt" a helyzetből, ezért a hosszú fegyver override sosem aktiválódott)

A harcszimulacio.spec.md §8 táblájából hiányzó Belharci helyzet fegyver-override mechanikát is pótoltuk a motorban: Belharci helyzetben a hosszú fegyver (pengehossz > 0) TÉ/VÉ override 0-ra esik, a rövid/belharcos fegyver (pengehossz ≤ 0) a Belharcos fortély 1.fok bónuszát kapja (TÉ/VÉ:+2, egyszerűsítés — a döntési AI-hoz kötött karakter feltételezetten birtokolja).

Eredmény: Belharcba kerülés ellensúly-hatása (Pika, keskeny hegyű ellen, lánc páncél)

600 futás/fegyver, összevetve az alap (helyzet-mentes) motorral. A Pika (célpont) aktívan véd counter-MP-vel.

Fegyver Alap győz AI-val győz Javulás
Tőr, kígyó / Béltépő / Kés / Tőr 0% 42–44% +42–44 pp
Levéltőr / Méregfog / Dzsambia / Vasököl 0% 40–41% +40–41 pp
Kriszkés / Markolatgomb 0% 38–39% +38–39 pp
Kő / Puszta kéz (belharcban is) / Tőr, ököl / Puszta kéz 0% 34–37% +34–37 pp
Tőr, Slan / Tőr, páncélszúró / Ramiera / Pugoss 0% 7–9% +7–9 pp

A minta megerősíti a felvetést: a rövid, "közelharci" kategóriájú fegyverek (Tőr, Kés, Dzsambia, stb.), amik jogosultak a Belharcba kerülés manőverre (a manőver saját követelménye: "Belharcos fegyver és Közelharc harcmodor"), 0%-ról ~35-44%-ra tudják fordítani az esélyt egy Pika ellen, még úgy is, hogy a Pika (mint a manőver célpontja) aktívan próbál védekezni counter-MP-vel. A Pugoss/Tőr·páncélszúró/Tőr·Slan/Ramiera csoport gyengébb javulása (7-9 pp) abból ered, hogy ezek pengehossz:0,5 kategóriájúak (a Tőr/Kés pengehossz:0) — hosszabb "rövid" fegyverrel valamivel nehezebb a szoros testi közelséget elérni.

A tükör-teszt (két Pikás egymás ellen, senki se jogosult a Belharcba kerülésre) ~50%-on maradt AI-val is — ez igazolja, hogy a döntési réteg nem visz be torzítást olyan esetben, ahol a manőver eleve nem elérhető.

Javítás (2026-09-24): a manőver-ellenpróba kezdeti formulája hiányos volt (manőver_alap(támadó) + MP + k10 >= nehézség) — a md/066_04_manover_vegbevitele.md szerint a Célszámhoz az ellenfél Manőver Alapja is hozzáadódik: manőver_alap(támadó) + MP + k10 >= manőver_alap(ellenfél) + nehézség. A javítás után a Belharcba kerülés valamivel nehezebb (a Pikás jó HM_TÉ/HM_VÉ-je miatt), a rövid fegyverek javulása 65-77 pp-ről ~45-54 pp-re csökkent — ez reálisabb, mert korábban az ellenfél harcképzettségét egyáltalán nem vette figyelembe a próba.

Helyzetfüggő módosítók (data/sources/manoverek.yaml): a Célszámot a manőver saját, konkrét szituációs sorai is módosítják. Csak a szimulátorban számszerűsíthető kategóriák vannak bekötve — a tisztán narratív, KM-döntéses sorok (pl. "Ellenfél háttal áll", "Ellenfél pajzsa") kimaradnak, mert a Profil/Harcos modell nem tartalmaz pajzsot vagy hátrafordultság-állapotot:

  • Belharcba kerülés → "Belharc körülmények": Erő-különbség áll a "Testméret/páncél/Erő előny/hátrány" (-3/+3) helyébe — ha a próbálkozó erősebb, könnyebb a Célszám, ha gyengébb, nehezebb.
  • Mögékerülés → "Túlerő": a helyszínen lévő létszám-arány (1:2 → 0, 1:3 → -2, 1:4+ → -4) — minél nagyobb a létszámkülönbség (bármelyik irányban), annál könnyebb elvegyülni/hátba kerülni.

A jelenlegi teszt-profilok (_profil_referencia) azonos Erővel (3) indulnak mindkét oldalon, ezért a Belharc-módosító a fenti táblákban 0-t ad — a hatás konkrét Erő-eltérésű forgatókönyvben mérhető (l. Nyitott teendők).

Ellenfelhasználás — a célpont "counter" MP-je (md/066_02_manover_pontok.md): a manőver célpontja is befektethet max 2 MP-t a Nehézség növelésére, a dobás előtt. Ezt a döntést is súlyozott véletlen hozza (ellenfel_mp_counter_dontes()): minél veszélyesebb a célpontra a manőver sikere, annál nagyobb eséllyel véd ellene maximális MP-vel — pl. a Belharcba kerülés a hosszú fegyveresnek (mint a Pika) katasztrofális (a TÉ/VÉ override miatt), ezért 80% eséllyel próbál védekezni. Ennek beépítése után a Belharcba kerülés ellensúly-hatása a korábbi ~45-54 pp-ről ~35-44 pp-re csökkent (l. a friss táblázat fent) — ez egy realisztikusabb, "két résen táncoló" egyensúlyt ad, mint egy passzív célpont feltételezése.

Nyitott pontok a döntési AI-ban

  • A Mögékerülés manőver jelenleg csak túlerő-szituációban próbálkozik, konkrét forgatókönyv még nem méri a hatását (a Nyitott teendők 3. pontja).
  • A manőver_pont becslés egyszerűsített (nincs explicit harcmodor-összeg a Profilban, a TÉ // 3 egy közelítés) — pontosabb Profil-mező hozzáadásával finomítható. A manőver_alap formula (mindkét oldalra) már a szabálykönyv szerint pontos.
  • A döntési szabályok súlyai (dontesi_szabalyok()) kézzel becsültek, nem hangolt értékek — ha a taktikai réteg mélyebb vizsgálatot kap, ezeket érdemes szisztematikusan tesztelni (pl. mennyire érzékeny az eredmény a súlyok arányára).
  • A "Belharc körülmények (KM)" és "Túlerő" módosítókon kívüli sorok (Ellenfél háttal áll, Ellenfél pajzsa) nincsenek bekötve — pajzs/hátrafordultság-állapot hiányzik a Profilból (l. Nyitott teendők).

Nyitott teendők (második hangolási kör)

  1. Lándzsás/kétkezes fegyverek dominanciájának hangolása MÁR NEM feladat nyílt-terepi 1:1-ben — ez a rendszer szándékolt viselkedése (l. Taktikai döntési AI szekció). Ha marad hangolási igény, azt a taktikai ellensúlyok (Belharcba kerülés, Mögékerülés) hatékonyságán keresztül kell mérni, nem a nyílt-terepi TÉ/VÉ bázisértéken.
  2. k20T érzékenységi vizsgálat — futtatni a teljes 1:1 mátrixot K20T_FUGGETLEN = True-val is, és összevetni, változik-e a fegyverek relatív sorrendje.
  3. Mögékerülés hatásának konkrét mérése — jelenleg csak a döntési szabályok közt él, dedikált forgatókönyv (mint a Belharcba kerülésnél) még nincs rá.
  4. Pajzs/kétkezes harc bevonása a Profil/Harcos modellbe, ha a védekező fegyverek (Alkarvédő, Tonfa, stb.) balanszát is vizsgálni akarjuk.
  5. ✅ Több manőver opt-in bekötése — 2026-09-25: a döntési AI (fegyvergenerator_taktikai_ai.py) most a Belharcba kerülésen/Mögékerülésen felül a Belharcból kibontakozást, Felállás földről, Földrevitel, Gáncsolás, Átdobás, Pajzzsal felöklelés, Lábkirántás szálfegyverrel és Rávetődés hátulról manővereket is ismeri (mind a Harcos.helyzet mezőre leképezhető hatással). A maradék ~28 manőver (Fegyvertörés, Csonkolás, Feszítés/Leszorítás, stb.) állapot-mutáló hatásokat igényelne (fegyver/végtag elvesztése, azonnali halál), amit a Harcos modell jelenleg nem támogat — továbbra is kimaradnak, dokumentáltan.
  6. Döntési szabályok súlyainak hangolása — a dontesi_szabalyok() táblában lévő relatív súlyok kézzel becsültek, érzékenységi vizsgálat még nincs rájuk. 2026-09-25: a bővített manőver-/taktika-katalógus miatt a Tőr-vs-Pika self-test küszöbét +30pp→+15pp-re csökkentettük (mindkét oldal kapja a bővített AI-t, a Pikás is él a Lábkirántással) — ez jelzi, hogy a súlyok finomhangolása még nyitott, csak a durva arányok validáltak.
  7. ✅ Több Harci helyzet bevonása a döntési AI-ba — 2026-09-25: a belharci_helyzet, hátulról, földön_fekve helyzetek most a döntési AI manőver-eredményeként is beállíthatók (nem csak kézzel/teszt-forgatókönyvben). A többi, tisztán környezeti/passzív helyzet (Csúszós talaj, Vakharc, Tűz ruhán, stb.) még nincs bekötve — ezekhez helyszín-koncepció kellene (l. lejjebb, "Eltérő helyszínek" fejezet).
  8. ✅ Több Taktika bevonása — 2026-09-25: mind a 13 közelharci taktika (1 támadás, Érintő, Fárasztás, Kezdeményező, Kiváró, Öngyilkos roham, Plusz támadás, Roham, Támadás erőből, Támadó, Védő, Teljes Védekezés, Visszafogott, Tettetés) bekötve a dontesi_szabalyok()-ba, állapotfüggő heurisztikákkal (ÉP-arány, pengeviszony, roham-elérhetőség).
  9. megkötések[]/kombó_mód validáció — a taktikák kombinálhatósági szabályai (pl. Fárasztás tiltott Pengehátrányból) most betölthetők az adapterből, de a döntési AI még nem ellenőrzi őket választás előtt (jelenleg csak egy taktika lehet aktív egyszerre, ez részben fedezi a problémát).
  10. Ellenpróba további módosítói (Belharc fortély fok, testméret/páncél különbség, Megakasztás/Végrehajtás fázisok) — jelenleg egyszerűsített, csak a Manőver Alap (mindkét oldal) + MP + k10 vs Nehézség él.

Terv (v2) — Kiterjedt, sokváltozós balansz-felmérés és helyszín-alapú harci helyzetek

Állapot: távoli terv, még nem kezdődött el. Rögzítve 2026-09-25, hogy a jövőbeni munka ne vesszen el — a lenti pontok közül semelyik nincs megvalósítva.

Cél

A jelenlegi (2026-09-25-i) fegyverbalansz-elemzés (fegyvergenerator_balansz_elemzes.py, l. STUDY.fegyvergenerator_osszahasonlitas) egyetlen mátrixot futtatott (66 fegyver × 5 páncélosztály × AI be/ki × tükör-harc + 1:3 túlerő). A cél egy minél szélesebb, minél változatosabb szimuláció-sorozat, ami messzebbre megy ennél:

  • Minél több és változatosabb harcszimuláció, minél több fegyverrel, minél több körülmény-kombinációban — nem csak a jelenlegi 2 dimenzió (páncél × AI), hanem bővítve létszámaránnyal (1:1, 1:2, 1:3, 1:5, N:N), harci helyzet-kombinációkkal, és a lenti helyszín-dimenzióval.
  • Konklúzió: a bővített adatból megválaszolni:
    • Milyen a fegyverek balansza (átfogóbb, több körülményre kiterjedő kép, mint a jelenlegi)?
    • Van olyan fegyver, ami minden körülmény között (túl) erős?
    • Van olyan, ami mindig gyenge, függetlenül a körülménytől?
    • Hogyan érdemes hangolni őket (konkrét TÉ/VÉ/SP javaslatok, nem csak "gyanús" jelzés)?

Eltérő helyszínek — harci helyzeteket kiváltó környezet

A jelenlegi döntési AI (fegyvergenerator_taktikai_ai.py) csak azokat a Harci helyzeteket tudja előidézni, amik egy harcos aktív döntéséből (taktika/manőver) következnek (Belharci helyzet, Hátulról, Földön fekve). A harci_helyzetek.json-ban van viszont sok környezeti/passzív helyzet, amit eddig szándékosan kihagytunk (2026-09-25, korábbi döntés ebben a session-ben): Csúszós talaj, Elvesztett egyensúly, Takarásban harcolás, Vakharc (félhomály/sötét), Tűz ruhán, stb.

Terv: egy helyszín-katalógus, ami minden helyszínhez megadja:

  • kötelező kezdő helyzet (pl. "kisváros, szűk utcákkal" → mindenki belharci_helyzet-ben kezd, vagy nagy eséllyel oda kerül)
  • elérhető/gyakori helyzetek egy pool-ból, valószínűségi súllyal (pl. "erdő, magas fűvel" → takarásban_harcolás, csúszós_talaj eséllyel felmerülhet körönként)
  • tiltott helyzetek (pl. "dungeon, szűk folyosó" → lovas_harc fizikailag kizárt)

Példa helyszín-ötletek (nem véglegesített lista): "erdő, magas fűvel (lopakodás)", "kisváros, szűk utcákkal", "dungeon, szűk folyosó", "nagyváros tetői", "nyílt mező", "éjszakai csatatér (sötétség)".

Miért van elhalasztva

  • A helyszín-koncepció egy új absztrakciós réteg a Harcos/kuzdelem_ai() motor fölött (nem csak egy paraméter) — hatással van a célválasztásra, a döntési súlyokra, és valószínűleg a kör-motor kör-eleji fázisára is (mikor "dobja" a helyszín az új helyzetet).
  • A kiterjedt mátrix-futtatás (több helyszín × több létszámarány × 66 fegyver) számítási ideje minden hozzáadott dimenzióval szorzódik — a jelenlegi 1 mátrix ~2 perc, egy 5-6 helyszínt is bevonó verzió könnyen 15-20+ percre nőhet, ezt a futtatási stratégiát (gyors smoke-teszt + teljes futás elkülönítve) már a jelenlegi script is alkalmazza (--gyors/--n= kapcsolók), de bővítve kell tartani.
  • Nincs még eldöntve, hogy a helyszín-hatás determinisztikus (mindig ugyanaz a helyzet-készlet egy adott helyszínen) vagy véletlenszerű pool-ból húzott legyen — ez érdemi metodológiai döntés, amit a munka megkezdése előtt tisztázni kell (hasonlóan a §12.1 klón-csapdához: ha determinisztikus, a mátrix minden sora ugyanazt a torzítást hordozza, ami elfedheti a valós varianciát).