Aller au contenu

Moteur de spawn — DM.utils

sources/DynamicMission.lua:230-1281.

Reconstruction de la base de mission

scanMissionDBs() reconstruit deux tables au chargement (scan unique, non rafraîchi en cours de mission) directement depuis env.mission : zonesByName (zones trigger, avec .radius calculé comme la distance max au sommet le plus éloigné pour un quad) et groupsByName (tout groupe avion/hélico/navire/véhicule/statique, toutes coalitions/pays confondus, à plat).

makeUnitTable(tbl, exclude) : grammaire complète des tags

Tag Effet
<nom d'unité exact> Inclut cette unité précise
[-u]<nom> Exclut cette unité précise
[g]<groupe> Inclut toutes les unités du groupe
[-g]<groupe> Exclut toutes les unités du groupe
[c][catégorie]Pays Inclut toutes les unités du pays (filtrable par catégorie)
[-c][catégorie]Pays Exclut de même
[all][catégorie] Inclut toutes les unités (filtrable par catégorie)
[-all][catégorie] Exclut toutes les unités (filtrable par catégorie)

Catégories reconnues : [helicopter], [plane], [ship], [vehicle], [static].

Particularité confirmée

Toute étiquette de catégorie non reconnue (ex. [air]) n'est pas identifiée et retombe silencieusement sur category = "", qui correspond à toutes les catégories — [all][air] se comporterait donc exactement comme [all]. checkEnemiesProximityForDefenses() (voir Bases aériennes) appelait auparavant makeUnitTable({'[all][air]'}) ; l'appel a depuis été simplifié en makeUnitTable({'[all]'}), strictement équivalent — le code assume désormais explicitement (commentaire à l'appui) qu'il scrute aussi bien l'air que le sol, au lieu de le faire implicitement via un tag mal interprété.

Un paramètre exclude (chaîne ou tableau) peut en plus supprimer des catégories entières des branches [c]/[all], indépendamment du tag utilisé.

cloneInZone(gpName, zone, disperse, maxDisp, v)

Clone la disposition d'unités d'un gabarit dans une zone cible : point de terrain valide choisi aléatoirement dans le rayon de la zone (jusqu'à 100 tentatives), types de terrain valides déterminés par catégorie (navires → eau seule ; véhicules → terre/route ; aérien → terre/route/ eau peu profonde/eau/piste), dispersion individuelle des unités si demandée, altitude aléatoire dans une bande adaptée à la catégorie pour l'aérien, puis réattachement de la route d'origine du gabarit avant spawn effectif. Les gabarits de catégorie static sont explicitement rejetés (jamais utilisés par DynamicMission).