Display State Turns On Icon

DreamX

Veteran
Veteran
Joined
May 30, 2015
Messages
816
Reaction score
818
First Language
English
Primarily Uses
Display State Turns On Icon v1.04
By lolaccount


Patch Notes

v1.04 - Added font size and text position parameters.

v1.03 - Added check if state has an icon, added compatibility for Yanfly's ATB, added decimal place parameter for non-integer turn counts, like in Yanfly's ATB. Fixed crashing when using tofixed out of battle

v1.02 - Fixed slicing issue that caused more numbers than should be shown

v1.01 - Added buff and debuffs turns, fixed displaying 1 or 0 for states that don't have turns, moved text up a bit

Introduction
This is my first plugin release. I'm a beginner.

Features
Shows the number of turns remaining for a state/buff/debuff on its icon.

Screenshots


How to Use
Create a .js file (you can do so with a text editor by saving the file with .js at the end) and paste the script into it, then put it in the js\plugins folder for your project. The filename should be something descriptive to what it is. Turn the plugin on and you are good to go.

Script

//=============================================================================// Display State Turns On Icon// by lolaccount// Last Updated: 2015.11.26//=============================================================================/*: * @plugindesc v1.04 Number of turns remaining for states/debuffs/buffs is * displayed on the icon. * <lolaccount DisplayStateTurnsOnIcon> * @author lolaccount * * @param Font Size * @desc Default: 16 * @default 16 * * @param Position * @desc Options: bottomleft, center, rightcenter, bottomcenter, etc  Default: topright * @default topright * * @param ---Compatibility--- * @default * * @param Decimal Places * @desc # of decimal places for non-integer turn counts * Default: 0     * @default 0 * * @help This plugin does not provide plugin commands. * ============================================================================ * Patch Notes * ============================================================================ * v1.04 - Added Font Size Parameter, Added Position Parameter * v1.03 - Added check if state has an icon, added compatibility for Yanfly's ATB * added decimal place parameter for non-integer turn counts, like in Yanfly's * ATB. Fixed crashing when using tofixed out of battle * v1.02 - Fixed slicing issue that caused more numbers than should be shown * v1.01 - Added buff and debuffs turns, fixed displaying 1 or 0 for states * that don't have turns, moved text up a bit * ============================================================================ * How To Use * ============================================================================ * Plug and play. * ============================================================================ * Terms Of Use * ============================================================================ * Free to use and modify for commercial and noncommercial games, with or * without credit, as long as you do not claim the script as your own. * Credit is appreciated though. */(function () {    var parameters = $plugins.filter(function (p) {        return p.description.contains('<lolaccount DisplayStateTurnsOnIcon>');    })[0].parameters; //Thanks to Iavra// decimal places to show for turn count    var decimalPlaces = parseInt(parameters['Decimal Places'] || 0);// size of turn text font    var turnFontSize = parseInt(parameters['Font Size'] || 16);// position of turn text    var turnTextPosition = String(parameters['Position'] || 'topright');    // alias function    var _Window_Base_drawActorIcons = Window_Base.prototype.drawActorIcons;    Window_Base.prototype.drawActorIcons = function (actor, x, y, width) {        // the default we are making an alias for        _Window_Base_drawActorIcons.call(this, actor, x, y, width);        // array of turn integers corresponding to each state/debuff/buff        var turns = [];        // initialize loop variable        var i = 0;        // for each state actor has        actor.states().forEach(function (state) {            // check if autoremoval is not 0. If it is not 0 then it is removed            // automatically after a certain number of turns.            if (state.autoRemovalTiming != 0 && state.iconIndex > 0) {                turns.push(actor._stateTurns[actor._states]);            }            else {                // if autoremoval is 0, then it's a state that is not removed by                // turns, like defeat. add 0 to the array so that it is skipped                // when we are displaying the text.                turns.push(0);            }            // increment the loop variable            i++;        }, this);        // for each possible parameter that can have a        // buff or debuff        for (var j = 0; j < actor._buffs.length; j++) {            // check if the parameter has a buff/debuff            if (actor._buffs[j] !== 0) {                // if so add the number of turns the buff/debuff                // has to the turn array                turns.push(actor._buffTurns[j]);            }        }        turns = turns.slice(0, Math.floor(width / Window_Base._iconWidth));        // set font size to parameter        this.contents.fontSize = turnFontSize;        // for each state/debuff/buff, draw text for their turns remaining        for (var i = 0; i < actor.allIcons().length; i++) {            // This is a check for whether the turns remaining is 0 or not            // if we don't check we'll get a 0 displayed for states like death            // turns checks if turn is defined, if not we'll get an error with toFixed            if (turns && turns != 0) {                // draw the text for their turns remaining                this.drawText(turns.toFixed(decimalPlaces), this.turnsRemainingPosX(i,x), this.turnsRemainingPosY(y), Window_Base._iconWidth, 'center');            }        }        // reset font size so other stuff isn't resized as well        this.resetFontSettings();    };    Window_Base.prototype.turnsRemainingPosX = function (i, x) {        var returnValue = x + (Window_Base._iconWidth * i);        switch (turnTextPosition) {            case "topleft":            case "bottomleft":            case "leftcenter":                returnValue -= (Window_Base._iconWidth / 6);                break;            case "topright":            case "bottomright":            case "rightcenter":                returnValue += (Window_Base._iconWidth / 6);                break;        }        return returnValue;    };    Window_Base.prototype.turnsRemainingPosY = function (y) {        var returnValue = y;        switch (turnTextPosition) {            case "topleft":            case "topright":            case "topcenter":                returnValue -= (Window_Base._iconWidth / 6);                break;            case "bottomleft":            case "bottomright":            case "bottomcenter":                returnValue += (Window_Base._iconWidth / 6);                break;        }        return returnValue;    };})();
Credit and Thanks
- lolaccount

