Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Nihlith

Custom Actor Errors

Recommended Posts

I have the latest official release of SLADE, in an archive (.7z) form, and the following files are in it:

  • slade3.txt
  • SLADE.pdb
  • slade.pk3
  • SLADE.exe
  • FreeImage.dll
  • libfluidsynth.dll
  • libsndfile-1.dll
  • openal32.dll

Nihlith said:

Is there an advantage to using multiple entries and the include function rather than placing all decorate info into one large lump?

Yes, organization and ease of access to your DECORATE entries.

Share this post


Link to post
Nihlith said:

Maxed, your success with file I linked seems to indicate that I have a problem with the program (SLADE) itself. I searched google for "slade install" and came up with this list of things that should be in your slade folder.

Slade.exe
Slade.pdb (optional, separate download)
slade.pk3
FreeImage.dll (windows only)
audiere.dll (windows only)
portable (optional)

I don't have an audiere.dll file on my computer.

Audiere is no longer used. The page you found is, I presume, on the slade-editor wikia, which is outdated.

Audiere is an audio library, but it's old and unmaintained and it caused problems so it had to be replaced.

Nihlith said:

Not to side track but I was looking at the decorate file for Necrosis and CodenniumRed a.k.a. Shades put all of his decorate info in one entry without using the include function. Is there an advantage to using multiple entries and the include function rather than placing all decorate info into one large lump?

The main advantage of using multiple entries is that it's a lot easier to maintain. If you have a single monolithic DECORATE lump with ten thousand lines, and you've noticed that the slime serpent monster (some custom actor found somewhere) really ought to have a bit less hitpoints, congrats, you have to scroll through ten thousand lines to find it. Okay, sure you can use the Find or Jump To functions to get to it quick, but that's if you remember its actor name.

And likewise, if you think one actor is causing problems, you can test that by commenting out the #include line which includes its lump, save, and test. Then you uncomment to reinclude the monster.

Share this post


Link to post

Hmmmm. Well I have all of those files... I've uninstalled re-downloaded and reinstalled DB2, GZDoom builder and SLADE. I hope that works.

To be clear, none of you had any problems with heresy or heresy1? None of the D_!@#$% files lost their programming language and became question mark icons in SLADE? No one had their decorate menu empty when they loaded heresy1 in DB2?

Now that I've replaced all of the relevant software, how does one properly configure SLADE? In all the time I've used it SLADE has never built nodes. does that seem right to you?

Share this post


Link to post
Nihlith said:

To be clear, none of you had any problems with heresy or heresy1? None of the D_!@#$% files lost their programming language and became question mark icons in SLADE? No one had their decorate menu empty when they loaded heresy1 in DB2?


Only the AoD'S showed a question mark.



[edit]
added image

Share this post


Link to post
Nihlith said:

Now that I've replaced all of the relevant software, how does one properly configure SLADE? In all the time I've used it SLADE has never built nodes. does that seem right to you?


In Slade, select Edit and then Preferences.
Then select the path to the nodebuilder in the appropriate menu



and click on the options you want to enable.

Share this post


Link to post

Fair nuf... I guess I wasn't very specific, I didn't mean how do I configure the program, I meant how should I set those configurations.
Melon wrote a newbie guide for doom builder that I found to be very useful:

http://www.doomworld.com/vb/doom-editing/55372-my-unfinished-newbie-udmf-level-editing-guide/

In it he describes how one should configure doom builder 2 if they are unfamiliar with the program and are just figuring it out. It would be a little narcissistic of me to ask for a similar piece about slade on my behalf, but I haven't seen any for anyone else.

I was wondering what settings you chose, and why you chose them. It might be incredibly important. I have a feeling that my problems might stem from a mistake so basic it wouldn't even occur to an experienced user to ask.

As for the question marks, I need to clarify. The AoD being represented by a question mark or a blank in DB2 and SLADE doesn't concern me much because you can still see how big he is and select him in the menus. Also, since he is the only one who does this, the question mark still works as a definitive identifier.

