M10b: bussar, fler sidospår och överstimulerande UI
All checks were successful
release / build-release (push) Successful in 1m36s

Ett tåg kan vara en buss (vehicle: bus): samma tidtabell, faser,
bedömning i nätet och ombordstigning, men ett fordon på en väg i stället
för vagnar på räls, hållplatsskylt, "1番" på tavlan, tuta vid inrullning
och dörrsignal före avgång. Nätet har tre busslinjer från Narita. Nya
sidobanor: 001b Flygbussterminalen (biljettbana med tre bussar) och 003b
Harajuku (Yamanote åt rätt eller fel håll runt ringen). Overload-flaggan
ger en rullande reklamticker och maximalt med affischer (Ueno, Tokyo).
Romaji utan makroner (fonten saknar dem). Skärmdumparna som börjar på
bankartan går via titelskärmen. Tester, docs och wiki uppdaterade.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
2026-10-25 17:33:55 +01:00
parent 87695b668b
commit 0c47b0ad00
35 changed files with 666 additions and 73 deletions

View File

@@ -0,0 +1,154 @@
{
"destination": {
"en": "Shinjuku",
"ja": "新宿",
"romaji": "Shinjuku",
"sv": "Shinjuku"
},
"difficulty": 1,
"fareYen": 0,
"grid": [
"#################################",
"#S#.....#...#..i..#.....#.....#K#",
"#.#.###.#.#.#.#.#.#.###.#.#.#.#.#",
"#.#i..#.#.#...#.#...#...#.#.#...#",
"#.#.#.#.#.#.###.#####.###.#.###.#",
"#.#T#.#...#.....#.#...#.#.#.#.#.#",
"#.###.###########.#.#.#.#.#.#.#.#",
"#...#...#.........#.#.....#.#.#.#",
"###.###.#.#########.#.#####.#.#.#",
"#...#...#.#...#.....#.....#.#...#",
"#.###.###.#.#.#.#########.#.#.###",
"#.#...#.....#...#.....#...#.#...#",
"#.#.###.#####.#.#.#.#.#####.#.#.#",
"#..i#...#...#.#...#.#.#.....#.#.#",
"###.#.###.###.#####.#.#.#####.#.#",
"#...#...#...#.#.......#.#.....#.#",
"#.#####.#.#.#.#.#######.#.#####.#",
"#W#.....#.#.#.#...#...#.#.....#.#",
"###.#####.#.#.###G#.#.#.#####.#G#",
"#pG.........#...#Q#.#...#.....#P#",
"#################################"
],
"id": "001b-flygbussen",
"kind": "side",
"name": {
"en": "Airport bus terminal",
"ja": "空港バスのりば",
"sv": "Flygbussterminalen"
},
"order": 1,
"parent": "001-flygplatsen",
"party": 2,
"rewards": {
"skillPoints": 1
},
"rideStops": 2,
"signs": [
{
"text": {
"en": "Bus terminal. Tickets at the machine. Stop 1 limousine bus for Shinjuku: south-east. Stop 2 limousine bus for Yokohama: south-west. Stop 3 airport bus for Tokyo: south.",
"ja": "バスのりば 切符 → 券売機 1番 リムジンバス 新宿方面 → 南東 2番 リムジンバス 横浜方面 → 南西 3番 空港バス 東京方面 → 南",
"sv": "Bussterminalen. Biljetter köps i automaten. Hållplats 1 flygbuss mot Shinjuku: sydost. Hållplats 2 flygbuss mot Yokohama: sydväst. Hållplats 3 flygplatsbuss mot Tokyo: söderut."
},
"x": 3,
"y": 13,
"z": 0
},
{
"text": {
"en": "\u003c- Stop 2 limousine bus for Yokohama Stop 1 limousine bus for Shinjuku -\u003e",
"ja": "← 2番 リムジンバス 横浜方面 1番 リムジンバス 新宿方面 →",
"sv": "\u003c- Hållplats 2 flygbuss mot Yokohama Hållplats 1 flygbuss mot Shinjuku -\u003e"
},
"x": 3,
"y": 3,
"z": 0
},
{
"text": {
"en": "Stop 1 limousine bus for Shinjuku: the gate in the south-east corner. Ticket required.",
"ja": "1番 リムジンバス 新宿方面 → 南東口 改札 切符",
"sv": "Hållplats 1 flygbuss mot Shinjuku: spärren i sydöstra hörnet. Biljett krävs."
},
"x": 15,
"y": 1,
"z": 0
}
],
"station": "narita-airport",
"ticketRequired": true,
"timeLimitSec": 300,
"to": "shinjuku",
"trains": [
{
"cars": 1,
"destination": {
"en": "Shinjuku",
"ja": "新宿",
"romaji": "Shinjuku"
},
"line": {
"en": "Airport Limousine",
"ja": "リムジンバス",
"romaji": "Limousine Bus"
},
"lineId": "limousine-shinjuku",
"platform": "P",
"schedule": {
"dwellSec": 9,
"intervalSec": 32,
"offsetSec": 10
},
"terminus": "shinjuku",
"track": "1",
"vehicle": "bus"
},
{
"cars": 1,
"destination": {
"en": "Yokohama",
"ja": "横浜",
"romaji": "Yokohama"
},
"line": {
"en": "Airport Limousine",
"ja": "リムジンバス",
"romaji": "Limousine Bus"
},
"lineId": "limousine-yokohama",
"platform": "p",
"schedule": {
"dwellSec": 8,
"intervalSec": 32,
"offsetSec": 20
},
"terminus": "yokohama",
"track": "2",
"vehicle": "bus"
},
{
"cars": 1,
"destination": {
"en": "Tokyo",
"ja": "東京",
"romaji": "Tokyo"
},
"line": {
"en": "Airport Bus",
"ja": "空港バス",
"romaji": "Kuko basu"
},
"lineId": "airport-bus-tokyo",
"platform": "Q",
"schedule": {
"dwellSec": 8,
"intervalSec": 28,
"offsetSec": 4
},
"terminus": "tokyo",
"track": "3",
"vehicle": "bus"
}
]
}

