Luigifan18
Member
So, for the past few months, I've been diligently working on bringing my main Sonic OCs — Annie, Sonja, Flora, and Cassandra Belnades — to Sonic Robo Blast 2. Progress hasn't always been smooth, but all 4 are currently in a semi-playable state. However, I still have a long way left to go, and I think I'm nearing the limits of what I can accomplish on my own with just the wiki as a guide, so I'm going to need some community assistance in fixing the bugs and implementing the missing features!
Concept tweaks after the start of programming:
Things that still need to be added:
Issues that need to be fixed:
Concept tweaks after the start of programming:
- The Phazon in Metroid Vanguard is not an instant-kill sector, and minecarts don't use
DMG_INSTAKILL
either; they both useP_KillMobj
. I've been working with Golden Shine to develop a specialized Phazon resistance passive for Annie, but I'm not sure what to do with minecarts yet. - Sonja's Chrono Evasion now includes a flash jump (read: a vertical flash step) and a counterattack.
- Flora's Holy Lightning now has two Easter Egg variations that are intentionally mis-coded to either stay in place upon deployment or follow Flora around to zap any enemy that gets too close for comfort.
- Okay, how do I get Facciolo to taunt the Belnades sisters in the Silverhorn mod? I feel like he could definitely mess with them by bringing up an alliance with their nemesis, Mysto Majora Kijadhimov the purple tie-dye sorceress hedgehog… (She likes making alliances. She's kinda BFFs with Eggman, she sees him as a kindred spirit…)
Things that still need to be added:
- Each of the Belnades sisters need their own sprites and animations (Tails's sprites are currently being used as a placeholder).
- The Belnades sisters' non-standard actions have not had their corresponding states implemented yet. (I'm not sure if all of them actually need states...)
- Sound effects and visual effects for various actions (including Vixen Vortex, Sonja's time slow and rewind, Flora's spells, and Cassandra's copy actions) have not been added yet.
- The console command to allow the player to freely adjust their current energy in devmode is not implemented yet.
- I'd like to enable Annie's healing to mitigate the effects of and/or speed up recovery from some of the status effects in the MonitorsPlus mod, such as poison, as well as some status effects in the base game, like Canarivore gas-induced slowdown.
- Annie's Emergency Carry is not implemented yet. I thought I could use Dirfex's carrying code as a placeholder, but in hindsight, that probably won't work.
- The code for Annie's tweaks to other players' respawn behavior (and the console commands to regulate said tweaks) is incomplete, and I'm not sure how to proceed.
- Sonja's time slow and rewind do not currently have any effect on mobjs, FOFs, polyobjects, pushers, scrollers, or, well, anything except for the level timer. (Due to technical limitations, Sonja also only affects her own level timer at the current time.)
- I recently added code to make the time slow work on mobjs, but I'm not really sure how effective it is.
Only the most basic version of Sonja's time slow is implemented at all, and there is no practical difference between versions 2 and 3 of the rewind ability.- (Version 1 of the rewind, which freezes Sonja in place while everything else rewinds, is working somewhat as intended (aside from nothing except for Sonja's level timer rewinding) due to
PF_FULLSTASIS
being used to lock Sonja in place while C2 is held without Toss Flag or C1. Version 2 is intended to rewind Sonja along with all other mobjs, while Version 3 is intended to let her move around freely while everything else is rewound.)
- (Version 1 of the rewind, which freezes Sonja in place while everything else rewinds, is working somewhat as intended (aside from nothing except for Sonja's level timer rewinding) due to
- The console command that is meant to disable Sonja's rewind in the event that the other players find being rewound to be more of a hindrance than a help is not implemented yet.
- Sonja's counterattack is supposed to deal 2 damage, but I am not sure how to increase the damage dealt by the player attacking directly at all, let alone temporarily during one specific state.
- (I suspect that I might be able to use a
MobjMoveCollide
hook.)
- (I suspect that I might be able to use a
- Sonja's radar and advance-warning passives have not been implemented yet.
- I think the radar can draw from the automap that would otherwise be toggled with the Tab key in devmode, but Sonja's radar should only show what's within about 1200 fracunits of her current position and should be able to differentiate between different types of object (or at least between helpful and harmful objects).
- Flora's spell sprites still need angled sprites and additional frames of animation.
- Flora still needs her own Frost Shield sprites (Dirfex's Ice Shield is currently being used as a placeholder).
- Several Badnik and boss abilities for Cassandra's Copy Bolt are not implemented yet.
- In fact, I'm at somewhat of a loss for what abilities I can give Cassandra to emulate the behaviors and abilities of certain enemies, like Jet Jaw,
Penguinator, or Crawla Commander. - There are other abilities where I have an idea of what I want Cassandra to do, but I'm not sure how to implement the powers. In particular, I'm not sure how to detect whether the top, bottom, front, or rear of Cassandra's hitbox has been hit for the Spring Shell, Banpyura, or Green Snapper abilities, how to stand on water for the Skim, how to launch the Crushtacean claw, how to emulate the burrowing of the Minus,
how to drop projectiles downward for the Skim, Dragonbomber, or Jetty-Syn Bomber powers, or how to grant Cassandra a regenerating Lightning Shield or a charge-requiring hitscan attack if she copies Brak Eggman.- I may have figured out a system for detecting the top or bottom of the player's hurtbox, based on the relative
z
positions of the player and their attacker compared to the player'sheight
parameter. I tested the Spring Shell power and it does seem to bounce Buzzes up and prevent damage as intended. I'm still not sure how I'm going to detect the player being attacked from the front, side, or back, though. - I figured out a system for emulating the Minus's burrowing that involves height manipulation and a
ShouldDamage
hook. I'm still not sure how I'm going to allow Cassandra to burrow underneath FOFs that are touching the ground beneath them. - I want Cassandra to be able to climb walls in a similar fashion to Samus's Spider Ball if she copies a Snailer, but I'm not sure how to check that the player is contacting a wall.
- I may have figured out a system for detecting the top or bottom of the player's hurtbox, based on the relative
- In fact, I'm at somewhat of a loss for what abilities I can give Cassandra to emulate the behaviors and abilities of certain enemies, like Jet Jaw,
- The ability for Cassandra to copy or mimic the abilities of other skins is not implemented yet.
- (Well, technically, Cassandra can copy skins, but then I get an error about putting a string in a number variable. Also, even if that wasn't the case, the code to grant Cassandra the abilities of the copied skin is not written yet, because I'm not sure how to achieve my plan of partially overwriting Cassandra's code with the code of the copied skin.)
- Cassandra's mimicry menu is not implemented yet.
Issues that need to be fixed:
- The SOC
PlayerText
for each of these characters is way too long, to the point where it flat-out generates a warning message on character load for Cassandra. - Vixen Vortex doesn't put the user in the falling animation after it's done ascending, creating the erroneous impression that it can damage enemies and break monitors on the way down.
- Vixen Vortex isn't intended to keep the user in the basic spinning animation while going up; it's supposed to play a vertically-twirling animation more akin to Blaze's tornado spin. (The double jump is called Vixen Vortex for a reason. Well, okay, the reason is that it also filled in for the Speed characters' tornado move in a hypothetical Sonic Heroes playable role for Annie…)
- Holy Bolt and Copy Bolt hit 4 times per use, effectively bypassing their sub-standard damage per uncharged or low-charge shot. They're only supposed to hit once per shot. (And yes, I did write
P_KillMobj
code in theirMobjMoveCollide
hooks to deactivate them when they've hit something. I'm not quite sure why that isn't working. (Maybe I should make thesource
andinflictor
nil
rather thanthing
. Or maybe I should just useP_RemoveMobj
instead.))- (I added code to temporarily remove
MF_SHOOTABLE
from enemies when Holy Bolt hits them, so hopefully that fixes this issue.)- (Nope, that didn't fix it!)
- (I added code to temporarily remove
- I can't quite figure out how to get
GetSecSpecial
to work. As a result, code that's intended to account for certain sector effects, like ring drain or CTF bases, only work properly with the intended sector effects by themselves, without any other sector effects being mixed in. - Annie hasn't been tested in multiplayer, so I have no idea whether or not her healing and revival abilities are even functional on other players.
- Annie sometimes gets pushed out of the map when she withstands being crushed (and depending on the dimensions of the crusher and the map, being out-of-bounds doesn't always count as her continuing to be crushed, which can possibly force the player to manually restart from the pause menu). This happens far more often with sideways-moving crushers or continuously falling sectors.
Sonja's time slow outright freezesplayer.realtime
instead of making it count up more slowly (slowedtime
counts up at a rate of 1 per tic instead of the intended rate of 1 per 15 tics).- This issue has been fixed by reconfiguring the math.
When playing as Sonja,player.realtime
continues counting up even after thePF_FINISHED
player flag has been set, and doesn't stop incrementing until the results screen comes up.- I figured out a fix for this issue.
- Sonja's flash step is still a bit finicky (it doesn't always move her in the direction the player is trying to move in) and could probably be implemented better. (In particular, I'd like for it to not activate if a movement key is already being held when Chrono Evasion negates damage; I'd like it to require a fresh button press so that the player can run through an attack or hazard without flash stepping.)
- Sonja cannot properly store the mobj that attempted to hit her during Chrono Evasion, preventing her from initiating her counterattack.
Flora's Holy Flame doesn't break bustable walls. (I was able to useEV_CrumbleChain
to let Cassandra's Minus ability smash bustable floors, so I'm not quite sure what I'm doing wrong.)- Flora's Holy Flame now breaks bustable FOFs, but it causes them to repeatedly crumble as long as the Holy Flame object that broke them lasts.
- Flora's 2D Blue Splash isn't spawning icicles at all. (Also, I have a cart-behind-the-horse problem of calling variables before they're created, which obviously isn't working, but I'm not sure how else to prevent an object that already exists from being spawned. I think I may have solved that problem by setting up an icicle-counting variable instead, which I was inspired to try when I was writing the code for Cassandra's Unidus power, but I still need to figure out how to get it to actually spawn icicles.)
- The obelisks created by Flora's Frost Shield aren't properly spreading out to surround Flora or self-destructing when the
frostshieldactive
variable hits 0.I added(...Nope, not that simple...)nextstate = S_NULL
to the death state. Hopefully that fixes this.
- Flora's Icicle Blades is not spawning icicles at all. (This also prevents 3D Blue Splash from launching the icicles.)
- I'm not sure how to make each Holy Lightning orb independently chase the closest shootable mobj, nor am I sure how to make it so that each orb can survive a single impact with a shootable mobj.
- Flora's second Easter Egg Holy Lightning spin-off isn't behaving properly; the barrier orb dies the instant it covers her position, rather than floating around her and acting as a short-ranged enemy-destroying shield as intended.
Flora's Holy Barrier isn't blocking projectiles or enemies, nor is it slowing or stopping her movement while deployed or going away when Toss Flag is released.- Actually, Holy Barrier Wall blocks one projectile, then immediately dies. It doesn't deduct the projectile's damage from Flora's energy, either.
- I reconfigured the
ShouldDamage
hook to more explicitly refer to the wall and dome by their variable names.
- I reconfigured the
- Holy Barrier Wall has no upkeep cost; it's supposed to continuously drain Flora's energy while it's active.
- Holy Barrier Dome isn't able to be conjured at all.
- Actually, Holy Barrier Wall blocks one projectile, then immediately dies. It doesn't deduct the projectile's damage from Flora's energy, either.
- Cassandra's Robo Hood abilities are rather finicky; the arrow's range is laughably short,
and the backward and forward hops don't always move her in the intended direction.- I fixed the backwards hop weird direction issue with some help from @Monster Iestyn on Discord. Turns out I should have been multiplying by
ANGLE_180
rather than usingInvAngle
.
- I fixed the backwards hop weird direction issue with some help from @Monster Iestyn on Discord. Turns out I should have been multiplying by
- Cassandra's Lance-a-Bot abilities are rather finicky; the main charge (C1) has very odd acceleration (this may be due to using
P_Thrust
),the secondary function that enables, I had to stick a cooldown onto the dash mode toggle in order to get it to work properly without being impossible to manually deactivate, and the power overall doesn't seem to reliably damage enemies, smash spikes, or protect Cassandra from damage, even when she's above the intended speed threshold (as indicated by the ghost mobjs). (Maybe I should be tracking something other thanSF_DASHMODE
(C2) doesn't seem to be working at allplayer.speed
.)- I'd like Cassandra to play the Lance-a-Bot charge sound when she reaches the speed threshold (I added
sfx_zoom
, theAttackSound
ofMT_FACESTABBER
according to the wiki, but I don't quite know if that's the right choice), and emit the Lance-a-Bot charging shockwaves while moving at or faster than the designated charging speed. Considering that there's a dashmode option as an alternative and more controllable means of going fast, the Lance-a-Bot shockwaves would be a more reliable indicator of moving fast enough to shrug off damage and smash walls and spikes anyways.
- I'd like Cassandra to play the Lance-a-Bot charge sound when she reaches the speed threshold (I added
Cassandra gets constantly jostled around by her own(I may have fixed that by setting up an alternative means of having the Egg Guard shield follow her around. (Actually, yes, that did fix the issue, but now the shield dies immediately on spawning.))followitem
when copying an Egg Guard. (I did try designating her as thefollowitem
'starget
, but this seems to have returned an error.)- The
minusdigging
variable for the Minus power doesn't seem to be working as intended; it doesn't seem to be draining energy when it should be on, allowing energy regeneration when it should be off, or modifying Cassandra's height at the appropriate times. Cassandra also doesn't pop up when C1 is released. - Some of the enemy-based objects that Cassandra can spawn behave in weird ways, like the Sea Egg shockwave only spawning one little lightning bolt that quickly vanishes.
- I fixed the Sea Egg shockwave by adding a
for
loop that shoots 360 projectiles — one for each angle. (The quick vanishing was a result of me accidentally deactivatingMF_NOGRAVITY
.)
- I fixed the Sea Egg shockwave by adding a
- Cassandra gets hurt by some of her own projectiles, including Dragonbomber mines and Brak Eggman's flamethrower, despite Cassandra being designated as the target and
MF_PAIN
being turned off. (I actually had to spawn the mines over 40 fracunits away from Cassandra and addSH_PROTECTFIRE
to the Lightning Shield that Cassandra gets by copying Brak Eggman to test the mines and flamethrower without constantly hurting Cassandra. I did eventually fix the flamethrower by using aMobjMoveCollide
hook to make the game ignore collisions between Cassandra and her own flames.) - Some of Cassandra's copy ability objects, like the Unidus spikeballs, don't despawn when the ability is discarded.
- Cassandra's dive/surface ability gained by copying the Sea Egg gets her stuck in the ceiling.
- The timer that Cassandra gets to regulate her regenerating Lightning Shield in Brak Eggman mimicry isn't working right. While she should immediately get the shield upon copying Brak Eggman if she has enough energy to activate it, once she loses it, she should have to wait 25 seconds to get it back (much like Brak Eggman takes about 25 seconds to regenerate his own electric barrier). Currently, the variable that is meant to store whether or not the shield is ready to activate in the event that Cassandra doesn't have enough energy to activate it when the timer runs down (so it can be reactivated as soon as it has enough energy) is toggling on while Cassandra currently has a shield, resulting in her getting a new shield the instant she takes damage.
Cassandra's supposed to have the Brak Eggman electric barrier as afollowitem
while she has her Brak Eggman Lightning Shield, but it doesn't show up for some reason.
- Some copy abilities, like Unidus's spikeball launch, Egg Mobile's laser shots,
and Brak Eggman's sniper shot and missiles, don't seem to be working at all.
Attachments
-
SRB2 Addon Ideas - The Belnades Sisters (Advanced Commentary).pdf438 KB · Views: 130
-
SRB2 Addon Ideas - The Belnades Sisters.pdf361.1 KB · Views: 120
-
Spriting Guidelines for the Belnades Sisters.pdf953.4 KB · Views: 113
-
CL_Annie-Belnades.pk31.8 MB · Views: 109
-
CL_Cassandra-Belnades.pk32.1 MB · Views: 92
-
CL_Flora-Belnades.pk31.8 MB · Views: 170
-
CL_Sonja-Belnades.pk31.8 MB · Views: 81
Last edited: