Fraser's picture
add battle engine
1ecc382
/**
* Test data for battle engine testing
* Contains example Piclets and moves following the design document
*/
import {
PicletDefinition,
Move,
BaseStats,
SpecialAbility,
AttackType,
PicletType
} from './types';
// Example base stats for different tiers
export const LOW_TIER_STATS: BaseStats = {
hp: 80,
attack: 65,
defense: 60,
speed: 55
};
export const MEDIUM_TIER_STATS: BaseStats = {
hp: 100,
attack: 80,
defense: 75,
speed: 70
};
export const HIGH_TIER_STATS: BaseStats = {
hp: 120,
attack: 100,
defense: 90,
speed: 85
};
// Example moves following the design document
export const BASIC_TACKLE: Move = {
name: "Tackle",
type: AttackType.NORMAL,
power: 40,
accuracy: 100,
pp: 35,
priority: 0,
flags: ['contact'],
effects: [{
type: 'damage',
target: 'opponent',
amount: 'normal'
}]
};
export const FLAME_BURST: Move = {
name: "Flame Burst",
type: AttackType.SPACE,
power: 70,
accuracy: 100,
pp: 15,
priority: 0,
flags: ['explosive'],
effects: [{
type: 'damage',
target: 'opponent',
amount: 'normal'
}]
};
export const HEALING_LIGHT: Move = {
name: "Healing Light",
type: AttackType.SPACE,
power: 0,
accuracy: 100,
pp: 10,
priority: 0,
flags: [],
effects: [{
type: 'heal',
target: 'self',
amount: 'medium'
}]
};
export const POWER_UP: Move = {
name: "Power Up",
type: AttackType.NORMAL,
power: 0,
accuracy: 100,
pp: 20,
priority: 0,
flags: [],
effects: [{
type: 'modifyStats',
target: 'self',
stats: { attack: 'increase' }
}]
};
export const BERSERKER_END: Move = {
name: "Berserker's End",
type: AttackType.BEAST,
power: 80,
accuracy: 90,
pp: 5,
priority: 0,
flags: ['contact', 'reckless', 'sacrifice'],
effects: [
{
type: 'damage',
target: 'opponent',
amount: 'normal'
},
{
type: 'damage',
target: 'opponent',
amount: 'strong',
condition: 'ifLowHp'
},
{
type: 'modifyStats',
target: 'self',
stats: { defense: 'greatly_decrease' },
condition: 'ifLowHp'
}
]
};
export const TOXIC_STING: Move = {
name: "Toxic Sting",
type: AttackType.BUG,
power: 30,
accuracy: 100,
pp: 20,
priority: 0,
flags: ['contact'],
effects: [
{
type: 'damage',
target: 'opponent',
amount: 'weak'
},
{
type: 'applyStatus',
target: 'opponent',
status: 'poison'
}
]
};
// Example special abilities
export const REGENERATOR: SpecialAbility = {
name: "Regenerator",
description: "Restores HP when switching out",
triggers: [{
event: "onSwitchOut",
effects: [{
type: 'heal',
target: 'self',
amount: 'small'
}]
}]
};
export const FLAME_BODY: SpecialAbility = {
name: "Flame Body",
description: "Contact moves may burn the attacker",
triggers: [{
event: "onContactDamage",
condition: 'ifLucky50',
effects: [{
type: 'applyStatus',
target: 'attacker',
status: 'burn'
}]
}]
};
export const SPEED_BOOST: SpecialAbility = {
name: "Speed Boost",
description: "Speed increases each turn",
triggers: [{
event: "onTurnEnd",
effects: [{
type: 'modifyStats',
target: 'self',
stats: { speed: 'increase' }
}]
}]
};
// Example Piclet definitions
export const STELLAR_WOLF: PicletDefinition = {
name: "Stellar Wolf",
description: "A cosmic predator that hunts among the stars",
tier: 'medium',
primaryType: PicletType.SPACE,
secondaryType: PicletType.BEAST,
baseStats: MEDIUM_TIER_STATS,
nature: "Brave",
specialAbility: FLAME_BODY,
movepool: [BASIC_TACKLE, FLAME_BURST, HEALING_LIGHT, POWER_UP]
};
export const TOXIC_CRAWLER: PicletDefinition = {
name: "Toxic Crawler",
description: "A venomous arthropod with deadly precision",
tier: 'low',
primaryType: PicletType.BUG,
baseStats: LOW_TIER_STATS,
nature: "Careful",
specialAbility: SPEED_BOOST,
movepool: [BASIC_TACKLE, TOXIC_STING, POWER_UP]
};
export const BERSERKER_BEAST: PicletDefinition = {
name: "Berserker Beast",
description: "A wild creature that fights with reckless abandon",
tier: 'high',
primaryType: PicletType.BEAST,
baseStats: HIGH_TIER_STATS,
nature: "Reckless",
specialAbility: REGENERATOR,
movepool: [BASIC_TACKLE, BERSERKER_END, HEALING_LIGHT, POWER_UP]
};
export const AQUA_GUARDIAN: PicletDefinition = {
name: "Aqua Guardian",
description: "A protective water spirit",
tier: 'medium',
primaryType: PicletType.AQUATIC,
baseStats: MEDIUM_TIER_STATS,
nature: "Calm",
specialAbility: REGENERATOR,
movepool: [BASIC_TACKLE, HEALING_LIGHT, POWER_UP]
};