View File

@@ -0,0 +1,131 @@
{
"crowd": 1,
"destination": {
"en": "Shinjuku",
"ja": "新宿",
"romaji": "Shinjuku",
"sv": "Shinjuku"
},
"difficulty": 2,
"fareYen": 160,
"grid": [
"#################################",
"#S..#W..............#.....#...#.#",
"#.#.###.#########.#.#.###.#.#.#.#",
"#.#.....#.........#.#.#K#...#...#",
"#.#######.#.###.###.#.#.#######.#",
"#...#.....#.#...#...#.#...#...#.#",
"#.###.#####.#.###.###.#.###.#.#.#",
"#...#.#.....#T#...#...#.#...#.#.#",
"#.#.#.#.#######.###.###.#.###.#.#",
"#...#.#...#.....#...#.....#...#.#",
"###.#.###.#.#######.#.#####.###.#",
"#..i#...#...#.......#.....#.#...#",
"#.#.#.#.#####.#.#####.###.#.#.###",
"#.#.#...#...#.#.#...#...#.#.#...#",
"#.#.###.#.#.###.#.#.#.#.#.#.###.#",
"#.#...#.#.#...#.#.#...#.#...#..i#",
"#.#####.#.###.#.#.#####.#.###.#.#",
"#.....#...#.#...#.#...#.#.#...#.#",
"#G#.#.#####.#####.#.#.#.#.#.#####",
"#p#.#......i........#.........GP#",
"#################################"
],
"id": "003b-harajuku",
"kind": "side",
"name": {
"en": "Harajuku",
"ja": "原宿駅",
"sv": "Harajuku"
},
"order": 3,
"parent": "003-shibuya",
"party": 2,
"rewards": {
"items": [
"mask_tengu"
]
},
"rideStops": 3,
"signs": [
{
"text": {
"en": "Harajuku Station. Track 1 Yamanote Line for Shinjuku: south-east. Track 2 Yamanote Line for Shibuya: south-west. Same line - the wrong way round the loop takes half an hour.",
"ja": "原宿駅 1番線 山手線 新宿方面 → 南東 2番線 山手線 渋谷方面 → 南西",
"sv": "Harajuku station. Spår 1 Yamanote-linjen mot Shinjuku: sydost. Spår 2 Yamanote-linjen mot Shibuya: sydväst. Samma linje - fel varv runt ringen tar en halvtimme."
},
"x": 3,
"y": 11,
"z": 0
},
{
"text": {
"en": "\u003c- Track 2 Yamanote Line for Shibuya Track 1 Yamanote Line for Shinjuku -\u003e",
"ja": "← 2番線 山手線 渋谷方面 1番線 山手線 新宿方面 →",
"sv": "\u003c- Spår 2 Yamanote-linjen mot Shibuya Spår 1 Yamanote-linjen mot Shinjuku -\u003e"
},
"x": 11,
"y": 19,
"z": 0
},
{
"text": {
"en": "Track 1 Yamanote Line for Shinjuku: the gate in the south-east corner.",
"ja": "1番線 山手線 新宿方面 → 南東口 改札",
"sv": "Spår 1 Yamanote-linjen mot Shinjuku: spärren i sydöstra hörnet."
},
"x": 31,
"y": 15,
"z": 0
}
],
"station": "harajuku",
"timeLimitSec": 240,
"to": "shinjuku",
"trains": [
{
"cars": 4,
"destination": {
"en": "Shinjuku",
"ja": "新宿",
"romaji": "Shinjuku"
},
"line": {
"en": "Yamanote Line",
"ja": "山手線",
"romaji": "Yamanote-sen"
},
"lineId": "yamanote",
"platform": "P",
"schedule": {
"dwellSec": 8,
"intervalSec": 26,
"offsetSec": 8
},
"terminus": "shinjuku",
"track": "1"
},
{
"cars": 4,
"destination": {
"en": "Shibuya",
"ja": "渋谷",
"romaji": "Shibuya"
},
"line": {
"en": "Yamanote Line",
"ja": "山手線",
"romaji": "Yamanote-sen"
},
"lineId": "yamanote",
"platform": "p",
"schedule": {
"dwellSec": 8,
"intervalSec": 26,
"offsetSec": 18
},
"terminus": "shibuya",
"track": "2"
}
]
}

