Partagez
Aller en bas
doddy
doddy
Membre

Nombre de messages : 15
Age : 33
Distinction : aucune
Date d'inscription : 19/02/2010

Calcule des dégâts Empty Calcule des dégâts

le Mar 13 Avr 2010 - 12:18
Bonjour, ce script permet de modifier la façon dont sont calculés les dégâts causés par une attaque normale uniquement par les persos.
N'ayant trouvé que des scripts qui modifiaient les dégât causés par les skill et par les items que ce soit un monstre ou un perso c'était la même chose, je me suis un peut tiré les cheveux et j'ai conçu celui-ci.

Auteur : Doddy
Version : V1.0
Explication : Ce script permet de modifier la façon dont sont calculé les dégâts causé par une attaque standard par un membre de votre équipe.
Installation : à placer en dessous de tout vos script ajoutés.
Conseils : Je vous conseil d'utiliser le Mode 1 ,5 ou 6 qui distribuent des dégâts de façon raisonnable.
En développement : La V1.2 qui permettra de passer directement par les commentaires des armes, pour changer la méthode de calcule des dégâts.
Configuration : Tout est expliqué dans les commentaires du script vous n'avez qu'a lire.
Compatibilité : Compatible avec une grande partie des script de KGC et de Yanfly.


script :

Code:

#=============================================
# Utilité :Permet de modifier les méthodes de calcule des
# dégâts causés par les attaques normales                         
# Auteur : Doddy
# Date : 17/03/2010
# Version : V1.0
#
#=============================================

module BATTLE
   
# La valeur de MAX_DMG permet de modifier la valeur maximum des dégâts.
# Exemple:
# Si MAX_DMG = 99999 et que la méthode de calcule indique que les dégâts sont de 185000,
# ca n'affichera pas plus de 99999 points de dégâts.
      MAX_DMG = 99999    # Dégâts maximum
     
# La valeur de MIN_DMG permet de modifier la valeur minimum des dégâts.
# Exemple:
# Si MIN_DMG = 430 et que la méthode de calcule indique que les dégâts sont de 320,
# les dégâts réels seront alors de 430.     
      MIN_DMG = 0        #Dégâts minimum
     
# LA valeur de CRI_DMG est le coefficient multiplicateur en cas de dommage critique.     
# Par défaut cette valeur est de 3 c'est à dire qu'un coup critique correspond,
# à 3 fois la valeur des dégâts infligés lors d'une attaque normale.     
      CRI_DMG = 3
     
# La valeur de VAR_DMG est un %, pour éviter que les dégâts soient toujours les même sur un même monstre
# on applique cette variation dans la méthode de calcule.
# Exemple :
# Si VAR_DMG = 20 et que les dégâts calculés par la méthode de calcule sont de 35000
# Puisque : (35000 * 20)/100 = 7000
# Alors les dégâts réels seront compris entre 35000 - 7000 et 35000 + 7000
# Donc les dégâts infligés seront compris entre 28000 et 42000
# Par défaut dans rpg maker VX cette variation est de 20.
      VAR_DMG = 20     
   
# La valeur de MODE permet de choisir la méthode de calcule des dégâts uniquement pour les attaques normales des persos.
# Ca ne modifie pas la méthode de calcule des dégâts pour les attaques normales des monstres.
# Changez la valeur de MODE, en fonction de ce que vous souhaitez voir appliquer comme méthode de calcule.
# MODE = 0    # la méthode de calcule est celle de base. mais vous pouvez néanmoins modifier
                          # VAR_DMG, MIN_DMG, MAX_DMG et CRI_DMG.
# MODE = 1    # les dégâts sont = aux hp du persos - (la défense de l'ennemi * 2).
# MODE = 2    # les dégâts sont = aux hp maximum du perso - (la défense de l'ennemi * 2).
# MODE = 3    # les dégâts sont = (au lvl du perso * par ses hp actuel ) - (la defense de l'ennemi * 2).
# MODE = 4    # les dégâts sont  = (au lvl du perso * par ses hp maximum) - (la défense de l'ennemi * 2).
# MODE = 5    # les dégâts sont = ((à la force du perso * par son agilité) - (la defense de l'ennemi * 2)) /100
# MODE = 6    # les dégâts sont = (au lvl du perso * par la force du perso ) - (la defense de l'ennemi * 2).
      MODE = 1
     
end# module BATTLE
   
class Game_Battler
 
  def make_attack_damage_value(attacker)
   
#============================================
#                                  MODE = 0
#============================================
if BATTLE::MODE == 0   
if attacker.is_a?(Game_Actor) && self.is_a?(Game_Enemy)
    damage = attacker.atk * 4 - self.def * 2       
    damage = 0 if damage < 0                       
    damage *= elements_max_rate(attacker.element_set) 
    damage /= 100
    if damage == 0                               
      damage = rand(2)                       
    elsif damage > 0                           
      @critical = (rand(100) < attacker.cri)       
      @critical = false if prevent_critical       
      damage *= BATTLE::CRI_DMG if @critical                     
    end
    damage = apply_variance(damage, BATTLE::VAR_DMG)           
    damage = apply_guard(damage)                   
    damage = BATTLE::MIN_DMG if damage < BATTLE::MIN_DMG
    damage = BATTLE::MAX_DMG if damage > BATTLE::MAX_DMG
    @hp_damage = damage
  end
