Elemental and State Rates
#1
Elemental and State Rates
Version: 1.0


Introduction
This script brings back a lost feature from rm2k(3). It allows you to set the elemental multiplier for elemental and chance for state resistance. It also changes the resistance system to bump down a resistance level if they guard against the element (rather than reducing by half which is crazy)


Script
Code:
module Elem_State_Rate
  #--------------------------------------------------------------------------
  # * Elemental Rates
  #   - syntax: Element_Id => [A, B, C, D, E, F]
  #--------------------------------------------------------------------------
  Elemental = {
  1 => [1000, 500, 200, 100, 0, -100]
  }
  #--------------------------------------------------------------------------
  # * Default Elemental Rate
  #   - syntax: [A, B, C, D, E, F]
  #--------------------------------------------------------------------------
  Elemental.default = [200,150,100,50,0,-100]
  #--------------------------------------------------------------------------
  # * State Rates
  #   - syntax: Element_Id => [A, B, C, D, E, F]
  #--------------------------------------------------------------------------
  States = {
  }
  #--------------------------------------------------------------------------
  # * Default State Rate
  #   - syntax: [A, B, C, D, E, F]
  #--------------------------------------------------------------------------
  States.default = [100,80,60,40,20,0]
end  

class Game_Battler
  #--------------------------------------------------------------------------
  # * State Change (+) Application
  #     plus_state_set  : State Change (+)
  #--------------------------------------------------------------------------
  def states_plus(plus_state_set)
    # Clear effective flag
    effective = false
    # Loop (added state)
    for i in plus_state_set
      # If this state is not guarded
      unless self.state_guard?(i)
        # Set effective flag if this state is not full
        effective |= self.state_full?(i) == false
        # If states offer [no resistance]
        if $data_states[i].nonresistance
          # Set state change flag
          @state_changed = true
          # Add a state
          add_state(i)
        # If this state is not full
        elsif self.state_full?(i) == false
          # Get Table
          table = Elem_State_Rate::States[i]
          # Random Chance
          if rand(100) < table[self.state_ranks[i]-1]
            # Set state change flag
            @state_changed = true
            # Add a state
            add_state(i)
          end
        end
      end
    end
    # End Method
    return effective
  end
end

class Game_Actor < Game_Battler
  #-------------------------------------------------------------------------
  # * Name:      Armor Ids
  #   Info:      Gets ALL Armor IDs
  #   Author:    Trickster
  #   Call Info: No Arguments
  #   Returns:   An Array of Armor Ids
  #   Comments:  Detects @armor(n)_id
  #-------------------------------------------------------------------------
  def armor_ids
    equipment = []
    i = 1
    while eval("@armor#{i}_id") != nil
      equipment << eval("@armor#{i}_id")
      i += 1
    end
    return equipment
  end
  #--------------------------------------------------------------------------
  # * Get Element Revision Value
  #     element_id : element ID
  #--------------------------------------------------------------------------
  def element_rate(element_id)
    # Get values corresponding to element effectiveness
    table = Elem_State_Rate::Elemental[element_id]
    # Get Value Minus 1 (0 in front was removed)
    value = $data_classes[@class_id].element_ranks[element_id] - 1
    # Run Through each armor
    self.armor_ids.each do |armor_id|
      # Get Armor
      armor = $data_armors[armor_id]
      # Skip if state is nil or doesn't guard
      next if armor == nil or !armor.guard_element_set.include?(element_id)
      # Add 1 (Bump up)
      value += 1
    end
    # Run Through each state
    @states.each do |state_id|
      # Get State
      state = $data_states[state_id]
      # Skip if state is nil or doesn't guard against element
      next if state == nil or !state.guard_element_set.include?(element_id)
      # Add 1 (Bump up)
      value += 1
    end
    # Restrict to[0,5]
    value = [[value, 0].max, 5].min
    # End Method
    return table[value]
  end
end

class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # * Get Element Revision Value
  #     element_id : Element ID
  #--------------------------------------------------------------------------
  def element_rate(element_id)
    # Get values corresponding to element effectiveness
    table = Elem_State_Rate::Elemental[element_id]
    # Get Value Minus 1 (0 in front was removed)
    value = $data_enemies[@enemy_id].element_ranks[element_id] - 1
    # Run Through each state
    @states.each do |state_id|
      # Get State
      state = $data_states[state_id]
      # Skip if state is nil or doesn't guard against element
      next if state == nil or !state.guard_element_set.include?(element_id)
      # Add 1 (Bump up)
      value += 1
    end
    # Restrict to[0,5]
    value = [[value, 0].max, 5].min
    # End Method
    return table[value]
  end
end


Instructions
Add this script in a new script below Scene_Debug and above your custom scripts

Here is the setup portion of the script it is pretty much self explanatory

Code:
#--------------------------------------------------------------------------
  # * Elemental Rates
  #   - syntax: Element_Id => [A, B, C, D, E, F]
  #--------------------------------------------------------------------------
  Elemental = {
  1 => [1000, 500, 200, 100, 0, -100]
  }
  #--------------------------------------------------------------------------
  # * Default Elemental Rate
  #   - syntax: [A, B, C, D, E, F]
  #--------------------------------------------------------------------------
  Elemental.default = [200,150,100,50,0,-100]
  #--------------------------------------------------------------------------
  # * State Rates
  #   - syntax: Element_Id => [A, B, C, D, E, F]
  #--------------------------------------------------------------------------
  States = {
  }
  #--------------------------------------------------------------------------
  # * Default State Rate
  #   - syntax: [A, B, C, D, E, F]
  #--------------------------------------------------------------------------
  States.default = [100,80,60,40,20,0]


FAQ
Note: Permission granted by Trickster to post:
Quote:And if you post what you have now of my stuff then you don't have the latest versions. I'm too lazy/busy to post stuff.
As this is his material, it is deletable upon his request. Due to his current absense, no support is available. Please do not PM or eMail him for support.


Compatibility
The methods Game_Battler#states_plus, Game_Actor#element_rate, and Game_Enemy#element_rate were modified


Author's Notes
This is the rescripted version of this script since I don't have access to the version I had before the hack.

If anyone has the other version that was posted before the hack contact me with the script, though this isn't very important but would be appreciated.


Terms and Conditions
Hey, I posted this publicly. You can use it. What do you expect? But if you do use it, I do expect you to spell my name correctly in your game. And yes you can use it in commercial games too.
Reply }


Possibly Related Threads…
Thread Author Replies Views Last Post
   Elemental Alignment Trickster 4 8,433 05-14-2010, 05:22 PM
Last Post: yamina-chan
   States Activation System aka State-Based Passive Augments, Version 0.2 Charlie Fleed 7 12,829 03-06-2010, 09:26 PM
Last Post: fgsfds
   AKM Add-On #1: NF Key State Detection DerVVulfman 0 4,704 03-05-2008, 06:39 AM
Last Post: DerVVulfman
   Elemental Damage Fix RPG Advocate 0 5,111 03-03-2008, 05:13 AM
Last Post: RPG Advocate
   State Cycling Trickster 0 4,876 03-02-2008, 06:54 AM
Last Post: Trickster



Users browsing this thread: 1 Guest(s)