Partagez
Aller en bas
vickymichaelis
vickymichaelis
Membre

Nombre de messages : 319
Age : 26
Localisation : dans un fromage
Distinction : aucune
Date d'inscription : 15/01/2013

infective state Empty infective state

le Lun 18 Nov 2013 - 13:29
Infective State

Auteur/Crédit : Yami
Effet : Ce script permet de rendre un état infectieux.
Prérequis : Aucun.
Compatibilité : Pas de conflits signalés.

Ce que le script permet :
Rendre un état infectieux : Il se propage au bout de x tours sur tous les alliés du personnage affecté, ou tout ses ennemis.
L'état propagé peut être différent de l'état infectieux.

Exemple d'utilisation :

Dans le NoteBox d'un état, placer :

Code:
<infect ally: x,y>
x est le nombre de tours qu'il faudra pour que l'infection est lieu.
y est l'état qui sera ainsi propagé (il peut donc être le même ou non).
Admettons que l'on associe ceci à un état "Poison" (2 par défaut) :

Code:
<infect ally: 5, 2>
Si un personnage subit "Poison", tous ses alliés le subirons à leur tour au bout de 5 tours (il faut bien entendu que l'état sois encore présent, donc non soigné, etc).


script:
#==============================================================================
#
# ¥ YSA Battle Add-On: Infective State
# -- Last Updated: 2011.12.24
# -- Level: Easy
# -- Requires: none
#
#==============================================================================

$imported = {} if $imported.nil?
$imported["YSA-InfectiveState"] = true

#==============================================================================
# ¥ Updates
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2011.12.24 - Started Script and Finished.
#
#==============================================================================
# ¥ Introduction
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script will make a state becomes infective, which like a virus, it will
# infect other battlers.
#
#==============================================================================
# ¥ Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# To install this script, open up your script editor and copy/paste this script
# to an open slot below ¥ Materials/‘fÞ but above ¥ Main. Remember to save.
#
# -----------------------------------------------------------------------------
# State Notetags - These notetags go in the state notebox in the database.
# -----------------------------------------------------------------------------
#
# This state will infect after x turns, and will add state y to infected unit.
#
#
# This state will infect after x turns, and will add state y to infected unit.
#
#==============================================================================
# ¥ Compatibility
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
# it will run with RPG Maker VX without adjusting.
#
#==============================================================================

#==============================================================================
# ¥ Editting anything past this point may potentially result in causing
# computer damage, incontinence, explosion of user's head, coma, death, and/or
# halitosis so edit at your own risk.
#==============================================================================

module YSA
 module REGEXP
 module STATE
   
 INFECT_ALLY = /<(?:INFECT_ALLY|infect ally):[ ](\d+)?,[ ](\d+)?>/i
  INFECT_ENEMY = /<(?:INFECT_ENEMY|infect enemy):[ ](\d+)?,[ ](\d+)?>/i
   
 end # STATE
 end # REGEXP
end # YSA

#==============================================================================
# ¡ DataManager
#==============================================================================

module DataManager
 
 #--------------------------------------------------------------------------
 # alias method: load_database
 #--------------------------------------------------------------------------
 class < def self.load_database
   load_database_infst
   load_notetags_infst
 end
 
 #--------------------------------------------------------------------------
 # new method: load_notetags_infst
 #--------------------------------------------------------------------------
 def self.load_notetags_infst
   groups = [$data_states]
   for group in groups
     for obj in group
       next if obj.nil?
       obj.load_notetags_infst
     end
   end
 end
 
end # DataManager

#==============================================================================
# ¡ RPG::State
#==============================================================================

class RPG::State < RPG::BaseItem
 
 #--------------------------------------------------------------------------
 # public instance variables
 #--------------------------------------------------------------------------
 attr_accessor :infect_turn_a
 attr_accessor :infect_turn_e
 attr_accessor :infect_state_a
 attr_accessor :infect_state_e
 
 #--------------------------------------------------------------------------
 # common cache: load_notetags_staura
 #--------------------------------------------------------------------------
 def load_notetags_infst
   #---
   self.note.split(/[\r\n]+/).each { |line|
     case line
     #---
     when YSA::REGEXP::STATE::INFECT_ALLY
       @infect_turn_a = $1.to_i
       @infect_state_a = $2.to_i
     when YSA::REGEXP::STATE::INFECT_ENEMY
       @infect_turn_e = $1.to_i
       @infect_state_e = $2.to_i
     end
   } # self.note.split
   #---
 end
 
end # RPG::State

#==============================================================================
# ¡ Game_Battler
#==============================================================================

class Game_Battler < Game_BattlerBase

 #--------------------------------------------------------------------------
 # alias method: add_state
 #--------------------------------------------------------------------------
 alias infect_add_state add_state
 def add_state(state_id)
   infect_add_state(state_id)
   if $data_states[state_id].infect_turn_a || $data_states[state_id].infect_turn_e
     @infect_turn_a = [] if @infect_turn_a == nil
     @infect_turn_e = [] if @infect_turn_e == nil
     @infect_turn_a[state_id] = $data_states[state_id].infect_turn_a
     @infect_turn_e[state_id] = $data_states[state_id].infect_turn_e
   end
 end
 
 #--------------------------------------------------------------------------
 # alias method: remove_state
 #--------------------------------------------------------------------------
 alias infect_remove_state remove_state
 def remove_state(state_id)
   infect_remove_state(state_id)
   @infect_turn_a[state_id] = nil if @infect_turn_a != nil
   @infect_turn_e[state_id] = nil if @infect_turn_e != nil
 end
 
 #--------------------------------------------------------------------------
 # alias method: on_turn_end
 #--------------------------------------------------------------------------
 alias infect_on_turn_end on_turn_end
 def on_turn_end
   infect_on_turn_end
   update_state_infect
 end
 
 #--------------------------------------------------------------------------
 # new method: update_state_infect
 #--------------------------------------------------------------------------
 def update_state_infect
   for state in states
     if $data_states[state.id].infect_turn_a || $data_states[state.id].infect_turn_e
       if $data_states[state.id].infect_turn_a
         @infect_turn_a[state.id] -= 1
         if @infect_turn_a[state.id] <= 0
           shuffle = $game_party.members.dup
           shuffle = shuffle.shuffle
           for member in shuffle
             next if member == nil
             next if member.state?(state)
             next if member.dead?
             member.add_state(state.infect_state_a)
           end
           shuffle.clear
           shuffle = nil
         end
       end
       if $data_states[state.id].infect_turn_e
         @infect_turn_e[state.id] -= 1
         if @infect_turn_e[state.id] <= 0
           shuffle = $game_troop.members.dup
           shuffle = shuffle.shuffle
           for member in shuffle
             next if member == nil
             next if member.state?(state)
             next if member.dead?
             member.add_state(state.infect_state_e)
           end
           shuffle.clear
           shuffle = nil
         end
       end
     end
   end
 end
 
end # Game_Battler

#==============================================================================
#
# ¥ End of File
#
#==============================================================================

Crayt
Crayt
Membre

Nombre de messages : 216
Age : 20
Localisation : Devant mon ordinateur
Distinction : aucune
Date d'inscription : 28/10/2013

infective state Empty Re: infective state

le Lun 18 Nov 2013 - 13:34
Merci du partage !
Néocia
Néocia
Membre

Nombre de messages : 42
Age : 20
Localisation : Au chaud :3
Distinction : aucune
Date d'inscription : 16/11/2013

infective state Empty Re: infective state

le Lun 18 Nov 2013 - 22:08
Un script qui à l'air très utile !!

À voir c: !!
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum