807 lines
20 KiB
TypeScript
807 lines
20 KiB
TypeScript
import { IWT2_BALANCE_OVERRIDES } from './balanceOverrides'
|
|
|
|
export type Iwt2BossId =
|
|
| 'bulldrome'
|
|
| 'yian-kut-ku'
|
|
| 'great-jaggi'
|
|
| 'khezu'
|
|
| 'rathian'
|
|
| 'barroth'
|
|
| 'tobi-kadachi'
|
|
| 'rimebastion'
|
|
| 'ember-mantis-duelist'
|
|
| 'cinderback-ricochet'
|
|
| 'obsidian-ram-golem'
|
|
| 'stormcoil-wyrm'
|
|
| 'venom-orchid-hydra'
|
|
| 'sandglass-scorpion'
|
|
| 'crystal-bat-matriarch'
|
|
| 'hollowcrown-revenant'
|
|
|
|
export type Iwt2BalanceOverrides = {
|
|
bosses?: Partial<Record<Iwt2BossId, Partial<Pick<Iwt2BossMetadata, 'maxHealth' | 'birdHealth'>>>>
|
|
}
|
|
|
|
export type Iwt2BossMetadata = {
|
|
id: Iwt2BossId
|
|
name: string
|
|
icon: string
|
|
spriteUrl: string
|
|
spriteView?: 'topDown' | 'side'
|
|
spriteWidthScale?: number
|
|
spriteHeightScale?: number
|
|
spriteYOffsetScale?: number
|
|
color: string
|
|
accentColor: string
|
|
maxHealth: number
|
|
radius: number
|
|
moveSpeed: number
|
|
meleeRange: number
|
|
meleeDamage: number
|
|
meleeCooldown: number
|
|
chargeCooldown: number
|
|
chargeWindup: number
|
|
chargeSpeed: number
|
|
chargeDamage: number
|
|
chargeStunSeconds: number
|
|
chargeLength: number
|
|
chargeOvershoot: number
|
|
chargeWidth: number
|
|
slamWindup: number
|
|
slamRadius: number
|
|
slamDamage: number
|
|
slamStunSeconds: number
|
|
fireballCooldown?: number
|
|
fireballWindup?: number
|
|
fireballSpeed?: number
|
|
fireballDamage?: number
|
|
fireballRadius?: number
|
|
firePuddleRadius?: number
|
|
firePuddleDamage?: number
|
|
firePuddleSeconds?: number
|
|
birdWaveThresholds?: number[]
|
|
birdFlightCooldown?: number
|
|
birdFlightWindup?: number
|
|
birdFlightSpeed?: number
|
|
birdHealth?: number
|
|
birdRadius?: number
|
|
birdContactDamage?: number
|
|
birdStunSeconds?: number
|
|
packHowlCooldown?: number
|
|
packHowlWindup?: number
|
|
packLaneDamage?: number
|
|
packLaneStunSeconds?: number
|
|
packLaneWidth?: number
|
|
packLaneCount?: number
|
|
thunderRingCooldown?: number
|
|
thunderRingWindup?: number
|
|
thunderRingInnerRadius?: number
|
|
thunderRingOuterRadius?: number
|
|
thunderRingDamage?: number
|
|
thunderRingStunSeconds?: number
|
|
lightningStrikeCooldown?: number
|
|
lightningStrikeWindup?: number
|
|
lightningStrikeRadius?: number
|
|
lightningStrikeDamage?: number
|
|
lightningStrikeStunSeconds?: number
|
|
lightningStrikeCount?: number
|
|
poisonTailCooldown?: number
|
|
tailSweepWindup?: number
|
|
tailSweepRecover?: number
|
|
tailSweepInnerRadius?: number
|
|
tailSweepOuterRadius?: number
|
|
tailSweepAngleRadians?: number
|
|
tailSweepDamage?: number
|
|
tailSweepStunSeconds?: number
|
|
poisonSpitCooldown?: number
|
|
poisonSpitWindup?: number
|
|
poisonPuddleRadius?: number
|
|
poisonPuddleDamage?: number
|
|
poisonPuddleSeconds?: number
|
|
mudArmor?: number
|
|
mudSprayCooldown?: number
|
|
mudSprayWindup?: number
|
|
mudSprayRange?: number
|
|
mudSprayAngleRadians?: number
|
|
mudSprayDamage?: number
|
|
mudSprayStunSeconds?: number
|
|
mudPuddleRadius?: number
|
|
mudPuddleSeconds?: number
|
|
staticEnergyMax?: number
|
|
staticEnergyPerSecond?: number
|
|
staticEnergyPerMelee?: number
|
|
staticPounceWindup?: number
|
|
staticPounceSpeed?: number
|
|
staticPounceDamage?: number
|
|
staticPounceStunSeconds?: number
|
|
staticPounceLength?: number
|
|
staticPounceWidth?: number
|
|
chainShockCooldown?: number
|
|
chainShockWindup?: number
|
|
chainShockRadius?: number
|
|
chainShockDamage?: number
|
|
chainShockStunSeconds?: number
|
|
iceWallCooldown?: number
|
|
iceWallWindup?: number
|
|
iceWallActiveSeconds?: number
|
|
iceWallCount?: number
|
|
iceWallLength?: number
|
|
iceWallWidth?: number
|
|
iceWallDamage?: number
|
|
iceShardDamage?: number
|
|
iceShardStunSeconds?: number
|
|
slashCooldown?: number
|
|
slashWindup?: number
|
|
slashDamage?: number
|
|
slashStunSeconds?: number
|
|
slashWidth?: number
|
|
crossSlashAngleRadians?: number
|
|
sidestepDistance?: number
|
|
ricochetCooldown?: number
|
|
ricochetWindup?: number
|
|
ricochetSpeed?: number
|
|
ricochetDamage?: number
|
|
ricochetStunSeconds?: number
|
|
ricochetSeconds?: number
|
|
lavaTrailRadius?: number
|
|
lavaTrailDamage?: number
|
|
lavaTrailSeconds?: number
|
|
armorSlamWindup?: number
|
|
armorSlamRadius?: number
|
|
armorSlamDamage?: number
|
|
armorSlamStunSeconds?: number
|
|
}
|
|
|
|
const DEFAULT_BULLDROME_BOSS_METADATA: Iwt2BossMetadata = {
|
|
id: 'bulldrome',
|
|
name: 'Bristlemaw',
|
|
icon: 'B',
|
|
spriteUrl: '/iwt2/bosses/bulldrome-side-cel.png',
|
|
spriteView: 'side',
|
|
spriteWidthScale: 6.2,
|
|
spriteHeightScale: 4.5,
|
|
spriteYOffsetScale: -0.14,
|
|
color: '#8f5a3c',
|
|
accentColor: '#e6b17f',
|
|
maxHealth: 950,
|
|
radius: 31,
|
|
moveSpeed: 128,
|
|
meleeRange: 58,
|
|
meleeDamage: 20,
|
|
meleeCooldown: 1.05,
|
|
chargeCooldown: 4.75,
|
|
chargeWindup: 0.55,
|
|
chargeSpeed: 510,
|
|
chargeDamage: 60,
|
|
chargeStunSeconds: 0.75,
|
|
chargeLength: 560,
|
|
chargeOvershoot: 120,
|
|
chargeWidth: 62,
|
|
slamWindup: 0.45,
|
|
slamRadius: 104,
|
|
slamDamage: 55,
|
|
slamStunSeconds: 0.75,
|
|
}
|
|
|
|
const DEFAULT_YIAN_KUT_KU_BOSS_METADATA: Iwt2BossMetadata = {
|
|
id: 'yian-kut-ku',
|
|
name: 'Emberquill',
|
|
icon: 'E',
|
|
spriteUrl: '/iwt2/bosses/yian-kut-ku-side-cel.png',
|
|
spriteView: 'side',
|
|
spriteWidthScale: 5.9,
|
|
spriteHeightScale: 4.7,
|
|
spriteYOffsetScale: -0.1,
|
|
color: '#d66a35',
|
|
accentColor: '#ffd166',
|
|
maxHealth: 750,
|
|
radius: 29,
|
|
moveSpeed: 118,
|
|
meleeRange: 56,
|
|
meleeDamage: 12,
|
|
meleeCooldown: 1,
|
|
chargeCooldown: 0,
|
|
chargeWindup: 0,
|
|
chargeSpeed: 0,
|
|
chargeDamage: 0,
|
|
chargeStunSeconds: 0,
|
|
chargeLength: 0,
|
|
chargeOvershoot: 0,
|
|
chargeWidth: 0,
|
|
slamWindup: 0,
|
|
slamRadius: 0,
|
|
slamDamage: 0,
|
|
slamStunSeconds: 0,
|
|
fireballCooldown: 3.6,
|
|
fireballWindup: 0.55,
|
|
fireballSpeed: 285,
|
|
fireballDamage: 32,
|
|
fireballRadius: 9,
|
|
firePuddleRadius: 42,
|
|
firePuddleDamage: 15,
|
|
firePuddleSeconds: 8,
|
|
birdWaveThresholds: [0.9, 0.4],
|
|
birdFlightCooldown: 10,
|
|
birdFlightWindup: 0.85,
|
|
birdFlightSpeed: 360,
|
|
birdHealth: 100,
|
|
birdRadius: 16,
|
|
birdContactDamage: 26,
|
|
birdStunSeconds: 0.75,
|
|
}
|
|
|
|
const DEFAULT_GREAT_JAGGI_BOSS_METADATA: Iwt2BossMetadata = {
|
|
id: 'great-jaggi',
|
|
name: 'Packfang Alpha',
|
|
icon: 'P',
|
|
spriteUrl: '/iwt2/bosses/great-jaggi-side-cel.png',
|
|
spriteView: 'side',
|
|
spriteWidthScale: 5.9,
|
|
spriteHeightScale: 4.1,
|
|
spriteYOffsetScale: -0.09,
|
|
color: '#3f8f73',
|
|
accentColor: '#b8f0aa',
|
|
maxHealth: 1000,
|
|
radius: 27,
|
|
moveSpeed: 146,
|
|
meleeRange: 52,
|
|
meleeDamage: 18,
|
|
meleeCooldown: 0.82,
|
|
chargeCooldown: 0,
|
|
chargeWindup: 0,
|
|
chargeSpeed: 0,
|
|
chargeDamage: 0,
|
|
chargeStunSeconds: 0,
|
|
chargeLength: 0,
|
|
chargeOvershoot: 0,
|
|
chargeWidth: 0,
|
|
slamWindup: 0,
|
|
slamRadius: 0,
|
|
slamDamage: 0,
|
|
slamStunSeconds: 0,
|
|
packHowlCooldown: 5.8,
|
|
packHowlWindup: 0.95,
|
|
packLaneDamage: 45,
|
|
packLaneStunSeconds: 0.45,
|
|
packLaneWidth: 24,
|
|
packLaneCount: 3,
|
|
}
|
|
|
|
const DEFAULT_KHEZU_BOSS_METADATA: Iwt2BossMetadata = {
|
|
id: 'khezu',
|
|
name: 'Palevolt Maw',
|
|
icon: 'P',
|
|
spriteUrl: '/iwt2/bosses/khezu-side-cel.png',
|
|
spriteView: 'side',
|
|
spriteWidthScale: 5.9,
|
|
spriteHeightScale: 4.4,
|
|
spriteYOffsetScale: -0.12,
|
|
color: '#d8d7c9',
|
|
accentColor: '#77d9ff',
|
|
maxHealth: 1100,
|
|
radius: 30,
|
|
moveSpeed: 92,
|
|
meleeRange: 58,
|
|
meleeDamage: 20,
|
|
meleeCooldown: 1.15,
|
|
chargeCooldown: 0,
|
|
chargeWindup: 0,
|
|
chargeSpeed: 0,
|
|
chargeDamage: 0,
|
|
chargeStunSeconds: 0,
|
|
chargeLength: 0,
|
|
chargeOvershoot: 0,
|
|
chargeWidth: 0,
|
|
slamWindup: 0,
|
|
slamRadius: 0,
|
|
slamDamage: 0,
|
|
slamStunSeconds: 0,
|
|
thunderRingCooldown: 7.2,
|
|
thunderRingWindup: 0.9,
|
|
thunderRingInnerRadius: 70,
|
|
thunderRingOuterRadius: 172,
|
|
thunderRingDamage: 60,
|
|
thunderRingStunSeconds: 0.7,
|
|
lightningStrikeCooldown: 4.2,
|
|
lightningStrikeWindup: 0.78,
|
|
lightningStrikeRadius: 46,
|
|
lightningStrikeDamage: 48,
|
|
lightningStrikeStunSeconds: 0.55,
|
|
lightningStrikeCount: 2,
|
|
}
|
|
|
|
const DEFAULT_RATHIAN_BOSS_METADATA: Iwt2BossMetadata = {
|
|
id: 'rathian',
|
|
name: 'Verdant Wyrm',
|
|
icon: 'V',
|
|
spriteUrl: '/iwt2/bosses/rathian-side-cel.png',
|
|
spriteView: 'side',
|
|
spriteWidthScale: 6.9,
|
|
spriteHeightScale: 4.35,
|
|
spriteYOffsetScale: -0.12,
|
|
color: '#4d9a58',
|
|
accentColor: '#f0c24d',
|
|
maxHealth: 1120,
|
|
radius: 34,
|
|
moveSpeed: 118,
|
|
meleeRange: 62,
|
|
meleeDamage: 16,
|
|
meleeCooldown: 1.08,
|
|
chargeCooldown: 0,
|
|
chargeWindup: 0,
|
|
chargeSpeed: 0,
|
|
chargeDamage: 0,
|
|
chargeStunSeconds: 0,
|
|
chargeLength: 0,
|
|
chargeOvershoot: 0,
|
|
chargeWidth: 0,
|
|
slamWindup: 0,
|
|
slamRadius: 0,
|
|
slamDamage: 0,
|
|
slamStunSeconds: 0,
|
|
poisonTailCooldown: 5.4,
|
|
tailSweepWindup: 0.72,
|
|
tailSweepRecover: 0.48,
|
|
tailSweepInnerRadius: 24,
|
|
tailSweepOuterRadius: 118,
|
|
tailSweepAngleRadians: Math.PI * 1.25,
|
|
tailSweepDamage: 45,
|
|
tailSweepStunSeconds: 0.55,
|
|
poisonSpitCooldown: 6.2,
|
|
poisonSpitWindup: 0.7,
|
|
poisonPuddleRadius: 46,
|
|
poisonPuddleDamage: 15,
|
|
poisonPuddleSeconds: 8,
|
|
}
|
|
|
|
const DEFAULT_BARROTH_BOSS_METADATA: Iwt2BossMetadata = {
|
|
id: 'barroth',
|
|
name: 'Mirehorn',
|
|
icon: 'M',
|
|
spriteUrl: '/iwt2/bosses/barroth-side-cel.png',
|
|
spriteView: 'side',
|
|
spriteWidthScale: 6.3,
|
|
spriteHeightScale: 3.35,
|
|
spriteYOffsetScale: -0.07,
|
|
color: '#8d714d',
|
|
accentColor: '#d6bd80',
|
|
maxHealth: 1280,
|
|
radius: 35,
|
|
moveSpeed: 104,
|
|
meleeRange: 60,
|
|
meleeDamage: 16,
|
|
meleeCooldown: 1.18,
|
|
chargeCooldown: 0,
|
|
chargeWindup: 0,
|
|
chargeSpeed: 0,
|
|
chargeDamage: 0,
|
|
chargeStunSeconds: 0,
|
|
chargeLength: 0,
|
|
chargeOvershoot: 0,
|
|
chargeWidth: 0,
|
|
slamWindup: 0,
|
|
slamRadius: 0,
|
|
slamDamage: 0,
|
|
slamStunSeconds: 0,
|
|
mudArmor: 280,
|
|
mudSprayCooldown: 5.8,
|
|
mudSprayWindup: 0.82,
|
|
mudSprayRange: 172,
|
|
mudSprayAngleRadians: Math.PI * 0.58,
|
|
mudSprayDamage: 28,
|
|
mudSprayStunSeconds: 0.25,
|
|
mudPuddleRadius: 40,
|
|
mudPuddleSeconds: 7.5,
|
|
}
|
|
|
|
const DEFAULT_TOBI_KADACHI_BOSS_METADATA: Iwt2BossMetadata = {
|
|
id: 'tobi-kadachi',
|
|
name: 'Stormtail',
|
|
icon: 'S',
|
|
spriteUrl: '/iwt2/bosses/tobi-kadachi-side-cel.png',
|
|
spriteView: 'side',
|
|
spriteWidthScale: 6.7,
|
|
spriteHeightScale: 3.85,
|
|
spriteYOffsetScale: -0.08,
|
|
color: '#6a79bd',
|
|
accentColor: '#a8f3ff',
|
|
maxHealth: 920,
|
|
radius: 28,
|
|
moveSpeed: 160,
|
|
meleeRange: 53,
|
|
meleeDamage: 13,
|
|
meleeCooldown: 0.78,
|
|
chargeCooldown: 2.2,
|
|
chargeWindup: 0,
|
|
chargeSpeed: 0,
|
|
chargeDamage: 0,
|
|
chargeStunSeconds: 0,
|
|
chargeLength: 0,
|
|
chargeOvershoot: 0,
|
|
chargeWidth: 0,
|
|
slamWindup: 0,
|
|
slamRadius: 0,
|
|
slamDamage: 0,
|
|
slamStunSeconds: 0,
|
|
staticEnergyMax: 100,
|
|
staticEnergyPerSecond: 16,
|
|
staticEnergyPerMelee: 15,
|
|
staticPounceWindup: 0.58,
|
|
staticPounceSpeed: 560,
|
|
staticPounceDamage: 46,
|
|
staticPounceStunSeconds: 0.6,
|
|
staticPounceLength: 520,
|
|
staticPounceWidth: 46,
|
|
chainShockCooldown: 5.2,
|
|
chainShockWindup: 0.85,
|
|
chainShockRadius: 86,
|
|
chainShockDamage: 34,
|
|
chainShockStunSeconds: 0.45,
|
|
}
|
|
|
|
const DEFAULT_RIMEBASTION_BOSS_METADATA: Iwt2BossMetadata = {
|
|
id: 'rimebastion',
|
|
name: 'Rimebastion',
|
|
icon: 'I',
|
|
spriteUrl: '/iwt2/bosses/rimebastion-side-cel.png',
|
|
spriteView: 'side',
|
|
spriteWidthScale: 7.2,
|
|
spriteHeightScale: 4.5,
|
|
spriteYOffsetScale: -0.08,
|
|
color: '#5f9fd6',
|
|
accentColor: '#b8f3ff',
|
|
maxHealth: 1380,
|
|
radius: 37,
|
|
moveSpeed: 86,
|
|
meleeRange: 62,
|
|
meleeDamage: 16,
|
|
meleeCooldown: 1.2,
|
|
chargeCooldown: 5.6,
|
|
chargeWindup: 0,
|
|
chargeSpeed: 0,
|
|
chargeDamage: 0,
|
|
chargeStunSeconds: 0,
|
|
chargeLength: 0,
|
|
chargeOvershoot: 0,
|
|
chargeWidth: 0,
|
|
slamWindup: 0,
|
|
slamRadius: 0,
|
|
slamDamage: 0,
|
|
slamStunSeconds: 0,
|
|
iceWallCooldown: 6.2,
|
|
iceWallWindup: 0.9,
|
|
iceWallActiveSeconds: 0.7,
|
|
iceWallCount: 3,
|
|
iceWallLength: 180,
|
|
iceWallWidth: 22,
|
|
iceWallDamage: 18,
|
|
iceShardDamage: 34,
|
|
iceShardStunSeconds: 0.55,
|
|
}
|
|
|
|
const DEFAULT_EMBER_MANTIS_DUELIST_BOSS_METADATA: Iwt2BossMetadata = {
|
|
id: 'ember-mantis-duelist',
|
|
name: 'Ember Mantis Duelist',
|
|
icon: 'M',
|
|
spriteUrl: '/iwt2/bosses/ember-mantis-duelist-side-cel.png',
|
|
spriteView: 'side',
|
|
spriteWidthScale: 5.6,
|
|
spriteHeightScale: 4.6,
|
|
spriteYOffsetScale: -0.1,
|
|
color: '#b94831',
|
|
accentColor: '#ffb24a',
|
|
maxHealth: 1040,
|
|
radius: 29,
|
|
moveSpeed: 168,
|
|
meleeRange: 54,
|
|
meleeDamage: 13,
|
|
meleeCooldown: 0.78,
|
|
chargeCooldown: 3.8,
|
|
chargeWindup: 0,
|
|
chargeSpeed: 0,
|
|
chargeDamage: 0,
|
|
chargeStunSeconds: 0,
|
|
chargeLength: 0,
|
|
chargeOvershoot: 0,
|
|
chargeWidth: 0,
|
|
slamWindup: 0,
|
|
slamRadius: 0,
|
|
slamDamage: 0,
|
|
slamStunSeconds: 0,
|
|
slashCooldown: 4.2,
|
|
slashWindup: 0.48,
|
|
slashDamage: 36,
|
|
slashStunSeconds: 0.35,
|
|
slashWidth: 24,
|
|
crossSlashAngleRadians: Math.PI * 0.32,
|
|
sidestepDistance: 94,
|
|
}
|
|
|
|
const DEFAULT_CINDERBACK_RICOCHET_BOSS_METADATA: Iwt2BossMetadata = {
|
|
id: 'cinderback-ricochet',
|
|
name: 'Cinderback Ricochet',
|
|
icon: 'C',
|
|
spriteUrl: '/iwt2/bosses/cinderback-ricochet-side-cel.png',
|
|
spriteView: 'side',
|
|
spriteWidthScale: 6.6,
|
|
spriteHeightScale: 3.8,
|
|
spriteYOffsetScale: -0.06,
|
|
color: '#9a4f2f',
|
|
accentColor: '#ff8a3d',
|
|
maxHealth: 1250,
|
|
radius: 34,
|
|
moveSpeed: 106,
|
|
meleeRange: 60,
|
|
meleeDamage: 14,
|
|
meleeCooldown: 1.05,
|
|
chargeCooldown: 5.4,
|
|
chargeWindup: 0,
|
|
chargeSpeed: 0,
|
|
chargeDamage: 0,
|
|
chargeStunSeconds: 0,
|
|
chargeLength: 0,
|
|
chargeOvershoot: 0,
|
|
chargeWidth: 0,
|
|
slamWindup: 0,
|
|
slamRadius: 0,
|
|
slamDamage: 0,
|
|
slamStunSeconds: 0,
|
|
ricochetCooldown: 6.6,
|
|
ricochetWindup: 0.65,
|
|
ricochetSpeed: 440,
|
|
ricochetDamage: 40,
|
|
ricochetStunSeconds: 0.45,
|
|
ricochetSeconds: 1.45,
|
|
lavaTrailRadius: 34,
|
|
lavaTrailDamage: 15,
|
|
lavaTrailSeconds: 5.5,
|
|
armorSlamWindup: 0.42,
|
|
armorSlamRadius: 86,
|
|
armorSlamDamage: 44,
|
|
armorSlamStunSeconds: 0.5,
|
|
}
|
|
|
|
const DEFAULT_OBSIDIAN_RAM_GOLEM_BOSS_METADATA: Iwt2BossMetadata = {
|
|
id: 'obsidian-ram-golem',
|
|
name: 'Obsidian Ram Golem',
|
|
icon: 'O',
|
|
spriteUrl: '/iwt2/bosses/obsidian-ram-golem-side-cel.png',
|
|
spriteView: 'side',
|
|
spriteWidthScale: 6.5,
|
|
spriteHeightScale: 4.25,
|
|
spriteYOffsetScale: -0.08,
|
|
color: '#2f3034',
|
|
accentColor: '#ff7b32',
|
|
maxHealth: 1420,
|
|
radius: 36,
|
|
moveSpeed: 98,
|
|
meleeRange: 62,
|
|
meleeDamage: 14,
|
|
meleeCooldown: 1.12,
|
|
chargeCooldown: 5.7,
|
|
chargeWindup: 0,
|
|
chargeSpeed: 0,
|
|
chargeDamage: 0,
|
|
chargeStunSeconds: 0,
|
|
chargeLength: 0,
|
|
chargeOvershoot: 0,
|
|
chargeWidth: 0,
|
|
slamWindup: 0,
|
|
slamRadius: 0,
|
|
slamDamage: 0,
|
|
slamStunSeconds: 0,
|
|
mudArmor: 240,
|
|
}
|
|
|
|
const DEFAULT_STORMCOIL_WYRM_BOSS_METADATA: Iwt2BossMetadata = {
|
|
id: 'stormcoil-wyrm',
|
|
name: 'Stormcoil Wyrm',
|
|
icon: 'S',
|
|
spriteUrl: '/iwt2/bosses/stormcoil-wyrm-side-cel.png',
|
|
spriteView: 'side',
|
|
spriteWidthScale: 7.1,
|
|
spriteHeightScale: 4.15,
|
|
spriteYOffsetScale: -0.1,
|
|
color: '#273b75',
|
|
accentColor: '#78ecff',
|
|
maxHealth: 1120,
|
|
radius: 30,
|
|
moveSpeed: 142,
|
|
meleeRange: 58,
|
|
meleeDamage: 12,
|
|
meleeCooldown: 0.95,
|
|
chargeCooldown: 5.1,
|
|
chargeWindup: 0,
|
|
chargeSpeed: 0,
|
|
chargeDamage: 0,
|
|
chargeStunSeconds: 0,
|
|
chargeLength: 0,
|
|
chargeOvershoot: 0,
|
|
chargeWidth: 0,
|
|
slamWindup: 0,
|
|
slamRadius: 0,
|
|
slamDamage: 0,
|
|
slamStunSeconds: 0,
|
|
chainShockCooldown: 5,
|
|
chainShockWindup: 0.78,
|
|
chainShockRadius: 94,
|
|
chainShockDamage: 18,
|
|
chainShockStunSeconds: 0.38,
|
|
}
|
|
|
|
const DEFAULT_VENOM_ORCHID_HYDRA_BOSS_METADATA: Iwt2BossMetadata = {
|
|
id: 'venom-orchid-hydra',
|
|
name: 'Venom Orchid Hydra',
|
|
icon: 'V',
|
|
spriteUrl: '/iwt2/bosses/venom-orchid-hydra-side-cel.png',
|
|
spriteView: 'side',
|
|
spriteWidthScale: 7.2,
|
|
spriteHeightScale: 4.6,
|
|
spriteYOffsetScale: -0.1,
|
|
color: '#5e316c',
|
|
accentColor: '#d8f05b',
|
|
maxHealth: 1320,
|
|
radius: 35,
|
|
moveSpeed: 84,
|
|
meleeRange: 64,
|
|
meleeDamage: 12,
|
|
meleeCooldown: 1.15,
|
|
chargeCooldown: 5.4,
|
|
chargeWindup: 0,
|
|
chargeSpeed: 0,
|
|
chargeDamage: 0,
|
|
chargeStunSeconds: 0,
|
|
chargeLength: 0,
|
|
chargeOvershoot: 0,
|
|
chargeWidth: 0,
|
|
slamWindup: 0,
|
|
slamRadius: 0,
|
|
slamDamage: 0,
|
|
slamStunSeconds: 0,
|
|
poisonSpitCooldown: 5.6,
|
|
poisonSpitWindup: 0.75,
|
|
poisonPuddleRadius: 42,
|
|
poisonPuddleDamage: 15,
|
|
poisonPuddleSeconds: 7,
|
|
}
|
|
|
|
const DEFAULT_SANDGLASS_SCORPION_BOSS_METADATA: Iwt2BossMetadata = {
|
|
id: 'sandglass-scorpion',
|
|
name: 'Sandglass Scorpion',
|
|
icon: 'G',
|
|
spriteUrl: '/iwt2/bosses/sandglass-scorpion-side-cel.png',
|
|
spriteView: 'side',
|
|
spriteWidthScale: 6.4,
|
|
spriteHeightScale: 4.25,
|
|
spriteYOffsetScale: -0.07,
|
|
color: '#9d7430',
|
|
accentColor: '#ffd15a',
|
|
maxHealth: 1245,
|
|
radius: 33,
|
|
moveSpeed: 126,
|
|
meleeRange: 58,
|
|
meleeDamage: 13,
|
|
meleeCooldown: 0.98,
|
|
chargeCooldown: 5.2,
|
|
chargeWindup: 0,
|
|
chargeSpeed: 0,
|
|
chargeDamage: 0,
|
|
chargeStunSeconds: 0,
|
|
chargeLength: 0,
|
|
chargeOvershoot: 0,
|
|
chargeWidth: 0,
|
|
slamWindup: 0,
|
|
slamRadius: 0,
|
|
slamDamage: 0,
|
|
slamStunSeconds: 0,
|
|
mudPuddleRadius: 44,
|
|
mudPuddleSeconds: 6,
|
|
}
|
|
|
|
const DEFAULT_CRYSTAL_BAT_MATRIARCH_BOSS_METADATA: Iwt2BossMetadata = {
|
|
id: 'crystal-bat-matriarch',
|
|
name: 'Crystal Bat Matriarch',
|
|
icon: 'Q',
|
|
spriteUrl: '/iwt2/bosses/crystal-bat-matriarch-side-cel.png',
|
|
spriteView: 'side',
|
|
spriteWidthScale: 6.8,
|
|
spriteHeightScale: 4.75,
|
|
spriteYOffsetScale: -0.12,
|
|
color: '#4e2d76',
|
|
accentColor: '#8eeaff',
|
|
maxHealth: 1050,
|
|
radius: 31,
|
|
moveSpeed: 150,
|
|
meleeRange: 56,
|
|
meleeDamage: 11,
|
|
meleeCooldown: 0.9,
|
|
chargeCooldown: 5.1,
|
|
chargeWindup: 0,
|
|
chargeSpeed: 0,
|
|
chargeDamage: 0,
|
|
chargeStunSeconds: 0,
|
|
chargeLength: 0,
|
|
chargeOvershoot: 0,
|
|
chargeWidth: 0,
|
|
slamWindup: 0,
|
|
slamRadius: 0,
|
|
slamDamage: 0,
|
|
slamStunSeconds: 0,
|
|
}
|
|
|
|
const DEFAULT_HOLLOWCROWN_REVENANT_BOSS_METADATA: Iwt2BossMetadata = {
|
|
id: 'hollowcrown-revenant',
|
|
name: 'Hollowcrown Revenant',
|
|
icon: 'H',
|
|
spriteUrl: '/iwt2/bosses/hollowcrown-revenant-side-cel.png',
|
|
spriteView: 'side',
|
|
spriteWidthScale: 6.6,
|
|
spriteHeightScale: 4.35,
|
|
spriteYOffsetScale: -0.1,
|
|
color: '#3c3f5e',
|
|
accentColor: '#9be8ff',
|
|
maxHealth: 1080,
|
|
radius: 30,
|
|
moveSpeed: 158,
|
|
meleeRange: 56,
|
|
meleeDamage: 12,
|
|
meleeCooldown: 0.9,
|
|
chargeCooldown: 4.8,
|
|
chargeWindup: 0,
|
|
chargeSpeed: 0,
|
|
chargeDamage: 0,
|
|
chargeStunSeconds: 0,
|
|
chargeLength: 0,
|
|
chargeOvershoot: 0,
|
|
chargeWidth: 0,
|
|
slamWindup: 0,
|
|
slamRadius: 0,
|
|
slamDamage: 0,
|
|
slamStunSeconds: 0,
|
|
}
|
|
|
|
function applyBossOverrides(metadata: Iwt2BossMetadata): Iwt2BossMetadata {
|
|
const override = IWT2_BALANCE_OVERRIDES.bosses?.[metadata.id]
|
|
if (!override) return metadata
|
|
return {
|
|
...metadata,
|
|
...override,
|
|
}
|
|
}
|
|
|
|
export const BULLDROME_BOSS_METADATA: Iwt2BossMetadata = applyBossOverrides(DEFAULT_BULLDROME_BOSS_METADATA)
|
|
export const YIAN_KUT_KU_BOSS_METADATA: Iwt2BossMetadata = applyBossOverrides(DEFAULT_YIAN_KUT_KU_BOSS_METADATA)
|
|
export const GREAT_JAGGI_BOSS_METADATA: Iwt2BossMetadata = applyBossOverrides(DEFAULT_GREAT_JAGGI_BOSS_METADATA)
|
|
export const KHEZU_BOSS_METADATA: Iwt2BossMetadata = applyBossOverrides(DEFAULT_KHEZU_BOSS_METADATA)
|
|
export const RATHIAN_BOSS_METADATA: Iwt2BossMetadata = applyBossOverrides(DEFAULT_RATHIAN_BOSS_METADATA)
|
|
export const BARROTH_BOSS_METADATA: Iwt2BossMetadata = applyBossOverrides(DEFAULT_BARROTH_BOSS_METADATA)
|
|
export const TOBI_KADACHI_BOSS_METADATA: Iwt2BossMetadata = applyBossOverrides(DEFAULT_TOBI_KADACHI_BOSS_METADATA)
|
|
export const RIMEBASTION_BOSS_METADATA: Iwt2BossMetadata = applyBossOverrides(DEFAULT_RIMEBASTION_BOSS_METADATA)
|
|
export const EMBER_MANTIS_DUELIST_BOSS_METADATA: Iwt2BossMetadata = applyBossOverrides(DEFAULT_EMBER_MANTIS_DUELIST_BOSS_METADATA)
|
|
export const CINDERBACK_RICOCHET_BOSS_METADATA: Iwt2BossMetadata = applyBossOverrides(DEFAULT_CINDERBACK_RICOCHET_BOSS_METADATA)
|
|
export const OBSIDIAN_RAM_GOLEM_BOSS_METADATA: Iwt2BossMetadata = applyBossOverrides(DEFAULT_OBSIDIAN_RAM_GOLEM_BOSS_METADATA)
|
|
export const STORMCOIL_WYRM_BOSS_METADATA: Iwt2BossMetadata = applyBossOverrides(DEFAULT_STORMCOIL_WYRM_BOSS_METADATA)
|
|
export const VENOM_ORCHID_HYDRA_BOSS_METADATA: Iwt2BossMetadata = applyBossOverrides(DEFAULT_VENOM_ORCHID_HYDRA_BOSS_METADATA)
|
|
export const SANDGLASS_SCORPION_BOSS_METADATA: Iwt2BossMetadata = applyBossOverrides(DEFAULT_SANDGLASS_SCORPION_BOSS_METADATA)
|
|
export const CRYSTAL_BAT_MATRIARCH_BOSS_METADATA: Iwt2BossMetadata = applyBossOverrides(DEFAULT_CRYSTAL_BAT_MATRIARCH_BOSS_METADATA)
|
|
export const HOLLOWCROWN_REVENANT_BOSS_METADATA: Iwt2BossMetadata = applyBossOverrides(DEFAULT_HOLLOWCROWN_REVENANT_BOSS_METADATA)
|
|
|
|
export const IWT2_BOSS_METADATA: Record<Iwt2BossId, Iwt2BossMetadata> = {
|
|
bulldrome: BULLDROME_BOSS_METADATA,
|
|
'yian-kut-ku': YIAN_KUT_KU_BOSS_METADATA,
|
|
'great-jaggi': GREAT_JAGGI_BOSS_METADATA,
|
|
khezu: KHEZU_BOSS_METADATA,
|
|
rathian: RATHIAN_BOSS_METADATA,
|
|
barroth: BARROTH_BOSS_METADATA,
|
|
'tobi-kadachi': TOBI_KADACHI_BOSS_METADATA,
|
|
rimebastion: RIMEBASTION_BOSS_METADATA,
|
|
'ember-mantis-duelist': EMBER_MANTIS_DUELIST_BOSS_METADATA,
|
|
'cinderback-ricochet': CINDERBACK_RICOCHET_BOSS_METADATA,
|
|
'obsidian-ram-golem': OBSIDIAN_RAM_GOLEM_BOSS_METADATA,
|
|
'stormcoil-wyrm': STORMCOIL_WYRM_BOSS_METADATA,
|
|
'venom-orchid-hydra': VENOM_ORCHID_HYDRA_BOSS_METADATA,
|
|
'sandglass-scorpion': SANDGLASS_SCORPION_BOSS_METADATA,
|
|
'crystal-bat-matriarch': CRYSTAL_BAT_MATRIARCH_BOSS_METADATA,
|
|
'hollowcrown-revenant': HOLLOWCROWN_REVENANT_BOSS_METADATA,
|
|
}
|