idlerpg.sh 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +171 -0
- package/dist/affix/AffixRegistry.d.ts +68 -0
- package/dist/affix/AffixRegistry.d.ts.map +1 -0
- package/dist/affix/AffixRegistry.js +245 -0
- package/dist/affix/AffixRegistry.js.map +1 -0
- package/dist/affix/PluginLoader.d.ts +66 -0
- package/dist/affix/PluginLoader.d.ts.map +1 -0
- package/dist/affix/PluginLoader.js +321 -0
- package/dist/affix/PluginLoader.js.map +1 -0
- package/dist/affix/builtin.d.ts +6 -0
- package/dist/affix/builtin.d.ts.map +1 -0
- package/dist/affix/builtin.js +311 -0
- package/dist/affix/builtin.js.map +1 -0
- package/dist/affix/index.d.ts +8 -0
- package/dist/affix/index.d.ts.map +1 -0
- package/dist/affix/index.js +11 -0
- package/dist/affix/index.js.map +1 -0
- package/dist/affix/types.d.ts +152 -0
- package/dist/affix/types.d.ts.map +1 -0
- package/dist/affix/types.js +8 -0
- package/dist/affix/types.js.map +1 -0
- package/dist/ai/PlayKitClient.d.ts +208 -0
- package/dist/ai/PlayKitClient.d.ts.map +1 -0
- package/dist/ai/PlayKitClient.js +721 -0
- package/dist/ai/PlayKitClient.js.map +1 -0
- package/dist/ai/index.d.ts +5 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +8 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/app/App.d.ts +85 -0
- package/dist/app/App.d.ts.map +1 -0
- package/dist/app/App.js +296 -0
- package/dist/app/App.js.map +1 -0
- package/dist/app/EventBus.d.ts +222 -0
- package/dist/app/EventBus.d.ts.map +1 -0
- package/dist/app/EventBus.js +88 -0
- package/dist/app/EventBus.js.map +1 -0
- package/dist/app/Keybind.d.ts +83 -0
- package/dist/app/Keybind.d.ts.map +1 -0
- package/dist/app/Keybind.js +184 -0
- package/dist/app/Keybind.js.map +1 -0
- package/dist/app/Router.d.ts +123 -0
- package/dist/app/Router.d.ts.map +1 -0
- package/dist/app/Router.js +142 -0
- package/dist/app/Router.js.map +1 -0
- package/dist/app/ScreenManager.d.ts +97 -0
- package/dist/app/ScreenManager.d.ts.map +1 -0
- package/dist/app/ScreenManager.js +216 -0
- package/dist/app/ScreenManager.js.map +1 -0
- package/dist/app/index.d.ts +14 -0
- package/dist/app/index.d.ts.map +1 -0
- package/dist/app/index.js +19 -0
- package/dist/app/index.js.map +1 -0
- package/dist/app/screens/BaseScreen.d.ts +101 -0
- package/dist/app/screens/BaseScreen.d.ts.map +1 -0
- package/dist/app/screens/BaseScreen.js +132 -0
- package/dist/app/screens/BaseScreen.js.map +1 -0
- package/dist/app/screens/CharacterCreationScreen.d.ts +42 -0
- package/dist/app/screens/CharacterCreationScreen.d.ts.map +1 -0
- package/dist/app/screens/CharacterCreationScreen.js +467 -0
- package/dist/app/screens/CharacterCreationScreen.js.map +1 -0
- package/dist/app/screens/CombatScreen.d.ts +30 -0
- package/dist/app/screens/CombatScreen.d.ts.map +1 -0
- package/dist/app/screens/CombatScreen.js +309 -0
- package/dist/app/screens/CombatScreen.js.map +1 -0
- package/dist/app/screens/DialogScreen.d.ts +29 -0
- package/dist/app/screens/DialogScreen.d.ts.map +1 -0
- package/dist/app/screens/DialogScreen.js +295 -0
- package/dist/app/screens/DialogScreen.js.map +1 -0
- package/dist/app/screens/ExploreScreen.d.ts +50 -0
- package/dist/app/screens/ExploreScreen.d.ts.map +1 -0
- package/dist/app/screens/ExploreScreen.js +308 -0
- package/dist/app/screens/ExploreScreen.js.map +1 -0
- package/dist/app/screens/HelpScreen.d.ts +12 -0
- package/dist/app/screens/HelpScreen.d.ts.map +1 -0
- package/dist/app/screens/HelpScreen.js +155 -0
- package/dist/app/screens/HelpScreen.js.map +1 -0
- package/dist/app/screens/InventoryScreen.d.ts +27 -0
- package/dist/app/screens/InventoryScreen.d.ts.map +1 -0
- package/dist/app/screens/InventoryScreen.js +326 -0
- package/dist/app/screens/InventoryScreen.js.map +1 -0
- package/dist/app/screens/PrologueScreen.d.ts +24 -0
- package/dist/app/screens/PrologueScreen.d.ts.map +1 -0
- package/dist/app/screens/PrologueScreen.js +176 -0
- package/dist/app/screens/PrologueScreen.js.map +1 -0
- package/dist/app/screens/TitleScreen.d.ts +42 -0
- package/dist/app/screens/TitleScreen.d.ts.map +1 -0
- package/dist/app/screens/TitleScreen.js +380 -0
- package/dist/app/screens/TitleScreen.js.map +1 -0
- package/dist/app/screens/TravelScreen.d.ts +22 -0
- package/dist/app/screens/TravelScreen.d.ts.map +1 -0
- package/dist/app/screens/TravelScreen.js +122 -0
- package/dist/app/screens/TravelScreen.js.map +1 -0
- package/dist/app/screens/index.d.ts +14 -0
- package/dist/app/screens/index.d.ts.map +1 -0
- package/dist/app/screens/index.js +17 -0
- package/dist/app/screens/index.js.map +1 -0
- package/dist/commands/CommandRegistry.d.ts +91 -0
- package/dist/commands/CommandRegistry.d.ts.map +1 -0
- package/dist/commands/CommandRegistry.js +159 -0
- package/dist/commands/CommandRegistry.js.map +1 -0
- package/dist/commands/index.d.ts +7 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +10 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/core/Actor.d.ts +103 -0
- package/dist/core/Actor.d.ts.map +1 -0
- package/dist/core/Actor.js +409 -0
- package/dist/core/Actor.js.map +1 -0
- package/dist/core/Combat.d.ts +37 -0
- package/dist/core/Combat.d.ts.map +1 -0
- package/dist/core/Combat.js +294 -0
- package/dist/core/Combat.js.map +1 -0
- package/dist/core/DungeonRunner.d.ts +169 -0
- package/dist/core/DungeonRunner.d.ts.map +1 -0
- package/dist/core/DungeonRunner.js +627 -0
- package/dist/core/DungeonRunner.js.map +1 -0
- package/dist/core/Game.d.ts +133 -0
- package/dist/core/Game.d.ts.map +1 -0
- package/dist/core/Game.js +644 -0
- package/dist/core/Game.js.map +1 -0
- package/dist/core/IdleCombat.d.ts +61 -0
- package/dist/core/IdleCombat.d.ts.map +1 -0
- package/dist/core/IdleCombat.js +461 -0
- package/dist/core/IdleCombat.js.map +1 -0
- package/dist/core/IdleGameManager.d.ts +198 -0
- package/dist/core/IdleGameManager.d.ts.map +1 -0
- package/dist/core/IdleGameManager.js +688 -0
- package/dist/core/IdleGameManager.js.map +1 -0
- package/dist/core/IdleSaveManager.d.ts +109 -0
- package/dist/core/IdleSaveManager.d.ts.map +1 -0
- package/dist/core/IdleSaveManager.js +296 -0
- package/dist/core/IdleSaveManager.js.map +1 -0
- package/dist/core/NewGameFlowManager.d.ts +64 -0
- package/dist/core/NewGameFlowManager.d.ts.map +1 -0
- package/dist/core/NewGameFlowManager.js +153 -0
- package/dist/core/NewGameFlowManager.js.map +1 -0
- package/dist/core/Player.d.ts +65 -0
- package/dist/core/Player.d.ts.map +1 -0
- package/dist/core/Player.js +261 -0
- package/dist/core/Player.js.map +1 -0
- package/dist/core/RoomHandlers.d.ts +75 -0
- package/dist/core/RoomHandlers.d.ts.map +1 -0
- package/dist/core/RoomHandlers.js +383 -0
- package/dist/core/RoomHandlers.js.map +1 -0
- package/dist/core/SaveManager.d.ts +84 -0
- package/dist/core/SaveManager.d.ts.map +1 -0
- package/dist/core/SaveManager.js +281 -0
- package/dist/core/SaveManager.js.map +1 -0
- package/dist/core/SaveMigration.d.ts +69 -0
- package/dist/core/SaveMigration.d.ts.map +1 -0
- package/dist/core/SaveMigration.js +408 -0
- package/dist/core/SaveMigration.js.map +1 -0
- package/dist/core/StateAdapter.d.ts +79 -0
- package/dist/core/StateAdapter.d.ts.map +1 -0
- package/dist/core/StateAdapter.js +397 -0
- package/dist/core/StateAdapter.js.map +1 -0
- package/dist/core/Team.d.ts +145 -0
- package/dist/core/Team.d.ts.map +1 -0
- package/dist/core/Team.js +371 -0
- package/dist/core/Team.js.map +1 -0
- package/dist/core/TeamCombat.d.ts +88 -0
- package/dist/core/TeamCombat.d.ts.map +1 -0
- package/dist/core/TeamCombat.js +405 -0
- package/dist/core/TeamCombat.js.map +1 -0
- package/dist/core/TeamDungeonRunner.d.ts +186 -0
- package/dist/core/TeamDungeonRunner.d.ts.map +1 -0
- package/dist/core/TeamDungeonRunner.js +758 -0
- package/dist/core/TeamDungeonRunner.js.map +1 -0
- package/dist/core/TimeManager.d.ts +114 -0
- package/dist/core/TimeManager.d.ts.map +1 -0
- package/dist/core/TimeManager.js +318 -0
- package/dist/core/TimeManager.js.map +1 -0
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +12 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/timeConstants.d.ts +135 -0
- package/dist/core/timeConstants.d.ts.map +1 -0
- package/dist/core/timeConstants.js +157 -0
- package/dist/core/timeConstants.js.map +1 -0
- package/dist/core/types.d.ts +780 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +16 -0
- package/dist/core/types.js.map +1 -0
- package/dist/data/continents/index.d.ts +163 -0
- package/dist/data/continents/index.d.ts.map +1 -0
- package/dist/data/continents/index.js +31 -0
- package/dist/data/continents/index.js.map +1 -0
- package/dist/data/continents/verdantia.d.ts +294 -0
- package/dist/data/continents/verdantia.d.ts.map +1 -0
- package/dist/data/continents/verdantia.js +327 -0
- package/dist/data/continents/verdantia.js.map +1 -0
- package/dist/handlers/DialogHandler.d.ts +95 -0
- package/dist/handlers/DialogHandler.d.ts.map +1 -0
- package/dist/handlers/DialogHandler.js +450 -0
- package/dist/handlers/DialogHandler.js.map +1 -0
- package/dist/handlers/SaveLoadHandler.d.ts +60 -0
- package/dist/handlers/SaveLoadHandler.d.ts.map +1 -0
- package/dist/handlers/SaveLoadHandler.js +187 -0
- package/dist/handlers/SaveLoadHandler.js.map +1 -0
- package/dist/handlers/TitleScreenHandler.d.ts +43 -0
- package/dist/handlers/TitleScreenHandler.d.ts.map +1 -0
- package/dist/handlers/TitleScreenHandler.js +508 -0
- package/dist/handlers/TitleScreenHandler.js.map +1 -0
- package/dist/handlers/WorkshopHandler.d.ts +75 -0
- package/dist/handlers/WorkshopHandler.d.ts.map +1 -0
- package/dist/handlers/WorkshopHandler.js +401 -0
- package/dist/handlers/WorkshopHandler.js.map +1 -0
- package/dist/handlers/index.d.ts +12 -0
- package/dist/handlers/index.d.ts.map +1 -0
- package/dist/handlers/index.js +14 -0
- package/dist/handlers/index.js.map +1 -0
- package/dist/handlers/types.d.ts +34 -0
- package/dist/handlers/types.d.ts.map +1 -0
- package/dist/handlers/types.js +8 -0
- package/dist/handlers/types.js.map +1 -0
- package/dist/i18n/en.d.ts +3 -0
- package/dist/i18n/en.d.ts.map +1 -0
- package/dist/i18n/en.js +130 -0
- package/dist/i18n/en.js.map +1 -0
- package/dist/i18n/index.d.ts +40 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +105 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/types.d.ts +133 -0
- package/dist/i18n/types.d.ts.map +1 -0
- package/dist/i18n/types.js +8 -0
- package/dist/i18n/types.js.map +1 -0
- package/dist/i18n/zh.d.ts +3 -0
- package/dist/i18n/zh.d.ts.map +1 -0
- package/dist/i18n/zh.js +130 -0
- package/dist/i18n/zh.js.map +1 -0
- package/dist/instrument.d.ts +8 -0
- package/dist/instrument.d.ts.map +1 -0
- package/dist/instrument.js +33 -0
- package/dist/instrument.js.map +1 -0
- package/dist/main-new.d.ts +12 -0
- package/dist/main-new.d.ts.map +1 -0
- package/dist/main-new.js +32 -0
- package/dist/main-new.js.map +1 -0
- package/dist/main.d.ts +7 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +2816 -0
- package/dist/main.js.map +1 -0
- package/dist/map/ContinentManager.d.ts +88 -0
- package/dist/map/ContinentManager.d.ts.map +1 -0
- package/dist/map/ContinentManager.js +241 -0
- package/dist/map/ContinentManager.js.map +1 -0
- package/dist/map/DungeonGenerator.d.ts +32 -0
- package/dist/map/DungeonGenerator.d.ts.map +1 -0
- package/dist/map/DungeonGenerator.js +615 -0
- package/dist/map/DungeonGenerator.js.map +1 -0
- package/dist/map/MapGenerator.d.ts +27 -0
- package/dist/map/MapGenerator.d.ts.map +1 -0
- package/dist/map/MapGenerator.js +485 -0
- package/dist/map/MapGenerator.js.map +1 -0
- package/dist/map/index.d.ts +5 -0
- package/dist/map/index.d.ts.map +1 -0
- package/dist/map/index.js +8 -0
- package/dist/map/index.js.map +1 -0
- package/dist/npc/NPCGenerator.d.ts +68 -0
- package/dist/npc/NPCGenerator.d.ts.map +1 -0
- package/dist/npc/NPCGenerator.js +468 -0
- package/dist/npc/NPCGenerator.js.map +1 -0
- package/dist/npc/NPCManager.d.ts +86 -0
- package/dist/npc/NPCManager.d.ts.map +1 -0
- package/dist/npc/NPCManager.js +217 -0
- package/dist/npc/NPCManager.js.map +1 -0
- package/dist/npc/fixedNPCs.d.ts +7 -0
- package/dist/npc/fixedNPCs.d.ts.map +1 -0
- package/dist/npc/fixedNPCs.js +196 -0
- package/dist/npc/fixedNPCs.js.map +1 -0
- package/dist/npc/index.d.ts +9 -0
- package/dist/npc/index.d.ts.map +1 -0
- package/dist/npc/index.js +12 -0
- package/dist/npc/index.js.map +1 -0
- package/dist/npc/traits.d.ts +33 -0
- package/dist/npc/traits.d.ts.map +1 -0
- package/dist/npc/traits.js +795 -0
- package/dist/npc/traits.js.map +1 -0
- package/dist/npc/types.d.ts +193 -0
- package/dist/npc/types.d.ts.map +1 -0
- package/dist/npc/types.js +9 -0
- package/dist/npc/types.js.map +1 -0
- package/dist/quest/QuestManager.d.ts +79 -0
- package/dist/quest/QuestManager.d.ts.map +1 -0
- package/dist/quest/QuestManager.js +273 -0
- package/dist/quest/QuestManager.js.map +1 -0
- package/dist/quest/index.d.ts +6 -0
- package/dist/quest/index.d.ts.map +1 -0
- package/dist/quest/index.js +9 -0
- package/dist/quest/index.js.map +1 -0
- package/dist/quest/types.d.ts +81 -0
- package/dist/quest/types.d.ts.map +1 -0
- package/dist/quest/types.js +8 -0
- package/dist/quest/types.js.map +1 -0
- package/dist/strategy/StrategyExecutor.d.ts +159 -0
- package/dist/strategy/StrategyExecutor.d.ts.map +1 -0
- package/dist/strategy/StrategyExecutor.js +479 -0
- package/dist/strategy/StrategyExecutor.js.map +1 -0
- package/dist/strategy/StrategyParser.d.ts +48 -0
- package/dist/strategy/StrategyParser.d.ts.map +1 -0
- package/dist/strategy/StrategyParser.js +321 -0
- package/dist/strategy/StrategyParser.js.map +1 -0
- package/dist/strategy/defaultStrategy.d.ts +40 -0
- package/dist/strategy/defaultStrategy.d.ts.map +1 -0
- package/dist/strategy/defaultStrategy.js +254 -0
- package/dist/strategy/defaultStrategy.js.map +1 -0
- package/dist/strategy/index.d.ts +8 -0
- package/dist/strategy/index.d.ts.map +1 -0
- package/dist/strategy/index.js +14 -0
- package/dist/strategy/index.js.map +1 -0
- package/dist/tui/ExploreMenu.d.ts +106 -0
- package/dist/tui/ExploreMenu.d.ts.map +1 -0
- package/dist/tui/ExploreMenu.js +282 -0
- package/dist/tui/ExploreMenu.js.map +1 -0
- package/dist/tui/GameUI.d.ts +313 -0
- package/dist/tui/GameUI.d.ts.map +1 -0
- package/dist/tui/GameUI.js +2116 -0
- package/dist/tui/GameUI.js.map +1 -0
- package/dist/tui/GameUIAdapter.d.ts +207 -0
- package/dist/tui/GameUIAdapter.d.ts.map +1 -0
- package/dist/tui/GameUIAdapter.js +1342 -0
- package/dist/tui/GameUIAdapter.js.map +1 -0
- package/dist/tui/Input.d.ts +139 -0
- package/dist/tui/Input.d.ts.map +1 -0
- package/dist/tui/Input.js +278 -0
- package/dist/tui/Input.js.map +1 -0
- package/dist/tui/Menu.d.ts +110 -0
- package/dist/tui/Menu.d.ts.map +1 -0
- package/dist/tui/Menu.js +365 -0
- package/dist/tui/Menu.js.map +1 -0
- package/dist/tui/Screen.d.ts +228 -0
- package/dist/tui/Screen.d.ts.map +1 -0
- package/dist/tui/Screen.js +502 -0
- package/dist/tui/Screen.js.map +1 -0
- package/dist/tui/components/Box.d.ts +36 -0
- package/dist/tui/components/Box.d.ts.map +1 -0
- package/dist/tui/components/Box.js +43 -0
- package/dist/tui/components/Box.js.map +1 -0
- package/dist/tui/components/List.d.ts +69 -0
- package/dist/tui/components/List.d.ts.map +1 -0
- package/dist/tui/components/List.js +136 -0
- package/dist/tui/components/List.js.map +1 -0
- package/dist/tui/components/ProgressBar.d.ts +42 -0
- package/dist/tui/components/ProgressBar.d.ts.map +1 -0
- package/dist/tui/components/ProgressBar.js +75 -0
- package/dist/tui/components/ProgressBar.js.map +1 -0
- package/dist/tui/components/index.d.ts +8 -0
- package/dist/tui/components/index.d.ts.map +1 -0
- package/dist/tui/components/index.js +11 -0
- package/dist/tui/components/index.js.map +1 -0
- package/dist/tui/core/BaseSection.d.ts +98 -0
- package/dist/tui/core/BaseSection.d.ts.map +1 -0
- package/dist/tui/core/BaseSection.js +174 -0
- package/dist/tui/core/BaseSection.js.map +1 -0
- package/dist/tui/core/Component.d.ts +61 -0
- package/dist/tui/core/Component.d.ts.map +1 -0
- package/dist/tui/core/Component.js +32 -0
- package/dist/tui/core/Component.js.map +1 -0
- package/dist/tui/core/Section.d.ts +101 -0
- package/dist/tui/core/Section.d.ts.map +1 -0
- package/dist/tui/core/Section.js +24 -0
- package/dist/tui/core/Section.js.map +1 -0
- package/dist/tui/core/SectionManager.d.ts +108 -0
- package/dist/tui/core/SectionManager.d.ts.map +1 -0
- package/dist/tui/core/SectionManager.js +258 -0
- package/dist/tui/core/SectionManager.js.map +1 -0
- package/dist/tui/core/index.d.ts +9 -0
- package/dist/tui/core/index.d.ts.map +1 -0
- package/dist/tui/core/index.js +12 -0
- package/dist/tui/core/index.js.map +1 -0
- package/dist/tui/index.d.ts +15 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/index.js +23 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/screens/BaseScreen.d.ts +62 -0
- package/dist/tui/screens/BaseScreen.d.ts.map +1 -0
- package/dist/tui/screens/BaseScreen.js +55 -0
- package/dist/tui/screens/BaseScreen.js.map +1 -0
- package/dist/tui/screens/CombatScreen.d.ts +43 -0
- package/dist/tui/screens/CombatScreen.d.ts.map +1 -0
- package/dist/tui/screens/CombatScreen.js +125 -0
- package/dist/tui/screens/CombatScreen.js.map +1 -0
- package/dist/tui/screens/DialogScreen.d.ts +53 -0
- package/dist/tui/screens/DialogScreen.d.ts.map +1 -0
- package/dist/tui/screens/DialogScreen.js +90 -0
- package/dist/tui/screens/DialogScreen.js.map +1 -0
- package/dist/tui/screens/DungeonScreen.d.ts +80 -0
- package/dist/tui/screens/DungeonScreen.d.ts.map +1 -0
- package/dist/tui/screens/DungeonScreen.js +317 -0
- package/dist/tui/screens/DungeonScreen.js.map +1 -0
- package/dist/tui/screens/ExploreScreen.d.ts +69 -0
- package/dist/tui/screens/ExploreScreen.d.ts.map +1 -0
- package/dist/tui/screens/ExploreScreen.js +224 -0
- package/dist/tui/screens/ExploreScreen.js.map +1 -0
- package/dist/tui/screens/SectionScreen.d.ts +84 -0
- package/dist/tui/screens/SectionScreen.d.ts.map +1 -0
- package/dist/tui/screens/SectionScreen.js +156 -0
- package/dist/tui/screens/SectionScreen.js.map +1 -0
- package/dist/tui/screens/TitleScreen.d.ts +40 -0
- package/dist/tui/screens/TitleScreen.d.ts.map +1 -0
- package/dist/tui/screens/TitleScreen.js +253 -0
- package/dist/tui/screens/TitleScreen.js.map +1 -0
- package/dist/tui/screens/TownScreen.d.ts +98 -0
- package/dist/tui/screens/TownScreen.d.ts.map +1 -0
- package/dist/tui/screens/TownScreen.js +370 -0
- package/dist/tui/screens/TownScreen.js.map +1 -0
- package/dist/tui/screens/TravelScreen.d.ts +67 -0
- package/dist/tui/screens/TravelScreen.d.ts.map +1 -0
- package/dist/tui/screens/TravelScreen.js +286 -0
- package/dist/tui/screens/TravelScreen.js.map +1 -0
- package/dist/tui/screens/index.d.ts +8 -0
- package/dist/tui/screens/index.d.ts.map +1 -0
- package/dist/tui/screens/index.js +17 -0
- package/dist/tui/screens/index.js.map +1 -0
- package/dist/tui/sections/ActionsSection.d.ts +71 -0
- package/dist/tui/sections/ActionsSection.d.ts.map +1 -0
- package/dist/tui/sections/ActionsSection.js +184 -0
- package/dist/tui/sections/ActionsSection.js.map +1 -0
- package/dist/tui/sections/DungeonSection.d.ts +65 -0
- package/dist/tui/sections/DungeonSection.d.ts.map +1 -0
- package/dist/tui/sections/DungeonSection.js +144 -0
- package/dist/tui/sections/DungeonSection.js.map +1 -0
- package/dist/tui/sections/EventsSection.d.ts +50 -0
- package/dist/tui/sections/EventsSection.d.ts.map +1 -0
- package/dist/tui/sections/EventsSection.js +134 -0
- package/dist/tui/sections/EventsSection.js.map +1 -0
- package/dist/tui/sections/MapSection.d.ts +66 -0
- package/dist/tui/sections/MapSection.d.ts.map +1 -0
- package/dist/tui/sections/MapSection.js +669 -0
- package/dist/tui/sections/MapSection.js.map +1 -0
- package/dist/tui/sections/StatusSection.d.ts +47 -0
- package/dist/tui/sections/StatusSection.d.ts.map +1 -0
- package/dist/tui/sections/StatusSection.js +133 -0
- package/dist/tui/sections/StatusSection.js.map +1 -0
- package/dist/tui/sections/TeamSection.d.ts +71 -0
- package/dist/tui/sections/TeamSection.d.ts.map +1 -0
- package/dist/tui/sections/TeamSection.js +224 -0
- package/dist/tui/sections/TeamSection.js.map +1 -0
- package/dist/tui/sections/TravelingSection.d.ts +51 -0
- package/dist/tui/sections/TravelingSection.d.ts.map +1 -0
- package/dist/tui/sections/TravelingSection.js +106 -0
- package/dist/tui/sections/TravelingSection.js.map +1 -0
- package/dist/tui/sections/index.d.ts +9 -0
- package/dist/tui/sections/index.d.ts.map +1 -0
- package/dist/tui/sections/index.js +12 -0
- package/dist/tui/sections/index.js.map +1 -0
- package/dist/ui/Terminal.d.ts +68 -0
- package/dist/ui/Terminal.d.ts.map +1 -0
- package/dist/ui/Terminal.js +297 -0
- package/dist/ui/Terminal.js.map +1 -0
- package/dist/ui/index.d.ts +5 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +8 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/utils/configMigration.d.ts +14 -0
- package/dist/utils/configMigration.d.ts.map +1 -0
- package/dist/utils/configMigration.js +92 -0
- package/dist/utils/configMigration.js.map +1 -0
- package/dist/utils/errorHandler.d.ts +86 -0
- package/dist/utils/errorHandler.d.ts.map +1 -0
- package/dist/utils/errorHandler.js +224 -0
- package/dist/utils/errorHandler.js.map +1 -0
- package/dist/utils/logger.d.ts +14 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +43 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/weapon/WeaponFactory.d.ts +32 -0
- package/dist/weapon/WeaponFactory.d.ts.map +1 -0
- package/dist/weapon/WeaponFactory.js +216 -0
- package/dist/weapon/WeaponFactory.js.map +1 -0
- package/dist/weapon/index.d.ts +5 -0
- package/dist/weapon/index.d.ts.map +1 -0
- package/dist/weapon/index.js +8 -0
- package/dist/weapon/index.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,795 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NPC Traits, Races, and Roles Database
|
|
3
|
+
* Western Fantasy / D&D Style
|
|
4
|
+
*/
|
|
5
|
+
// ============================================================================
|
|
6
|
+
// RACES
|
|
7
|
+
// ============================================================================
|
|
8
|
+
|
|
9
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="9046dde2-5ea0-5338-b1b3-071c38c58a4f")}catch(e){}}();
|
|
10
|
+
export const RACES = [
|
|
11
|
+
{
|
|
12
|
+
id: 'human',
|
|
13
|
+
name: 'Human',
|
|
14
|
+
weight: 30,
|
|
15
|
+
lifespan: '70-90 years',
|
|
16
|
+
namePrefixes: {
|
|
17
|
+
male: ['Aldric', 'Bran', 'Cedric', 'Dorian', 'Edmund', 'Gareth', 'Hendrick', 'Ivan', 'Jasper', 'Kael'],
|
|
18
|
+
female: ['Aria', 'Brynn', 'Celeste', 'Diana', 'Elena', 'Fiona', 'Gwen', 'Helena', 'Iris', 'Juliet'],
|
|
19
|
+
neutral: ['Morgan', 'Rowan', 'Quinn', 'Sage', 'Avery'],
|
|
20
|
+
},
|
|
21
|
+
nameSuffixes: {
|
|
22
|
+
male: ['ric', 'mund', 'ard', 'bert', 'fred'],
|
|
23
|
+
female: ['ina', 'ella', 'lyn', 'beth', 'anne'],
|
|
24
|
+
neutral: [''],
|
|
25
|
+
},
|
|
26
|
+
traits: ['adaptable', 'ambitious'],
|
|
27
|
+
appearance: ['weathered face', 'calloused hands', 'tired eyes', 'sturdy build', 'sun-darkened skin'],
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
id: 'elf',
|
|
31
|
+
name: 'Elf',
|
|
32
|
+
weight: 15,
|
|
33
|
+
lifespan: '700-900 years',
|
|
34
|
+
namePrefixes: {
|
|
35
|
+
male: ['Aelindor', 'Caelum', 'Elendil', 'Faelar', 'Galathil', 'Ilyndor', 'Leorin', 'Mirethil', 'Sylvan', 'Thaelon'],
|
|
36
|
+
female: ['Aelara', 'Caelia', 'Elowen', 'Faelynn', 'Galadria', 'Ilyana', 'Liriel', 'Miriel', 'Sylvara', 'Thaelia'],
|
|
37
|
+
neutral: ['Aerin', 'Cael', 'Elys', 'Fael', 'Gael'],
|
|
38
|
+
},
|
|
39
|
+
nameSuffixes: {
|
|
40
|
+
male: ['ion', 'iel', 'orn', 'il', 'ar'],
|
|
41
|
+
female: ['iel', 'wen', 'ara', 'ith', 'ia'],
|
|
42
|
+
neutral: ['yn', 'ys', 'el'],
|
|
43
|
+
},
|
|
44
|
+
traits: ['ancient_wisdom', 'detached', 'graceful'],
|
|
45
|
+
appearance: ['pointed ears', 'ageless features', 'slender build', 'luminous eyes', 'ethereal grace'],
|
|
46
|
+
floorAffinity: { min: 1, max: 10 },
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
id: 'dwarf',
|
|
50
|
+
name: 'Dwarf',
|
|
51
|
+
weight: 12,
|
|
52
|
+
lifespan: '300-400 years',
|
|
53
|
+
namePrefixes: {
|
|
54
|
+
male: ['Thorin', 'Balin', 'Dwalin', 'Gimli', 'Oin', 'Gloin', 'Fili', 'Kili', 'Dain', 'Nain'],
|
|
55
|
+
female: ['Dis', 'Hild', 'Sigrid', 'Thyra', 'Brynja', 'Gerta', 'Magna', 'Olga', 'Runa', 'Vala'],
|
|
56
|
+
neutral: ['Durin', 'Khazad', 'Azag'],
|
|
57
|
+
},
|
|
58
|
+
nameSuffixes: {
|
|
59
|
+
male: ['rim', 'rin', 'din', 'grim', 'bur'],
|
|
60
|
+
female: ['hild', 'run', 'dis', 'va', 'ga'],
|
|
61
|
+
neutral: ['ak', 'ul', 'az'],
|
|
62
|
+
},
|
|
63
|
+
traits: ['stubborn', 'loyal', 'craftsman'],
|
|
64
|
+
appearance: ['thick beard', 'stocky build', 'muscular arms', 'deep-set eyes', 'stone-dust in hair'],
|
|
65
|
+
floorAffinity: { min: 3, max: 15 },
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
id: 'halfling',
|
|
69
|
+
name: 'Halfling',
|
|
70
|
+
weight: 8,
|
|
71
|
+
lifespan: '150-200 years',
|
|
72
|
+
namePrefixes: {
|
|
73
|
+
male: ['Bilbo', 'Frodo', 'Sam', 'Merry', 'Pippin', 'Drogo', 'Folco', 'Largo', 'Polo', 'Saradoc'],
|
|
74
|
+
female: ['Belladonna', 'Daisy', 'Elanor', 'Marigold', 'Primula', 'Rosie', 'Bell', 'Esme', 'Ruby', 'Pearl'],
|
|
75
|
+
neutral: ['Robin', 'Finch', 'Wren'],
|
|
76
|
+
},
|
|
77
|
+
nameSuffixes: {
|
|
78
|
+
male: ['o', 'as', 'in', 'oc', 'go'],
|
|
79
|
+
female: ['a', 'ie', 'y', 'ose', 'la'],
|
|
80
|
+
neutral: [''],
|
|
81
|
+
},
|
|
82
|
+
traits: ['cheerful', 'curious', 'lucky'],
|
|
83
|
+
appearance: ['bare hairy feet', 'round face', 'curly hair', 'bright eyes', 'short stature'],
|
|
84
|
+
floorAffinity: { min: 1, max: 5 },
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
id: 'gnome',
|
|
88
|
+
name: 'Gnome',
|
|
89
|
+
weight: 6,
|
|
90
|
+
lifespan: '400-500 years',
|
|
91
|
+
namePrefixes: {
|
|
92
|
+
male: ['Fizwick', 'Gimble', 'Namfoodle', 'Roondar', 'Zook', 'Boddynock', 'Dimble', 'Fonkin', 'Gerbo', 'Jebeddo'],
|
|
93
|
+
female: ['Bimpnottin', 'Caramip', 'Donella', 'Ellywick', 'Lilli', 'Nissa', 'Oda', 'Shamil', 'Tana', 'Zanna'],
|
|
94
|
+
neutral: ['Pip', 'Fizz', 'Sprocket'],
|
|
95
|
+
},
|
|
96
|
+
nameSuffixes: {
|
|
97
|
+
male: ['wick', 'bin', 'nock', 'bar', 'dle'],
|
|
98
|
+
female: ['wen', 'tin', 'li', 'na', 'sa'],
|
|
99
|
+
neutral: ['ix', 'oz', 'et'],
|
|
100
|
+
},
|
|
101
|
+
traits: ['inventive', 'eccentric', 'tinkerer'],
|
|
102
|
+
appearance: ['large nose', 'wild hair', 'goggles', 'ink-stained fingers', 'tiny spectacles'],
|
|
103
|
+
floorAffinity: { min: 2, max: 8 },
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
id: 'half-elf',
|
|
107
|
+
name: 'Half-Elf',
|
|
108
|
+
weight: 10,
|
|
109
|
+
lifespan: '150-200 years',
|
|
110
|
+
namePrefixes: {
|
|
111
|
+
male: ['Aric', 'Beren', 'Daelan', 'Eryn', 'Finn', 'Galen', 'Haelor', 'Kieran', 'Liam', 'Nolan'],
|
|
112
|
+
female: ['Aeris', 'Briana', 'Celia', 'Elara', 'Fiora', 'Gwynn', 'Isla', 'Kira', 'Lyra', 'Mira'],
|
|
113
|
+
neutral: ['Ash', 'River', 'Sky', 'Storm'],
|
|
114
|
+
},
|
|
115
|
+
nameSuffixes: {
|
|
116
|
+
male: ['an', 'en', 'or', 'el', 'in'],
|
|
117
|
+
female: ['a', 'is', 'ra', 'ia', 'yn'],
|
|
118
|
+
neutral: [''],
|
|
119
|
+
},
|
|
120
|
+
traits: ['adaptable', 'conflicted', 'diplomatic'],
|
|
121
|
+
appearance: ['slightly pointed ears', 'youthful appearance', 'mixed features', 'expressive eyes'],
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
id: 'half-orc',
|
|
125
|
+
name: 'Half-Orc',
|
|
126
|
+
weight: 8,
|
|
127
|
+
lifespan: '60-80 years',
|
|
128
|
+
namePrefixes: {
|
|
129
|
+
male: ['Grom', 'Krusk', 'Morg', 'Thok', 'Urog', 'Varg', 'Zug', 'Drok', 'Feng', 'Harg'],
|
|
130
|
+
female: ['Baggi', 'Emen', 'Engong', 'Myev', 'Neega', 'Ovak', 'Shautha', 'Vola', 'Yevelda', 'Zugbu'],
|
|
131
|
+
neutral: ['Grak', 'Mog', 'Thag'],
|
|
132
|
+
},
|
|
133
|
+
nameSuffixes: {
|
|
134
|
+
male: ['ash', 'ug', 'ok', 'ar', 'um'],
|
|
135
|
+
female: ['a', 'gi', 'bu', 'ev', 'tha'],
|
|
136
|
+
neutral: [''],
|
|
137
|
+
},
|
|
138
|
+
traits: ['aggressive', 'honorable', 'survivor'],
|
|
139
|
+
appearance: ['tusks', 'greenish skin', 'muscular build', 'scarred', 'fierce eyes'],
|
|
140
|
+
floorAffinity: { min: 4, max: 15 },
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
id: 'tiefling',
|
|
144
|
+
name: 'Tiefling',
|
|
145
|
+
weight: 5,
|
|
146
|
+
lifespan: '100-150 years',
|
|
147
|
+
namePrefixes: {
|
|
148
|
+
male: ['Akmenos', 'Amnon', 'Barakas', 'Damakos', 'Ekemon', 'Iados', 'Kairon', 'Leucis', 'Morthos', 'Therai'],
|
|
149
|
+
female: ['Akta', 'Bryseis', 'Criella', 'Damaia', 'Ea', 'Kallista', 'Lerissa', 'Makaria', 'Nemeia', 'Rieta'],
|
|
150
|
+
neutral: ['Virtue', 'Sin', 'Fate', 'Chaos'],
|
|
151
|
+
},
|
|
152
|
+
nameSuffixes: {
|
|
153
|
+
male: ['os', 'on', 'us', 'ai', 'eon'],
|
|
154
|
+
female: ['a', 'is', 'ia', 'eia', 'sta'],
|
|
155
|
+
neutral: [''],
|
|
156
|
+
},
|
|
157
|
+
traits: ['mistrusted', 'cunning', 'resilient'],
|
|
158
|
+
appearance: ['horns', 'tail', 'unusual skin color', 'solid-colored eyes', 'sharp features'],
|
|
159
|
+
floorAffinity: { min: 5, max: 15 },
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
id: 'dragonborn',
|
|
163
|
+
name: 'Dragonborn',
|
|
164
|
+
weight: 4,
|
|
165
|
+
lifespan: '80-100 years',
|
|
166
|
+
namePrefixes: {
|
|
167
|
+
male: ['Arjhan', 'Balasar', 'Bharash', 'Donaar', 'Ghesh', 'Heskan', 'Kriv', 'Medrash', 'Nadarr', 'Shamash'],
|
|
168
|
+
female: ['Akra', 'Biri', 'Daar', 'Harann', 'Kava', 'Korinn', 'Mishann', 'Nala', 'Perra', 'Sora'],
|
|
169
|
+
neutral: ['Rhogar', 'Surina', 'Thava'],
|
|
170
|
+
},
|
|
171
|
+
nameSuffixes: {
|
|
172
|
+
male: ['ar', 'ash', 'an', 'iv', 'rr'],
|
|
173
|
+
female: ['a', 'ann', 'ra', 'va', 'inn'],
|
|
174
|
+
neutral: [''],
|
|
175
|
+
},
|
|
176
|
+
traits: ['proud', 'honorable', 'draconic'],
|
|
177
|
+
appearance: ['scales', 'draconic head', 'clawed hands', 'powerful build', 'no tail'],
|
|
178
|
+
floorAffinity: { min: 6, max: 15 },
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
id: 'goblin',
|
|
182
|
+
name: 'Goblin',
|
|
183
|
+
weight: 3,
|
|
184
|
+
lifespan: '40-60 years',
|
|
185
|
+
namePrefixes: {
|
|
186
|
+
male: ['Blix', 'Crink', 'Droop', 'Grik', 'Nix', 'Pox', 'Rix', 'Snig', 'Tix', 'Zix'],
|
|
187
|
+
female: ['Blinka', 'Crinkle', 'Dripa', 'Grika', 'Nixa', 'Poxa', 'Rixa', 'Sniga', 'Tixa', 'Zixa'],
|
|
188
|
+
neutral: ['Squeek', 'Rat', 'Mud'],
|
|
189
|
+
},
|
|
190
|
+
nameSuffixes: {
|
|
191
|
+
male: ['k', 'x', 'g', 'z', 'p'],
|
|
192
|
+
female: ['a', 'ka', 'le', 'la', 'xa'],
|
|
193
|
+
neutral: [''],
|
|
194
|
+
},
|
|
195
|
+
traits: ['cowardly', 'cunning', 'greedy'],
|
|
196
|
+
appearance: ['large ears', 'sharp teeth', 'beady eyes', 'green skin', 'scrawny'],
|
|
197
|
+
floorAffinity: { min: 1, max: 6 },
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
id: 'orc',
|
|
201
|
+
name: 'Orc',
|
|
202
|
+
weight: 3,
|
|
203
|
+
lifespan: '50-70 years',
|
|
204
|
+
namePrefixes: {
|
|
205
|
+
male: ['Azog', 'Bolg', 'Gorbag', 'Grishnakh', 'Lugdush', 'Mauhur', 'Shagrat', 'Ugluk', 'Gashnak', 'Muzgash'],
|
|
206
|
+
female: ['Aghra', 'Bashka', 'Grisha', 'Lagduf', 'Moksha', 'Nazgha', 'Orbak', 'Shaga', 'Ulka', 'Zurga'],
|
|
207
|
+
neutral: ['Snarl', 'Gore', 'Fang'],
|
|
208
|
+
},
|
|
209
|
+
nameSuffixes: {
|
|
210
|
+
male: ['og', 'uk', 'ag', 'ash', 'ub'],
|
|
211
|
+
female: ['a', 'sha', 'ka', 'ga', 'ha'],
|
|
212
|
+
neutral: [''],
|
|
213
|
+
},
|
|
214
|
+
traits: ['brutal', 'tribal', 'warrior'],
|
|
215
|
+
appearance: ['large tusks', 'green skin', 'massive build', 'battle scars', 'fierce war paint'],
|
|
216
|
+
floorAffinity: { min: 6, max: 15 },
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
id: 'undead',
|
|
220
|
+
name: 'Undead',
|
|
221
|
+
weight: 2,
|
|
222
|
+
lifespan: 'Eternal',
|
|
223
|
+
namePrefixes: {
|
|
224
|
+
male: ['Vecna', 'Strahd', 'Acererak', 'Kas', 'Azalin', 'Manfred', 'Radu', 'Sergei', 'Vlad', 'Yorick'],
|
|
225
|
+
female: ['Ezmerelda', 'Ireena', 'Lydia', 'Patrina', 'Sasha', 'Tatyana', 'Viktoria', 'Wanda', 'Yelena', 'Zora'],
|
|
226
|
+
neutral: ['Bones', 'Shade', 'Whisper', 'Echo'],
|
|
227
|
+
},
|
|
228
|
+
nameSuffixes: {
|
|
229
|
+
male: ['', 'us', 'or', 'on', 'ek'],
|
|
230
|
+
female: ['', 'a', 'ia', 'ina', 'ya'],
|
|
231
|
+
neutral: [''],
|
|
232
|
+
},
|
|
233
|
+
traits: ['undying', 'emotionless', 'ancient_memory'],
|
|
234
|
+
appearance: ['pale skin', 'hollow eyes', 'skeletal', 'ethereal glow', 'decaying'],
|
|
235
|
+
floorAffinity: { min: 8, max: 15 },
|
|
236
|
+
},
|
|
237
|
+
];
|
|
238
|
+
// ============================================================================
|
|
239
|
+
// ROLES
|
|
240
|
+
// ============================================================================
|
|
241
|
+
export const ROLES = [
|
|
242
|
+
{
|
|
243
|
+
id: 'merchant',
|
|
244
|
+
name: 'Merchant',
|
|
245
|
+
weight: 15,
|
|
246
|
+
description: 'A trader of goods and secrets',
|
|
247
|
+
typicalRaces: ['human', 'halfling', 'gnome', 'dwarf'],
|
|
248
|
+
associatedTraits: ['greedy', 'cunning', 'well_traveled'],
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
id: 'sage',
|
|
252
|
+
name: 'Sage',
|
|
253
|
+
weight: 8,
|
|
254
|
+
description: 'A keeper of ancient knowledge',
|
|
255
|
+
typicalRaces: ['elf', 'gnome', 'human', 'tiefling'],
|
|
256
|
+
associatedTraits: ['ancient_wisdom', 'bookish', 'mysterious'],
|
|
257
|
+
floorAffinity: { min: 3, max: 15 },
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
id: 'guard',
|
|
261
|
+
name: 'Guard',
|
|
262
|
+
weight: 12,
|
|
263
|
+
description: 'A protector of this place',
|
|
264
|
+
typicalRaces: ['human', 'dwarf', 'half-orc', 'dragonborn'],
|
|
265
|
+
associatedTraits: ['loyal', 'vigilant', 'gruff'],
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
id: 'traveler',
|
|
269
|
+
name: 'Traveler',
|
|
270
|
+
weight: 15,
|
|
271
|
+
description: 'A wanderer between worlds',
|
|
272
|
+
typicalRaces: ['human', 'half-elf', 'halfling', 'elf'],
|
|
273
|
+
associatedTraits: ['well_traveled', 'curious', 'storyteller'],
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
id: 'blacksmith',
|
|
277
|
+
name: 'Blacksmith',
|
|
278
|
+
weight: 8,
|
|
279
|
+
description: 'A master of metal and fire',
|
|
280
|
+
typicalRaces: ['dwarf', 'human', 'half-orc', 'dragonborn'],
|
|
281
|
+
associatedTraits: ['craftsman', 'patient', 'perfectionist'],
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
id: 'quest_giver',
|
|
285
|
+
name: 'Quest Giver',
|
|
286
|
+
weight: 10,
|
|
287
|
+
description: 'One with tasks for brave adventurers',
|
|
288
|
+
typicalRaces: ['human', 'elf', 'dwarf', 'gnome'],
|
|
289
|
+
associatedTraits: ['desperate', 'mysterious', 'wealthy'],
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
id: 'hermit',
|
|
293
|
+
name: 'Hermit',
|
|
294
|
+
weight: 5,
|
|
295
|
+
description: 'A recluse who has seen too much',
|
|
296
|
+
typicalRaces: ['human', 'elf', 'gnome', 'tiefling'],
|
|
297
|
+
associatedTraits: ['paranoid', 'prophetic', 'hermit'],
|
|
298
|
+
floorAffinity: { min: 5, max: 15 },
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
id: 'refugee',
|
|
302
|
+
name: 'Refugee',
|
|
303
|
+
weight: 10,
|
|
304
|
+
description: 'One fleeing from danger',
|
|
305
|
+
typicalRaces: ['human', 'halfling', 'gnome', 'goblin'],
|
|
306
|
+
associatedTraits: ['fearful', 'desperate', 'survivor'],
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
id: 'hunter',
|
|
310
|
+
name: 'Hunter',
|
|
311
|
+
weight: 8,
|
|
312
|
+
description: 'A tracker of beasts and monsters',
|
|
313
|
+
typicalRaces: ['human', 'elf', 'half-elf', 'half-orc'],
|
|
314
|
+
associatedTraits: ['patient', 'observant', 'ruthless'],
|
|
315
|
+
floorAffinity: { min: 3, max: 12 },
|
|
316
|
+
},
|
|
317
|
+
{
|
|
318
|
+
id: 'scholar',
|
|
319
|
+
name: 'Scholar',
|
|
320
|
+
weight: 6,
|
|
321
|
+
description: 'A seeker of forbidden knowledge',
|
|
322
|
+
typicalRaces: ['human', 'elf', 'gnome', 'tiefling'],
|
|
323
|
+
associatedTraits: ['bookish', 'curious', 'obsessive'],
|
|
324
|
+
floorAffinity: { min: 4, max: 15 },
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
id: 'healer',
|
|
328
|
+
name: 'Healer',
|
|
329
|
+
weight: 7,
|
|
330
|
+
description: 'One who mends wounds of body and soul',
|
|
331
|
+
typicalRaces: ['human', 'elf', 'halfling', 'half-elf'],
|
|
332
|
+
associatedTraits: ['compassionate', 'patient', 'wise'],
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
id: 'thief',
|
|
336
|
+
name: 'Thief',
|
|
337
|
+
weight: 8,
|
|
338
|
+
description: 'A shadow who takes what they need',
|
|
339
|
+
typicalRaces: ['human', 'halfling', 'half-elf', 'tiefling', 'goblin'],
|
|
340
|
+
associatedTraits: ['cunning', 'quick', 'greedy'],
|
|
341
|
+
floorAffinity: { min: 2, max: 10 },
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
id: 'knight',
|
|
345
|
+
name: 'Knight',
|
|
346
|
+
weight: 5,
|
|
347
|
+
description: 'A warrior bound by a code',
|
|
348
|
+
typicalRaces: ['human', 'dragonborn', 'half-elf'],
|
|
349
|
+
associatedTraits: ['honorable', 'brave', 'noble'],
|
|
350
|
+
floorAffinity: { min: 1, max: 8 },
|
|
351
|
+
},
|
|
352
|
+
{
|
|
353
|
+
id: 'cultist',
|
|
354
|
+
name: 'Cultist',
|
|
355
|
+
weight: 4,
|
|
356
|
+
description: 'A servant of darker powers',
|
|
357
|
+
typicalRaces: ['human', 'tiefling', 'half-orc', 'undead'],
|
|
358
|
+
associatedTraits: ['fanatical', 'secretive', 'dangerous'],
|
|
359
|
+
floorAffinity: { min: 6, max: 15 },
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
id: 'bard',
|
|
363
|
+
name: 'Bard',
|
|
364
|
+
weight: 6,
|
|
365
|
+
description: 'A collector of songs and stories',
|
|
366
|
+
typicalRaces: ['human', 'half-elf', 'halfling', 'tiefling'],
|
|
367
|
+
associatedTraits: ['charismatic', 'storyteller', 'flirtatious'],
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
id: 'priest',
|
|
371
|
+
name: 'Priest',
|
|
372
|
+
weight: 5,
|
|
373
|
+
description: 'A servant of the divine',
|
|
374
|
+
typicalRaces: ['human', 'elf', 'dwarf', 'dragonborn'],
|
|
375
|
+
associatedTraits: ['pious', 'judgmental', 'compassionate'],
|
|
376
|
+
},
|
|
377
|
+
{
|
|
378
|
+
id: 'mercenary',
|
|
379
|
+
name: 'Mercenary',
|
|
380
|
+
weight: 10,
|
|
381
|
+
description: 'A sword for hire',
|
|
382
|
+
typicalRaces: ['human', 'half-orc', 'dwarf', 'dragonborn'],
|
|
383
|
+
associatedTraits: ['pragmatic', 'ruthless', 'professional'],
|
|
384
|
+
floorAffinity: { min: 3, max: 15 },
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
id: 'noble',
|
|
388
|
+
name: 'Noble',
|
|
389
|
+
weight: 3,
|
|
390
|
+
description: 'Aristocracy fallen on hard times',
|
|
391
|
+
typicalRaces: ['human', 'elf', 'half-elf', 'tiefling'],
|
|
392
|
+
associatedTraits: ['arrogant', 'refined', 'desperate'],
|
|
393
|
+
floorAffinity: { min: 1, max: 6 },
|
|
394
|
+
},
|
|
395
|
+
];
|
|
396
|
+
// ============================================================================
|
|
397
|
+
// TRAITS (Weighted)
|
|
398
|
+
// ============================================================================
|
|
399
|
+
export const TRAITS = [
|
|
400
|
+
// PERSONALITY
|
|
401
|
+
{
|
|
402
|
+
id: 'kind',
|
|
403
|
+
name: 'Kind',
|
|
404
|
+
weight: 15,
|
|
405
|
+
category: 'personality',
|
|
406
|
+
description: 'Genuinely cares about others',
|
|
407
|
+
promptModifier: 'You are genuinely kind and try to help others when you can.',
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
id: 'gruff',
|
|
411
|
+
name: 'Gruff',
|
|
412
|
+
weight: 12,
|
|
413
|
+
category: 'personality',
|
|
414
|
+
description: 'Rough exterior, speaks bluntly',
|
|
415
|
+
promptModifier: 'You speak bluntly and don\'t waste words on pleasantries.',
|
|
416
|
+
incompatibleWith: ['charming', 'flirtatious'],
|
|
417
|
+
},
|
|
418
|
+
{
|
|
419
|
+
id: 'cunning',
|
|
420
|
+
name: 'Cunning',
|
|
421
|
+
weight: 10,
|
|
422
|
+
category: 'personality',
|
|
423
|
+
description: 'Always calculating the angles',
|
|
424
|
+
promptModifier: 'You always look for the advantage in any situation and speak carefully.',
|
|
425
|
+
},
|
|
426
|
+
{
|
|
427
|
+
id: 'paranoid',
|
|
428
|
+
name: 'Paranoid',
|
|
429
|
+
weight: 6,
|
|
430
|
+
category: 'personality',
|
|
431
|
+
description: 'Trusts no one completely',
|
|
432
|
+
promptModifier: 'You are suspicious of everyone and often hint at hidden dangers.',
|
|
433
|
+
incompatibleWith: ['trusting', 'naive'],
|
|
434
|
+
},
|
|
435
|
+
{
|
|
436
|
+
id: 'cheerful',
|
|
437
|
+
name: 'Cheerful',
|
|
438
|
+
weight: 10,
|
|
439
|
+
category: 'personality',
|
|
440
|
+
description: 'Maintains optimism despite circumstances',
|
|
441
|
+
promptModifier: 'You maintain a cheerful demeanor even in dark times.',
|
|
442
|
+
incompatibleWith: ['melancholic', 'bitter'],
|
|
443
|
+
},
|
|
444
|
+
{
|
|
445
|
+
id: 'melancholic',
|
|
446
|
+
name: 'Melancholic',
|
|
447
|
+
weight: 8,
|
|
448
|
+
category: 'personality',
|
|
449
|
+
description: 'Carries a deep sadness',
|
|
450
|
+
promptModifier: 'There is a deep sadness in you that colors your words.',
|
|
451
|
+
incompatibleWith: ['cheerful'],
|
|
452
|
+
},
|
|
453
|
+
{
|
|
454
|
+
id: 'arrogant',
|
|
455
|
+
name: 'Arrogant',
|
|
456
|
+
weight: 7,
|
|
457
|
+
category: 'personality',
|
|
458
|
+
description: 'Believes themselves superior',
|
|
459
|
+
promptModifier: 'You consider yourself superior to most and it shows in your speech.',
|
|
460
|
+
incompatibleWith: ['humble'],
|
|
461
|
+
},
|
|
462
|
+
{
|
|
463
|
+
id: 'humble',
|
|
464
|
+
name: 'Humble',
|
|
465
|
+
weight: 8,
|
|
466
|
+
category: 'personality',
|
|
467
|
+
description: 'Downplays their own abilities',
|
|
468
|
+
promptModifier: 'You are humble and tend to downplay your own knowledge or abilities.',
|
|
469
|
+
incompatibleWith: ['arrogant'],
|
|
470
|
+
},
|
|
471
|
+
{
|
|
472
|
+
id: 'mysterious',
|
|
473
|
+
name: 'Mysterious',
|
|
474
|
+
weight: 10,
|
|
475
|
+
category: 'personality',
|
|
476
|
+
description: 'Speaks in riddles and hints',
|
|
477
|
+
promptModifier: 'You speak cryptically and rarely give direct answers.',
|
|
478
|
+
},
|
|
479
|
+
{
|
|
480
|
+
id: 'direct',
|
|
481
|
+
name: 'Direct',
|
|
482
|
+
weight: 12,
|
|
483
|
+
category: 'personality',
|
|
484
|
+
description: 'Says exactly what they mean',
|
|
485
|
+
promptModifier: 'You are direct and say exactly what you mean without embellishment.',
|
|
486
|
+
incompatibleWith: ['mysterious'],
|
|
487
|
+
},
|
|
488
|
+
{
|
|
489
|
+
id: 'charismatic',
|
|
490
|
+
name: 'Charismatic',
|
|
491
|
+
weight: 8,
|
|
492
|
+
category: 'personality',
|
|
493
|
+
description: 'Naturally draws people in',
|
|
494
|
+
promptModifier: 'You have a magnetic personality and speak with natural charm.',
|
|
495
|
+
},
|
|
496
|
+
{
|
|
497
|
+
id: 'nervous',
|
|
498
|
+
name: 'Nervous',
|
|
499
|
+
weight: 10,
|
|
500
|
+
category: 'personality',
|
|
501
|
+
description: 'Easily startled and anxious',
|
|
502
|
+
promptModifier: 'You are nervous and jumpy, often interrupting yourself.',
|
|
503
|
+
incompatibleWith: ['brave', 'confident'],
|
|
504
|
+
},
|
|
505
|
+
{
|
|
506
|
+
id: 'brave',
|
|
507
|
+
name: 'Brave',
|
|
508
|
+
weight: 8,
|
|
509
|
+
category: 'personality',
|
|
510
|
+
description: 'Faces danger without flinching',
|
|
511
|
+
promptModifier: 'You speak of danger matter-of-factly, without fear.',
|
|
512
|
+
incompatibleWith: ['cowardly', 'nervous'],
|
|
513
|
+
},
|
|
514
|
+
{
|
|
515
|
+
id: 'cowardly',
|
|
516
|
+
name: 'Cowardly',
|
|
517
|
+
weight: 6,
|
|
518
|
+
category: 'personality',
|
|
519
|
+
description: 'Self-preservation above all',
|
|
520
|
+
promptModifier: 'You prioritize your own survival and advise others to do the same.',
|
|
521
|
+
incompatibleWith: ['brave', 'honorable'],
|
|
522
|
+
},
|
|
523
|
+
// BACKGROUND
|
|
524
|
+
{
|
|
525
|
+
id: 'well_traveled',
|
|
526
|
+
name: 'Well-Traveled',
|
|
527
|
+
weight: 12,
|
|
528
|
+
category: 'background',
|
|
529
|
+
description: 'Has seen many lands and dungeons',
|
|
530
|
+
promptModifier: 'You often reference places you\'ve been and things you\'ve seen.',
|
|
531
|
+
},
|
|
532
|
+
{
|
|
533
|
+
id: 'local',
|
|
534
|
+
name: 'Local',
|
|
535
|
+
weight: 15,
|
|
536
|
+
category: 'background',
|
|
537
|
+
description: 'Has lived in this dungeon for years',
|
|
538
|
+
promptModifier: 'You know this area intimately and speak of it possessively.',
|
|
539
|
+
},
|
|
540
|
+
{
|
|
541
|
+
id: 'former_adventurer',
|
|
542
|
+
name: 'Former Adventurer',
|
|
543
|
+
weight: 8,
|
|
544
|
+
category: 'background',
|
|
545
|
+
description: 'Once sought glory, now retired',
|
|
546
|
+
promptModifier: 'You speak of your adventuring days with a mix of nostalgia and regret.',
|
|
547
|
+
minImportance: 'minor',
|
|
548
|
+
},
|
|
549
|
+
{
|
|
550
|
+
id: 'refugee',
|
|
551
|
+
name: 'Refugee',
|
|
552
|
+
weight: 10,
|
|
553
|
+
category: 'background',
|
|
554
|
+
description: 'Fled from something terrible',
|
|
555
|
+
promptModifier: 'You hint at something terrible that drove you here.',
|
|
556
|
+
},
|
|
557
|
+
{
|
|
558
|
+
id: 'noble_blood',
|
|
559
|
+
name: 'Noble Blood',
|
|
560
|
+
weight: 4,
|
|
561
|
+
category: 'background',
|
|
562
|
+
description: 'Of aristocratic lineage',
|
|
563
|
+
promptModifier: 'Your noble upbringing shows in your refined speech patterns.',
|
|
564
|
+
minImportance: 'minor',
|
|
565
|
+
},
|
|
566
|
+
{
|
|
567
|
+
id: 'criminal_past',
|
|
568
|
+
name: 'Criminal Past',
|
|
569
|
+
weight: 8,
|
|
570
|
+
category: 'background',
|
|
571
|
+
description: 'Has a dark history',
|
|
572
|
+
promptModifier: 'You are evasive about your past and know things honest folk shouldn\'t.',
|
|
573
|
+
},
|
|
574
|
+
{
|
|
575
|
+
id: 'scholar',
|
|
576
|
+
name: 'Scholarly',
|
|
577
|
+
weight: 7,
|
|
578
|
+
category: 'background',
|
|
579
|
+
description: 'Formally educated',
|
|
580
|
+
promptModifier: 'You use educated vocabulary and reference historical events.',
|
|
581
|
+
},
|
|
582
|
+
// QUIRKS
|
|
583
|
+
{
|
|
584
|
+
id: 'stutters',
|
|
585
|
+
name: 'Stutters',
|
|
586
|
+
weight: 5,
|
|
587
|
+
category: 'quirk',
|
|
588
|
+
description: 'Has a speech impediment',
|
|
589
|
+
promptModifier: 'You occasionally stutter, especially when nervous or excited.',
|
|
590
|
+
},
|
|
591
|
+
{
|
|
592
|
+
id: 'speaks_formally',
|
|
593
|
+
name: 'Speaks Formally',
|
|
594
|
+
weight: 8,
|
|
595
|
+
category: 'quirk',
|
|
596
|
+
description: 'Uses formal, archaic language',
|
|
597
|
+
promptModifier: 'You use formal, somewhat archaic language patterns.',
|
|
598
|
+
},
|
|
599
|
+
{
|
|
600
|
+
id: 'uses_slang',
|
|
601
|
+
name: 'Uses Slang',
|
|
602
|
+
weight: 10,
|
|
603
|
+
category: 'quirk',
|
|
604
|
+
description: 'Peppers speech with colorful expressions',
|
|
605
|
+
promptModifier: 'You use casual slang and colorful expressions.',
|
|
606
|
+
incompatibleWith: ['speaks_formally'],
|
|
607
|
+
},
|
|
608
|
+
{
|
|
609
|
+
id: 'tells_stories',
|
|
610
|
+
name: 'Storyteller',
|
|
611
|
+
weight: 8,
|
|
612
|
+
category: 'quirk',
|
|
613
|
+
description: 'Can\'t help but tell tales',
|
|
614
|
+
promptModifier: 'You love to tell stories and often go off on tangents.',
|
|
615
|
+
},
|
|
616
|
+
{
|
|
617
|
+
id: 'superstitious',
|
|
618
|
+
name: 'Superstitious',
|
|
619
|
+
weight: 7,
|
|
620
|
+
category: 'quirk',
|
|
621
|
+
description: 'Believes in omens and signs',
|
|
622
|
+
promptModifier: 'You often mention superstitions and interpret events as omens.',
|
|
623
|
+
},
|
|
624
|
+
{
|
|
625
|
+
id: 'forgetful',
|
|
626
|
+
name: 'Forgetful',
|
|
627
|
+
weight: 5,
|
|
628
|
+
category: 'quirk',
|
|
629
|
+
description: 'Has trouble remembering things',
|
|
630
|
+
promptModifier: 'You sometimes forget what you were saying or mix up details.',
|
|
631
|
+
incompatibleWith: ['perfect_memory'],
|
|
632
|
+
},
|
|
633
|
+
{
|
|
634
|
+
id: 'perfect_memory',
|
|
635
|
+
name: 'Perfect Memory',
|
|
636
|
+
weight: 3,
|
|
637
|
+
category: 'quirk',
|
|
638
|
+
description: 'Remembers everything',
|
|
639
|
+
promptModifier: 'You remember every detail and reference past conversations precisely.',
|
|
640
|
+
minImportance: 'minor',
|
|
641
|
+
incompatibleWith: ['forgetful'],
|
|
642
|
+
},
|
|
643
|
+
// MOTIVATIONS
|
|
644
|
+
{
|
|
645
|
+
id: 'seeking_revenge',
|
|
646
|
+
name: 'Seeking Revenge',
|
|
647
|
+
weight: 6,
|
|
648
|
+
category: 'motivation',
|
|
649
|
+
description: 'Driven by a desire for vengeance',
|
|
650
|
+
promptModifier: 'You are driven by revenge and sometimes let your anger show.',
|
|
651
|
+
minImportance: 'minor',
|
|
652
|
+
},
|
|
653
|
+
{
|
|
654
|
+
id: 'seeking_knowledge',
|
|
655
|
+
name: 'Seeking Knowledge',
|
|
656
|
+
weight: 8,
|
|
657
|
+
category: 'motivation',
|
|
658
|
+
description: 'Wants to understand secrets',
|
|
659
|
+
promptModifier: 'You are driven by curiosity and seek knowledge above all.',
|
|
660
|
+
},
|
|
661
|
+
{
|
|
662
|
+
id: 'seeking_wealth',
|
|
663
|
+
name: 'Seeking Wealth',
|
|
664
|
+
weight: 12,
|
|
665
|
+
category: 'motivation',
|
|
666
|
+
description: 'Motivated by gold and treasure',
|
|
667
|
+
promptModifier: 'You are always looking for ways to profit.',
|
|
668
|
+
},
|
|
669
|
+
{
|
|
670
|
+
id: 'seeking_redemption',
|
|
671
|
+
name: 'Seeking Redemption',
|
|
672
|
+
weight: 5,
|
|
673
|
+
category: 'motivation',
|
|
674
|
+
description: 'Trying to atone for past sins',
|
|
675
|
+
promptModifier: 'You seek redemption for past wrongs and sometimes hint at your guilt.',
|
|
676
|
+
minImportance: 'minor',
|
|
677
|
+
},
|
|
678
|
+
{
|
|
679
|
+
id: 'protecting_someone',
|
|
680
|
+
name: 'Protecting Someone',
|
|
681
|
+
weight: 6,
|
|
682
|
+
category: 'motivation',
|
|
683
|
+
description: 'Has someone they must keep safe',
|
|
684
|
+
promptModifier: 'You are protective and often think of someone you must keep safe.',
|
|
685
|
+
minImportance: 'minor',
|
|
686
|
+
},
|
|
687
|
+
{
|
|
688
|
+
id: 'survival',
|
|
689
|
+
name: 'Survival',
|
|
690
|
+
weight: 15,
|
|
691
|
+
category: 'motivation',
|
|
692
|
+
description: 'Just trying to stay alive',
|
|
693
|
+
promptModifier: 'Your primary concern is survival, and it colors all your advice.',
|
|
694
|
+
},
|
|
695
|
+
// SECRETS (Higher importance required)
|
|
696
|
+
{
|
|
697
|
+
id: 'knows_boss_weakness',
|
|
698
|
+
name: 'Knows Boss Weakness',
|
|
699
|
+
weight: 2,
|
|
700
|
+
category: 'secret',
|
|
701
|
+
description: 'Knows how to defeat a powerful enemy',
|
|
702
|
+
promptModifier: 'You know a secret weakness of a powerful creature but rarely share it directly.',
|
|
703
|
+
minImportance: 'major',
|
|
704
|
+
},
|
|
705
|
+
{
|
|
706
|
+
id: 'hidden_treasure',
|
|
707
|
+
name: 'Hidden Treasure',
|
|
708
|
+
weight: 4,
|
|
709
|
+
category: 'secret',
|
|
710
|
+
description: 'Knows location of hidden treasure',
|
|
711
|
+
promptModifier: 'You know of hidden treasure and might share hints if you trust someone.',
|
|
712
|
+
minImportance: 'minor',
|
|
713
|
+
},
|
|
714
|
+
{
|
|
715
|
+
id: 'secret_passage',
|
|
716
|
+
name: 'Secret Passage',
|
|
717
|
+
weight: 5,
|
|
718
|
+
category: 'secret',
|
|
719
|
+
description: 'Knows of hidden paths',
|
|
720
|
+
promptModifier: 'You know of secret passages and might hint at them.',
|
|
721
|
+
},
|
|
722
|
+
{
|
|
723
|
+
id: 'cursed',
|
|
724
|
+
name: 'Cursed',
|
|
725
|
+
weight: 3,
|
|
726
|
+
category: 'secret',
|
|
727
|
+
description: 'Bears a terrible curse',
|
|
728
|
+
promptModifier: 'You bear a curse that occasionally causes you pain or strange behavior.',
|
|
729
|
+
minImportance: 'minor',
|
|
730
|
+
},
|
|
731
|
+
{
|
|
732
|
+
id: 'not_what_they_seem',
|
|
733
|
+
name: 'Not What They Seem',
|
|
734
|
+
weight: 2,
|
|
735
|
+
category: 'secret',
|
|
736
|
+
description: 'Hiding their true identity',
|
|
737
|
+
promptModifier: 'You are not what you appear to be and sometimes slip in your act.',
|
|
738
|
+
minImportance: 'major',
|
|
739
|
+
},
|
|
740
|
+
];
|
|
741
|
+
// ============================================================================
|
|
742
|
+
// HELPER FUNCTIONS
|
|
743
|
+
// ============================================================================
|
|
744
|
+
/**
|
|
745
|
+
* Get race by ID
|
|
746
|
+
*/
|
|
747
|
+
export function getRace(id) {
|
|
748
|
+
return RACES.find(r => r.id === id);
|
|
749
|
+
}
|
|
750
|
+
/**
|
|
751
|
+
* Get role by ID
|
|
752
|
+
*/
|
|
753
|
+
export function getRole(id) {
|
|
754
|
+
return ROLES.find(r => r.id === id);
|
|
755
|
+
}
|
|
756
|
+
/**
|
|
757
|
+
* Get trait by ID
|
|
758
|
+
*/
|
|
759
|
+
export function getTrait(id) {
|
|
760
|
+
return TRAITS.find(t => t.id === id);
|
|
761
|
+
}
|
|
762
|
+
/**
|
|
763
|
+
* Get all traits for a category
|
|
764
|
+
*/
|
|
765
|
+
export function getTraitsByCategory(category) {
|
|
766
|
+
return TRAITS.filter(t => t.category === category);
|
|
767
|
+
}
|
|
768
|
+
/**
|
|
769
|
+
* Get importance weight (for death probability calculation)
|
|
770
|
+
*/
|
|
771
|
+
export function getImportanceWeight(importance) {
|
|
772
|
+
const weights = {
|
|
773
|
+
legendary: 0.01, // 1% daily death chance
|
|
774
|
+
major: 0.05, // 5% daily death chance
|
|
775
|
+
minor: 0.15, // 15% daily death chance
|
|
776
|
+
background: 0.30, // 30% daily death chance
|
|
777
|
+
};
|
|
778
|
+
return weights[importance];
|
|
779
|
+
}
|
|
780
|
+
/**
|
|
781
|
+
* Get importance based on weights
|
|
782
|
+
*/
|
|
783
|
+
export function rollImportance(weights) {
|
|
784
|
+
const total = Object.values(weights).reduce((a, b) => a + b, 0);
|
|
785
|
+
let roll = Math.random() * total;
|
|
786
|
+
for (const [importance, weight] of Object.entries(weights)) {
|
|
787
|
+
roll -= weight;
|
|
788
|
+
if (roll <= 0) {
|
|
789
|
+
return importance;
|
|
790
|
+
}
|
|
791
|
+
}
|
|
792
|
+
return 'background';
|
|
793
|
+
}
|
|
794
|
+
//# sourceMappingURL=traits.js.map
|
|
795
|
+
//# debugId=9046dde2-5ea0-5338-b1b3-071c38c58a4f
|