#!/usr/bin/env bash # ALL-WEAPON-CLASS damage audit (#95 burst fix). # # The cluster-burst change routes missile damage through the handler's burst loop # (which re-rolls the zone per burst). That loop is shared by EVERY damage # consumer, so this run exercises all of them together and reports the delivered # damage per class, so nothing is silently rescaled: # # ENERGY -- Emitter::FireWeapon -> SendDamageMessage (burst 1) # BALLISTIC -- ProjectileWeapon rounds (burst 1) # MISSILE -- cluster round (burst = rolled hit count, 1..N) # SPLASH -- BTApplySplashDamage (burst = distance falloff) # COLLISION -- type 0, diverted to internal rattle, must NEVER reach armour # # Verdict comes from [dmghit]: amt / burst / the damageLevel delta per class. set -x . /c/git/bt411/scratchpad/night6/bench_common.sh cd /c/git/bt411/content || exit 1 taskkill //F //IM btl4.exe > /dev/null 2>&1 sleep 2 sed "s/^map=.*/map=grass/; s/^time=.*/time=day/" MP.EGG > ALLW.EGG LOG=allweap_${1:-post}.log rm -f "$LOG" # All weapon groups auto-fire (Trigger + missile group); walk into the target so # ballistic/energy/missile all connect, and splash lands on the victim's zones. BT_PROJ_LOG=1 BT_DMG_LOG=1 BT_FIRE_LOG=1 \ BT_SPAWN_ENEMY=1 BT_GOTO=enemy BT_GOTO_STOP=2 \ BT_AUTOFIRE=1 BT_AF_MISSILE=1 BT_AF_PERIOD=2 \ bt_launch "$LOG" ALLW.EGG 0x03 sleep 110 taskkill //F //IM btl4.exe > /dev/null 2>&1 sleep 2 echo "=== see allweap.py for the per-class breakdown ==="