Advanced Weapon Plugin [V1.3.5]

Discussion in 'JS Plugins In Development' started by Geowil, Jul 20, 2018.

  1. Geowil

    Geowil Veteran Veteran

    Messages:
    47
    Likes Received:
    19
    First Language:
    English
    Primarily Uses:
    RMMV
    Hey everyone! I am pleased to bring you my third plugin in my series of RMXP conversion plugins. This time I bring you something I have been wanting to bring over for quite a while, a plugin that allows for weapons to be leveled up. However, in my fashion, I have expanded its functionality and added in a bunch of new things which were not present in the original script.

    I do not know who wrote the original one yet but once I find out I will update this post with the credit line.

    So, on to the plugin information
    _________

    Geowil_AWP Plugin
    Version: 1.3.5


    awpDemo1.3.5.png

    Demo Available: Yes, Geowil_AWP_Demo.zip
    Project Available: Yes, Geowil_AWP_Project.zip
    GitHub Page: Geowil_AWP GitHub

    Conflicts: Almost for sure, see the conflicts section at the bottom of the post

    Terms of Use: Free non-commercially or commercially; just give credit


    What is this?
    This repository contains a plugin for Rpg Maker MV which allows the developer to implement advanced weapon features. It creates instance based weaponry which grows independently of the database weapon stats and cna produce unique weapons.


    Installation Instructions
    First, create a backup copy of your rpg_objects file just in case then download the rpg_objects file from the GitHub page. This file only contains the classes required for this plugin. Copy and paste them to the end of your rpg_objects file.

    That's it! Everything else takes place in the Geowil_AWP plugin file also located on the GitHub page. Download it and place it into your plugins folder.



    How does it work?
    This plugin works by creating an instance of the weapons in the database. It then uses these istances instead of the database weapon ids like MV normally does and any and all further interactions throughout the engine do the same thing. At the Blacksmith, which is part of this plugin as well, a weapon can be level up using gold and collected exp from battle. As a weapon levels up it can gain both additional parameters and traits based on a few note tag settings. For more information continue to the features overview.



    Current Features Overview
    Features in V1.3.5


    Weapon Levels
    This plugin creates instance based weaponry. What does this even mean? might come to your mind. So, each weapon, when loaded from the database, is turned into a Game_InstanceWeapon upon either loading of a new game while the actors are being equipped or when new items are being added to the game party weapons list through event commands like a shop or the Change Party Weapons event.

    As your character fights enemies and gains exp, some or all of that exp is also transferred to their weapons. You then spend this weapon EXP at a Blacksmith to increase your weapon's level. As this is done level bonuses can be applied through a note tag on the weapon. We will cover that later. Once the weapon reaches its set maximum level other systems are used to improve it further.

    Currently the only costs for any of the features is either gold and/or EXP. In the future there may be an option to enable an item cost as well.


    Refinement System
    The refinement system is an optional feature that allows a weapon that has reached its maximum level to be further improved. Currently there is no maximum refine level setting though one may be added in the future. As a weapon gains refinements it will gain a +# by its name for each refinement. Upon refining a weapon its level is set back to 1 and all EXP is removed. After this point the weapon will no longer gain level bonuses and the only way to improve the weapon's stats is through refining it which becomes progressively more expensive but also progressively increases the weapon's params and trait values.


    Synthesis System
    The synthesis system allows you to drastically improve a weapon's power. It works by taking any weapon of the same quality (read as same weapon and refine levels) and combines them. How params and traits are carried over depends on if those params or traits are new to the base weapon. If they are, they are added at a rate of 30% of the value of the donor weapon. If they are not, then only 15% of the value is carried over but this still can be many times more than refinement depending on the refine bonus note tag setting.

    Once a weapon has been synthesized its level is set to the maximum level of the weapon and the refine level is increased through a formula. Each time you synthesize a weapon, it will become much harder to synthesize it again and much more costly. There is also an optional feature for this system whereby you can restrict synthesizing to weapons which are at their maximum level and have also reached their minimum synthesis refine level as set in a note tag attribute.

    Repair and Durability System
    The repair and durability system is another optional system. This one adds a durability system into the game what will damage a weapon when used in battle based on a multiplier set in the note tag. Once a weapon's durability reaches 0, currently, all damage output from that weapon is reduced by 25%. Eventually an option may be added that can either change the amount of damage to remove or to "break" the weapon ala-Dark Cloud. Weapons can be repaired at a Blacksmith and currently the only cost is gold though an item cost may be an additional option in the future.


    Parameters
    There are a total of eight plugin parameters to customize the plugin with. I will list them and their functions.


    Param Increase Color
    Sets the color used when parameters are increased, traits are added, or trait values are increased.


    Param Decrease Color
    Sets the color used when parameters are decreased, traits are removed, or trait values are decreased.


    Refine System
    The refine system allows a weapon to be further improved after it has reached its maximum level.


    Synthesis System
    When on allows a weapons to be combined if they are the same refine and level, increasing stats drastically.


    Repair and Durability System
    When enabled cause weapons to degrade every time they are used in battle and enables repair functionality.


    Enable Extended Params
    When on shows all 28 params in the BS stat window else shows only 12 of the most commonly used params.


    Enable Synthesis Level/Refine Requirements
    When on this will require weapons to be at their maximum level and meet a minimum refine level as set in the note tag.


    Show only Non-0 Stats
    When on this will hide any parameter that has a value of 0 from the blacksmith status window.



    Plugin Commands
    Opening the Blacksmith

    Use this plugin command to open the Blacksmith window. Nothing fancy:

    Code:
    BSOpen
    

    Toggle the Refinement System
    This plugin command allows you to turn On or Off the refine system:

    Code:
    AWP RefineSystem On/Off
    

    Toggle the Synthesis System
    This plugin command allows you to turn On or Off the synthesis system:

    Code:
    AWP SynthesisSystem On/Off
    

    Toggle the Durability and Repair System
    This plugin command allows you to turn On or Off the weapon durability and repair system:

    Code:
    AWP DurabilitySystem On/Off
    

    Toggle the Extended Parameters
    This pugin command allows you to show or hide the extended list of parameters in the weapon status window of the Blacksmith scene. Note that on level up, refine, or synthesis these stats show up even when this setting is turned off or the plugin command has been called:

    Code:
    AWP ExtendedParams On/Off
    

    Toggle the Synthesis Level/Refine Requirements
    This allows you to toggle the synthesis requirements on and off:

    Code:
    AWP SynthReqs On/Off
    

    Toggle Showing Non-0 Params
    This command allows you to enable or disable the feature that hides parameters with values of 0.

    Code:
    AWP OnlyNon0Params On/Off
    


    Weapon Note Tag
    A note tag is required for this plugin though some of the attributes are optional if you have disabled some of the systems. Here is a break down of each attribute and at the end will be a full tag example.

    <AWP>|</AWP> - this defines the beginning an end of the tag for the AWP so that any other note tags in the weapon tag box do not interfere with the AWP. All other tag attributes must be placed between these.

    MaxLvl:# - This attribute defines the maximum level for the weapon. This can be any value but please bear in mind that the exp and gold formulas use this value so if you set a level above 80 be sure to account for this in those attributes to prevent astronomical upgrade costs.

    DefDur:# - This attribute sets the default max durability of the weapon. If you have the durability system enabled this is required.

    DurDmg:# - This attribute sets the amount of damage a wepaon will sustain when attacking when the durability system is turned on. It is therefore required if you use that system but can be left out if you don't.

    ExpForm:175 * Math.pow(wepLevel+1, 1.25) - This formula sets the base exp cost for refining and leveling weapons. Please note that the 'wepLevel' variable should be included if you make changes to ensure that your costs remain progressive.

    GoldForm: (((175 + (1.25 * (2 * (wepLevel+1 + 65)))) * Math.pow(wepLevel+1,1.25)))- This formula sets the base gold cost for refining and leveling weapons. Please note that the 'wepLevel' variable should be included if you make changes to ensure that your costs remain progressive.

    Param:#:#-n - this attribute is used to set parameter level bonuses. Ensure that you have values for every level for your weapon or crashes may occur. '#' is the parameter number (you can find a list of these numbers defined under Game_BattlerBase).

    This is followed by a comma-delimited list of how much that parameter should be increased per level where the position of that value in the list is the level the increase occurs on.
    Example:

    Code:
    Param:0:0,10,10,0,25
    
    This example shows a weapon with a max level of 5 which increases the maximum hp of the actor by 10 hp on WLV 2, by 10 again on WLV 3, and then by an additional 25 on WLV 5. Any actor with this weapon equipped while it is at Weapon Level 5 will get an additional 45 health.

    EParam:#:#-n - this attribute is used to set extended parameter level bonuses. Ensure that you have values for every level for your weapon or crashes may occur. '#' is the parameter number (you can find a list of these numbers defined under Game_BattlerBase). This is followed by a comma-delimited list of how much that parameter should be increased per level where the position of that value in the list is the level the increase occurs on.

    Example:
    Code:
    EParam:0:0,0.001,0.001,0,0.025
    
    This example shows a weapon with a max level of 5 which increases the hit rate of the actor by 0.1% on WLV 2, by 0.1% again on WLV 3, and then by an additional 2.5% on WLV 5. Any actor with this weapon equipped while it is at Weapon Level 5 will get an additional 2.7% hit rate.

    SParam:#:#-n - this attribute is used to set special parameter level bonuses. Ensure that you have values for every level for your weapon or crashes may occur. '#' is the parameter number (you can find a list of these numbers defined under Game_BattlerBase). This is followed by a comma-delimited list of how much that parameter should be increased per level where the position of that value in the list is the level the increase occurs on.

    Example:
    Code:
    SParam:0:0,0.001,0.001,0,0.025
    
    This example shows a weapon with a max level of 5 which increases the target rate of the actor by 0.1% on WLV 2, by 0.1% again on WLV 3, and then by an additional 2.5% on WLV 5. Any actor with this weapon equipped while it is at Weapon Level 5 will get an additional 2.7% target rate.

    LvlTraitCodes:#-n - This attribute is one of three which are required for adding traits to weapons at a particular level. This one defines what kind of trait you are adding. I will be compiling a complete list of the trait codes for use with this plugin to help in setting up these level bonuses. To define more than one trait at a level, separate each code with a -.

    Here is an example:
    Code:
    LvlTraitCodes:0,13,0,0,13-13
    
    The above example uses our max level 5 weapon again. It indicated that we are adding a State type trait at WLV2 and two more on WLV 5. The next attributes will determine the exact states that will be added and the values for those states.

    LvlTraitIds:#-n - This attribute defines the trait within the trait category defined in LvlTraitCode to be added at each level. Ensure that you are matching the position of these values to the position of the codes from LvlTraitIds. In many cases, these IDs will correspond to the values you see in the database for that particular trait object; ie the value next to a state in the State tab is the id you will place here for a type 13 trait.

    Consider this example:
    Code:
    LvlTraitIds:0,4,0,0,7-10
    
    In the above example we are adding the Poison state at WLV 2 and the Rage and Sleep states at WLV 5. The effective hit rate for these state traits will be defined next.

    LvlTraitVals:#-n - This attribute defines the rates at which any trait will be applied. Note that these should always be a decimal value between -1.0 and 1.0 unless you intend a more than 100% increase or decrease. Some specific trait types may use the actual values or a 0 or 1 flag. These specific cases will be outlined in the Trait Sheet I will be developing.

    Consider this example:
    Code:
    LvlTraitVals:0,0.04,0,0,0.15-0.43
    
    The above example now sets the rates at which our traits are likely to hit enemies. Our Poison trait has a 4% change of affecting the target while the Rage trait has a 15% change and the Sleep trait has a 43% chance. If these traits already exist on the weapon, the trait value is increased by the amount designated in LvlTraitVals. If they do not exist then the trait is added at the specified value.

    DurInc:#-n - This attribute sets how much the durability of a weapon is increased at each level. If you have the durability system enabled this is required.

    Example:
    Code:
    DurInc:5,2,7,6,14
    
    RefBonusRate:# - This attribute sets a value which is used throughout the refine system. It is used for increasing the value of params and traits during refines, is used in determining refine costs, and other areas when the refine system is enabled, which means it is required if this system is enabled.

    ExpMulti:# - This attribute sets a value which is used to determine how much of a character's gained exp is to be applied to the weapon. Please note that a value greater than 1 will result in more exp being given to the weapon than the character actually got.

    SynthRefReq:# - This attribute sets a value which is used to determine the minimum refine level needed to synthesize a weapon.


    Below is an example tag using the examples from above so that you can see the full structure:
    Code:
    <AWP>
    MaxLevel:5
    DefDur:10
    DurDmg:0.02
    ExpForm:175 * Math.pow(wepLevel+1, 1.25)
    GoldForm:(((175+(1.25*(2*(wepLevel+1+65))))*Math.pow(wepLevel+1,1.25)))
    Param:0:10,0,10,0,25
    Param:2:5,2,2,1,10
    Param:7:1,2,1,0,5
    EParam:0:10,0,10,0,25
    EParam:6:2,6,4,1,4
    SParam:7:10,0,0,15,20
    LvlTraitCodes:0,13,0,13,13-13-13
    LvlTraitIds:0,4,0,5,5-7-10
    LvlTraitVals:0,0.04,0,0.25,0.10-0.15-0.43
    DurInc:5,2,7,6,14
    RefBonusRate:0.15
    ExpMulti:0.72
    SynthRefReq:2
    </AWP>
    


    Planned Features
    - Ability to "break" weapons that reach 0 durability
    - Custom name entry for synthesized weapons
    - Support for dual wield weapons
    - Trait Code Breakdown excel document
    - Ability to display weapon level, refine level, exp, and durability in some of the main menu stat windows



    Conflicts
    Anything that aliases or overrides any of the following functions will likely conflict with this plugin without any integration work:

    - DataManager.createGameObjects
    - DataManager.makeSaveContents
    - DataManager.extractSaveContents
    - DataManager.isWeapon
    - Game_BattlerBase.prototype.traits
    - Game_BattlerBase.prototype.traitsWithId
    - Game_BattlerBase.prototype.canEquipWeapon
    - Game_BattlerBase.prototype.canEquipArmor
    - Game_BattlerBase.prototype.allTraits
    - Game_Actor.prototype.initEquips
    - Game_Actor.prototype.equips
    - Game_Actor.prototype.discardEquip
    - Game_Actor.prototype.releaseUnequippableItems
    - Game_Actor.prototype.paramPlus
    - Game_Actor.prototype.calcEquipItemPerformance
    - Game_Actor.prototype.gainExp
    - Game_Actor.prototype.changeExp
    - Game_Actor.prototype.forceChangeEquip
    - Game_Actor.prototype.changeEquip
    - Game_Actor.prototype.performAttack
    - Game_Actor.prototype.tradeItemWithParty
    - Game_Actor.prototype.clearEquipments
    - Game_Actor.prototype.optimizeEquipments
    - Game_Actor.prototype.bestEquipItem
    - Game_Actor.prototype.calcEquipItemPerformance
    - Game_Action.prototype.apply
    - Scene_Load.prototype.onLoadSuccess
    - Scene_Shop.prototype.sellingPrice
    - Window_Base.prototype.drawItemName
    - Window_EquipItem.prototype.includes
    - Window_EquipItem.prototype.updateHelp
    - Window_ShopStatus.prototype.currentEquippedItem
    - Window_ShopSell.prototype.isEnabled
    - Window_ShopSell.prototype.drawActorParamChange
    - Game_Party.prototype.hasItem
    - Game_Party.prototype.numItems
    - Game_Party.prototype.initAllItems
    - Game_Party.prototype.gainItem
    - Game_Interpreter.prototype.pluginCommand



    Version Changelog
    - Version 1.3.5 Changelog:
    - Fixed several bugs related to a negative select index.

    - Fixed the -- stat sign bug by removing the code that was causing it. It was not needed.

    - Fixed a bug that would sometimes cause five stats to be drawn on one line in the blacksmith status window.

    - Fixed a bug that was causing SP/EX params to be improperly processed into integers instead of floats. This will invalidate old save games.

    - Fixed a bug that was causing weapons to be saved incorrectly if you have previously saved the game during the same session and either had removed weapons from your inventory or had unequipped actor's weapons and then saved again.

    - Fixed a bug that was causing param level bonuses to load incorrectly. Old save files will still have this issue as it is likely that if you saved multiple times that these bonuses were stripped out of the save file.

    - Fixed a bug where SP/EX params were not being applied correctly to weapons.

    - Fixed a bug that was causing SP/EX parameters to show many decimal places.

    - Fixed several bugs that were allowing traits to exceed 100%.

    - Fixed a bug where the parameter sign would sometimes show incorrectly when a base weapon had the same parameter as a donor weapon during synthesis.

    - Fixed a bug that would crash the game when trying to buy a weapon while having one equipped.

    - Fixed a bug that would crash the game when trying to sell a weapon.

    - Fixed a bug which caused the price to show incorrectly when selling a weapon.

    - Fixed a bug which invalidated the gold amount when selling a weapon.

    - Fixed a bug which was preventing weapons from being sold.

    - Fixed an issue which caused the plugin parameter variables in-game to not be set to 1 which caused you to have to talk to the npcs twice to disable the plugin parameters.

    - Fixed an issue where talking to Mr. Demon from the left side during the sealing scene made the demo freeze.

    - Added missing note tag info to the "Windbag" npc.

    - Added plugin parameters to show only non-0 weapon parameters and to enable restrctions on synthesizing as well as plugin commands to toggle these from in-game.

    - Added two new note tag attributes: ExpMulti and SynthRecReq.

    - Added a new feature which alters the blacksmith status window depending on which action panel command item you have selected to give more pertinent information about that command item.

    - Added a new feature which alters the help text for action window commands when the current weapon fails to meet a condition for using that command.

    - Changed how SP/EX params are displayed in the blacksmith status window. They now correctly show as percentages.

    - Added a new area with challenging enemies.

    - Added some new weapons, stronger armor, and stronger healing items.

    - Added a shop npc to the npc area.

    - Added some hidden items to the new area.

    - Added the new plugin information to the "Windbag' npc.

    - Version 1.0.1 Changelog:
    -Fixed an issue which was causing the "Level Weapon" help text to not display and then updated all of the help text in the Blacksmith action window.

    -Fixed an issue that would cause the game to crash when attacking without a weapon.

    -Fixed several problems with the note tags in the demo which were causing things to not be applied when leveling up (Ex: Excalibur's traits) and breaking some plugin functionality.

    -Increased the amount of gold that the static monster in Mt. Blood gives to you from 150K to 1.5M and it won't show level up information any more.

    -Fixed several incorrect note tag attribute names in the "windbag" npc and the plugin help text.

    -Fixed an issue where saving with a character who did not have a weapon equipped caused the game to crash.

    -Fixed a problem which caused some stats to show a -- if the stat was already negative.

    -Found an issue where some stats which may be processed as floats or where the stat is increased by less than 1 won't show properly in the stat list in the Blacksmith status window. Working on a fix for this for the next update.

    - Version 1.0.0 Changelog:
    - Initial version of plugin uploaded?
     
    Last edited: Aug 26, 2018
    #1
  2. Geowil

    Geowil Veteran Veteran

    Messages:
    47
    Likes Received:
    19
    First Language:
    English
    Primarily Uses:
    RMMV
    I have updated the plugin to fix a handful of issues I have found. There are still a few to work out but most of the easily find-able game-crashing ones should be sorted out now and all of the weapon note tags are working now too.

    The project link in the op should be working now.
     
    #2
  3. Johnboy

    Johnboy Veteran Veteran

    Messages:
    325
    Likes Received:
    109
    Location:
    Canadia
    First Language:
    English
    Great looking plugin. I plan on testing this out once I get my second game underway.
     
    #3
  4. styx92

    styx92 Veteran Veteran

    Messages:
    310
    Likes Received:
    38
    First Language:
    German
    Is this plugin still supported?
    I found some bugs in your demo, dude :D
     
    #4
  5. Geowil

    Geowil Veteran Veteran

    Messages:
    47
    Likes Received:
    19
    First Language:
    English
    Primarily Uses:
    RMMV
    Let me know what you found. I have not had time to do heavy testing.

    Thanks!
     
    #5
  6. styx92

    styx92 Veteran Veteran

    Messages:
    310
    Likes Received:
    38
    First Language:
    German
    Ive created a video for you.
    Its only menu scene bugs. And one visual bug, i think.



    At 0:25: After open the shop, is no cursor at the choices and if you press enter you will get an error.

    At 0:35: Same here, if you want to select the second weapon to synth with. No cursor, press enter, error.

    At 0:44 - 1:04: I tested a bit in the menu and switched between the menu points and between mouse and keyboard input and at 1:05 there are no actions possible. I dunno why :D I pressed everthing on the keyboard ^^

    At 1:20 - 1:39: i switched extra parameters off (the lower event, shows at the begin of the video that it has the disable plugin commands in it) and the "cnt" also the counter attack rate will still shows at the level up screen. I dont know, if this is wanted to.


    At 1:40 - end: I switched a bit around and as you can hear in the video, there is something "stucking". The sound at 1:47 shows that. This is nothing i really can provoke, it still happens sometimes. Maybe the first 3 bugs and this one are the same, because the cursor goes crazy :D

    Thats all at this point :D
    I will test a bit more.

    Im very interested into the synth function.
    Yanfly has with his item core also create instance items/weapons etc, so i looked forward to something to synth weapons. And here you are :D Thanks for your work :)
     
    #6
    Geowil likes this.
  7. Geowil

    Geowil Veteran Veteran

    Messages:
    47
    Likes Received:
    19
    First Language:
    English
    Primarily Uses:
    RMMV
    1, 2, 5:
    All of these issues are related to forgetting to auto-select a menu option when the menu is opening. I have added these in.

    4:
    This is working as expected. On the level up screen it shows you what attributes will be gained or increased for that level even if it is a parameter is not shown in the general weapon status screen on the blacksmith action menu screen. The reason it did not show for synthesizing is because the donor weapon did not have that stat on it. If you had leveled both of them to level 2 and then synthesized them, it would have been in the stat list.

    3:
    I think that the fix for 1,2, & 5 will fix this but I have not tried to recreate it.

    I will be releasing an update probably tomorrow evening with these changes and some additional things.

    Thanks for reporting!
     
    #7
  8. Geowil

    Geowil Veteran Veteran

    Messages:
    47
    Likes Received:
    19
    First Language:
    English
    Primarily Uses:
    RMMV
    I have just released the next version of the plugin, version 1.3.5. There are many bug fixed and improvements including some new items, weapons, and armor so that you can try out higher level refines/synths against challenging enemies and a boss that will eventually power up with each defeat.

    If you find any issues please let me know, thanks!
     
    #8
    Frogboy likes this.

Share This Page