= Metroid Vanguard = Samus Aran in SRB2 [v1.5c]

= Metroid Vanguard = Samus Aran in SRB2 [v1.5c] v1.5c

Why so? You're not dropping rings, you're giving them directly, right? So you could grant 30 rings instead of 2.
I suppose that technically works... I'm increasing the healing subject's Ring count via P_GivePlayerRings, and I'm not sure if that would influence Samus's health meter.

By the way, I also want Annie to be able to increase Samus's Hyper Beam energy - except when fighting the advanced Brak Eggman who steals Samus' Hyper Beam energy, at least before the flag triggers that starts spawning Hyper Beam energy around the arena. What variables would I need to tweak to make that work?
 
Speaking of fun stuff Annie might be able to do in a co-op game with Samus, when did Fang get killed relative to when Samus finds him? If the time-frame is less than two weeks, Annie would canonically be able to revive him if she happened to be tagging along with Samus, and given how compassionate Annie is, she wouldn't hesitate to do so. I'm not too inclined to try to code a special clause to let Annie's C3 work on the dead Fang object when I'm not even sure how well it works on players yet (I haven't worked out how I'm going to accomplish the deadtime tomfoolery yet), but if I ever feel like stepping up to that challenge, it might be fun to create an alternate Metroid Vanguard endgame where Fang gets revived by Annie (which Samus may or may not be somewhat ticked off by) and subsequently gets roped into helping Samus and Annie (and whoever else is in the netgame) take on Dark Samus, traverse the Red Volcano Zone, and put a stop to Eggman's plans with the Black Rock. (Fang would be a bot in this scenario, of course.)

Uh, the Phazon in ACZ4 is coded as DMG_INSTAKILL, right? Right? …I'm gonna have to test Annie in ACZ4 again now that I've updated to the latest version of SRB2. I'm gonna be having some words if she gets insta-killed. She's supposed to be able to withstand insta-kill floors…
 
Last edited:
I suppose that technically works... I'm increasing the healing subject's Ring count via P_GivePlayerRings, and I'm not sure if that would influence Samus's health meter.

By the way, I also want Annie to be able to increase Samus's Hyper Beam energy - except when fighting the advanced Brak Eggman who steals Samus' Hyper Beam energy, at least before the flag triggers that starts spawning Hyper Beam energy around the arena. What variables would I need to tweak to make that work?
That's a bit tough...

Samus doesn't usually restrict the use of Hyper Beam to allow a little speedrunning trick with the Ice Beam Combo to get energy early.

First check if gamemap == 28. Then scan for an MT_CYBRAKDEMON object once and keep track of it. If he has mo.hyperbeampanic, then he's in the phase where he can drops energy drops for the Hyper Beam when getting hurt. You can safely energy-share if that value is present, or if he doesn't have mo.superbrak.
Speaking of fun stuff Annie might be able to do in a co-op game with Samus, when did Fang get killed relative to when Samus finds him? If the time-frame is less than two weeks, Annie would canonically be able to revive him if she happened to be tagging along with Samus, and given how compassionate Annie is, she wouldn't hesitate to do so. I'm not too inclined to try to code a special clause to let Annie's C3 work on the dead Fang object when I'm not even sure how well it works on players yet (I haven't worked out how I'm going to accomplish the deadtime tomfoolery yet), but if I ever feel like stepping up to that challenge, it might be fun to create an alternate Metroid Vanguard endgame where Fang gets revived by Annie (which Samus may or may not be somewhat ticked off by) and subsequently gets roped into helping Samus and Annie (and whoever else is in the netgame) take on Dark Samus, traverse the Red Volcano Zone, and put a stop to Eggman's plans with the Black Rock. (Fang would be a bot in this scenario, of course.

Uh, the Phazon in ACZ4 is coded as DMG_INSTAKILL, right? Right? …I'm gonna have to test Annie in ACZ4 again now that I've updated to the latest version of SRB2. I'm gonna be having some words if she gets insta-killed. She's supposed to be able to withstand insta-kill floors…
Fang died only moments before Samus showed up, hence the Phazon still corroding his body. I highly doubt Samus would be ticked off by his revival, I'm sure she felt bad for his gruesome death, despite being as dulled to death as she is. Coding that sounds like hell, but hey, it's fun to imagine. An alt ending with Fang and/or the larva Metroid alive would be cute.

For Phazon, there's a variable for players called mo.pzpaintime. It's a 44-tic timer that drains up to 10 rings each time it reaches 0. Theoretically, if mo.pzpaintime stays above 2, you're invincible to Phazon. (though the sounds and screen shake still happen). If you're down to 0 rings, it'll use P_KillMobj without source or inflictor the next time mo.pzpaintime reaches 0. idk if SRB2 counts that as a case of DMG_INSTAKILL.
 
That's a bit tough...

Samus doesn't usually restrict the use of Hyper Beam to allow a little speedrunning trick with the Ice Beam Combo to get energy early.

First check if gamemap == 28. Then scan for an MT_CYBRAKDEMON object once and keep track of it. If he has mo.hyperbeampanic, then he's in the phase where he can drops energy drops for the Hyper Beam when getting hurt. You can safely energy-share if that value is present, or if he doesn't have mo.superbrak.

Fang died only moments before Samus showed up, hence the Phazon still corroding his body. I highly doubt Samus would be ticked off by his revival, I'm sure she felt bad for his gruesome death, despite being as dulled to death as she is. Coding that sounds like hell, but hey, it's fun to imagine. An alt ending with Fang and/or the larva Metroid alive would be cute.

For Phazon, there's a variable for players called mo.pzpaintime. It's a 44-tic timer that drains up to 10 rings each time it reaches 0. Theoretically, if mo.pzpaintime stays above 2, you're invincible to Phazon. (though the sounds and screen shake still happen). If you're down to 0 rings, it'll use P_KillMobj without source or inflictor the next time mo.pzpaintime reaches 0. idk if SRB2 counts that as a case of DMG_INSTAKILL.

No, P_KillMobj doesn't count as DMG_INSTAKILL. If it did, Annie would have minecart death resistance as part of her instakill resistance. As is, I'll have to code that separately as well… I'm still trying to figure out how that will work.

I still imagine that Samus wouldn't let Fang off the hook for smuggling Metroids or the other shit he pulled. Hence, Fang getting roped into the adventure. …Oh, and I did mention that Annie can only revive someone if their body is mostly intact and they died less than two weeks ago, right? I don't think she could save the baby Metroid…

As for mo.pzpaintime, does that normally stay at 0 unless the player's in Phazon, like pw_underwater or pw_spacetime?
Post automatically merged:

So, I wrote up some code to grant Annie Phazon resistance and decided to try it out. It's not working quite like I'd hoped...

Phazon Protection - Annie:
//Hard to Kill - Phazon (the Phazon in ACZ4 of Metroid Vanguard is coded differently from other instant kill floors)
addHook("PlayerThink", function(player)
    if player.mo and player.mo.valid then
 
        if player.mo.skin ~= "annie_belnades" then
            return
        end
    
        if player.mo.pzpaintime == nil then --player.mo.pzpaintime gets defined in Metroid Vanguard's source code, but it makes sense to define it here as well so that it doesn't return errors if Metroid Vanguard isn't loaded.
            player.mo.pzpaintime = 0
        end
    
        if player.mo.pzpaintime ~= 0
        and player.mo.pzpaintime <= 4
        and player.mo.energy >= 20*FRACUNIT then
            player.mo.pzpaintime = $ + 44
            player.mo.energy = $ - 20*FRACUNIT
            player.mo.deathdefiance = 2
        end
    end
end)

For whatever reason, if Annie so much as touches Phazon, her energy ends up ticking down to 0 over the next several seconds, no matter how quickly she gets out. Also, she still dies instantly, regardless of her energy, if one of Dark Samus's attacks launches her directly into the Phazon. In fact, she ends up losing 10 Rings upon first touching Phazon before the resistance kicks in… I did look at the Metroid Vanguard source code to try to figure out how the pzpaintime thing works, but I must have misinterpreted something.

And now that I think about this again, my code as written just assumes that pzpaintime resets back to 0 upon exiting Phazon, like how pw_underwater and pw_spacetime work, and keeps it above 1 as long as sufficient energy remains, which would explain why Annie's energy inevitably drains to 0 upon touching Phazon. (I based the Phazon resistance code on the drowning/suffocation resistance code I wrote on Zarosguth's suggestion. And I also completely neglected to create a "Phazon delay" variable like I did for drowning and suffocation, which may explain the initial Ring loss.)
 

Attachments

  • Annie - Hard to Kill - Drowning.txt
    2.4 KB · Views: 52
Last edited:
If I'm not down to do it myself or I'm not around anymore, that's fine! Do try to contact me first, though. I'm just burned out on Samus, mostly because I keep having to return earlier than intended, and all the bugs are very individualized to each player's saves, settings, and even their system.


