Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #==============================================================================
- # % based weapons states rates
- # By gerkrt/gerrtunk
- # Version: 1.0
- # License: GPL, credits
- # Date: 23/12/2010
- # IMPORTANT NOTE: to acces the more actualitzed or corrected version of this
- # script check here: http://usuarios.multimania.es/kisap/english_list.html
- #==============================================================================
- =begin
- --------Introduction-----------
- Normally you can add any combination of states for weapons,
- but you dont have any other control. With this you can use any state based on %.
- You can ask for bugs, suggerences, compatibilitzations and any other things.
- -------In the future------------
- Im going to add complete armors suport, and also, a elements equivalent.
- ------Instructions-------------
- The % means the posibilities that have the state to impact the enemy. After that
- impact, the traditional formula(versus random+abdce) is applied. It works like
- old rpgmakers state affliction.
- weapon_id=>[[state_id1, posibility], [state_id2, posibility]]
- Weap_state_rates = {3=>[[2, 100], [4,100]], 11=>[[2, 100], [4,100]] }
- You can add any number of states for weapon, and weapons, just add a , before these.
- and respect the {}.
- ---------Syntax notes--------------
- You can divide long linges like this:
- Weap_state_rates = {3=>[[2, 100], [4,100]],
- 11=>[[2, 100], [4,100]] ,
- 15=>[[2, 100], [4,100]] }
- See that the new line have to be after a , and that the final one dont put a
- final ,.
- =end
- module Wep
- Weap_state_rates = {3=>[[2, 100], [4,100]], 11=>[[2, 100], [4,100]] }
- end
- class Game_Battler
- #--------------------------------------------------------------------------
- # * Applying Normal Attack Effects
- # attacker : battler
- # moded to use unique states rates
- #--------------------------------------------------------------------------
- def attack_effect(attacker)
- # Clear critical flag
- self.critical = false
- # First hit detection
- hit_result = (rand(100) < attacker.hit)
- # If hit occurs
- if hit_result == true
- # Calculate basic damage
- atk = [attacker.atk - self.pdef / 2, 0].max
- self.damage = atk * (20 + attacker.str) / 20
- # Element correction
- self.damage *= elements_correct(attacker.element_set)
- self.damage /= 100
- # If damage value is strictly positive
- if self.damage > 0
- # Critical correction
- if rand(100) < 4 * attacker.dex / self.agi
- self.damage *= 2
- self.critical = true
- end
- # Guard correction
- if self.guarding?
- self.damage /= 2
- end
- end
- # Dispersion
- if self.damage.abs > 0
- amp = [self.damage.abs * 15 / 100, 1].max
- self.damage += rand(amp+1) + rand(amp+1) - amp
- end
- # Second hit detection
- eva = 8 * self.agi / attacker.dex + self.eva
- hit = self.damage < 0 ? 100 : 100 - eva
- hit = self.cant_evade? ? 100 : hit
- hit_result = (rand(100) < hit)
- end
- # If hit occurs
- if hit_result == true
- # State Removed by Shock
- remove_states_shock
- # Substract damage from HP
- self.hp -= self.damage
- # State change
- @state_changed = false
- # Check to add unique states for weapons
- if attacker.is_a? Game_Actor and Wep::Weap_state_rates[attacker.weapon_id] != nil
- state_list = []
- # Loop over state rates and check the posibiltys. Create a state list.
- for state_rate in Wep::Weap_state_rates[attacker.weapon_id]
- if rand(100) < state_rate[1]
- state_list.push(state_rate[0])
- end
- end
- states_plus(state_list)
- else
- states_plus(attacker.plus_state_set)
- states_minus(attacker.minus_state_set)
- end
- # When missing
- else
- # Set damage to "Miss"
- self.damage = "Miss"
- # Clear critical flag
- self.critical = false
- end
- # End Method
- return true
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement