Zum Inhalt

Orte

Jede Mission findet irgendwo statt. Eine Mission listet die Orte auf, an denen sie erscheinen kann, und das Spiel wählt bei jeder Erstellung der Mission einen davon aus. Diese Seite erklärt, wie diese Auswahl funktioniert, was die Orts-Flags bedeuten, listet jeden Ort auf, der mit dem Spiel ausgeliefert wird, samt Koordinaten, und zeigt, wie ein Mod eigene Orte hinzufügt.

Wie ein Ort ausgewählt wird

Wenn eine Mission erstellt wird, zieht das Spiel einen Eintrag aus der Ortsliste der Mission (_potentialLocations im Missions-JSON). Ist dieser Platz schon von einer anderen Mission auf der Karte belegt, zieht es erneut, bis zu fünf weitere Male. Sind alle Ziehungen belegt, behält es die letzte - zwei Missionen können sich also einen Ort teilen.

Listet eine Mission gar keine Orte, nimmt das Spiel ersatzweise einen zufälligen Ort aus der vollständigen Liste: den mitgelieferten Orten plus allen, die aktivierte Mods hinzufügen (siehe Orte mit einem Mod hinzufügen).

Die Entfernung ist keine Deko: Der Treibstoff, den ein Flug kostet, wird aus der Großkreisentfernung (der kürzesten Strecke über den Globus) zwischen dem Ort und den Koordinaten der geladenen Karte berechnet, multipliziert mit FuelConsumptionPerKilometer aus der Tabelle Variables (siehe CSV-Tabellen). Eine Mission über Berlin ist also viel teurer als eine über dem Ärmelkanal.

Einen Ort verwenden

Im Mission Editor öffnest du den Abschnitt Locations, wählst einen Ort aus dem Dropdown und fügst ihn hinzu. Füge so viele hinzu, wie du willst; derselbe Ort kann nicht zweimal hinzugefügt werden.

In einer Missions-.json nennt jeder Eintrag von _potentialLocations einen Ort über seine ID:

{
    "_locationId": "dover"
}
Feld Bedeutung
_locationId Pflicht, und das einzige Feld, das das Spiel aus dem Eintrag liest. Es muss die ID eines Orts aus der Liste unten sein oder eines Orts, den ein aktivierter Mod hinzufügt (siehe Orte mit einem Mod hinzufügen).

Koordinaten, Flags und Anzeigename des Orts kommen aus dieser Liste, nicht aus der Missionsdatei. Ein _locationName, _coordinates oder _flags, das noch im Eintrag steht, wird ignoriert.

Ein Eintrag, dessen ID fehlt, leer oder unbekannt ist, wird nie gefunden. Kann der gezogene Eintrag nicht gefunden werden, nimmt das Spiel ersatzweise einen zufälligen Ort.

Über die ID erkennt das Spiel auch, ob ein Platz schon belegt ist. Es vermeidet also, wo es geht, zwei laufende Missionen auf derselben ID (siehe Wie ein Ort ausgewählt wird).

Mit einer Liste mehrerer Orte kann dieselbe Mission an verschiedenen Stellen auftauchen:

"_potentialLocations": [
    { "_locationId": "dover_strait" },
    { "_locationId": "english_channel" },
    { "_locationId": "seine_bay" }
]

Aus einem Skript wird eine reine Skript-Mission (eine ohne .json) mit missions_api.SetMissionLocation(mission_entity_id, location_id) platziert, meist in initialize_mission. Die Funktion akzeptiert nur die ID eines Orts aus der Liste unten oder eines Orts, den ein aktivierter Mod hinzufügt (siehe Orte mit einem Mod hinzufügen), nie eigene Koordinaten, und gibt bei einer unbekannten ID False zurück. Ohne Ort sitzt eine reine Skript-Mission am Ursprung der Karte. Siehe Referenz.

Orts-Flags

