Hello world!
When creating the new
NPC Scheduler -plugin a lot of other OcRam -plugins had to be developed with it. This has been the most time consuming RPG Maker project for me and most certainly has been worth of that time (IMO)! Additionally OcRam_Parallels -plugin has evolved to
OcRam_Events which gives you also possibility to copy/spawn and AUTOMATIZE some of your eventing!
And on top of all that - I had possiblity to test OcRam -plugins on slower computer ...and got squeezed up to ~12 MORE FPS (from ~38 to ~50 - that's ~31% smoother experience!) with ALL OcRam -plugins enabled. It was a big map with a lot of stuff (> 1000 light sources, shifting rgb, pulse, flicker, terrains etc...) / passages / dynamic sounds / events and weather effects! After disabling OcRam_Lights FPS was ~58 (no noticeable changes to that if any other OcRam -plugin was disabled). Smaller maps were steady 60 FPS after optimization (before optimization sometimes got 60).
Important notes for UPDATING plugins!
If you are about to UPDATE plugins - remember to always
BACKUP your project! Plugin parameters can be re-validated (if needed) by opening the parameter and clicking "OK" -button.

This may not seem important, but all new parameters will be NULL (and MAY cause unwanted behaviour) if this is not done. This also forces RPG Maker to validate parameter input to expected format.
Another option is to RE-INSTALL whole plugin, if you don't want to "hunt" new/changed parameters (WARNING: All values will be set to default!).
If ANY OcRam -plugin is updated - Update ALL OcRam -plugins that are in use (incompatibilities may occur with older versions)!
I'm sorry for any typos here! It's been a long week and this is a big update...
But I'll try to avoid HUGE "wall of text" - so without further blaablaas - release notes are behind spoilers dear sirs and madams!
Core v1.07
- Some fail safing when other OcRam -plugins are turned off
- OcRam.emptyMoveRoute(); // Returns empty moveroute
- OcRam.isUrlAvailable(url, suc_cb, err_cb)
- OcRam.getDirectionToCharacterFromXY(c, x, y)
- OcRam.isInScreen(x, y) // Check if given x/y is in screen (4 tile margin) returns always true if small map (no culling).
- Game_Actor.getCharacter() // Get character based on actor
- $gameMap.isTilePassable(x, y) // By ANY dir
- <no_ladders> to disable flying birds strafe on ladders + All vehicles now ignore ladders...
- NEW region passability feature (block/allow passages)!
- Culling is now done in core to avoid overlapped cull! Checks if map needs to be culled horz, vert or both
- Some flags to check if events has occured in past 200ms
- OcRam._justTransfered // Transfered to new area?
- OcRam._justTransferedAny // Transfered to any area?
- OcRam._justLoaded // is game just loaded
- A LOT OF NEW CHARACTER CORE FUNCTIONS:
- moveToXY(x, y) // Move towards given point
- showBalloon(6, true); // "Sweat" balloon with "wait"
- isXY(x, y); // Shortcut to check character pos
- rangeTo(character) // Range to given character
- eventsInRangeOf(radius) // Event array
- frontXY/behindXY/leftXY/rightXY() // [x,y] array
- lineOfSight(chr, dist, fos, xray) // true/false
- eventsInLineOfSight(dist, fos, xray) // Event array
- jumpRandomly/Towards/Away/To methods!
- getActor() // Gets actor object from this character! Example: $gamePlayer.getActor() returns actor object controlled by player. (Events will return undefined)
- flee(character) // Opposite to "Approach" move type...
- isNearCharacter(character) // Is near this character?
Events - NEW!
This plugin allows you to streamline your eventing by creating event bases! Only 1 place to make changes globally! Or need to spawn events (like loot chests, projectiles etc...)? Autofill speaker name and face with emotions? And much more!
Time_System v1.05
- Day phase variable is also updated while player is indoors!
- Fixed bug where night tint didn't occur w/o OcRam_Lights
- Night/dawn/day/dusk switch ids for easier eventing!
- Indoors tint parameters 4x (used with indoors auto tint) (Credits to @Moon_Haven )
- Execute custom JS on new day phase with OcRam.Time_System.onDayPhase()!
Code:const ALIAS_onDayPhase = OcRam.Time_System.onDayPhase;OcRam.Time_System.onDayPhase = function() {
// Your code here before
ALIAS_onDayPhase.call(this, arguments);
// Your code here after
};
Weather_System v1.02
- Optimized weather update function!
- Execute custom JS on new weather with OcRam.Weather_System.onNewWeather()!
Code:const ALIAS_onNewWeather = OcRam.Weather_System.onNewWeather;OcRam.Weather_System.onNewWeather = function() {
// Your code here before
ALIAS_onNewWeather.call(this, arguments);
// Your code here after
};
Movement v1.02
- Fixed event move type "Approach" to work properly if "direction fix" was "on".
- Fixed a rare "stack overflow" bug! (caused by recursive moveStraight()) + Optimization (CPU is now happier)
- New plugin parameter: Block non-passable goal (to block player click from non-passable areas)
Followers v1.02
- Game_Interpreter.applyTo now resets target character properly!
- If followers follow is disabled so is "Gather" command!
- Max battle members UBOUND lowered to 12 from 99
- Uses internal "actor autofill speaker data" feature ONLY if OcRam_Events -plugin is not found.
- Game_Party is now properly saved and loaded!
Audio v1.00 - No changes made
Lights v1.06
- WARNING: This patch may NOT be 100% backward compatible! (if JS has been used to edit light layer directly etc...)
- playerInLightRadius is now aware of passability and it's parameter 'region_id_array' replaced by 'xray' mode!
- Added new JS OcRam.Lights.forceDayPhase() to force dayphase autotint (Credits to @OpenTangent )
- Optimized light refreshing methods!
- Compositing done directly to light layer without removing/adding child + sprite on each frame!
- Optimized lights culling + events are now culled (specially BIG maps will run MUCH smoother!)
- Optimized terrain lights (light-ex params are stripped-off + has dedicated update method)!
- New feature: Terrain light update type: Shared, Individual (randomized)
- Now favors < 181 degree lights more than 181-359 degree lights (360 degrees is still default)
- Multiple colors now accepts more than 3 colors.
- NEW JS to ADD lights to EVENT: ev.addLight(...)
- Indoors tint parameters 4x (used with indoors auto tint) (Credits to @Moon_Haven )
Layers v1.01 - No changes made
Labels v1.02
- Won't show labels for transparent events.
Passages v1.08
- Fixed a bug where there was a slight chance for "_flags" to be null (_flags can be "empty" but NOT null)
- <higher> and <lower> notetags are now checked for EACH page individually and will override any floor level + auto-assign will ne performed IF tag not found!
- Balloons/Animations are now shown ABOVE cover tiles!
- "Higher level" sprites are now only created when needed and will be purged when changed to "lower level".
- Optimized isMapPassable/checkPassage (Credits to @clitvin )
- character.autoAssign() -method added (Credits to @clitvin )
- All known character "flickering" issues has been fixed.
- Optimized mapCulling method!
NPC_Scheduler - NEW
Ever wanted to create a town where townsfolk lives their life like going to market, pub and their job-/hangout places? But probably don't want to go out if there's storm or blizzard going on?
Also possible to do weather specific schedules -or- even RANDOM schedules!
OcRam demo -project V2 video here:
Happy RPG Making!