Skip to content

[Feature] Adds Tribe Themes to all real world maps + Custom Tribes w/coords on LA - #4806

Merged
FloPinguin merged 11 commits into
openfrontio:mainfrom
crunchybbb2:TribeThemesLosAngelesTribeCoords
Jul 31, 2026
Merged

[Feature] Adds Tribe Themes to all real world maps + Custom Tribes w/coords on LA#4806
FloPinguin merged 11 commits into
openfrontio:mainfrom
crunchybbb2:TribeThemesLosAngelesTribeCoords

Conversation

@crunchybbb2

@crunchybbb2 crunchybbb2 commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Before opening a PR: discuss new features on Discord first, and file bugs or small improvements as issues. You must be assigned to an approved issue — unsolicited PRs will be auto-closed.

Add approved & assigned issue number here:

Resolves #4805 (issue number)

Description:

Tribe themes were created by @FloPinguin: #4647;
However, they were not implemented, this PR will implement them.
Also I want to sneak the Custom Tribes w/ Coordinates (by @FloPinguin #4697) into the Los Angeles map so it isn't a "feature that isn't implemented" (we should have one map using it for testing and feedback purposes)

This is for v33 (Last minute feature release lol)

  • Adds tribe themes to all maps containing a continental category like "categories": ["europe"]
  • In the format of: "themes": ["europe"]
  • Adds around 130 custom tribes with coordinates to the LA map in the form of suburbs, cities and districts
  • For testing purpose i added western theme to Las Vegas Strip and scary theme to Achiran
Image ^China using the custom Asian theme Image ^The Los Angeles suburbs and district tribes are highlighted yellow

Please complete the following:

  • I have added screenshots for all UI updates
  • I process any text displayed to the user through translateText() and I've added it to the en.json file
  • I have added relevant tests to the test directory

Please put your Discord username so you can be contacted if a bug or regression is found:

DISCORD_USERNAME crunchybbbbb

@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 6d4b69d6-3a82-45c7-8a46-ae323c2b3835

📥 Commits

Reviewing files that changed from the base of the PR and between c73295d and 95e13cb.

📒 Files selected for processing (3)
  • resources/maps/caribbean/manifest.json
  • resources/maps/indiansubcontinent/manifest.json
  • resources/maps/lasvegasstrip/manifest.json
🚧 Files skipped from review as they are similar to previous changes (1)
  • resources/maps/caribbean/manifest.json

Walkthrough

The change adds themes metadata to map generator files, resource manifests, and generated map definitions. It also adds named, coordinate-based custom tribes to the Los Angeles map.

Changes

Map metadata and generated definitions

Layer / File(s) Summary
Map themes
map-generator/assets/maps/*/info.json, resources/maps/*/manifest.json
Map metadata and manifests now declare geographic or thematic themes arrays.
Los Angeles custom tribes
map-generator/assets/maps/losangeles/info.json, resources/maps/losangeles/manifest.json
Los Angeles now defines 138 named custom tribes with coordinates.
Generated map definitions
src/core/game/Maps.gen.ts
Generated map entries now include theme metadata and custom tribe data for Germany and Los Angeles.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

Suggested labels: Feature, Maps

Suggested reviewers: evanpelle, flopinguin

Poem

Maps gain themes across the chart,
Los Angeles tribes gain names and points.
Manifests record each classification,
Generated data follows the source,
Every map gets its place.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main changes: tribe themes for real-world maps and coordinate-based custom tribes for Los Angeles.
Description check ✅ Passed The description directly explains the map theme implementation and the addition of custom Los Angeles tribes.
Linked Issues check ✅ Passed The changes satisfy issue #4805 by adding map themes, Los Angeles custom tribes, and the specified testing themes.
Out of Scope Changes check ✅ Passed The changes remain within issue #4805 scope and contain no unrelated code or metadata updates.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Fix failing CI checks

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
map-generator/assets/maps/losangeles/info.json (1)

140-692: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Make positioned Los Angeles tribes safe before relying on them.

TribeSpawner.spawnTribes() processes customTribes in file order until the bot cap and then marks the remaining entries as unavailable, so many Los Angeles custom names can fail silently. Update the analytics guard, and validate every coordinate against water, impassable terrain, and nation tiles before spawning it.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@map-generator/assets/maps/losangeles/info.json` around lines 140 - 692,
Update the Los Angeles custom_tribes handling so every positioned tribe is
validated against water, impassable terrain, and nation tiles before spawning,
and adjust the analytics guard to reflect that validation. Ensure validation
occurs before TribeSpawner.spawnTribes() applies the bot cap or marks later
entries unavailable, preserving only safe coordinates for spawning.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@map-generator/assets/maps/losangeles/info.json`:
- Around line 665-668: Correct the city name from “Hormosa Beach” to “Hermosa
Beach” in map-generator/assets/maps/losangeles/info.json lines 665-668, then
regenerate resources/maps/losangeles/manifest.json lines 528-531 and
src/core/game/Maps.gen.ts line 743 so both generated entries preserve
coordinates [891, 1165] and use the corrected name.

---

Nitpick comments:
In `@map-generator/assets/maps/losangeles/info.json`:
- Around line 140-692: Update the Los Angeles custom_tribes handling so every
positioned tribe is validated against water, impassable terrain, and nation
tiles before spawning, and adjust the analytics guard to reflect that
validation. Ensure validation occurs before TribeSpawner.spawnTribes() applies
the bot cap or marks later entries unavailable, preserving only safe coordinates
for spawning.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: c5d30dee-be35-4db6-ba1b-08521ef9a9e5

📥 Commits

Reviewing files that changed from the base of the PR and between 2f48ae9 and cfa351c.

📒 Files selected for processing (179)
  • map-generator/assets/maps/achiran/info.json
  • map-generator/assets/maps/aegean/info.json
  • map-generator/assets/maps/africa/info.json
  • map-generator/assets/maps/alps/info.json
  • map-generator/assets/maps/amazonriver/info.json
  • map-generator/assets/maps/archipelagosea/info.json
  • map-generator/assets/maps/arctic/info.json
  • map-generator/assets/maps/asia/info.json
  • map-generator/assets/maps/australia/info.json
  • map-generator/assets/maps/baikal/info.json
  • map-generator/assets/maps/bajacalifornia/info.json
  • map-generator/assets/maps/balkans/info.json
  • map-generator/assets/maps/balkhash/info.json
  • map-generator/assets/maps/baltics/info.json
  • map-generator/assets/maps/beringsea/info.json
  • map-generator/assets/maps/beringstrait/info.json
  • map-generator/assets/maps/betweentwoseas/info.json
  • map-generator/assets/maps/blacksea/info.json
  • map-generator/assets/maps/bosphorusstraits/info.json
  • map-generator/assets/maps/britannia/info.json
  • map-generator/assets/maps/britanniaclassic/info.json
  • map-generator/assets/maps/caribbean/info.json
  • map-generator/assets/maps/caspiansea/info.json
  • map-generator/assets/maps/caucasus/info.json
  • map-generator/assets/maps/china/info.json
  • map-generator/assets/maps/clearwaterlakes/info.json
  • map-generator/assets/maps/conakry/info.json
  • map-generator/assets/maps/crimea/info.json
  • map-generator/assets/maps/danishstraits/info.json
  • map-generator/assets/maps/eastasia/info.json
  • map-generator/assets/maps/europe/info.json
  • map-generator/assets/maps/europeclassic/info.json
  • map-generator/assets/maps/falklandislands/info.json
  • map-generator/assets/maps/faroeislands/info.json
  • map-generator/assets/maps/fingerlakes/info.json
  • map-generator/assets/maps/france/info.json
  • map-generator/assets/maps/gatewaytotheatlantic/info.json
  • map-generator/assets/maps/germany/info.json
  • map-generator/assets/maps/greatlakes/info.json
  • map-generator/assets/maps/gulfofguinea/info.json
  • map-generator/assets/maps/gulfofstlawrence/info.json
  • map-generator/assets/maps/halkidiki/info.json
  • map-generator/assets/maps/hawaii/info.json
  • map-generator/assets/maps/hecatestrait/info.json
  • map-generator/assets/maps/hongkong/info.json
  • map-generator/assets/maps/iceland/info.json
  • map-generator/assets/maps/indiansubcontinent/info.json
  • map-generator/assets/maps/irishsea/info.json
  • map-generator/assets/maps/italia/info.json
  • map-generator/assets/maps/japan/info.json
  • map-generator/assets/maps/juandefucastrait/info.json
  • map-generator/assets/maps/korea/info.json
  • map-generator/assets/maps/lasvegasstrip/info.json
  • map-generator/assets/maps/lemnos/info.json
  • map-generator/assets/maps/levant/info.json
  • map-generator/assets/maps/lisbon/info.json
  • map-generator/assets/maps/losangeles/info.json
  • map-generator/assets/maps/manicouagan/info.json
  • map-generator/assets/maps/marenostrum/info.json
  • map-generator/assets/maps/mena/info.json
  • map-generator/assets/maps/middleeast/info.json
  • map-generator/assets/maps/mississippiriver/info.json
  • map-generator/assets/maps/montreal/info.json
  • map-generator/assets/maps/newyorkcity/info.json
  • map-generator/assets/maps/niledelta/info.json
  • map-generator/assets/maps/northamerica/info.json
  • map-generator/assets/maps/northwestpassage/info.json
  • map-generator/assets/maps/oceania/info.json
  • map-generator/assets/maps/russia/info.json
  • map-generator/assets/maps/sanfrancisco/info.json
  • map-generator/assets/maps/scandinavia/info.json
  • map-generator/assets/maps/sol/info.json
  • map-generator/assets/maps/southamerica/info.json
  • map-generator/assets/maps/southeastasia/info.json
  • map-generator/assets/maps/straitofgibraltar/info.json
  • map-generator/assets/maps/straitofhormuz/info.json
  • map-generator/assets/maps/straitofmalacca/info.json
  • map-generator/assets/maps/svalmel/info.json
  • map-generator/assets/maps/taiwanstrait/info.json
  • map-generator/assets/maps/tierradelfuego/info.json
  • map-generator/assets/maps/twolakes/info.json
  • map-generator/assets/maps/unitedstates/info.json
  • map-generator/assets/maps/venice/info.json
  • map-generator/assets/maps/vietnam/info.json
  • map-generator/assets/maps/yellowsea/info.json
  • map-generator/assets/maps/yenisei/info.json
  • resources/maps/achiran/manifest.json
  • resources/maps/aegean/manifest.json
  • resources/maps/africa/manifest.json
  • resources/maps/alps/manifest.json
  • resources/maps/amazonriver/manifest.json
  • resources/maps/archipelagosea/manifest.json
  • resources/maps/arctic/manifest.json
  • resources/maps/asia/manifest.json
  • resources/maps/australia/manifest.json
  • resources/maps/baikal/manifest.json
  • resources/maps/bajacalifornia/manifest.json
  • resources/maps/balkans/manifest.json
  • resources/maps/balkhash/manifest.json
  • resources/maps/baltics/manifest.json
  • resources/maps/beringsea/manifest.json
  • resources/maps/beringstrait/manifest.json
  • resources/maps/betweentwoseas/manifest.json
  • resources/maps/blacksea/manifest.json
  • resources/maps/bosphorusstraits/manifest.json
  • resources/maps/britannia/manifest.json
  • resources/maps/britanniaclassic/manifest.json
  • resources/maps/caribbean/manifest.json
  • resources/maps/caspiansea/manifest.json
  • resources/maps/caucasus/manifest.json
  • resources/maps/china/manifest.json
  • resources/maps/clearwaterlakes/manifest.json
  • resources/maps/conakry/manifest.json
  • resources/maps/crimea/manifest.json
  • resources/maps/danishstraits/manifest.json
  • resources/maps/eastasia/manifest.json
  • resources/maps/europe/manifest.json
  • resources/maps/europeclassic/manifest.json
  • resources/maps/falklandislands/manifest.json
  • resources/maps/faroeislands/manifest.json
  • resources/maps/fingerlakes/manifest.json
  • resources/maps/france/manifest.json
  • resources/maps/gatewaytotheatlantic/manifest.json
  • resources/maps/germany/manifest.json
  • resources/maps/greatlakes/manifest.json
  • resources/maps/gulfofguinea/manifest.json
  • resources/maps/gulfofstlawrence/manifest.json
  • resources/maps/halkidiki/manifest.json
  • resources/maps/hawaii/manifest.json
  • resources/maps/hecatestrait/manifest.json
  • resources/maps/hongkong/manifest.json
  • resources/maps/iceland/manifest.json
  • resources/maps/indiansubcontinent/manifest.json
  • resources/maps/irishsea/manifest.json
  • resources/maps/italia/manifest.json
  • resources/maps/japan/manifest.json
  • resources/maps/juandefucastrait/manifest.json
  • resources/maps/korea/manifest.json
  • resources/maps/lasvegasstrip/manifest.json
  • resources/maps/lemnos/manifest.json
  • resources/maps/levant/manifest.json
  • resources/maps/lisbon/manifest.json
  • resources/maps/losangeles/manifest.json
  • resources/maps/manicouagan/manifest.json
  • resources/maps/marenostrum/manifest.json
  • resources/maps/mena/manifest.json
  • resources/maps/middleeast/manifest.json
  • resources/maps/mississippiriver/manifest.json
  • resources/maps/montreal/manifest.json
  • resources/maps/newyorkcity/manifest.json
  • resources/maps/niledelta/manifest.json
  • resources/maps/northamerica/manifest.json
  • resources/maps/northwestpassage/manifest.json
  • resources/maps/oceania/manifest.json
  • resources/maps/russia/manifest.json
  • resources/maps/sanfrancisco/manifest.json
  • resources/maps/scandinavia/manifest.json
  • resources/maps/sol/manifest.json
  • resources/maps/southamerica/manifest.json
  • resources/maps/southeastasia/manifest.json
  • resources/maps/straitofgibraltar/manifest.json
  • resources/maps/straitofhormuz/manifest.json
  • resources/maps/straitofmalacca/manifest.json
  • resources/maps/svalmel/manifest.json
  • resources/maps/taiwanstrait/manifest.json
  • resources/maps/tierradelfuego/manifest.json
  • resources/maps/twolakes/manifest.json
  • resources/maps/unitedstates/manifest.json
  • resources/maps/venice/manifest.json
  • resources/maps/vietnam/manifest.json
  • resources/maps/yellowsea/manifest.json
  • resources/maps/yenisei/manifest.json
  • src/core/game/Maps.gen.ts
  • tests/testdata/maps/big_plains/manifest.json
  • tests/testdata/maps/giantworldmap/manifest.json
  • tests/testdata/maps/half_land_half_ocean/manifest.json
  • tests/testdata/maps/ocean_and_land/manifest.json
  • tests/testdata/maps/plains/manifest.json
  • tests/testdata/maps/world/manifest.json

Comment thread map-generator/assets/maps/losangeles/info.json
@github-project-automation github-project-automation Bot moved this from Triage to Development in OpenFront Release Management Jul 31, 2026
coderabbitai[bot]
coderabbitai Bot previously approved these changes Jul 31, 2026
@FloPinguin FloPinguin added this to the v33 milestone Jul 31, 2026

@FloPinguin FloPinguin left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks

@github-project-automation github-project-automation Bot moved this from Development to Final Review in OpenFront Release Management Jul 31, 2026
@FloPinguin
FloPinguin added this pull request to the merge queue Jul 31, 2026
Merged via the queue into openfrontio:main with commit 36956b1 Jul 31, 2026
10 of 11 checks passed
@github-project-automation github-project-automation Bot moved this from Final Review to Complete in OpenFront Release Management Jul 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Complete

Development

Successfully merging this pull request may close these issues.

[Feature] Adds Tribe Themes to all real world maps + Custom Tribes w/coords on LA

2 participants