Wert Name Bedeutung
0 None keine
1 Land über Land
2 Sea über dem Meer
4 OwnTerritory über eigenem Gebiet
8 EnemyTerritory über feindlichem Gebiet

Sie werden addiert: 10 ist also Meer + feindliches Gebiet (2 + 8) - der häufigste Wert für ein Küstenziel auf der anderen Seite des Ärmelkanals. Einige Kombinationen:

Wert Flags
3 Land + Sea
5 Land + OwnTerritory
6 Sea + OwnTerritory
9 Land + EnemyTerritory
10 Sea + EnemyTerritory
12 OwnTerritory + EnemyTerritory

Ein Ort mit mehreren Flags erfüllt die Quest-Bedingung für jedes davon: Ein Ort mit 10 zählt sowohl für location,sea als auch für location,enemyterritory.

Im mitgelieferten Spiel werden Orts-Flags nur genutzt, um die eingebauten Flugzeug-Lackierungen freizuschalten: Versteckte Lackierungs-Quests wie "fliege 20 Missionen über dem Meer mit einer Beaufighter" nutzen location,sea, location,ownterritory und location,enemyterritory. Keine andere mitgelieferte Quest prüft sie.

Die Flags kommen aus der Ortsliste, nicht aus deiner Missionsdatei

Der Ortseintrag einer Mission trägt nur die ID; ein _flags, das dort noch steht, wird ignoriert. Quest-Schritte wie "fliege eine Mission über dem Meer" schlagen die ID des Missionsorts in der Ortsliste nach - den Orten unten plus allen, die aktivierte Mods hinzufügen - und nutzen die dort hinterlegten Flags. Der Quest-Schritt schreibt den Namen des Flags, nicht die Zahl: location,sea, location,ownterritory, location,enemyterritory (siehe Quests).

Weil kein mitgelieferter Ort Land trägt, kann eine Bedingung location,land nie erfüllt werden, es sei denn, ein Mod fügt einen Ort mit diesem Flag hinzu.

Die Orte, die mit dem Spiel ausgeliefert werden

82 Orte sind vordefiniert. Nutze sie, statt Koordinaten zu erfinden: Sie sind passend zur Kriegskarte platziert, und der Spieler erkennt sie wieder. Sie reichen von Breitengrad 44.87 bis 60.38 und Längengrad -9.00 bis 14.55.

In der Tabelle steht Eigen für OwnTerritory (4), Feind für EnemyTerritory (8), Meer für Sea (2); kombinierte Einträge werden addiert (Meer + Feind = 10).