What I mean is that when you open a wad in SLADE, the lumps in the wad are displayed with an icon to the left of the entry name. When you view an entry as text, there is a drop down menu that tells you what language the text is being read as.

Before I create the decorate lump using the include function, each of the decorate entries has an icon that looks like a sheet of paper covered with text, and when selected and viewed as text, the drop down menu displays that the entry is being read as "Zdoom DECORATE".

However, after I create the decorate lump using the include function, the decorate entries that I have used the include function on have icons to the left of them that look like "?" and when they are viewed as text, the drop down menu indicates that the text language is "none".

Anyhoo, thank you, you're awesome and HAPPY HALLOWEEN everybody! Remember, you CAN have too much fun if you remember to not get caught!

Share this post


Link to post
Nihlith said:

... I didn't mean how do I configure the program, I meant how should I set those configurations.


My personal preference is that Slade3 should not build nodes for my map. So I did not tick off any options,
as in the previous image.

Only when testing and saving a map with GZDoom Builder do I employ a nodebuilder



If nodes are not present in a map, G/ZDoom will build them automatically with ZDBSP.

Nihlith said:

... However, after I create the decorate lump using the include function, the decorate entries that I have used the
include function on have icons to the left of them that look like "?" and when they are viewed as text, the drop
down menu indicates that the text language is "none".


I mentioned that in a previous post



That stands to reason as only predefined text lumps are recognized and have text highlighting applied automatically.
With lumps which you name, obviously, the editor would flag them as unknown and, as in this case, can be opened with
'View as Text'. Text highlighting is applied only once the type of text is selected.

Share this post


Link to post

I apologize for the misunderstanding, but I can see what you mean. After looking at some popular wads I can see that the changed format and icon are normal and that your recommendations are in line with best practices.
Still, we might be beating a dead horse. Using cut and paste or the include function to build one large DECORATE lump is causing some issues for me with DB2. If I can't make it work before, hopefully I can just put the large decorate entry together after I finish mapping.
I think I may have solved my monster problems. Now I want to figure out scripting (which may be off topic) and custom weapons, but I need to do some more research before I can cogently beg for help. I'm wondering if there is a way to look at the native ACS script for Hexen (it just says “ACS” when I try to look at behavior lumps as text) and I want to turn tome of power weapon modes into Alt Fire modes.
Thanks Kappes. Thanks also to Gaz, Blue Shadow and Max Ed. When I run into a wall again I hope that you or some other good Samaritan will show me around.

Share this post


Link to post

Awesome. Awesome to the max. Most of it is pretty dense but I can already add ambient sounds and monster spawners to my own wads.

Share this post


Link to post
Kappes Buur said:

I mentioned that in a previous post

quotepic

That stands to reason as only predefined text lumps are recognized and have text highlighting applied automatically.
With lumps which you name, obviously, the editor would flag them as unknown and, as in this case, can be opened with
'View as Text'. Text highlighting is applied only once the type of text is selected.

That's a bit annoying though, so now when you open a WAD file, its DECORATE files are parsed to check for any #included lump, and any that are found are marked as being of the DECORATE type.

There are two limitations to keep in mind:

  • This is only when opening a wad file; it does not happen whenever you edit, create, or rename an entry in an already-opened wad.
  • To prevent this from slowing down opening wad files, it does not cover nested includes. In other words, if you have for example a DECORATE lump containing #include "DEC_NME" and a DEC_NME lump containing #includes "DEC_IMPS", then DEC_NME will be marked as being a DECORATE entry, but DEC_IMPS will not, because only the DECORATE file is being parsed.
Also, only the first lump found with a matching name is marked. This is not a limitation because included lumps are supposed to be unique.

To get the development build, go here and download build 606.

Share this post


Link to post

All right, well I wanted to create a large roster of weapons with alternate firing modes and figured the simplest way to do this is to modify existing weapons with power up firing modes into weapons with alternate fire modes.

I take a look at a tutorial on Realm 667 about adding alternate states to weapons: http://www.realm667.com/index.php/en/tutorials-mainmenu-138/92-decorate/1339-medium-alternate-firereloadzoomwhatever-states-on-weapons

