roguelike-cli 1.3.4 → 1.3.6
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 +4 -1
- package/dist/config/config.js +12 -0
- package/dist/data/dictionaries.js +187 -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 +12 -0
- package/src/data/dictionaries.ts +189 -0
- package/src/interactive/commands.ts +2 -1
- package/src/interactive/startup.ts +1 -1
package/README.md
CHANGED
|
@@ -94,9 +94,12 @@ Rules change how the AI speaks. Set during `init` or with `config -R="<rules>"`.
|
|
|
94
94
|
| `fantasy` | Quests, dungeons, dragons, loot |
|
|
95
95
|
| `space` | Missions, starships, commanders |
|
|
96
96
|
| `starwars` | Jedi, Force, Rebel Alliance |
|
|
97
|
-
| `western` | Bounties, sheriffs, frontier |
|
|
98
97
|
| `cyberpunk` | Gigs, netrunners, corps |
|
|
99
98
|
| `pirate` | Plunder, treasure, seven seas |
|
|
99
|
+
| `western` | Bounties, sheriffs, frontier |
|
|
100
|
+
| `warhammer` | For the Emperor! Purge heretics |
|
|
101
|
+
| `ninja` | Shinobi, shadows, honor, blades |
|
|
102
|
+
| `darksouls` | YOU DIED. Praise the Sun! |
|
|
100
103
|
|
|
101
104
|
### Custom Rules
|
|
102
105
|
|
package/dist/config/config.js
CHANGED
|
@@ -81,6 +81,18 @@ exports.RULES_PRESETS = {
|
|
|
81
81
|
name: 'Pirate',
|
|
82
82
|
rules: 'Use pirate language. Tasks are "plunder", completing them is "claiming the treasure". Milestones are "capturing the flagship". Use "captain", "crew", "booty", "seven seas", "landlubber". Arr matey!',
|
|
83
83
|
},
|
|
84
|
+
warhammer: {
|
|
85
|
+
name: 'Warhammer 40K',
|
|
86
|
+
rules: 'Use Warhammer 40K language. Tasks are "missions for the Emperor". Completing is "purging heretics". Milestones are "crusades". Use "Battle-Brother", "Chapter", "Inquisition", "Chaos", "Xenos". For the Emperor!',
|
|
87
|
+
},
|
|
88
|
+
ninja: {
|
|
89
|
+
name: 'Ninja/Samurai',
|
|
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
|
+
},
|
|
92
|
+
darksouls: {
|
|
93
|
+
name: 'Dark Souls',
|
|
94
|
+
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!',
|
|
95
|
+
},
|
|
84
96
|
};
|
|
85
97
|
const CONFIG_FILE = path.join(os.homedir(), '.rlc', 'config.json');
|
|
86
98
|
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.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.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 = {
|
|
@@ -431,6 +431,189 @@ exports.WESTERN_DICTIONARY = {
|
|
|
431
431
|
inventory: 'Saddlebag',
|
|
432
432
|
},
|
|
433
433
|
};
|
|
434
|
+
// Warhammer dictionary
|
|
435
|
+
exports.WARHAMMER_DICTIONARY = {
|
|
436
|
+
messages: {
|
|
437
|
+
questCompleted: 'FOR THE EMPEROR!',
|
|
438
|
+
levelUp: 'YOUR GLORY GROWS!',
|
|
439
|
+
newAchievement: 'HONOR TO THE CHAPTER',
|
|
440
|
+
lootDropped: 'WARGEAR ACQUIRED',
|
|
441
|
+
bossDefeated: 'HERETIC PURGED',
|
|
442
|
+
streakBonus: 'ZEALOT BONUS',
|
|
443
|
+
taskBlocked: 'Chaos blocks the path',
|
|
444
|
+
taskUnblocked: 'The Warp clears',
|
|
445
|
+
deadlineSet: 'Crusade deadline set',
|
|
446
|
+
deadlineOverdue: 'THE INQUISITION AWAITS',
|
|
447
|
+
welcomeBack: 'Welcome back, Battle-Brother',
|
|
448
|
+
},
|
|
449
|
+
achievements: {
|
|
450
|
+
firstTask: { name: 'Initiate', desc: 'Begin your crusade' },
|
|
451
|
+
tasks10: { name: 'Battle-Brother', desc: 'Complete 10 missions' },
|
|
452
|
+
tasks50: { name: 'Veteran', desc: 'Complete 50 missions' },
|
|
453
|
+
tasks100: { name: 'Chapter Champion', desc: 'Complete 100 missions' },
|
|
454
|
+
tasks500: { name: 'Chapter Master', desc: 'Complete 500 missions' },
|
|
455
|
+
tasks1000: { name: 'Living Saint', desc: 'Complete 1000 missions' },
|
|
456
|
+
boss1: { name: 'Xenos Slayer', desc: 'Purge your first heretic' },
|
|
457
|
+
boss5: { name: 'Daemon Hunter', desc: 'Purge 5 heretics' },
|
|
458
|
+
boss10: { name: 'Inquisitor', desc: 'Purge 10 heretics' },
|
|
459
|
+
boss25: { name: 'Primarch\'s Chosen', desc: 'Purge 25 heretics' },
|
|
460
|
+
streak3: { name: 'Zealous', desc: '3 day crusade streak' },
|
|
461
|
+
streak7: { name: 'Unwavering', desc: '7 day crusade streak' },
|
|
462
|
+
streak14: { name: 'Fanatic', desc: '14 day crusade streak' },
|
|
463
|
+
streak30: { name: 'Eternal Crusader', desc: '30 day crusade streak' },
|
|
464
|
+
depth3: { name: 'Underhive Explorer', desc: 'Descend to level 3' },
|
|
465
|
+
depth5: { name: 'Warp Diver', desc: 'Descend to level 5' },
|
|
466
|
+
depth10: { name: 'Eye of Terror', desc: 'Descend to level 10' },
|
|
467
|
+
speedrun: { name: 'Blitzkrieg', desc: 'Same-day mission' },
|
|
468
|
+
nightOwl: { name: 'Night Lord', desc: 'Mission after midnight' },
|
|
469
|
+
earlyBird: { name: 'Dawn Assault', desc: 'Mission before dawn' },
|
|
470
|
+
},
|
|
471
|
+
loot: {
|
|
472
|
+
common: ['Bolt Rounds', 'Ration Pack', 'Purity Seal', 'Combat Knife', 'Frag Grenade'],
|
|
473
|
+
uncommon: ['Bolter', 'Chainsword', 'Power Armor Piece', 'Auspex', 'Servo-skull'],
|
|
474
|
+
rare: ['Power Sword', 'Storm Bolter', 'Terminator Armor', 'Jump Pack', 'Rosarius'],
|
|
475
|
+
epic: ['Thunder Hammer', 'Artificer Armor', 'Relic Blade', 'Iron Halo', 'Crux Terminatus'],
|
|
476
|
+
legendary: ['Emperor\'s Champion Blade', 'Armor of Faith', 'Primarch\'s Gene-seed', 'Golden Throne Shard', 'STC Fragment'],
|
|
477
|
+
},
|
|
478
|
+
rarities: {
|
|
479
|
+
common: 'Common',
|
|
480
|
+
uncommon: 'Requisitioned',
|
|
481
|
+
rare: 'Reliquary',
|
|
482
|
+
epic: 'Mastercraft',
|
|
483
|
+
legendary: 'Archeotech',
|
|
484
|
+
},
|
|
485
|
+
stats: {
|
|
486
|
+
level: 'Battle Honors',
|
|
487
|
+
xp: 'Glory',
|
|
488
|
+
tasksCompleted: 'Missions Completed',
|
|
489
|
+
bossesDefeated: 'Heretics Purged',
|
|
490
|
+
currentStreak: 'Crusade Streak',
|
|
491
|
+
longestStreak: 'Longest Crusade',
|
|
492
|
+
inventory: 'Armory',
|
|
493
|
+
},
|
|
494
|
+
};
|
|
495
|
+
// Ninja/Samurai dictionary
|
|
496
|
+
exports.NINJA_DICTIONARY = {
|
|
497
|
+
messages: {
|
|
498
|
+
questCompleted: 'MISSION ACCOMPLISHED',
|
|
499
|
+
levelUp: 'YOUR SKILL GROWS!',
|
|
500
|
+
newAchievement: 'HONOR EARNED',
|
|
501
|
+
lootDropped: 'TREASURE FOUND',
|
|
502
|
+
bossDefeated: 'ENEMY VANQUISHED',
|
|
503
|
+
streakBonus: 'COMBO MASTERY',
|
|
504
|
+
taskBlocked: 'The path is guarded',
|
|
505
|
+
taskUnblocked: 'The way is clear',
|
|
506
|
+
deadlineSet: 'Contract accepted',
|
|
507
|
+
deadlineOverdue: 'DISHONOR UPON YOU',
|
|
508
|
+
welcomeBack: 'Welcome back, Shadow',
|
|
509
|
+
},
|
|
510
|
+
achievements: {
|
|
511
|
+
firstTask: { name: 'Apprentice', desc: 'Begin your training' },
|
|
512
|
+
tasks10: { name: 'Genin', desc: 'Complete 10 missions' },
|
|
513
|
+
tasks50: { name: 'Chunin', desc: 'Complete 50 missions' },
|
|
514
|
+
tasks100: { name: 'Jonin', desc: 'Complete 100 missions' },
|
|
515
|
+
tasks500: { name: 'Kage', desc: 'Complete 500 missions' },
|
|
516
|
+
tasks1000: { name: 'Legendary Shinobi', desc: 'Complete 1000 missions' },
|
|
517
|
+
boss1: { name: 'First Kill', desc: 'Defeat your first target' },
|
|
518
|
+
boss5: { name: 'Assassin', desc: 'Defeat 5 targets' },
|
|
519
|
+
boss10: { name: 'Shadow Master', desc: 'Defeat 10 targets' },
|
|
520
|
+
boss25: { name: 'Demon Slayer', desc: 'Defeat 25 targets' },
|
|
521
|
+
streak3: { name: 'Swift Shadow', desc: '3 day mission streak' },
|
|
522
|
+
streak7: { name: 'Ghost', desc: '7 day mission streak' },
|
|
523
|
+
streak14: { name: 'Phantom', desc: '14 day mission streak' },
|
|
524
|
+
streak30: { name: 'Living Shadow', desc: '30 day mission streak' },
|
|
525
|
+
depth3: { name: 'Temple Infiltrator', desc: 'Descend to level 3' },
|
|
526
|
+
depth5: { name: 'Castle Breaker', desc: 'Descend to level 5' },
|
|
527
|
+
depth10: { name: 'Shogun\'s Nightmare', desc: 'Descend to level 10' },
|
|
528
|
+
speedrun: { name: 'Wind Step', desc: 'Same-day mission' },
|
|
529
|
+
nightOwl: { name: 'Night Blade', desc: 'Mission after midnight' },
|
|
530
|
+
earlyBird: { name: 'Dawn Strike', desc: 'Mission before dawn' },
|
|
531
|
+
},
|
|
532
|
+
loot: {
|
|
533
|
+
common: ['Shuriken', 'Smoke Bomb', 'Rice Ball', 'Bandages', 'Rope'],
|
|
534
|
+
uncommon: ['Katana', 'Kunai', 'Grappling Hook', 'Ninja Garb', 'Caltrops'],
|
|
535
|
+
rare: ['Kusarigama', 'Shadow Cloak', 'Poison Vial', 'Oni Mask', 'Sacred Scroll'],
|
|
536
|
+
epic: ['Muramasa Blade', 'Dragon Scale Armor', 'Tengu Feather', 'Demon Mask', 'Phoenix Down'],
|
|
537
|
+
legendary: ['Sword of the Immortal', 'Armor of Shadows', 'Eye of the Dragon', 'Shinobi Legacy', 'Path of the Wind'],
|
|
538
|
+
},
|
|
539
|
+
rarities: {
|
|
540
|
+
common: 'Common',
|
|
541
|
+
uncommon: 'Refined',
|
|
542
|
+
rare: 'Sacred',
|
|
543
|
+
epic: 'Mythic',
|
|
544
|
+
legendary: 'Divine',
|
|
545
|
+
},
|
|
546
|
+
stats: {
|
|
547
|
+
level: 'Rank',
|
|
548
|
+
xp: 'Honor',
|
|
549
|
+
tasksCompleted: 'Missions Completed',
|
|
550
|
+
bossesDefeated: 'Enemies Vanquished',
|
|
551
|
+
currentStreak: 'Mission Streak',
|
|
552
|
+
longestStreak: 'Longest Campaign',
|
|
553
|
+
inventory: 'Inventory',
|
|
554
|
+
},
|
|
555
|
+
};
|
|
556
|
+
// Dark Souls dictionary
|
|
557
|
+
exports.DARKSOULS_DICTIONARY = {
|
|
558
|
+
messages: {
|
|
559
|
+
questCompleted: 'VICTORY ACHIEVED',
|
|
560
|
+
levelUp: 'SOUL LEVEL INCREASED!',
|
|
561
|
+
newAchievement: 'ACHIEVEMENT UNLOCKED',
|
|
562
|
+
lootDropped: 'ITEM ACQUIRED',
|
|
563
|
+
bossDefeated: 'GREAT ENEMY FELLED',
|
|
564
|
+
streakBonus: 'HUMANITY RESTORED',
|
|
565
|
+
taskBlocked: 'Path blocked. Try different approach.',
|
|
566
|
+
taskUnblocked: 'A shortcut has opened',
|
|
567
|
+
deadlineSet: 'The bell tolls',
|
|
568
|
+
deadlineOverdue: 'YOU DIED',
|
|
569
|
+
welcomeBack: 'Welcome back, Ashen One',
|
|
570
|
+
},
|
|
571
|
+
achievements: {
|
|
572
|
+
firstTask: { name: 'First Flame', desc: 'Begin your journey' },
|
|
573
|
+
tasks10: { name: 'Chosen Undead', desc: 'Complete 10 tasks' },
|
|
574
|
+
tasks50: { name: 'Undead Champion', desc: 'Complete 50 tasks' },
|
|
575
|
+
tasks100: { name: 'Lord of Cinder', desc: 'Complete 100 tasks' },
|
|
576
|
+
tasks500: { name: 'Dark Lord', desc: 'Complete 500 tasks' },
|
|
577
|
+
tasks1000: { name: 'Legend Never Dies', desc: 'Complete 1000 tasks' },
|
|
578
|
+
boss1: { name: 'Boss Slayer', desc: 'Fell your first boss' },
|
|
579
|
+
boss5: { name: 'Giant Slayer', desc: 'Fell 5 bosses' },
|
|
580
|
+
boss10: { name: 'Dragon Slayer', desc: 'Fell 10 bosses' },
|
|
581
|
+
boss25: { name: 'God Slayer', desc: 'Fell 25 bosses' },
|
|
582
|
+
streak3: { name: 'Ember Restored', desc: '3 day streak' },
|
|
583
|
+
streak7: { name: 'Kindled', desc: '7 day streak' },
|
|
584
|
+
streak14: { name: 'Flame Keeper', desc: '14 day streak' },
|
|
585
|
+
streak30: { name: 'Lord of Flame', desc: '30 day streak' },
|
|
586
|
+
depth3: { name: 'Catacombs Explorer', desc: 'Descend to depth 3' },
|
|
587
|
+
depth5: { name: 'Abyss Walker', desc: 'Descend to depth 5' },
|
|
588
|
+
depth10: { name: 'Void Wanderer', desc: 'Descend to depth 10' },
|
|
589
|
+
speedrun: { name: 'Speedrunner', desc: 'Same-day completion' },
|
|
590
|
+
nightOwl: { name: 'Dark Spirit', desc: 'Task after midnight' },
|
|
591
|
+
earlyBird: { name: 'Sun Bro', desc: 'Task before dawn' },
|
|
592
|
+
},
|
|
593
|
+
loot: {
|
|
594
|
+
common: ['Estus Flask Shard', 'Lifegem', 'Firebomb', 'Throwing Knife', 'Prism Stone'],
|
|
595
|
+
uncommon: ['Titanite Shard', 'Green Blossom', 'Homeward Bone', 'Ember', 'Undead Bone Shard'],
|
|
596
|
+
rare: ['Titanite Chunk', 'Coiled Sword', 'Sunlight Medal', 'Proof of Concord', 'Pale Tongue'],
|
|
597
|
+
epic: ['Titanite Slab', 'Soul of a Great Champion', 'Ring of Favor', 'Havel\'s Ring', 'Chloranthy Ring'],
|
|
598
|
+
legendary: ['Soul of Cinder', 'Firelink Greatsword', 'Wolf Knight Greatsword', 'Moonlight Greatsword', 'Dark Soul'],
|
|
599
|
+
},
|
|
600
|
+
rarities: {
|
|
601
|
+
common: 'Common',
|
|
602
|
+
uncommon: 'Rare',
|
|
603
|
+
rare: 'Very Rare',
|
|
604
|
+
epic: 'Legendary',
|
|
605
|
+
legendary: 'Boss Soul',
|
|
606
|
+
},
|
|
607
|
+
stats: {
|
|
608
|
+
level: 'Soul Level',
|
|
609
|
+
xp: 'Souls',
|
|
610
|
+
tasksCompleted: 'Tasks Completed',
|
|
611
|
+
bossesDefeated: 'Bosses Felled',
|
|
612
|
+
currentStreak: 'Ember Streak',
|
|
613
|
+
longestStreak: 'Longest Journey',
|
|
614
|
+
inventory: 'Inventory',
|
|
615
|
+
},
|
|
616
|
+
};
|
|
434
617
|
// Map preset names to dictionaries
|
|
435
618
|
exports.DICTIONARIES = {
|
|
436
619
|
default: exports.DEFAULT_DICTIONARY,
|
|
@@ -440,6 +623,9 @@ exports.DICTIONARIES = {
|
|
|
440
623
|
cyberpunk: exports.CYBERPUNK_DICTIONARY,
|
|
441
624
|
pirate: exports.PIRATE_DICTIONARY,
|
|
442
625
|
western: exports.WESTERN_DICTIONARY,
|
|
626
|
+
warhammer: exports.WARHAMMER_DICTIONARY,
|
|
627
|
+
ninja: exports.NINJA_DICTIONARY,
|
|
628
|
+
darksouls: exports.DARKSOULS_DICTIONARY,
|
|
443
629
|
};
|
|
444
630
|
// Get dictionary based on rules preset
|
|
445
631
|
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,
|
|
1030
|
+
Presets: fantasy, space, starwars, cyberpunk, pirate,
|
|
1031
|
+
warhammer, ninja, 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, darksouls...',
|
|
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
|
@@ -54,6 +54,18 @@ export const RULES_PRESETS: Record<string, { name: string; rules: string }> = {
|
|
|
54
54
|
name: 'Pirate',
|
|
55
55
|
rules: 'Use pirate language. Tasks are "plunder", completing them is "claiming the treasure". Milestones are "capturing the flagship". Use "captain", "crew", "booty", "seven seas", "landlubber". Arr matey!',
|
|
56
56
|
},
|
|
57
|
+
warhammer: {
|
|
58
|
+
name: 'Warhammer 40K',
|
|
59
|
+
rules: 'Use Warhammer 40K language. Tasks are "missions for the Emperor". Completing is "purging heretics". Milestones are "crusades". Use "Battle-Brother", "Chapter", "Inquisition", "Chaos", "Xenos". For the Emperor!',
|
|
60
|
+
},
|
|
61
|
+
ninja: {
|
|
62
|
+
name: 'Ninja/Samurai',
|
|
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
|
+
},
|
|
65
|
+
darksouls: {
|
|
66
|
+
name: 'Dark Souls',
|
|
67
|
+
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!',
|
|
68
|
+
},
|
|
57
69
|
};
|
|
58
70
|
|
|
59
71
|
const CONFIG_FILE = path.join(os.homedir(), '.rlc', 'config.json');
|
package/src/data/dictionaries.ts
CHANGED
|
@@ -501,6 +501,192 @@ export const WESTERN_DICTIONARY: Dictionary = {
|
|
|
501
501
|
},
|
|
502
502
|
};
|
|
503
503
|
|
|
504
|
+
// Warhammer dictionary
|
|
505
|
+
export const WARHAMMER_DICTIONARY: Dictionary = {
|
|
506
|
+
messages: {
|
|
507
|
+
questCompleted: 'FOR THE EMPEROR!',
|
|
508
|
+
levelUp: 'YOUR GLORY GROWS!',
|
|
509
|
+
newAchievement: 'HONOR TO THE CHAPTER',
|
|
510
|
+
lootDropped: 'WARGEAR ACQUIRED',
|
|
511
|
+
bossDefeated: 'HERETIC PURGED',
|
|
512
|
+
streakBonus: 'ZEALOT BONUS',
|
|
513
|
+
taskBlocked: 'Chaos blocks the path',
|
|
514
|
+
taskUnblocked: 'The Warp clears',
|
|
515
|
+
deadlineSet: 'Crusade deadline set',
|
|
516
|
+
deadlineOverdue: 'THE INQUISITION AWAITS',
|
|
517
|
+
welcomeBack: 'Welcome back, Battle-Brother',
|
|
518
|
+
},
|
|
519
|
+
achievements: {
|
|
520
|
+
firstTask: { name: 'Initiate', desc: 'Begin your crusade' },
|
|
521
|
+
tasks10: { name: 'Battle-Brother', desc: 'Complete 10 missions' },
|
|
522
|
+
tasks50: { name: 'Veteran', desc: 'Complete 50 missions' },
|
|
523
|
+
tasks100: { name: 'Chapter Champion', desc: 'Complete 100 missions' },
|
|
524
|
+
tasks500: { name: 'Chapter Master', desc: 'Complete 500 missions' },
|
|
525
|
+
tasks1000: { name: 'Living Saint', desc: 'Complete 1000 missions' },
|
|
526
|
+
boss1: { name: 'Xenos Slayer', desc: 'Purge your first heretic' },
|
|
527
|
+
boss5: { name: 'Daemon Hunter', desc: 'Purge 5 heretics' },
|
|
528
|
+
boss10: { name: 'Inquisitor', desc: 'Purge 10 heretics' },
|
|
529
|
+
boss25: { name: 'Primarch\'s Chosen', desc: 'Purge 25 heretics' },
|
|
530
|
+
streak3: { name: 'Zealous', desc: '3 day crusade streak' },
|
|
531
|
+
streak7: { name: 'Unwavering', desc: '7 day crusade streak' },
|
|
532
|
+
streak14: { name: 'Fanatic', desc: '14 day crusade streak' },
|
|
533
|
+
streak30: { name: 'Eternal Crusader', desc: '30 day crusade streak' },
|
|
534
|
+
depth3: { name: 'Underhive Explorer', desc: 'Descend to level 3' },
|
|
535
|
+
depth5: { name: 'Warp Diver', desc: 'Descend to level 5' },
|
|
536
|
+
depth10: { name: 'Eye of Terror', desc: 'Descend to level 10' },
|
|
537
|
+
speedrun: { name: 'Blitzkrieg', desc: 'Same-day mission' },
|
|
538
|
+
nightOwl: { name: 'Night Lord', desc: 'Mission after midnight' },
|
|
539
|
+
earlyBird: { name: 'Dawn Assault', desc: 'Mission before dawn' },
|
|
540
|
+
},
|
|
541
|
+
loot: {
|
|
542
|
+
common: ['Bolt Rounds', 'Ration Pack', 'Purity Seal', 'Combat Knife', 'Frag Grenade'],
|
|
543
|
+
uncommon: ['Bolter', 'Chainsword', 'Power Armor Piece', 'Auspex', 'Servo-skull'],
|
|
544
|
+
rare: ['Power Sword', 'Storm Bolter', 'Terminator Armor', 'Jump Pack', 'Rosarius'],
|
|
545
|
+
epic: ['Thunder Hammer', 'Artificer Armor', 'Relic Blade', 'Iron Halo', 'Crux Terminatus'],
|
|
546
|
+
legendary: ['Emperor\'s Champion Blade', 'Armor of Faith', 'Primarch\'s Gene-seed', 'Golden Throne Shard', 'STC Fragment'],
|
|
547
|
+
},
|
|
548
|
+
rarities: {
|
|
549
|
+
common: 'Common',
|
|
550
|
+
uncommon: 'Requisitioned',
|
|
551
|
+
rare: 'Reliquary',
|
|
552
|
+
epic: 'Mastercraft',
|
|
553
|
+
legendary: 'Archeotech',
|
|
554
|
+
},
|
|
555
|
+
stats: {
|
|
556
|
+
level: 'Battle Honors',
|
|
557
|
+
xp: 'Glory',
|
|
558
|
+
tasksCompleted: 'Missions Completed',
|
|
559
|
+
bossesDefeated: 'Heretics Purged',
|
|
560
|
+
currentStreak: 'Crusade Streak',
|
|
561
|
+
longestStreak: 'Longest Crusade',
|
|
562
|
+
inventory: 'Armory',
|
|
563
|
+
},
|
|
564
|
+
};
|
|
565
|
+
|
|
566
|
+
// Ninja/Samurai dictionary
|
|
567
|
+
export const NINJA_DICTIONARY: Dictionary = {
|
|
568
|
+
messages: {
|
|
569
|
+
questCompleted: 'MISSION ACCOMPLISHED',
|
|
570
|
+
levelUp: 'YOUR SKILL GROWS!',
|
|
571
|
+
newAchievement: 'HONOR EARNED',
|
|
572
|
+
lootDropped: 'TREASURE FOUND',
|
|
573
|
+
bossDefeated: 'ENEMY VANQUISHED',
|
|
574
|
+
streakBonus: 'COMBO MASTERY',
|
|
575
|
+
taskBlocked: 'The path is guarded',
|
|
576
|
+
taskUnblocked: 'The way is clear',
|
|
577
|
+
deadlineSet: 'Contract accepted',
|
|
578
|
+
deadlineOverdue: 'DISHONOR UPON YOU',
|
|
579
|
+
welcomeBack: 'Welcome back, Shadow',
|
|
580
|
+
},
|
|
581
|
+
achievements: {
|
|
582
|
+
firstTask: { name: 'Apprentice', desc: 'Begin your training' },
|
|
583
|
+
tasks10: { name: 'Genin', desc: 'Complete 10 missions' },
|
|
584
|
+
tasks50: { name: 'Chunin', desc: 'Complete 50 missions' },
|
|
585
|
+
tasks100: { name: 'Jonin', desc: 'Complete 100 missions' },
|
|
586
|
+
tasks500: { name: 'Kage', desc: 'Complete 500 missions' },
|
|
587
|
+
tasks1000: { name: 'Legendary Shinobi', desc: 'Complete 1000 missions' },
|
|
588
|
+
boss1: { name: 'First Kill', desc: 'Defeat your first target' },
|
|
589
|
+
boss5: { name: 'Assassin', desc: 'Defeat 5 targets' },
|
|
590
|
+
boss10: { name: 'Shadow Master', desc: 'Defeat 10 targets' },
|
|
591
|
+
boss25: { name: 'Demon Slayer', desc: 'Defeat 25 targets' },
|
|
592
|
+
streak3: { name: 'Swift Shadow', desc: '3 day mission streak' },
|
|
593
|
+
streak7: { name: 'Ghost', desc: '7 day mission streak' },
|
|
594
|
+
streak14: { name: 'Phantom', desc: '14 day mission streak' },
|
|
595
|
+
streak30: { name: 'Living Shadow', desc: '30 day mission streak' },
|
|
596
|
+
depth3: { name: 'Temple Infiltrator', desc: 'Descend to level 3' },
|
|
597
|
+
depth5: { name: 'Castle Breaker', desc: 'Descend to level 5' },
|
|
598
|
+
depth10: { name: 'Shogun\'s Nightmare', desc: 'Descend to level 10' },
|
|
599
|
+
speedrun: { name: 'Wind Step', desc: 'Same-day mission' },
|
|
600
|
+
nightOwl: { name: 'Night Blade', desc: 'Mission after midnight' },
|
|
601
|
+
earlyBird: { name: 'Dawn Strike', desc: 'Mission before dawn' },
|
|
602
|
+
},
|
|
603
|
+
loot: {
|
|
604
|
+
common: ['Shuriken', 'Smoke Bomb', 'Rice Ball', 'Bandages', 'Rope'],
|
|
605
|
+
uncommon: ['Katana', 'Kunai', 'Grappling Hook', 'Ninja Garb', 'Caltrops'],
|
|
606
|
+
rare: ['Kusarigama', 'Shadow Cloak', 'Poison Vial', 'Oni Mask', 'Sacred Scroll'],
|
|
607
|
+
epic: ['Muramasa Blade', 'Dragon Scale Armor', 'Tengu Feather', 'Demon Mask', 'Phoenix Down'],
|
|
608
|
+
legendary: ['Sword of the Immortal', 'Armor of Shadows', 'Eye of the Dragon', 'Shinobi Legacy', 'Path of the Wind'],
|
|
609
|
+
},
|
|
610
|
+
rarities: {
|
|
611
|
+
common: 'Common',
|
|
612
|
+
uncommon: 'Refined',
|
|
613
|
+
rare: 'Sacred',
|
|
614
|
+
epic: 'Mythic',
|
|
615
|
+
legendary: 'Divine',
|
|
616
|
+
},
|
|
617
|
+
stats: {
|
|
618
|
+
level: 'Rank',
|
|
619
|
+
xp: 'Honor',
|
|
620
|
+
tasksCompleted: 'Missions Completed',
|
|
621
|
+
bossesDefeated: 'Enemies Vanquished',
|
|
622
|
+
currentStreak: 'Mission Streak',
|
|
623
|
+
longestStreak: 'Longest Campaign',
|
|
624
|
+
inventory: 'Inventory',
|
|
625
|
+
},
|
|
626
|
+
};
|
|
627
|
+
|
|
628
|
+
// Dark Souls dictionary
|
|
629
|
+
export const DARKSOULS_DICTIONARY: Dictionary = {
|
|
630
|
+
messages: {
|
|
631
|
+
questCompleted: 'VICTORY ACHIEVED',
|
|
632
|
+
levelUp: 'SOUL LEVEL INCREASED!',
|
|
633
|
+
newAchievement: 'ACHIEVEMENT UNLOCKED',
|
|
634
|
+
lootDropped: 'ITEM ACQUIRED',
|
|
635
|
+
bossDefeated: 'GREAT ENEMY FELLED',
|
|
636
|
+
streakBonus: 'HUMANITY RESTORED',
|
|
637
|
+
taskBlocked: 'Path blocked. Try different approach.',
|
|
638
|
+
taskUnblocked: 'A shortcut has opened',
|
|
639
|
+
deadlineSet: 'The bell tolls',
|
|
640
|
+
deadlineOverdue: 'YOU DIED',
|
|
641
|
+
welcomeBack: 'Welcome back, Ashen One',
|
|
642
|
+
},
|
|
643
|
+
achievements: {
|
|
644
|
+
firstTask: { name: 'First Flame', desc: 'Begin your journey' },
|
|
645
|
+
tasks10: { name: 'Chosen Undead', desc: 'Complete 10 tasks' },
|
|
646
|
+
tasks50: { name: 'Undead Champion', desc: 'Complete 50 tasks' },
|
|
647
|
+
tasks100: { name: 'Lord of Cinder', desc: 'Complete 100 tasks' },
|
|
648
|
+
tasks500: { name: 'Dark Lord', desc: 'Complete 500 tasks' },
|
|
649
|
+
tasks1000: { name: 'Legend Never Dies', desc: 'Complete 1000 tasks' },
|
|
650
|
+
boss1: { name: 'Boss Slayer', desc: 'Fell your first boss' },
|
|
651
|
+
boss5: { name: 'Giant Slayer', desc: 'Fell 5 bosses' },
|
|
652
|
+
boss10: { name: 'Dragon Slayer', desc: 'Fell 10 bosses' },
|
|
653
|
+
boss25: { name: 'God Slayer', desc: 'Fell 25 bosses' },
|
|
654
|
+
streak3: { name: 'Ember Restored', desc: '3 day streak' },
|
|
655
|
+
streak7: { name: 'Kindled', desc: '7 day streak' },
|
|
656
|
+
streak14: { name: 'Flame Keeper', desc: '14 day streak' },
|
|
657
|
+
streak30: { name: 'Lord of Flame', desc: '30 day streak' },
|
|
658
|
+
depth3: { name: 'Catacombs Explorer', desc: 'Descend to depth 3' },
|
|
659
|
+
depth5: { name: 'Abyss Walker', desc: 'Descend to depth 5' },
|
|
660
|
+
depth10: { name: 'Void Wanderer', desc: 'Descend to depth 10' },
|
|
661
|
+
speedrun: { name: 'Speedrunner', desc: 'Same-day completion' },
|
|
662
|
+
nightOwl: { name: 'Dark Spirit', desc: 'Task after midnight' },
|
|
663
|
+
earlyBird: { name: 'Sun Bro', desc: 'Task before dawn' },
|
|
664
|
+
},
|
|
665
|
+
loot: {
|
|
666
|
+
common: ['Estus Flask Shard', 'Lifegem', 'Firebomb', 'Throwing Knife', 'Prism Stone'],
|
|
667
|
+
uncommon: ['Titanite Shard', 'Green Blossom', 'Homeward Bone', 'Ember', 'Undead Bone Shard'],
|
|
668
|
+
rare: ['Titanite Chunk', 'Coiled Sword', 'Sunlight Medal', 'Proof of Concord', 'Pale Tongue'],
|
|
669
|
+
epic: ['Titanite Slab', 'Soul of a Great Champion', 'Ring of Favor', 'Havel\'s Ring', 'Chloranthy Ring'],
|
|
670
|
+
legendary: ['Soul of Cinder', 'Firelink Greatsword', 'Wolf Knight Greatsword', 'Moonlight Greatsword', 'Dark Soul'],
|
|
671
|
+
},
|
|
672
|
+
rarities: {
|
|
673
|
+
common: 'Common',
|
|
674
|
+
uncommon: 'Rare',
|
|
675
|
+
rare: 'Very Rare',
|
|
676
|
+
epic: 'Legendary',
|
|
677
|
+
legendary: 'Boss Soul',
|
|
678
|
+
},
|
|
679
|
+
stats: {
|
|
680
|
+
level: 'Soul Level',
|
|
681
|
+
xp: 'Souls',
|
|
682
|
+
tasksCompleted: 'Tasks Completed',
|
|
683
|
+
bossesDefeated: 'Bosses Felled',
|
|
684
|
+
currentStreak: 'Ember Streak',
|
|
685
|
+
longestStreak: 'Longest Journey',
|
|
686
|
+
inventory: 'Inventory',
|
|
687
|
+
},
|
|
688
|
+
};
|
|
689
|
+
|
|
504
690
|
// Map preset names to dictionaries
|
|
505
691
|
export const DICTIONARIES: Record<string, Dictionary> = {
|
|
506
692
|
default: DEFAULT_DICTIONARY,
|
|
@@ -510,6 +696,9 @@ export const DICTIONARIES: Record<string, Dictionary> = {
|
|
|
510
696
|
cyberpunk: CYBERPUNK_DICTIONARY,
|
|
511
697
|
pirate: PIRATE_DICTIONARY,
|
|
512
698
|
western: WESTERN_DICTIONARY,
|
|
699
|
+
warhammer: WARHAMMER_DICTIONARY,
|
|
700
|
+
ninja: NINJA_DICTIONARY,
|
|
701
|
+
darksouls: DARKSOULS_DICTIONARY,
|
|
513
702
|
};
|
|
514
703
|
|
|
515
704
|
// 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,
|
|
1219
|
+
Presets: fantasy, space, starwars, cyberpunk, pirate,
|
|
1220
|
+
warhammer, ninja, 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, darksouls...',
|
|
24
24
|
' Config: init, config -R="<rules>"',
|
|
25
25
|
'',
|
|
26
26
|
' TAB autocomplete, | pbcopy to copy',
|