Being able to take players' Lock-On ability gives the impression it's a cheat.

I see it as a main game mechanic, like in the Prime games. A mechanic that bridges skill gaps decently, lowers the impact of lag, gives players without mouse a way to fight, and keeps gameplay consistent with Single Player. With no hitscan projectiles and fast players, locking on isn't free damage. Leading shots or aiming at walls/floors for the explosion radius is really important for higher level play.


Can't say I've recreated that one before. Could you show a GIF, maybe? It's supposed to only grab onto nearby ledges if you hold forwards or press jump near one.


The dialogue and textboxes don't reappear on complete/replay save files. You'll want to pick a fresh slot.
Basically, in most areas, the Power Grip latches to THE AIR and is stuck in a constant feedback loop of grabbing onto something that doesn't exist, then letting go, then grabbing again, over and over. Can't really send a GIF due to a personal lack of knowledge on how to MAKE a gif with gameplay footage, but maybe someone else with the same problem can send theirs.
 
wheres the missle button
Post automatically merged:

kinda dumb question but seriously what is the missle button
 
dark samus is a big ol meanie
Post automatically merged:

Also where was sonic and the gang during all this?
Post automatically merged:

Hey, thought I'd chime in for these last 2 posts. I started playing this game when I was a kid. I would get mods off of the MB. I didn't have an account but I would still view the mods and discussions. If I saw something like that when I started playing this game I wouldn't be able to sleep.

It's completely understandable to want a content warning for gore when it's something you have to come across to progress in the story. The Sonic.EXE mod has proper content warnings, which is why it's allowed on the forums.

The ESRB literally exists to provide these content warnings to officially published games, the least people could do is provide them to unofficial content.
sega is kinda the reason esrb exists too
 
Last edited:
match with she are cool, but I found one little glitch.

I can get a free killing "Samus player" bonus if I kill not Samus player
srb20074.gif

There will be time, fix it! ( J uL)
 
Last edited:
So, I wrote up some code to grant Annie Phazon resistance and decided to try it out. It's not working quite like I'd hoped...

Phazon Protection - Annie:
//Hard to Kill - Phazon (the Phazon in ACZ4 of Metroid Vanguard is coded differently from other instant kill floors)
addHook("PlayerThink", function(player)
    if player.mo and player.mo.valid then
 
        if player.mo.skin ~= "annie_belnades" then
            return
        end
 
        if player.mo.pzpaintime == nil then --player.mo.pzpaintime gets defined in Metroid Vanguard's source code, but it makes sense to define it here as well so that it doesn't return errors if Metroid Vanguard isn't loaded.
            player.mo.pzpaintime = 0
        end
 
        if player.mo.pzpaintime ~= 0
        and player.mo.pzpaintime <= 4
        and player.mo.energy >= 20*FRACUNIT then
            player.mo.pzpaintime = $ + 44
            player.mo.energy = $ - 20*FRACUNIT
            player.mo.deathdefiance = 2
        end
    end
end)

For whatever reason, if Annie so much as touches Phazon, her energy ends up ticking down to 0 over the next several seconds, no matter how quickly she gets out. Also, she still dies instantly, regardless of her energy, if one of Dark Samus's attacks launches her directly into the Phazon. In fact, she ends up losing 10 Rings upon first touching Phazon before the resistance kicks in… I did look at the Metroid Vanguard source code to try to figure out how the pzpaintime thing works, but I must have misinterpreted something.

And now that I think about this again, my code as written just assumes that pzpaintime resets back to 0 upon exiting Phazon, like how pw_underwater and pw_spacetime work, and keeps it above 1 as long as sufficient energy remains, which would explain why Annie's energy inevitably drains to 0 upon touching Phazon. (I based the Phazon resistance code on the drowning/suffocation resistance code I wrote on Zarosguth's suggestion. And I also completely neglected to create a "Phazon delay" variable like I did for drowning and suffocation, which may explain the initial Ring loss.)

@GoldenShine I reworked the code for surviving the Phazon in ACZ4. Hopefully this will let Annie survive getting smacked directly into the Phazon by Dark Samus.