And open up Necrosis, a Hexen mod wad by the illustrious SHADES: http://www.moddb.com/mods/necrosis/downloads/necrosis

I look at his DECORATE, SNDINFO and KEYCONF files, as well as his images and sounds and attempt to isolate everything relating to the gauntlet weapons he put together. I want to change the tome of power fire mode into an alt fire mode. His decorate code looks like this:

//--PLAYER CLASSES--//

ACTOR FighterPlayer2 : FighterPlayer replaces FighterPlayer
{
    Health 120
    Player.Maxhealth 120
    Player.Runhealth 40
    Player.StartItem "FWeapFist2"
}

//****FIGHTERWEAPONS*****//

//-----Fist-----//

ACTOR FWeapFist2: FWeapFist replaces FWeapFist
{
  Weapon.SisterWeapon FWeapSuperFist
}

ACTOR FWeapSuperFist : FWeapFist
{
    +POWERED_UP
    Weapon.SisterWeapon FWeapFist
	Weapon.YAdjust 0
	Obituary "%o was seared to a crisp by %k's gauntlets."
	+WEAPON.NOAUTOFIRE
	States
	{
	Spawn:
		WGNT A -1
		Stop
	Ready:
		GAUN A 1 A_WeaponReady
		Wait
	Deselect:
		GAUN A 1 A_Lower
		Wait
	Select:
		GAUN A 1 A_Raise
		Wait
	Fire:
		GAUN A 3 A_PlaySound("weapons/gauntletsactivate")
		GAUN B 3 
		GAUN C 3 
		GAUN D 1 BRIGHT
		GAUN E 1 BRIGHT A_FireCustomMissile("GauntletFX1",0,1,-8)
		GAUN FGH 2
		GAU2 A 0 A_PlayWeaponSound("weapons/gauntletsrip")
		GAUN A 2 A_Refire
		Goto Ready
	Hold:
		GAUN A 0 A_JumpIfInventory("GauntletHand",1,"FireLeft")
	FireRight:
		GAUN I 2 A_GiveInventory("GauntletHand",1)
		GAUN J 1 BRIGHT
		GAUN K 1 BRIGHT A_FireCustomMissile("GauntletFX1",0,1,8)
		GAUN LMN 2
		GAU2 A 0 A_PlayWeaponSound("weapons/gauntletsrip")
		GAUN A 2 A_Refire
		Goto Ready
	FireLeft:
		GAUN O 2 A_TakeInventory("GauntletHand",1)
		GAUN P 1 BRIGHT
		GAUN E 1 BRIGHT A_FireCustomMissile("GauntletFX1",0,1,-8)
		GAUN FGH 2
		GAU2 A 0 A_PlayWeaponSound("weapons/gauntletsrip")
		GAUN A 2 A_Refire
		Goto Ready
	}
}

ACTOR GauntletHand : PuzzleItem
{
  Inventory.MaxAmount 3
  -INVBAR
}

ACTOR GauntletFX1 : WizardFX1
{
	Obituary "%o was seared to a crisp by %k's gauntlets."
	SeeSound "weapons/gauntletsshoot"
	DeathSound "weapons/macehit"
	Damage 7
	+SEEKERMISSILE
	Decal "PlasmaScorchLower"
	States
	{
	Spawn:
		GNFX A 0 BRIGHT A_SeekerMissile(20,20)
		GNFX AAA 1 BRIGHT A_SpawnItemEx("GauntletFX2",random2[BoltSpark]()*0.015625, random2[BoltSpark]()*0.015625, 0, 0,0,0,0,SXF_ABSOLUTEPOSITION, 50)
		GNFX B 0 BRIGHT A_SeekerMissile(20,20)
		GNFX BBB 1 BRIGHT A_SpawnItemEx("GauntletFX2",random2[BoltSpark]()*0.015625, random2[BoltSpark]()*0.015625, 0, 0,0,0,0,SXF_ABSOLUTEPOSITION, 50)
		Loop
	Death:
		GNFX C 4 BRIGHT A_SpawnItemEx("GauntletFX3",0,0,0,0,0,0,0,0)
		GNFX DEFG 4 BRIGHT
		Stop
	}
}