View File

@@ -11,23 +11,23 @@
"fareYen": 200,
"grid": [
"#################################",
"#S.\u003c..\u003c..#..\u003c..\u003c..\u003cK.\u003c..#..\u003c..###",
"#..\u003e..\u003e..#..\u003e..\u003e..\u003e..\u003e..#.i\u003e..###",
"#######\u003c\u003e#\u003c\u003e#\u003c\u003e####\u003c\u003e#\u003c\u003e####\u003c\u003e###",
"#..\u003c..\u003cT.#..\u003c..\u003c..\u003c..#..\u003c..\u003c..###",
"#.i\u003e..\u003e..#..\u003e..\u003e..\u003e..#..\u003e..\u003e..###",
"#\u003c\u003e#############\u003c\u003e#######\u003c\u003e#\u003c\u003e###",
"#..#..\u003c..\u003c..\u003c..\u003c..\u003c..\u003c..#..\u003c..###",
"#..#..\u003e..\u003e..\u003e..\u003e..\u003e..\u003e..#..\u003e..###",
"#\u003c\u003e####\u003c\u003e##########\u003c\u003e#\u003c\u003e#\u003c\u003e######",
"#..\u003c..\u003c..\u003c..#..\u003c..\u003c..#..#..\u003c..###",
"#..\u003e..\u003e..\u003e..#..\u003e..\u003e..#..#..\u003e..###",
"####\u003c\u003e#\u003c\u003e#\u003c\u003e#\u003c\u003e####\u003c\u003e#######\u003c\u003e###",
"#..\u003c..#..#..#..\u003c..#..\u003c..\u003c..\u003c..###",
"#G.\u003e..#..#..#..\u003e..#..\u003e..\u003e..\u003e..###",
"#\u003cG#######\u003c\u003e####\u003c\u003e###############",
"#..#..\u003c..\u003c.i#..\u003c..\u003c..\u003c..\u003c..G..W##",
"#p.#..\u003e..\u003e..#..\u003e..\u003e..\u003e..\u003e.G\u003e.P###",
"#S.<..<..#..<..<..<K.<..#..<..###",
"#..>..>..#..>..>..>..>..#.i>..###",
"#######<>#<>#<>####<>#<>####<>###",
"#..<..<T.#..<..<..<..#..<..<..###",
"#.i>..>..#..>..>..>..#..>..>..###",
"#<>#############<>#######<>#<>###",
"#..#..<..<..<..<..<..<..#..<..###",
"#..#..>..>..>..>..>..>..#..>..###",
"#<>####<>##########<>#<>#<>######",
"#..<..<..<..#..<..<..#..#..<..###",
"#..>..>..>..#..>..>..#..#..>..###",
"####<>#<>#<>#<>####<>#######<>###",
"#..<..#..#..#..<..#..<..<..<..###",
"#G.>..#..#..#..>..#..>..>..>..###",
"#<G#######<>####<>###############",
"#..#..<..<.i#..<..<..<..<..G..W##",
"#p.#..>..>..#..>..>..>..>.G>.P###",
"#################################",
"#################################",
"#################################"
@@ -65,9 +65,9 @@
},
{
"text": {
"en": "\u003c- Track 9 Keihin-Tohoku Line (Omiya) Track 3 Yamanote Line (Akihabara) -\u003e",
"en": "<- Track 9 Keihin-Tohoku Line (Omiya) Track 3 Yamanote Line (Akihabara) ->",
"ja": "← 9番線 京浜東北線 大宮方面 3番線 山手線 秋葉原方面 →",
"sv": "\u003c- Spår 9 Keihin-Tohoku-linjen (Omiya) Spår 3 Yamanote-linjen (Akihabara) -\u003e"
"sv": "<- Spår 9 Keihin-Tohoku-linjen (Omiya) Spår 3 Yamanote-linjen (Akihabara) ->"
},
"x": 11,
"y": 16,
@@ -135,5 +135,6 @@
"terminus": "omiya",
"track": "9"
}
]
}
],
"overload": true
}

