Attributs boostés
Auteur: Sh4k4
C'est un de mes vieux scripts que j'avais fait et utilisé pour mon ancien projet, que j'ai abandonné depuis 1an.
Comme ce script ne me sert plus à rien, je le partage ici.
Description : Ce script permet de booster les attributs (éléments) lorsqu'ils sont utilisés.
Plus un héros utilise un attribut, plus son affinité avec ce dernier est grande et plus les dégats seront importants lorsque ce héros utilise cet attribut.
Principe:
Toutes les X utilisations d'un attribut par un héros, les dégats causés par cet attribut pour ce héros sont boostés de Y pourcents.
Explications :1) Installation :
-Copier ce script dans un nouveau script au dessus de Main
2) Utilisation :
-Il n'y a rien à faire, le script est géré automatiquement une fois installé.
3) Configuration
-Régler les variables du "module Attributes" qui se trouve au tout début du script afin de configurer le système selon vos besoins.
Les explications nécessaires sont juste au dessus des variables en question.
Script- Code: Tout sélectionner
#===============================================================================
# ■ Attributs boostés
#-------------------------------------------------------------------------------
# Auteur : Sh4k4
# Version : 1.0
# Logiciel : RMXP
# Date : 21/12/2007
#-------------------------------------------------------------------------------
# Ce script permet de booster les attributs (éléments) lorsqu'ils sont utilisés.
# Plus un héros utilise un attribut, plus son affinité avec ce dernier est grande et
# plus les dégats seront importants lorsque ce héros utilise cet attribut.
#
#Principe:
# Toutes les X utilisations d'un attribut par un héros, les dégats causés par cet attribut pour
# ce héros sont boostés de Y pourcents.
#
# Dépendance :
# - Aucune
#
# Incompatibilités :
# - Scripts réecrivants la méthode elements_correct de Game_Battler.
#
#-------------------------------------------------------------------------------
# Utilisation :
#
# 1) Installation :
# -Copier ce script dans un nouveau script au dessus de Main
#
# 2) Utilisation :
# -Il n'y a rien à faire, le script est géré automatiquement une fois installé.
#
# 3) Configuration
# -Régler les variables du "module Attributes" qui se trouve au tout début du script
# afin de configurer le système selon vos besoins.
#-------------------------------------------------------------------------------
#===============================================================================
# Attributes
#-------------------------------------------------------------------------------
# Le module de configuration du système.
#===============================================================================
#
# COUNT_FOR_RANK_UP : ce nombre correspond au nombre de lancés de sort requit pour
# que l'attribut passe au niveau supérieur.
#
# PERCENT_INCREASE : ce nombre correspond au bonus en % ajouté aux dégats lorsque
# un personnage fait passer un attribut au niveau supérieur.
#
# MAX_RANK : ce nombre correspond au niveau maximum d'amélioration d'un
# attribut. Une fois atteint, l'attribut ne peut plus s'améliorer.
#--------------------------------------------------------------------------------------------------------------------------------------------
module Attributes
COUNT_FOR_RANK_UP = 8
PERCENT_INCREASE = 3
MAX_RANK = 50
# Avec ces valeurs par défaut (8,3,50) les dégats des attributs sont améliorés de 3% toutes
# les 8 utilisations de sort de cet attribut, et le niveau maximum est 50 (donc +150% dégats)
# Chaque personnage possède des niveaux d'attributs qui lui sont propres, ils ne sont pas
# communs aux autres héros.
end
#===============================================================================
# Attribute_Bonus
#-------------------------------------------------------------------------------
# Cette classe contient la liste des attributs de chaque personnage.
#===============================================================================
class Attribute_Bonus
def initialize
@data = []
count = $data_system.elements.size > 200 ? $data_system.elements.size : 200
(0..count).each { |i| @data[i] = Attribute.new(i) }
end
def [](i)
return @data[i]
end
end
#===============================================================================
# Attribute
#-------------------------------------------------------------------------------
# Cette classe définie chaque attribut.
#===============================================================================
class Attribute
attr_accessor :id ; attr_accessor :multiplier ; attr_accessor :count ; attr_accessor :rank
def initialize(i)
@id = i
@multiplier = 0
@count = 0
@rank = 0
end
end
#===============================================================================
# Game_Actor
#-------------------------------------------------------------------------------
# Modification de la classe Game_Actor pour attribuer des attributs propres à chaque héros.
#===============================================================================
class Game_Actor < Game_Battler
attr_accessor :attribute_bonus
alias setup_actor_attribute setup
def setup(actor_id)
@attribute_bonus = Attribute_Bonus.new
setup_actor_attribute(actor_id)
end
def attribute_bonus
@attribute_bonus = Attribute_Bonus.new if @attribute_bonus.nil?
return @attribute_bonus
end
end
#===============================================================================
# Game_Battler
#-------------------------------------------------------------------------------
# Modification de Game_Battler pour à la fois améliorer les attributs lors de l'utilisation
# des compétences, mais aussi pour augmenter les dégats des dites compétences.
#===============================================================================
class Game_Battler
alias skill_effect_attribute skill_effect
def skill_effect(user, skill)
@skill_user = user
skill_effect_attribute(user, skill)
end
def elements_correct(element_set)
if element_set == []
return 100
end
weakest = -100
multiplier = 0
for i in element_set
multiplier = [multiplier, @skill_user.attribute_bonus[i].multiplier].max if @skill_user.is_a?(Game_Actor)
weakest = [weakest, self.element_rate(i)].max
if @skill_user.is_a?(Game_Actor)
@skill_user.attribute_bonus[i].count += 1 if @skill_user.attribute_bonus[i].rank < Attributes::MAX_RANK
if @skill_user.attribute_bonus[i].count == Attributes::COUNT_FOR_RANK_UP
@skill_user.attribute_bonus[i].multiplier += Attributes::PERCENT_INCREASE
@skill_user.attribute_bonus[i].rank += 1
@skill_user.attribute_bonus[i].count = 0
end
end
end
return (weakest + multiplier).to_i
end
end