What I'm getting: It spins alright, but FireMinigun: is never reached. I can tell because "I'm a minigun!" is never logged.
Spoiler: Weapon Code
class MWSChaingun : MWSWeapon { private bool minigun; Default { AttackSound "weapons/chngun"; Weapon.SlotNumber 4; Decal "BulletChip"; Weapon.SelectionOrder 700; Weapon.AmmoUse 1; Weapon.AmmoType "Clip"; Weapon.AmmoUse2 1; Weapon.AmmoType2 "Clip"; Weapon.AmmoGive 20; Inventory.PickupMessage "$GOTCHAINGUN"; Obituary "$OB_MPCHAINGUN"; Tag "$TAG_CHAINGUN"; } action void A_ZFireCGun(int damage = 5, double spread_horz = 5.6, double spread_vert = 5.6) { if (MWS_accuratechaingun) { A_FireBullets (0, 0, 1, damage, "BulletPuff"); A_GunFlash(); } else { if(GetCVar("vertspread")) { A_FireBullets (spread_horz, spread_vert, 1, damage, "BulletPuff"); } if(!GetCVar("vertspread")) { A_FireBullets (spread_horz, 0, 1, damage, "BulletPuff"); } A_GunFlash(); } } States { Select: CHGG A 1 A_FastRaise(); Loop; Deselect: CHGG A 1 A_FastLower(); Wait; Ready: CHGG A 1 { invoker.minigun == false; A_MWSReady(); } Loop; Fire: PKCG A 0 A_JumpIf(invoker.minigun == true, "FireMinigun"); PKCG A 0 A_JumpIf(!GetCVar("MWS_responsive"), "FireOld"); Goto FireNormal; FireNormal: PKCG "#" 1 A_ZFireCGun(); PKCG BCD 1; PKCG "#" 0 A_ReFire(); Goto CoolDown; FireMinigun: TNT1 A 0 A_Print("I'm a minigun!"); PKCG "#" 0 A_ZFireCGun(); PKCG BCD 1; PKCG "#" 0 A_JumpIf(player.cmd.buttons & BT_ATTACK, "FireMinigun"); Goto MinigunCoolDown; FireOld: PKCG A 1 A_ZFireCGun(); PKCG BCD 1; PKCG A 1 A_ZFireCGun(); PKCG BCD 1; PKCG B 0 A_JumpIf(player.cmd.buttons & BT_ATTACK, "FireOld"); Goto CoolDown; CoolDown: PKCG A 1 A_MWSReady(); PKCG BBCCCDDD 1 A_MWSReady(); Goto Ready; WindUp: AltFire: PKCG AAABBBCCCDDD 1 { invoker.minigun == true; A_MWSReady();} Loop; MinigunCoolDown: PKCG A 4 A_MWSReady(); PKCG BBCCCDDD 2; Goto Ready; Flash: TNT1 A 0; TNT1 A 0 A_Jump(128, "Flash2"); PKCF A 1 Bright A_Light1(); PKCF B 1 Bright A_Light2(); TNT1 A 2 A_Light1(); Goto LightDone; Flash2: PKCF C 1 Bright A_Light1(); PKCF D 1 Bright A_Light2(); TNT1 A 2 A_Light1(); Goto LightDone; Spawn: MGUN A -1; Stop; } }
Spoiler: MWSWeapon
Class MWSWeapon : Weapon abstract { Default { Weapon.BobStyle "Inverse"; Weapon.Kickback 50; } States { User2: FlashLight: "####" "#" 0 FlashLight(); "####" "#" 0 A_WeaponReady(); "####" "#" 20; "####" "#" 0 ResolveState("Ready"); Stop; // never reached. } action void A_FastRaise(void) { // this is a leftover from when fast weapon switching was tied to responsive weapons being enabled. A_Raise(MWS_switchspeed); } action void A_FastLower(void) { // this is a leftover from when fast weapon switching was tied to responsive weapons being enabled. A_Lower(MWS_switchspeed); } action void A_MoveOverlay(int layer = PSP_WEAPON, double x = 0, double y = 32, int flags = 0) { // introduced to avoid typing WOF_ADD everywhere. WOF_ADD implies WOF_INTERPOLATE. A_OverlayOffset(layer, x, y, WOF_ADD|flags); } action void A_MoveOverlayAbs(int layer = PSP_WEAPON, double x = 0, double y= 32, int flags = 0) { // some offsets are absolute offsets, so to avoid typing WOF_INTERPOLATE all the time i use this. A_OverlayOffset(layer, x, y, WOF_INTERPOLATE|flags); } action void A_MoveWeapon(double x = 0, double y = 32, int flags = 0) { // introduced to avoid typing WOF_ADD everywhere. WOF_ADD implies WOF_INTERPOLATE. A_WeaponOffset(x, y, WOF_ADD|flags); } action void A_MoveWeaponAbs(double x = 0, double y= 32, int flags = 0) { // some offsets are absolute offsets, so to avoid typing WOF_INTERPOLATE all the time i use this. A_WeaponOffset(x, y, WOF_INTERPOLATE|flags); } action void A_SpawnSwirl(string color, int flags = 0) { A_SpawnParticle ( color, SPF_FULLBRIGHT|SPF_RELVEL|SPF_RELACCEL|flags, lifetime:random(50,90), size:frandom(5,10), angle:frandom(0,359), xoff:frandom(-radius,radius), yoff:frandom(-radius,radius), zoff:frandom(height,height+9), velx:frandom(0.5,1.5), velz:frandom(1,2), accelx:frandom(-0.05,-0.2), accelz:-0.1, startalphaf:0.9, sizestep:-0.2 ); } action void FlashLight(void) { EventHandler.SendNetworkEvent("flashlight_plus_toggle"); } action void A_MWSReady(void) { A_WeaponReady(MWS_READYFLAGS); } }