@Draictig Can your Push script be used to create a basic push attack skill (as a skill effect)?
If so, can it also be modified to do the opposite (Pull)?
Yes, that's how it works. Actually you can make both push/pull in the same way. I'll explain what I'm doing for make it easier to replicate. but is important to add that I made this for battles with only one actor and one enemy. English is not my first language so I apologize in advance if I write something incorrectly.
First. You need find a way to save in variables the Id events from every actor and enemy. I find that
Galv's Event Spawner is just perfect for do that.

This image is from an event that:
1-clear all previous spawned/cloned events.
2-fadeout for hide the next event spawn.
3-A switch for prepare the "battle processing" in other event.
4-Spawn/clone actor event in the desired location.
5-
Important: Save last spawned event Id into variable 6 (or any variable you chose).
6-Spawn/clone enemy event in the desired location.
7-
Important: Save last spawned event Id into variable 7 (or any variable you chose).
You must repeat this until you save a variable for each actor/enemy that take part in the battle.
The next thing to do is create the push skill in a common event. The common event in general terms checks who enemy/actor is receiving the push effect and then applies that effect (the movement).
In my game all battles are 1v1 so for me was easy to check who actor/enemy was receiving the skill effect. I just checked if the current turn was a player turn or an enemy turn (player phase id/enemy phase id in plugin parameters).
If you have multiple actors/enemies in the battle you still have to solve this. You need find a way to check not the actor/enemy id, but the event id that represents that actor/enemy into the battle. Maybe our great
@arleq1n could help us with this.
Actually, with this the previous step can be avoided.
Once you know the event id from the actor/enemy, you need create a conditional branch for ensure that the pull/push effect works in all enemies/actors.

In the image this is what happens:
1-wait 15 frame for delay the moment where the actor/enemy is pulled/pushed after the skill is used.
2-check who is receiving the skill effect.
3-script:
a) create a temporal variable that saves the actor/enemy event id that is receiving the skill effect (just to avoid syntax errors).
In my case I'm using the value that I got from Galv's Event Spawner, but if you knows the event id from the player/enemy that is receiving the skill effect, you can save it in this variable directly, avoiding the need for repeat the conditional branch.
b) increase the move speed for that event.
c) move the event in the desired direction. Backward = push, Forward = pull, repeat for each distance step. (all events by default, are looking in the direction of the character that triggers the event).
d) return the move speed for that event to previous value.
Finally just add the effect in the desired skill calling the common event.