EasyRPG / Player

RPG Maker 2000/2003 and EasyRPG games interpreter
https://easyrpg.org/player/
GNU General Public License v3.0
1.01k stars 193 forks source link

Collection of RPG_RT bugs for compatibility #1486

Open fmatthew5876 opened 6 years ago

fmatthew5876 commented 6 years ago

There are various RPG_RT bugs out there which may be depended on by different games. I've created this issue to catalog them. At some point we may want to enable a compatibility mode switch for some of these bugs if we find games need them.

Please list your known RPG_RT bugs here:

CherryDT commented 6 years ago

I have a huge list.

Maybe I should do what I wanted to do a while ago while discussing how to approach any possible future fixes: Open a GitHub repo for RM2k(3) but for issues only, similar to https://github.com/Microsoft/wsl

Thing is just that it's a huge amount of work.

Ghabry commented 6 years ago

Flash saturation and Flash period (?) are not saved in the savegame. https://github.com/EasyRPG/Player/blob/1d5aedccce4b2fbf0328bbb264b4631108cb9597/src/game_screen.h#L101

In ShowPicture (2k only): When ShowPicture has no effect, then effects of MovePicture are ignored: https://github.com/EasyRPG/Player/blob/1d5aedccce4b2fbf0328bbb264b4631108cb9597/src/game_picture.cpp#L181

The "Moving into an event triggers it's interpreter (for the "move away feature")" results in "Waits" to finish faster (twice as fast when one event/player runs into it, three times when 2 and so on): https://github.com/EasyRPG/Player/blob/7d43de409e9696273989b4e199e5bb91c6d3c3c0/src/game_event.cpp#L733

Some japanese games use "-1" (which is the ID of the party when not in a Vehicle) as the target vehicle for "SetVehicle" which allows moving the party around (even across maps!) without triggering a transition. We don't fully emulate this (a normal teleport is executed): https://github.com/EasyRPG/Player/blob/4c589a4b2bda92c777d0bf8847928cc104e7bb36/src/game_interpreter.cpp#L1662

We emulate all these bugs because this really breaks games when you don't do it!

Ghabry commented 6 years ago

iirc the "Target select" window in the game menu (where you select a party member to use a item/skill on in the menu) ignores the "Half SP cost" attribute and shows the full SP cost but when executing the value is correct (halved).

CherryDT commented 6 years ago

Flash saturation and Flash period (?) are not saved in the savegame. Player/src/game_screen.h

Are you sure? It should be saved as SaveScreen.flash_current_level and SaveScreen.flash_time_left

Ghabry commented 6 years ago

Are you sure

No Im not, just did a code search.

This bug here: #1391 Negative E values which allows "enemy attacks can heal" is broken across all RPG Maker versions. (the expected behaviour is mentioned in the help file :))

fmatthew5876 commented 6 years ago

Flash saturation and Flash period (?) are not saved in the savegame. Player/src/game_screen.h

Are you sure? It should be saved as SaveScreen.flash_current_level and SaveScreen.flash_time_left

The easyrpg variables he refers to are for continuous flashing. You need copies of these 2 fields to tell the flasher how to repeat the flash. #1501

fmatthew5876 commented 6 years ago

Rm2k3 doesn't let you put all party members in the back using the Row command. At least 1 member must be in the front.

However, if you put some party members in the back row and then remove the front row members, you'll end up with a party with everyone in the back.

Ghabry commented 6 years ago

jrenlbf

via https://rpgmaker.net/forums/topics/17752/?post=634525#post634525

fmatthew5876 commented 5 years ago

All items that trigger skills use the source of the skill to the highest level member of the party (first one if same level).

That means that items that trigger skills that have usage == self will always be used on the highest level character in the party.

fmatthew5876 commented 5 years ago

Not sure if this is really a bug:

If an actor has an "Attack All" weapon and gets confused or provoked, he will only attack one ally or enemy.

fmatthew5876 commented 5 years ago

Create a skill with:

Use it on a dead actor in battle in 2k3,

The actor will revive with 1hp, but the displayed green number will say -1 :exclamation:

fmatthew5876 commented 4 years ago

Set a move route on the player which changes the player graphic. Then save and load the game.

Upon loading the hero graphic is reset.

Tayruu commented 4 years ago

Here's a bug I observed a while back around panning and player movement.

tldr: Panning the map away from the player, then moving the player into that new camera frame, causes the camera to become offset until the player returns to the tile they were originally on.

Though frankly I doubt there's any game that makes use of this behaviour to necessitate replicating it.

fmatthew5876 commented 4 years ago

There's a big move route save game bug in RPG_RT.

Create an event with some movement type. Then put a move route on it and make it move. Before the move route finishes, save your game.

