dragonpc

Veteran
Veteran
Joined
Oct 22, 2015
Messages
109
Reaction score
80
First Language
English
ItemBook V1.4a
by Skotty TV

Introduction
ItemBook is a Plugin to show the items you have collected through your adventures! (and thier stats, abilities, skills, etc.. that they have attached to them.

Features


Previous Updates

 * - Decide if items will get an entry automaticly when they collected!

 * - Decide how many items appear in one row!

 * - Decide if you want to use the Gold Icon from Yanflys Core Engine!

 * - Decide if you want to half the Index height.

 * - Decide if you want to show Key Items.

 * - Use switches to enable different information!

 *   (Price, Equip/Type, Stats)

 *

 * SkottyTV v1.4a ->

 *

 * - Advanced Visual upgrades!

 * - Added traits and effects window!

 * - Use switches to enable different windows and information!

 *   (Price, Equip/Type, Effects, Parameters)

 * - Added Max Character Length for Skills and States text.(see bottom of help)

 * - Bug fixes!



Screenshots

[IMG]http://i.imgur.com/lEknhPB.png[/IMG]

[IMG]http://i.imgur.com/IcLey6K.png[/IMG]
Download

Dropbox V1.4a

How to Use

Plug and play.

Script



//=============================================================================

// ItemBook.js

//=============================================================================

 

/*:

 * @plugindesc v1.4a by SkottyTV // Displays detailed statuses of items.

 * @author Yoji Ojima & SkottyTV (thx to DragonPC)

 *

 * @param ----- Functions -----

 *

 * @param Unknown Data

 * @desc The index name for an unknown item.

 * @default ??????

 *

 * @param AutoFill

 * @desc Decide if items will automaticly show up in the book

 * when collected. (true or false)

 * @default true

 *

 * @param Gold Icon

 * @desc Decide if you want to use the Gold Icon from

 * Yanfly Core Engine. (true or false)

 * @default true

 *

 * @param Items in Row

 * @desc Decide how many items you want to show up in one row.

 * (default 1)

 * @default 1

 *

 * @param Show Key Items

 * @desc Decide if you want to show the Key Items.

 * (default true)

 * @default true

 *

 * @param Half Index Height

 * @desc Decide if you want to half the Index Window height.

 * (default - true) (false will get overwritten by the damage window!)

 * @default true

 *

 * @param Max Effects Count

 * @desc Decide how many skills will be shown.

 * (default - 7) (7 is recommended for small resolutions!)

 * @default 7

 *

 * @param Max Skill Characters

 * @desc Maximun amount of Characters displayed before "...".

 * @default 17

 *

 * @param ----- Switches -----

 *

 * @param Show Price Switch

 * @desc Choose the switch ID that shows the price.

 * (default 0)

 * @default 0

 *

 * @param Show Effects Switch

 * @desc Choose the switch ID that shows the effects.

 * (default 0)

 * @default 0

 *

 * @param Show Equip/Type Switch

 * @desc Choose the switch ID that shows the equip/type.

 * (default 0)

 * @default 0

 *

 * @param Show Parameters Switch

 * @desc Choose the switch ID that shows the parameters.

 * (default 0)

 * @default 0

 *

 * @param ----- Visuals -----

 *

 * @param Line Opacity

 * @desc Choose the opacity for the lines.

 * (default - 120)

 * @default 120

 *

 * @param Effects Values Color

 * @desc Choose the color for the effects values.

 * (default - 3)

 * @default 3

 *

 * @param ----- Text -----

 *

 * @param Effects Text

 * @desc The text for "Effects".

 * @default Effects

 * 

 * @param Parameter Text

 * @desc The text for "Parameter".

 * @default Parameter

 * 

 * @param HP Regeneration Text

 * @desc The text for "HP Regen".

 * @default HP Regen:

 *

 * @param MP Regeneration Text

 * @desc The text for "MP Regen".

 * @default MP Regen:

 *

 * @param TP Gain Text

 * @desc The text for "TP Gain".

 * @default TP Gain:

 *

 * @param Add State Text

 * @desc The text for "Add State".

 * @default Add State:

 *

 * @param Remove State Text

 * @desc The text for "Remove State".

 * @default Remove State:

 *

 * @param Element Text

 * @desc The text for "Element".

 * @default Element:

 *

 * @param Element Rate Text

 * @desc The text for "Element Rate".

 * @default Element Rate:

 *

 * @param Attack Speed Text

 * @desc The text for "Attack Speed".

 * @default Attack Speed:

 *

 * @param Learn Skill Text

 * @desc The text for "Learn Skill".

 * @default Learn Skill:

 *

 * @param Equip Text

 * @desc The text for "Equip".

 * @default Equip:

 *

 * @param Type Text

 * @desc The text for "Type".

 * @default Type:

 *

 * @param Item Type Text

 * @desc The text for "Item Type".

 * @default Item Type:

 *

 * @param Success Rate Text

 * @desc The text for "Success Rate".

 * @default Success Rate:

 *

 * @help

 *

 * ============================================================================

 * SkottyTV v1.1 ->

 *     

 * - Decide if items will get an entry automaticly when they collected!

 * - Decide how many items appear in one row!

 * - Decide if you want to use the Gold Icon from Yanflys Core Engine!

 * - Advanced Visual upgrades!

 *

 * SkottyTV v1.2 ->

 *

 * - Visual upgrades!

 *

 * SkottyTV v1.3 ->

 *

 * - Decide if you want to half the Index height.

 * - Decide if you want to show Key Items.

 * - Advanced Visual upgrades!

 * - Use switches to enable different information!

 *   (Price, Equip/Type, Stats)

 *

 * SkottyTV v1.4a ->

 *

 * - Advanced Visual upgrades!

 * - Added traits and effects window!

 * - Use switches to enable different windows and informations!

 *   (Price, Equip/Type, Effects, Parameters)

 * - Added Max Character Length for Skills and States text.(see bottom of help)

 * - Bug fixes!

 * 

 * ============================================================================

 *

 * Plugin Command:

 *   ItemBook open             # Open the item book screen

 *   ItemBook add item 1       # Add item #1 to the item book

 *   ItemBook add weapon 2     # Add weapon #2 to the item book

 *   ItemBook add armor 3      # Add armor #3 to the item book

 *   ItemBook remove item 4    # Remove item #4 from the item book

 *   ItemBook remove weapon 5  # Remove weapon #5 from the item book

 *   ItemBook remove armor 6   # Remove armor #6 from the item book

 *   ItemBook complete         # Complete the item book

 *   ItemBook clear            # Clear the item book

 *

 * Item (Weapon, Armor) Note:

 *   <book:no>                # This item does not appear in the item book

 *   

 * ============================================================================

 * 

 *   How to get Max Character Length for Skills and States text.

 *   (to prevent Clipping, customizable by your for your skills and states.)

 *   (keep in mind your longest skills and stats, count characters AND spaces

 *   to get the number then subtract 3(for the dots) and you get your max

 *   displayable characters)

 *   

 */

 

(function() {

 

    var parameters = PluginManager.parameters('ItemBook');

    var unknownData = String(parameters['Unknown Data'] || '??????');

    var autoFill = String(parameters['AutoFill'] || 'true');

    var goldIcon = String(parameters['Gold Icon'] || 'true');

    var ShowKeyItems = String(parameters['Show Key Items'] || 'true');

    var IndexHeight = String(parameters['Half Index Height'] || 'true');

    var listRow = Number(parameters['Items in Row'] || 1);

    var maxEffects = Number(parameters['Max Effects Count'] || 7);

    

    var ShowPrice = Number(parameters['Show Price Switch'] || 0);

    var ShowEffects = Number(parameters['Show Effects Switch'] || 0);

    var ShowTypes = Number(parameters['Show Equip/Type Switch'] || 0);

    var ShowParams = Number(parameters['Show Parameters Switch'] || 0);

 

    var lineOpac = Number(parameters['Line Opacity'] || 120);

    var posColor = Number(parameters['Effects Values Color'] || 3);

    

    var Effects = String(parameters['Effects Text'] || 'Effects');

    var parText = String(parameters['Parameter Text'] || 'Parameter');

    var hpReg = String(parameters['HP Regeneration Text'] || 'HP Regen:');

    var mpReg = String(parameters['MP Regeneration Text'] || 'MP Regen:');

    var tpReg = String(parameters['TP Gain Text'] || 'TP Gain:');

    var addState = String(parameters['Add State Text'] || 'Add State:');

    var remState = String(parameters['Remove State Text'] || 'Remove State:');

    var elementText = String(parameters['Element Text'] || 'Element:');

    var elementRate = String(parameters['Element Rate Text'] || 'Element Rate:');

    var attackSpeed = String(parameters['Attack Speed Text'] || 'Attack Speed:');

    var learnSkill = String(parameters['Learn Skill Text'] || 'Learn Skill:');

    var max = Number(parameters['Max Skill Characters'] || 17);

    

    var equipText = String(parameters['Equip Text'] || 'Equip:');

    var typeText = String(parameters['Type Text'] || 'Type:');

    var itemTypeText = String(parameters['Item Type Text'] || 'Item Type:');

    var sucRateText = String(parameters['Success Rate Text'] || 'Success Rate:');

    

        var arr = [0,1,2,3,4,5,6,7,8,9,10,hpReg,mpReg,tpReg,

                   14,15,16,17,18,19,20,addState,remState,23,24,25,26,27,28,29,

                   30,31,32,33,34,35,36,37,38,39,40,41,42,learnSkill,44,45,46,47,48,49,50];

        var arr2 = [0,1,2,3,4,5,6,7,8,9,10,elementRate,12,13,

                   14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,

                   30,elementText,32,attackSpeed,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50];

        var arrl = [hpReg,mpReg,tpReg,addState,remState,learnSkill,elementRate,elementText,sucRateText,itemTypeText,attackSpeed]

        

        var lgth = 0;

        var longest

        var distance = 10;

 

        for(var i=0; i < arrl.length; i++){

            if(arrl.length > lgth){

                var lgth = arrl.length;

                var longest = arrl;

            }      

        }

    

    var _Game_Interpreter_pluginCommand =

            Game_Interpreter.prototype.pluginCommand;

    Game_Interpreter.prototype.pluginCommand = function(command, args) {

        _Game_Interpreter_pluginCommand.call(this, command, args);

        if (command === 'ItemBook') {

            switch (args[0]) {

            case 'open':

                SceneManager.push(Scene_ItemBook);

                break;

            case 'add':

                $gameSystem.addToItemBook(args[1], Number(args[2]));

                break;

            case 'remove':

                $gameSystem.removeFromItemBook(args[1], Number(args[2]));

                break;

            case 'complete':

                $gameSystem.completeItemBook();

                break;

            case 'clear':

                $gameSystem.clearItemBook();

                break;

            }

        }

    };

 

    Game_System.prototype.addToItemBook = function(type, dataId) {

        if (!this._ItemBookFlags) {

            this.clearItemBook();

        }

        var typeIndex = this.itemBookTypeToIndex(type);

        if (typeIndex >= 0) {

            this._ItemBookFlags[typeIndex][dataId] = true;

        }

    };

 

    Game_System.prototype.removeFromItemBook = function(type, dataId) {

        if (this._ItemBookFlags) {

            var typeIndex = this.itemBookTypeToIndex(type);

            if (typeIndex >= 0) {

                this._ItemBookFlags[typeIndex][dataId] = false;

            }

        }

    };

 

    Game_System.prototype.itemBookTypeToIndex = function(type) {

        switch (type) {

        case 'item':

            return 0;

        case 'weapon':

            return 1;

        case 'armor':

            return 2;

        default:

            return -1;

        }

    };

 

    Game_System.prototype.completeItemBook = function() {

        var i;

        this.clearItemBook();

        for (i = 1; i < $dataItems.length; i++) {

            this._ItemBookFlags[0] = true;

        }

        for (i = 1; i < $dataWeapons.length; i++) {

            this._ItemBookFlags[1] = true;

        }

        for (i = 1; i < $dataArmors.length; i++) {

            this._ItemBookFlags[2] = true;

        }

    };

 

    Game_System.prototype.clearItemBook = function() {

        this._ItemBookFlags = [[], [], []];

    };

 

    Game_System.prototype.isInItemBook = function(item) {

        if (this._ItemBookFlags && item) {

            var typeIndex = -1;

            if (DataManager.isItem(item)) {

                typeIndex = 0;

            } else if (DataManager.isWeapon(item)) {

                typeIndex = 1;

            } else if (DataManager.isArmor(item)) {

                typeIndex = 2;

            }

            if (typeIndex >= 0) {

                return !!this._ItemBookFlags[typeIndex][item.id];

            } else {

                return false;

            }

        } else {

            return false;

        }

    };

 

    var _Game_Party_gainItem = Game_Party.prototype.gainItem;

    Game_Party.prototype.gainItem = function(item, amount, includeEquip) {

        _Game_Party_gainItem.call(this, item, amount, includeEquip);

        if (item && amount > 0) {

            var type;

            if (DataManager.isItem(item)) {

                type = 'item';

            } else if (DataManager.isWeapon(item)) {

                type = 'weapon';

            } else if (DataManager.isArmor(item)) {

                type = 'armor';

            }

           

            if (autoFill === 'true') {

                $gameSystem.addToItemBook(type, item.id);

            }

        }

    };

 

    function Scene_ItemBook() {

        this.initialize.apply(this, arguments);

    }

 

    Scene_ItemBook.prototype = Object.create(Scene_MenuBase.prototype);

    Scene_ItemBook.prototype.constructor = Scene_ItemBook;

 

    Scene_ItemBook.prototype.initialize = function() {

        Scene_MenuBase.prototype.initialize.call(this);

    };

 

    Scene_ItemBook.prototype.create = function() {

       

        var w3 = Graphics.boxWidth / 3;

        var ww = (Graphics.boxWidth / 3)*2 + 2;

        var wh = Graphics.boxHeight / 10;

       

        Scene_MenuBase.prototype.create.call(this);

        this._indexWindow = new Window_ItemBookIndex(0, 0);

        this._indexWindow.setHandler('cancel', this.popScene.bind(this));

 

        this._statusWindow = new Window_ItemBookStatus(w3, 0, ww, wh*3);

        this._statusWindow2 = new Window_ItemBookStatus2(w3, wh*3, ww, wh*5.5);

        

        if ($gameSwitches.value(ShowEffects) === true || ShowEffects === 0) {

            this._statusWindow3 = new Window_ItemBookStatus3(w3, wh*8.5, ww, wh*1.5); }

        else {

            this._statusWindow3 = new Window_ItemBookStatus3(w3, wh*3, ww, wh*1.5); }

            

        this._statusWindow4 = new Window_ItemBookStatus4(0, wh*5, Graphics.boxWidth/3, wh*5);

        this.addWindow(this._indexWindow);

        this.addWindow(this._statusWindow);

        

        if ($gameSwitches.value(ShowEffects) === true || ShowEffects === 0) {

            this.addWindow(this._statusWindow2); }

            

        if ($gameSwitches.value(ShowTypes) === true || ShowTypes === 0) {

            this.addWindow(this._statusWindow3); }

            

        if ($gameSwitches.value(ShowParams) === true || ShowParams === 0) {    

        this.addWindow(this._statusWindow4); }

        

        this._indexWindow.setStatusWindow(this._statusWindow);

        this._indexWindow.setStatusWindow2(this._statusWindow2);

        this._indexWindow.setStatusWindow3(this._statusWindow3);

        this._indexWindow.setStatusWindow4(this._statusWindow4);

    };

 

    function Window_ItemBookIndex() {

        this.initialize.apply(this, arguments);

    }

 

    Window_ItemBookIndex.prototype = Object.create(Window_Selectable.prototype);

    Window_ItemBookIndex.prototype.constructor = Window_ItemBookIndex;

 

    Window_ItemBookIndex.lastTopRow = 0;

    Window_ItemBookIndex.lastIndex  = 0;

 

    Window_ItemBookIndex.prototype.initialize = function(x, y) {

        var width = Graphics.boxWidth / 3;

        if ($gameSwitches.value(ShowParams) === true || ShowParams === 0 || IndexHeight === "true") { 

            var height = Graphics.boxHeight/2;

        }

        else{

            var height = Graphics.boxHeight;

        }

        Window_Selectable.prototype.initialize.call(this, x, y, width, height);

        this.refresh();

        this.setTopRow(Window_ItemBookIndex.lastTopRow);

        this.select(Window_ItemBookIndex.lastIndex);

        this.activate();

    };

 

    Window_ItemBookIndex.prototype.maxCols = function() {

        return listRow;

    };

 

    Window_ItemBookIndex.prototype.maxItems = function() {

        return this._list ? this._list.length : 0;

    };

 

    Window_ItemBookIndex.prototype.setStatusWindow = function(statusWindow) {

        this._statusWindow = statusWindow;

        this.updateStatus();

    };

    Window_ItemBookIndex.prototype.setStatusWindow2 = function(statusWindow2) {

        this._statusWindow2 = statusWindow2;

        this.updateStatus();

    };

    Window_ItemBookIndex.prototype.setStatusWindow3 = function(statusWindow3) {

        this._statusWindow3 = statusWindow3;

        this.updateStatus();

    };

    Window_ItemBookIndex.prototype.setStatusWindow4 = function(statusWindow4) {

        this._statusWindow4 = statusWindow4;

        this.updateStatus();

    };

 

    Window_ItemBookIndex.prototype.update = function() {

        Window_Selectable.prototype.update.call(this);

        this.updateStatus();

    };

 

    Window_ItemBookIndex.prototype.updateStatus = function() {

        if (this._statusWindow) {

            var item = this._list[this.index()];

            this._statusWindow.setItem(item);

        }

        if (this._statusWindow2) {

            var item = this._list[this.index()];

            this._statusWindow2.setItem(item);

        }

        if (this._statusWindow3) {

            var item = this._list[this.index()];

            this._statusWindow3.setItem(item);

        }

        if (this._statusWindow4) {

            var item = this._list[this.index()];

            this._statusWindow4.setItem(item);

        }

    };

 

    Window_ItemBookIndex.prototype.refresh = function() {

        var i, item;

        this._list = [];

        for (i = 1; i < Math.min(2000, $dataItems.length); i++) {

            item = $dataItems;

            if (item && item.name && item.itypeId === 1 && item.meta.book !== 'no') {

                this._list.push(item);

            }

        }

        if (ShowKeyItems === 'true') {                

        for (i = 1; i < Math.min(2000, $dataItems.length); i++) {

            item = $dataItems;

            if (item && item.name && item.itypeId === 2 && item.meta.book !== 'no') {

                this._list.push(item);

            }

        }

        }

        for (i = 1; i < Math.min(2000, $dataWeapons.length); i++) {

            item = $dataWeapons;

            if (item && item.name && item.meta.book !== 'no') {

                this._list.push(item);

            }

        }

        for (i = 1; i < Math.min(2000, $dataArmors.length); i++) {

            item = $dataArmors;

            if (item && item.name && item.meta.book !== 'no') {

                this._list.push(item);

            }

        }

        this.createContents();

        this.drawAllItems();

    };

 

    Window_ItemBookIndex.prototype.drawItem = function(index) {

        var item = this._list[index];

        var rect = this.itemRect(index);

        var width = rect.width - this.textPadding();

        if ($gameSystem.isInItemBook(item)) {

            this.drawItemName(item, rect.x, rect.y, width);

        } else {

            var iw = Window_Base._iconWidth + 4;

            this.drawText(unknownData, rect.x + iw, rect.y, width - iw);

        }

    };

 

    Window_ItemBookIndex.prototype.processCancel = function() {

        Window_Selectable.prototype.processCancel.call(this);

        Window_ItemBookIndex.lastTopRow = this.topRow();

        Window_ItemBookIndex.lastIndex = this.index();

    };

 

    function Window_ItemBookStatus() {

        this.initialize.apply(this, arguments);

    }

    function Window_ItemBookStatus2() {

        this.initialize.apply(this, arguments);

    }

    function Window_ItemBookStatus3() {

        this.initialize.apply(this, arguments);

    }

    function Window_ItemBookStatus4() {

        this.initialize.apply(this, arguments);

    }

 

    Window_ItemBookStatus.prototype = Object.create(Window_Base.prototype);

    Window_ItemBookStatus.prototype.constructor = Window_ItemBookStatus;

   

    Window_ItemBookStatus2.prototype = Object.create(Window_Base.prototype);

    Window_ItemBookStatus2.prototype.constructor = Window_ItemBookStatus2;

   

    Window_ItemBookStatus3.prototype = Object.create(Window_Base.prototype);

    Window_ItemBookStatus3.prototype.constructor = Window_ItemBookStatus3;

 

    Window_ItemBookStatus4.prototype = Object.create(Window_Base.prototype);

    Window_ItemBookStatus4.prototype.constructor = Window_ItemBookStatus4;

 

    Window_ItemBookStatus.prototype.initialize = function(x, y, width, height) {

        Window_Base.prototype.initialize.call(this, x, y, width, height);

    };

 

    Window_ItemBookStatus.prototype.setItem = function(item) {

        if (this._item !== item) {

            this._item = item;

            this.refresh();

        }

    };

    Window_ItemBookStatus2.prototype.setItem = function(item) {

        if (this._item !== item) {

            this._item = item;

            this.refresh();

        }

    };

    Window_ItemBookStatus3.prototype.setItem = function(item) {

        if (this._item !== item) {

            this._item = item;

            this.refresh();

        }

    };

    Window_ItemBookStatus4.prototype.setItem = function(item) {

        if (this._item !== item) {

            this._item = item;

            this.refresh();

        }

    };

 

    Window_ItemBookStatus.prototype.refresh = function() {

        var item = this._item;

        var x = 0;

        var y = 0;

        var lineHeight = this.lineHeight();

 

        this.contents.clear();

 

        if (!item || !$gameSystem.isInItemBook(item)) {

            return;

        }

       

        this.drawItemName(item, x-1, y);

        

        this.contents.paintOpacity = lineOpac;

        this.contents.fillRect(x, 40, this.contents.width, 2, this.normalColor());

        this.contents.paintOpacity = 255;

        

        this.drawTextEx(item.description, x, (lineHeight)+10);

        

        if ($gameSwitches.value(ShowPrice) === true || ShowPrice === 0) {

            var price = item.price > 0 ? item.price : '-';

       

            if (goldIcon === 'true') {     

                this.drawText(price, this.contents.width - 42 - this.textWidth(price), this.contents.height - lineHeight);

                this.drawIcon(Yanfly.Icon.Gold, this.contents.width - 32, this.contents.height - lineHeight);

            } else {

                this.drawText(price, this.contents.width - this.textWidth(price) - this.textWidth(TextManager.currencyUnit) - 10, this.contents.height - lineHeight);

                this.changeTextColor(this.systemColor());

                this.drawText(TextManager.currencyUnit, this.contents.width - this.textWidth(TextManager.currencyUnit), this.contents.height - lineHeight);

                this.resetTextColor();

            }

        }   

 

    };

 

    Window_ItemBookStatus2.prototype.refresh = function() {

        var item = this._item;

        var x = 0;

        var y = 0;

        var lineHeight = this.lineHeight();

 

        this.contents.clear();

 

        if (!item || !$gameSystem.isInItemBook(item)) {

            return;

        }

            

        this.drawText(Effects, this.contents.width/2 - this.textWidth(Effects)/2, y);

        y += lineHeight + 6;

        

        this.contents.paintOpacity = lineOpac;

        this.contents.fillRect(x, lineHeight, this.contents.width, 2, this.normalColor());

        this.contents.paintOpacity = 255;   

        

        var x1 = x + distance + this.textWidth(longest);

            

        if (DataManager.isWeapon(item) || DataManager.isArmor(item)) {

            

            for (var j = 0; j < item.traits.length && j < maxEffects; j++) {

            

//---------------------------------------------------------- Is -> Element / Rate ---------------------------------------------  

                var it = item.traits[j];

                    if (it.code === 11 || it.code === 31) {

                        

                        this.changeTextColor(this.systemColor());

                        this.drawText(arr2[it.code], x, y);

                        this.resetTextColor();

                        

                        if (it.code === 31) {

                        var x2 = x1;

                        }else{

                        var x2 = x1 + 56;

                        this.changeTextColor(this.textColor(posColor));

                        this.drawText(Math.round(it.value*100) + "%", x1, y);

                        }

                        this.resetTextColor();

                        this.drawText($dataSystem.elements[it.dataId] + " ", x2, y);

 

                     y += lineHeight; 

                    }

//---------------------------------------------------------- Is -> Attack Speed --------------------------------------------- 

                    if (it.code === 33) {

                        

                        this.changeTextColor(this.systemColor());

                        this.drawText(arr2[it.code], x, y);

                        this.resetTextColor();

                        

                        var x2 = x1 + 56;

                        this.changeTextColor(this.textColor(posColor));

                        this.drawText(Math.round(it.value), x1, y);

                        this.resetTextColor();

 

                     y += lineHeight; 

                    }

//---------------------------------------------------------- Is -> Learn Skill --------------------------------------------- 

                    if (it.code === 43) {

                        

                        var Icon = $dataSkills[it.dataId].iconIndex;

                        var Name = $dataSkills[it.dataId].name;

                        

                        this.changeTextColor(this.systemColor());

                        this.drawText(arr[it.code], x, y);

                        this.resetTextColor();

                        

                        this.drawIcon(Icon, x1, y);

                        this.drawText(Name, x1+40, y);    

                     y += lineHeight;   

                    }

//---------------------------------------------------------------------------------------------------------------------------------

            }

            

        }

        else{

            

//---------------------------------------------------------- ITEM EFFECTS Create ----------------------------------------------------       

        

        for (var j = 0; j < item.effects.length && j < maxEffects; j++) {

            

//---------------------------------------------------------- Is -> HP / MP / TP - Regen ---------------------------------------------  

                var ie = item.effects[j];

                    if (ie.code === 11 || ie.code === 12 || ie.code === 13) {

                        var x2 = x1 + this.textWidth("+" + Math.round(ie.value1*100) + "% ");

                        var x3 = x2 + this.textWidth("- ");

                        

                        this.changeTextColor(this.systemColor());

                        this.drawText(arr[ie.code ], x, y);

                        this.resetTextColor();

                        

                        if (ie.value1 > 0 && ie.value2 > 0) {

                            this.changeTextColor(this.textColor(posColor));

                            this.drawText("+" + Math.round(ie.value1*100) + "%",x1, y);

                            this.resetTextColor();

                            

                            this.changeTextColor(this.systemColor());

                            this.drawText(",", x2, y);

                            this.resetTextColor();

                            

                            this.changeTextColor(this.textColor(posColor));

                            this.drawText("+" + Math.round(ie.value2), x3, y);

                            this.resetTextColor();

                        }

                        else if (ie.value1 > 0) {

                            this.changeTextColor(this.textColor(posColor));

                            if (ie.code === 13) {

                                this.drawText("+" + Math.round(ie.value1), x1, y);

                            }

                            else {

                                this.drawText("+" + Math.round(ie.value1*100) + "%", x1, y);

                            }

                            this.resetTextColor();

                        }

                        else if (ie.value2 > 0) {

                            this.changeTextColor(this.textColor(posColor));

                            this.drawText("+" + Math.round(ie.value2), x1, y);

                            this.resetTextColor();

                        }

                     y += lineHeight; 

                    }

//----------------------------------------------------------------------------------------------------------------------------------                       

         

//---------------------------------------------------------- Is -> Add/Remove State ------------------------------------------------                    

                    if (ie.code === 21 ||ie.code === 22) {

                        

                        var Icon = $dataStates[ie.dataId].iconIndex;

                        var Name = $dataStates[ie.dataId].name;

                        

                        this.changeTextColor(this.systemColor());

                        this.drawText(arr[ie.code], x, y);

                        this.resetTextColor();

                        

                        this.drawText(Math.round(ie.value1*100) + "% ", x1, y, 60, "right"); 

                        this.drawIcon(Icon, x1+56, y);

                            if (Name.length >= max) {

                            var newLength = name.length - (Name.length - max) - 4

                            this.drawText(Name.slice(0,newLength) + "...", x1+96, y)

                        }

                        else {

                        this.drawText(Name, x1+96, y);}

                     y += lineHeight;   

                    }

//---------------------------------------------------------------------------------------------------------------------------------

 

//---------------------------------------------------------- Is -> Learn Skill ----------------------------------------------------                   

                    if (ie.code === 43) {

                        

                        var Icon = $dataSkills[ie.dataId].iconIndex;

                        var Name = $dataSkills[ie.dataId].name;

 

                        this.changeTextColor(this.systemColor());

                        this.drawText(arr[ie.code], x, y);

                        this.resetTextColor();

                        

                        this.drawIcon(Icon, x1, y);

                        if (Name.length >= max) {

                            var newLength = name.length - (Name.length - max)

                            this.drawText(Name.slice(0,newLength) + "...", x1+40, y)

                        }

                        else {

                        this.drawText(Name, x1+40, y); }   

                     y += lineHeight;   

                    }

//---------------------------------------------------------------------------------------------------------------------------------

            } 

            

        }

    };

  

    Window_ItemBookStatus3.prototype.refresh = function() {

        var item = this._item;

        var x = 0;

        var y = -5;

        var lineHeight = this.lineHeight();

 

        this.contents.clear();

 

        if (!item || !$gameSystem.isInItemBook(item)) {

            return;

        }

        

            if (DataManager.isWeapon(item) || DataManager.isArmor(item)) {

            

                var etype = $dataSystem.equipTypes[item.etypeId];

                var type;

            

                if (DataManager.isWeapon(item)) {

                    type = $dataSystem.weaponTypes[item.wtypeId];

                } else {

                    type = $dataSystem.armorTypes[item.atypeId];

                }

            

                this.changeTextColor(this.systemColor());

                this.drawText(equipText, x, y);

                this.drawText(typeText, x, y+lineHeight-5);

                this.resetTextColor();

                this.drawText(etype, x + this.textWidth(longest) + distance, y);

                this.drawText(type, x + this.textWidth(longest) + distance, y+lineHeight-5);

 

            }

            else {

            

                this.changeTextColor(this.systemColor());

                this.drawText(itemTypeText, x, y);

                this.drawText(sucRateText, x, y+lineHeight-5);

                this.resetTextColor();

            

                if (item.itypeId === 1) {

                    this.drawText(TextManager.item, x + this.textWidth(longest) + distance, y);

                }

                else{

                    this.drawText(TextManager.keyItem, x + this.textWidth(longest) + distance, y);

                }

                this.drawText(item.successRate + "%", x + this.textWidth(longest) + distance, y+lineHeight-5);

            } 

    };

    

    Window_ItemBookStatus4.prototype.refresh = function() {

        var item = this._item;

        var lineHeight = this.lineHeight();

        var x = 0;

        var y = lineHeight-8;

 

        this.contents.clear();

 

        if (!item || !$gameSystem.isInItemBook(item)) {

            return;

        }

        

        if (DataManager.isWeapon(item) || DataManager.isArmor(item)) {

            

            this.drawText(parText, this.contents.width/2-this.textWidth(parText)/2, -8);

            

            this.contents.paintOpacity = lineOpac;

            this.contents.fillRect(x, 25, this.contents.width, 2, this.normalColor());

            this.contents.paintOpacity = 255;

            

            for (var i = 0; i < 8; i++) {

                this.changeTextColor(this.systemColor());

                this.drawText(TextManager.param(i), x, y);

                this.resetTextColor();

                if (item.params === 0) {

                    this.drawText("-", x + 170, y, 60, 'right');

                } else{

                    this.drawText(item.params, x + 170, y, 60, 'right');

                }

                y += lineHeight-5;

            }

        }

        

    };

 

})();




Credit and Thanks
SkottyTV

DragonPC

Author's Notes
Enjoy!

This Plugin can be used for Commercial and non-commercial games provided due credit. (SkottyTV / DragonPC) + Yoji Ojima
 

MuteDay

Mutation Engine
Veteran
Joined
Oct 19, 2015
Messages
253
Reaction score
39
First Language
English
any chance you might update it so that it uses catagories?
 

MuteDay

Mutation Engine
Veteran
Joined
Oct 19, 2015
Messages
253
Reaction score
39
First Language
English
and does it work with yanfly?
 

Roguedeus

It's never too late to procrastinate...
Veteran
Joined
Mar 19, 2013
Messages
546
Reaction score
113
First Language
English
Primarily Uses
N/A
DragonPC, it seems that there is a small issue regarding this plugin and those of us using larger than default resolutions.

Specifically, the item description section.

In larger game resolutions its possible to have longer item descriptions before the string gets cut off. This is because the description box spans the entire game windows width. But your Item Book, shares that space with the item list. Risking cutting off the last 30% or so of long descriptions.

Of course, the only real solution (besides forcing the font size to change so it fits) is to move the item list down and allow the item description to span the entire width as normal. It would mean doing with less space for the left most menus, so... Its not such a simple fix.
 
Last edited by a moderator:

dragonpc

Veteran
Veteran
Joined
Oct 22, 2015
Messages
109
Reaction score
80
First Language
English
DragonPC, it seems that there is a small issue regarding this plugin and those of us using larger than default resolutions.

Specifically, the item description section.

In larger game resolutions its possible to have longer item descriptions before the string gets cut off. This is because the description box spans the entire game windows width. But your Item Book, shares that space with the item list. Risking cutting off the last 30% or so of long descriptions.

[IMG]http://forums.rpgmakerweb.com/public/style_images/RPGW_33_Images/attachicon.gif[/IMG]item_info_example_ichorus1.PNG

[IMG]http://forums.rpgmakerweb.com/public/style_images/RPGW_33_Images/attachicon.gif[/IMG]itemBook_issue_1.PNG

Of course, the only real solution (besides forcing the font size to change so it fits) is to move the item list down and allow the item description to span the entire width as normal. It would mean doing with less space for the left most menus, so... Its not such a simple fix.
Easy fix, <desc3> tag lets you have a third line of text. or in the regular text item description, just use a third line. (if that doesn't work, try the <desc3> tag in the notes section. but you do raise a good point as we never tested the note tags in combination with the regular description box.. lol)

Edit: we did design it to use three lines instead of two because of the shorter top window. it also give a bit more than only having two lines did with the full window length. we though that was a better solution than just cutting everything shorter with no way to finish the description

you will houwever have to toy with the lengths of your descriptions if your resolution is larger. obviously you can fit a bit more with more real-estate.

EDIT EDIT: sorry just woke up and wasnt thinking clearly, (was thinking of the enemybook) we will fix this to use note tags to use a third line like we did with the enemy book, to fix the smaller real-estate issue)
 
Last edited by a moderator:

HintonR

Veteran
Veteran
Joined
Mar 2, 2016
Messages
197
Reaction score
26
First Language
English
Primarily Uses
RMMV
Hello Dragon.


I've turned off all my plugins except YEP Core + MenuCore.


I've even tried the plugin by itself. But all I'm getting from it is this.

DRG.png
 
Joined
Jan 22, 2016
Messages
613
Reaction score
223
First Language
English
Primarily Uses
Wait... so this is different from the plugin that's made by the official creators, right? Because the official plugin I can't seem to get working in my project, even before the big update, as it would give me a TypeError whenever I tried to playtest with it active. Even though I was using it in the exact same way (a selected choice in a library map) as my test project.


I wonder if someone's made their own Enemy Book plugin? Sure, the official one works, but when you can take a simple official plugin and elaborate on it and make it all pretty like this? Hey, why not, right?


EDIT: Okay... tried it out and... there's nothing here. Nothing listed in the help file, nothing in the parameters, no description... and when I added it to my game and interacted with my Event to activate it, it simply closed out the text box as if I'd selected cancel. I DID notice that the Dropbox link seemed to be missing... so maybe that's what's going on? Regardless, I'm very disappointed right now. //rmwforums.s3.amazonaws.com/emoticons/default_sad.gif
 
Last edited by a moderator:

Radis3D

Just a Devilz
Veteran
Joined
Nov 1, 2015
Messages
172
Reaction score
33
First Language
Indonesian
Primarily Uses
RMVXA
is the link broken?
i can't download.. o_O
 

Latest Threads

Latest Posts

Latest Profile Posts

I'm finally back! :kaojoy:
A lot of RL issues happened this year which didn't let me work on Aithne as much, but I am back with new inspiration!
In that time my art style also changed a little, so I'll be doing a small art change with busts/menu art
Ops forgot to fix the hand on the weaponless sprite o_O
opening old GIMP files is a blessing and a curse because it can be fun to look at art you started once upon a time and want to finish BUT come to a total halt when you remember your past self forgot to create separate layers for most files
"The bigger the person, the longer the wait"

Forum statistics

Threads
113,721
Messages
1,076,916
Members
147,750
Latest member
rainbowkombat
Top