UltimaForum

Skrypty [VX] - Wampiryczne Bronie

Angius - Sro 22 Cze, 2011 11:49
Temat postu: Wampiryczne Bronie
≡Vampyric Weapons≡


Opis:
Ten skrypt pozwala na wysysanie życia lub many przeciwnikowi na zasadzie iluś procent z zadanych obrażeń. Można stosować również u przeciwników - będą mogli wysysać nam życie.

Info:
Autor: Shanghai
Tłumaczenie: Angius

Skrypt:
Spoiler:

Kod:

#===============================================================================
#
# Shanghai Simple Script - Vampiric Weapons
# 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 tak 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
 
#==============================================================================
# ** 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
  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
    @mp_damage += attacker.siphonic_rate
    @siphonic = [@mp_damage, self.mp, attacker.siphonic_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
    @mp_damage += user.siphonic_rate
    @siphonic = [@mp_damage, self.mp, user.siphonic_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
  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
#
#===============================================================================



Screeny:
Screeny czego, notatek broni?

Mantiq - Sro 22 Cze, 2011 14:15

Angius napisał/a:
Screeny:
Screeny czego, notatek broni?


Dokładnie.

Angius - Sro 22 Cze, 2011 14:18

Kod:
# <vampiric: x%>
# Umieść ten tag w notatkach broni a stanie się ona wampiryczną.
# Ten tag 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ę.

A to nie wystarczy kod skryptu?

MrBoomGood - Sro 22 Cze, 2011 19:08

Nie wiem co powiedziec... Może wystarczy "Dziękuje"? Dzięki! Na pewno użyje w projekcie :)
MrDawnok - Sob 25 Cze, 2011 10:29

Skrypt spoko akurat robię grę o wampirach więc się przyda :-)

Powered by phpBB modified by Przemo © 2003 phpBB Group