New account registration is temporarily disabled.

CORTI'S PROFILE

Search

Filter

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

Try the enum is part of the RPG-Namespace, so it is RPG::AR_NO_ACTION_ALLOWED ;-)

RPG::Condition::actionRestriction does not exist. RPG::conditions is a list.
RPG::conditions[index]->actionRestriction should work. The index is the database ID. RPG::conditions.count() gets the number of conditions.

Have fun.

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

First things first. That plugin is very simple and will probably not work well with event scripting in battle system. Just waiting some frames is not enough, so sooner or later you might run into problems.

How to solve your problem:
The turns are started on line 51 and 58. The RM2k3 lets "unable to act" monsters reach full atk and they will skip the turn. For players, it freezes atb because it cant deal with "unable to act" players reaching full atb, and thats what happens.

What you need to do now is:
* Check health > 0 for actor before setting the atb value to full+1 in line 51.
* Check conditions for actor before setting the atb value to full+1 in line 51.
* The actor has an array for conditions. The array contains the rounds its been up, so you need to check all conditions with rounds > 0.
* When you find a condition that is applied, you need to find out, if it has the "unable to act" flag.
* RPG::conditions contains all condtions in the database.
* The conditions have a property called "actionRestriction". So you need to check if that is set.
* RPG::ActionRestriction: Here are the values it can take.

Good luck.

PS: You need DynRPG 0.3 for it.

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

Your post is missing information. What is Cerberus's plugin and what does it do? Link it. And what do you want it to do?

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

I created a custom damage numbers plugin for someone. The hard part is not displaying numbers. It's tracking what happened and getting the numbers. I did that by reading from the displayed popup graphic. To do that I created a very simple pattern matching that is enough to read the numbers and detect the color.

Currently no public release planned, it's part of a bigger project.

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

author=Milennin
Would it be possible for someone here familiar with working with DynRPG code to make something that lets you store monster attack and defense values in variables?

My projects all have that functionality, so I only need to copy that in a plugin.
I won't have time next week, but after that, I may help you.

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

Of course attack influence doesn't progress correctly. It does not progress at all, its just a number, but you could make it do so, it's the DynRPG topic after all.

If you want a stronger power creep, change the base statistic curves. That's where your leveling progress and power creep happens.

author=Bulma
My first two fighters were dealing like 150 to 375 at about level 1. My level 99 was doing 550 damage,

Which endpoints does your atk curve use? I would guess L99 is roughly 3 times L1.

If you want big numbers at Level1 and even bigger numbers at level 99, chose a base statistic curve that reflects that. If your absolute numbers are too low, change the damage formular.

; // Changes damage formular
PlayerDmgRevamp=4B9847,D1E0,4B985F,909090
EnemyDmgRevamp=4C0B3E,D1E0,4C0B54,909090
SkillDmgRevamp=4C0DE4,#5,4C0DF8,#10,4C0E1A,#50,4C0E2F,#10

This changes the damage from (atk/2 - def/4) + (int/4 - int/8) to (atk/0.5 - def) + (int/0.5 - int). Thats factor 4. With that you can use a much lower Level1 startpoint and let the base statistics create the power creep for you.

This disables limits for atk- and int influence:
; // Disables limits in atk/int influence.
maxAtkInf(CureCondByDmg)=49D0ED,#80
maxAtkInfl+1(Usability)=4C08D8,#80

RM Ultimate UIMod Settings to allow that:
[FormEDSkill]

; AttackInfluence
Slider1.Max = 80
; IntellectInfluence
Slider2.Max=80
; Variance
Slider3.Max=10

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

Replace phys. attacks with skills. The onDobattlerAction callback allows to change the action, so switch the action type to SKILL and set skill ID to a skill that mimics the default attack. Then change the skills atk-influence.

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

I never released the sourcecode until now and all readme files are in german, thats why my plugins are't posted here yet.

I'm in the process of translating and some of it will be released with source soon.

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

Updated:

Hey, PepsiOtaku! Thanks for taking the time to explain that to me.

Hey, AubreyTheBard. Can your plugin deal with battler->getMaxHp() return 0 and battler->atbValue being negative? Both can happen in combination with plugins and patches.

I made a plugin that does the same. One of the first things my 'customers'* demanded was drawing all the hud-elements on top of all battlers, because huge monster sprites have the habit of hiding other monsters hud-elements. This was the first but not the last time i encountered that problem. I also needed it for selection cursors and custom damage numbers and all that stuff one would draw over battler's heads.

This is my solution. I created my own overlay-layer with functions for actors and monsters that are called according to y-position on screen. Maybe you could use that.


