I have released a major update for Push and Pull. This comes after my experience of actually using it in the recent Dmod I collaborated on with ExDeathevn, and really fine tuned things to make this super easy for Dmod developers to implement and use.
A complete beginner in Dmodding could use this now. It will take roughly 10 minutes to implement and maybe another few minutes to start making scripts to make sprites able to be push and pulled (copy, paste, edit 1 line in the script)
It has the intermediate - advanced developer in mind as well though, with the ability to fully configure the system without touching any of the core scripts. All configuration is achieved through setting sp_custom key values on sprites(or on Dink).
I have also ditched the video tutorials for now(since they are outdated), and instead I have written a comprehensive document on google docs explaining all aspects of Push and Pull from basic to advanced level: Push and Pull Documentation
Some of the major updates:
- No global variables used anymore
- No local variable needed in each move-able sprite script
- No dink.ini editing required
- A LOT of bug fixes and tweaks
- Scripts cleaned up
See the comments for all of the updates.
All of the updates:
- Removed the “Hold Z to pull” method. Sticky push is the one and only method now, because it’s superior and much more intuitive.
- Fixed an issue with remotely terminating a push/pull procedure, where it would not reset the sprite properly.
- Added custom key values that can be retrieved to determine current status and specifics of push/pull, for ease of puzzle creating.
- Removed much redundant scripting (Many unused custom keys, external calls, loops, unused procedures, and other redundant stuff).
- Fixed a bug where a sprite can permanently lose it's hardness if Dink touches it while moving another sprite.
- Fixed incorrect calculations in collision which would sometimes cause the player to move through hardness when pulling.
- Fixed the automatic hardbox calculation, used when the author DOES NOT pass hardbox info to phisbo proc in their sprite's script.
- Added a popup warning for authors if auto hardbox calc is unsuitable for the particular screen, and a reminder to pass the hardbox values to the phisbo procedure instead.
- The Push/Pull sequence frame_delay matches Dink's speed now, no sliding along the ground - now dink's steps actually match his speed everytime no matter the speed of the sprite.
- Fixed a bug where Dink could activate the push/pull on two sprites at once and the whole game would start glitching.
- Fixed a bug where Dink's push sequences can get messed up between loading save games.
- Fixed a bug with the "moveactive" procedure that would sometimes cause the procedure to return "0" when it should return "1".
- Skeleton "move-able sprite" script has been updated to reflect changes, with some redundant stuff removed and to clean it up.
- Added a sp_custom key, which can be set to make a sprite ignore hardness when being push/pulled.
- Added many other custom keys able to be "set" in the moveable sprite's script, to manipulate and configure almost any aspect of the push and pull system.
- Altered push/pull calculations to assure sprite move limits are strictly followed regardless of engine timing issues, so a sprite will not move even 1 pixel passed it's intended x/y limit.
- Fixed a bug that would cause a very slight(probably un-detectable) discrepency when using a sp_custom key to override a sprite's move limit.
- Fixed Dink's position mis-aligning when swapping between push and pull, and a faster item is equipped, causing weird graphic jumping issues.
- Old dink push mechanic and push and pull BOTH work - if push and pull is configured on a sprite, it will work, and sprites with a push procedure will still work and use the old dink push mechanic.
- Push and Pull now does not interfere with original push mechanic when walking against sprites - you can now enable “push_active” if you want so dinks push anim still happens on all sprites (even ones that aren't move-able)
- Fixed a bug where pull calculations would get messed up, causing Dink and the Sprite to jump across the screen
- When you check if a sprite is currently being moved with "external("phisbo", "moveactive)", it now returns the active sprite number of detected sprite(if it tests TRUE) instead of just returning "1".
- Fixed a bug caused by a conflict of active sprite numbers in the push and pull scripts, when a dmod developer attaches a shadow to a move-able sprite.
- Altered system to unload 1 very large script out of memory(phishyb.c) as soon as push and pull is fully initiated (lag removal).
- Simplified dinkspeed.c script (it’s super simple now compared to before)
- Removed requirement of button4.c script.
- Removed many unnecessary "wait()" lines. (lag/delay removed)
- Global Variable “&spush” no longer required
- Local variable no longer required in move-able sprite scripts
- Removed use of init lines (no duplicate push graphics loaded over the top of pig feed sequence anymore. Push anim accomplished with created fakedink sprite shadowed to Dink instead)
- Removed chance of dink showing the push sequence of a direction the player presses to disengage, before resuming his normal base_walk.
- Added diagonal direction check to phisbo.c to remove lag, by preventing load of phishyb.c into memory in situations where push/pull isn’t possible.
- Fixed a bug where disengaging a currently held object would allow you to phase through adjacent hardness
- Removed requirement of version checker - it's not required by push and pull anymore