header general

[SUBMISSION] M79 'Pirate Pistol'

  • LossForWords
  • LossForWords's Avatar Topic Author
  • Wraith
  • Wraith
More
2 weeks 4 days ago - 1 week 2 days ago #1 by LossForWords
[SUBMISSION] M79 'Pirate Pistol' was created by LossForWords
Name: M79 'Pirate Pistol'
Class: 5
Type: Projectile/Explosive
Palette: Doom
Summon: M79Pirate
Ammo Type: RocketAmmo (Reserve), M79Loaded (Magazine)
Altfire: No
Powered Mode: No
Brightmaps: No
Actor modification: No
ACS: No

The 60's classic, sawed to it's bare essentials for the modern age.
Fires a grenade that flies at an arc, and explodes in a wide radius, pushing back enemies.

Credits in file.



File Attachment:

File Name: M79PiratePistol.zip
File Size:173 KB
Last edit: 1 week 2 days ago by LossForWords. Reason: Updated explosions.

Please Log in or Create an account to join the conversation.

  • Gothic
  • Gothic's Avatar
  • Moderator
  • Moderator
More
1 week 2 days ago #2 by Gothic
Replied by Gothic on topic [SUBMISSION] M79 'Pirate Pistol'
Replace all NULL frames with TNT1.
Is there a reason why the damaging explosion has to be a separate actor and not be defined in the grenade itself?
The explosion effects might do this when hitting a lowered ceiling or a raised floor:

If the effects are purely decorative, you should remove all physical properties and flags, give them the +NOINTERACTION flag, and keep only rendering properties:
Code:
Actor 40mmExplode {     -SPRITEFLIP     +ROLLSPRITE     +FORCEXYBILLBOARD     +BRIGHT     +NOINTERACTION     Scale 0.9     Alpha 0.9     Renderstyle "Add"     States     {     Spawn:         FTX1 A 0         FTX1 A 0 A_ChangeFlag("SPRITEFLIP",random(0,1))         FTX1 AAABBBCCCDDDEEEFFF 1 { A_FadeOut(0.05,1); A_SetScale(ScaleX + 0.01); A_SetRoll(Roll+frandom(-2, 2),SPF_INTERPOLATE); }         Stop     } } Actor 40mmFlash {     -SPRITEFLIP     +ROLLSPRITE     +FORCEXYBILLBOARD     +BRIGHT     +NOINTERACTION     Scale 1.5     Alpha 0.9     Renderstyle "Add"     States     {     Spawn:         FTX3 A 0         FTX3 A 0 A_ChangeFlag("SPRITEFLIP",random(0,1))         Goto Fadeout     Fadeout:         FTX3 A 1 { A_SetScale(FRandom(0.5, 0.8) * ScaleX); A_FadeOut(FRandom(0.1, 0.15)); }         Wait     } }
And spawn them using A_SpawnItemEx instead of using them as "projectiles":
Code:
  Death:     TNT1 A 0 A_SpawnItemEx ("40mmBoom",0,0,13,0,0,0,0,SXF_TRANSFERPOINTERS|SXF_NOCHECKPOSITION,0)     TNT1 A 0 A_SpawnItemEx("40mmFlash", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE)     TNT1 A 0 A_CheckFloor("FloorKlutz")     TNT1 AA 0 A_SpawnItemEx ("40mmExplode",0,0,0,2,0,random(-2,2),random(0,359),SXF_CLIENTSIDE)     TNT1 AAAAA 0 A_SpawnItemEx ("40mmExplode",0,0,0,2,0,random(-3,3),random(0,359),SXF_CLIENTSIDE)     TNT1 AA 0 A_SpawnItemEx ("40mmExplode",0,0,0,2,0,random(-4,4),random(0,359),SXF_CLIENTSIDE)     TNT1 AAAAAAAAAAA 1 A_Quake(15,18,0,3200,"none")     Stop      FloorKlutz:     TNT1 AA 0 A_SpawnItemEx ("40mmExplode",0,0,0,2,0,random(1,2),random(0,359),SXF_CLIENTSIDE)     TNT1 AAAAA 0 A_SpawnItemEx ("40mmExplode",0,0,0,2,0,random(1,3),random(0,359),SXF_CLIENTSIDE)     TNT1 AA 0 A_SpawnItemEx ("40mmExplode",0,0,0,2,0,random(2,4),random(0,359),SXF_CLIENTSIDE)     TNT1 AAAAAAAAAAA 1 A_Quake(15,18,0,3200,"none")     Stop   } }

Please Log in or Create an account to join the conversation.

  • LossForWords
  • LossForWords's Avatar Topic Author
  • Wraith
  • Wraith
More
1 week 2 days ago #3 by LossForWords
Replied by LossForWords on topic [SUBMISSION] M79 'Pirate Pistol'
Done. The +NOINTERACTION flag being missing is just an oversight, and i wasn't awfully familiar with SpawnItemEX.

For some reason i've had terrible luck with ground explosions dealing little to no radius damage to enemies, so i've decided to have it as a separate actor that spawns slightly higher so enemies can take full damage.

Please Log in or Create an account to join the conversation.

  • Gothic
  • Gothic's Avatar
  • Moderator
  • Moderator
More
1 week 1 day ago #4 by Gothic
Replied by Gothic on topic [SUBMISSION] M79 'Pirate Pistol'
Added

Please Log in or Create an account to join the conversation.