Now load the game. After the event finishing moving, it's movement frequency will be set to 0.

This happens because the originalMoveFrequency variable in RPG_RT is not saved. This value is set when a move route starts and used to restore the movement frequency when the move route ends. When you load game it gets initialized to 0 and then restored to the movement frequency when move route finishes.

This affects the hero, vehicles, and events.

We fix this bug in Player

fmatthew5876 commented 4 years ago

RPG Maker editor only lets you do a maximum of 10 terrain damage per step. Given that hp can go into the thousands in 2k3, this makes terrain damage all but useless as a game mechanic.

fmatthew5876 commented 4 years ago

Item and Skill Usability bugs

fmatthew5876 commented 4 years ago

Enemy AI Hidden Enemy Revive Bug

Enemy AI will try to use revive skills on both dead and hidden enemies. This is because RPG_RT check for Exists instead of only checking for death.

This bug exists in 2k and 2k3.

fmatthew5876 commented 4 years ago

2k Battle: Death + other states bug

Create a skill which inflicts death and poison. Set poison's rating to 100 so it's not removed with death. Now use this skill on an enemy.

The enemy with "die" twice. The bug is that the RPG_RT code repeats the "death" message and animation for all states inflicted by the skill instead of displaying the other state messages.

fmatthew5876 commented 4 years ago

2k3 Monster Blink + Death Bug

In 2k battle monsters do the blinking animation when they take damage, and then later fade out when they die.

In 2k3 because there are no messages or delays, when an enemy is killed it blinks and fades at the same time.

fmatthew5876 commented 4 years ago

Revive Skill effects bug

Create a skill which raises hp, sp, atk, def, spi, agi and revives with 50% hit rate.

This skill will raise the parameters of dead characters, even if the revive part fails.

This happens in 2k and 2k3, but is most obvious in 2k as you see the messages on the console.

fmatthew5876 commented 4 years ago

Item Sp recovery on dead allies bug

Medicine items which recover sp work on dead allies.

CherryDT commented 4 years ago

Item Sp recovery on dead allies bug

Medicine items which recover sp work on dead allies.

Not sure if that's a bug though... Death doesn't otherwise affect SP, so it would make sense for example to top up a dead allie's SP with an item and then revive them with a skill (if my character with the reviving skill isn't ready first)

Ghabry commented 4 years ago

Is just not intuitive. I can't remember any other game I played where you can buff stats of dead actors.

So maybe it is a feature but it didn't age well 🤔

fmatthew5876 commented 4 years ago

Skill Usability States Bug

In Battle2k if you have a battler use a skill, and then something happens (example mp drain) which causes that skill to no longer be usable, the battler will do nothing that round.

This makes sense, but the way it's done skips checking for confuse, provoke, and processing states in general. The battler won't for example auto heal, or take poison damage, etc..

fmatthew5876 commented 4 years ago

2k3 Battle Actor Event triggering action bugs

Whenever a battler does an action, the battle interpreter runs events (1) before action, (2) immediately after a switch is activated by an item or skill and (3) and after the action, allowing different page conditions in each case.

Due to a bug in the way they separated actor algo processing from enemies to implement CBA, step (3) does not occur when an actor uses an item, defends, escapes, or does the row command

Details in #2405

fmatthew5876 commented 4 years ago

2k3 Battle Event Turns sequencing bug (Active ATB)

Create battle which event happens on turn 1 and another event that happens on turn 2 and has 1 enemy.

Right before the first battler acts, the turn will increment to 1, and the event will fire. Then the second battler, and the turn 2 event fires.

Now set atb to active, start the battle and enter the item or skill window. Stay in the window until the enemy atb fills up and they are ready to act, then perform the skill or item action.

What should happen: Event pages reset, Turn 1 event fires, enemy acts, Event pages reset, Turn 2 event fires, actor acts

What does happen: Event pages reset, Turn 2 event fires, enemy acts, actor acts

The reason is because the battle system incorrectly processes "next turn / reset pages" when a battler has a battle action scheduled and not when it runs. So anytime you can trigger multiple actions to queue up like this, events will run only once before all the actions and reflect the last turn numbers from all the queued actions.

fmatthew5876 commented 4 years ago

2k3 Battle Normal + First Strike vs Initiative / Surround differences

In all of these battle conditions, the actors start with full ATB and enemies with empty ATB.

The first strike flag has an additional behavior in that the enemies will never do anything until at least one actor performs an action. For Initiative/Surround the enemies will attack you if you wait for their ATB to fill up.

The reason this works is because RPG_RT will still count up enemy ATB in first strike, but as soon as they act it will cancel their action. The first strike flag is cleared whenever an actor acts, so that allows enemies to act.

