function onBegin()
  local knightNum = tonumber(string.sub(bossID, -1))
  local dieFlag = "kill_watcher_" .. knightNum
  disableCollisions()
  setSpeed(0, 0)
  makeUnskippable()
  while not puppet.Grounded do
    wait()
  end
  --shake
  wait(0.5)
  --scream
  playSound("event:/CC/CC_HollowKnight/SFX/Boss SFX/BossMiniExplode")
  playPuppetAnim("death")
  wait(0.8)
  playSound("event:/CC/CC_HollowKnight/SFX/Boss SFX/InfectionNoMore", puppet.Position)
  playPuppetAnim("deinfect")
  wait(3.4)
  playPuppetAnim("explode")
  playSound("event:/CC/CC_HollowKnight/SFX/Boss SFX/Damage", puppet.Position)
  wait(0.5)
  puppet.Visible = false
  setFlag(dieFlag)
  --miniTextbox("death_particles")
  while not getFlag("all_knights_dead") do
    wait()
  end
  wait(2)
  if knightNum == 6 then
    setFlag("WatcherExitGate", true)
    setFlag("WatcherEntranceGate", false)
  end
  playMusic("event:/none")
  removeBoss(true)
end