Phazon Protection - Annie:
//Hard to Kill - Phazon (the Phazon in ACZ4 of Metroid Vanguard is coded differently from other instant kill floors)
addHook("PlayerThink", function(player)
    if player.mo and player.mo.valid then
 
        if player.mo.skin ~= "annie_belnades" then
            return
        end
   
        if player.mo.pzpaintime == nil then --player.mo.pzpaintime gets defined in Metroid Vanguard's source code, but it makes sense to define it here as well so that it doesn't return errors if Metroid Vanguard isn't loaded.
            player.mo.pzpaintime = 0
        end
   
        if player.powers[pw_underwater] == 0
        and player.mo.pzpaintime ~= 0 then
            player.mo.pzpaintime = 0 --Phazon appears to be a water sector property, so this should prevent energy from being drained while the player isn't in Phazon
        end
   
        if player.mo.pzpaintime == 44 --if the player has just entered Phazon
        and player.powers[pw_underwater] == underwatertics --this code should run on the very first tic of Phazon exposure (Phazon is a water sector)
        and player.mo.energy >= 20*FRACUNIT then --energy is required to stave off Phazon
            P_GivePlayerRings(player, 10) --add 10 Rings to the player to counteract first-tic Ring loss/death (these Rings should be immediately lost as the first tic of Phazon exposure takes them away)
            player.mo.energy = $ - 20*FRACUNIT --energy cost of staving off Phazon
            player.mo.deathdefiance = 2 --prevent energy from regenerating until the player has exited Phazon (and for 2 seconds afterwards)
        end
   
        if player.mo.pzpaintime ~= 0 --main Phazon delay loop
        and player.mo.pzpaintime <= 4
        and player.mo.energy >= 20*FRACUNIT then --energy is required to stave off Phazon
            player.mo.pzpaintime = $ + 44 --prevent player.mo.pzpaintime from hitting 1 and triggering death/ring loss
            player.mo.energy = $ - 20*FRACUNIT --energy cost of staving off Phazon
            player.mo.deathdefiance = 2 --Pause energy regeneration for 2 seconds after Phazon exposure
        end
   
        if P_PlayerInPain(player) == true
        and player.mo.pzpaintime ~= 0 then
            player.mo.pzpaintime = $ + 2 --safeguard against instantly dying upon getting smacked into Phazon
        end
    end
end)

P.S. Would it be possible to add Phazon to other maps?



EDIT: Oh fuck, that was even worse. (I would have inserted my recording of my test, but that made the message board freak out.)

Turns out that I accidentally wrote pw.underwater instead of pw_underwater. I'll try again after correcting the issue.



EDIT: Nope. First contact with the Phazon still took 50 Rings, and trying to jump out put Annie in the pain state. What the heck is going on?!
 
