Projects that alter game functions but do not include new maps belong here.
Forum rules
The Projects forums are only for projects. If you are asking questions about a project, either find that project's thread, or start a thread in the General section instead.
actor test_spawner : randomspawner replaces doom_monster
{ dropitem "monster", 255, 1}
actor monster
{sample text
states{
spawn:
tnt1 q 0 a_jumpif(callacs(enemy_spawning_CVAR) == 1, "spawn_monster_type_1")
etc.
spawn_monster_type_1:
tnt1 q 0 {a_unsetsolid; a_unsetshootable; a_spawnitemex("monster_defined_by_cvar=1",0,0,0,0,0,0,0,SXF_SETMASTER);}
wait
}}
actor monster_defined_by_cvar=1
{
sample text
states
{dont change anything, except
death/Xdeath:
sprite letter time function that you need + A_KillMaster}}
Also, need to add death state and damage type for invisible sprite death for master monster
actor test_spawner : randomspawner replaces doom_monster
{ dropitem "monster", 255, 1}
actor monster
{sample text
states{
spawn:
tnt1 q 0 a_jumpif(callacs(enemy_spawning_CVAR) == 1, "spawn_monster_type_1")
etc.
spawn_monster_type_1:
tnt1 q 0 {a_unsetsolid; a_unsetshootable; a_spawnitemex("monster_defined_by_cvar=1",0,0,0,0,0,0,0,SXF_SETMASTER);}
wait
}}
actor monster_defined_by_cvar=1
{
sample text
states
{dont change anything, except
death/Xdeath:
sprite letter time function that you need + A_KillMaster}}
Also, need to add death state and damage type for invisible sprite death for master monster
The only problem with these setups is that I can't give them their own health and actor properties - the difference between the Mancubus (600 HP) and the Corpulent (1200 HP) is pretty significant. I could give the actor 1200 health and then have it halved if it spawns a Mancubus, but then that'll look strange if you're using the Health Bars mod - given that I pretty much always use it now, it'd grate on me after a while. That said, right now I've given the Corpulent the Mancubus' attack sequence in addition to its own (I might actually remove the main one since it's pretty broken), in the hopes that it helps in some way.
At the today post I fixed that. Maybe you think i spaming and dont read.
Monster that need to be replaced become nonshootable and nonsolid, lost its sprite and then just spawn monster replacer and establishes with him master/child relations.
Instead of him at spawn point stand monster replacer, child, which you can shoot.
So, primary spawn monster, master, dont removed and still exist at map, and his healt still monitoring by randomspawner, if needed.
But he cant interact witn anything on the map.
The only interaction with map occurs only when you kill it child. When you kill replacer monster, child, it kill it master, death of master detect by randomspawner, which, finaly, launch some script, if needed.
At the today post I fixed that. Maybe you think i spaming and dont read.
Monster that need to be replaced become nonshootable and nonsolid, lost its sprite and then just spawn monster replacer and establishes with him master/child relations.
Instead of him at spawn point stand monster replacer, child, which you can shoot.
So, primary spawn monster, master, dont removed and still exist at map, and his healt still monitoring by randomspawner, if needed.
But he cant interact witn anything on the map.
The only interaction with map occurs only when you kill it child. When you kill replacer monster, child, it kill it master, death of master detect by randomspawner, which, finaly, launch some script, if needed.
So, basically, it replaces the vanilla Manc with a RandomSpawner, which itself creates a Master/Child connection between itself and the monster it spawns (which has its own actor properties)?
On another note, AI improvements incoming:
*Pulsar Dudes, GPMG Zombies, and MARS Guys now have distinct short and long range attacks - if you're close enough, they'll fire fully automatically (or at least, very rapidly in the Pulsar Zombie's case). In addition, AI fixes for the GPMG Zombie and VSK9 Guy, which have had some issues.
*N7 Zombie has a short, medium, and long-range attack - short is semi-auto, medium is burst-fire, and long is full-auto. N7 Zombies will also have a higher chance of immediately retaliating after taking damage.
Instead of million words, at example of fatso, without using randomspawner
I underlined what i changed
Spoiler:
//===========================================================================
//
// Mancubus
//
//===========================================================================
ACTOR TR_Fatso: Fatso replaces Fatso
{
PainChance "Head", 255
//DamageFactor "Head", 2
Species Fatso
+NOBLOCKMONST
States
{
Spawn:
TNT1 A 0 A_JumpIf(CallACS("EnemyCVAR")==1, "spawn_corprus")//in this exmple 1=spawn corprus with some chance, 0=spawn only fatso
TNT1 A 0 A_SpawnItemEx("HeadshotTargetMancubus", 0,0,53, 0,0,0, 0, SXF_SETMASTER) idle://when last chased enemy lost bound with our world return to this state, not to spawn
FATT AB 10 A_Look
loop
Run:
TNT1 A 0 A_Changeflag("FRIGHTENED", 1)
CRIS abcdefghij 2 A_Chase
TNT1 A 0 A_CheckSight("Cover")
TNT1 A 0 A_Jump(16, "See")
Loop
Cover:
TNT1 A 0 A_Changeflag("FRIGHTENED", 0)
TNT1 A 0 A_FaceTarget
FATT A 10 A_Chase("Missile","Missile", CHF_DONTMOVE)
TNT1 A 0 A_JumpIfInTargetLOS("See")
FATT B 10 A_Chase("Missile","Missile", CHF_DONTMOVE)
TNT1 A 0 A_JumpIfInTargetLOS("See")
TNT1 A 0 A_Jump(32, "See")
Loop
See:
TNT1 A 0 A_Changeflag("FRIGHTENED", 0)
CRIS abcdefghij 4 A_Chase
Loop
Missile:
TNT1 A 0 A_Changeflag("FRIGHTENED", 1)
FATA a 17 A_FatRaise
FATA b 3
FATA c 3 bright A_FatAttack1
FATA d 3 bright
FATA e 4
FATA a 7
FATA b 3
FATA c 3 bright A_FatAttack2
FATA d 3 bright
FATA e 4
FATA a 7
FATA b 3
FATA c 3 bright A_FatAttack3
FATA d 3 bright
FATA e 4
FATA a 7
Goto See
Pain:
FAPP a 3
FAPP b 3 A_Pain
TNT1 A 0 A_Changeflag("FRIGHTENED", 1)
TNT1 A 0 A_Jump(96, "Run")
Goto See
Pain.Head:
FAPP a 3
FAPP b 3 A_Pain
TNT1 A 0 A_Changeflag("FRIGHTENED", 1)
TNT1 A 0 A_Jump(96, "Run")
Goto See
Pain.ATF:
TNT1 A 0 A_SpawnItemEx("ATFieldFX2",30,0,40, 0,0,0, 0, SXF_SETMASTER)
FAPP a 3
FAPP b 3 A_Pain
TNT1 A 0 A_Changeflag("FRIGHTENED", 1)
TNT1 A 0 A_Jump(96, "Run")
Goto See
Death:
TNT1 A 0 A_Jump(64, "AltDeath", "AltDeath2", "AltDeath3", "AltDeath4", "AltDeath9")
TNT1 A 0 A_Jump(64, "AltDeath5", "AltDeath6", "AltDeath7", "AltDeath8", "AltDeath10")
FATT K 6
FATT L 6 A_Scream
FATT M 6 A_NoBlocking
FATT NOPQRS 6
FATT T -1 A_BossDeath
Stop
XDeath:
TNT1 A 0 A_Jump(64, "AltGib", "AltGib2")
FAXD a 3
FAXD b 3 a_xscream
FAXD d 3 a_noblocking
FAXD e 3
FAXD f 3
FAXD g 3
FAXD h 3
FAXD i 2
FAXD j 2
FAXD k 2
FAXD l 2
FAXD m 2
FAXD n 2
FAXD o 2
FAXD p -1 A_BossDeath
Stop
AltGib:
FGIB A 5
FGIB B 5 A_XScream
FGIB C 5 A_NoBlocking
FGIB D 5
FGIB E 5
FGIB F -1 A_BossDeath
Stop
AltGib2:
FGI2 A 5
FGI2 B 5 A_XScream
FGI2 C 5 A_NoBlocking
FGI2 D 5
FGI2 E 5
FGI2 F -1 A_BossDeath
Stop
//Mancubus Alt death 1
AltDeath:
FAT6 A 5
FAT6 B 5 A_Scream
FAT6 C 5 A_NoBlocking
FAT6 DEFGHI 5
FAT6 J -1 A_BossDeath
Stop
//Mancubus Alt death 2
AltDeath2:
FAT6 K 10
FAT6 L 6 A_Scream
FAT6 M 6 A_NoBlocking
FAT6 NOP 6
FAT6 Q -1 A_BossDeath
Stop
//Mancubus Alt death 3
AltDeath3:
FATK A 6
FATK B 6 A_Scream
FATK C 6 A_NoBlocking
FATK DEF 6
FATK F -1 A_BossDeath
Stop
//Mancubus Alt death 4
AltDeath4:
FAT3 A 5
FAT3 B 5 A_Scream
FAT3 C 5 A_NoBlocking
FAT3 DE 5
FAT3 F -1 A_BossDeath
Stop
//Mirror of Death
AltDeath5:
FATR K 6
FATR L 6 A_Scream
FATR M 6 A_NoBlocking
FATR NOPQRS 6
FATR T -1 A_BossDeath
Stop
//Mirror of 3
AltDeath6:
FATK G 6
FATK H 6 A_Scream
FATK I 6 A_NoBlocking
FATK JK 6
FATK L -1 A_BossDeath
Stop
//Mirror of 4
AltDeath7:
FAT3 G 5
FAT3 H 5 A_Scream
FAT3 I 5 A_NoBlocking
FAT3 JK 5
FAT3 L -1 A_BossDeath
Stop
//Mirror of Alt1
AltDeath8:
MANC A 5
MANC B 5 A_Scream
MANC C 5 A_NoBlocking
MANC DEFGHI 5
MANC J -1 A_BossDeath
Stop
AltDeath9:
FAT4 A 5
FAT4 B 6 A_Scream
FAT4 C 6 A_NoBlocking
FAT4 DE 6
FAT4 F -1 A_BossDeath
Stop
AltDeath10:
FAT5 A 5
FAT5 B 6 A_Scream
FAT5 C 6 A_NoBlocking
FAT5 DE 6
FAT5 F -1 A_BossDeath
Stop
spawn_corprus:
tnt1 q 0 a_jump(128, "idle")//50% chance dont spawn corprus and left fatso
tnt1 q 0 {target.bShootable=false; target.bSolid=false; target.bcountkill =false; a_spawnitemex("TR_Corpulent",0,0,0,0,0,0,0,SXF_SETMASTER);}
//invisible, untouchable and uncountable birth
tnt1 q -1
stop//stand by until death of child
death.miniondeath://special death by damage type
tnt1 q 0
stop// launch map script if existed and remove become not needed actor
}}
actor TR_Corpulent : Fatso
{
Health 1250
Speed 6
FastSpeed 12
PainChance 50
PainChance "Head", 255
DamageFactor "Head", 1.5
Species Fatso
obituary "%o was roasted by a Corpulent."
seesound "monster/ma2sit"
painsound "monster/ma2pai"
deathsound "monster/ma2dth"
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("HeadshotTargetMancubus", 0,0,53, 0,0,0, 0, SXF_SETMASTER) idle://same here
FAT2 AB 10 A_Look
loop
Run:
TNT1 A 0 A_Changeflag("FRIGHTENED", 1)
FAT2 AABBCCDDEEFF 2 A_Chase
TNT1 A 0 A_CheckSight("Cover")
TNT1 A 0 A_Jump(16, "See")
Loop
Cover:
TNT1 A 0 A_Changeflag("FRIGHTENED", 0)
TNT1 A 0 A_FaceTarget
FATT A 10 A_Chase("Missile","Missile", CHF_DONTMOVE)
TNT1 A 0 A_JumpIfInTargetLOS("See")
FATT B 10 A_Chase("Missile","Missile", CHF_DONTMOVE)
TNT1 A 0 A_JumpIfInTargetLOS("See")
TNT1 A 0 A_Jump(32, "See")
Loop
See:
TNT1 A 0 A_Changeflag("FRIGHTENED", 0)
FAT2 AABBCCDDEEFF 3 A_Chase
loop
Missile:
TNT1 A 0 A_Changeflag("FRIGHTENED", 0)
FAT2 G 0 A_Playsound("monster/ma2atk")
FAT2 G 20 A_Facetarget
//FAT2 H 0 bright A_FatAttack1("EnemySXPhaseNerfed")
FAT2 H 0 bright A_CustomMissile("TR_FatShotSpecial", 27, -30, 0, 0)
FAT2 H 0 bright A_CustomMissile("TR_FatShotSpecial", 27, 30, 0, 0)
FAT2 H 10 bright
FAT2 IG 5 A_FaceTarget
FAT2 H 0 bright A_CustomMissile("TR_FatShotSpecial", 27, -30, -12, 0)
FAT2 H 0 bright A_CustomMissile("TR_FatShotSpecial", 27, -30, 12, 0)
FAT2 H 0 bright A_CustomMissile("TR_FatShotSpecial", 27, 30, -12, 0)
FAT2 H 0 bright A_CustomMissile("TR_FatShotSpecial", 27, 30, 12, 0)
FAT2 H 10 bright
FAT2 IG 5 A_FaceTarget
FAT2 H 0 bright A_CustomMissile("TR_FatShotSpecial", 27, -30, 0, 0)
FAT2 H 0 bright A_CustomMissile("TR_FatShotSpecial", 27, 30, 0, 0)
FAT2 H 10 bright
FAT2 IG 5 A_FaceTarget
goto See
Pain:
FAT2 J 3
FAT2 J 3 A_Pain
TNT1 A 0 A_Changeflag("FRIGHTENED", 1)
TNT1 A 0 A_Jump(96, "Run")
goto See
Pain.Head:
FAT2 J 3
FAT2 J 3 A_Pain
FAT2 J 3
TNT1 A 0 A_Changeflag("FRIGHTENED", 1)
TNT1 A 0 A_Jump(96, "Run")
goto See
Death:
FAT2 K 5 A_KillMaster("miniondeath")// kill master with define damage type, if no master do nothing
FAT2 L 5 A_Scream
FAT2 M 5 A_NoBlocking
//FAT2 M 0 bright A_CustomMissile("EnemySXPhase",0,0,0,2,-90)
FAT2 NOP 5
//FAT2 M 0 bright A_CustomMissile("EnemySXPhase",0,0,0,2,-90)
FAT2 QRS 5
//FAT2 M 0 bright A_CustomMissile("EnemySXPhase",0,0,0,2,-90)
FAT2 T -1 A_BossDeath
stop
Raise:
FAT2 RQPONMLK 5
goto See
}
}
This line seems to prevent me from launching GZDoom with The Trooper - is there something I need to do to make this work? AFAIK the rest of the file is functional DECORATE.
I have yet to implement this satisfactorily, so I'm going to leave it be for now.
Anyway, pondering adding a weapon to The Trooper - the Machiavellian Disciple:
I'm torn between giving it 2100 RPM (the maximum for a weapon firing a single bullet during each frame) and some higher number like 4200 (two bullets a tic, would have to slow one of them down to create the illusion of it being fired between tics). I also feel like this weapon would make a number of other weapons basically obsolete (any bullet weapon save for perhaps the Nishimura Seven, which has ripper properties and antimatter rounds), since it's intended to fire a cartridge more powerful than the GPMG's at least three times more rapidly.
About that Gatling rifle if you are planning on adding that is there like some way you could make it an ultra rare pickup "as in 1 in 128-256 chance of finding it in a BFG Spawn" so that way you can justify adding such a ridiculously OP weapon to the roster and as an added rarity have the ammo also be rare as well " 1 in 50 Large Cell Packs + Backpack refills 5% of maximum ammo pool " just to further reinforce its rarity.
It would also make the player thing about when or where to use it. Do i want to use this to clear a shitload of zombies in some kind of Power Fantasy or Do I want to use it against a group consisting of More than 2 Cyberdemons/Spider Masterminds while also killing the Revenants/Hell Nobles as well. but that is just my suggestion.
P.S. Railgunner, you never cease to amaze me with the sprites you create. I know you have drawn up some concepts for them but how you put them from Pen and Paper to Computer Screen is always a mystery to me. How do you create such beautiful sprites.
TheRailgunner wrote:
Anyway, pondering adding a weapon to The Trooper - the Machiavellian Disciple:
I'm torn between giving it 2100 RPM (the maximum for a weapon firing a single bullet during each frame) and some higher number like 4200 (two bullets a tic, would have to slow one of them down to create the illusion of it being fired between tics). I also feel like this weapon would make a number of other weapons basically obsolete (any bullet weapon save for perhaps the Nishimura Seven, which has ripper properties and antimatter rounds), since it's intended to fire a cartridge more powerful than the GPMG's at least three times more rapidly.
Gideon020 wrote:Yes, I am of the opinion that this bullet hose is a viable and necessary addition alongside the lord of shotguns.
THE SHOT OF LORDGUNS HAS SPOKEN THUSLY.
TheLightBad96 wrote:About that Gatling rifle if you are planning on adding that is there like some way you could make it an ultra rare pickup "as in 1 in 128-256 chance of finding it in a BFG Spawn" so that way you can justify adding such a ridiculously OP weapon to the roster and as an added rarity have the ammo also be rare as well " 1 in 50 Large Cell Packs + Backpack refills 5% of maximum ammo pool " just to further reinforce its rarity.
It would also make the player thing about when or where to use it. Do i want to use this to clear a shitload of zombies in some kind of Power Fantasy or Do I want to use it against a group consisting of More than 2 Cyberdemons/Spider Masterminds while also killing the Revenants/Hell Nobles as well. but that is just my suggestion.
P.S. Railgunner, you never cease to amaze me with the sprites you create. I know you have drawn up some concepts for them but how you put them from Pen and Paper to Computer Screen is always a mystery to me. How do you create such beautiful sprites.
First thing: I can justify any ridiculously OP weapon - it's The Trooper. Balance is overrated. On that note, the weapon needs a much larger ammo pool - probably gonna give it 250 or 500 round magazines so the player can carry more than 999 bullets for it. If I make it too rare, I'll basically never see it. I might throw it in a different slot than 7 as far as spawning is concerned, or make it drop-only or spawn-only. Also, weapon spawning chances are user-adjustable - yes, more than likely, it'll be a 1-in-128/256 chance (as is with most rare weapons), but the player can crank that up to anywhere from 1-in-64 to 1-in-16 - hell, one setting just sets all weapons to have an equal spawn chance, which would give it 1-in-3 (right now there are two other slot 7 weapons).
The sprites I can't always take credit for - while I often manage to get the sprites close (or at least close enough) to the original concept art, it's much faster (and easier) to edit existing sprites into what I need - for example, the Machiavellian Disciple is made from the barrels from The Trailblazer's Skullthrottle minigun and the receiver/gun body of The Guncaster's Strucker shotgun (little secret: all of The Trooper's bullets are modified from the Skullthrottle's bullets!). If anything, I kind of just slap together bits and pieces, smooth them out, and make them look like they sort of fit together (note that this doesn't refer to the MARS B - one of very few weapons that I basically did from scratch).
Most pickup sprites I make are either scratch-made or modified/pieced together from other pickup sprites that I scratch-made, however - I'm REALLY good at pickup sprites.
skyrish10 wrote:So, is this the The Trooper's own minigun
Yes and no - I'll likely port this weapon over to Nukage and Research & Destroy, as well as Project Operation Unthinkable when I inevitably revisit it.
PS: For the record, POU never really took off for three reasons - one, it was a large project anyway, with a lot of goals, and I kind of lost interest for a while; two, Helsturm was in active development; and three, I needed lots of different hands, and hands aren't terribly diverse or plentiful over here. I intend to come back to it when I've completed some other projects, namely:
*The Trooper (this project!)
*Nukage (The Trooper is sort of a testbed for this project)
*The Legend (centered around POU's Player 4, Nagato Nishimura)
*Zero (centered around POU's Player 7)
Possible prerequisites:
*The Emperor (centered around POU's Player 5, Cobalt Dominus)
*The Guardian (a replication of the gameplay mechanics and abilities in Bungie's Destiny)