While I'm definitely proud of it ("Hello world!"), being my first one and all, I'm mostly curious to know what's WRONG with it, if anyone wouldn't mind throwing me some advice in that regard. What is inefficient, what can be done in a better or simpler way, what makes no sense, poor design in general etc.

What else I'd like to do with it:

- Would like to find a better muzzle flash, since this is basically just a rip from the original.

- Also think I can find something a bit better than the current firing sound. I like it a lot, but I would like to find something that really "roars". The original Wolf3D chaingun did this very well (in Masters of Doom, there's a story recounted where Romero laughs his ass off the first time he tests the chaingun), but of course that SFX is a bit oudated.

- Find a 'hissing' sound for the HardSpindown state

- Also, also: Does anyone know if there's a way to increase the rate of fire a bit more? As it stands, I have: WCGN DE 2 A_FireBullets(0, 0, 2, 20) for the main firing animation, but when I drop the frame tics down to 1, it's just TOO fast. Is there any way to get "1.5"?

Here is the DECORATE code for anyone who doesn't wish to download the wad:

Code: Select all

```
ACTOR WolfChaingun : Chaingun
{
weapon.AmmoUse 2
weapon.SlotNumber 4
weapon.bobStyle alpha
weapon.bobSpeed 1.4
weapon.bobRangeX 0.3
weapon.bobRangeY 0.3
AttackSound "weapons/wolfcgfire"
states
{
Spawn:
WCGN P -1
Stop
Ready:
WCGN A 1 A_WeaponReady
Loop
Deselect:
WCGN A 0 A_Lower
WCGN A 1 A_Lower
Loop
Select:
WCGN A 0 A_Raise
WCGN A 1 A_Raise
Loop
Fire:
WCGN C 2
WCGN BC 1
TNT1 A 0 A_GunFlash
WCGN DE 2 A_FireBullets(0, 0, 2, 20)
TNT1 A 0 A_Recoil(0.5)
TNT1 A 0 A_SetPitch(pitch - 1.5)
TNT1 A 0 A_ReFire
goto Spindown
Hold:
TNT1 A 0 A_Recoil(0.5)
TNT1 A 0 A_GunFlash
WCGN DE 2 A_FireBullets(2, 0, 2, 20)
TNT1 A 0 A_SetAngle(angle - random(1, -1))
TNT1 A 0 A_SetPitch(pitch - 1)
TNT1 A 0 A_Refire("Hold2")
goto Spindown
Hold2:
TNT1 A 0 A_Recoil(0.5)
TNT1 A 0 A_GunFlash
WCGN DE 2 A_FireBullets(2, 1, 2, 20)
TNT1 A 0 A_SetAngle(angle - random(1, -1))
TNT1 A 0 A_SetPitch(pitch - 1)
TNT1 A 0 A_Refire("Hold3")
goto Spindown
Hold3:
TNT1 A 0 A_Recoil(0.5)
TNT1 A 0 A_GunFlash
WCGN DE 2 A_FireBullets(3, 2, 2, 20)
TNT1 A 0 A_SetAngle(angle - random(2, -2))
TNT1 A 0 A_SetPitch(pitch - 2)
TNT1 A 0 A_Refire("Hold4")
goto Spindown
Hold4:
TNT1 A 0 A_Recoil(0.5)
TNT1 A 0 A_GunFlash
WCGN DE 2 A_FireBullets(5, 4, 2, 20)
TNT1 A 0 A_SetAngle(angle - random(3, -3))
TNT1 A 0 A_SetPitch(pitch - 3)
TNT1 A 0 A_Refire("Hold5")
goto Spindown
Hold5:
TNT1 A 0 A_Jump
TNT1 A 0 A_Recoil(1)
TNT1 A 0 A_GunFlash
WCGN DE 2 A_FireBullets(12, 7, 2, 20)
TNT1 A 0 A_SetAngle(angle - random(12, -12))
TNT1 A 0 A_SetPitch(pitch - 5)
TNT1 A 0 A_Jump(8, "Jam")
TNT1 A 0 A_Refire("Hold5")
goto HardSpindown
Spindown:
TNT1 A 0 A_SetPitch (pitch + 0.5)
WCGN BC 2 A_SetPitch(pitch + 0.25)
WCGN BC 4 Offset(0,40) A_ReFire
WCGN BC 8 Offset(0,42) A_ReFire
Goto Ready
//END ON 'CHIK' SOUND
HardSpindown:
TNT1 A 0 A_SetPitch (pitch + 5)
WCGN BC 2 Offset(0,38) A_SetPitch(pitch + 2)
WCGN BC 4 Offset(0,40) A_ReFire
WCGN BC 8 Offset(0,42) A_ReFire
Goto Ready
//END ON 'CLUNK' SOUND
//FIND 'HISSING' SOUND FOR THIS STATE
Jam:
TNT1 A 0 A_PlaySound("weapons/wolfcgfire")
TNT1 A 0 A_Recoil(0.1)
TNT1 A 0 A_GunFlash("Flash2")
WCGN DE 1 A_FireBullets(12, 7, 2, 20)
TNT1 A 0 A_SetAngle(angle - 15)
TNT1 A 0 A_SetPitch(pitch - 5)
TNT1 A 0 A_Jump(4, "HardSpindown")
TNT1 A 0 A_JumpIfNoAmmo("HardSpindown")
Loop
Flash:
WCGN DE 2 BRIGHT A_Light2
Goto LightDone
Flash2:
WCGN DE 1 BRIGHT A_Light2
Goto LightDone
}
}
```