ACTOR GauntletFX2 : GauntletPuff2
{
	States
	{
	Spawn:
		GNFX HIJK 3 BRIGHT
		Stop
	}
}

ACTOR GauntletFX3 : GauntletFX2
{
	Alpha .8
	States
	{
	Spawn:
		GNFX NO 3 BRIGHT
		GNFX PPPQQQ 1 BRIGHT A_FadeOut(0.1)
		Stop
	}
}




                        My code looks like this:





//--PLAYER CLASSES--//

ACTOR FighterPlayer2 : FighterPlayer replaces FighterPlayer
{
    Health 120
    Player.Maxhealth 120
    Player.Runhealth 15
    Player.StartItem "FWeapFist2"
}

//****FIGHTERWEAPONS*****//

//-----Fist-----//

ACTOR FWeapFist2: FWeapFist replaces FWeapFist
{
  States
  {
  Select:
    FPCH A 1 A_Raise
    Loop
  Deselect:
    FPCH A 1 A_Lower
    Loop
  Ready:
    FPCH A 1 A_JumpIfInventory("IsFiring", 1, "AltFire") 
	FPCH A 1 A_weaponready
    Loop
	
	AltFire:
	Ready:
		GAUN A 1 A_WeaponReady
		Wait
	Deselect:
		GAUN A 1 A_Lower
		Wait
	Select:
		GAUN A 1 A_Raise
		Wait
	Fire:
		GAUN A 3 A_PlaySound("weapons/gauntletsactivate")
		GAUN B 3 
		GAUN C 3 
		GAUN D 1 BRIGHT
		GAUN E 1 BRIGHT A_FireCustomMissile("GauntletFX1",0,1,-8)
		GAUN FGH 2
		GAU2 A 0 A_PlayWeaponSound("weapons/gauntletsrip")
		GAUN A 2 A_Refire
		Goto Ready
	Hold:
		GAUN A 0 A_JumpIfInventory("GauntletHand",1,"FireLeft")
	FireRight:
		GAUN I 2 A_GiveInventory("GauntletHand",1)
		GAUN J 1 BRIGHT
		GAUN K 1 BRIGHT A_FireCustomMissile("GauntletFX1",0,1,8)
		GAUN LMN 2
		GAU2 A 0 A_PlayWeaponSound("weapons/gauntletsrip")
		GAUN A 2 A_Refire
		Goto Ready
	FireLeft:
		GAUN O 2 A_TakeInventory("GauntletHand",1)
		GAUN P 1 BRIGHT
		GAUN E 1 BRIGHT A_FireCustomMissile("GauntletFX1",0,1,-8)
		GAUN FGH 2
		GAU2 A 0 A_PlayWeaponSound("weapons/gauntletsrip")
		GAUN A 2 A_Refire
		Goto Ready
	}
}

ACTOR GauntletHand : PuzzleItem
{
  Inventory.MaxAmount 3
  -INVBAR
}

ACTOR GauntletFX1 : WizardFX1
{
	Obituary "%o was seared to a crisp by %k's gauntlets."
	SeeSound "weapons/gauntletsshoot"
	DeathSound "weapons/macehit"
	Damage 7
	+SEEKERMISSILE
	Decal "PlasmaScorchLower"
	States
	{
	Spawn:
		GNFX A 0 BRIGHT A_SeekerMissile(20,20)
		GNFX AAA 1 BRIGHT A_SpawnItemEx("GauntletFX2",random2[BoltSpark]()*0.015625, random2[BoltSpark]()*0.015625, 0, 0,0,0,0,SXF_ABSOLUTEPOSITION, 50)
		GNFX B 0 BRIGHT A_SeekerMissile(20,20)
		GNFX BBB 1 BRIGHT A_SpawnItemEx("GauntletFX2",random2[BoltSpark]()*0.015625, random2[BoltSpark]()*0.015625, 0, 0,0,0,0,SXF_ABSOLUTEPOSITION, 50)
		Loop
	Death:
		GNFX C 4 BRIGHT A_SpawnItemEx("GauntletFX3",0,0,0,0,0,0,0,0)
		GNFX DEFG 4 BRIGHT
		Stop
	}
}

ACTOR GauntletFX2 : GauntletPuff2
{
	States
	{
	Spawn:
		GNFX HIJK 3 BRIGHT
		Stop
	}
}

ACTOR GauntletFX3 : GauntletFX2
{
	Alpha .8
	States
	{
	Spawn:
		GNFX NO 3 BRIGHT
		GNFX PPPQQQ 1 BRIGHT A_FadeOut(0.1)
		Stop
	}
}

Actor Action_Fire : CustomInventory
{
  Inventory.Amount 1
  Inventory.MaxAmount 1
  -INVBAR
  States
  {
  Use:
    TNT1 A 0 A_GiveInventory("IsFiring", 1)
    Fail // It's important that these items end in "Fail" instead of "Stop" or else they are removed from inventory as soon as they are used. Fail will keep them in your inventory.
  }
}

Actor Action_FireCancel : CustomInventory
{
  Inventory.Amount 1
  Inventory.MaxAmount 1
  -INVBAR
  States
  {
  Use:
    TNT1 A 0 A_TakeInventory("IsFiring", 1)
    Fail
  }
}
And just like that I have invented a way to play the game without a starting weapon. There is no slot one weapon with this code. Does anyone know what made it go so terribly wrong?

Share this post


Link to post

And now for the riveting sequel! I realized that SLADE was not saving the changes I had been making as faithfully as I had thought and that this was causing me to edit and re edit things without actually seeing what effects these new edits were having.
Armed with this information, I did get gauntlets with an alternate firing mode to appear in game, but the alternate fire isn't all I hoped for. There is no graphic for the alt fire, it looks like you just lower your guard and things start dying in the distance. Stranger still the alt fire happens instead of the second punch in the three punch combo if you try to use primary fire. Also the sound works, so that's something. Funny, but underwhelming. The code looks like this:

//****FIGHTERWEAPONS*****//

//-----Fist-----//

ACTOR FWeapFist2: FWeapFist 31100
{
States
{
Select:
FPCH A 1 A_Raise
Loop
Deselect:
FPCH A 1 A_Lower
Loop
Ready:
FPCH A 0 A_JumpIfInventory("IsFiring", 1, "AltAltFire") //We're checking for the fake inventory item
FPCH A 1 A_WeaponReady
Loop
Fire:
FPCH B 5 Offset(5, 40)
FPCH C 4 Offset(5, 40)
FPCH D 4 Offset(5, 40) A_FPunchAttack
FPCH C 4 Offset(5, 40)
FPCH B 5 Offset(5, 40) A_ReFire
Goto Ready
Fire2:
FPCH DE 4 Offset(5, 40)
FPCH E 1 Offset(15, 50)
FPCH E 1 Offset(25, 60)
FPCH E 1 Offset(35, 70)
FPCH E 1 Offset(45, 80)
FPCH E 1 Offset(55, 90)
FPCH E 1 Offset(65, 90)
FPCH E 10 Offset(0, 150)
Goto Ready

ALtFire:
GAUN A 3 A_PlaySound("weapons/gauntletsactivate")
GAUN B 3
GAUN C 3
GAUN D 1 BRIGHT
GAUN E 1 BRIGHT A_FireCustomMissile("GauntletFX1",0,1,-8)
GAUN FGH 2
GAU2 A 0 A_PlayWeaponSound("weapons/gauntletsrip")
GAUN A 2 A_Refire
Goto Ready
Hold:
GAUN A 0 A_JumpIfInventory("GauntletHand",1,"FireLeft")
FireRight:
GAUN I 2 A_GiveInventory("GauntletHand",1)
GAUN J 1 BRIGHT
GAUN K 1 BRIGHT A_FireCustomMissile("GauntletFX1",0,1,8)
GAUN LMN 2
GAU2 A 0 A_PlayWeaponSound("weapons/gauntletsrip")
GAUN A 2 A_Refire
Goto Ready
FireLeft:
GAUN O 2 A_TakeInventory("GauntletHand",1)
GAUN P 1 BRIGHT
GAUN E 1 BRIGHT A_FireCustomMissile("GauntletFX1",0,1,-8)
GAUN FGH 2
GAU2 A 0 A_PlayWeaponSound("weapons/gauntletsrip")
GAUN A 2 A_Refire
Goto Ready
}
}

ACTOR GauntletHand : PuzzleItem
{
Inventory.MaxAmount 3
-INVBAR
}

ACTOR GauntletFX1 : WizardFX1
{
Obituary "%o was seared to a crisp by %k's gauntlets."
SeeSound "weapons/gauntletsshoot"
DeathSound "weapons/macehit"
Damage 7
+SEEKERMISSILE
Decal "PlasmaScorchLower"
States
{
Spawn:
GNFX A 0 BRIGHT A_SeekerMissile(20,20)
GNFX AAA 1 BRIGHT A_SpawnItemEx("GauntletFX2",random2[BoltSpark]()*0.015625, random2[BoltSpark]()*0.015625, 0, 0,0,0,0,SXF_ABSOLUTEPOSITION, 50)
GNFX B 0 BRIGHT A_SeekerMissile(20,20)
GNFX BBB 1 BRIGHT A_SpawnItemEx("GauntletFX2",random2[BoltSpark]()*0.015625, random2[BoltSpark]()*0.015625, 0, 0,0,0,0,SXF_ABSOLUTEPOSITION, 50)
Loop
Death:
GNFX C 4 BRIGHT A_SpawnItemEx("GauntletFX3",0,0,0,0,0,0,0,0)
GNFX DEFG 4 BRIGHT
Stop
}
}

ACTOR GauntletFX2 : GauntletPuff2
{
States
{
Spawn:
GNFX HIJK 3 BRIGHT
Stop
}
}

ACTOR GauntletFX3 : GauntletFX2
{
Alpha .8
States
{
Spawn:
GNFX NO 3 BRIGHT
GNFX PPPQQQ 1 BRIGHT A_FadeOut(0.1)
Stop
}
}



And it makes me cry. I've included the images for the alt-fire in the wad, so it's a little confusing.

Share this post


Link to post

There hasn't been much activity here for a while, I'm going to keep a happy thought: my teachers were compelling me to seek a deeper wisdom by looking within.

And I have, though things have been a bit hecktic lately, I have a better idea of how things work now than I did when I started, and it has to be said that coding the gauntlets is alot more difficult than coding many of the other weapons.

Anyways, I have most of the weapons I wanted to code done, now I must arrange and cosmetically alter them to fit a theme...

I wanted to delete the previous two posts because contrary to popular belief, we do not learn more from mistakes than successes, but I couldn't.

Here is the code for super bad ass energy shooting spiked gauntlets, in order to use this code, you must have necrosis, and transfer the GLDEFS, SNDINFO, sound files and image files into the wad. You will need to alter key config in order to select the new weapon.

//--PLAYER CLASSES--//

ACTOR FighterPlayer2 : FighterPlayer replaces FighterPlayer
{
        Player.StartItem "FWeapFist2"
	Player.StartItem "Action_Fire" 
	Player.StartItem "Action_FireCancel"
}

Actor IsFiring : Inventory
{
  Inventory.Amount 1 //This doesn't technically need to be here but it's better to make sure
  Inventory.MaxAmount 1
  -INVBAR //Keeps it from displaying in the inventory bar, but you don't have to worry
  States
  {
  Spawn:
    TNT1 A 1
    Fail //Keeps it from really doing anything in the world
  }
}

Actor Action_Fire : CustomInventory
{
  Inventory.Amount 1
  Inventory.MaxAmount 1
  -INVBAR
  States
  {
  Use:
    TNT1 A 0 A_GiveInventory("IsFiring", 1)
    Fail // It's important that these items end in "Fail" instead of "Stop" or else they are removed from inventory as soon as they are used. Fail will keep them in your inventory.
  }
}

Actor Action_FireCancel : CustomInventory
{
  Inventory.Amount 1
  Inventory.MaxAmount 1
  -INVBAR
  States
  {
  Use:
    TNT1 A 0 A_TakeInventory("IsFiring", 1)
    Fail
  }
}


ACTOR FWeapFist2: FWeapFist replaces FWeapFist
{
  +WEAPON.MELEEWEAPON
  States
  {
  Select:
    FPCH A 1 A_Raise
    Loop
  Deselect:
    FPCH A 1 A_Lower
    Loop
  Ready:
	FPCH A 0 A_JumpIfInventory("IsFiring", 1, "AltFire")
    FPCH A 1 A_WeaponReady
    Loop
  Fire:
    FPCH B 5 Offset(5, 40)
    FPCH C 4 Offset(5, 40)
    FPCH D 1 Offset(5, 40) A_FPunchAttack
    FPCH C 4 Offset(5, 40)
    FPCH B 5 Offset(5, 40) A_ReFire
    Goto Ready
	
	AltFire:
		GAUN A 0 A_JumpIfInventory("GauntletHand",1,"FireLeft")
	FireRight:
		GAUN I 2 A_GiveInventory("GauntletHand",1)
		GAUN J 1 BRIGHT
		GAUN K 1 BRIGHT A_FireCustomMissile("GauntletFX1",0,1,8)
		GAUN LMN 2
		GAU2 A 0 A_PlayWeaponSound("weapons/gauntletsrip")
		GAUN A 2 A_Refire
		Goto Ready
	FireLeft:
		GAUN O 2 A_TakeInventory("GauntletHand",1)
		GAUN P 1 BRIGHT
		GAUN E 1 BRIGHT A_FireCustomMissile("GauntletFX1",0,1,-8)
		GAUN FGH 2
		GAU2 A 0 A_PlayWeaponSound("weapons/gauntletsrip")
		GAUN A 2 A_Refire
		Goto Ready
  }
}

ACTOR GauntletHand : PuzzleItem
{
  Inventory.MaxAmount 3
  -INVBAR
}

ACTOR GauntletFX1 : WizardFX1
{
	Obituary "%o was seared to a crisp by %k's gauntlets."
	SeeSound "weapons/gauntletsshoot"
	DeathSound "weapons/macehit"
	Damage 7
	+SEEKERMISSILE
	Decal "PlasmaScorchLower"
	States
	{
	Spawn:
		GNFX A 0 BRIGHT A_SeekerMissile(20,20)
		GNFX AAA 1 BRIGHT A_SpawnItemEx("GauntletFX2",random2[BoltSpark]()*0.015625, random2[BoltSpark]()*0.015625, 0, 0,0,0,0,SXF_ABSOLUTEPOSITION, 50)
		GNFX B 0 BRIGHT A_SeekerMissile(20,20)
		GNFX BBB 1 BRIGHT A_SpawnItemEx("GauntletFX2",random2[BoltSpark]()*0.015625, random2[BoltSpark]()*0.015625, 0, 0,0,0,0,SXF_ABSOLUTEPOSITION, 50)
		Loop
	Death:
		GNFX C 4 BRIGHT A_SpawnItemEx("GauntletFX3",0,0,0,0,0,0,0,0)
		GNFX DEFG 4 BRIGHT
		Stop
	}
}

ACTOR GauntletFX2 : GauntletPuff2
{
	States
	{
	Spawn:
		GNFX HIJK 3 BRIGHT
		Stop
	}
}

ACTOR GauntletFX3 : GauntletFX2
{
	Alpha .8
	States
	{
	Spawn:
		GNFX NO 3 BRIGHT
		GNFX PPPQQQ 1 BRIGHT A_FadeOut(0.1)
		Stop
	}
}
I love this weapon, it does put the player in a position of greater power and I plan on altering some of the base monsters to compensate for this, but its still alot of fun to run through the seven portals blasting energy balls and breaking jaws.
More weapons with alternate fire modes will make an appearance in my wad, as will all new weapons never before seen by the doom community.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×