The RPG Maker editor forbids you from changing the first strike flag when the condition is not "Normal", however you can change the battle to normal, set the first strike flag, and then change it to initiative or surround to get the first strike behavior for those.

RPG_RT does clear the first strike flag for back and pincer attacks.

fmatthew5876 commented 4 years ago

2k3 Battle enemy target branch command

The command has many bugs rendering it almost unusable. Details here: https://github.com/EasyRPG/Player/issues/2405#issuecomment-716298981

fmatthew5876 commented 4 years ago

2k3 Battle Switch skill combo bug

Create a battle with 4 events, all activated by switch one, which print the page number and turn off the switch.

Crate one more event on turn 0 which enables a 3x combo for the hero for skill.

Finally, use a skill which activates switch 1.

What you would expect to see is "1", "2", "3". That is each time the skill is repeated the battle interpreter gets called again right after.

Instead due to some weird timing issues, you only get "1", "2"

fmatthew5876 commented 4 years ago

2k3 negative attribute absorb numbers bug

Use a skill with a negative attribute that also aborbs on an enemy.

Instead of showing a green healing number, RPG_RT will show a negative number in white, looking like negative damage.

fmatthew5876 commented 4 years ago

2k3 negative absorb

When an absorb skill effect is inverted by negative attributes, HP effect will heal the enemy but not affect the source. SP effect however will invert absorb, healing the enemy and hurting the source.

Ghabry commented 3 years ago

Invisible Gauge (Visual problem)

This affects battle 2k3 types with semi-transparent windows:

The gauge is drawn transparent but above the selection box. This means that the color of the gauge would be wrong because of the selection box as the draw order is "Background, Selection Box, Gauge, Text".

Instead of thinking about a solution they simply did not draw the gauge

1-fs8

CherryDT commented 3 years ago

I don't understand the issue, can you show a screenshot?

Ghabry commented 3 years ago

@CherryDT Aded a picture as you can see for transparent there is no gauge shown for the highlighted entry.

CherryDT commented 3 years ago

Thank you

Ghabry commented 3 years ago

Garbage data in BattleTest equipment

Looks like the editor uses a 32 bit value for it but only initialized the lower 16 bit.

When I alter the battletest equipment the values saved are sometimes really high. The solution seems to be to strip of the upper 16 bit with "0xFFFF".

Needs a check what RPG_RT does. Maybe reads it directly in a 16 bit value which results in a truncation?

Ghabry commented 3 years ago

No repositioning for CBA multi-attacks

When doing a CBA attack with a multiplier (x2 or x3) and a "Move Towards Enemy" the hero will only move to the first enemy. When this enemy dies the hero will hit the other enemies but does not move to them. Looks like lazy programming.

Ghabry commented 3 years ago

CBA ranged attack with multiplier continues even when everything is dead

Preparation:

  1. Set the CBA multiplier to x2 or x3
  2. Set the CBA to Ranged
  3. Enable in the Item effects (Item database tab) the checkbox "Attack all enemies"

Execution:

  1. Start a battle test
  2. Attack the enemies with your CBA weapon. It should be a one-hit kill.
  3. After the 1st attack everything dies, but a 2nd attack is fully shown and a 3rd is interrupted by the victory animation :facepalm:
Ghabry commented 3 years ago

Menu cursor does not flash in battle

When the command window containing Attack, Skill, Defend etc. is focussed the cursor does not animate.

Well, do not think supporting this is worth it ^^'

Ghabry commented 2 years ago

Wrong cursor position when using Subset Skills

(Found by Dyluck):

Basically in RM2K3 after using a skill in battle, sometimes the cursor starts at a different skill on the next turn, instead of the last skill used. The reason is that the cursor will move down by a number determined by ALL skills the hero has, instead of what skills are in the current skill command window. So for example if your database has these skills:

...and your hero has all 6 skills and both the Magic and Priest command. Then if you use Heal 2 in battle for example, the cursor will see this at the 5th entry of all your skills, and so it will move down 5 spots in every skill window. So in the Magic window, the cursor ends up pointing at Fire 3. In the Priest window, the cursor ends up on Heal 3.

Ghabry commented 1 year ago

Escape/Teleport skill incorrect teleport behaviour

When these skills are used to change the map the behaviour appears to be similiar to the "Vehicle Teleport":

Discovered by @Mimigris

Mimigris commented 1 year ago

Transparency overflow on a picture

Using a transparency value over 100 for pictures will result in the display of various colours serving as an overlay depending on the value instead of being transparent.

See this video.

Used in some games, e.g. Helen's Mysterious Castle when beating a boss, or in Muma|Rope in the Proj map.