Projet

Général

Profil

API lua

/!\ l'API lua donne accès à certaines fonctionnalités/vaisseaux/cannons/bâtiments qui ne sont pas encore développé ou équilibré.


class Ressource
  enum Type
    Metal
    Carbon
    Loicium

class RessourceSet
  constructeur(quantité Metal, Carbon, Loicium)
  constructeur()
  constructeur(RessourceSet) # Copie
  contains(autre RessourceSet) # Si 'autre' contient moins que le RessourceSet, pour chacune des ressources
  at(Type de Ressource) # Quantité de cette ressource 

class Coord
  constructeur()        # X = 0, Y = 0, Z = 0
  constructeur(x, y, z)
  constructeur(Coord)   # Copie
  X # Position en X
  Y # Position en Y
  Z # Position en Z

class Direction
  constructeur()          # X = 0, Y = 0, Z = 0
  constructeur(x, y, z)
  constructeur(Direction) # Copie
  X # Position en X
  Y # Position en Y
  Z # Position en Z

class Building
  enum Type
    CommandCenter
    MetalMine
    CarbonMine
    LoiciumFilter
    Factory
    Laboratory
    CarbonicCentral
    SolarCentral
    GeothermicCentral

class Cannon
  enum Type
    Cannon1
    Cannon2
    Cannon3
    Cannon4
    Cannon5
    Cannon6

class Planet
  isFree()     # Oui ou non (true ou false)
  age()        # Nombre de round qu'a vécu la planète (Débloqué par la technologie Chronos)
  memory       # UserData modifiable de la planète (Dépendant de la techno Memory)
  player       # Possesseur de la planète 
  coord        # Position de la planète, de type Coord
  playerId     # Identifiant du joueur qui la possède
  buildingList # Liste de Building
  cannonTab    # (CannonTab) Liste des Cannon (un élément par type de cannon)
  ressourceSet # Liste des ressources, de type RessourceSet
  task         # Tache en cours d’exécution(PlanetTask) ou nil
  hangar       # (ShipTab) Vaisseaux dans le hangar

class Ship
  enum Type
    Mosquito
    Hornet
    Vulture
    Dragon
    Behemoth
    Azathoth
    Queen
    Cargo
    LargeCargo

class Fleet
  age()        # Nombre de round qu'a vécu la flotte(Débloqué par la technologie Chronos)
  memory       # UserData modifiable de la flotte (Dépendant de la techno Memory)
  player       # Possesseur de la flotte
  id           # Identifiant de la flotte
  playerId     # Identifiant du joueur qui la possède
  coord        # Coordonnées actuel de la flotte (type Coord)
  origin       # Coordonnées de la planète d'origine (type Coord)
  name         # Nom de cette flotte
  shipList     # (ShipTab) Liste des vaisseaux dans la flotte (un élément par type de vaisseau)
  ressourceSet # liste des ressources, de type RessourceSet
  task         # Tache en cours d'exécution(FleetTask) ou nil

class PlanetAction
  enum Type
    Building
    Ship
    Cannon

class FleetAction
  enum Type
    Nothing
    Move
    Harvest
    Colonize
    Drop
  constructeur(Type, Direction)  # Constructeur avec une Direction (pour le Move)
  constructeur(Type)             # Constructeur avec une Direction (pour les autres)
  action                         # Type de FleetAction
  target                         # Destination, si applicable, sinon, (0, 0, 0)

class PlanetTask
  enum Type
    UpgradeBuilding
    MakeShip
    MakeCannon
  duration                       # durée, en round
  type                           # Type de tache
  value                          # type de vaisseau, bâtiment, ou canon

class FleetTask
  enum Type
    Move
    Harvest
    Colonize
  duration                       # durée, en round
  type                           # Type de tache
  position                       # Coordonnée (si type == Move)

