[Update] Shadow Hunter
- doomedarchviledemon
- Topic Author
- Pain Elemental
Less
More
- Posts: 251
1 month 2 weeks ago - 1 month 15 hours ago #1
by doomedarchviledemon
[Update] Shadow Hunter was created by doomedarchviledemon
Name: Shadow Hunter
Difficulty: Medium
Connections: None
Summon: ShadowHunter
Melee: No
Distance: Projectile
Type: Ghost
Brightmaps: No
Added States: No
ACS: No
Submitted: TheDoomedArchvile
Code: TheDoomedArchvile, TheMightyHeracross, Gothic
Sounds: Freesounds (Litruv), SeriousSam
GLDEFS: TheDoomedArchvile
Sprites: HorrorMovieGuy
Idea Base: HorrorMovieGuy's sprite sheet on this enemy
Description: A shadowy ghost that stalks its prey in the dead of night and shoots bullets of compressed shadows that fly at high speeds. Their enemies have a hard time hitting them due to the many ghostly doubles that surround them and by quickly teleporting around the crowd. They can also vanish and reappear somewhere else after a time to try and dissonant their prey.
Updates 11/2/2024 : TheDoomedArchvile
Difficulty: Medium
Connections: None
Summon: ShadowHunter
Melee: No
Distance: Projectile
Type: Ghost
Brightmaps: No
Added States: No
ACS: No
Submitted: TheDoomedArchvile
Code: TheDoomedArchvile, TheMightyHeracross, Gothic
Sounds: Freesounds (Litruv), SeriousSam
GLDEFS: TheDoomedArchvile
Sprites: HorrorMovieGuy
Idea Base: HorrorMovieGuy's sprite sheet on this enemy
Description: A shadowy ghost that stalks its prey in the dead of night and shoots bullets of compressed shadows that fly at high speeds. Their enemies have a hard time hitting them due to the many ghostly doubles that surround them and by quickly teleporting around the crowd. They can also vanish and reappear somewhere else after a time to try and dissonant their prey.
Updates 11/2/2024 : TheDoomedArchvile
- Code updated to ZScript
- GLDEFS added for the Shadow Bullet
- Added a few more sounds
- Updated Credits to replace 'DoomedArchvileDemon' with 'TheDoomedArchvile'.
- Updated the Description.
- Behavior changed drastically
- No longer dodges to the sides. Never was a fan of that movement pattern.
- Doubles spawn around the main entity instead of shooting out from it.
- Added a quick vanish to keep the main entity moving around its doubles to make it harder for the player to track.
- Damage increased slightly
- Enemy fades out of existence when dead because it's a ghost.
- Gave the enemy the SHADOW flag to make it harder for other monsters to hit.
Last edit: 1 month 15 hours ago by doomedarchviledemon.
Please Log in or Create an account to join the conversation.
- DeVloek
- Arachnotron
Less
More
- Posts: 401
1 month 2 weeks ago #2
by DeVloek
Replied by DeVloek on topic [Update] Shadow Hunter
I noticed some bugs with the doubles, as far as I've seen these happen only when the ShadowHunter dies.
tbh without the original dodging behavior he's much easier to kill. All the doubles aren't helping him much, since they are all grouped very close together you can just rocket/shotgun blast them all and most likely hit the right one. Plus they are pretty easy to tell apart.
Maybe spread them out over a larger area, and make them mimick the main guy's actions?
- Sometimes a double gets stuck a wall and never fades out
- Sometimes a double doesn't fade out right away, but keeps wandering around for a while and then fades out
tbh without the original dodging behavior he's much easier to kill. All the doubles aren't helping him much, since they are all grouped very close together you can just rocket/shotgun blast them all and most likely hit the right one. Plus they are pretty easy to tell apart.
Maybe spread them out over a larger area, and make them mimick the main guy's actions?
Please Log in or Create an account to join the conversation.
- doomedarchviledemon
- Topic Author
- Pain Elemental
Less
More
- Posts: 251
1 month 2 weeks ago #3
by doomedarchviledemon
Replied by doomedarchviledemon on topic [Update] Shadow Hunter
Updated
- Expanded the spawn radius for the doubles from 100 to 150
- Made the A_Wander last a bit longer for the Quick Vanish
- Adjusted the translucency of the doubles to match that of the original enemy
- Adjusted the double's speed slightly, but still marginally slower than the original
- Doubles now have a small chance to 'fire' at the player. They don't actually shoot projectiles or make sound, just looks like they are shooting.
- Doubles now have a small chance to walk around for a little longer before fading away
- Doubles now no longer get stuck in walls and will fade away naturally from my testing
Please Log in or Create an account to join the conversation.
- DeVloek
- Arachnotron
Less
More
- Posts: 401
1 month 2 weeks ago - 1 month 2 weeks ago #4
by DeVloek
Replied by DeVloek on topic [Update] Shadow Hunter
The doubles now fade out as intended, but they still get stuck in walls. My first impression that this has something to do with the ShadowHunter dying was probably wrong btw, this happens all the time. To fix this, just remove the SXF_NOCHECKPOSITION flag from A_SpawnItemEx, which btw is unnecessary for the dead doubles too since the flag only works for actors that have collision.
A few more observations/suggestions:
A few more observations/suggestions:
- When the ShadowHunter is standing on a ledge or a pillar, doubles will spawn mid-air around him, and then fall down. Since this can happen several times each second it'll look like it's constantly raining doubles.
You can solve this by instantly moving them to the floor when they are spawned, with SetOrigin((pos.x, pos.y, floorz),false); either right after the spawn action itself (requires a pointer to the spawned double) or in the double's first tic of its Spawn state (requires the nodelay keyword). Or simply give them NOGRAVITY, but that might look even weirder... - When the ShadowHunter dies, all the doubles still wander around for a while, imo it would look better if they'd "die" as well.
You'd probably need a pointer to the main guy for this, the SXF_SETMASTER flag for A_SpawnItemEx should do. Then you just need a check, eg. if (master.health < 1) to enter a death state or immediately fade out the double (doing this in a Tick override would probably be the easiest approach if you don't wanna rewrite all the double's states) - You can safely omit the FTF_REMOVE flag from A_FadeOut as it is implied by default.
Last edit: 1 month 2 weeks ago by DeVloek.
Please Log in or Create an account to join the conversation.
- doomedarchviledemon
- Topic Author
- Pain Elemental
Less
More
- Posts: 251
1 month 2 weeks ago #5
by doomedarchviledemon
Replied by doomedarchviledemon on topic [Update] Shadow Hunter
Updated to implement the changes.
Please Log in or Create an account to join the conversation.
- Gothic
- Moderator
Less
More
- Posts: 1259
1 month 1 week ago #6
by Gothic
Replied by Gothic on topic [Update] Shadow Hunter
When the Hunter gets removed, the game crashes because the shadows need to check if their master still exists. Try doing this:
If their master dies, they enter their death state, but if it gets removed they will just disappear.
Code:
States
{
Spawn:
TNT1 A 0 NoDelay SetOrigin((pos.x, pos.y, floorz),false);
SHAH ABCD 4
{
A_FadeIn(0.1);
A_Chase();
}
Goto See;
See:
TNT1 A 0 CA_CheckMaster();
SHAH ABCD 4 A_Chase;
TNT1 A 0 A_Jump(25, "DecoyFire");
TNT1 A 0 A_Jump(10, "See");
Goto Fadeout;
DecoyFire:
SHAG AAAA 5 A_FaceTarget;
TNT1 A 0 CA_CheckMaster();
SHAG B 5 Bright;
SHAG A 10;
Goto Fadeout;
Fadeout:
TNT1 A 0 CA_CheckMaster();
SHAH ABC 4 A_Chase;
SHAH D 4 A_FadeOut(0.1);
loop;
DecoyDeath:
SHAD AB 5;
SHAD CDEEE 5 A_FadeOut(0.1);
Stop;
}
void CA_CheckMaster()
{
if (master && master.health < 1)
SetStateLabel("DecoyDeath");
if (!master)
SetStateLabel("Null");
}
Please Log in or Create an account to join the conversation.
- doomedarchviledemon
- Topic Author
- Pain Elemental
Less
More
- Posts: 251
1 month 15 hours ago #7
by doomedarchviledemon
Replied by doomedarchviledemon on topic [Update] Shadow Hunter
Updated!
Please Log in or Create an account to join the conversation.
- Gothic
- Moderator
Less
More
- Posts: 1259
4 weeks 14 hours ago #8
by Gothic
Replied by Gothic on topic [Update] Shadow Hunter
Please Log in or Create an account to join the conversation.