Hey all thought I'd show off a mini-side project that I was working on to figure out how I'd want to tackle recreating bot-like behaviour.
>>Updated to v2.1 see notes in "Important Stuff" section and changelog below<<
Introducing...
Double Cherry Power-Up
Yes I know on Discord I kept going back and forth over calling it Double Cherry lol
This power-up is my take on the double cherry power-up from Super Mario 3D World. This may not be a 100% accurate representation of the power-up from the original game.
By breaking one of the double cherry monitors, a clone of the player will be spawned.
This clone mimics most of the player's actions and is useful for destroying enemies and obstacles.
>>Important Info<<
1) Clones can have their positions rotated by tapping the custom 1, ring toss or ring toss normal buttons. If you press and hold these buttons then the clones will assume their default spawning positions.
2) This mod comes in two versions:
- "L_DoubleCherry(play)-v2.pk3" replaces all ring monitors with a double cherry monitor. This is for adding another fun experience to the standard vanilla campaign playthroughs.
- "L_DoubleCherry(editor)-v2.pk3" is for map creators who would like to take advantage of these clones in their own projects.
Mapthing no. 2998 is the normal monitor while mapthing no. 2999 is the respawnable version.
- Additionally when using the editors version you can take advantage of linedef types 314 and 315. These clones count as pushable objects, so they can be used to trigger certain effects in a level.
>>Updated Information For Mappers<<
As of version 2.1 you can now have the clones activate more linedef types than before, particularly linedef types that relied on a player object to activate them (e.g. 413 - Change Music, assuming that the "Not Climbable" flag is unchecked).
This works similarly to linedef types 314/315 mentioned above.
To utilise this feature use the Call Lua Function - 443 linedef special.
1) Type "P_CCHECK" in the upper front texture fields.
2) The x-offset of the front upper texture must only use numbers 1 - 4, the value set is compared to the number of clones you have in your original trigger sector.
3) Checking the "Not Climbable" flag checks if the no. of clones >= the x-offset. While the "Solid Midtexture" flag checks if the no. of clones <= the x-offset.
4) Lastly set the tag to the tag number of another linedef executor trigger (which would be on the same control sector that has a linedef special that affects the player).
Bug: When using the new linedef action, clones may not trigger an effect if they're in separate trigger sectors that share the same tag.
A test map is included in the this release, launch the game/map editor with both the editor edition (as a resource if using a map editor) and the map.
Special Note: This mod was mainly made for the vanilla characters (Sonic, Tails, Knuckles, Amy, Fang and Metal Sonic), it was not made with custom characters in mind. I may work on adding support for non-vanilla characters in the future.
Changelogs:
>>Updated to v2.1 see notes in "Important Stuff" section and changelog below<<
Introducing...
Double Cherry Power-Up
Yes I know on Discord I kept going back and forth over calling it Double Cherry lol
This power-up is my take on the double cherry power-up from Super Mario 3D World. This may not be a 100% accurate representation of the power-up from the original game.
By breaking one of the double cherry monitors, a clone of the player will be spawned.
This clone mimics most of the player's actions and is useful for destroying enemies and obstacles.
>>Important Info<<
1) Clones can have their positions rotated by tapping the custom 1, ring toss or ring toss normal buttons. If you press and hold these buttons then the clones will assume their default spawning positions.
2) This mod comes in two versions:
- "L_DoubleCherry(play)-v2.pk3" replaces all ring monitors with a double cherry monitor. This is for adding another fun experience to the standard vanilla campaign playthroughs.
- "L_DoubleCherry(editor)-v2.pk3" is for map creators who would like to take advantage of these clones in their own projects.
Mapthing no. 2998 is the normal monitor while mapthing no. 2999 is the respawnable version.
- Additionally when using the editors version you can take advantage of linedef types 314 and 315. These clones count as pushable objects, so they can be used to trigger certain effects in a level.
>>Updated Information For Mappers<<
As of version 2.1 you can now have the clones activate more linedef types than before, particularly linedef types that relied on a player object to activate them (e.g. 413 - Change Music, assuming that the "Not Climbable" flag is unchecked).
This works similarly to linedef types 314/315 mentioned above.
To utilise this feature use the Call Lua Function - 443 linedef special.
1) Type "P_CCHECK" in the upper front texture fields.
2) The x-offset of the front upper texture must only use numbers 1 - 4, the value set is compared to the number of clones you have in your original trigger sector.
3) Checking the "Not Climbable" flag checks if the no. of clones >= the x-offset. While the "Solid Midtexture" flag checks if the no. of clones <= the x-offset.
4) Lastly set the tag to the tag number of another linedef executor trigger (which would be on the same control sector that has a linedef special that affects the player).
Bug: When using the new linedef action, clones may not trigger an effect if they're in separate trigger sectors that share the same tag.
A test map is included in the this release, launch the game/map editor with both the editor edition (as a resource if using a map editor) and the map.
Special Note: This mod was mainly made for the vanilla characters (Sonic, Tails, Knuckles, Amy, Fang and Metal Sonic), it was not made with custom characters in mind. I may work on adding support for non-vanilla characters in the future.
Changelogs:
General Clone Fixes
- Clones now show a bit more independent behaviour when either they or the player are launched vertically by springs.
(Diagonal and horizontal springs will continue to not affect their horizontal momentum.)
- Clone-to-cacti collision fix
- Clones no longer die multiple times when you fall into a pit and you should no longer be rewarded points for doing
- Clones now jump with you when jumping of/from carrier type objects
- Clones now face the same angle the player is facing when they're carried
- Clones spawn afterimages when the player has the speed shoes power-up and sparkles when the player has invincibility power-up
- Clones die in pit
Character Specific Updates
- Amy clones will continue aerial hammer attack after hitting an object in mid-air
- Fixed issue with Tails bot player having its own table for clones
- Fang clones no longer able to bounce when original has stopped bouncing
Level Interaction & Mapping Stuff
- Clone breaking FOF floor implemented, fixed an incorrectly placed variable and made it so that Fang and amy can break FOF floors that they're on top of (same should apply to ceilings if gravity is reversed)
- Due to how the table of clones was setup, if you had one clone missing and an incomplete table (not having all 4 entries filled),
then if you were to break two cherry monitors at once, an error will occur and only one clone is spawned after breaking the two monitors.
- Shatter/Bustable FOF blocks that are linked to a trigger linedef executor works with clones now.
- Additional mapping features added in order to have the clones trigger effects that only the player could trigger.
- Clones now show a bit more independent behaviour when either they or the player are launched vertically by springs.
(Diagonal and horizontal springs will continue to not affect their horizontal momentum.)
- Clone-to-cacti collision fix
- Clones no longer die multiple times when you fall into a pit and you should no longer be rewarded points for doing
- Clones now jump with you when jumping of/from carrier type objects
- Clones now face the same angle the player is facing when they're carried
- Clones spawn afterimages when the player has the speed shoes power-up and sparkles when the player has invincibility power-up
- Clones die in pit
Character Specific Updates
- Amy clones will continue aerial hammer attack after hitting an object in mid-air
- Fixed issue with Tails bot player having its own table for clones
- Fang clones no longer able to bounce when original has stopped bouncing
Level Interaction & Mapping Stuff
- Clone breaking FOF floor implemented, fixed an incorrectly placed variable and made it so that Fang and amy can break FOF floors that they're on top of (same should apply to ceilings if gravity is reversed)
- Due to how the table of clones was setup, if you had one clone missing and an incomplete table (not having all 4 entries filled),
then if you were to break two cherry monitors at once, an error will occur and only one clone is spawned after breaking the two monitors.
- Shatter/Bustable FOF blocks that are linked to a trigger linedef executor works with clones now.
- Additional mapping features added in order to have the clones trigger effects that only the player could trigger.
1) Credits to #scripting channel peeps on Discord, for helping with the following:
- operation tips (Tatsuru)
- bitwise operation explanation (Monster Iestyn)
- solving the sprite error issue with Amy and Fang's abilities, by explaining how certain player variables related to the
player's state (like anim_duration, tics, etc.) work (Monster Ieystyn and... I forgot the rest I'm sorry ;_; )
- assigning MF_PUSHABLE flag to copies to trigger a specific linedef executor (Zipper)
- appropriate setup for storing multiple player clones in a table (Zipper, Golden, LJ Sonic, Kayasako)
2) Credit to Zolton for the double cherry monitor sprites
- operation tips (Tatsuru)
- bitwise operation explanation (Monster Iestyn)
- solving the sprite error issue with Amy and Fang's abilities, by explaining how certain player variables related to the
player's state (like anim_duration, tics, etc.) work (Monster Ieystyn and... I forgot the rest I'm sorry ;_; )
- assigning MF_PUSHABLE flag to copies to trigger a specific linedef executor (Zipper)
- appropriate setup for storing multiple player clones in a table (Zipper, Golden, LJ Sonic, Kayasako)
2) Credit to Zolton for the double cherry monitor sprites