8-directional, 2 directional, and 1-directional Spritesheets:
Sure, a lot of people have 8-directional spritesheets (and I support all the major formats), but how many people have ONE-directional spritesheets?
With Cross Engine, you can take any old image, give it a filename, and put it in.
Save it as $Angel(f1)(d1).png, and BAM, it's usable as an event. No mucking around in photoshop making a spritesheet with four versions of the same sprite.
But that's not all! I also added intelligent sprite flipping, as well. If you named that angel $Angel(f1)(d
-1).png instead, it will flip to face left if it moves left, and flip to face right if it moves right.
Split poses and actions
One of the things really dragging down the pace of a chrono engine game is that characters were locked in place while they animated. I have changed the engine so now you have a separate 'pose duration' and 'act duration'. Pose duration means your character is playing an animation, act duration means they can't move or cast anything. I've also added a 'cooldown duration', which lets you move, but doesn't let you cast any abilities.
Intelligent Tag Parsing
1) Tags parse from right-to-left, instead of left-to-right. This seems super minor, but it means that if your base character sprite is $Harold(f4)(d8), and he has a casting pose "_casting(f8)(d1)", then the new spritesheet sizes will take precedence!
2) Filename Completion: Let's say your idle sprite for harold is "$Harold(f4)(d8)_idle(f1)(d1)". In base Chrono engine this would cause rpgmaker to screech to a halt, because it can't find "$Harold(f4)(d8)_idle".
However, upon starting up the game, Cross Engine makes a list of every file in your characters folder. When it checks for poses, it will first check for an exact match. If it doesn't get it, it will check to see if there's any longer versions of that filename. If it checks for "$Harold(f4)(d8)_idle", and can't find it, it will return "$Harold(f4)(d8)_idle(f1)(d1)".
What if there's no match at all? The event keeps its base sprite. In playtesting, it will whine about it in the console.
No crashing.
3) Negative values are now allowed for x and y offsets.
Walking actions
You know how in megaman you can shoot your little gun and megaman keeps on walking? Using the tag (walking) will keep your character in the same part of the animation cycle when transitioning into the new pose. Practically speaking, that means you can do the megaman things. If the character isn't moving, it will fall back onto a _static pose, so you don't run in place whenever you shoot.
Standing Pose
One of the big constraints on having fluid animation in rmmv is that your walking frames have to include a static pose used for standing. If you define a 'standing' pose, your character will use that instead when they aren't moving. While you can technically do this with an idle pose, I wanted to have both in my project.
Faint Poses
Mog was going to implement faint/death poses distinct from damage poses, but didn't end up finishing it. I have an implementation of this, so you can have a robot get banged up a bit when it gets hit, then violently explode into a miserable pile of circuits when it dies.
Basic Preloader Function
One thing you'll notice using chrono engine is that whenever creatures change poses for the first time, you'll sometimes see a flicker as the file loads. I have added a function which preloads all poses for a creature. If you enter ImageManager.preloadPoses('Ralph'), it will find 'Ralph_attack', 'Ralph_defense', 'Ralph_is_unstoppable(F4)(d8)(s2)(x4)', et cetera, and preload them. This doesn't happen automatically - you have to invoke it each time you're worried about preloading.
New plugin command: disable_idleposes
Turns off idle poses. Good for cutscenes where characters mugging at the camera is unwanted. Turn them back on with enable_idleposes
Intelligent Rotations
Do you want a magic circle of spinning runes? I've got you covered. In chrono engine, rotations are around the bottom center of the sprite, wherever it is. In Cross Engine, the axis of rotation is the base of the
event - the offsets you put into filenames, (y124) or (x12) or whatever, move the sprite without changing where rotations are - so if you have a 128 pixel tall wheel and put (y64) into the filename, rotating it will spin it!
I also have functions that let you tell an event to spin its sprite, and whether or not there's an angle it should stop at. So you can have a compass that always points at the player or at a monster or something.
And if you use the this.rotFaceTarg() function, your bullets will point to face the direction that they're going to move towards. In a move route, put it on the same line, directly after one of the motion-ordering commands (like rLoc, tLoc, shootForward, or shootPastPlayer)
A big pile of helper functions
I've got a bunch of functions with short names for stuff that I ended up doing often, like converting directions to vectors or angles, or making characters move in a specific direction. For instance, being able to type in tLoc(x,y) to get a character to move directly to the location x,y makes writing moveroutes and scripts a lot easier.