roguelike-cli 1.3.6 → 1.4.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 CHANGED
@@ -99,6 +99,7 @@ Rules change how the AI speaks. Set during `init` or with `config -R="<rules>"`.
99
99
  | `western` | Bounties, sheriffs, frontier |
100
100
  | `warhammer` | For the Emperor! Purge heretics |
101
101
  | `ninja` | Shinobi, shadows, honor, blades |
102
+ | `crusader` | Build castles, conquer Holy Land! |
102
103
  | `darksouls` | YOU DIED. Praise the Sun! |
103
104
 
104
105
  ### Custom Rules
@@ -89,6 +89,10 @@ exports.RULES_PRESETS = {
89
89
  name: 'Ninja/Samurai',
90
90
  rules: 'Use Japanese ninja/samurai language. Tasks are "missions". Completing is "vanquishing enemies". Milestones are "contracts". Use "shinobi", "sensei", "shadow", "honor", "blade". Move like the wind, strike like lightning.',
91
91
  },
92
+ crusader: {
93
+ name: 'Stronghold Crusader',
94
+ rules: 'Use medieval crusader language. Tasks are "campaigns". Completing is "victory for the realm". Milestones are "sieges". Use "my Lord", "castle", "fortress", "crusade", "knights", "archers". Build your castle and conquer the Holy Land!',
95
+ },
92
96
  darksouls: {
93
97
  name: 'Dark Souls',
94
98
  rules: 'Use Dark Souls language. Tasks are "challenges". Completing is "victory achieved". Failing is "YOU DIED". Milestones are "boss fights". Use "Ashen One", "bonfire", "souls", "ember", "hollow". Praise the Sun!',
@@ -2,7 +2,7 @@
2
2
  // Base dictionaries for different rule presets
3
3
  // Keys are used everywhere, values are localized based on rules
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.DICTIONARIES = exports.DARKSOULS_DICTIONARY = exports.NINJA_DICTIONARY = exports.WARHAMMER_DICTIONARY = exports.WESTERN_DICTIONARY = exports.PIRATE_DICTIONARY = exports.CYBERPUNK_DICTIONARY = exports.STARWARS_DICTIONARY = exports.SPACE_DICTIONARY = exports.FANTASY_DICTIONARY = exports.DEFAULT_DICTIONARY = void 0;
5
+ exports.DICTIONARIES = exports.DARKSOULS_DICTIONARY = exports.CRUSADER_DICTIONARY = exports.NINJA_DICTIONARY = exports.WARHAMMER_DICTIONARY = exports.WESTERN_DICTIONARY = exports.PIRATE_DICTIONARY = exports.CYBERPUNK_DICTIONARY = exports.STARWARS_DICTIONARY = exports.SPACE_DICTIONARY = exports.FANTASY_DICTIONARY = exports.DEFAULT_DICTIONARY = void 0;
6
6
  exports.getDictionary = getDictionary;
7
7
  // Default dictionary (no theme)
8
8
  exports.DEFAULT_DICTIONARY = {
@@ -553,6 +553,67 @@ exports.NINJA_DICTIONARY = {
553
553
  inventory: 'Inventory',
554
554
  },
555
555
  };
556
+ // Stronghold Crusader dictionary
557
+ exports.CRUSADER_DICTIONARY = {
558
+ messages: {
559
+ questCompleted: 'THE CASTLE STANDS!',
560
+ levelUp: 'YOUR LORDSHIP GROWS!',
561
+ newAchievement: 'HONOR TO YOUR HOUSE',
562
+ lootDropped: 'SPOILS OF WAR',
563
+ bossDefeated: 'FORTRESS CONQUERED',
564
+ streakBonus: 'CRUSADE MOMENTUM',
565
+ taskBlocked: 'The siege continues',
566
+ taskUnblocked: 'The walls have fallen',
567
+ deadlineSet: 'The crusade begins',
568
+ deadlineOverdue: 'THE CASTLE HAS FALLEN',
569
+ welcomeBack: 'Welcome back, my Lord',
570
+ },
571
+ achievements: {
572
+ firstTask: { name: 'Squire', desc: 'Begin your crusade' },
573
+ tasks10: { name: 'Knight', desc: 'Complete 10 campaigns' },
574
+ tasks50: { name: 'Baron', desc: 'Complete 50 campaigns' },
575
+ tasks100: { name: 'Earl', desc: 'Complete 100 campaigns' },
576
+ tasks500: { name: 'Duke', desc: 'Complete 500 campaigns' },
577
+ tasks1000: { name: 'King of Jerusalem', desc: 'Complete 1000 campaigns' },
578
+ boss1: { name: 'Castle Breaker', desc: 'Conquer your first fortress' },
579
+ boss5: { name: 'Siege Master', desc: 'Conquer 5 fortresses' },
580
+ boss10: { name: 'Crusader Lord', desc: 'Conquer 10 fortresses' },
581
+ boss25: { name: 'Lionheart', desc: 'Conquer 25 fortresses' },
582
+ streak3: { name: 'March Onward', desc: '3 day crusade streak' },
583
+ streak7: { name: 'Relentless Siege', desc: '7 day crusade streak' },
584
+ streak14: { name: 'Holy Warrior', desc: '14 day crusade streak' },
585
+ streak30: { name: 'Eternal Crusader', desc: '30 day crusade streak' },
586
+ depth3: { name: 'Tunnel Digger', desc: 'Descend to level 3' },
587
+ depth5: { name: 'Underminer', desc: 'Descend to level 5' },
588
+ depth10: { name: 'Sappers Master', desc: 'Descend to level 10' },
589
+ speedrun: { name: 'Swift Assault', desc: 'Same-day conquest' },
590
+ nightOwl: { name: 'Night Raid', desc: 'Task after midnight' },
591
+ earlyBird: { name: 'Dawn Siege', desc: 'Task before dawn' },
592
+ },
593
+ loot: {
594
+ common: ['Bread Ration', 'Crossbow Bolt', 'Leather Armor', 'Wooden Shield', 'Torch'],
595
+ uncommon: ['Crossbow', 'Mace', 'Chainmail', 'Siege Ladder', 'Oil Pot'],
596
+ rare: ['Longbow', 'Knight Armor', 'War Horse', 'Battering Ram', 'Greek Fire'],
597
+ epic: ['Trebuchet', 'Templar Armor', 'Lionheart Sword', 'Siege Tower', 'Royal Banner'],
598
+ legendary: ['Crown of Jerusalem', 'Sword of Saladin', 'Holy Grail', 'Ark of the Covenant', 'Richard\'s Legacy'],
599
+ },
600
+ rarities: {
601
+ common: 'Common',
602
+ uncommon: 'Forged',
603
+ rare: 'Blessed',
604
+ epic: 'Sacred',
605
+ legendary: 'Holy Relic',
606
+ },
607
+ stats: {
608
+ level: 'Noble Rank',
609
+ xp: 'Gold',
610
+ tasksCompleted: 'Campaigns Won',
611
+ bossesDefeated: 'Fortresses Conquered',
612
+ currentStreak: 'Crusade Streak',
613
+ longestStreak: 'Longest Campaign',
614
+ inventory: 'Armory',
615
+ },
616
+ };
556
617
  // Dark Souls dictionary
557
618
  exports.DARKSOULS_DICTIONARY = {
558
619
  messages: {
@@ -625,6 +686,7 @@ exports.DICTIONARIES = {
625
686
  western: exports.WESTERN_DICTIONARY,
626
687
  warhammer: exports.WARHAMMER_DICTIONARY,
627
688
  ninja: exports.NINJA_DICTIONARY,
689
+ crusader: exports.CRUSADER_DICTIONARY,
628
690
  darksouls: exports.DARKSOULS_DICTIONARY,
629
691
  };
630
692
  // Get dictionary based on rules preset
@@ -1028,7 +1028,7 @@ Gamification:
1028
1028
  Rules (AI style presets):
1029
1029
  Set via init or config -R="<rules>"
1030
1030
  Presets: fantasy, space, starwars, cyberpunk, pirate,
1031
- warhammer, ninja, darksouls
1031
+ warhammer, ninja, crusader, darksouls
1032
1032
 
1033
1033
  Config:
1034
1034
  init Setup wizard
@@ -22,7 +22,7 @@ const ASCII_ART = [
22
22
  ' Tasks: done, undo, dl <date>, boss, block',
23
23
  ' Stats: stats, achievements, inventory, map',
24
24
  '',
25
- ' Rules: fantasy, starwars, cyberpunk, darksouls...',
25
+ ' Rules: fantasy, starwars, cyberpunk, crusader...',
26
26
  ' Config: init, config -R="<rules>"',
27
27
  '',
28
28
  ' TAB autocomplete, | pbcopy to copy',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "roguelike-cli",
3
- "version": "1.3.6",
3
+ "version": "1.4.0",
4
4
  "description": "AI-powered interactive terminal for creating schemas and todo lists",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -62,6 +62,10 @@ export const RULES_PRESETS: Record<string, { name: string; rules: string }> = {
62
62
  name: 'Ninja/Samurai',
63
63
  rules: 'Use Japanese ninja/samurai language. Tasks are "missions". Completing is "vanquishing enemies". Milestones are "contracts". Use "shinobi", "sensei", "shadow", "honor", "blade". Move like the wind, strike like lightning.',
64
64
  },
65
+ crusader: {
66
+ name: 'Stronghold Crusader',
67
+ rules: 'Use medieval crusader language. Tasks are "campaigns". Completing is "victory for the realm". Milestones are "sieges". Use "my Lord", "castle", "fortress", "crusade", "knights", "archers". Build your castle and conquer the Holy Land!',
68
+ },
65
69
  darksouls: {
66
70
  name: 'Dark Souls',
67
71
  rules: 'Use Dark Souls language. Tasks are "challenges". Completing is "victory achieved". Failing is "YOU DIED". Milestones are "boss fights". Use "Ashen One", "bonfire", "souls", "ember", "hollow". Praise the Sun!',
@@ -625,6 +625,68 @@ export const NINJA_DICTIONARY: Dictionary = {
625
625
  },
626
626
  };
627
627
 
628
+ // Stronghold Crusader dictionary
629
+ export const CRUSADER_DICTIONARY: Dictionary = {
630
+ messages: {
631
+ questCompleted: 'THE CASTLE STANDS!',
632
+ levelUp: 'YOUR LORDSHIP GROWS!',
633
+ newAchievement: 'HONOR TO YOUR HOUSE',
634
+ lootDropped: 'SPOILS OF WAR',
635
+ bossDefeated: 'FORTRESS CONQUERED',
636
+ streakBonus: 'CRUSADE MOMENTUM',
637
+ taskBlocked: 'The siege continues',
638
+ taskUnblocked: 'The walls have fallen',
639
+ deadlineSet: 'The crusade begins',
640
+ deadlineOverdue: 'THE CASTLE HAS FALLEN',
641
+ welcomeBack: 'Welcome back, my Lord',
642
+ },
643
+ achievements: {
644
+ firstTask: { name: 'Squire', desc: 'Begin your crusade' },
645
+ tasks10: { name: 'Knight', desc: 'Complete 10 campaigns' },
646
+ tasks50: { name: 'Baron', desc: 'Complete 50 campaigns' },
647
+ tasks100: { name: 'Earl', desc: 'Complete 100 campaigns' },
648
+ tasks500: { name: 'Duke', desc: 'Complete 500 campaigns' },
649
+ tasks1000: { name: 'King of Jerusalem', desc: 'Complete 1000 campaigns' },
650
+ boss1: { name: 'Castle Breaker', desc: 'Conquer your first fortress' },
651
+ boss5: { name: 'Siege Master', desc: 'Conquer 5 fortresses' },
652
+ boss10: { name: 'Crusader Lord', desc: 'Conquer 10 fortresses' },
653
+ boss25: { name: 'Lionheart', desc: 'Conquer 25 fortresses' },
654
+ streak3: { name: 'March Onward', desc: '3 day crusade streak' },
655
+ streak7: { name: 'Relentless Siege', desc: '7 day crusade streak' },
656
+ streak14: { name: 'Holy Warrior', desc: '14 day crusade streak' },
657
+ streak30: { name: 'Eternal Crusader', desc: '30 day crusade streak' },
658
+ depth3: { name: 'Tunnel Digger', desc: 'Descend to level 3' },
659
+ depth5: { name: 'Underminer', desc: 'Descend to level 5' },
660
+ depth10: { name: 'Sappers Master', desc: 'Descend to level 10' },
661
+ speedrun: { name: 'Swift Assault', desc: 'Same-day conquest' },
662
+ nightOwl: { name: 'Night Raid', desc: 'Task after midnight' },
663
+ earlyBird: { name: 'Dawn Siege', desc: 'Task before dawn' },
664
+ },
665
+ loot: {
666
+ common: ['Bread Ration', 'Crossbow Bolt', 'Leather Armor', 'Wooden Shield', 'Torch'],
667
+ uncommon: ['Crossbow', 'Mace', 'Chainmail', 'Siege Ladder', 'Oil Pot'],
668
+ rare: ['Longbow', 'Knight Armor', 'War Horse', 'Battering Ram', 'Greek Fire'],
669
+ epic: ['Trebuchet', 'Templar Armor', 'Lionheart Sword', 'Siege Tower', 'Royal Banner'],
670
+ legendary: ['Crown of Jerusalem', 'Sword of Saladin', 'Holy Grail', 'Ark of the Covenant', 'Richard\'s Legacy'],
671
+ },
672
+ rarities: {
673
+ common: 'Common',
674
+ uncommon: 'Forged',
675
+ rare: 'Blessed',
676
+ epic: 'Sacred',
677
+ legendary: 'Holy Relic',
678
+ },
679
+ stats: {
680
+ level: 'Noble Rank',
681
+ xp: 'Gold',
682
+ tasksCompleted: 'Campaigns Won',
683
+ bossesDefeated: 'Fortresses Conquered',
684
+ currentStreak: 'Crusade Streak',
685
+ longestStreak: 'Longest Campaign',
686
+ inventory: 'Armory',
687
+ },
688
+ };
689
+
628
690
  // Dark Souls dictionary
629
691
  export const DARKSOULS_DICTIONARY: Dictionary = {
630
692
  messages: {
@@ -698,6 +760,7 @@ export const DICTIONARIES: Record<string, Dictionary> = {
698
760
  western: WESTERN_DICTIONARY,
699
761
  warhammer: WARHAMMER_DICTIONARY,
700
762
  ninja: NINJA_DICTIONARY,
763
+ crusader: CRUSADER_DICTIONARY,
701
764
  darksouls: DARKSOULS_DICTIONARY,
702
765
  };
703
766
 
@@ -1217,7 +1217,7 @@ Gamification:
1217
1217
  Rules (AI style presets):
1218
1218
  Set via init or config -R="<rules>"
1219
1219
  Presets: fantasy, space, starwars, cyberpunk, pirate,
1220
- warhammer, ninja, darksouls
1220
+ warhammer, ninja, crusader, darksouls
1221
1221
 
1222
1222
  Config:
1223
1223
  init Setup wizard
@@ -20,7 +20,7 @@ const ASCII_ART = [
20
20
  ' Tasks: done, undo, dl <date>, boss, block',
21
21
  ' Stats: stats, achievements, inventory, map',
22
22
  '',
23
- ' Rules: fantasy, starwars, cyberpunk, darksouls...',
23
+ ' Rules: fantasy, starwars, cyberpunk, crusader...',
24
24
  ' Config: init, config -R="<rules>"',
25
25
  '',
26
26
  ' TAB autocomplete, | pbcopy to copy',