pet-terminal 1.0.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/LICENSE +21 -0
- package/README.md +268 -0
- package/dist/commands/care.d.ts +3 -0
- package/dist/commands/care.d.ts.map +1 -0
- package/dist/commands/care.js +103 -0
- package/dist/commands/care.js.map +1 -0
- package/dist/commands/clean.d.ts +3 -0
- package/dist/commands/clean.d.ts.map +1 -0
- package/dist/commands/clean.js +105 -0
- package/dist/commands/clean.js.map +1 -0
- package/dist/commands/feed.d.ts +3 -0
- package/dist/commands/feed.d.ts.map +1 -0
- package/dist/commands/feed.js +106 -0
- package/dist/commands/feed.js.map +1 -0
- package/dist/commands/git.d.ts +3 -0
- package/dist/commands/git.d.ts.map +1 -0
- package/dist/commands/git.js +138 -0
- package/dist/commands/git.js.map +1 -0
- package/dist/commands/heal.d.ts +3 -0
- package/dist/commands/heal.d.ts.map +1 -0
- package/dist/commands/heal.js +106 -0
- package/dist/commands/heal.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +89 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/inventory.d.ts +3 -0
- package/dist/commands/inventory.d.ts.map +1 -0
- package/dist/commands/inventory.js +113 -0
- package/dist/commands/inventory.js.map +1 -0
- package/dist/commands/play.d.ts +3 -0
- package/dist/commands/play.d.ts.map +1 -0
- package/dist/commands/play.js +110 -0
- package/dist/commands/play.js.map +1 -0
- package/dist/commands/shop.d.ts +3 -0
- package/dist/commands/shop.d.ts.map +1 -0
- package/dist/commands/shop.js +197 -0
- package/dist/commands/shop.js.map +1 -0
- package/dist/commands/sleep.d.ts +3 -0
- package/dist/commands/sleep.d.ts.map +1 -0
- package/dist/commands/sleep.js +48 -0
- package/dist/commands/sleep.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +98 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/sync.d.ts +3 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +66 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/tutorial.d.ts +3 -0
- package/dist/commands/tutorial.d.ts.map +1 -0
- package/dist/commands/tutorial.js +210 -0
- package/dist/commands/tutorial.js.map +1 -0
- package/dist/core/auto-care.d.ts +63 -0
- package/dist/core/auto-care.d.ts.map +1 -0
- package/dist/core/auto-care.js +295 -0
- package/dist/core/auto-care.js.map +1 -0
- package/dist/core/config.d.ts +89 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +195 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/database.d.ts +29 -0
- package/dist/core/database.d.ts.map +1 -0
- package/dist/core/database.js +81 -0
- package/dist/core/database.js.map +1 -0
- package/dist/core/inventory.d.ts +63 -0
- package/dist/core/inventory.d.ts.map +1 -0
- package/dist/core/inventory.js +140 -0
- package/dist/core/inventory.js.map +1 -0
- package/dist/core/level-system.d.ts +32 -0
- package/dist/core/level-system.d.ts.map +1 -0
- package/dist/core/level-system.js +76 -0
- package/dist/core/level-system.js.map +1 -0
- package/dist/core/pet.d.ts +123 -0
- package/dist/core/pet.d.ts.map +1 -0
- package/dist/core/pet.js +781 -0
- package/dist/core/pet.js.map +1 -0
- package/dist/core/shop.d.ts +93 -0
- package/dist/core/shop.d.ts.map +1 -0
- package/dist/core/shop.js +205 -0
- package/dist/core/shop.js.map +1 -0
- package/dist/core/time-decay.d.ts +30 -0
- package/dist/core/time-decay.d.ts.map +1 -0
- package/dist/core/time-decay.js +149 -0
- package/dist/core/time-decay.js.map +1 -0
- package/dist/core/welcome.d.ts +31 -0
- package/dist/core/welcome.d.ts.map +1 -0
- package/dist/core/welcome.js +180 -0
- package/dist/core/welcome.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +80 -0
- package/dist/index.js.map +1 -0
- package/dist/monitor/git-monitor.d.ts +90 -0
- package/dist/monitor/git-monitor.d.ts.map +1 -0
- package/dist/monitor/git-monitor.js +342 -0
- package/dist/monitor/git-monitor.js.map +1 -0
- package/dist/types/auto-care.d.ts +86 -0
- package/dist/types/auto-care.d.ts.map +1 -0
- package/dist/types/auto-care.js +15 -0
- package/dist/types/auto-care.js.map +1 -0
- package/dist/types/config.d.ts +42 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +24 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/git.d.ts +68 -0
- package/dist/types/git.d.ts.map +1 -0
- package/dist/types/git.js +14 -0
- package/dist/types/git.js.map +1 -0
- package/dist/types/items.d.ts +41 -0
- package/dist/types/items.d.ts.map +1 -0
- package/dist/types/items.js +286 -0
- package/dist/types/items.js.map +1 -0
- package/dist/types/pet.d.ts +42 -0
- package/dist/types/pet.d.ts.map +1 -0
- package/dist/types/pet.js +16 -0
- package/dist/types/pet.js.map +1 -0
- package/dist/types/species.d.ts +30 -0
- package/dist/types/species.d.ts.map +1 -0
- package/dist/types/species.js +164 -0
- package/dist/types/species.js.map +1 -0
- package/dist/types/stats.d.ts +22 -0
- package/dist/types/stats.d.ts.map +1 -0
- package/dist/types/stats.js +18 -0
- package/dist/types/stats.js.map +1 -0
- package/dist/types/time.d.ts +30 -0
- package/dist/types/time.d.ts.map +1 -0
- package/dist/types/time.js +79 -0
- package/dist/types/time.js.map +1 -0
- package/dist/ui/ascii-art.d.ts +4 -0
- package/dist/ui/ascii-art.d.ts.map +1 -0
- package/dist/ui/ascii-art.js +170 -0
- package/dist/ui/ascii-art.js.map +1 -0
- package/dist/ui/display.d.ts +11 -0
- package/dist/ui/display.d.ts.map +1 -0
- package/dist/ui/display.js +93 -0
- package/dist/ui/display.js.map +1 -0
- package/dist/ui/help.d.ts +17 -0
- package/dist/ui/help.d.ts.map +1 -0
- package/dist/ui/help.js +280 -0
- package/dist/ui/help.js.map +1 -0
- package/dist/ui/progress-bar.d.ts +9 -0
- package/dist/ui/progress-bar.d.ts.map +1 -0
- package/dist/ui/progress-bar.js +57 -0
- package/dist/ui/progress-bar.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.tutorialCommand = void 0;
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const readline_1 = __importDefault(require("readline"));
|
|
10
|
+
const display_1 = require("../ui/display");
|
|
11
|
+
exports.tutorialCommand = new commander_1.Command('tutorial');
|
|
12
|
+
/**
|
|
13
|
+
* Tutorial steps
|
|
14
|
+
*/
|
|
15
|
+
const TUTORIAL_STEPS = [
|
|
16
|
+
{
|
|
17
|
+
title: 'Welcome & Philosophy',
|
|
18
|
+
emoji: '🐱',
|
|
19
|
+
content: [
|
|
20
|
+
'',
|
|
21
|
+
chalk_1.default.white.bold('Welcome to Pet Terminal!'),
|
|
22
|
+
'',
|
|
23
|
+
chalk_1.default.gray('Your pet lives in your terminal and grows when you code.'),
|
|
24
|
+
'',
|
|
25
|
+
chalk_1.default.magenta('"Writing code = being with your pet"'),
|
|
26
|
+
'',
|
|
27
|
+
chalk_1.default.gray('This isn\'t a chore - it\'s a companion! Your pet gains'),
|
|
28
|
+
chalk_1.default.gray('stats automatically when you make Git commits, because'),
|
|
29
|
+
chalk_1.default.gray('they\'re happy just watching you work.'),
|
|
30
|
+
'',
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
title: 'Meet Your Pet',
|
|
35
|
+
emoji: '📊',
|
|
36
|
+
content: [
|
|
37
|
+
'',
|
|
38
|
+
chalk_1.default.white.bold('Your pet has 5 stats to monitor:'),
|
|
39
|
+
'',
|
|
40
|
+
chalk_1.default.cyan(' Hunger') + chalk_1.default.gray(' - Feed with ') + chalk_1.default.cyan('pet feed'),
|
|
41
|
+
chalk_1.default.cyan(' Happiness') + chalk_1.default.gray(' - Play with ') + chalk_1.default.cyan('pet play'),
|
|
42
|
+
chalk_1.default.cyan(' Health') + chalk_1.default.gray(' - Heal with ') + chalk_1.default.cyan('pet heal'),
|
|
43
|
+
chalk_1.default.cyan(' Cleanliness') + chalk_1.default.gray(' - Clean with ') + chalk_1.default.cyan('pet clean'),
|
|
44
|
+
chalk_1.default.cyan(' Energy') + chalk_1.default.gray(' - Sleep with ') + chalk_1.default.cyan('pet sleep'),
|
|
45
|
+
'',
|
|
46
|
+
chalk_1.default.gray('Stats decay slowly over time (days!), so don\'t worry too'),
|
|
47
|
+
chalk_1.default.gray('much about checking constantly. Your pet is designed to'),
|
|
48
|
+
chalk_1.default.gray('stay healthy for extended periods.'),
|
|
49
|
+
'',
|
|
50
|
+
],
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
title: 'Git Integration',
|
|
54
|
+
emoji: '💻',
|
|
55
|
+
content: [
|
|
56
|
+
'',
|
|
57
|
+
chalk_1.default.white.bold('This is the BEST part! Your pet LOVES watching you code.'),
|
|
58
|
+
'',
|
|
59
|
+
chalk_1.default.gray('Every Git commit gives:'),
|
|
60
|
+
chalk_1.default.cyan(' • Coins') + chalk_1.default.gray(' for the shop'),
|
|
61
|
+
chalk_1.default.cyan(' • Experience Points') + chalk_1.default.gray(' to level up'),
|
|
62
|
+
chalk_1.default.cyan(' • Stat bonuses') + chalk_1.default.gray(' (hunger +15, happiness +10)'),
|
|
63
|
+
'',
|
|
64
|
+
chalk_1.default.gray('Just run:'),
|
|
65
|
+
chalk_1.default.cyan(' pet git'),
|
|
66
|
+
'',
|
|
67
|
+
chalk_1.default.gray('Commit message prefixes affect rewards:'),
|
|
68
|
+
chalk_1.default.green(' fix/bug') + chalk_1.default.gray(' → Bug Fix ') + chalk_1.default.yellow('+10 🪙, +20 XP'),
|
|
69
|
+
chalk_1.default.green(' feat/add') + chalk_1.default.gray(' → Feature ') + chalk_1.default.yellow('+8 🪙, +15 XP'),
|
|
70
|
+
chalk_1.default.green(' refactor') + chalk_1.default.gray(' → Refactor ') + chalk_1.default.yellow('+6 🪙, +12 XP'),
|
|
71
|
+
'',
|
|
72
|
+
],
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
title: 'Shop & Inventory',
|
|
76
|
+
emoji: '🛒',
|
|
77
|
+
content: [
|
|
78
|
+
'',
|
|
79
|
+
chalk_1.default.white.bold('Earn coins from commits and spend them at the shop!'),
|
|
80
|
+
'',
|
|
81
|
+
chalk_1.default.gray('View your items:'),
|
|
82
|
+
chalk_1.default.cyan(' pet inventory') + chalk_1.default.gray(' (or ') + chalk_1.default.cyan('pet inv') + chalk_1.default.gray(')'),
|
|
83
|
+
'',
|
|
84
|
+
chalk_1.default.gray('Visit the shop:'),
|
|
85
|
+
chalk_1.default.cyan(' pet shop') + chalk_1.default.gray(' (or ') + chalk_1.default.cyan('pet store') + chalk_1.default.gray(')'),
|
|
86
|
+
'',
|
|
87
|
+
chalk_1.default.gray('Shop items:'),
|
|
88
|
+
chalk_1.default.cyan(' • Fish') + chalk_1.default.gray(' - Basic food (+20 hunger)'),
|
|
89
|
+
chalk_1.default.cyan(' • Ball') + chalk_1.default.gray(' - Toy for playing (+15 happiness)'),
|
|
90
|
+
chalk_1.default.cyan(' • Soap') + chalk_1.default.gray(' - Cleaning supplies (+20 cleanliness)'),
|
|
91
|
+
chalk_1.default.cyan(' • Medicine') + chalk_1.default.gray(' - Health restoration (+25 health)'),
|
|
92
|
+
'',
|
|
93
|
+
],
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
title: 'Tips & Tricks',
|
|
97
|
+
emoji: '💡',
|
|
98
|
+
content: [
|
|
99
|
+
'',
|
|
100
|
+
chalk_1.default.white.bold('Pro tips for a happy pet:'),
|
|
101
|
+
'',
|
|
102
|
+
chalk_1.default.gray('• Use ') + chalk_1.default.cyan('pet care') + chalk_1.default.gray(' for one-click care of all needs'),
|
|
103
|
+
chalk_1.default.gray('• Run ') + chalk_1.default.cyan('pet git') + chalk_1.default.gray(' after coding sessions'),
|
|
104
|
+
chalk_1.default.gray('• Daily commit streaks give bonus rewards!'),
|
|
105
|
+
chalk_1.default.gray('• Use ') + chalk_1.default.cyan('pet sync') + chalk_1.default.gray(' to catch up on time passed'),
|
|
106
|
+
chalk_1.default.gray('• Let your pet sleep to restore energy faster'),
|
|
107
|
+
'',
|
|
108
|
+
chalk_1.default.white.bold('Commands at a glance:'),
|
|
109
|
+
chalk_1.default.cyan(' pet init') + chalk_1.default.gray(' - Create a pet'),
|
|
110
|
+
chalk_1.default.cyan(' pet status') + chalk_1.default.gray(' - Check status'),
|
|
111
|
+
chalk_1.default.cyan(' pet care') + chalk_1.default.gray(' - Quick care'),
|
|
112
|
+
chalk_1.default.cyan(' pet git') + chalk_1.default.gray(' - Collect rewards'),
|
|
113
|
+
'',
|
|
114
|
+
chalk_1.default.magenta.bold(' That\'s it! Have fun with your new coding companion! 🐾'),
|
|
115
|
+
'',
|
|
116
|
+
],
|
|
117
|
+
},
|
|
118
|
+
];
|
|
119
|
+
/**
|
|
120
|
+
* Wait for user input
|
|
121
|
+
*/
|
|
122
|
+
function waitForContinue() {
|
|
123
|
+
return new Promise((resolve) => {
|
|
124
|
+
const rl = readline_1.default.createInterface({
|
|
125
|
+
input: process.stdin,
|
|
126
|
+
output: process.stdout,
|
|
127
|
+
});
|
|
128
|
+
rl.question(chalk_1.default.gray('[Press Enter to continue, or q to quit] '), (answer) => {
|
|
129
|
+
rl.close();
|
|
130
|
+
resolve(answer.toLowerCase() !== 'q');
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Display a tutorial step
|
|
136
|
+
*/
|
|
137
|
+
async function showStep(stepIndex) {
|
|
138
|
+
const step = TUTORIAL_STEPS[stepIndex];
|
|
139
|
+
const totalSteps = TUTORIAL_STEPS.length;
|
|
140
|
+
console.log('');
|
|
141
|
+
console.log((0, display_1.drawHeader)(`🐾 PET TERMINAL TUTORIAL`, 52));
|
|
142
|
+
console.log('');
|
|
143
|
+
// Progress indicator
|
|
144
|
+
const progress = chalk_1.default.gray(`Step ${stepIndex + 1}/${totalSteps}`);
|
|
145
|
+
const title = chalk_1.default.yellow.bold(`${step.emoji} ${step.title}`);
|
|
146
|
+
console.log(`${progress} ${title}`);
|
|
147
|
+
console.log('');
|
|
148
|
+
console.log((0, display_1.drawDivider)(52));
|
|
149
|
+
// Step content
|
|
150
|
+
for (const line of step.content) {
|
|
151
|
+
console.log(line);
|
|
152
|
+
}
|
|
153
|
+
console.log((0, display_1.drawDivider)(52));
|
|
154
|
+
console.log('');
|
|
155
|
+
// Wait for user input
|
|
156
|
+
return await waitForContinue();
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Show complete tutorial
|
|
160
|
+
*/
|
|
161
|
+
async function showTutorial() {
|
|
162
|
+
// Show welcome
|
|
163
|
+
console.log('');
|
|
164
|
+
console.log(chalk_1.default.cyan('╔══════════════════════════════════════════════════════════════╗'));
|
|
165
|
+
console.log(chalk_1.default.cyan('║') + chalk_1.default.yellow.bold(' 🐾 PET TERMINAL TUTORIAL 🐾 ') + chalk_1.default.cyan('║'));
|
|
166
|
+
console.log(chalk_1.default.cyan('╚══════════════════════════════════════════════════════════════╝'));
|
|
167
|
+
console.log('');
|
|
168
|
+
console.log(chalk_1.default.gray('Welcome to Pet Terminal! Let\'s get you started.'));
|
|
169
|
+
console.log('');
|
|
170
|
+
console.log((0, display_1.drawDivider)(52));
|
|
171
|
+
console.log('');
|
|
172
|
+
const shouldStart = await waitForContinue();
|
|
173
|
+
if (!shouldStart) {
|
|
174
|
+
console.log('');
|
|
175
|
+
console.log(chalk_1.default.gray('Tutorial cancelled. Run "pet tutorial" anytime to continue.'));
|
|
176
|
+
console.log('');
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
// Show each step
|
|
180
|
+
for (let i = 0; i < TUTORIAL_STEPS.length; i++) {
|
|
181
|
+
const shouldContinue = await showStep(i);
|
|
182
|
+
if (!shouldContinue) {
|
|
183
|
+
console.log('');
|
|
184
|
+
console.log(chalk_1.default.gray('Tutorial paused. Run "pet tutorial" to continue from the beginning.'));
|
|
185
|
+
console.log('');
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
// Tutorial complete
|
|
190
|
+
console.log('');
|
|
191
|
+
console.log(chalk_1.default.cyan('╔══════════════════════════════════════════════════════════════╗'));
|
|
192
|
+
console.log(chalk_1.default.cyan('║') + chalk_1.default.green.bold(' 🎉 Tutorial Complete! ') + chalk_1.default.cyan('║'));
|
|
193
|
+
console.log(chalk_1.default.cyan('╚══════════════════════════════════════════════════════════════╝'));
|
|
194
|
+
console.log('');
|
|
195
|
+
console.log(chalk_1.default.magenta(' You\'re all set! Enjoy your new coding companion! 🐾'));
|
|
196
|
+
console.log('');
|
|
197
|
+
console.log(chalk_1.default.gray('Quick reference:'));
|
|
198
|
+
console.log(chalk_1.default.cyan(' pet --help') + chalk_1.default.gray(' - Show all commands'));
|
|
199
|
+
console.log(chalk_1.default.cyan(' pet status') + chalk_1.default.gray(' - Check your pet'));
|
|
200
|
+
console.log(chalk_1.default.cyan(' pet git') + chalk_1.default.gray(' - Collect rewards'));
|
|
201
|
+
console.log('');
|
|
202
|
+
}
|
|
203
|
+
exports.tutorialCommand
|
|
204
|
+
.alias('help')
|
|
205
|
+
.alias('guide')
|
|
206
|
+
.description('Show the getting started tutorial')
|
|
207
|
+
.action(async () => {
|
|
208
|
+
await showTutorial();
|
|
209
|
+
});
|
|
210
|
+
//# sourceMappingURL=tutorial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tutorial.js","sourceRoot":"","sources":["../../src/commands/tutorial.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Pet } from './pet';
|
|
2
|
+
import { PetStats } from '../types/stats';
|
|
3
|
+
import { CareNeed, CareResult, AutoPurchaseRule, AutoPurchaseResult, AutoCareConfig } from '../types/auto-care';
|
|
4
|
+
/**
|
|
5
|
+
* Default auto-care configuration
|
|
6
|
+
*/
|
|
7
|
+
export declare const DEFAULT_AUTO_CARE_CONFIG: AutoCareConfig;
|
|
8
|
+
/**
|
|
9
|
+
* Auto-purchase rules
|
|
10
|
+
*/
|
|
11
|
+
export declare const AUTO_PURCHASE_RULES: AutoPurchaseRule[];
|
|
12
|
+
/**
|
|
13
|
+
* Auto-Care system for managing pet care automatically
|
|
14
|
+
*/
|
|
15
|
+
export declare class AutoCare {
|
|
16
|
+
private config;
|
|
17
|
+
constructor(config?: Partial<AutoCareConfig>);
|
|
18
|
+
/**
|
|
19
|
+
* Assess pet's current needs based on stats
|
|
20
|
+
*/
|
|
21
|
+
assessNeeds(pet: Pet, stats: PetStats): CareNeed[];
|
|
22
|
+
/**
|
|
23
|
+
* Execute one-click care - perform all needed actions
|
|
24
|
+
*/
|
|
25
|
+
oneClickCare(pet: Pet): Promise<CareResult>;
|
|
26
|
+
/**
|
|
27
|
+
* Perform a single care action
|
|
28
|
+
*/
|
|
29
|
+
private performCareAction;
|
|
30
|
+
/**
|
|
31
|
+
* Find alternative item for a care action
|
|
32
|
+
*/
|
|
33
|
+
private findAlternativeItem;
|
|
34
|
+
/**
|
|
35
|
+
* Auto-purchase items when low on stock
|
|
36
|
+
*/
|
|
37
|
+
autoPurchase(pet: Pet): Promise<AutoPurchaseResult>;
|
|
38
|
+
/**
|
|
39
|
+
* Check if auto-purchase can be afforded
|
|
40
|
+
*/
|
|
41
|
+
canAffordAutoCare(pet: Pet): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Get current auto-care configuration
|
|
44
|
+
*/
|
|
45
|
+
getConfig(): AutoCareConfig;
|
|
46
|
+
/**
|
|
47
|
+
* Update auto-care configuration
|
|
48
|
+
*/
|
|
49
|
+
updateConfig(updates: Partial<AutoCareConfig>): void;
|
|
50
|
+
/**
|
|
51
|
+
* Enable or disable auto-purchase
|
|
52
|
+
*/
|
|
53
|
+
setEnabled(enabled: boolean): void;
|
|
54
|
+
/**
|
|
55
|
+
* Get suggestions based on pet state
|
|
56
|
+
*/
|
|
57
|
+
getSuggestions(pet: Pet): string[];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Create a default AutoCare instance
|
|
61
|
+
*/
|
|
62
|
+
export declare const createAutoCare: (config?: Partial<AutoCareConfig>) => AutoCare;
|
|
63
|
+
//# sourceMappingURL=auto-care.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-care.d.ts","sourceRoot":"","sources":["../../src/core/auto-care.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAEL,QAAQ,EAER,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACf,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,cAUtC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,gBAAgB,EAKjD,CAAC;AAEF;;GAEG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM;IAIhD;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,GAAG,QAAQ,EAAE;IAiElD;;OAEG;IACG,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC;IA2BjD;;OAEG;YACW,iBAAiB;IA+C/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAsB3B;;OAEG;IACG,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA0CzD;;OAEG;IACH,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO;IAcpC;;OAEG;IACH,SAAS,IAAI,cAAc;IAI3B;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAIpD;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIlC;;OAEG;IACH,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE;CAiCnC;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,SAAS,OAAO,CAAC,cAAc,CAAC,KAAG,QAEjE,CAAC"}
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createAutoCare = exports.AutoCare = exports.AUTO_PURCHASE_RULES = exports.DEFAULT_AUTO_CARE_CONFIG = void 0;
|
|
4
|
+
const items_1 = require("../types/items");
|
|
5
|
+
const auto_care_1 = require("../types/auto-care");
|
|
6
|
+
/**
|
|
7
|
+
* Default auto-care configuration
|
|
8
|
+
*/
|
|
9
|
+
exports.DEFAULT_AUTO_CARE_CONFIG = {
|
|
10
|
+
enabled: false,
|
|
11
|
+
autoFeed: false,
|
|
12
|
+
thresholds: {
|
|
13
|
+
hunger: 70,
|
|
14
|
+
happiness: 60,
|
|
15
|
+
cleanliness: 60,
|
|
16
|
+
energy: 50,
|
|
17
|
+
health: 70,
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Auto-purchase rules
|
|
22
|
+
*/
|
|
23
|
+
exports.AUTO_PURCHASE_RULES = [
|
|
24
|
+
{ itemId: 'fish', itemName: 'Fresh Fish', minQuantity: 2, maxCost: 20, itemPrice: 10 },
|
|
25
|
+
{ itemId: 'ball', itemName: 'Tennis Ball', minQuantity: 1, maxCost: 25, itemPrice: 15 },
|
|
26
|
+
{ itemId: 'soap', itemName: 'Pet Soap', minQuantity: 1, maxCost: 15, itemPrice: 10 },
|
|
27
|
+
{ itemId: 'medicine', itemName: 'Medicine', minQuantity: 1, maxCost: 35, itemPrice: 30 },
|
|
28
|
+
];
|
|
29
|
+
/**
|
|
30
|
+
* Auto-Care system for managing pet care automatically
|
|
31
|
+
*/
|
|
32
|
+
class AutoCare {
|
|
33
|
+
constructor(config = {}) {
|
|
34
|
+
this.config = { ...exports.DEFAULT_AUTO_CARE_CONFIG, ...config };
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Assess pet's current needs based on stats
|
|
38
|
+
*/
|
|
39
|
+
assessNeeds(pet, stats) {
|
|
40
|
+
const needs = [];
|
|
41
|
+
const data = pet.getData();
|
|
42
|
+
// Don't care if sleeping (unless waking up)
|
|
43
|
+
if (data.isSleeping) {
|
|
44
|
+
return [];
|
|
45
|
+
}
|
|
46
|
+
// Hunger - highest priority
|
|
47
|
+
if (stats.hunger < this.config.thresholds.hunger) {
|
|
48
|
+
const fishItem = (0, items_1.getItem)('fish');
|
|
49
|
+
needs.push({
|
|
50
|
+
stat: 'hunger',
|
|
51
|
+
threshold: this.config.thresholds.hunger,
|
|
52
|
+
action: auto_care_1.CareAction.FEED,
|
|
53
|
+
itemId: 'fish',
|
|
54
|
+
itemName: fishItem?.name || 'Fresh Fish',
|
|
55
|
+
priority: 100,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
// Health - critical priority
|
|
59
|
+
if (stats.health < this.config.thresholds.health) {
|
|
60
|
+
const medicineItem = (0, items_1.getItem)('medicine');
|
|
61
|
+
needs.push({
|
|
62
|
+
stat: 'health',
|
|
63
|
+
threshold: this.config.thresholds.health,
|
|
64
|
+
action: auto_care_1.CareAction.HEAL,
|
|
65
|
+
itemId: 'medicine',
|
|
66
|
+
itemName: medicineItem?.name || 'Medicine',
|
|
67
|
+
priority: 90,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
// Happiness - medium priority
|
|
71
|
+
if (stats.happiness < this.config.thresholds.happiness) {
|
|
72
|
+
const ballItem = (0, items_1.getItem)('ball');
|
|
73
|
+
needs.push({
|
|
74
|
+
stat: 'happiness',
|
|
75
|
+
threshold: this.config.thresholds.happiness,
|
|
76
|
+
action: auto_care_1.CareAction.PLAY,
|
|
77
|
+
itemId: 'ball',
|
|
78
|
+
itemName: ballItem?.name || 'Tennis Ball',
|
|
79
|
+
priority: 70,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
// Cleanliness - medium priority
|
|
83
|
+
if (stats.cleanliness < this.config.thresholds.cleanliness) {
|
|
84
|
+
const soapItem = (0, items_1.getItem)('soap');
|
|
85
|
+
needs.push({
|
|
86
|
+
stat: 'cleanliness',
|
|
87
|
+
threshold: this.config.thresholds.cleanliness,
|
|
88
|
+
action: auto_care_1.CareAction.CLEAN,
|
|
89
|
+
itemId: 'soap',
|
|
90
|
+
itemName: soapItem?.name || 'Pet Soap',
|
|
91
|
+
priority: 60,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
// Sort by priority (highest first)
|
|
95
|
+
return needs.sort((a, b) => b.priority - a.priority);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Execute one-click care - perform all needed actions
|
|
99
|
+
*/
|
|
100
|
+
async oneClickCare(pet) {
|
|
101
|
+
const statsBefore = { ...pet.getData().stats };
|
|
102
|
+
const actionsTaken = [];
|
|
103
|
+
let itemsUsed = 0;
|
|
104
|
+
const needs = this.assessNeeds(pet, statsBefore);
|
|
105
|
+
for (const need of needs) {
|
|
106
|
+
const result = await this.performCareAction(pet, need);
|
|
107
|
+
actionsTaken.push(result);
|
|
108
|
+
if (result.success) {
|
|
109
|
+
itemsUsed++;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
const statsAfter = { ...pet.getData().stats };
|
|
113
|
+
return {
|
|
114
|
+
success: actionsTaken.some((a) => a.success),
|
|
115
|
+
actionsTaken,
|
|
116
|
+
statsBefore,
|
|
117
|
+
statsAfter,
|
|
118
|
+
coinsSpent: 0,
|
|
119
|
+
itemsUsed,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Perform a single care action
|
|
124
|
+
*/
|
|
125
|
+
async performCareAction(pet, need) {
|
|
126
|
+
const inventory = pet.getInventory();
|
|
127
|
+
const statBefore = pet.getData().stats[need.stat];
|
|
128
|
+
// Check if we have the required item
|
|
129
|
+
const hasItem = inventory.hasItem(need.itemId);
|
|
130
|
+
if (!hasItem) {
|
|
131
|
+
// Try alternative items
|
|
132
|
+
const alternative = this.findAlternativeItem(need.action, inventory);
|
|
133
|
+
if (alternative) {
|
|
134
|
+
const result = pet.useItem(alternative);
|
|
135
|
+
const statAfter = pet.getData().stats[need.stat];
|
|
136
|
+
return {
|
|
137
|
+
action: need.action,
|
|
138
|
+
itemId: alternative,
|
|
139
|
+
itemName: (0, items_1.getItem)(alternative)?.name || alternative,
|
|
140
|
+
success: result.success,
|
|
141
|
+
statChanges: [{ stat: need.stat, from: statBefore, to: statAfter }],
|
|
142
|
+
reason: result.success ? undefined : result.message,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
return {
|
|
146
|
+
action: need.action,
|
|
147
|
+
itemId: need.itemId,
|
|
148
|
+
itemName: need.itemName,
|
|
149
|
+
success: false,
|
|
150
|
+
statChanges: [],
|
|
151
|
+
reason: `No ${need.itemName} available. Visit the shop!`,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
// Use the item
|
|
155
|
+
const result = pet.useItem(need.itemId);
|
|
156
|
+
const statAfter = pet.getData().stats[need.stat];
|
|
157
|
+
return {
|
|
158
|
+
action: need.action,
|
|
159
|
+
itemId: need.itemId,
|
|
160
|
+
itemName: need.itemName,
|
|
161
|
+
success: result.success,
|
|
162
|
+
statChanges: [{ stat: need.stat, from: statBefore, to: statAfter }],
|
|
163
|
+
reason: result.success ? undefined : result.message,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Find alternative item for a care action
|
|
168
|
+
*/
|
|
169
|
+
findAlternativeItem(action, inventory) {
|
|
170
|
+
const alternatives = {
|
|
171
|
+
[auto_care_1.CareAction.FEED]: { type: items_1.ItemType.FOOD, fallbacks: ['premium_food', 'treat'] },
|
|
172
|
+
[auto_care_1.CareAction.PLAY]: { type: items_1.ItemType.TOY, fallbacks: ['toy'] },
|
|
173
|
+
[auto_care_1.CareAction.CLEAN]: { type: items_1.ItemType.CLEANING, fallbacks: ['shampoo'] },
|
|
174
|
+
[auto_care_1.CareAction.HEAL]: { type: items_1.ItemType.MEDICINE, fallbacks: ['bandage'] },
|
|
175
|
+
[auto_care_1.CareAction.NONE]: { type: items_1.ItemType.FOOD, fallbacks: [] },
|
|
176
|
+
};
|
|
177
|
+
const config = alternatives[action];
|
|
178
|
+
if (!config)
|
|
179
|
+
return null;
|
|
180
|
+
// Try fallbacks in order
|
|
181
|
+
for (const itemId of config.fallbacks) {
|
|
182
|
+
if (inventory.hasItem(itemId)) {
|
|
183
|
+
return itemId;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Auto-purchase items when low on stock
|
|
190
|
+
*/
|
|
191
|
+
async autoPurchase(pet) {
|
|
192
|
+
if (!this.config.enabled) {
|
|
193
|
+
return { purchased: false, items: [], totalCost: 0 };
|
|
194
|
+
}
|
|
195
|
+
const coins = pet.getCoins();
|
|
196
|
+
const inventory = pet.getInventory();
|
|
197
|
+
const purchases = [];
|
|
198
|
+
let totalCost = 0;
|
|
199
|
+
for (const rule of exports.AUTO_PURCHASE_RULES) {
|
|
200
|
+
const currentQuantity = inventory.getItemQuantity(rule.itemId);
|
|
201
|
+
if (currentQuantity < rule.minQuantity && coins >= rule.maxCost) {
|
|
202
|
+
const quantityToBuy = Math.min(Math.floor((coins - totalCost) / rule.itemPrice), rule.minQuantity * 2);
|
|
203
|
+
if (quantityToBuy > 0) {
|
|
204
|
+
const cost = quantityToBuy * rule.itemPrice;
|
|
205
|
+
if (pet.spendCoins(cost)) {
|
|
206
|
+
pet.addItem(rule.itemId, quantityToBuy);
|
|
207
|
+
purchases.push({
|
|
208
|
+
itemId: rule.itemId,
|
|
209
|
+
itemName: rule.itemName,
|
|
210
|
+
quantity: quantityToBuy,
|
|
211
|
+
cost,
|
|
212
|
+
});
|
|
213
|
+
totalCost += cost;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return {
|
|
219
|
+
purchased: purchases.length > 0,
|
|
220
|
+
items: purchases,
|
|
221
|
+
totalCost,
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Check if auto-purchase can be afforded
|
|
226
|
+
*/
|
|
227
|
+
canAffordAutoCare(pet) {
|
|
228
|
+
const coins = pet.getCoins();
|
|
229
|
+
const inventory = pet.getInventory();
|
|
230
|
+
for (const rule of exports.AUTO_PURCHASE_RULES) {
|
|
231
|
+
const currentQuantity = inventory.getItemQuantity(rule.itemId);
|
|
232
|
+
if (currentQuantity < rule.minQuantity && coins < rule.maxCost) {
|
|
233
|
+
return false;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return true;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Get current auto-care configuration
|
|
240
|
+
*/
|
|
241
|
+
getConfig() {
|
|
242
|
+
return { ...this.config };
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Update auto-care configuration
|
|
246
|
+
*/
|
|
247
|
+
updateConfig(updates) {
|
|
248
|
+
this.config = { ...this.config, ...updates };
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Enable or disable auto-purchase
|
|
252
|
+
*/
|
|
253
|
+
setEnabled(enabled) {
|
|
254
|
+
this.config.enabled = enabled;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Get suggestions based on pet state
|
|
258
|
+
*/
|
|
259
|
+
getSuggestions(pet) {
|
|
260
|
+
const suggestions = [];
|
|
261
|
+
const data = pet.getData();
|
|
262
|
+
const stats = data.stats;
|
|
263
|
+
const coins = pet.getCoins();
|
|
264
|
+
const inventory = pet.getInventory();
|
|
265
|
+
// Check if pet needs care
|
|
266
|
+
if (pet.needsCare()) {
|
|
267
|
+
suggestions.push("💡 Use 'pet care' for one-click care");
|
|
268
|
+
}
|
|
269
|
+
// Check if coins are plentiful but inventory is low
|
|
270
|
+
const fishQty = inventory.getItemQuantity('fish');
|
|
271
|
+
const ballQty = inventory.getItemQuantity('ball');
|
|
272
|
+
const soapQty = inventory.getItemQuantity('soap');
|
|
273
|
+
if (coins > 100 && (fishQty < 2 || ballQty < 1 || soapQty < 1)) {
|
|
274
|
+
suggestions.push("💡 Coins plentiful, visit shop: 'pet shop'");
|
|
275
|
+
}
|
|
276
|
+
// Check git streak
|
|
277
|
+
if (pet.getGitStreak() === 0 && pet.getGitCommitCount() === 0) {
|
|
278
|
+
suggestions.push("💡 Make git commits to improve pet stats!");
|
|
279
|
+
}
|
|
280
|
+
// Check if pet is sleeping
|
|
281
|
+
if (data.isSleeping && stats.energy < 80) {
|
|
282
|
+
suggestions.push("💡 Let your pet sleep to restore energy");
|
|
283
|
+
}
|
|
284
|
+
return suggestions;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
exports.AutoCare = AutoCare;
|
|
288
|
+
/**
|
|
289
|
+
* Create a default AutoCare instance
|
|
290
|
+
*/
|
|
291
|
+
const createAutoCare = (config) => {
|
|
292
|
+
return new AutoCare(config);
|
|
293
|
+
};
|
|
294
|
+
exports.createAutoCare = createAutoCare;
|
|
295
|
+
//# sourceMappingURL=auto-care.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-care.js","sourceRoot":"","sources":["../../src/core/auto-care.ts"],"names":[],"mappings":"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"}
|