feat: tier-gated entrance animations
Tier 0-1: simple entrances (skateboard, backflip, ice slide, moonwalk). Tier 2: + vehicles (car, shopping cart, girlfriend, bouncer). Tier 3: + dramatic drops (space fall, helicopter, underground, parachute). Tier 4: + teleport/effects (portal, lightning, jetpack, crowd surf). Tier 5+: all entrances including spotlight, robe, cannon. THE CREATOR golden portal entrance unchanged. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
c876998601
commit
cc0fb4553a
@@ -9899,10 +9899,31 @@ export async function createFightScene(config: FightSceneConfig) {
|
||||
rainDrops.forEach(r => { if (r.exists()) r.destroy() })
|
||||
}
|
||||
|
||||
// Pick random entrance for each bot (different ones)
|
||||
const idxA = Math.floor(Math.random() * entrances.length)
|
||||
let idxB = Math.floor(Math.random() * entrances.length)
|
||||
while (idxB === idxA && entrances.length > 1) idxB = Math.floor(Math.random() * entrances.length)
|
||||
// Tier-gated entrance pools — higher tiers get access to more dramatic entrances
|
||||
// Tier 0-1: simple walk-ins and slides
|
||||
// Tier 2: + vehicles and dust-trail entrances
|
||||
// Tier 3: + dramatic drops from above with screen shake
|
||||
// Tier 4: + teleport/lightning/portal effects
|
||||
// Tier 5+: + spotlight/robe/cannon (full dramatic)
|
||||
const tierPools: Record<number, number[]> = {
|
||||
0: [6, 9, 11, 13], // skateboard, backflip, ice slide, moonwalk
|
||||
1: [6, 9, 11, 13],
|
||||
2: [0, 3, 6, 9, 11, 13, 14, 17], // + car, girlfriend, bouncer, shopping cart
|
||||
3: [0, 1, 3, 4, 6, 9, 10, 11, 12, 13, 14, 17], // + space fall, helicopter, underground, parachute
|
||||
4: [0, 1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], // + teleport, jetpack, portal, lightning, crowd surf
|
||||
5: [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], // + robe, spotlight, cannon (all)
|
||||
}
|
||||
|
||||
function pickTierEntrance(tier: number): number {
|
||||
const pool = tierPools[Math.min(tier, 5)] || tierPools[0]
|
||||
return pool[Math.floor(Math.random() * pool.length)]
|
||||
}
|
||||
|
||||
const idxA = pickTierEntrance(botA.tier)
|
||||
let idxB = pickTierEntrance(botB.tier)
|
||||
// Avoid same entrance for both fighters when possible
|
||||
let attempts = 0
|
||||
while (idxB === idxA && attempts < 5) { idxB = pickTierEntrance(botB.tier); attempts++ }
|
||||
|
||||
// Play entrances with slight stagger — creator always gets special entrance
|
||||
announceDeepIntro()
|
||||
|
||||
Reference in New Issue
Block a user