diff --git a/public/games/age-of-dwarves/guide/test-results/guide-age-of-dwarves/all-routes-route-coverage-intro-expansions-chromium/test-failed-1.png.import-AIh2bE b/public/games/age-of-dwarves/guide/test-results/guide-age-of-dwarves/all-routes-route-coverage-intro-expansions-chromium/test-failed-1.png.import-AIh2bE new file mode 100644 index 00000000..e1cf5779 --- /dev/null +++ b/public/games/age-of-dwarves/guide/test-results/guide-age-of-dwarves/all-routes-route-coverage-intro-expansions-chromium/test-failed-1.png.import-AIh2bE @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cki3ltnd1c77d" +path="res://.godot/imported/test-failed-1.png-16546acebc07ce77942440585fa3cf3b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://public/games/age-of-dwarves/guide/node_modules/@magic-civ/engine-ts/node_modules/@magic-civ/physics-rs/public/games/age-of-dwarves/guide/node_modules/@magic-civ/engine-ts/node_modules/@magic-civ/physics-rs/public/games/age-of-dwarves/guide/node_modules/@magic-civ/engine-ts/node_modules/@magic-civ/physics-rs/public/games/age-of-dwarves/guide/node_modules/@magic-civ/engine-ts/node_modules/@magic-civ/physics-rs/public/games/age-of-dwarves/guide/node_modules/@magic-civ/engine-ts/node_modules/@magic-civ/physics-rs/public/games/age-of-dwarves/guide/node_modules/@magic-civ/engine-ts/node_modules/@magic-civ/physics-rs/public/games/age-of-dwarves/guide/node_modules/@magic-civ/engine-ts/node_modules/@magic-civ/physics-rs/public/games/age-of-dwarves/guide/node_modules/@magic-civ/engine-ts/node_modules/@magic-civ/physics-rs/public/games/age-of-dwarves/guide/node_modules/@magic-civ/engine-ts/node_modules/@magic-civ/physics-rs/public/games/age-of-dwarves/guide/node_modules/@magic-civ/engine-ts/node_modules/@magic-civ/physics-rs/public/games/age-of-dwarves/guide/node_modules/@magic-civ/engine-ts/node_modules/@magic-civ/physics-rs/public/games/age-of-dwarves/guide/node_modules/@magic-civ/web-civmap/node_modules/@magic-civ/engine-ts/node_modules/@magic-civ/physics-rs/public/games/age-of-dwarves/guide/node_modules/@magic-civ/physics-rs/public/games/age-of-dwarves/guide/test-results/guide-age-of-dwarves/all-routes-route-coverage-intro-expansions-chromium/test-failed-1.png" +dest_files=["res://.godot/imported/test-failed-1.png-16546acebc07ce77942440585fa3cf3b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/public/games/age-of-dwarves/vocabulary.json b/public/games/age-of-dwarves/vocabulary.json index d015ce83..f989142c 100644 --- a/public/games/age-of-dwarves/vocabulary.json +++ b/public/games/age-of-dwarves/vocabulary.json @@ -809,6 +809,7 @@ "placement_no_bonus": "no adjacency bonus", "placement_error_not_owned": "That tile is not in this city's territory.", "placement_error_cannot_build": "Cannot build that building here.", + "improvement_preview_banner": "Click to confirm building %s here. Esc cancels.", "tech_tree": "Tech Tree", "culture_tree": "Culture Tree", "culture_tree_close_mark": "X", diff --git a/src/game/turn_stats.jsonl b/src/game/turn_stats.jsonl new file mode 100644 index 00000000..27253ed7 --- /dev/null +++ b/src/game/turn_stats.jsonl @@ -0,0 +1,19 @@ +{"aggregate":{"lair_cleared":0,"strategic_gate_rejected":0,"total_cities_captured":0,"total_cities_founded":0,"total_combats":0,"total_weather_events":0,"turn_first_city_captured":-1,"turn_first_combat":-1,"weather_events_count":0},"ecology":{"flora_canopy_delta":0.0,"flora_canopy_mean":0.0},"invariant_violations":[],"outcome":"defeat","player_stats":{},"turn":0,"victory_type":"","wall_clock_sec":1777195170.56735,"winner_index":-1,"winner_personality":""} +{"aggregate":{"lair_cleared":0,"strategic_gate_rejected":0,"total_cities_captured":0,"total_cities_founded":0,"total_combats":0,"total_weather_events":0,"turn_first_city_captured":-1,"turn_first_combat":-1,"weather_events_count":0},"ecology":{"flora_canopy_delta":0.0,"flora_canopy_mean":0.0},"invariant_violations":[],"outcome":"defeat","player_stats":{},"turn":0,"victory_type":"","wall_clock_sec":1777195617.46456,"winner_index":-1,"winner_personality":""} +{"aggregate":{"lair_cleared":0,"strategic_gate_rejected":0,"total_cities_captured":0,"total_cities_founded":0,"total_combats":0,"total_weather_events":0,"turn_first_city_captured":-1,"turn_first_combat":-1,"weather_events_count":0},"ecology":{"flora_canopy_delta":0.0,"flora_canopy_mean":0.0},"invariant_violations":[],"outcome":"defeat","player_stats":{},"turn":0,"victory_type":"","wall_clock_sec":1777195623.33084,"winner_index":-1,"winner_personality":""} +{"aggregate":{"lair_cleared":0,"strategic_gate_rejected":0,"total_cities_captured":0,"total_cities_founded":0,"total_combats":0,"total_weather_events":0,"turn_first_city_captured":-1,"turn_first_combat":-1,"weather_events_count":0},"ecology":{"flora_canopy_delta":0.0,"flora_canopy_mean":0.0},"invariant_violations":[],"outcome":"defeat","player_stats":{},"turn":0,"victory_type":"","wall_clock_sec":1777195629.34015,"winner_index":-1,"winner_personality":""} +{"aggregate":{"lair_cleared":0,"strategic_gate_rejected":0,"total_cities_captured":0,"total_cities_founded":0,"total_combats":0,"total_weather_events":0,"turn_first_city_captured":-1,"turn_first_combat":-1,"weather_events_count":0},"ecology":{"flora_canopy_delta":0.0,"flora_canopy_mean":0.0},"invariant_violations":[],"outcome":"defeat","player_stats":{},"turn":0,"victory_type":"","wall_clock_sec":1777195638.65017,"winner_index":-1,"winner_personality":""} +{"aggregate":{"lair_cleared":0,"strategic_gate_rejected":0,"total_cities_captured":0,"total_cities_founded":0,"total_combats":0,"total_weather_events":0,"turn_first_city_captured":-1,"turn_first_combat":-1,"weather_events_count":0},"ecology":{"flora_canopy_delta":0.0,"flora_canopy_mean":0.0},"invariant_violations":[],"outcome":"defeat","player_stats":{},"turn":0,"victory_type":"","wall_clock_sec":1777195646.02912,"winner_index":-1,"winner_personality":""} +{"aggregate":{"lair_cleared":0,"strategic_gate_rejected":0,"total_cities_captured":0,"total_cities_founded":0,"total_combats":0,"total_weather_events":0,"turn_first_city_captured":-1,"turn_first_combat":-1,"weather_events_count":0},"ecology":{"flora_canopy_delta":0.0,"flora_canopy_mean":0.0},"invariant_violations":[],"outcome":"defeat","player_stats":{},"turn":0,"victory_type":"","wall_clock_sec":1777195655.20292,"winner_index":-1,"winner_personality":""} +{"aggregate":{"lair_cleared":0,"strategic_gate_rejected":0,"total_cities_captured":0,"total_cities_founded":0,"total_combats":0,"total_weather_events":0,"turn_first_city_captured":-1,"turn_first_combat":-1,"weather_events_count":0},"ecology":{"flora_canopy_delta":0.0,"flora_canopy_mean":0.0},"invariant_violations":[],"outcome":"defeat","player_stats":{},"turn":0,"victory_type":"","wall_clock_sec":1777197174.79794,"winner_index":-1,"winner_personality":""} +{"aggregate":{"lair_cleared":0,"strategic_gate_rejected":0,"total_cities_captured":0,"total_cities_founded":0,"total_combats":0,"total_weather_events":0,"turn_first_city_captured":-1,"turn_first_combat":-1,"weather_events_count":0},"ecology":{"flora_canopy_delta":0.0,"flora_canopy_mean":0.0},"invariant_violations":[],"outcome":"defeat","player_stats":{},"turn":0,"victory_type":"","wall_clock_sec":1777197180.94202,"winner_index":-1,"winner_personality":""} +{"aggregate":{"lair_cleared":0,"strategic_gate_rejected":0,"total_cities_captured":0,"total_cities_founded":0,"total_combats":0,"total_weather_events":0,"turn_first_city_captured":-1,"turn_first_combat":-1,"weather_events_count":0},"ecology":{"flora_canopy_delta":0.0,"flora_canopy_mean":0.0},"invariant_violations":[],"outcome":"defeat","player_stats":{},"turn":0,"victory_type":"","wall_clock_sec":1777198553.11442,"winner_index":-1,"winner_personality":""} +{"aggregate":{"lair_cleared":0,"strategic_gate_rejected":0,"total_cities_captured":0,"total_cities_founded":0,"total_combats":0,"total_weather_events":0,"turn_first_city_captured":-1,"turn_first_combat":-1,"weather_events_count":0},"ecology":{"flora_canopy_delta":0.0,"flora_canopy_mean":0.0},"invariant_violations":[],"outcome":"defeat","player_stats":{},"turn":0,"victory_type":"","wall_clock_sec":1777198553.15636,"winner_index":-1,"winner_personality":""} +{"aggregate":{"lair_cleared":0,"strategic_gate_rejected":0,"total_cities_captured":0,"total_cities_founded":0,"total_combats":0,"total_weather_events":0,"turn_first_city_captured":-1,"turn_first_combat":-1,"weather_events_count":0},"ecology":{"flora_canopy_delta":0.0,"flora_canopy_mean":0.0},"invariant_violations":[],"outcome":"defeat","player_stats":{},"turn":0,"victory_type":"","wall_clock_sec":1777198559.36678,"winner_index":-1,"winner_personality":""} +{"aggregate":{"lair_cleared":0,"strategic_gate_rejected":0,"total_cities_captured":0,"total_cities_founded":0,"total_combats":0,"total_weather_events":0,"turn_first_city_captured":-1,"turn_first_combat":-1,"weather_events_count":0},"ecology":{"flora_canopy_delta":0.0,"flora_canopy_mean":0.0},"invariant_violations":[],"outcome":"defeat","player_stats":{},"turn":0,"victory_type":"","wall_clock_sec":1777198559.53983,"winner_index":-1,"winner_personality":""} +{"aggregate":{"lair_cleared":0,"strategic_gate_rejected":0,"total_cities_captured":0,"total_cities_founded":0,"total_combats":0,"total_weather_events":0,"turn_first_city_captured":-1,"turn_first_combat":-1,"weather_events_count":0},"ecology":{"flora_canopy_delta":0.0,"flora_canopy_mean":0.0},"invariant_violations":[],"outcome":"defeat","player_stats":{},"turn":0,"victory_type":"","wall_clock_sec":1777198565.6072,"winner_index":-1,"winner_personality":""} +{"aggregate":{"lair_cleared":0,"strategic_gate_rejected":0,"total_cities_captured":0,"total_cities_founded":0,"total_combats":0,"total_weather_events":0,"turn_first_city_captured":-1,"turn_first_combat":-1,"weather_events_count":0},"ecology":{"flora_canopy_delta":0.0,"flora_canopy_mean":0.0},"invariant_violations":[],"outcome":"defeat","player_stats":{},"turn":0,"victory_type":"","wall_clock_sec":1777198565.62795,"winner_index":-1,"winner_personality":""} +{"aggregate":{"lair_cleared":0,"strategic_gate_rejected":0,"total_cities_captured":0,"total_cities_founded":0,"total_combats":0,"total_weather_events":0,"turn_first_city_captured":-1,"turn_first_combat":-1,"weather_events_count":0},"ecology":{"flora_canopy_delta":0.0,"flora_canopy_mean":0.0},"invariant_violations":[],"outcome":"defeat","player_stats":{},"turn":0,"victory_type":"","wall_clock_sec":1777198571.79431,"winner_index":-1,"winner_personality":""} +{"aggregate":{"lair_cleared":0,"strategic_gate_rejected":0,"total_cities_captured":0,"total_cities_founded":0,"total_combats":0,"total_weather_events":0,"turn_first_city_captured":-1,"turn_first_combat":-1,"weather_events_count":0},"ecology":{"flora_canopy_delta":0.0,"flora_canopy_mean":0.0},"invariant_violations":[],"outcome":"defeat","player_stats":{},"turn":0,"victory_type":"","wall_clock_sec":1777198571.94632,"winner_index":-1,"winner_personality":""} +{"aggregate":{"lair_cleared":0,"strategic_gate_rejected":0,"total_cities_captured":0,"total_cities_founded":0,"total_combats":0,"total_weather_events":0,"turn_first_city_captured":-1,"turn_first_combat":-1,"weather_events_count":0},"ecology":{"flora_canopy_delta":0.0,"flora_canopy_mean":0.0},"invariant_violations":[],"outcome":"defeat","player_stats":{},"turn":0,"victory_type":"","wall_clock_sec":1777198578.22863,"winner_index":-1,"winner_personality":""} +{"aggregate":{"lair_cleared":0,"strategic_gate_rejected":0,"total_cities_captured":0,"total_cities_founded":0,"total_combats":0,"total_weather_events":0,"turn_first_city_captured":-1,"turn_first_combat":-1,"weather_events_count":0},"ecology":{"flora_canopy_delta":0.0,"flora_canopy_mean":0.0},"invariant_violations":[],"outcome":"defeat","player_stats":{},"turn":0,"victory_type":"","wall_clock_sec":1777198578.23542,"winner_index":-1,"winner_personality":""}