Author's Notes
Free to use and modify for commercial and noncommercial games, with or without credit, as long as you do not claim the script as your own. Credit is appreciated though.

iconturns.jpg
 
Last edited by a moderator:

Fernyfer775

Veteran
Veteran
Joined
Oct 6, 2013
Messages
1,309
Reaction score
809
First Language
English
Ohhhh, this will be useful for my players to know when to refresh buffs and stuff, thank you for this!
 

Luth

Veteran
Veteran
Joined
Apr 29, 2014
Messages
129
Reaction score
54
First Language
French
Primarily Uses
That's useful !

It doesn't work in battle test though, so i thought there was a problem, but it works perfectly in-game.

Thanks
 

HeroicJay

Veteran
Veteran
Joined
Jun 23, 2014
Messages
319
Reaction score
173
First Language
English
Primarily Uses
RMMV
Luth: I haven't tested this myself, but Battle Test tends to be a bit finicky with when you last saved the project. If you install the plugin and then immediately run a Battle Test, it won't load the plugin; this is universally true, not unique to this plugin. Hit "Save" first before running a Battle Test. (Having written my own plugins, I get tripped up on that one all the time.) This isn't a problem when running the full game in debug mode, because it automatically prompts you to save first.
 

wrigty12

Veteran
Veteran
Joined
Jan 11, 2014
Messages
533
Reaction score
76
First Language
English
Primarily Uses
For some reason, all states that aren't removed with turns (including Knocked Out) show up as "1", then decrease to 0 at the end of the turn..

EDIT:

I did some quick adding to the script to easily remove this issue.
 
Last edited by a moderator:

MikeMakes

Veteran
Veteran
Joined
Sep 30, 2015
Messages
163
Reaction score
41
First Language
English
Primarily Uses
Thank you for this, lolaccount. Does the display also apply to enemies?

I can't wait to see it incorporate De/Buffs as well.
 

DreamX

Veteran
Veteran
Joined
May 30, 2015
Messages
816
Reaction score
818
First Language
English
Primarily Uses
Thank you for this, lolaccount. Does the display also apply to enemies?

I can't wait to see it incorporate De/Buffs as well.
I updated the plugin to include buffs and debuffs.

