Vis_Mage 84 Posted May 25, 2019 (edited) Hello!  Lately, I've been trying to make what I thought would be a really simple edit to Ventwig's VTS-Elemental Charge Field script, but I haven't had any luck on my own. I'm hoping someone with a better idea of what they're doing than myself could help me out here.  In summery, the script allows you to create multipliers that apply to each element. By default, the script allows up to 8 elements to be used, but I'm hoping to increase that to 20. I'm not actually using the visual HUD aspect of the script, everything happens behind the scenes, so no worries about making everything fit.  Additionally, I have been trying to get this working myself, without much luck. Here's my current copy of the script, in case it proves helpful in any way:  Spoiler #============================================================================ #VTS-Elemental Charge Fields (with Charge Skill Evolution) #By Ventwig #Version 1.21 - Mar 22 2014 #For RPGMaker VX Ace #Thanks Selchar and Tsukihime for the help! #============================================================================= # Description: # This script adds an extra dynamic to elements for both players and enemies # alike. When a skill of an element is used, its "charge" will raise, and, # if desired, the opposing element's "charge" will drop. That charge counts # as a damage multiplier, and it can even nullify or drain damage of a certain # element if its charge drops low enough. # The new Charge Skill Evolution feature (from Tales of The Abyss's Field # of Fonons Change) allows a skill to change into a more powerful form # under certain conditions based on the fields. #============================================================================== # Compatability: # I'd say it's pretty high! # It works with Battle Symphony, and YEA because it's only an add-on to battles, # so have fun! #=============================================================================== # Instructions: Put in materials, above main. You need to set the elements/icons! #============================================================================== # Please give Credit to Ventwig if you would like to use one of my scripts! # Use it commericial or non-commercial, and feel free to tell me if you're using # it commercially! # You may edit my scripts, just don't claim as your own! #=============================================================================== #Spirit System / Wisp System #=============================================================================== # How to Change Charge Value (Skill Notetags) #=============================================================================== # <charge_value x> # x = amount to increase charge (make a negative to decrease) (number) # If you want to make certain skills worth more in charge fields, this notetag # lets you make some skills strengthen fields better. Negatives weaken fields. # These override the default for said skill. #=============================================================================== # How to Set up a Charge Skill Evolution (Skill Notetags) #=============================================================================== # If you do not like the CSE idea, simply do not use these notetags #=============================================================================== # <evolution_element x> # x = element id (the number) # Set the element ID for the CSE. This means that this element will # need the specidic value (or default if you use that) in order to CSE. # Please be careful and don't set it to an element without a Charge Field, # as that will have no effect. # # <evolution_charge x> # x = required charge value # Set a number for the CSE. This means that the element (specified using # the notetag above or using the default setting) will need a value equal to or # greater than x in order to FOFChange. # # <evolution_skill x> # x = skill id (the number) # Set the skill to CSE into. Simple enough, if the conditions are met, # then this skill will be used instead. #******************************************************************************* # IT IS IMPERATIVE to make sure the MP/TP costs are equal to/less than the # original skill. This script does not check for that and will bug if # the player doesn't have enough MP to use the new skill. #=============================================================================== module VTS_ECF #This means whether or not elements across from each other will "oppose" #each other. If set to true, using a fire attack will raise fire charge #and lower ice. False will just raise fire. #True/False Def:True COUNTER_CHARGE = false #The default amount an attack will raise/lower the fields #Def: 10 CHARGE_VALUE = 0 #The ID number of the desired elements. In "Terms" in the database, there's #the area where you can edit elements. The ID is the number beside them. #Def: 3,4,5,8,6,7,9,10 (Fire,Ice,Thunder,Wind,Water,Stone,Light,Dark) #NOTE:If you are using opposing elements, then the opposing pairs are: # 1/2 and 3/4 (so on), 1/2 will not alter 3/4, 3/4 will not alter 1/2. ELE1 = 4 ELE2 = 5 ELE3 = 6 ELE4 = 7 #======== # Don't want 8 elements? Simply change the number to "nil" w/o brackets! # (min 4 elements, max 8) #======= ELE5 = 10 ELE6 = 11 ELE7 = 8 ELE8 = 9 ELE9 = 13 ELE10 = 14 ELE11 = 15 ELE12 = 16 ELE13 = 17 ELE14 = 18 ELE15 = 19 ELE16 = 20 ELE17 = 21 ELE18 = 22 ELE19 = 12 ELE20 = 23 #How wide the window should be. #Recommended #4 elements: 100 #6 elements: 160 #8 elements: 200 WIDTH = 0 #220 #The icon numbers for the elements. These are in sync with the numbers #for element id above, so just shove in the icons you want! #Def: 96,97,98,101,99,100,102,103 EIC1 = 96 EIC2 = 97 EIC3 = 98 EIC4 = 100 EIC5 = 99 EIC6 = 101 EIC7 = 102 EIC8 = 103 ELE9 = 9 ELE10 = 9 ELE11 = 9 ELE12 = 9 ELE13 = 9 ELE14 = 9 ELE15 = 9 ELE16 = 9 ELE17 = 9 ELE18 = 9 ELE19 = 9 ELE20 = 9 #The icon showing "opposing elements", acting as the connector between them. #Put 0 if you don't want one (like if you don't use opposing elements) #Def:115 LIC = 0 #The X and Y placement of the window. Easy enough. #Def: Graphics.width - 200, 0 #I recommend keeping X like this, making the number equal to width. Y can be whatever. X = Graphics.width - 100 Y = 0 #============================================================================= #Charge Skill Evolution #============================================================================= DEF_CSE_ELEMENT = 3 #If an element is not set to a skill with a CSE, #this is the element ID it will be given DEF_CSE_CHARGE = 120 #If no charge amount is specified for a skill with a #CSE, this is the required amount CSE_TEXT = "Wisp Charge!" #The text said when announcing the new change CSE_TEXT_SKILL = false #Display the skill name after the text above? True/false #(It shows the traditional (Eric used FIREAGA! Afterwards) end ############################################################################# class Game_Battler < Game_BattlerBase def make_damage_value(user, item) value = item.damage.eval(user, self, $game_variables) value *= item_element_rate(user, item) value *= pdr if item.physical? value *= mdr if item.magical? value *= rec if item.damage.recover? value = value*$vts_elechrg1/100 if item.damage.element_id == VTS_ECF::ELE1 value = value*$vts_elechrg2/100 if item.damage.element_id == VTS_ECF::ELE2 value = value*$vts_elechrg3/100 if item.damage.element_id == VTS_ECF::ELE3 value = value*$vts_elechrg4/100 if item.damage.element_id == VTS_ECF::ELE4 if $vts_elechrg5 != nil value = value*$vts_elechrg5/100 if item.damage.element_id == VTS_ECF::ELE5 end if $vts_elechrg6 != nil value = value*$vts_elechrg6/100 if item.damage.element_id == VTS_ECF::ELE6 end if $vts_elechrg7 != nil value = value*$vts_elechrg7/100 if item.damage.element_id == VTS_ECF::ELE7 end if $vts_elechrg8 != nil value = value*$vts_elechrg8/100 if item.damage.element_id == VTS_ECF::ELE8 end if $vts_elechrg9 != nil value = value*$vts_elechrg9/100 if item.damage.element_id == VTS_ECF::ELE9 end if $vts_elechrg10 != nil value = value*$vts_elechrg10/100 if item.damage.element_id == VTS_ECF::ELE10 end if $vts_elechrg11 != nil value = value*$vts_elechrg11/100 if item.damage.element_id == VTS_ECF::ELE11 end if $vts_elechrg12 != nil value = value*$vts_elechrg12/100 if item.damage.element_id == VTS_ECF::ELE12 end if $vts_elechrg13 != nil value = value*$vts_elechrg13/100 if item.damage.element_id == VTS_ECF::ELE13 end if $vts_elechrg14 != nil value = value*$vts_elechrg14/100 if item.damage.element_id == VTS_ECF::ELE14 end if $vts_elechrg15 != nil value = value*$vts_elechrg15/100 if item.damage.element_id == VTS_ECF::ELE15 end if $vts_elechrg16 != nil value = value*$vts_elechrg16/100 if item.damage.element_id == VTS_ECF::ELE16 end if $vts_elechrg17 != nil value = value*$vts_elechrg17/100 if item.damage.element_id == VTS_ECF::ELE17 end if $vts_elechrg18 != nil value = value*$vts_elechrg18/100 if item.damage.element_id == VTS_ECF::ELE18 end if $vts_elechrg19 != nil value = value*$vts_elechrg19/100 if item.damage.element_id == VTS_ECF::ELE19 end if $vts_elechrg20 != nil value = value*$vts_elechrg20/100 if item.damage.element_id == VTS_ECF::ELE20 end value = apply_critical(value) if @result.critical value = apply_variance(value, item.damage.variance) value = apply_guard(value) @result.make_damage(value.to_i, item) end end class Window_ElementCharge < Window_Base def initialize(x,y,width,height) super self.z = 0 draw_elements set_values draw_value end def set_values @val1 = $vts_elechrg1 @val2 = $vts_elechrg2 @val3 = $vts_elechrg3 @val4 = $vts_elechrg4 @val5 = $vts_elechrg5 if $vts_elechrg5 != nil @val6 = $vts_elechrg6 if $vts_elechrg6 != nil @val7 = $vts_elechrg7 if $vts_elechrg7 != nil @val8 = $vts_elechrg8 if $vts_elechrg8 != nil @val9 = $vts_elechrg9 if $vts_elechrg9 != nil @val10 = $vts_elechrg10 if $vts_elechrg10 != nil @val11 = $vts_elechrg11 if $vts_elechrg11 != nil @val12 = $vts_elechrg12 if $vts_elechrg12 != nil @val13 = $vts_elechrg13 if $vts_elechrg13 != nil @val14 = $vts_elechrg14 if $vts_elechrg14 != nil @val15 = $vts_elechrg15 if $vts_elechrg15 != nil @val16 = $vts_elechrg16 if $vts_elechrg16 != nil @val17 = $vts_elechrg17 if $vts_elechrg17 != nil @val18 = $vts_elechrg18 if $vts_elechrg18 != nil @val19 = $vts_elechrg19 if $vts_elechrg19 != nil @val20 = $vts_elechrg20 if $vts_elechrg20 != nil end def draw_elements draw_icon(VTS_ECF::EIC1,0,0,enabled=true) #Fire draw_icon(VTS_ECF::EIC2,0,93,enabled=true) #Ice draw_icon(VTS_ECF::EIC3,50,0,enabled=true) #Thunder draw_icon(VTS_ECF::EIC4,50,93,enabled=true) #Wind draw_icon(VTS_ECF::LIC,0,50,enabled=true) # draw_icon(VTS_ECF::LIC,50,50,enabled=true) # draw_icon(VTS_ECF::EIC5,100,0,enabled=true) if $vts_elechrg5 != nil draw_icon(VTS_ECF::EIC6,100,93,enabled=true) if $vts_elechrg6 != nil draw_icon(VTS_ECF::EIC7,150,0,enabled=true) if $vts_elechrg7 != nil draw_icon(VTS_ECF::EIC8,150,93,enabled=true) if $vts_elechrg8 != nil draw_icon(VTS_ECF::LIC,100,50,enabled=true) if $vts_elechrg6 != nil draw_icon(VTS_ECF::LIC,150,50,enabled=true) if $vts_elechrg8 != nil end def draw_value draw_text(0,20,40,32,@val1) draw_text(0,70,40,32,@val2) draw_text(45,20,40,32,@val3) draw_text(45,70,40,32,@val4) draw_text(100,20,40,32,@val5)if $vts_elechrg5 != nil draw_text(100,70,40,32,@val6)if $vts_elechrg6 != nil draw_text(145,20,40,32,@val7)if $vts_elechrg7 != nil draw_text(145,70,40,32,@val8)if $vts_elechrg8 != nil end def refresh contents.clear draw_elements set_values draw_value end def update refresh if $vts_elechrg1 != @val1 refresh if $vts_elechrg2 != @val2 refresh if $vts_elechrg3 != @val3 refresh if $vts_elechrg4 != @val4 refresh if $vts_elechrg5 != @val5 and $vts_elechrg5 != nil refresh if $vts_elechrg6 != @val6 and $vts_elechrg6 != nil refresh if $vts_elechrg7 != @val7 and $vts_elechrg7 != nil refresh if $vts_elechrg8 != @val8 and $vts_elechrg8 != nil refresh if $vts_elechrg9 != @val9 refresh if $vts_elechrg10 != @val10 refresh if $vts_elechrg11 != @val11 refresh if $vts_elechrg12 != @val12 refresh if $vts_elechrg13 != @val13 refresh if $vts_elechrg14 != @val14 refresh if $vts_elechrg15 != @val15 refresh if $vts_elechrg16 != @val16 refresh if $vts_elechrg17 != @val17 refresh if $vts_elechrg18 != @val18 refresh if $vts_elechrg19 != @val19 refresh if $vts_elechrg20 != @val20 end end class Scene_Battle < Scene_Base alias ele_charge_start start def start ele_charge_start $vts_elechrg1 = 100 $vts_elechrg2 = 100 $vts_elechrg3 = 100 $vts_elechrg4 = 100 $vts_elechrg5 = 100 if VTS_ECF::ELE5 != nil $vts_elechrg6 = 100 if VTS_ECF::ELE6 != nil $vts_elechrg7 = 100 if VTS_ECF::ELE7 != nil $vts_elechrg8 = 100 if VTS_ECF::ELE8 != nil $vts_elechrg9 = 100 if VTS_ECF::ELE9 != nil $vts_elechrg10 = 100 if VTS_ECF::ELE10 != nil $vts_elechrg11 = 100 if VTS_ECF::ELE11 != nil $vts_elechrg12 = 100 if VTS_ECF::ELE12 != nil $vts_elechrg13 = 100 if VTS_ECF::ELE13 != nil $vts_elechrg14 = 100 if VTS_ECF::ELE14 != nil $vts_elechrg15 = 100 if VTS_ECF::ELE15 != nil $vts_elechrg16 = 100 if VTS_ECF::ELE16 != nil $vts_elechrg17 = 100 if VTS_ECF::ELE17 != nil $vts_elechrg18 = 100 if VTS_ECF::ELE18 != nil $vts_elechrg19 = 100 if VTS_ECF::ELE19 != nil $vts_elechrg20 = 100 if VTS_ECF::ELE20 != nil end alias element_charge_create_all_windows create_all_windows def create_all_windows element_charge_create_all_windows create_element_window end def create_element_window @element_window = Window_ElementCharge.new(VTS_ECF::X,VTS_ECF::Y,VTS_ECF::WIDTH,150) end alias element_charge_use_item use_item def use_item item = @subject.current_action.item if item.is_a?(RPG::Skill) @charge_element = item.damage.element_id adjust_element_charge(@charge_element, item) end element_charge_use_item end ### def adjust_element_charge(element, skill) if element == VTS_ECF::ELE1 $vts_elechrg1 += skill.charge_value if VTS_ECF::COUNTER_CHARGE $vts_elechrg2 -= skill.charge_value end end if element == VTS_ECF::ELE2 $vts_elechrg2 += skill.charge_value if VTS_ECF::COUNTER_CHARGE $vts_elechrg1 -= skill.charge_value end end if element == VTS_ECF::ELE3 $vts_elechrg3 += skill.charge_value if VTS_ECF::COUNTER_CHARGE $vts_elechrg4 -= skill.charge_value end end if element == VTS_ECF::ELE4 $vts_elechrg4 += skill.charge_value if VTS_ECF::COUNTER_CHARGE $vts_elechrg3 -= skill.charge_value end end if $vts_elechrg5 != nil if element == VTS_ECF::ELE5 $vts_elechrg5 += skill.charge_value if VTS_ECF::COUNTER_CHARGE $vts_elechrg6 -= skill.charge_value end end end if $vts_elechrg5 != nil if element == VTS_ECF::ELE6 $vts_elechrg6 += skill.charge_value if VTS_ECF::COUNTER_CHARGE $vts_elechrg5 -= skill.charge_value end end end if $vts_elechrg5 != nil if element == VTS_ECF::ELE7 $vts_elechrg7 +=skill.charge_value if VTS_ECF::COUNTER_CHARGE $vts_elechrg8 -= skill.charge_value end end end if $vts_elechrg5 != nil if element == VTS_ECF::ELE8 $vts_elechrg8 += skill.charge_value if VTS_ECF::COUNTER_CHARGE $vts_elechrg7 -= skill.charge_value end end end #New elements 9-20 if $vts_elechrg5 != nil if element == VTS_ECF::ELE9 $vts_elechrg9 += skill.charge_value if VTS_ECF::COUNTER_CHARGE $vts_elechrg10 -= skill.charge_value end end end if $vts_elechrg5 != nil if element == VTS_ECF::ELE10 $vts_elechrg10 +=skill.charge_value if VTS_ECF::COUNTER_CHARGE $vts_elechrg9 -= skill.charge_value end end end if $vts_elechrg5 != nil if element == VTS_ECF::ELE11 $vts_elechrg11 +=skill.charge_value if VTS_ECF::COUNTER_CHARGE $vts_elechrg8 -= skill.charge_value end end end if $vts_elechrg5 != nil if element == VTS_ECF::ELE12 $vts_elechrg12 +=skill.charge_value if VTS_ECF::COUNTER_CHARGE $vts_elechrg8 -= skill.charge_value end end end if $vts_elechrg5 != nil if element == VTS_ECF::ELE13 $vts_elechrg13 +=skill.charge_value if VTS_ECF::COUNTER_CHARGE $vts_elechrg8 -= skill.charge_value end end end if $vts_elechrg5 != nil if element == VTS_ECF::ELE14 $vts_elechrg14 +=skill.charge_value if VTS_ECF::COUNTER_CHARGE $vts_elechrg8 -= skill.charge_value end end end if $vts_elechrg5 != nil if element == VTS_ECF::ELE15 $vts_elechrg15 +=skill.charge_value if VTS_ECF::COUNTER_CHARGE $vts_elechrg8 -= skill.charge_value end end end if $vts_elechrg5 != nil if element == VTS_ECF::ELE16 $vts_elechrg16 +=skill.charge_value if VTS_ECF::COUNTER_CHARGE $vts_elechrg8 -= skill.charge_value end end end if $vts_elechrg5 != nil if element == VTS_ECF::ELE17 $vts_elechrg17 +=skill.charge_value if VTS_ECF::COUNTER_CHARGE $vts_elechrg8 -= skill.charge_value end end end if $vts_elechrg5 != nil if element == VTS_ECF::ELE18 $vts_elechrg18 +=skill.charge_value if VTS_ECF::COUNTER_CHARGE $vts_elechrg8 -= skill.charge_value end end end if $vts_elechrg5 != nil if element == VTS_ECF::ELE19 $vts_elechrg19 +=skill.charge_value if VTS_ECF::COUNTER_CHARGE $vts_elechrg8 -= skill.charge_value end end end if $vts_elechrg5 != nil if element == VTS_ECF::ELE20 $vts_elechrg20 +=skill.charge_value if VTS_ECF::COUNTER_CHARGE $vts_elechrg8 -= skill.charge_value end end end end end #=============================================================================== #FOF CHANGE #=============================================================================== module RPG class BaseItem def fofc_element if @fofc_element.nil? if @note =~ /<evolution_element (.*)>/i @fofc_element= $1.to_i else @fofc_element = VTS_ECF::DEF_CSE_ELEMENT end end @fofc_element end def fofc_charge if @fofc_charge.nil? if @note =~ /<evolution_charge (.*)>/i @fofc_charge= $1.to_i else @fofc_charge = VTS_ECF::DEF_CSE_CHARGE end end @fofc_charge end def fofc_skill if @fofc_skill.nil? if @note =~ /<evolution_skill (.*)>/i @fofc_skill= $1.to_i else @fofc_skill = 0 end end @fofc_skill end def charge_value if @charge_value.nil? if @note =~ /<charge_value (.*)>/i @charge_value= $1.to_i else @charge_value = VTS_ECF::CHARGE_VALUE end end @charge_value end end end class Game_Action attr_accessor :old_skill end class Game_Battler < Game_BattlerBase def get_new_skill return unless current_action.item.is_a?(RPG::Skill) quest_skill = current_action.item if quest_skill.fofc_skill != 0 if quest_skill.fofc_element == VTS_ECF::ELE1 if $vts_elechrg1 >= quest_skill.fofc_charge current_action.set_skill(quest_skill.fofc_skill) current_action.old_skill = quest_skill $vts_elechrg1 = 100 end end if quest_skill.fofc_element == VTS_ECF::ELE2 if $vts_elechrg2 >= quest_skill.fofc_charge current_action.set_skill(quest_skill.fofc_skill) current_action.old_skill = quest_skill $vts_elechrg1 = 100 end end if quest_skill.fofc_element == VTS_ECF::ELE3 if $vts_elechrg3 >= quest_skill.fofc_charge current_action.set_skill(quest_skill.fofc_skill) current_action.old_skill = quest_skill $vts_elechrg1 = 100 end end if quest_skill.fofc_element == VTS_ECF::ELE10 if $vts_elechrg10 >= quest_skill.fofc_charge current_action.set_skill(quest_skill.fofc_skill) current_action.old_skill = quest_skill $vts_elechrg1 = 100 end end end end end # Game_Battler class Window_BattleLog < Window_Selectable #$#CRASHES DJINN System! No knwon side effects from disabling it :) #$# alias vts_fofchange_display_use_item display_use_item # def display_use_item(subject, item) # if item.is_a?(RPG::Skill) # if subject.current_action.old_skill != nil # name = subject.name # change_text = VTS_ECF::CSE_TEXT # skill_name = item.name + '!' # use_name = subject.current_action.old_skill.message1 # old_skill_text = name + use_name # add_text(old_skill_text) # wait # if VTS_ECF::CSE_TEXT_SKILL == true # new_skill_text = change_text + skill_name # else # new_skill_text = change_text # end # add_text(new_skill_text) # wait # end # end # vts_fofchange_display_use_item(subject, item) # subject.current_action.old_skill = nil # end end class Scene_Battle < Scene_Base alias scene_battle_use_item_new use_item def use_item @subject.get_new_skill scene_battle_use_item_new end end # Scene_Battle   Please let me know if you have any questions.  Thank you! Edited May 25, 2019 by Vis_Mage Share this post Link to post Share on other sites
roninator2 264 Posted May 25, 2019 replied to your thread in rpg maker forums Share this post Link to post Share on other sites
Vis_Mage 84 Posted May 26, 2019 Thank you very much!  In case anyone else finds this thread, and are interested in the script edit, you can find it here: https://forums.rpgmakerweb.com/index.php?threads/vts-elemental-charge-field-more-than-8-elements-tweak.109363/#post-971872 Share this post Link to post Share on other sites