RMVXAce Workarounds

RPG Maker VXAce is a wonderful installment to KADOKAWA’s (formerly ASCII and Enterbrain’s) RPG Maker series. It brought a lot of new things to the table and is considered a favorite by many.

However, just like its previous predecessors, there are always some new quirks that makes old methods obsolete or just new issues as a whole because of a change in the system. The purpose of this page is to help you workaround those said quirks and/or issues.

My Parallel Process pauses during dialogue 

Why is this happening?

  • The reason why this happen is because of how RMVXAce handles event processing. This is due to Fiber.yield. It’s going to be a long explanation and the only way to “Fix” this is to rewrite the game interpreter or the message system. But fret not, there’s a way to fix this!

Why should I be concerned?

  • If you like making animated events through parallel processes, they would stop whenever a message box is visible!

How do I fix it? 

  • Just put the commands of the parallel process event inside a loop or use labels. It will run normally.

SHIFT MAPPING IS INTERFERING WITH MY AUTOTILE COLLISION

Why is this happening?

  • From what we can tell, it is intentional and only works with ceilings but not on walls. Unconfirmed, but it might only be A4 wall tops. Someone would have to test this further.

Why should I be concerned?  

  • You can walk through autotiles and reach ceilings. 

How do I fix it? 

  • Use a spare transparent upper (BCDE) tile and set the collsion to x and lay it along the edges.

My Sound Effect stops playing early

Why is this happening?

  • From what I can tell, it’s related to the new Fiber.yield. It usually happens when there’s a show message after said common event. It could be a result of RM’s built-in message skipping.

Why should I be concerned?  

  • It interferes with sound effect jingles.

How do I fix it? 

  • Add more wait frames after the sound effect. 15-60 seems to do the trick.

My Picture doesn’t disappear after erasing

Why is this happening?

  • From what I can tell, it’s related to the new Fiber.yield. It usually happens when there’s a show message after said common event. It could be a result of RM’s built-in message skipping.

Why should I be concerned? 

  • Your picture won’t disappear at all.

How do I fix it? 

  • Add more wait frames or add a clear everything after the event is done.

How do I change TP?

Go to Script Editor and search for Game_Battler, line 730:

self.tp = rand * 25

Change to

self.tp = any number you want

Enemy Battle AI:
Set Priority 10 to be an Absolute Move

Go to Script Editor and search for Game_Enemy, Line 257:

rating_max = action_list.collect {|a| a.rating }.max

below that line, add this :

rating_max = 12 if rating_max == 10

There’s a very, very small chance it might do a priority 9 attack. Unfortunately, without changing the system, this is the best we can do.

Junk Symbol or GLYPH appearing with text

Go to Script Editor and search for Game_System lines 38 – 40:

def japanese?
$data_system.japanese
end

change that to this:

def japanese?
return false
end

After that, add these for extra measure.

Lonewolf’s Custom Font Junk Symbol Fix
Mezzolan’s Arrow Fix

  • Put this below Victory Aftermath if you’re using that.

If it is still appearing, there’s a chance you have an invisible Japanese Character with your script. This usually happens when you are modifying a script that uses the Japanese version of RMVXA when creating the script. So you will have to find it and make sure that there’s no space after the word with the offending glyph.

Star collision with circle collision

By default, VXAce has star flags ignore arrow collision. This is a bit annoying when you want the character to be able to be near the object while it’s appearing above the player without using events.

Here is the solution. It checks if the tile is a star before checking collision. If the tile is a star and it is passable, it then checks the tile UNDER it.  If not, it returns false as always. This prevents everything that is a star tile from being passable.

class Game_Map
def check_passage(x, y, bit)
all_tiles(x, y).each do |tile_id|
flag = tileset.flags[tile_id]
if flag & 0x10 != 0 # [☆]: No effect on passage
next if flag & bit == 0 # [○] : Passable but star
return false if flag & bit == bit # [×] : Impassable
else
return true if flag & bit == 0 # [○] : Passable
return false if flag & bit == bit # [×] : Impassable
end
end
return false # Impassable
end
end

Frozen Graphic Transfer Bug

Why is this happening?

  • The bug is mostly with frozen graphics from the previous map. Parallel process from the previous map have the particularity they start before everything else. Now this is normal and all, but if you use a Transfer with no Fade In, it also freezes every PP in the next map and the only one would load is an Autorun. The PPs will only run once the map is refreshed.

Why should I be concerned? 

  • Let’s say for example you have a picture from the previous map and you used a Transfer event to none because you want that picture to stay until the next map clears it off. The problem is, if the next map’s event that clears the picture is a Parallel Process, it won’t run at all.

How to fix?

  • Here’s a snippet by Kread-Ex to fix this bug! This snippet adds in a fake fadein or known as 1 frame of refreshing if you prefer.
class Scene_Map < Scene_Base
#--------------------------------------------------------------------------
def post_transfer
case $game_temp.fade_type
when 0
Graphics.wait(fadein_speed / 2)
fadein(fadein_speed)
when 1
Graphics.wait(fadein_speed / 2)
white_fadein(fadein_speed)
when 2
fadein(1)
end
@map_name_window.open
end
end

EVENT OUT OF SYNCH WHEN OFF SCREEN

Why is this happening?

  • Basically, when an event that uses custom move route is off screen, VXAce stops updating that event as one of the ways to prevent lag.

Why should I be concerned?

  • This video will show you. Pay close attention to the waterfalls until the end:

 

How to fix?

  • Kread is awesome to provide us with a very simple fix :>
# Put [update] in the event's name and the move route will always update.
#
# ~Kread

class Game_Event < Game_Character
#--------------------------------------------------------------------------
# * Determine if Near Visible Area of Screen
#--------------------------------------------------------------------------
alias_method(:krx_alfix_ge_nts?, :near_the_screen?)
def near_the_screen?(dx = 12, dy = 8)
# YEA compatibility
if $imported && $imported["YEA-CoreEngine"]
dx = dy = nil
end # YEA compatibility
return true if @event.name.include?('[update]')
return krx_alfix_ge_nts?(dx, dy)
end
end

7 thoughts on “RMVXAce Workarounds

    1. You know the Tile D and Es? if you have a spare (Aka unused) empty (no graphic or tile in it) upper (Tile D or E), set the passability to X and just put it over it so it’ll be unpassable.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.