[SUBMISSION] Cryotron
- CaptainToenail
- Topic Author
- Wicked
Less
More
- Posts: 229
1 month 1 week ago - 1 month 1 week ago #1
by CaptainToenail
[SUBMISSION] Cryotron was created by CaptainToenail
I thought the Cryocubus was really neat and could use a friend so I made an ice-themed Arachnotron. This one launches bouncing ice balls in a spread pattern. Can be quite chaotic in areas with lots of corners and corridors. It's weapon is similar in theme to the Ice Crystal Gun, maybe they originated from the same UAC lab?
Information:
Name: Cryotron
Difficulty: Medium
Connections: None
Summon: Cryotron
Melee: None
Distance: Projectile spread
Type: Demon, Cybernetic, Ice
Brightmaps: None
Actor modification: None
ACS: None
Credits:
Code: Captain Toenail, Gothic
GLDefs: lights.pk3
Sounds: DukeNukem3D, wrw.wad, Volition, TheDarkArchon
Sprites: Amuscaria, Doom, DukeNukem3D, wrw.wad
Sprite Edit: Captain Toenail
Idea Base: Mr Freeze from Batman & Robin film, Duke Nukem 3D's FreezeThrower,
Xim's FreezeRifle
Description:
An Arachnotron encased in cryogenic technology.
Its frostcannon launches a deadly spread of rebounding ice balls.
Resistant to ice damage.
Information:
Name: Cryotron
Difficulty: Medium
Connections: None
Summon: Cryotron
Melee: None
Distance: Projectile spread
Type: Demon, Cybernetic, Ice
Brightmaps: None
Actor modification: None
ACS: None
Credits:
Code: Captain Toenail, Gothic
GLDefs: lights.pk3
Sounds: DukeNukem3D, wrw.wad, Volition, TheDarkArchon
Sprites: Amuscaria, Doom, DukeNukem3D, wrw.wad
Sprite Edit: Captain Toenail
Idea Base: Mr Freeze from Batman & Robin film, Duke Nukem 3D's FreezeThrower,
Xim's FreezeRifle
Description:
An Arachnotron encased in cryogenic technology.
Its frostcannon launches a deadly spread of rebounding ice balls.
Resistant to ice damage.
Last edit: 1 month 1 week ago by CaptainToenail. Reason: Updated file
Please Log in or Create an account to join the conversation.
- DeVloek
- Hades Elemental
Less
More
- Posts: 371
1 month 1 week ago - 1 month 1 week ago #2
by DeVloek
Replied by DeVloek on topic [SUBMISSION] Cryotron
That's a cool concept
There are some warnings on startup:
Script warning, "Cryotron.pk3:zscript" line 176: Accessing deprecated function A_ChangeFlag - deprecated since 2.3.0, Use 'b = [true/false]' instead
Script warning, "Cryotron.pk3:zscript" line 177: Accessing deprecated function A_ChangeFlag - deprecated since 2.3.0, Use 'b = [true/false]' instead
you can use
bXFLIP = randompick(true,false);
and
bYFLIP = randompick(true,false);
respectively
There are some warnings on startup:
Script warning, "Cryotron.pk3:zscript" line 176: Accessing deprecated function A_ChangeFlag - deprecated since 2.3.0, Use 'b = [true/false]' instead
Script warning, "Cryotron.pk3:zscript" line 177: Accessing deprecated function A_ChangeFlag - deprecated since 2.3.0, Use 'b = [true/false]' instead
you can use
bXFLIP = randompick(true,false);
and
bYFLIP = randompick(true,false);
respectively
Last edit: 1 month 1 week ago by DeVloek.
Please Log in or Create an account to join the conversation.
- CaptainToenail
- Topic Author
- Wicked
Less
More
- Posts: 229
1 month 1 week ago #3
by CaptainToenail
Replied by CaptainToenail on topic [SUBMISSION] Cryotron
Thank you. Updated.
Please Log in or Create an account to join the conversation.
- Gothic
- Moderator
Less
More
- Posts: 1230
1 month 1 week ago #4
by Gothic
Replied by Gothic on topic [SUBMISSION] Cryotron
We have a spider infestation.
Everything works fine except when if it gets morphed or dies morphed, it still spawns vapor clouds. I tried doing a check in the vapor spawner:
When the morphed monster dies, the vapor stops spawning but the spawner isn't really removed. I don't know how to resolve this.
I know it would be much easier to manage if the clouds come from the Cryotron itself instead of an external class.
Everything works fine except when if it gets morphed or dies morphed, it still spawns vapor clouds. I tried doing a check in the vapor spawner:
Code:
Spawn:
TNT1 A 1
{
if(master && !master.MorphFlags) A_SpawnItemEx("Cryotron_Vapour",random(0,32),0,random(24,40),0,0,frandom(0.0,0.3),random(0,360),0,128);
}
TNT1 A 0 A_Warp(AAPTR_MASTER,0,0,0,0,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE,"Spawn");
Stop;
I know it would be much easier to manage if the clouds come from the Cryotron itself instead of an external class.
Please Log in or Create an account to join the conversation.
- CaptainToenail
- Topic Author
- Wicked
Less
More
- Posts: 229
1 month 1 week ago - 1 month 1 week ago #5
by CaptainToenail
Replied by CaptainToenail on topic [SUBMISSION] Cryotron
I ported the Porkulator into Doom to test this, and I am seeing odd behaviour.
If you morph a monster, for example DoomImp, you will get the Pig but you will also get an invisible 'ghost monster' that still makes sounds and shoots fireballs. Killing the pig will stop the ghost. This is with GZDoom 4.12.2 - is this a bug?
What is a property in zscript you can check to tell if a monster is currently morphed? Is it if the actor's MorphFlags are greater than zero? I could override tick() and put the vapour spawn function in there on the spider itself, if I can check if it is currently alive and not morphed.
If you morph a monster, for example DoomImp, you will get the Pig but you will also get an invisible 'ghost monster' that still makes sounds and shoots fireballs. Killing the pig will stop the ghost. This is with GZDoom 4.12.2 - is this a bug?
What is a property in zscript you can check to tell if a monster is currently morphed? Is it if the actor's MorphFlags are greater than zero? I could override tick() and put the vapour spawn function in there on the spider itself, if I can check if it is currently alive and not morphed.
Last edit: 1 month 1 week ago by CaptainToenail.
Please Log in or Create an account to join the conversation.
- Gothic
- Moderator
Less
More
- Posts: 1230
1 month 1 week ago #6
by Gothic
You can use the virtual functions (Pre/Post)(Morph/Unmorph) to change properties at those moments:
Replied by Gothic on topic [SUBMISSION] Cryotron
The morph bug has been fixed in the dev builds, I'm using g4.13-pre110-whatever.If you morph a monster, for example DoomImp, you will get the Pig but you will also get an invisible 'ghost monster' that still makes sounds and shoots fireballs. Killing the pig will stop the ghost. This is with GZDoom 4.12.2 - is this a bug?
What is a property in zscript you can check to tell if a monster is currently morphed? Is it if the actor's MorphFlags are greater than zero? I could override tick() and put the vapour spawn function in there on the spider itself, if I can check if it is currently alive and not morphed.
You can use the virtual functions (Pre/Post)(Morph/Unmorph) to change properties at those moments:
Code:
bool morbed;
override void PreMorph(Actor mo, bool current)
{
if(!current)
{
morbed = true;
}
}
override void PostUnMorph(Actor mo, bool current)
{
if(current)
{
morbed = false;
}
}
override void Tick()
{
super.Tick();
if(!isFrozen() && !bCORPSE && !morbed)
{
A_SpawnItemEx("Cryotron_Vapour",random(0,32),0,random(24,40),0,0,frandom(0.0,0.3),random(0,360),0,128);
}
}
Please Log in or Create an account to join the conversation.
- CaptainToenail
- Topic Author
- Wicked
Less
More
- Posts: 229
1 month 1 week ago #7
by CaptainToenail
Replied by CaptainToenail on topic [SUBMISSION] Cryotron
That did the trick Gothic - I have updated the file with your code
Please Log in or Create an account to join the conversation.
- Gothic
- Moderator
Less
More
- Posts: 1230
1 month 1 week ago #8
by Gothic
Replied by Gothic on topic [SUBMISSION] Cryotron
Added
Forgot to mention, I took that method from Rifleman's monsters, so credit goes to him as well.
Forgot to mention, I took that method from Rifleman's monsters, so credit goes to him as well.
Please Log in or Create an account to join the conversation.