Ultima Forum

Pełna wersja: Wampiryzm
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam.
Poszukuję osoby chętnej, która podjęłaby się edycji pewnego skryptu, lub która podsunie mi inne rozwiązanie.
Używam skryptu "Vampyric Weapons" autorstwa Shanghai.
http://www.ultimateam.pl/viewtopic.php?t=7102
Interesuje mnie coś identycznego, tylko urozmaicone o stany. Jeśli bohater znajdzie się w danym stanie to wysysa x% życia z przeciwnika.
Z góry dziękuję i pozdrawiam. :)
Zastąp skrypt poniższym:
Kod:
#===============================================================================​
# Shanghai Simple Script - Vampiric Weapons + States
# Last Date Updated: 2010.06.21
# Level: Normal
#
# Ten skrypt może dać broniom zdolności wampiryczne. Bronie wampiryczne
# będą absorbowały życie miast je zmniejszać. Bronie Syphioniczne są również
# dostępne i wysysają manę miast życia. Wampiryczne i Syphioniczne bronie
# nie mogą wysysać więcej HP lub MP niż ma przeciwnik. This attribute will also affect
# physical attack skills or items unless they already have absorbing.
# (ostatnie zdanie to coś o absorbowaniu w skillach bodaj)
#===============================================================================​
# Instrukcje
# -----------------------------------------------------------------------------
# Wklej skrypt nad MAIN do sekcji MATERIALS
#
# <vampiric: x%>
# Umieść ten tag w notatkach broni a stanie się ona wampiryczną.
# Ten atak wyssie x% zadanych obrażeń. Umieść w notatkach wroga
# by również dać mu zdolności wampiryczne.
#
# <siphonic: x>
# Działa jak powyższe, tylko na manę.
#===============================================================================​
  
$imported = {} if $imported == nil
$imported["VampiricWeapons"] = true
  
#==============================================================================
# RPG::Weapon
#==============================================================================
  
class RPG::Weapon < RPG::BaseItem
  #--------------------------------------------------------------------------
  # * Vampiric
  #--------------------------------------------------------------------------
  def vampiric
    return @vampiric if @vampiric != nil
    @vampiric = 0
    self.note.split(/[\r\n]+/).each { |line|
      case line
      when /<(?:VAMPIRIC|vampire):[ ]*(\d+)([%%])>/i
        @vampiric = $1.to_i
      end
    }
    return @vampiric
  end
  #--------------------------------------------------------------------------
  # * Siphonic
  #--------------------------------------------------------------------------
  def siphonic
    return @siphonic if @siphonic != nil
    @siphonic = 0
    self.note.split(/[\r\n]+/).each { |line|
      case line
      when /<(?:SIPHONIC|siphon):[ ]*(\d+)>/i
        @siphonic = $1.to_i
      end
    }
    return @siphonic
  end
end
  
#==============================================================================
# RPG::Enemy
#==============================================================================
  
class RPG::Enemy
  #--------------------------------------------------------------------------
  # * Vampiric
  #--------------------------------------------------------------------------
  def vampiric
    return @vampiric if @vampiric != nil
    @vampiric = 0
    self.note.split(/[\r\n]+/).each { |line|
      case line
      when /<(?:VAMPIRIC|vampire):[ ]*(\d+)([%%])>/i
        @vampiric = $1.to_i
      end
    }
    return @vampiric
  end
  #--------------------------------------------------------------------------
  # * Siphonic
  #--------------------------------------------------------------------------
  def siphonic
    return @siphonic if @siphonic != nil
    @siphonic = 0
    self.note.split(/[\r\n]+/).each { |line|
      case line
      when /<(?:SIPHONIC|siphon):[ ]*(\d+)>/i
        @siphonic = $1.to_i
      end
    }
    return @siphonic
  end
end
  
class RPG::State
  #--------------------------------------------------------------------------
  # * Vampiric
  #--------------------------------------------------------------------------
  def vampiric
    return @vampiric if @vampiric != nil
    @vampiric = 0
    self.note.split(/[\r\n]+/).each { |line|
      case line
      when /<(?:VAMPIRIC|vampire):[ ]*(\d+)([%%])>/i
        @vampiric = $1.to_i
      end
    }
    return @vampiric
  end
  #--------------------------------------------------------------------------
  # * Siphonic
  #--------------------------------------------------------------------------
  def siphonic
    return @siphonic if @siphonic != nil
    @siphonic = 0
    self.note.split(/[\r\n]+/).each { |line|
      case line
      when /<(?:SIPHONIC|siphon):[ ]*(\d+)>/i
        @siphonic = $1.to_i
      end
    }
    return @siphonic
  end
end

#==============================================================================
# ** Game_Battler
#==============================================================================
  
