Initial I Want to Heal app
This commit is contained in:
+157
@@ -0,0 +1,157 @@
|
||||
export type Role = 'Tank' | 'Healer' | 'Damage'
|
||||
|
||||
export type PartyMember = {
|
||||
id: string
|
||||
name: string
|
||||
role: Role
|
||||
health: number
|
||||
maxHealth: number
|
||||
shield: number
|
||||
hotTicks: number
|
||||
debuff?: string
|
||||
debuffTicks?: number
|
||||
poisonStacks?: number
|
||||
maxHealthPenaltyTicks?: number
|
||||
healingReductionTicks?: number
|
||||
}
|
||||
|
||||
export type Spell = {
|
||||
id: string
|
||||
key: string
|
||||
name: string
|
||||
description: string
|
||||
cost: number
|
||||
cooldown: number
|
||||
power: number
|
||||
glyph: string
|
||||
kind: 'direct' | 'hot' | 'group' | 'shield' | 'cleanse'
|
||||
}
|
||||
|
||||
export type Encounter = {
|
||||
id: string
|
||||
enemyName: string
|
||||
description: string
|
||||
maxHealth: number
|
||||
damage: number
|
||||
tankDamage: number
|
||||
partyDamage: number
|
||||
isBoss: boolean
|
||||
}
|
||||
|
||||
export type CombatLogEntry = {
|
||||
id: number
|
||||
text: string
|
||||
tone: 'system' | 'heal' | 'danger' | 'loot'
|
||||
}
|
||||
|
||||
export const INITIAL_PARTY: PartyMember[] = [
|
||||
{ id: 'brann', name: 'Brann', role: 'Tank', health: 150, maxHealth: 150, shield: 0, hotTicks: 0 },
|
||||
{ id: 'mira', name: 'Mira', role: 'Healer', health: 100, maxHealth: 100, shield: 0, hotTicks: 0 },
|
||||
{ id: 'kael', name: 'Kael', role: 'Damage', health: 105, maxHealth: 105, shield: 0, hotTicks: 0 },
|
||||
{ id: 'ves', name: 'Ves', role: 'Damage', health: 95, maxHealth: 95, shield: 0, hotTicks: 0 },
|
||||
{ id: 'orin', name: 'Orin', role: 'Damage', health: 110, maxHealth: 110, shield: 0, hotTicks: 0 },
|
||||
]
|
||||
|
||||
export const RAID_PARTY: PartyMember[] = [
|
||||
{ id: 'brann', name: 'Brann', role: 'Tank', health: 165, maxHealth: 165, shield: 0, hotTicks: 0 },
|
||||
{ id: 'tala', name: 'Tala', role: 'Tank', health: 155, maxHealth: 155, shield: 0, hotTicks: 0 },
|
||||
{ id: 'mira', name: 'Mira', role: 'Healer', health: 100, maxHealth: 100, shield: 0, hotTicks: 0 },
|
||||
{ id: 'seren', name: 'Seren', role: 'Healer', health: 102, maxHealth: 102, shield: 0, hotTicks: 0 },
|
||||
{ id: 'kael', name: 'Kael', role: 'Damage', health: 105, maxHealth: 105, shield: 0, hotTicks: 0 },
|
||||
{ id: 'ves', name: 'Ves', role: 'Damage', health: 95, maxHealth: 95, shield: 0, hotTicks: 0 },
|
||||
{ id: 'orin', name: 'Orin', role: 'Damage', health: 110, maxHealth: 110, shield: 0, hotTicks: 0 },
|
||||
{ id: 'lyra', name: 'Lyra', role: 'Damage', health: 98, maxHealth: 98, shield: 0, hotTicks: 0 },
|
||||
{ id: 'dax', name: 'Dax', role: 'Damage', health: 108, maxHealth: 108, shield: 0, hotTicks: 0 },
|
||||
{ id: 'nyx', name: 'Nyx', role: 'Damage', health: 100, maxHealth: 100, shield: 0, hotTicks: 0 },
|
||||
]
|
||||
|
||||
export const SPELLS: Spell[] = [
|
||||
{
|
||||
id: 'mend',
|
||||
key: '1',
|
||||
name: 'Mend',
|
||||
description: 'A fast, efficient single-target heal.',
|
||||
cost: 5,
|
||||
cooldown: 0.5,
|
||||
power: 30,
|
||||
glyph: '+',
|
||||
kind: 'direct',
|
||||
},
|
||||
{
|
||||
id: 'renew',
|
||||
key: '2',
|
||||
name: 'Renew',
|
||||
description: 'Heals now and continues healing over time.',
|
||||
cost: 7,
|
||||
cooldown: 0.5,
|
||||
power: 12,
|
||||
glyph: '~',
|
||||
kind: 'hot',
|
||||
},
|
||||
{
|
||||
id: 'radiance',
|
||||
key: '3',
|
||||
name: 'Radiance',
|
||||
description: 'Restores health to every living party member.',
|
||||
cost: 12,
|
||||
cooldown: 8,
|
||||
power: 18,
|
||||
glyph: '*',
|
||||
kind: 'group',
|
||||
},
|
||||
{
|
||||
id: 'ward',
|
||||
key: '4',
|
||||
name: 'Sun Ward',
|
||||
description: 'Places a damage-absorbing shield on your target.',
|
||||
cost: 8,
|
||||
cooldown: 7,
|
||||
power: 36,
|
||||
glyph: 'O',
|
||||
kind: 'shield',
|
||||
},
|
||||
{
|
||||
id: 'purify',
|
||||
key: '5',
|
||||
name: 'Purify',
|
||||
description: 'Removes a harmful effect and restores a little health.',
|
||||
cost: 5,
|
||||
cooldown: 5,
|
||||
power: 10,
|
||||
glyph: 'x',
|
||||
kind: 'cleanse',
|
||||
},
|
||||
]
|
||||
|
||||
export const ENCOUNTERS: Encounter[] = [
|
||||
{
|
||||
id: 'ashfang-pack',
|
||||
enemyName: 'Ashfang Pack',
|
||||
description: 'Three beasts snap at random party members.',
|
||||
maxHealth: 390,
|
||||
damage: 13,
|
||||
tankDamage: 7,
|
||||
partyDamage: 24,
|
||||
isBoss: false,
|
||||
},
|
||||
{
|
||||
id: 'cinder-adepts',
|
||||
enemyName: 'Cinder Adepts',
|
||||
description: 'Cultists pressure the tank while throwing embers into the group.',
|
||||
maxHealth: 470,
|
||||
damage: 16,
|
||||
tankDamage: 10,
|
||||
partyDamage: 25,
|
||||
isBoss: false,
|
||||
},
|
||||
{
|
||||
id: 'warden-vhal',
|
||||
enemyName: 'Warden Vhal',
|
||||
description: 'Boss: cleanse Searing Mark and prepare group healing for Cinder Pulse.',
|
||||
maxHealth: 820,
|
||||
damage: 18,
|
||||
tankDamage: 13,
|
||||
partyDamage: 27,
|
||||
isBoss: true,
|
||||
},
|
||||
]
|
||||
Reference in New Issue
Block a user