class Player
  getMaxFleetCount()   # Nombre de flotte maximum
  getMaxPlanetCount()  # Nom de planète maximum
  getMaxFleetSize()    # Nombre maximum de vaisseaux dans une flotte 
  id                   # Numero d'identification du joueur
  login                # Login du joueur
  mainPlanet           # Coordonée de la planète principale du joueur
  score                # Score
  alliance             # Allicance (ou nil)
  planetCount          # Nombre de planète du joueur
  fleetCount           # Nombre de flotte du joueur

# Chaque UserData peut posséder une valeur ainsi que les UserData nommé (appelé ici enfants)
# Deux UserData enfants ("frère") peuvent avoir le même nom
class UserData
  constructeur()    # Constructeur par defaut
  size()            # Nombre d'enfant directe (non récursif)
  empty()           # Si le UserData est vide
  clear()           # Vide le UserData
  erase(nom)        # Supprime le(s) UserData qui ont le om donné et retourne le nombre supprimé
  get_value()       # Retourne la valeur du UserData (ou nil)
  put_value(valeur) # Change la valeur du UserData
  get_child(nom)    # Retourne un UserData enfant ayant le nom donné (ou nil si non trouvé)
  put_child(nom, userdata) # Remplace/insert un UserData enfant ayant le nom donné, et le retourne
  add_child(nom, userdata) # Ajoute un UserData enfant ayant le nom donné , et le retourne
  get(nom)          # Retourne la valeur du UserData enfant ayant le nom donné (ou nil si non trouvé)
  put(nom, valeur)  # Remplace/insert un UserData qui a le nom et la valeur donné
  add(nom, valeur)  # Ajoute un UserData qui a le nom et la valeur donné
  full_count()      # Nombre d'éléments total (récursif)

class Alliance
  id                # Numero d'identification de l'alliance
  master            # Joueur qui possède l'alliance. (Type Player)
  name              # Nom de l'alliance

class CannonTab
  count()           # Nombre de cannons
  # Plus les possibilités d'un conteneur lua normal

class ShipTab
  count()           # Nombre de vaisseaux
  # Plus les possibilités d'un conteneur lua normal

# Fonctions libres
shipPrice(Type de Ship)           # RessourceSet du prix de ce vaisseau
cannonPrice(Type de Cannon)       # RessourceSet du prix de ce Cannon
buildingPrice(Type de Building, prochain niveau)   # RessourceSet du prix de ce Building

directionRandom()                 # Fournit une direction définit aléatoirement
directionFromTo(Coord A, Coord B) # Direction pour aller d'un Coord A a un Coord B

makeBuilding(type de Building)    # Requête de fabrication de building. (PlanetAction)
makeShip(Type de Ship)            # Requête de fabrication de vaiseau. (PlanetAction)
makeCannon(Type de Cannon)        # Requête de fabrication de canon. (PlanetAction)
noPlanetAction()                  # Requête de ne rien faire. (PlanetAction)

log(message)                      # Crée un événement avec le message (Débloqué par la techno Log)
simulates(ma_flotte, planète_locale, autre_flottes) # Simule un combat et retourne un pourcentage (entre 0 et 100) de chance de victoire. (Débloqué par la techno Simulation)

# Variables globales
currentPlayer # Joueur dont le script est en cours d’exécution (Type Player)
roundIndex    # Numero du round actuel

# Fonctions à développer par l'utilisateur

# -- Pour les planètes
AI(ma_planète, flottes)   # Retourne un PlanetAction

# -- Pour les flottes
do_gather(ma_flotte, autre_flotte_à_moi)                    # Choisi si les deux flotte doivent fusionner ou non
action(ma_flotte, planète_locale, autres_flottes, (optionnel)transmissions) # Retourne un FleetAction
do_escape(ma_flotte, planète_locale, autres_flottes)        # Choisi si la flotte veux s’enfuie ou non (Dépendant de la techno Evasion)
do_fight(joueur, autre_joueur)                              # Choisi si on veux se battre contre se joueur ou non
emit(ma_flotte, planète_locale, autres_flottes)             # Permet d’envoyer un message (UserData) aux flottes alentours. Voir technos EmissionRange et EmissionRate