simple counters
Browse files- src/lib/battle-engine/BattleEngine.ts +2 -5
- src/lib/battle-engine/advanced-effects.test.ts +3 -5
- src/lib/battle-engine/missing-features.test.ts +0 -1
- src/lib/battle-engine/tempest-wraith.test.ts +0 -1
- src/lib/battle-engine/types.ts +0 -1
- src/lib/components/Piclets/AbilityDisplay.svelte +1 -1
- src/lib/components/Piclets/MoveDisplay.svelte +1 -1
src/lib/battle-engine/BattleEngine.ts
CHANGED
|
@@ -1225,13 +1225,12 @@ export class BattleEngine {
|
|
| 1225 |
}
|
| 1226 |
}
|
| 1227 |
|
| 1228 |
-
private processCounterEffect(effect: {
|
| 1229 |
// Store counter effect for later processing when the user is attacked
|
| 1230 |
// Counter effects should persist until triggered, not expire after 1 turn
|
| 1231 |
attacker.temporaryEffects.push({
|
| 1232 |
effect: {
|
| 1233 |
type: 'counter',
|
| 1234 |
-
counterType: effect.counterType,
|
| 1235 |
strength: effect.strength
|
| 1236 |
} as any,
|
| 1237 |
duration: 5 // Persist for multiple turns until triggered
|
|
@@ -1376,9 +1375,7 @@ export class BattleEngine {
|
|
| 1376 |
const tempEffect = target.temporaryEffects[i];
|
| 1377 |
if (tempEffect.effect.type === 'counter') {
|
| 1378 |
const counterEffect = tempEffect.effect as any;
|
| 1379 |
-
const shouldCounter =
|
| 1380 |
-
(counterEffect.counterType === 'physical' && move.flags.includes('contact')) ||
|
| 1381 |
-
(counterEffect.counterType === 'special' && !move.flags.includes('contact'));
|
| 1382 |
|
| 1383 |
if (shouldCounter) {
|
| 1384 |
// Calculate counter damage
|
|
|
|
| 1225 |
}
|
| 1226 |
}
|
| 1227 |
|
| 1228 |
+
private processCounterEffect(effect: { strength: string }, attacker: BattlePiclet, _target: BattlePiclet): void {
|
| 1229 |
// Store counter effect for later processing when the user is attacked
|
| 1230 |
// Counter effects should persist until triggered, not expire after 1 turn
|
| 1231 |
attacker.temporaryEffects.push({
|
| 1232 |
effect: {
|
| 1233 |
type: 'counter',
|
|
|
|
| 1234 |
strength: effect.strength
|
| 1235 |
} as any,
|
| 1236 |
duration: 5 // Persist for multiple turns until triggered
|
|
|
|
| 1375 |
const tempEffect = target.temporaryEffects[i];
|
| 1376 |
if (tempEffect.effect.type === 'counter') {
|
| 1377 |
const counterEffect = tempEffect.effect as any;
|
| 1378 |
+
const shouldCounter = true; // All counters now work against any attack type
|
|
|
|
|
|
|
| 1379 |
|
| 1380 |
if (shouldCounter) {
|
| 1381 |
// Calculate counter damage
|
src/lib/battle-engine/advanced-effects.test.ts
CHANGED
|
@@ -332,15 +332,14 @@ describe('Advanced Battle Effects - TDD Implementation', () => {
|
|
| 332 |
effects: [
|
| 333 |
{
|
| 334 |
type: 'counter',
|
| 335 |
-
counterType: 'physical',
|
| 336 |
strength: 'strong'
|
| 337 |
}
|
| 338 |
]
|
| 339 |
};
|
| 340 |
|
| 341 |
-
// Test would verify counter moves work against
|
| 342 |
expect(counterMove.effects[0].type).toBe('counter');
|
| 343 |
-
expect(counterMove.effects[0].
|
| 344 |
});
|
| 345 |
|
| 346 |
it('should handle special counter moves', () => {
|
|
@@ -355,13 +354,12 @@ describe('Advanced Battle Effects - TDD Implementation', () => {
|
|
| 355 |
effects: [
|
| 356 |
{
|
| 357 |
type: 'counter',
|
| 358 |
-
counterType: 'special',
|
| 359 |
strength: 'strong'
|
| 360 |
}
|
| 361 |
]
|
| 362 |
};
|
| 363 |
|
| 364 |
-
expect(specialCounterMove.effects[0].
|
| 365 |
});
|
| 366 |
});
|
| 367 |
|
|
|
|
| 332 |
effects: [
|
| 333 |
{
|
| 334 |
type: 'counter',
|
|
|
|
| 335 |
strength: 'strong'
|
| 336 |
}
|
| 337 |
]
|
| 338 |
};
|
| 339 |
|
| 340 |
+
// Test would verify counter moves work against any attacks
|
| 341 |
expect(counterMove.effects[0].type).toBe('counter');
|
| 342 |
+
expect(counterMove.effects[0].strength).toBe('strong');
|
| 343 |
});
|
| 344 |
|
| 345 |
it('should handle special counter moves', () => {
|
|
|
|
| 354 |
effects: [
|
| 355 |
{
|
| 356 |
type: 'counter',
|
|
|
|
| 357 |
strength: 'strong'
|
| 358 |
}
|
| 359 |
]
|
| 360 |
};
|
| 361 |
|
| 362 |
+
expect(specialCounterMove.effects[0].strength).toBe('strong');
|
| 363 |
});
|
| 364 |
});
|
| 365 |
|
src/lib/battle-engine/missing-features.test.ts
CHANGED
|
@@ -304,7 +304,6 @@ describe('Missing Battle System Features', () => {
|
|
| 304 |
effects: [
|
| 305 |
{
|
| 306 |
type: 'counter',
|
| 307 |
-
counterType: 'physical',
|
| 308 |
strength: 'strong'
|
| 309 |
}
|
| 310 |
]
|
|
|
|
| 304 |
effects: [
|
| 305 |
{
|
| 306 |
type: 'counter',
|
|
|
|
| 307 |
strength: 'strong'
|
| 308 |
}
|
| 309 |
]
|
src/lib/battle-engine/tempest-wraith.test.ts
CHANGED
|
@@ -464,7 +464,6 @@ describe('Complete Tempest Wraith Implementation', () => {
|
|
| 464 |
effects: [
|
| 465 |
{
|
| 466 |
type: 'counter',
|
| 467 |
-
counterType: 'any',
|
| 468 |
strength: 'strong'
|
| 469 |
}
|
| 470 |
]
|
|
|
|
| 464 |
effects: [
|
| 465 |
{
|
| 466 |
type: 'counter',
|
|
|
|
| 467 |
strength: 'strong'
|
| 468 |
}
|
| 469 |
]
|
src/lib/battle-engine/types.ts
CHANGED
|
@@ -105,7 +105,6 @@ export interface FieldEffect {
|
|
| 105 |
|
| 106 |
export interface CounterEffect {
|
| 107 |
type: 'counter';
|
| 108 |
-
counterType: 'physical' | 'special' | 'any';
|
| 109 |
strength: CounterStrength;
|
| 110 |
condition?: EffectCondition;
|
| 111 |
}
|
|
|
|
| 105 |
|
| 106 |
export interface CounterEffect {
|
| 107 |
type: 'counter';
|
|
|
|
| 108 |
strength: CounterStrength;
|
| 109 |
condition?: EffectCondition;
|
| 110 |
}
|
src/lib/components/Piclets/AbilityDisplay.svelte
CHANGED
|
@@ -104,7 +104,7 @@
|
|
| 104 |
if (effect.stackable) desc += ` (stackable)`;
|
| 105 |
break;
|
| 106 |
case 'counter':
|
| 107 |
-
desc += `
|
| 108 |
break;
|
| 109 |
case 'removeStatus':
|
| 110 |
desc += ` - ${effect.status}`;
|
|
|
|
| 104 |
if (effect.stackable) desc += ` (stackable)`;
|
| 105 |
break;
|
| 106 |
case 'counter':
|
| 107 |
+
desc += `(${effect.strength})`;
|
| 108 |
break;
|
| 109 |
case 'removeStatus':
|
| 110 |
desc += ` - ${effect.status}`;
|
src/lib/components/Piclets/MoveDisplay.svelte
CHANGED
|
@@ -118,7 +118,7 @@
|
|
| 118 |
if (effect.amount) desc += ` ${effect.amount}`;
|
| 119 |
break;
|
| 120 |
case 'counter':
|
| 121 |
-
desc += `
|
| 122 |
break;
|
| 123 |
case 'removeStatus':
|
| 124 |
desc += ` - ${effect.status}`;
|
|
|
|
| 118 |
if (effect.amount) desc += ` ${effect.amount}`;
|
| 119 |
break;
|
| 120 |
case 'counter':
|
| 121 |
+
desc += ` (${effect.strength})`;
|
| 122 |
break;
|
| 123 |
case 'removeStatus':
|
| 124 |
desc += ` - ${effect.status}`;
|