[Open Assets] Yet another Sonic Adventure mod (AnotherAdventureMod.wad)

This content may be freely modified and/or maintained by anyone.
Status
Not open for further replies.

GlitchyGamer2401

Now named "TheLoneAlpha"
Since I'm new here, I thought I might as well post a wad I've been working on from before I made this account.
It's a simple mod that makes the game slightly more like the adventure games and some snippets of Sonic Advance and Sonic 3, while trying to stay true to the vanalia SRB2. The important part of this wad is the new monitor sprite that I've drawn form scratch. There are a few replaced sounds and a few simple LUA scripts.

features-
-given Sonic homing attack
-Tails can drop out of flight with spin button
-Tails has hold-fly
-Tails and Knuckles can become super in single player
-Knuckles has multiability
-Knuckles has infinite glide when super
-Multiability when super
-has its own savedata



I am aware of the many Sonic Adventure mods on the forums, but as my first wad, I felt the need to post this.

-Added alternate version that only changes monitors
 

Attachments

  • screenshot.png
    screenshot.png
    11.1 KB · Views: 478
  • AnotherAdventureMod.rar
    330.6 KB · Views: 1,124
  • AnotherAdventureMod-monitors-only.rar
    28.6 KB · Views: 652
Last edited:
First of all—nice monitor sprites, at least in my opinion. Probably one of, if not the best looking Adventure-style graphic I've seen in SRB2. Kudos.

Secondly, I have a couple of little optimization tips for your Lua. The game runs through each MobjThinker hook and each ThinkFrame hook during every frame of gameplay. This means if I'm playing as Sonic, I'm still iterated through each every one of Tails' and Knuckles' thinkers, even if their code doesn't actually execute for me. I'd recommend merging all of the MobjThinkers into one large MobjThinker hook and all the ThinkFrame hooks into one large ThinkFrame. So instead of
Code:
addHook("ThinkFrame", do
    for player in players.iterate
        if player.mo and player.mo.skin == "sonic"
            //code and stuff
        end
    end
end)

addHook("ThinkFrame", do
    for player in players.iterate
        if player.mo and player.mo.skin == "tails"
            //code and stuff
        end
    end
end)
Just do
Code:
addHook("ThinkFrame", do
    for player in players.iterate
        if player.mo
            if player.mo.skin == "sonic"
                //All of Sonic's code
            elseif player.mo.skin == "tails"
                //All of Tails' code
            end
        end
    end
end)
That way you only iterate through every player once. It's not a huge difference in this case, but it's good practice and it is more efficient, especially if you have a lot of wads loaded.

Second protip: in a MobjThinker hook for MT_PLAYER, mobj.player.mo just points back to mobj. I.E., mobj.player.mo.skin is the same as mobj.skin. You want to avoid redundancy wherever possible since that's inefficient. It's also less typing which is a plus!
 
Status
Not open for further replies.

Who is viewing this thread (Total: 0, Members: 0, Guests: 0)

Back
Top