- Joined
- Nov 9, 2015
- Messages
- 45
- Reaction score
- 1
- First Language
- German
Hello fellow RPG-Makers,
first of all here is a disclaimer: I recently read an article about Yanfly stating that she discontined working on the ATB, so if the bug has something to do with that, noone can help it. But I do not have the feeling that the bug Ipotentially have found is related to that fact.
You can reproduce with a blank project and a bit of setup. What I have found is that when you use ATB and the BattleAiCore, the first onStartTurn events of enemies are not called after an actor has chosen its action to execute (the actual execution does not matter heree). After those one skipped onStartTurn events after an actor has made a choice of actionr, the other onStartTurn events are called in the expected behaviour.
I found it when trying to make the enemy use a skill with a cooldown. The first time, the enemy used the skill normally but then took way too many turns to be ready again. After that I tried calling a simple <Custom Turn Start Effect> with a single console.log inside a state that the enemy was affected by (utilizing Yanflys BuffsStatesCore). This message is not logged. I then made some console.log's inside yanflys scripts and nothing was printed either. In particular, I tried to get a log of the point, in which a battler can decide its action inside the updateATBPhase() method of Yanflys BattleSystemAtb script, but as expected, the log does not show up after the enemy is hit whereas it does show up if it was not previously hit.
I have no clue where is coming from. I have looked through the code of both ATB and AI plugins but found nothing which has to do with being targeted or an actor deciding for an action.
-------------------------------------------------------------------------------------------------------------
I have the minimum specs project already set up, but I don't know if I can or should just upload it here, so let me know if you want me to post it here. Otherwise I will give instructions on how to recreate it:
(1) Create empty project, load in the following plugins (in that order, from top to bottom):
1.1 Yanflys YEP_CoreEngine
1.2 Yanflys YEP_BattleEngineCore
1.3 Yanflys YEP_X_BattleSysATB
1.4 YEP_X_VisualATBGauge (optional, but helpful if you want to track down when the actual onTurnStart should be called)
1.5 YEP_BattleAiCore
1.6 YEP_BattleStatesCore (optionally, so you can add two console.log inside <Custom Turn Start/End Effect> to track down when the OnStartTurn events are called and when not)
(2). In the YEP_BattleEngineCore plugins parameters, chose ATB as default battle system.
(2.1) (optional, easier to debug) In YEP_X_BattleSysATB disable rubberbanding and set Full Gauge and Charge Gauge constaant to something like 2000 and 1000.
(3) Setup an enemy:
(3.1) Create state which implements said <Custom Turn Start/End Effect> console.log("Turn Start/End"); </Custom Turn Start/End Effect> to track down what is going on.
(3.2) Make skill which adds the state from (3) on owner and make enemy learn only that skill (no need to use BattleAiCores special way of making a priority skill list).
(3.3) Set agi to something like 50.
(4) Setup actor: Set agi to about half of enemies agi: 24 (NOTE: I have only tested stuff with a single actor vs a single enemy!)
(5) Playtest and see results.
-------------------------------------------------------------------------------------------------------------
Expected behaviour: The console.log("Turn Start"); should always log to the console as soon as the enemy decides fo an action.
Actual behaviour: The log is not called when the actor has made a decision prior.
If anyone wants take the time and take a look into it, that would be awesome. Otherwise I would have to make some heavy compromises like dropping the AI core
Also if anyone has a comment about the way I have structured the bug report, let me know. I have never written a bug report of something such specific. I know it is a wall of text, but I personally like more information more than less information, so here we go ...
first of all here is a disclaimer: I recently read an article about Yanfly stating that she discontined working on the ATB, so if the bug has something to do with that, noone can help it. But I do not have the feeling that the bug Ipotentially have found is related to that fact.
You can reproduce with a blank project and a bit of setup. What I have found is that when you use ATB and the BattleAiCore, the first onStartTurn events of enemies are not called after an actor has chosen its action to execute (the actual execution does not matter heree). After those one skipped onStartTurn events after an actor has made a choice of actionr, the other onStartTurn events are called in the expected behaviour.
I found it when trying to make the enemy use a skill with a cooldown. The first time, the enemy used the skill normally but then took way too many turns to be ready again. After that I tried calling a simple <Custom Turn Start Effect> with a single console.log inside a state that the enemy was affected by (utilizing Yanflys BuffsStatesCore). This message is not logged. I then made some console.log's inside yanflys scripts and nothing was printed either. In particular, I tried to get a log of the point, in which a battler can decide its action inside the updateATBPhase() method of Yanflys BattleSystemAtb script, but as expected, the log does not show up after the enemy is hit whereas it does show up if it was not previously hit.
I have no clue where is coming from. I have looked through the code of both ATB and AI plugins but found nothing which has to do with being targeted or an actor deciding for an action.
-------------------------------------------------------------------------------------------------------------
I have the minimum specs project already set up, but I don't know if I can or should just upload it here, so let me know if you want me to post it here. Otherwise I will give instructions on how to recreate it:
(1) Create empty project, load in the following plugins (in that order, from top to bottom):
1.1 Yanflys YEP_CoreEngine
1.2 Yanflys YEP_BattleEngineCore
1.3 Yanflys YEP_X_BattleSysATB
1.4 YEP_X_VisualATBGauge (optional, but helpful if you want to track down when the actual onTurnStart should be called)
1.5 YEP_BattleAiCore
1.6 YEP_BattleStatesCore (optionally, so you can add two console.log inside <Custom Turn Start/End Effect> to track down when the OnStartTurn events are called and when not)
(2). In the YEP_BattleEngineCore plugins parameters, chose ATB as default battle system.
(2.1) (optional, easier to debug) In YEP_X_BattleSysATB disable rubberbanding and set Full Gauge and Charge Gauge constaant to something like 2000 and 1000.
(3) Setup an enemy:
(3.1) Create state which implements said <Custom Turn Start/End Effect> console.log("Turn Start/End"); </Custom Turn Start/End Effect> to track down what is going on.
(3.2) Make skill which adds the state from (3) on owner and make enemy learn only that skill (no need to use BattleAiCores special way of making a priority skill list).
(3.3) Set agi to something like 50.
(4) Setup actor: Set agi to about half of enemies agi: 24 (NOTE: I have only tested stuff with a single actor vs a single enemy!)
(5) Playtest and see results.
-------------------------------------------------------------------------------------------------------------
Expected behaviour: The console.log("Turn Start"); should always log to the console as soon as the enemy decides fo an action.
Actual behaviour: The log is not called when the actor has made a decision prior.
If anyone wants take the time and take a look into it, that would be awesome. Otherwise I would have to make some heavy compromises like dropping the AI core
Also if anyone has a comment about the way I have structured the bug report, let me know. I have never written a bug report of something such specific. I know it is a wall of text, but I personally like more information more than less information, so here we go ...