namespace BattleOverlay
{
/* BATTLE OVERLAY README:
BattleOverlay is a little helper to draw on top of all battlers.
Sometimes drawing in the onBattlerDrawn-callback has the disadvantage that bigger monster sprites may hide UI elements drawn on top of other monsters.

To draw that kind of UI elements like lifebars and condition icons, we would want to draw them on top of all battlers,
but in an ordner that matches the y-coordinate of the battler-sprites.

This component does that by saving the IDs of drawn actors into an array and executing a custom callback cycle after all actors are drawn.
The array method was chosen in favor of manually checking the party and monsters-arrays and sorting them by y-coordinate.
The rpg maker actually did that for us as part of the original drawing order.

HOW TO USE:
- Function 'RememberBattlerDrawn' needs to be called in dyn-callback 'onBattlerDrawn'
- Function 'DrawOverlay' needs to be called in dyn-calback 'onDrawBattleActionWindow' with its 'selActive' parameter being false.
- Implement your own code in the OnOverlayDrawActor() and OnOverlayDrawMonster() functions.

Author: Corti, 2015
*/

// Called when the actor's overlay is drawn.
void OnOverlayDrawActor(RPG::Actor *actPtr)
{
// NYI: Do your stuff here.
}

// Called when the monsters's overlay is drawn.
void OnOverlayDrawMonster(RPG::Monster *monPtr)
{
// NYI: Do your stuff here.
}

// The number of battlers drawn this frame and the numbr of valid entrys in the id-array.
unsigned int battlersDrawn = 0;
// Contains the id of battler that were drawn according to onBattlerDrawn callbacks this frame.
int drawnBattlerIds[8+4] = { 0,0,0,0,0,0,0,0,0,0,0,0};

// Needs to be called directly on top of all actors and before the HUD and Menus are drawn.
// Called in onDrawBattleActionWindow's first call, in which the 'selActive' parameter is false.
void DrawOverlay()
{
for(int iBattler = 0; iBattler < battlersDrawn ; iBattler++) // Call OnOverlayDraw function according to battler type.
{
int thisId = drawnBattlerIds[iBattler];
// Heros are taken by database ID. Monsters were saved as ( -1 to -8 ) and are accessed as ( 0 to 7 ).
thisId > 0 ? OnOverlayDrawActor(RPG::actors[thisId]) : OnOverlayDrawMonster(RPG::monsters[(-thisId) -1]);
}

battlersDrawn = 0;
}

// When a battler is drawn, this function is called. The battlers ID is saved into an array.
// Called in onBattlerDrawn for both heros and monsters.
void RememberBattlerDrawn ( RPG::Battler *battler )
{
// For Heroes, this is the Database-ID ( 1-based ), for Monsters it's the 1-based monsterGroup-ID. Both are > 0.
int id = battler->id;
// Save the ID into the array with monster-IDs saved as negative values.
drawnBattlerIds[battlersDrawn] = battler->isMonster() ? -id : id;
battlersDrawn++;
}
}

*talking about my 'customers' feels so professional at work, but writing it on the internet makes me feel like a drug dealer/prostitute O_O.

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

EDIT: THIS POST IS NO LONGER TRUE. PLEASE IGNORE THE CONTENT.
Reason:
I found out that i had some uimod-settings for my rm ultimate, that changed the properties of the int-infl. slider. Because of that, the maker had shown me that the Int.Infl. as '0' while it was actually higher in game.

#################### IGNORE THIS ####################
@Bugmenot:
I have a very strange bug in the damage calculation.

author=I'm using this:
PlayerDmgRevamp=4B9847,D1E0,4B985F,909090
EnemyDmgRevamp=4C0B3E,D1E0,4C0B54,909090
SkillDmgRevamp=4C0DE4,#5,4C0DF8,#10,4C0E1A,#10,4C0E2F,#20
This should lead to ( Atk*2 - Def ) = Damage

A skill with 10 Atl.Influence should hit as hard as a melee hit, with a number matching the formular. ( row influence on melee patched away ).

Example value: Atk of hero and monster is 400, def is 1.

SkillDmgRevamp=4C0DE4,#5,4C0DF8,#10,4C0E1A,#10,4C0E2F,#20
Player Attack: ~800
Player Skill: ~790
Monster Skill: ~825


SkillDmgRevamp=4C0DE4,#5,4C0DF8,#10,4C0E1A,#5,4C0E2F,#5
Player Attack: ~800
Player Skill: ~744
Monster Skill: ~816


SkillDmgRevamp=4C0DE4,#5,4C0DF8,#10,4C0E1A,#50,4C0E2F,#50
Player Attack: ~790
Player Skill: ~800
Monster Skill: ~829


So, obviously, i can trade missing hero damage for increased enemy damage by changing int_formular numbers in skills with an intellect influence of 0.

The differences are not very dependent on the actal numbers. If i'm missing 10 player skill damage, its missing 10, like 790 instead of 800 and 40 instead of 50.
Also, my monster does deal 830 istead of 800 and 131 instead of 100.

And why the hell do heroes lose while monsters gain? O_O

None of my skills uses intellect, so i don't really need that part of the formular. Is it possible to create a formular with less rounding errors if you don't calculate the int part of the formular? I guess you only have a few bytes of space where the formular is, so dropping int completely frees some space, doesn't it?


Btw. i dont trust that QuickPatcher anymore. How do i translate QuickPatches into this stuff?
*reinterpret_cast<unsigned short *>(0x4BBDF2) = 0xE990;
#################### IGNORE THIS ####################