It does not apply to enemies yet, but I will do so in an update soon (doesn't seem like it would be much more difficult).

For some reason, all states that aren't removed with turns (including Knocked Out) show up as "1", then decrease to 0 at the end of the turn..

EDIT:

I did some quick adding to the script to easily remove this issue.
I have fixed this issue with update v1.01, thank you for bringing it to my attention.
 

MikeMakes

Veteran
Veteran
Joined
Sep 30, 2015
Messages
163
Reaction score
41
First Language
English
Primarily Uses
Thank you. You're doing great!
 
Last edited by a moderator:

wrigty12

Veteran
Veteran
Joined
Jan 11, 2014
Messages
533
Reaction score
76
First Language
English
Primarily Uses
I believe you are now missing the part of the code that cuts off how many numbers are shown. Your slice function is gone, so it shows all numbers even if the icons are not drawn..
 

DreamX

Veteran
Veteran
Joined
May 30, 2015
Messages
816
Reaction score
818
First Language
English
Primarily Uses
I believe you are now missing the part of the code that cuts off how many numbers are shown. Your slice function is gone, so it shows all numbers even if the icons are not drawn..
Thanks for catching that, it's been fixed :)
 

wrigty12

Veteran
Veteran
Joined
Jan 11, 2014
Messages
533
Reaction score
76
First Language
English
Primarily Uses
Another thing, I liked the numbers on the bottom of the icon, not the top like you now have it. Maybe make that a parameter for the developer to set?
 

Sawaragi Rikko

Villager
Member
Joined
Jan 3, 2014
Messages
8
Reaction score
0
First Language
Indonesia
Primarily Uses
excuse me, I want to ask, how i name the .js?

Display State Turns On Icon.js?
 

DreamX

Veteran
Veteran
Joined
May 30, 2015
Messages
816
Reaction score
818
First Language
English
Primarily Uses
Another thing, I liked the numbers on the bottom of the icon, not the top like you now have it. Maybe make that a parameter for the developer to set?
Sure, I'll do that in an update.

excuse me, I want to ask, how i name the .js?

Display State Turns On Icon.js?
That's fine, you can name it whatever you want.
 

tsunetakaryu

Veteran
Veteran
Joined
Nov 4, 2015
Messages
40
Reaction score
28
First Language
Chinese
Well, I found a bug and fixed by myself.

after using Yanfly's YEP_BattleSysATB script, the stats countdown will not display correctly, for example it will show a value like "2.123456789". Then I checked your script (1.00) and modified something like that:

this.drawText(actor._stateTurns[actor._states].toFixed(1), x + (Window_Base._iconWidth * i) + (Window_Base._iconWidth / 6), y + (Window_Base._iconWidth / 6), Window_Base._iconWidth, 'center');I used

toFixed(1)to show the countdown number with one decimal.

Since you've update this script to v1.02, I'll take a look. Anyway nice work, thanks for your share. 
 

RockEsper

Villager
Member
Joined
Jul 10, 2012
Messages
19
Reaction score
5
First Language
English
Thanks so much for this. A very neccessary script for strategic RPG battles. I look forward to this working for enemies.
 

Roguedeus

It's never too late to procrastinate...
Veteran
Joined
Mar 19, 2013
Messages
527
Reaction score
106
First Language
English
Primarily Uses
N/A
Well, I found a bug and fixed by myself.

after using Yanfly's YEP_BattleSysATB script, the stats countdown will not display correctly, for example it will show a value like "2.123456789". Then I checked your script (1.00) and modified something like that:

this.drawText(actor._stateTurns[actor._states].toFixed(1), x + (Window_Base._iconWidth * i) + (Window_Base._iconWidth / 6), y + (Window_Base._iconWidth / 6), Window_Base._iconWidth, 'center');I used

toFixed(1)to show the countdown number with one decimal.

Since you've update this script to v1.02, I'll take a look. Anyway nice work, thanks for your share. 


Moving the plugin to the front of the list and changing line 80 ( for v1.02) to this:

this.drawText(turns.toFixed(0), x + (Window_Base._iconWidth * i) + (Window_Base._iconWidth / 6), y - (Window_Base._iconWidth / 6), Window_Base._iconWidth, 'center');Made it function normally for me with ATB Tick Timed Turns enabled.
 

tsunetakaryu

Veteran
Veteran
Joined
Nov 4, 2015
Messages
40
Reaction score
28
First Language
Chinese
Moving the plugin to the front of the list and changing line 80 ( for v1.02) to this:

this.drawText(turns.toFixed(0), x + (Window_Base._iconWidth * i) + (Window_Base._iconWidth / 6), y - (Window_Base._iconWidth / 6), Window_Base._iconWidth, 'center');Made it function normally for me with ATB Tick Timed Turns enabled.

Yes, that's it. Thanks! 
 

Roguedeus

It's never too late to procrastinate...
Veteran
Joined
Mar 19, 2013
Messages
527
Reaction score
106
First Language
English
Primarily Uses
N/A
I've had to stop using the plugin for two reason. One cosmetic, one crashing.

First, the turns (even with the toFixed) is sometimes reporting the wrong value when initially applied. (mostly for buffs)

Second, applying a state with turns outside battle causes a crash.

lolaccount, if you are still taking the time to support this, I can provide you with more details on the issues.

Thanks for your time!
 

DreamX

Veteran
Veteran
Joined
May 30, 2015
Messages
816
Reaction score
818
First Language
English
Primarily Uses
I've had to stop using the plugin for two reason. One cosmetic, one crashing.

First, the turns (even with the toFixed) is sometimes reporting the wrong value when initially applied. (mostly for buffs)

Second, applying a state with turns outside battle causes a crash.

lolaccount, if you are still taking the time to support this, I can provide you with more details on the issues.

Thanks for your time!
Absolutely, let me know.
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Profile Posts

So the overhaul on my project has been going great, I like this version of the project a lot more. It's more contained and less overly ambitious for what I can achieve given my constraints on time, money, and skills in advanced programming. I'm going to wait till my project is mostly finished to begin working UI polish again. I'm going to learn how to use LUNA MV to polish the project.
last time i used this site i was a different gender.. wow rlly makes u think... anyway transing ur gender is pretty cool and theres hair growing on my feet now 10/10
I should have listened to RPGMAKER Meme thread. I should have backed up my data. The Orphan of Time, my WIP, is completely gone, all those hours of work are completely gone :(
God what was my life before smartphones (I had a grandma's phone before wednesday)
Stream will be live shortly with The Witcher 3! Feel free to drop by!

Forum statistics

Threads
93,381
Messages
911,847
Members
122,883
Latest member
TEKILAO
Top