Ticker mixin, Particle VFX, Staff/Bhs attack logic, Scene ticks

  • Add Ticker mixin with pure virtual tick(double dt)
  • Remove virtual tick from Node; only Ticker subclasses tick
  • Scene maintains tickers map; dispatches tick to all Ticker nodes
  • Add Particle: physics sphere that despawns after 1 second
  • Spawn particle rings on hit and crit for BHS and Staff
  • Add virtual getDmg/isCrit/onAttack to Weapon as pure virtuals
  • Remove attackCb lambda from Weapon::Ctor; replace with overrides
  • Implement Staff::onAttack with sphere collision query and VFX
  • Implement Bhs::onAttack with projectile spawn and crit support
  • Add lvl field to Weapon::Ctor; scale damage via exponential formula
  • Add Staff::Ctor and Bhs::Ctor with lvl parameter
  • Rename applyDamage to applyDmg on Mob and CrystalSanctuaryGuardian
  • Rename weapon to weaponMesh in Player for clarity
  • Extract Player::animTick for weapon mesh sync and anim state machine
  • Fix curWeapon null init in Player
  • Remove Node::tickInternal; use Scene::tick for all ticking
  • Replace scene➡️tickInternal(dt) with scene➡️tick(dt) in gameplay/editor
  • Add particle/Particle mesh asset
  • Fix todo: mark staff icon, BHS VFX, inventory UI as done

Previous