Skip to content

Commit e686ce4

Browse files
Back off the last tuning pass: PILOT 2/24 was not the target
Measured, 24 seeds: CADET 14/24, PILOT 2/24, ACE 0/24, with HIVE MOTHER taking 11.5 hull over 75 seconds. Two compounding causes, both from the previous commit. fire_bonus scales enemy and boss rate of fire together, so 0.28 -> 0.45 is a much larger change than the number suggests. 0.35. HIVE MOTHER's spiral ran at full emission on top of escorts, wall guns, rain and spray, where the other four run a spiral on its own. spiral() takes an emission interval now and HIVE's runs at half rate; its escort waves go back to the slower cadence and the flank spawns move to the last phase only. Determinism unaffected. Third 24-seed run in flight. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKLqS4PgnCXrzKHDH8Cnzy
1 parent 3bba506 commit e686ce4

2 files changed

Lines changed: 11 additions & 10 deletions

File tree

‎pc/nova/boss.py‎

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ def ring(self, combat, count, speed=96):
387387
self.x, self.y + 6, math.cos(a) * speed, math.sin(a) * speed, 2))
388388
combat.audio.play("enemy_shoot", 0.6, throttle=0.05)
389389

390-
def spiral(self, dt, combat, arms=2, rate=2.2, speed=100):
390+
def spiral(self, dt, combat, arms=2, rate=2.2, speed=100, every=0.09):
391391
"""A rotating stream, emitted continuously.
392392
393393
The densest thing in the game and the fairest: the arms turn at a fixed
@@ -398,7 +398,7 @@ def spiral(self, dt, combat, arms=2, rate=2.2, speed=100):
398398
self.stream_t -= dt
399399
if self.stream_t > 0:
400400
return
401-
self.stream_t = 0.09
401+
self.stream_t = every
402402
for i in range(arms):
403403
a = self.spin + i * (math.tau / arms)
404404
combat.shots.append(ent.EnemyBullet(
@@ -518,21 +518,22 @@ def act_hive(self, dt, combat):
518518
"""
519519
self.deploy_turrets(combat, 0)
520520
if self.phase == 2:
521-
# Its damage came out right but 38% of fights still ended clean:
522-
# a threat made of escorts is a threat you can delete, and once
523-
# they are down there is nothing in the air. The last phase keeps
524-
# something in the air whatever happens to the bays.
525-
self.spiral(dt, combat, arms=2, rate=-2.2, speed=96)
521+
# A threat made of escorts is a threat you can delete, and once the
522+
# bays are empty there is nothing in the air at all -- 38% of these
523+
# fights used to end without a scratch. A thin spiral keeps the
524+
# pressure alive; at full density it took the fight to 75 seconds
525+
# and 11 hull, so this one is emitted at half the usual rate.
526+
self.spiral(dt, combat, arms=2, rate=-2.2, speed=96, every=0.17)
526527
self.spawn_t -= dt
527528
if self.spawn_t <= 0:
528-
self.spawn_t = (3.0, 2.4, 1.8)[self.phase]
529+
self.spawn_t = (3.4, 2.8, 2.2)[self.phase]
529530
wave = (3, 4, 5)[self.phase]
530531
for i in range(wave):
531532
kind = data.RUSHER_ID if i % 2 else data.GRUNT_ID
532533
combat.spawn_escort(kind,
533534
self.x + (i - (wave - 1) / 2.0) * 18,
534535
self.y + 12)
535-
if self.phase >= 1:
536+
if self.phase >= 2:
536537
# down the flanks, where nobody is looking
537538
for x in (data.PLAY_L + 26, data.PLAY_R - 26):
538539
combat.spawn_escort(data.RUSHER_ID, x, data.TOP + 8)

‎pc/nova/data.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,7 @@ def SEC_ACCENT(sector):
407407
# The tiers separate on rate of fire and on the depth of the hull bar instead.
408408
DIFFICULTIES = (
409409
("CADET", 24, 0.85, 0.0, "Forgiving. Learn the patterns."),
410-
("PILOT", 18, 1.00, 0.45, "The intended fight."),
410+
("PILOT", 18, 1.00, 0.35, "The intended fight."),
411411
("ACE", 12, 1.15, 0.78, "Fast, dense, unkind."),
412412
)
413413

0 commit comments

Comments
 (0)