[SUBMISSION] Cryotron
- CaptainToenail
-
Topic Author
- Wicked
-
Less
More
- Posts: 229
10 months 3 weeks ago - 10 months 2 weeks 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: 10 months 2 weeks ago by CaptainToenail. Reason: Updated file
Please Log in or Create an account to join the conversation.
- DeVloek
-
- Arachnotron
-
Less
More
- Posts: 401
10 months 2 weeks ago - 10 months 2 weeks 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: 10 months 2 weeks ago by DeVloek.
Please Log in or Create an account to join the conversation.
- CaptainToenail
-
Topic Author
- Wicked
-
Less
More
- Posts: 229
10 months 2 weeks 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: 1276
10 months 2 weeks 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
10 months 2 weeks ago - 10 months 2 weeks 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: 10 months 2 weeks ago by CaptainToenail.
Please Log in or Create an account to join the conversation.
- Gothic
-
- Moderator
-
Less
More
- Posts: 1276
10 months 2 weeks 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
10 months 2 weeks 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: 1276
10 months 2 weeks 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.