class Game_Battler
  #--------------------------------------------------------------------------
  # * Clear Variable for Storing Action Results
  #--------------------------------------------------------------------------
  alias clear_action_results_sss_vampire_weapons clear_action_results unless $@
  def clear_action_results
    clear_action_results_sss_vampire_weapons
    @vampiric = 0
    @siphonic = 0
    @vampiric_state = 0
    @siphonic_state = 0
  end
  #--------------------------------------------------------------------------
  # * Calculation of Damage From Normal Attack
  #--------------------------------------------------------------------------
  alias make_attack_damage_value_sss_vampire_weapons make_attack_damage_value
  def make_attack_damage_value(attacker)
    make_attack_damage_value_sss_vampire_weapons(attacker)
    @vampiric = [@hp_damage * attacker.vampiric_rate / 100, self.hp].min
    @vampiric_state = [@hp_damage * attacker.vampiric_state_rate / 100, self.hp].min
    @mp_damage += attacker.siphonic_rate
    @mp_damage += attacker.siphonic_state_rate
    @siphonic = [@mp_damage, self.mp, attacker.siphonic_rate].min
    @siphonic_state = [@mp_damage, self.mp, attacker.siphonic_state_rate].min
  end
  #--------------------------------------------------------------------------
  # * Calculation of Damage Caused by Skills or Items
  #--------------------------------------------------------------------------
  alias make_obj_damage_value_sss_vampire_weapons make_obj_damage_value
  def make_obj_damage_value(user, obj)
    make_obj_damage_value_sss_vampire_weapons(user, obj)
    return if @absorbed
    return unless obj.physical_attack
    @vampiric = [@hp_damage * user.vampiric_rate / 100, self.hp].min
    @vampiric_state = [@hp_damage * user.vampiric_state_rate / 100, self.hp].min
    @mp_damage += user.siphonic_rate
    @mp_damage += attacker.siphonic_state_rate
    @siphonic = [@mp_damage, self.mp, user.siphonic_rate].min
    @siphonic_state = [@mp_damage, self.mp, user.siphonic_state_rate].min
  end
  #--------------------------------------------------------------------------
  # * Damage Reflection
  #--------------------------------------------------------------------------
  alias execute_damage_sss_vampire_weapons execute_damage unless $@
  def execute_damage(user)
    execute_damage_sss_vampire_weapons(user)
    user.hp += @vampiric if @vampiric > 0
    user.mp += @siphonic if @siphonic > 0    
    if $imported["BattleEngineMelody"] and @vampiric > 0
      value = sprintf(YEM::BATTLE_ENGINE::POPUP_SETTINGS[:hp_heal], @vampiric)
      rules = "HP_HEAL"
      user.create_popup(value, rules)
    end
    if $imported["BattleEngineMelody"] and @siphonic > 0
      value = sprintf(YEM::BATTLE_ENGINE::POPUP_SETTINGS[:mp_heal], @siphonic)
      rules = "MP_HEAL"
      user.create_popup(value, rules)
    end
    user.hp += @vampiric_state if @vampiric_state > 0
    user.mp += @siphonic_state if @siphonic_state > 0
  end
  #--------------------------------------------------------------------------
  # * Vampiric Rate
  #--------------------------------------------------------------------------
  def vampiric_state_rate
    result = 0
    for state in states
      result += state.vampiric
    end
    return [result, 0].max
  end
  #--------------------------------------------------------------------------
  # * Siphonic Rate
  #--------------------------------------------------------------------------
  def siphonic_state_rate
    result = 0
    for state in states
      result += state.siphonic
    end
    return [result, 0].max
  end
end
  
#==============================================================================
# ** Game_Actor
#==============================================================================
  
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # * Vampiric Rate
  #--------------------------------------------------------------------------
  def vampiric_rate
    result = 0
    for weapon in weapons.compact
      result += weapon.vampiric
    end
    return [result, 0].max
  end
  #--------------------------------------------------------------------------
  # * Siphonic Rate
  #--------------------------------------------------------------------------
  def siphonic_rate
    result = 0
    for weapon in weapons.compact
      result += weapon.siphonic
    end
    return [result, 0].max
  end
end
  
#==============================================================================
# ** Game_Enemy
#==============================================================================
  
class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # * Vampiric Rate
  #--------------------------------------------------------------------------
  def vampiric_rate
    return [enemy.vampiric, 0].max
  end
  #--------------------------------------------------------------------------
  # * Siphonic Rate
  #--------------------------------------------------------------------------
  def siphonic_rate
    return [enemy.siphonic, 0].max
  end
end
  
#===============================================================================​
# END OF FILE
#===============================================================================​
Zalecane dokładne testy.
Działa!
Dziękuje Ci Ayene :*
Jesteś wielka. biggrin
Przekierowanie