end   
#============================================
#                                  MODE = 1
#============================================
if BATTLE::MODE == 1   
if attacker.is_a?(Game_Actor) && self.is_a?(Game_Enemy)
    damage = attacker.hp
    damage -= self.def * 2
    damage *= elements_max_rate(attacker.element_set)
    damage /= 100
    if damage == 0                               
      damage = rand(2)                           
    elsif damage > 0       
      @critical = (rand(100) < attacker.cri)
      @critical = false if prevent_critical
      damage *= BATTLE::CRI_DMG if @critical
    end
    damage = apply_variance(damage, BATTLE::VAR_DMG)
    damage = apply_guard(damage)
    damage = BATTLE::MIN_DMG if damage < BATTLE::MIN_DMG
    damage = BATTLE::MAX_DMG if damage > BATTLE::MAX_DMG
    @hp_damage = damage
  end
end
#============================================
#                                  MODE = 2
#============================================
if BATTLE::MODE == 2   
if attacker.is_a?(Game_Actor) && self.is_a?(Game_Enemy)
    damage = attacker.maxhp
    damage -= self.def * 2
    damage *= elements_max_rate(attacker.element_set)
    damage /= 100
    if damage == 0                               
      damage = rand(2)                           
    elsif damage > 0       
      @critical = (rand(100) < attacker.cri)
      @critical = false if prevent_critical
      damage *= BATTLE::CRI_DMG if @critical
    end
    damage = apply_variance(damage, BATTLE::VAR_DMG)
    damage = apply_guard(damage)
    damage = BATTLE::MIN_DMG if damage < BATTLE::MIN_DMG
    damage = BATTLE::MAX_DMG if damage > BATTLE::MAX_DMG
    @hp_damage = damage
  end
end
#============================================
#                                  MODE = 3
#============================================
if BATTLE::MODE == 3   
if attacker.is_a?(Game_Actor) && self.is_a?(Game_Enemy)
    damage = attacker.level * attacker.hp
    damage -= self.def * 2
    damage *= elements_max_rate(attacker.element_set)
    damage /= 100
    if damage == 0                               
      damage = rand(2)                           
    elsif damage > 0       
      @critical = (rand(100) < attacker.cri)
      @critical = false if prevent_critical
      damage *= BATTLE::CRI_DMG if @critical
    end
    damage = apply_variance(damage, BATTLE::VAR_DMG)
    damage = apply_guard(damage)
    damage = BATTLE::MIN_DMG if damage < BATTLE::MIN_DMG
    damage = BATTLE::MAX_DMG if damage > BATTLE::MAX_DMG
    @hp_damage = damage
  end
end
#============================================
#                                  MODE = 4
#============================================
if BATTLE::MODE == 4   
if attacker.is_a?(Game_Actor) && self.is_a?(Game_Enemy)
    damage = attacker.level * attacker.maxhp
    damage -= self.def * 2
    damage *= elements_max_rate(attacker.element_set)
    damage /= 100
    if damage == 0                               
      damage = rand(2)                           
    elsif damage > 0       
      @critical = (rand(100) < attacker.cri)
      @critical = false if prevent_critical
      damage *= BATTLE::CRI_DMG if @critical
    end
    damage = apply_variance(damage, BATTLE::VAR_DMG)
    damage = apply_guard(damage)
    damage = BATTLE::MIN_DMG if damage < BATTLE::MIN_DMG
    damage = BATTLE::MAX_DMG if damage > BATTLE::MAX_DMG
    @hp_damage = damage
  end
end
#============================================
#                                  MODE = 5
#============================================
if BATTLE::MODE == 5   
if attacker.is_a?(Game_Actor) && self.is_a?(Game_Enemy)
    damage = attacker.atk * attacker.agi - self.def * 2
    damage /= 100
    damage *= elements_max_rate(attacker.element_set)
    damage /= 100
    if damage == 0                               
      damage = rand(2)                           
    elsif damage > 0       
      @critical = (rand(100) < attacker.cri)
      @critical = false if prevent_critical
      damage *= BATTLE::CRI_DMG if @critical
    end
    damage = apply_variance(damage, BATTLE::VAR_DMG)
    damage = apply_guard(damage)
    damage = BATTLE::MIN_DMG if damage < BATTLE::MIN_DMG
    damage = BATTLE::MAX_DMG if damage > BATTLE::MAX_DMG
    @hp_damage = damage
  end
end
#============================================
#                                  MODE = 6
#============================================
if BATTLE::MODE == 6   
if attacker.is_a?(Game_Actor) && self.is_a?(Game_Enemy)
    damage = attacker.level * attacker.atk
    damage -= self.def * 2
    damage *= elements_max_rate(attacker.element_set)
    damage /= 100
    if damage == 0                               
      damage = rand(2)                           
    elsif damage > 0       
      @critical = (rand(100) < attacker.cri)
      @critical = false if prevent_critical
      damage *= BATTLE::CRI_DMG if @critical
    end
    damage = apply_variance(damage, BATTLE::VAR_DMG)
    damage = apply_guard(damage)
    damage = BATTLE::MIN_DMG if damage < BATTLE::MIN_DMG
    damage = BATTLE::MAX_DMG if damage > BATTLE::MAX_DMG
    @hp_damage = damage
  end
end
#-----------------------------------------------------------------------------
  if attacker.is_a?(Game_Enemy) && self.is_a?(Game_Actor)
  damage = attacker.atk * 4 - self.def * 2     
    damage = 0 if damage < 0                       
    damage *= elements_max_rate(attacker.element_set) 
    damage /= 100
    if damage == 0                                 
      damage = rand(2)                           
    elsif damage > 0                             
      @critical = (rand(100) < attacker.cri)       
      @critical = false if prevent_critical       
      damage *= 3 if @critical                     
    end
    damage = apply_variance(damage, 20)         
    damage = apply_guard(damage)                 
    @hp_damage = damage                         
  end
end# def make_attack_damage_value(attacker)
end# Game_Battler
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum