But I'll get to the point. I think it can be improved greatly, thanks to more modern coding. I'm no genius, but I'd be more than happy to put my weight behind an effort to fix it up. The more I look at it, the more I'm convinced that the only reason it wasn't cleaned up sooner is because no one really cared enough. And I suppose I understand that, since I've never seen any other project that needed it, until mine (and Xaser's, but I didn't know about Psychic until my own project was well into its development).
Now, I turn to the community for input. I know I'm not a genius, and for the most part, raw source code goes well over my head. So I ask, does anyone feel I've missed any vital information on this issue? Am I completely misguided on how I'm thinking here? If my thoughts here are incorrect or incomplete, I should find that out sooner rather than later. On the other hand, if anyone supports this idea, I suppose I should know that too.
As a miscellaneous tidbit, here's some code I churned out during my investigations a few days ago, when trying to create a simplified-yet-identical weapon out of the Sigil. As I mentioned above, I found it impossible, as inheritance doesn't work the same at all with this weapon... I particularly think my Deselect state rewrite highlights just how needlessly complex/outdated the original Sigil's code is.
Code: Select all
ACTOR MGStrifeSigil : Sigil
{
Tag "SIGIL"
+FLOORCLIP
+WEAPON.CHEATNOTWEAPON
Weapon.SelectionOrder 4000
Weapon.Kickback 100
Health 1
Inventory.PickupSound "weapons/sigilcharge"
Inventory.PickupMessage "You picked up the SIGIL."
Inventory.Icon "I_SGL1"
States
{
Ready:
TNT1 A 0 A_JumpIfInventory("MGSigilPiece",5,"Ready5")
TNT1 A 0 A_JumpIfInventory("MGSigilPiece",4,"Ready4")
TNT1 A 0 A_JumpIfInventory("MGSigilPiece",3,"Ready3")
TNT1 A 0 A_JumpIfInventory("MGSigilPiece",2,"Ready2")
TNT1 A 0 A_JumpIfInventory("MGSigilPiece",1,"Ready1")
Wait
Ready1:
SIGH A 1 Bright A_WeaponReady
Wait
Ready2:
SIGH B 1 Bright A_WeaponReady
Wait
Ready3:
SIGH C 1 Bright A_WeaponReady
Wait
Ready4:
SIGH D 1 Bright A_WeaponReady
Wait
Ready5:
SIGH E 1 Bright A_WeaponReady
Wait
Deselect:
SIGH "#" 1 Bright A_Lower
Wait
Select:
TNT1 A 0 A_JumpIfInventory("MGSigilPiece",5,"Select5")
TNT1 A 0 A_JumpIfInventory("MGSigilPiece",4,"Select4")
TNT1 A 0 A_JumpIfInventory("MGSigilPiece",3,"Select3")
TNT1 A 0 A_JumpIfInventory("MGSigilPiece",2,"Select2")
TNT1 A 0 A_JumpIfInventory("MGSigilPiece",1,"Select1")
Wait
Select1:
SIGH A 1 Bright A_Raise
Wait
Select2:
SIGH B 1 Bright A_Raise
Wait
Select3:
SIGH C 1 Bright A_Raise
Wait
Select4:
SIGH D 1 Bright A_Raise
Wait
Select5:
SIGH E 1 Bright A_Raise
Wait
Fire:
SIGH "#" 0 A_PlaySound("weapons/sigilcharge",CHAN_WEAPON)
SIGH "#" 18 Bright A_Light2
SIGH "#" 3 Bright A_GunFlash
TNT1 A 0 A_JumpIfInventory("MGSigilPiece",5,"Fire5")
TNT1 A 0 A_JumpIfInventory("MGSigilPiece",4,"Fire4")
TNT1 A 0 A_JumpIfInventory("MGSigilPiece",3,"Fire3")
TNT1 A 0 A_JumpIfInventory("MGSigilPiece",2,"Fire2")
TNT1 A 0 A_JumpIfInventory("MGSigilPiece",1,"Fire1")
Fire1:
SIGH A 15 A_FireSigil1
Goto Ready
Fire2:
SIGH B 15 A_FireSigil2
Goto Ready
Fire3:
SIGH C 15 A_FireSigil3
Goto Ready
Fire4:
SIGH D 15 A_FireSigil4
Goto Ready
Fire5:
SIGH E 15 A_FireSigil5
Goto Ready
Flash:
SIGF A 4 BRIGHT A_Light2
SIGF B 6 BRIGHT A_LightInverse
SIGF C 4 BRIGHT A_Light1
Goto LightDone
}
}