Last edited:
I did my best to record as much of the glitch I could (I couldn't get the whole glitch) but the power grip will sometimes act up and stop you from jumping 3 inches or higher with your only savior being the spring ball. And sometimes if you try to use the power grip for what it's meant for, it will always freak out and soft lock you while making Samus look like shes having a seizure after taking cr-[Non-descript stimulant]. With the only way out being to either restart from last checkpoint or quit the play session and save yourself the headache. Golden Shine, I understand that you might be busy, But please fix this. It is a great mod that is being held back by a bug that (And I am not a programer so I am just making an assumption) I think would be easy to fix. Please keep this constructive criticism in mind, and thank you for reading.
 

Attachments

  • SRB2 v2.2.10 2023-07-25 00-44-40.mp4
    126.1 MB
I did my best to record as much of the glitch I could (I couldn't get the whole glitch) but the power grip will sometimes act up and stop you from jumping 3 inches or higher with your only savior being the spring ball. And sometimes if you try to use the power grip for what it's meant for, it will always freak out and soft lock you while making Samus look like shes having a seizure after taking cr-[Non-descript stimulant]. With the only way out being to either restart from last checkpoint or quit the play session and save yourself the headache. Golden Shine, I understand that you might be busy, But please fix this. It is a great mod that is being held back by a bug that (And I am not a programer so I am just making an assumption) I think would be easy to fix. Please keep this constructive criticism in mind, and thank you for reading.
Why I cant load your video,
He too fat?
And, else your srb2 version is 2.2.10?
Well, maybe you forgot to rename the folder?
 
I did my best to record as much of the glitch I could (I couldn't get the whole glitch) but the power grip will sometimes act up and stop you from jumping 3 inches or higher with your only savior being the spring ball. And sometimes if you try to use the power grip for what it's meant for, it will always freak out and soft lock you while making Samus look like shes having a seizure after taking cr-[Non-descript stimulant]. With the only way out being to either restart from last checkpoint or quit the play session and save yourself the headache. Golden Shine, I understand that you might be busy, But please fix this. It is a great mod that is being held back by a bug that (And I am not a programer so I am just making an assumption) I think would be easy to fix. Please keep this constructive criticism in mind, and thank you for reading.
You need to update to SRB2 2.2.11 first, I can't focus on potential old version-exclusive issues.

match with she are cool, but I found one little glitch.

I can get a free killing "Samus player" bonus if I kill not Samus player
View attachment 96278
There will be time, fix it! ( J uL)
Noted. The good news is that it affects ALL players, so it's an even enough playing field. Honestly, bonus rings for scoring kills is kinda neat.

Basically, in most areas, the Power Grip latches to THE AIR and is stuck in a constant feedback loop of grabbing onto something that doesn't exist.
MOST areas, not just a one-off? Just to make sure, your SRB2 is updated to v2.2.11? If not, see if you still have the issue.
 
I apologize if this has been mentioned before, but:
...okay, the mb is being fickle again, it won't let me upload the gif.
I'll just describe it.
In Deep Sea Zone (i found this out in act 1), if you hit the Jet Jaws with the Hyper Beam, they take damage, but also float upwards a bit and stay in the air...still "floating".
...Not much else to say about it, it's just an odd little bug.

Edit: Also, is it supposed to go straight to DSZ4? I didn't even get to play DSZ3.
 
Last edited:
In Deep Sea Zone (i found this out in act 1), if you hit the Jet Jaws with the Hyper Beam, they take damage, but also float upwards a bit and stay in the air...still "floating".
...Not much else to say about it, it's just an odd little bug.

Edit: Also, is it supposed to go straight to DSZ4? I didn't even get to play DSZ3.
Oh riiight, that bug's been around since the SRB2 2.1 release and I still haven't fixed it....

You can think of Samus' Act 4 as alternative acts to Act 3 rather than a sequel. It wouldn't make sense in the little plot anyway to encounter Eggman or Fang before the act 4s.

I didn't know a new update for the game was made, I really gotta check this site more often😅
It's okay, I highly appreciate the initiative to post bugs anyway. One person can only bugtest so much compared to the public!
 
One question,
Can I turn off autoadd music?
No, I like metroid ost,but I for my game use bat file.
But he else wanna add samusmusic.pk3,
But of course he can't did it.
I wanna try little speedruning as samus in red volcano zone,
But that micro lag on start run already little infuriates me.
I found nothing in spacesnip
 
I was reminded my old google documentation of Samus' custom mapthings number isn't up to date, so here's the current one!
TANK EXPANSIONS:
Missile Tank = 3841
Energy Tank = 3842
Super Missile Tank = 3843
Power Bomb Tank = 3844

POWER UPS:
Morph Ball Bombs = 3831
Hi Jump/Spring Ball = 3849
Boost Ball = 3845
Spider Ball = 3974

Speed Booster = 3846
Screw Attack = 3848
Space Jump = 3850
Power Grip = 3862

Varia Suit = 3867
Gravity Suit = 3847

BEAMS: (Get one 2x for the Beam Combo)
Charge Beam = 3851
Spazer Beam = 3852
Wave Beam = 3853
Ice Beam = 3854
Plasma Beam = 3855

AMMO/HEALTH:
Missile Ammo = 3861
Missile+ Ammo = 3839
Super Missile Ammo = 3860
Power Bomb Ammo = 3859
Small Energy (Purple) = 3858
Medium Energy (Red) = 3857
Large Energy (Yellow) = 3856

BONUS ITEMS:
Auto Tank = 2165
Ammo Digitizer = 2166
Scan Visor = 2172

DSZ4:
Sanus' Gunship = 2171
Larva Metroid(In Egg) = 2170
Larva Metroid = 2160
Metroid = 2161
Super Metroid (Unfinished!) = 2162
Omega Metroid = 2163
Omega Metroid Shell = 2164
Grounded flames = 2158
Falling Leaves (Becomes Phazon Particles if ANGLE is 90) = 2167

ACZ4:
Dark Samus Stalker = 2168
Dark Samus (Boss) = 2169
Fang Corpse = 2173

For Phazon:
Make a water FOF calling action 443 with "PZPAIN". Phazon texture name is PHAZ01. Samus gains immunity if she has player.sam_phazonsuit, but this isn't tracked by the game.​

The main post has received this updated list too!

591459907576922113.webp
 
Back
Top