- Plus adaptables, en generant des unites qui tiennent compte notamment du nombre d'humains sur la missions afin de s'affranchir du besoin d'edition manuelle
- Plus dynamiques, avec des comportement de l'IA qui prend en compte la sitac au sens large
- Plus faciles, afin de rendre a la portee des possibilites de fonctionnalites qu'aujourd'hui peu de createurs de missions disposent.
Basee sur Mist, notre bibliotheque sera une extension, et un simple fichier execute au lancement de la mission. On va commencer par recenser les besoins et les acquis car on a deja pas mal de choses.
Je commence pour ma part:
Utils
getRandomLocationInArea(prefix)
Renvoi un point en 2D choisi de maniere aleatoire parmi le/les zones dont le nom commence par le prefix en parametre.
ex: getRandomLocationInArea('rescue') renverra un point se trouvant a l'interieur de l'une des zones dont le nom commence par 'rescue'.
L'usage de cette fonction, c'est typiquement une mission CSAR, ou pour rendre une mission rejouable a l'infini en generant des unites jamais au meme endroit.
getRandomLocationInSector(origin, radiale_min, radiale_max, distance_mini, distance_max)
Renvoi un point en 2D choisi de maniere aleatoire dans un secteur par rapport a un point d'origine.
ex: getRandomLocationInSector(origin, 90, 180, 70, 110) renverra un point aleatoire situee entre les radiales 90 et 180 du point d'origine, et a une distance comprise entre 70 et 110km.
On peut prevoir de simplifier un appel getRandomLocationInSector(origin, 90, 90, 110, 110) par
getRandomLocationInSector(origin, 90, 110)
getClosestAB(origin, [type])
Renvoi l'ID de la BA la plus proche du point origin et du bon type si specifie( sinon ca renvoie la base peut-importe sa couleur). type choisi parmi {'FRIEND', 'FOE', 'NEUTRAL', 'FRIEND_NEUTRAL', 'FOE_NEUTRAL'}
getHumanNb([type], [side])
Renvoi le nombre d'appareils pilotes par des humains, avec le type d'appareil en option, ainsi que le side parmi {'RED','BLUE'}
ex: getHumanNb('F-15C') renverra le nombre de F-15C humain dans la partie actuellement.
CSAR
generateEjectedPilot(prefix, nb_km)
Cree un pilot au sol dans une des zones dont le nom commence par prefix et qui tirera une smoke orange si une unite amie entre dans un cercle de nb_km km
A2A
leadUnit(groupId)
Ajoute dans le menu F-10 un certaine nombre d'actions que le groupe executera.
- reprendre la route initiale
- prendre un CAP N/E/S/W
- prendre un niveau de vol de XXXX
- prendre une vitesse de XXXXX
- orbiter sur la position courante
- follow me
generateGAI(BA_ID, country, [difficulty])
Ajoute sur la base BA_ID des chasseurs en mission Fighter Sweep, avec des unites du pays country dont le type et le nombre est determine en fonction de la difficulte diffculty parmi {'easy', 'normal', 'hard'} (par default, difficulty='normal').
generateTraffic(BA_ID_DPT, BA_ID_ARR, COUNTRY)
Ajoute un vol d'une base vers l'autre en mission de type nothing, pour une unite choisie au hazard.
SUPPORT
callAWACS([nb_escort], [type_escort])
Accessible via menu F-10 dans un menu Support, fait decoller un AWACS depuis la base amie la plus proche pour aller orbiter sur la zone la plus proche dont le nom commence par 'awacs' (ou AWACS), et si il n'en trouve pas, il ira orbiter a mi-chemin entre la localisation de l'unite qui fait la demande et la BA de depart.
ex: callAWACS(3, 'Su-27') fera decoller un AWACS avec 3 SU-27 en mission d'escorte.
callTanker([nb_escort], [type_escort])
Accessible via menu F-10 dans un menu Support, pareil que pour l'AWACS, mais avec un tanker qui correspond a l'unite humaine qui en fait la demande. Et bien sur on choisit d'abord parmi les zones dont le nom commence par 'tanker' (case non-senstive)
callEscort(nb_escort, type_escort)
Accessible via menu F-10 dans un menu Support, fait decoller des appareils pour mission d'escorter l'unite humaine qui en fait la demande.
fireSmoke()
Permet a un humain ejecte d'allumer une smoke orange sur sa position (passage par une unite genere au lieu d'ejection si pas possible avec le pilote ejecte et une detection par zone du CSAR)
to be continued...