ID Breitengrad Längengrad Flags
aarhus 56.1509 10.1799 Feind
amiens 49.8980 2.3286 Feind
amsterdam 52.3713 4.8995 Meer + Feind
arras 50.2933 2.7758 Feind
atlantic_ocean 56.5000 -9.0000 Meer
bergen 60.3829 5.3042 Meer + Feind
berlin 52.5217 13.3958 Feind
birmingham 52.4907 -1.8466 Eigen
bordeaux 44.8695 -0.5592 Meer + Feind
boulogne-sur-mer 50.7246 1.6019 Meer + Feind
bremen 53.0869 8.7973 Feind
bremerhaven 53.5352 8.5838 Meer + Feind
brest 48.3912 -4.4851 Meer + Feind
bristol_channel 51.3681 -4.2301 Meer
brussels 50.8552 4.3559 Feind
caen 49.1857 -0.3894 Meer + Feind
calais 50.9587 1.8552 Meer + Feind
cambridge 52.1925 0.1337 Eigen
canterbury 51.2733 1.0855 Eigen
cardigan_bay 52.5000 -4.6000 Meer
celtic_sea 50.8000 -7.5000 Meer
chelmsford 51.7352 0.4673 Eigen
cologne 50.9375 6.9517 Feind
compiegne 49.3991 2.8277 Feind
dedham_vale 51.9878 0.9096 Eigen
dieppe 49.9189 1.0747 Meer + Feind
dogger_bank 54.9952 3.0143 Meer
dorchester 50.7106 -2.4410 Eigen
dover 51.1351 1.3128 Eigen
dover_strait 51.0598 1.5825 Meer
dunkirk 51.0370 2.3788 Meer + Feind
dunkirk_bay 51.3082 2.1831 Meer
eastbourne_bay 50.6432 0.4435 Meer
eindhoven 51.4497 5.3770 Feind
english_channel 50.1660 -1.7013 Meer
essen 51.4535 7.0060 Feind
frankfurt 50.1028 8.6791 Feind
great_yarmouth_bay 52.5492 2.2980 Meer
guernsey 49.4438 -2.5571 Meer
hamburg 53.5381 9.9669 Meer + Feind
hanover 52.3736 9.7400 Feind
hardangervidda 60.0327 7.4297 Feind
high_weald 51.0563 0.4398 Eigen
ipswich 52.0524 1.1532 Eigen
irish_sea 53.5000 -4.8000 Meer
kassel 51.3127 9.4948 Feind
krefeld 51.3394 6.5521 Feind
kristiansand 58.1581 7.9766 Meer + Feind
la_rochelle 46.1597 -1.1592 Meer + Feind
lannion 48.7372 -3.4625 Meer + Feind
le_havre 49.5003 0.1352 Meer + Feind
leeuwarden 53.2037 5.7917 Meer + Feind
liege 50.6413 5.5752 Feind
lille 50.6252 3.0551 Feind
london 51.5090 -0.1280 Eigen
maastricht 50.8474 5.6870 Feind
maidstone 51.2707 0.5203 Eigen
malvern_hills 52.1034 -2.3512 Eigen
metz 48.9610 6.1310 Feind
munster 51.9645 7.6099 Feind
nancy 48.6921 6.1844 Feind
nantes 47.2216 -1.5501 Feind
north_channel 55.1000 -5.6000 Meer
north_sea 56.5000 3.5000 Meer
north_wessex 51.4482 -1.4938 Eigen
outer_silver_pit 54.0262 2.0864 Meer
paris 48.8535 2.3188 Feind
raf_duxford 52.0933 0.1311 Eigen
raf_filton 51.5218 -2.5746 Eigen
raf_manston 51.3461 1.3490 Eigen
raf_tangmere 50.8464 -0.7095 Eigen
reims 49.2570 4.0438 Feind
rotterdam 51.9302 4.4752 Meer + Feind
rotterdam_bay 51.9939 3.1666 Meer
rouen 49.4381 1.0937 Feind
seine_bay 49.7154 -0.6720 Meer
south_downs 50.9450 -0.6643 Eigen
st_georges_channel 52.0000 -5.8000 Meer
stettin 53.4282 14.5511 Meer + Feind
telemark 59.3766 8.3060 Feind
the_wash 52.9159 0.2530 Meer
tours 47.3933 0.6825 Feind

Zwei weitere Einträge stehen in der Liste des Spiels, sind aber Überbleibsel aus der Entwicklung - nutze sie nicht: test1 und ireland. Keiner von beiden trägt ein Flag, und ireland liegt nicht in Irland.

Orte mit einem Mod hinzufügen

Ein Mod kann der Liste eigene Orte hinzufügen, damit seine Missionen - und die von anderen - sie über ihre ID nutzen können. Leg dazu eine oder mehrere .json-Dateien in einen Ordner Locations im Missions/-Ordner deines Mods:

Mods/
  my_mod/
    Missions/
      Locations/
        mymod_locations.json

Gelesen werden nur Dateien, die direkt in Missions/Locations/ liegen. Eine Datei sieht so aus:

{
    "Locations": [
        {
            "_locationId": "mymod_scapa_flow",
            "_locationName": "mymod_scapa_flow",
            "_coordinates": { "x": 58.9, "y": -3.1 },
            "_flags": 2
        }
    ]
}

