This project is a complete Borderlands campaign, not a generic system. Every file type exists to serve one loop: get a job, shoot your way there, kill the boss, turn it in, DING. If your addition feeds that loop, it fits. If it pulls away from it, it breaks tone even when the schema validates.
What this project is trying to do
Vespera runs on three pillars. Hold them and the project stays coherent at 700 files or 7,000.
Loud competence. Vault Hunters are overpowered psychos and Vespera is worse. New content should make players feel dangerous first, then threaten them with something louder. Never add helplessness without a gun nearby.
Loot as story. Guns, shields, and ECHO cash are the plot. A mission reward is not a bonus on top of the story, it is the story. If you add a mission, you add the gun that tells its ending.
Comedy with teeth. Corps are clowns with kill-orders, Jackals scream, D0T roasts everyone. The jokes carry real stakes: betrayals, debts, grudges, a dreaming god under the floor. Write the joke, then write the scar it leaves.
How the pieces fit together
Think of the project in layers.
The spine is Missions: 6 main missions from Rustlight Docks to the Maw, plus side and faction jobs. Everything else hangs off missions as givers, locations, factions, and rewards.
The cast is Characters, Vault Hunter Classes, and Skill Trees. Four playable hunters are fixed. NPCs exist to give jobs, run shops, and betray people on schedule.
The world is Locations, Factions, and Manufacturers. Locations are where jobs happen. Factions are who pays and who lies. Manufacturers are gun personality with a logo.
The toys are Weapons, Shields, and Equipment. Weapons and shields are the economy. Equipment is everything else a hunter can carry, from quest keys to souvenir junk.
The table layer is Game Starts and GM Instructions. One game start opens the campaign. GM instructions are the rules the live GM actually runs on.
Conventions that keep 700 files coherent
Slugs are the glue. Reference fields store target slugs, not display names. When you create a file, give it a clean dashed slug and link by that slug. Never invent a referenceId by hand.
Descriptions are player-facing. Write them like printed rulebook copy: concrete, no meta talk about the app or the schema. Notes fields are designer-to-GM: twists, hooks, drop sources, cross-file ties.
Images use the standard image field. New files trigger generation automatically. Only set an explicit generation prompt when you want a specific look; otherwise leave the image alone and let the project style carry it.
Computed fields are read-only. Character carrying capacity, inventory weight, and weapon card labels calculate themselves. If a number looks wrong, fix the source field or the expression on the file type, never the computed value.
Start here, then read the chapter for whatever you are adding. Each one states the intent behind its file types, the fields that actually matter, and the mistakes that break play.