M7: svårighet, tid, poäng, debuffar, egna kort och sittplatsval
All checks were successful
release / build-release (push) Successful in 1m37s
All checks were successful
release / build-release (push) Successful in 1m37s
- sim/stats.go: Stats (fart, törst, fokus, toalett, tur), debuffar som multiplikatorer, Profile som följer med mellan banor och räknar ned - sim.Run: tidsgräns och maxantal missade tåg förlorar banan; poängformel (tid mot par, pengar, sällskapets mätare, utforskat, avdrag); debuffar tjänas av många steg, lång tid, tom matmätare och seedad otur vid kiosken; stats påverkar fart, mätartakter, läsning och hjälptid - egna kort (individualCards): Member.Card, spärren kräver allas saldo och drar från alla, automaten frågar vems kort, biljetter köps åt alla - sittplatsval (seatSelection): Ticket får ett sittplatssteg med seedade önskemål (fönster/gång/sida/bredvid); missnöjda ger mätar- och poängavdrag - level: maxMissedTrains, individualCards, seatSelection; bana 003 Shibuya (svårighet 3, fyra i sällskapet) och 002 med tidsgräns och sittplatser; ordboken utökad; generatorn är spec-driven - game: tid kvar/missade i HUD, debuffar i meny/HUD/resultat, poäng och förlustorsaker på resultatet, vyer för personval och vagn, skript-pick, flaggan -debuffs; HUD och resultat komprimerade för fyra i sällskapet - plan (Björn 2026-10-24): flera våningar med trappor som M9a, egna kort och sittplatsval som svårighetsinställningar i M7 – i spelbeskrivning, roadmap, testplan - docs/README/wiki med sittplatsbilden Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -1,21 +1,11 @@
|
||||
{
|
||||
"id": "002-shinjuku",
|
||||
"name": {
|
||||
"en": "Shinjuku Station",
|
||||
"ja": "新宿駅",
|
||||
"sv": "Shinjuku station"
|
||||
},
|
||||
"difficulty": 2,
|
||||
"party": 3,
|
||||
"ticketRequired": true,
|
||||
"rideStops": 4,
|
||||
"destination": {
|
||||
"en": "Shibuya",
|
||||
"ja": "渋谷",
|
||||
"romaji": "Shibuya",
|
||||
"sv": "Shibuya"
|
||||
},
|
||||
"timeLimitSec": 0,
|
||||
"difficulty": 2,
|
||||
"fareYen": 200,
|
||||
"grid": [
|
||||
"#################################",
|
||||
@@ -23,7 +13,7 @@
|
||||
"#.#.#.#.#.#.#######.#.#########.#",
|
||||
"#.#W#.#.#.#.#.....#.#...........#",
|
||||
"#.###.#.#.#.#####.#.###########.#",
|
||||
"#.#...#.#.........#.#.......#...#",
|
||||
"#.#...#.#..i......#.#.......#...#",
|
||||
"#.#.###.###########.#.#.###.#.###",
|
||||
"#.....#.......#...#.#.#.........#",
|
||||
"#####.#######.#.#.#.#.#########.#",
|
||||
@@ -35,14 +25,56 @@
|
||||
"#.#.###.###.#.###.#.#.#######.#.#",
|
||||
"#...#T#.#..i#.#.#...#.....#...#.#",
|
||||
"#####.#.#.#.#.#.#####.#####.###.#",
|
||||
"#.....#.#.#.#..i....#.......#...#",
|
||||
"#.....#.#.#.#.......#.......#...#",
|
||||
"#G#.#.#.#.#########.#########.#G#",
|
||||
"#pG.#...#.....................#P#",
|
||||
"#################################"
|
||||
],
|
||||
"id": "002-shinjuku",
|
||||
"maxMissedTrains": 2,
|
||||
"name": {
|
||||
"en": "Shinjuku Station",
|
||||
"ja": "新宿駅",
|
||||
"sv": "Shinjuku station"
|
||||
},
|
||||
"party": 3,
|
||||
"rideStops": 4,
|
||||
"seatSelection": true,
|
||||
"signs": [
|
||||
{
|
||||
"text": {
|
||||
"en": "Shinjuku Station. Track 14 Yamanote Line for Shibuya: far bottom right. Track 8 Chuo Line for Tokyo: far bottom left.",
|
||||
"ja": "新宿駅 14番線 山手線 渋谷方面 → 南東 8番線 中央線 東京方面 → 南西",
|
||||
"sv": "Shinjuku station. Spår 14 Yamanote-linjen mot Shibuya: längst ner till höger. Spår 8 Chuo-linjen mot Tokyo: längst ner till vänster."
|
||||
},
|
||||
"x": 5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"text": {
|
||||
"en": "\u003c- Track 8 Chuo Line (Tokyo) Track 14 Yamanote Line (Shibuya) -\u003e",
|
||||
"ja": "← 8番線 中央線 東京方面 14番線 山手線 渋谷方面 →",
|
||||
"sv": "\u003c- Spår 8 Chuo-linjen (Tokyo) Spår 14 Yamanote-linjen (Shibuya) -\u003e"
|
||||
},
|
||||
"x": 11,
|
||||
"y": 15
|
||||
},
|
||||
{
|
||||
"text": {
|
||||
"en": "Track 14 Yamanote Line for Shibuya: the gate in the south-east corner.",
|
||||
"ja": "14番線 山手線 渋谷方面 → 南東口 改札",
|
||||
"sv": "Spår 14 Yamanote-linjen mot Shibuya: spärren i sydöstra hörnet."
|
||||
},
|
||||
"x": 11,
|
||||
"y": 5
|
||||
}
|
||||
],
|
||||
"ticketRequired": true,
|
||||
"timeLimitSec": 420,
|
||||
"trains": [
|
||||
{
|
||||
"correct": true,
|
||||
"crowded": true,
|
||||
"destination": {
|
||||
"en": "Shibuya",
|
||||
"ja": "渋谷",
|
||||
@@ -59,8 +91,7 @@
|
||||
"intervalSec": 20,
|
||||
"offsetSec": 3
|
||||
},
|
||||
"track": "14",
|
||||
"crowded": true
|
||||
"track": "14"
|
||||
},
|
||||
{
|
||||
"correct": false,
|
||||
@@ -82,34 +113,5 @@
|
||||
},
|
||||
"track": "8"
|
||||
}
|
||||
],
|
||||
"signs": [
|
||||
{
|
||||
"text": {
|
||||
"en": "Shinjuku Station. Track 14 Yamanote Line for Shibuya: far bottom right. Track 8 Chuo Line for Tokyo: far bottom left.",
|
||||
"ja": "新宿駅 14番線 山手線 渋谷方面 → 南東 8番線 中央線 東京方面 → 南西",
|
||||
"sv": "Shinjuku station. Spår 14 Yamanote-linjen mot Shibuya: längst ner till höger. Spår 8 Chuo-linjen mot Tokyo: längst ner till vänster."
|
||||
},
|
||||
"x": 5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"text": {
|
||||
"en": "<- Track 8 Chuo Line (Tokyo) Track 14 Yamanote Line (Shibuya) ->",
|
||||
"ja": "← 8番線 中央線 東京方面 14番線 山手線 渋谷方面 →",
|
||||
"sv": "<- Spår 8 Chuo-linjen (Tokyo) Spår 14 Yamanote-linjen (Shibuya) ->"
|
||||
},
|
||||
"x": 11,
|
||||
"y": 15
|
||||
},
|
||||
{
|
||||
"text": {
|
||||
"en": "Track 14 Yamanote Line for Shibuya: the gate in the south-east corner.",
|
||||
"ja": "14番線 山手線 渋谷方面 → 南東口 改札",
|
||||
"sv": "Spår 14 Yamanote-linjen mot Shibuya: spärren i sydöstra hörnet."
|
||||
},
|
||||
"x": 15,
|
||||
"y": 17
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
118
resources/data/levels/003-shibuya.json
Normal file
118
resources/data/levels/003-shibuya.json
Normal file
@@ -0,0 +1,118 @@
|
||||
{
|
||||
"destination": {
|
||||
"en": "Ikebukuro",
|
||||
"ja": "池袋",
|
||||
"romaji": "Ikebukuro",
|
||||
"sv": "Ikebukuro"
|
||||
},
|
||||
"difficulty": 3,
|
||||
"fareYen": 200,
|
||||
"grid": [
|
||||
"#################################",
|
||||
"#S.........W#....i........#.....#",
|
||||
"#.#####.#.###.###.#####.#.#.#####",
|
||||
"#.#...#.#.....#...#.....#.#.....#",
|
||||
"#.#.#.#.#######.###.#####.#.###.#",
|
||||
"#.#.#.#.....#...#......i..#.#...#",
|
||||
"#.#.#.#####.#.#.#.#####.#####.###",
|
||||
"#...#.#...#...#.#.....#.#...#...#",
|
||||
"#####.#.#.#####.#####.#.#.#.###.#",
|
||||
"#T#...#.#...#K#.....#.#...#...#.#",
|
||||
"#.#.###.###.#.#####.#.#######.#.#",
|
||||
"#.#.#...#...#...#...#...#...#...#",
|
||||
"#.#.#.#.#.#.#.###.#####.#.#.#####",
|
||||
"#...#.#.#.#.#.....#...#...#..i..#",
|
||||
"#.#####.#.#.#######.#.#######.#.#",
|
||||
"#.....#.#.#.....#...#...#...#.#.#",
|
||||
"#####.#.#.#####.#.#####.#.#.#.#.#",
|
||||
"#...#...#.....#.#.#.#...#.#.#.#.#",
|
||||
"#G#######.#####.#.#.#.###.#.#.#G#",
|
||||
"#pG...............#.......#...GP#",
|
||||
"#################################"
|
||||
],
|
||||
"id": "003-shibuya",
|
||||
"individualCards": true,
|
||||
"maxMissedTrains": 1,
|
||||
"name": {
|
||||
"en": "Shibuya Station",
|
||||
"ja": "渋谷駅",
|
||||
"sv": "Shibuya station"
|
||||
},
|
||||
"party": 4,
|
||||
"rideStops": 5,
|
||||
"seatSelection": true,
|
||||
"signs": [
|
||||
{
|
||||
"text": {
|
||||
"en": "Shibuya Station. Track 2 Yamanote Line for Ikebukuro: south-east. Track 4 Tokyu Toyoko Line for Yokohama: south-west. Tickets at the machine.",
|
||||
"ja": "渋谷駅 2番線 山手線 池袋方面 → 南東 4番線 東急東横線 横浜方面 → 南西 切符 自動券売機",
|
||||
"sv": "Shibuya station. Spår 2 Yamanote-linjen mot Ikebukuro: sydöst. Spår 4 Tokyu Toyoko-linjen mot Yokohama: sydväst. Biljetter i automaten."
|
||||
},
|
||||
"x": 17,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"text": {
|
||||
"en": "\u003c- Track 4 Tokyu Toyoko Line (Yokohama) Track 2 Yamanote Line (Ikebukuro) -\u003e",
|
||||
"ja": "← 4番線 東急東横線 横浜方面 2番線 山手線 池袋方面 →",
|
||||
"sv": "\u003c- Spår 4 Tokyu Toyoko-linjen (Yokohama) Spår 2 Yamanote-linjen (Ikebukuro) -\u003e"
|
||||
},
|
||||
"x": 23,
|
||||
"y": 5
|
||||
},
|
||||
{
|
||||
"text": {
|
||||
"en": "Track 2 Yamanote Line for Ikebukuro: the gate in the south-east corner. Everyone needs a ticket and card balance.",
|
||||
"ja": "2番線 山手線 池袋方面 → 南東口 改札",
|
||||
"sv": "Spår 2 Yamanote-linjen mot Ikebukuro: spärren i sydöstra hörnet. Alla behöver biljett och saldo på kortet."
|
||||
},
|
||||
"x": 29,
|
||||
"y": 13
|
||||
}
|
||||
],
|
||||
"ticketRequired": true,
|
||||
"timeLimitSec": 360,
|
||||
"trains": [
|
||||
{
|
||||
"correct": true,
|
||||
"crowded": true,
|
||||
"destination": {
|
||||
"en": "Ikebukuro",
|
||||
"ja": "池袋",
|
||||
"romaji": "Ikebukuro"
|
||||
},
|
||||
"line": {
|
||||
"en": "Yamanote Line",
|
||||
"ja": "山手線",
|
||||
"romaji": "Yamanote-sen"
|
||||
},
|
||||
"platform": "P",
|
||||
"schedule": {
|
||||
"dwellSec": 7,
|
||||
"intervalSec": 25,
|
||||
"offsetSec": 6
|
||||
},
|
||||
"track": "2"
|
||||
},
|
||||
{
|
||||
"correct": false,
|
||||
"destination": {
|
||||
"en": "Yokohama",
|
||||
"ja": "横浜",
|
||||
"romaji": "Yokohama"
|
||||
},
|
||||
"line": {
|
||||
"en": "Tokyu Toyoko Line",
|
||||
"ja": "東急東横線",
|
||||
"romaji": "Tokyu Toyoko-sen"
|
||||
},
|
||||
"platform": "p",
|
||||
"schedule": {
|
||||
"dwellSec": 8,
|
||||
"intervalSec": 30,
|
||||
"offsetSec": 12
|
||||
},
|
||||
"track": "4"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -91,5 +91,41 @@
|
||||
"mini.crowd.title": "Crowded train - squeeze in",
|
||||
"mini.crowd.hint": "Press Enter when the marker is in the green zone (%d tries left)",
|
||||
"mini.ride.title": "On the train - next stop",
|
||||
"mini.ride.hint": "Enter: get off here (you are going to %s)"
|
||||
"mini.ride.hint": "Enter: get off here (you are going to %s)",
|
||||
"hud.time_left": "Left",
|
||||
"hud.debuffs": "Debuffs",
|
||||
"hud.grumpy": "Someone is grumpy about their seat…",
|
||||
"hud.poisoned": "That snack tasted odd…",
|
||||
"hud.need_all_cards": "Gate: %s has no money on the card.",
|
||||
"hud.need_all_tickets": "Gate: everyone needs a ticket.",
|
||||
"result.lost_time_up": "Time ran out.",
|
||||
"result.lost_missed_trains": "Too many missed trains.",
|
||||
"result.score": "Score",
|
||||
"result.money": "money",
|
||||
"result.meters": "meters",
|
||||
"result.new_debuffs": "New debuffs",
|
||||
"mini.topup.member": "Whose card to top up?",
|
||||
"mini.seat.hint": "Pick a seat for %s (arrows, Enter)",
|
||||
"mini.seat.prefs": "Wishes:",
|
||||
"seat.front": "← direction of travel",
|
||||
"seat.window": "window",
|
||||
"seat.aisle": "aisle",
|
||||
"seat.left": "left side",
|
||||
"seat.right": "right side",
|
||||
"seat.with": "next to %s",
|
||||
"debuff.sore_feet": "sore feet",
|
||||
"debuff.tired": "tired",
|
||||
"debuff.hangry": "hangry",
|
||||
"debuff.food_poisoning": "food poisoning",
|
||||
"debuff.doms": "sore muscles",
|
||||
"debuff.blisters": "blisters",
|
||||
"debuff.heavy_bag": "heavy bag",
|
||||
"debuff.stuffed": "stuffed",
|
||||
"debuff.sweaty": "sweaty and hot",
|
||||
"hud.cash_short": "Cash",
|
||||
"hud.missed_short": "Miss",
|
||||
"result.penalty": "penalty",
|
||||
"result.lang_points": "language points",
|
||||
"result.missed_short": "Missed",
|
||||
"result.map": "map"
|
||||
}
|
||||
|
||||
@@ -481,5 +481,55 @@
|
||||
"sv": "Nippori",
|
||||
"tier": 3,
|
||||
"kind": "station"
|
||||
},
|
||||
"横浜": {
|
||||
"kana": "よこはま",
|
||||
"romaji": "Yokohama",
|
||||
"en": "Yokohama",
|
||||
"sv": "Yokohama",
|
||||
"tier": 3,
|
||||
"kind": "station"
|
||||
},
|
||||
"東急東横線": {
|
||||
"kana": "とうきゅうとうよこせん",
|
||||
"romaji": "Tokyu Toyoko-sen",
|
||||
"en": "Tokyu Toyoko Line",
|
||||
"sv": "Tokyu Toyoko-linjen",
|
||||
"tier": 3
|
||||
},
|
||||
"渋谷駅": {
|
||||
"kana": "しぶやえき",
|
||||
"romaji": "Shibuya-eki",
|
||||
"en": "Shibuya Station",
|
||||
"sv": "Shibuya station",
|
||||
"tier": 3
|
||||
},
|
||||
"北": {
|
||||
"kana": "きた",
|
||||
"romaji": "kita",
|
||||
"en": "north",
|
||||
"sv": "norr",
|
||||
"tier": 2
|
||||
},
|
||||
"南": {
|
||||
"kana": "みなみ",
|
||||
"romaji": "minami",
|
||||
"en": "south",
|
||||
"sv": "söder",
|
||||
"tier": 2
|
||||
},
|
||||
"東": {
|
||||
"kana": "ひがし",
|
||||
"romaji": "higashi",
|
||||
"en": "east",
|
||||
"sv": "öster",
|
||||
"tier": 2
|
||||
},
|
||||
"西": {
|
||||
"kana": "にし",
|
||||
"romaji": "nishi",
|
||||
"en": "west",
|
||||
"sv": "väster",
|
||||
"tier": 2
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,5 +91,41 @@
|
||||
"mini.crowd.title": "Fullt tåg - tränga sig på",
|
||||
"mini.crowd.hint": "Tryck Enter när markören är i det gröna fältet (%d försök kvar)",
|
||||
"mini.ride.title": "På tåget - nästa station",
|
||||
"mini.ride.hint": "Enter: kliv av här (du ska till %s)"
|
||||
"mini.ride.hint": "Enter: kliv av här (du ska till %s)",
|
||||
"hud.time_left": "Kvar",
|
||||
"hud.debuffs": "Debuffar",
|
||||
"hud.grumpy": "Någon är sur över sittplatsen…",
|
||||
"hud.poisoned": "Den där matbiten smakade konstigt…",
|
||||
"hud.need_all_cards": "Spärren: %s har inte pengar på kortet.",
|
||||
"hud.need_all_tickets": "Spärren: alla behöver en biljett.",
|
||||
"result.lost_time_up": "Tiden tog slut.",
|
||||
"result.lost_missed_trains": "För många missade tåg.",
|
||||
"result.score": "Poäng",
|
||||
"result.money": "pengar",
|
||||
"result.meters": "mätare",
|
||||
"result.new_debuffs": "Nya debuffar",
|
||||
"mini.topup.member": "Vems kort ska fyllas på?",
|
||||
"mini.seat.hint": "Välj plats åt %s (pilar, Enter)",
|
||||
"mini.seat.prefs": "Önskemål:",
|
||||
"seat.front": "← färdriktning",
|
||||
"seat.window": "fönster",
|
||||
"seat.aisle": "gången",
|
||||
"seat.left": "vänster sida",
|
||||
"seat.right": "höger sida",
|
||||
"seat.with": "bredvid %s",
|
||||
"debuff.sore_feet": "onda fötter",
|
||||
"debuff.tired": "trötthet",
|
||||
"debuff.hangry": "hunger/irritation",
|
||||
"debuff.food_poisoning": "matförgiftning",
|
||||
"debuff.doms": "träningsvärk",
|
||||
"debuff.blisters": "skoskav",
|
||||
"debuff.heavy_bag": "tungt köp",
|
||||
"debuff.stuffed": "proppmätt",
|
||||
"debuff.sweaty": "svettig och varm",
|
||||
"hud.cash_short": "Kont",
|
||||
"hud.missed_short": "Miss",
|
||||
"result.penalty": "avdrag",
|
||||
"result.lang_points": "språkpoäng",
|
||||
"result.missed_short": "Missade",
|
||||
"result.map": "karta"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user