Die Liste Locations fasst so viele Orte, wie du willst. Jeder Eintrag hat vier Felder:

Feld Bedeutung
_locationId Pflicht. Die ID, über die Missionen und Skripte den Ort ansprechen.
_locationName Der Name, den der Spieler sieht (siehe unten).
_coordinates x ist der Breitengrad, y der Längengrad, in Grad. Wird für die Markierung auf der Kriegskarte und für die Entfernung (und damit die Treibstoffkosten) genutzt.
_flags Eine Zahl, die den Ort beschreibt (Orts-Flags). Muss eine Zahl sein - "Sea" wird nicht akzeptiert.
  • Solange dein Mod aktiviert ist, stehen seine Orte auf der Liste, und sie verschwinden wieder, wenn der Mod ausgeschaltet oder entfernt wird. Schaltest du einen Mod ein oder aus, wird die Liste ohne Neustart des Spiels aktualisiert.
  • Ein Ort aus einem Mod verhält sich wie ein mitgelieferter. Er wird im Dropdown des Mission Editors angeboten, funktioniert mit missions_api.SetMissionLocation, kann für eine Mission ohne Orte gezogen werden, und seine Flags sind das, was Ortsbedingungen in Quests sehen.
  • _locationId ist der Schlüssel zum Nachschlagen und muss deshalb eindeutig sein. Mitgelieferte IDs gewinnen immer. Nutzt dein Ort eine ID, die das Spiel schon hat, wird der mitgelieferte verwendet. Fügen zwei Mods dieselbe ID hinzu, nimmt das Spiel einen davon und sagt dir nichts. Gib also jedem Ort das Präfix deines Mods, wie bei mymod_scapa_flow.
  • Ein Eintrag ohne ID wird nie gefunden, weder von einer Mission noch von missions_api.SetMissionLocation.
  • Der Spieler sieht _locationName genau so, wie es dasteht, samt Unterstrichen. Mitgelieferte Orte haben Übersetzungen; deiner hat keine, bis du einen Term namens mission_location/<name> registrierst - siehe Ortsnamen.
  • Eine Datei, die das Spiel nicht lesen kann, wird übersprungen, mit einer Warnung in Player.log. Deine anderen Ortsdateien werden trotzdem geladen.
  • Halte die Koordinaten innerhalb der Kriegskarte (siehe nächster Abschnitt).

Eigene Koordinaten verwenden

Eine Missionsdatei kann keine eigenen Koordinaten tragen: Sie nennt einen Ort nur über seine ID, und Koordinaten und Flags kommen aus der Ortsliste (den mitgelieferten Orten und allen, die ein Mod hinzufügt). Eine ID, die nicht in der Liste steht, wird nie gefunden, und die Mission landet stattdessen an einem zufälligen Ort. Willst du eine Mission an einen neuen Ort setzen, füg den Ort mit einem Mod hinzu und sprich ihn über seine ID an - in einer Missionsdatei genauso wie mit missions_api.SetMissionLocation.

Die Kriegskarte zeigt Breitengrad 40.75 bis 61.25 und Längengrad -11.75 bis 21.64 (eine Mercator-Projektion, die übliche flache Weltkarte). Der Bereich der mitgelieferten Orte oben ist einfach nur da, wo sie zufällig liegen, nicht die Grenze der Karte. Ein Ort außerhalb des Kartenrahmens funktioniert trotzdem - Entfernung und Treibstoff sind nur Mathematik -, aber seine Markierung wird an den nächsten Kartenrand geschoben. Der Spieler sieht ihn also am Rand statt dort, wo er wirklich liegt. Anklickbar bleibt er.

Tip

Gib deinen eigenen Orten eine ID mit dem Präfix deines Mods (mymod_scapa_flow). Eine ID, die das Spiel schon hat, kannst du nicht selbst festlegen: Der mitgelieferte Ort gewinnt.