CHERRY'S PROFILE

Search

Filter

[2k3] Character Passive Abilities

I don't know if the RPG Maker's combo feature trigger the actual internal "battle action" to be executed multiple times or just deals multiple damage... But if the first is true and if this is 2k3, one could write a DynRPG plugin which checks for the character HP in onDoBattlerAction (if the action is BA_ATTACK) and if it's 25%, does the random check and if it succeeds (10%), it changes the action to AK_SKILL and sets it to a "Bonecrasher" skill which does nothing (just to show a nice animation) and in onBattlerActionDone the plugin would do the damage to the target manually.

Sample code (untested):

bool onDoBattlerAction(RPG::Battler *battler) {
if(
!battler->isMonster() &&
battler->id == 7 && // 7 is the ID of the hero with the ability
battler->action->kind == RPG::AK_BASIC &&
battler->action->basicActionKind = RPG::BA_ATTACK &&
battler->hp < battler->getMaxHp() / 4 && // <25% HP?
rand() % 10 == 0 // Only in 10% of cases
) {
battler->action->kind = RPG::AK_SKILL;
battler->action->skillId = 123; // 123 is the ID of the "Bonecrusher" skill which does no damage
}
}

bool onBattlerActionDone(RPG::Battler *battler, bool success) {
if(
success &&
!battler->isMonster() &&
battler->action->kind == RPG::AK_SKILL &&
battler->action->skillId == 123 // Again, the skill ID
) {
RPG::Monster *target = RPG::monsters[battler->action->targetId];
target->hp -= battler->getMaxHp(); // Deal damage
target->damagePopup(battler->getMaxHp(), 0); // Show damage popup
}
}

+++ DynRPG - The RM2k3 Plugin SDK +++

I think you are right with your last suggestion, but I didn't test it.

When a monster reaches 100% ATB, it immediately executes an action unless a battle animation is shown or you are in a menu.

+++ DynRPG - The RM2k3 Plugin SDK +++

Yes, you can get the skill, its target, etc. with DynRPG.
About the cancellation problem: I think it would be possible to fix it by controlling the ATB bar values from a DynRPG plugin, so that the plugin prevents monsters from reaching 100% ATB while an action is still in progress...

+++ DynRPG - The RM2k3 Plugin SDK +++

author=Large
The database file that stores actors, skills, items, etc...

I want to have a translation of the game, right? I could present a choice to the player at the beginning, something like "Select language: Choice 1 / Choice 2", and based on a switch, present the corresponding text. HOWEVER, that still leaves the battle system strings untranslated. Monster names... item names... see?

So my idea is, that upon the selection, the plugin uses Database 1 for Language 1, and Database 2 for Language 2. And that in turn is saved, so when the user opens the game again, that selection is loaded up.

Makes sense?


Yes, this would be possible. You could simply have two files english.ldb and german.ldb and have the plugin copy the right file to RPG_RT.ldb in onStartup. You could display a language selector the first time and store the setting in a file. If the user wants to change the language later, you could put an ingame option which calls a plugin function which deletes the "selected language setting" file and restarts the game so that the language selector is shown again.

+++ DynRPG - The RM2k3 Plugin SDK +++

I don't know what you mean exactly? How should this work?

@Updating DynRPG: I know. But please mind I have a business running here and actually more work than time. I want to update DynRPG too, since I have many great ideas for it.

+++ DynRPG - The RM2k3 Plugin SDK +++

I thought it might be interesting for others too (there was a PM conversation between me and Large):

getMaxHp problem: For me it worked fine. Maybe it's another compiler issue, it looks like the Compiler I got with CodeBlocks here is way outdated (I used the same CodeBlocks as I used when I created DynRPG), it's version 3.4.5. You could try installing GCC 3.4.5 too: http://ftp.gnu.org/gnu/gcc/gcc-3.4.5/gcc-3.4.5.tar.gz

Conditions problem: I found the issue. You remove the last condition, but the animationId is still 9 (which means "condition"). The RPG Maker then tries to get the first active condition ID and gets 0 and in turn tries to draw the animation for condition #0 which causes the error.

Solution:

if(battler->animationId == 9) battler->animationId = 0;

0 stands for the idle animation.


I forgot to mention that before setting animationId to 0 you would need to loop through the whole conditions array and check if any other conditions are active. Only if all values are zero, change the animationId. Otherwise the hero would be displayed with the idle animation even though there might still some other condition than Healing Breeze be active.

+++ DynRPG - The RM2k3 Plugin SDK +++

Can you send me your DLL over (or even your test project), so I can quickly debug the issue?

I checked the RPG Maker's code behind getMaxHp and nowhere is ever offset 0x60 of something accessed, so I am puzzled where the error could happen.

@PepsiOtaku: The id shouldn't matter, actually you should never change the "id" member of anything because the RPG Maker might go insane afterwards.

+++ DynRPG - The RM2k3 Plugin SDK +++

I guess your battler pointer is NULL.

Experience past max level

If it's really important, we could also do a little patching over there.
EDIT: XP? Okay, forget it. You don't need any patches, Ruby will do fine.

+++ DynRPG - The RM2k3 Plugin SDK +++

I still don't understand what you mean. Why "their" games?

DynRPG consists of the patch (i.e. the patched RPG_RT.exe), the loader (dynloader.dll) and the plugins. The patch, together with the loader, is communicating with the plugins and integrating them into the RPG Maker system.

You (and everybody else) need all three "parts" (patch, loader and the plugins themselves) to use DynRPG plugins. Without the patched RPG_RT.exe, DynRPG won't work anymore, of course.