roguelike-cli 1.3.5 → 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 +2 -0
- package/dist/config/config.js +8 -0
- package/dist/data/dictionaries.js +125 -1
- package/dist/interactive/commands.js +2 -1
- package/dist/interactive/startup.js +1 -1
- package/package.json +1 -1
- package/src/config/config.ts +8 -0
- package/src/data/dictionaries.ts +126 -0
- package/src/interactive/commands.ts +2 -1
- package/src/interactive/startup.ts +1 -1
package/README.md
CHANGED
|
@@ -99,6 +99,8 @@ 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! |
|
|
103
|
+
| `darksouls` | YOU DIED. Praise the Sun! |
|
|
102
104
|
|
|
103
105
|
### Custom Rules
|
|
104
106
|
|
package/dist/config/config.js
CHANGED
|
@@ -89,6 +89,14 @@ 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
|
+
},
|
|
96
|
+
darksouls: {
|
|
97
|
+
name: 'Dark Souls',
|
|
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!',
|
|
99
|
+
},
|
|
92
100
|
};
|
|
93
101
|
const CONFIG_FILE = path.join(os.homedir(), '.rlc', 'config.json');
|
|
94
102
|
const DEFAULT_STORAGE = path.join(os.homedir(), '.rlc', 'workspace');
|
|
@@ -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.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,128 @@ 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
|
+
};
|
|
617
|
+
// Dark Souls dictionary
|
|
618
|
+
exports.DARKSOULS_DICTIONARY = {
|
|
619
|
+
messages: {
|
|
620
|
+
questCompleted: 'VICTORY ACHIEVED',
|
|
621
|
+
levelUp: 'SOUL LEVEL INCREASED!',
|
|
622
|
+
newAchievement: 'ACHIEVEMENT UNLOCKED',
|
|
623
|
+
lootDropped: 'ITEM ACQUIRED',
|
|
624
|
+
bossDefeated: 'GREAT ENEMY FELLED',
|
|
625
|
+
streakBonus: 'HUMANITY RESTORED',
|
|
626
|
+
taskBlocked: 'Path blocked. Try different approach.',
|
|
627
|
+
taskUnblocked: 'A shortcut has opened',
|
|
628
|
+
deadlineSet: 'The bell tolls',
|
|
629
|
+
deadlineOverdue: 'YOU DIED',
|
|
630
|
+
welcomeBack: 'Welcome back, Ashen One',
|
|
631
|
+
},
|
|
632
|
+
achievements: {
|
|
633
|
+
firstTask: { name: 'First Flame', desc: 'Begin your journey' },
|
|
634
|
+
tasks10: { name: 'Chosen Undead', desc: 'Complete 10 tasks' },
|
|
635
|
+
tasks50: { name: 'Undead Champion', desc: 'Complete 50 tasks' },
|
|
636
|
+
tasks100: { name: 'Lord of Cinder', desc: 'Complete 100 tasks' },
|
|
637
|
+
tasks500: { name: 'Dark Lord', desc: 'Complete 500 tasks' },
|
|
638
|
+
tasks1000: { name: 'Legend Never Dies', desc: 'Complete 1000 tasks' },
|
|
639
|
+
boss1: { name: 'Boss Slayer', desc: 'Fell your first boss' },
|
|
640
|
+
boss5: { name: 'Giant Slayer', desc: 'Fell 5 bosses' },
|
|
641
|
+
boss10: { name: 'Dragon Slayer', desc: 'Fell 10 bosses' },
|
|
642
|
+
boss25: { name: 'God Slayer', desc: 'Fell 25 bosses' },
|
|
643
|
+
streak3: { name: 'Ember Restored', desc: '3 day streak' },
|
|
644
|
+
streak7: { name: 'Kindled', desc: '7 day streak' },
|
|
645
|
+
streak14: { name: 'Flame Keeper', desc: '14 day streak' },
|
|
646
|
+
streak30: { name: 'Lord of Flame', desc: '30 day streak' },
|
|
647
|
+
depth3: { name: 'Catacombs Explorer', desc: 'Descend to depth 3' },
|
|
648
|
+
depth5: { name: 'Abyss Walker', desc: 'Descend to depth 5' },
|
|
649
|
+
depth10: { name: 'Void Wanderer', desc: 'Descend to depth 10' },
|
|
650
|
+
speedrun: { name: 'Speedrunner', desc: 'Same-day completion' },
|
|
651
|
+
nightOwl: { name: 'Dark Spirit', desc: 'Task after midnight' },
|
|
652
|
+
earlyBird: { name: 'Sun Bro', desc: 'Task before dawn' },
|
|
653
|
+
},
|
|
654
|
+
loot: {
|
|
655
|
+
common: ['Estus Flask Shard', 'Lifegem', 'Firebomb', 'Throwing Knife', 'Prism Stone'],
|
|
656
|
+
uncommon: ['Titanite Shard', 'Green Blossom', 'Homeward Bone', 'Ember', 'Undead Bone Shard'],
|
|
657
|
+
rare: ['Titanite Chunk', 'Coiled Sword', 'Sunlight Medal', 'Proof of Concord', 'Pale Tongue'],
|
|
658
|
+
epic: ['Titanite Slab', 'Soul of a Great Champion', 'Ring of Favor', 'Havel\'s Ring', 'Chloranthy Ring'],
|
|
659
|
+
legendary: ['Soul of Cinder', 'Firelink Greatsword', 'Wolf Knight Greatsword', 'Moonlight Greatsword', 'Dark Soul'],
|
|
660
|
+
},
|
|
661
|
+
rarities: {
|
|
662
|
+
common: 'Common',
|
|
663
|
+
uncommon: 'Rare',
|
|
664
|
+
rare: 'Very Rare',
|
|
665
|
+
epic: 'Legendary',
|
|
666
|
+
legendary: 'Boss Soul',
|
|
667
|
+
},
|
|
668
|
+
stats: {
|
|
669
|
+
level: 'Soul Level',
|
|
670
|
+
xp: 'Souls',
|
|
671
|
+
tasksCompleted: 'Tasks Completed',
|
|
672
|
+
bossesDefeated: 'Bosses Felled',
|
|
673
|
+
currentStreak: 'Ember Streak',
|
|
674
|
+
longestStreak: 'Longest Journey',
|
|
675
|
+
inventory: 'Inventory',
|
|
676
|
+
},
|
|
677
|
+
};
|
|
556
678
|
// Map preset names to dictionaries
|
|
557
679
|
exports.DICTIONARIES = {
|
|
558
680
|
default: exports.DEFAULT_DICTIONARY,
|
|
@@ -564,6 +686,8 @@ exports.DICTIONARIES = {
|
|
|
564
686
|
western: exports.WESTERN_DICTIONARY,
|
|
565
687
|
warhammer: exports.WARHAMMER_DICTIONARY,
|
|
566
688
|
ninja: exports.NINJA_DICTIONARY,
|
|
689
|
+
crusader: exports.CRUSADER_DICTIONARY,
|
|
690
|
+
darksouls: exports.DARKSOULS_DICTIONARY,
|
|
567
691
|
};
|
|
568
692
|
// Get dictionary based on rules preset
|
|
569
693
|
function getDictionary(preset) {
|
|
@@ -1027,7 +1027,8 @@ Gamification:
|
|
|
1027
1027
|
|
|
1028
1028
|
Rules (AI style presets):
|
|
1029
1029
|
Set via init or config -R="<rules>"
|
|
1030
|
-
Presets: fantasy, space, starwars, cyberpunk, pirate,
|
|
1030
|
+
Presets: fantasy, space, starwars, cyberpunk, pirate,
|
|
1031
|
+
warhammer, ninja, crusader, darksouls
|
|
1031
1032
|
|
|
1032
1033
|
Config:
|
|
1033
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,
|
|
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
package/src/config/config.ts
CHANGED
|
@@ -62,6 +62,14 @@ 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
|
+
},
|
|
69
|
+
darksouls: {
|
|
70
|
+
name: 'Dark Souls',
|
|
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!',
|
|
72
|
+
},
|
|
65
73
|
};
|
|
66
74
|
|
|
67
75
|
const CONFIG_FILE = path.join(os.homedir(), '.rlc', 'config.json');
|
package/src/data/dictionaries.ts
CHANGED
|
@@ -625,6 +625,130 @@ 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
|
+
|
|
690
|
+
// Dark Souls dictionary
|
|
691
|
+
export const DARKSOULS_DICTIONARY: Dictionary = {
|
|
692
|
+
messages: {
|
|
693
|
+
questCompleted: 'VICTORY ACHIEVED',
|
|
694
|
+
levelUp: 'SOUL LEVEL INCREASED!',
|
|
695
|
+
newAchievement: 'ACHIEVEMENT UNLOCKED',
|
|
696
|
+
lootDropped: 'ITEM ACQUIRED',
|
|
697
|
+
bossDefeated: 'GREAT ENEMY FELLED',
|
|
698
|
+
streakBonus: 'HUMANITY RESTORED',
|
|
699
|
+
taskBlocked: 'Path blocked. Try different approach.',
|
|
700
|
+
taskUnblocked: 'A shortcut has opened',
|
|
701
|
+
deadlineSet: 'The bell tolls',
|
|
702
|
+
deadlineOverdue: 'YOU DIED',
|
|
703
|
+
welcomeBack: 'Welcome back, Ashen One',
|
|
704
|
+
},
|
|
705
|
+
achievements: {
|
|
706
|
+
firstTask: { name: 'First Flame', desc: 'Begin your journey' },
|
|
707
|
+
tasks10: { name: 'Chosen Undead', desc: 'Complete 10 tasks' },
|
|
708
|
+
tasks50: { name: 'Undead Champion', desc: 'Complete 50 tasks' },
|
|
709
|
+
tasks100: { name: 'Lord of Cinder', desc: 'Complete 100 tasks' },
|
|
710
|
+
tasks500: { name: 'Dark Lord', desc: 'Complete 500 tasks' },
|
|
711
|
+
tasks1000: { name: 'Legend Never Dies', desc: 'Complete 1000 tasks' },
|
|
712
|
+
boss1: { name: 'Boss Slayer', desc: 'Fell your first boss' },
|
|
713
|
+
boss5: { name: 'Giant Slayer', desc: 'Fell 5 bosses' },
|
|
714
|
+
boss10: { name: 'Dragon Slayer', desc: 'Fell 10 bosses' },
|
|
715
|
+
boss25: { name: 'God Slayer', desc: 'Fell 25 bosses' },
|
|
716
|
+
streak3: { name: 'Ember Restored', desc: '3 day streak' },
|
|
717
|
+
streak7: { name: 'Kindled', desc: '7 day streak' },
|
|
718
|
+
streak14: { name: 'Flame Keeper', desc: '14 day streak' },
|
|
719
|
+
streak30: { name: 'Lord of Flame', desc: '30 day streak' },
|
|
720
|
+
depth3: { name: 'Catacombs Explorer', desc: 'Descend to depth 3' },
|
|
721
|
+
depth5: { name: 'Abyss Walker', desc: 'Descend to depth 5' },
|
|
722
|
+
depth10: { name: 'Void Wanderer', desc: 'Descend to depth 10' },
|
|
723
|
+
speedrun: { name: 'Speedrunner', desc: 'Same-day completion' },
|
|
724
|
+
nightOwl: { name: 'Dark Spirit', desc: 'Task after midnight' },
|
|
725
|
+
earlyBird: { name: 'Sun Bro', desc: 'Task before dawn' },
|
|
726
|
+
},
|
|
727
|
+
loot: {
|
|
728
|
+
common: ['Estus Flask Shard', 'Lifegem', 'Firebomb', 'Throwing Knife', 'Prism Stone'],
|
|
729
|
+
uncommon: ['Titanite Shard', 'Green Blossom', 'Homeward Bone', 'Ember', 'Undead Bone Shard'],
|
|
730
|
+
rare: ['Titanite Chunk', 'Coiled Sword', 'Sunlight Medal', 'Proof of Concord', 'Pale Tongue'],
|
|
731
|
+
epic: ['Titanite Slab', 'Soul of a Great Champion', 'Ring of Favor', 'Havel\'s Ring', 'Chloranthy Ring'],
|
|
732
|
+
legendary: ['Soul of Cinder', 'Firelink Greatsword', 'Wolf Knight Greatsword', 'Moonlight Greatsword', 'Dark Soul'],
|
|
733
|
+
},
|
|
734
|
+
rarities: {
|
|
735
|
+
common: 'Common',
|
|
736
|
+
uncommon: 'Rare',
|
|
737
|
+
rare: 'Very Rare',
|
|
738
|
+
epic: 'Legendary',
|
|
739
|
+
legendary: 'Boss Soul',
|
|
740
|
+
},
|
|
741
|
+
stats: {
|
|
742
|
+
level: 'Soul Level',
|
|
743
|
+
xp: 'Souls',
|
|
744
|
+
tasksCompleted: 'Tasks Completed',
|
|
745
|
+
bossesDefeated: 'Bosses Felled',
|
|
746
|
+
currentStreak: 'Ember Streak',
|
|
747
|
+
longestStreak: 'Longest Journey',
|
|
748
|
+
inventory: 'Inventory',
|
|
749
|
+
},
|
|
750
|
+
};
|
|
751
|
+
|
|
628
752
|
// Map preset names to dictionaries
|
|
629
753
|
export const DICTIONARIES: Record<string, Dictionary> = {
|
|
630
754
|
default: DEFAULT_DICTIONARY,
|
|
@@ -636,6 +760,8 @@ export const DICTIONARIES: Record<string, Dictionary> = {
|
|
|
636
760
|
western: WESTERN_DICTIONARY,
|
|
637
761
|
warhammer: WARHAMMER_DICTIONARY,
|
|
638
762
|
ninja: NINJA_DICTIONARY,
|
|
763
|
+
crusader: CRUSADER_DICTIONARY,
|
|
764
|
+
darksouls: DARKSOULS_DICTIONARY,
|
|
639
765
|
};
|
|
640
766
|
|
|
641
767
|
// Get dictionary based on rules preset
|
|
@@ -1216,7 +1216,8 @@ Gamification:
|
|
|
1216
1216
|
|
|
1217
1217
|
Rules (AI style presets):
|
|
1218
1218
|
Set via init or config -R="<rules>"
|
|
1219
|
-
Presets: fantasy, space, starwars, cyberpunk, pirate,
|
|
1219
|
+
Presets: fantasy, space, starwars, cyberpunk, pirate,
|
|
1220
|
+
warhammer, ninja, crusader, darksouls
|
|
1220
1221
|
|
|
1221
1222
|
Config:
|
|
1222
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,
|
|
23
|
+
' Rules: fantasy, starwars, cyberpunk, crusader...',
|
|
24
24
|
' Config: init, config -R="<rules>"',
|
|
25
25
|
'',
|
|
26
26
|
' TAB autocomplete, | pbcopy to copy',
|