Advanced Weapon Plugin [V1.3.5]

● ARCHIVED · READ-ONLY
Started by LMPGames 15 posts View original ↗
  1. 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?
  2. 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.
  3. Great looking plugin. I plan on testing this out once I get my second game underway.
  4. Is this plugin still supported?
    I found some bugs in your demo, dude :D
  5. styx92 said:
    Is this plugin still supported?
    I found some bugs in your demo, dude :D

    Let me know what you found. I have not had time to do heavy testing.

    Thanks!
  6. 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 :)
  7. styx92 said:
    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 :)


    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!
  8. 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!
  9. I recently found this plugin, and I think it could be useful for my project once I can get the UI to cooperate.
    It seems that it's not fully compatible with SRD's SuperTools plugin (any time I try to use that plugin to change around the way the windows are set up, they try to reset themselves back to where they started but end up half off the screen). I also can't seem to find where to change the font size for the weapon's description - anywhere that I change the size, it seems that it still strictly adheres to the font size set in YEP_CoreEngine.
  10. Sleepy Kitten Games said:
    I recently found this plugin, and I think it could be useful for my project once I can get the UI to cooperate.
    It seems that it's not fully compatible with SRD's SuperTools plugin (any time I try to use that plugin to change around the way the windows are set up, they try to reset themselves back to where they started but end up half off the screen). I also can't seem to find where to change the font size for the weapon's description - anywhere that I change the size, it seems that it still strictly adheres to the font size set in YEP_CoreEngine.


    Thanks for reporting these. I have recently found some other issues that I am working on as well. I will add these to my "to fix" list and the fixes will be included in the next patch.
  11. Nice system! seems grindy to do synthesis though, leveling up two weapons. Could it be made to utilize require just items and obtain traits from those? like a poison jewel that would give the weapon the poison trait? and with the more times you synthesize a weapon increases the chance to break the weapon beyond repair or some very drastic reduction in stats.
  12. Mojo907 said:
    Nice system! seems grindy to do synthesis though, leveling up two weapons. Could it be made to utilize require just items and obtain traits from those? like a poison jewel that would give the weapon the poison trait? and with the more times you synthesize a weapon increases the chance to break the weapon beyond repair or some very drastic reduction in stats.

    Hey Mojo907, thanks for the reply. For the most part, you have pretty good control over how long it takes to level up weapons through the weapon note tag. It is meant to be kind of grindy for synthesizing. Currently you can only use the same type of weapon but I am working on changing the plugin so that is a parameter you can set if you want to allow cross-weapon synthesizing.

    I may also add in a feature you can turn on to increase exp gain, based on a note tag attribute, for refined weapons. That would be in version 2.0.

    I do like your idea for using items to impart status traits. I will look into adding something like that into the plugin for version 2.0 along with actual weapon breaking (as an option).

    The normal durability system will reduce your damage to 25% of the normal damage when the weapon reaches 0 durability if it is turned on. The question on durability though is a good one. I have been seeing, now that I have my plugin implemented into my game, that more control over durability increases is needed so that will be something else I will work on for version 2.0.

    If you have any other feedback, let me know.
    Thanks!
  13. Sounds awesome, can't wait to see the updates!
  14. Geowil said:
    Hey Mojo907, thanks for the reply. For the most part, you have pretty good control over how long it takes to level up weapons through the weapon note tag. It is meant to be kind of grindy for synthesizing. Currently you can only use the same type of weapon but I am working on changing the plugin so that is a parameter you can set if you want to allow cross-weapon synthesizing.

    I may also add in a feature you can turn on to increase exp gain, based on a note tag attribute, for refined weapons. That would be in version 2.0.

    I do like your idea for using items to impart status traits. I will look into adding something like that into the plugin for version 2.0 along with actual weapon breaking (as an option).

    The normal durability system will reduce your damage to 25% of the normal damage when the weapon reaches 0 durability if it is turned on. The question on durability though is a good one. I have been seeing, now that I have my plugin implemented into my game, that more control over durability increases is needed so that will be something else I will work on for version 2.0.

    If you have any other feedback, let me know.
    Thanks!
    This seems like a good start for what I want (long story short, I wanna make a Dark Cloud inspired game, Active Battle System and all), but there are a couple of things that I'd like from it before I feel it would fit what I'm after. The first is Mojo's request of using items to synthesize traits, but more importantly to my system, I'd like refining a weapon to straight up evolve it into a different weapon of the next tier.

    Like, I get it if I can't exactly copy Dark Cloud's weapon evolution system, but if I can't have weapons evolve into each other at all, my plans are thoroughly shot.
  15. LMPGames said:
    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



    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?
    Hello, is it possible for the weapon to break or even disappear if its durability reaches zero?