Combat: AUTHENTIC weapon groups -- streamed per-mech button bindings + the real fire chain (task #5)
The recovered system: fire channels = LBE4ControlsManager buttonGroups (0x40/0x45/0x46/0x47); default groups = the per-mech type-6 controls-map resource in BTL4.RES, installed by the T0 CreateStreamedMappings the port already called -- it needed only the TriggerState attribute (id 0x13 PINNED to the binary value; fireImpulse@0x31C is the binary's TriggerState) and an input feed. Keyboard/harness now push press/release edges into the button groups; the gBT*Trigger bypasses, per-type keyboard split and 1,0 pulse hack are retired -- weapons sharing a button fire TOGETHER (madcat Trigger = 4 weapons). Myomers @4b9550/@4b95b8 misattribution corrected (they are MechWeapon ConfigureMappables/ChooseButton). Verified 2-node: kill through the authentic chain (12 hits vs ~36 pre-groups). Config-mode session (regrouping UI) = the remaining stage, KB-scoped. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
4554ea543a
commit
8ed6184d65
@@ -534,21 +534,15 @@ void
|
||||
DrawFiringCharge(time_slice); // @004bbc78 -- bleed recoil (+0x3E8)
|
||||
UpdateEject(time_slice); // @004bbb50 -- idle unless ejectState==0
|
||||
|
||||
// 2. Rising-edge trigger from the owning Mech's discharge signal.
|
||||
// Bring-up: the controls mapper is bypassed, so drive fireImpulse from the
|
||||
// per-frame trigger pulse -- else CheckFireEdge never sees an edge and a
|
||||
// projectile weapon never fires. SPLIT CONTROLS (interim, toward the real
|
||||
// controls-mapper weapon groups): projectile weapons (the missile
|
||||
// launchers, cannon) fire on the MISSILE channel (CTRL), not the
|
||||
// energy-weapon channel (SPACE) -- one key no longer fires everything.
|
||||
extern int gBTMissileTrigger;
|
||||
fireImpulse = (Scalar)gBTMissileTrigger; // this+0x31C
|
||||
// 2. AUTHENTIC TRIGGER (task #5): fireImpulse = the TriggerState attribute
|
||||
// the streamed controls map binds to the pod fire buttons (see emitter.cpp
|
||||
// note). The gBTMissileTrigger bypass is retired.
|
||||
Logical trigger = CheckFireEdge(); // MechWeapon @004b9608
|
||||
|
||||
static int s_pwtick = 0;
|
||||
if (getenv("BT_PROJ_LOG") && (((++s_pwtick) % 240) == 0 || trigger))
|
||||
DEBUG_STREAM << "[projweap] tick " << GetName() << " trig=" << (int)trigger
|
||||
<< " gTrig=" << gBTMissileTrigger << " ready=" << (int)ReadyToFire()
|
||||
<< " trigState=" << (float)fireImpulse << " ready=" << (int)ReadyToFire()
|
||||
<< " state=" << weaponAlarm.GetState() << " recoil=" << recoil << " x\n" << std::flush;
|
||||
|
||||
// 3. Firing state machine (weaponAlarm @0x350). Modelled on the RP analog
|
||||
|
||||
Reference in New Issue
Block a user