View File

@@ -100,9 +100,9 @@
},
{
"text": {
"en": "\u003c- Track 5 Yamanote Line for Shinagawa Track 4 Yamanote Line for Ueno -\u003e",
"en": "<- Track 5 Yamanote Line for Shinagawa Track 4 Yamanote Line for Ueno ->",
"ja": "← 5番線 山手線 品川方面 4番線 山手線 上野方面 →",
"sv": "\u003c- Spår 5 Yamanote-linjen mot Shinagawa Spår 4 Yamanote-linjen mot Ueno -\u003e"
"sv": "<- Spår 5 Yamanote-linjen mot Shinagawa Spår 4 Yamanote-linjen mot Ueno ->"
},
"x": 7,
"y": 19,
@@ -211,5 +211,6 @@
"terminus": "takao",
"track": "1"
}
]
}
],
"overload": true
}

View File

@@ -1004,6 +1004,47 @@
"yokohama",
"ofuna"
]
},
{
"id": "limousine-shinjuku",
"name": {
"ja": "リムジンバス",
"romaji": "Limousine Bus",
"en": "Airport Limousine (Shinjuku)"
},
"stations": [
"narita-airport",
"airport-terminal-2",
"shinjuku"
],
"vehicle": "bus"
},
{
"id": "limousine-yokohama",
"name": {
"ja": "リムジンバス",
"romaji": "Limousine Bus",
"en": "Airport Limousine (Yokohama)"
},
"stations": [
"narita-airport",
"airport-terminal-2",
"yokohama"
],
"vehicle": "bus"
},
{
"id": "airport-bus-tokyo",
"name": {
"ja": "空港バス",
"romaji": "Kuko basu",
"en": "Airport Bus (Tokyo)"
},
"stations": [
"narita-airport",
"tokyo"
],
"vehicle": "bus"
}
]
}