Ich habe ein Script gefunden, welches ich verwenden will.
Aber das problem ist, dass es ein VX Script ist.
Wie kann ich das Script für den XP verwenden?
Ich habe mal von einem "Konverter" gehört, aber mehr weiß ich auch nicht.
Kennt sich da einer aus bzw. kann mir wer helfen?
MfG Deamonic
Von einem Konverter habe ich nichts gehört, bezweifle das es diesen auch gibt, denn der VX ist anders aufgebaut als der XP. Was für ein Script ist es denn? Vielleicht gibt es ja ein ähliches für den XP...
Automatisch konvertieren geht nicht. Das muss man schon manuell machen. Aber bei einem Kampfsystem könnte das ggf. recht viel Arbeit sein. Du kannst ja das KS-Script mal posten (bitte im Code-Tag!).
Gut hier ist es:
Jeder Spoiler ist ein eigener Script und gehört vor der Main.
Der Spoiler "Requiem ABS 5" ist das eigentliche Kampfsystem.
#==============================================================================
# Requiem Masterpiece
#==============================================================================
# This module is necessary to activate all others scripts of Requiem
#------------------------------------------------------------------------------
module Requiem_Masterpiece
Version = 1.0
@scripts = {}
def self.register(script, version, date)
@scripts[script] = [version, date]
end
def self.enabled?(script, version = nil)
if version != nil and @scripts.include?(script)
return true if @scripts[script][0] >= version
end
return true if @scripts[script] != nil
return false
end
end
#==============================================================================
# Requiem ABS Version 5.0
#==============================================================================
#------------------------------------------------------------------------------
# Credits: Vlad | Email: demon_of_lust@live.com
#------------------------------------------------------------------------------
# To create an enemy, put the following comments in a event on map:
# Enemy X - Change X for a ID of a monster in Database;
# Die Erase - Erase the enemy when it dies;
# Die Self Switch A - Turn On the Self Switch A when enemy dies;
# Die Self Switch B - Turn On the Self Switch B when enemy dies;
# Die Self Switch C - Turn On the Self Switch C when enemy dies;
# Die Self Switch D - Turn On the Self Switch D when enemy dies;
# Die Switch X - Turn On the Switch X when enemy dies;
# Die Variable X - Increase +1 to variable X;
# Follow X - Change X for range of sight of the enemy, to it follow the player automatically
# Kill With Weapon X - The enemy will die only if be attacked with weapon X
# Kill With Skill X - The enemy will die only if be attacked with skill X
# Kill With Item X - The enemy will die only if be attacked with item X
# Object - Makes the enemy be an object, and impossible to kill
# Puzzle - Makes the enemy be an puzzle, it can be killed but allies don't follow it, the damage and hp bar is not showed
# Respawn X - Makes the enemy respawns automatically after X frames
# Boss - Shows the Boss HP Bar
#------------------------------------------------------------------------------
Requiem_Masterpiece.register("Requiem ABS", 5.0, "29/03/2009")
#------------------------------------------------------------------------------
# GENERAL CONFIGURATIONS
#------------------------------------------------------------------------------
module Requiem_ABS
#------------------------------------------------------------------------------
# Right hand attack key:
Right_Attack_Button = Input::Letters["A"]
# Left hand attack and Shield key:
Left_Attack_and_Shield_Button = Input::Letters["S"]
# Skills keys:
Skill_Buttons = [Input::Numberkeys[1], Input::Numberkeys[2], Input::Numberkeys[3]]
# Items keys:
Item_Buttons = [Input::Letters["Q"], Input::Letters["W"], Input::Letters["E"]]
# Text dysplayed when memorize skill or item in a hotkey
Memorize_Text = "Memorized!"
# Attack delay for player (in frames)
Hero_Attack_Time = 60
# Attack delay for enemies (in frames)
Enemy_Attack_Time = 90
# Divide the size of Animation by:
Animations_Divide_By = 3
# Use animations of the weapons? (true = yes / false = no)
Allow_Weapons_Graphics = true
# Use shields? (trus = sim / false = não)
Allow_Shields_Graphics = true
# Allow player to attack using shield in the same time? (true = yes / false = no)
Allow_attack_with_shield = false
# Use combo damage? (true = yes / false = no)
Combo_Damage = true
# Change 40 for animation ID
LevelUp_Animation = 40
# Recovery HP and MP when level-up? (true = yes / false = no)
Recovery_When_UpLevel = true
# Index of the Gold icon:
Gold_Drop_Graphic = 147
# Gold drop rate (in %)
Gold_Drop_Rate = 75
# Time to dropped item auto-erase (in frames):
Drop_Duration_Time = 450
# Show Reward items names? (true = yes / false = no)
Show_Reward = true
# Sound played when gold is dropped:
Drop_Money_SE = "DropMoney"
# Sound played when item is dropped:
Drop_Item_SE = "DropItem"
# Sound played when get item or gold:
Get_Reward_SE = "Getitem"
# Auto generate EXP and Gold Rate? (true = yes / false = no)
Auto_EXP_Gold_Rate = false
# Rate of EXP (in %) that enemy gives on die
EXP_Rate = 5
# Rate of Gold (in %) that enemy gives on die
Gold_Rate = 10
# Damage texts configurations:
Damage_Properties = []
Damage_Properties[1] = "Consolas" # Damage font
Damage_Properties[2] = 20 # Damage font size
Damage_Properties[3] = false # Font in bold? (true = yes / false = no)
Damage_Properties[4] = false # Font in italic? (true = yes / false = no)
Damage_Properties[5] = "Critical" # Critical damage text
Damage_Properties[6] = "Miss" # Miss damage text
Damage_Properties[7] = "Hits" # Hits text
Damage_Properties[8] = "Times New Roman" # Hits font
Damage_Properties[9] = 26 # Hits font size
Damage_Properties[10] = true # Font in bold? (true = yes / false = no)
Damage_Properties[11] = true # Font in italic? (true = yes / false = no)
Damage_Properties[12] = "Combo" # Combo damage text
Damage_Properties[13] = Color.new(255,255,255) # Damage font color
Damage_Properties[14] = Color.new(125,200,120) # Recovery font color
Damage_Properties[15] = Color.new(255,255,128) # Critical damage font color
Damage_Properties[16] = Color.new(245,150,120) # Combo damage font color
Damage_Properties[17] = Color.new(210,160,210) # Hits font color
Damage_Properties[18] = "Guard" # Defense text
Damage_Properties[19] = "Level Up" # Level-Up text
#------------------------------------------------------------------------------
end
#==============================================================================
#------------------------------------------------------------------------------
# Module RPG
#------------------------------------------------------------------------------
module RPG
class State
def animation_id
self.note.each_line { |line|
return line.gsub('Animation = ', '').to_i if line.include?('Animation = ')
}
return 0
end
def walk_slower?
self.note.each_line { |line| return true if line.include?("Walk Slower") }
return false
end
def walk_faster?
self.note.each_line { |line| return true if line.include?("Walk Faster") }
return false
end
def dont_walk?
self.note.each_line { |line| return true if line.include?("Don't Walk") }
return false
end
def duration
self.note.each_line { |line|
return line.gsub('Duration = ', '').to_i if line.include?('Duration = ')
}
return 300
end
end
class BaseItem
def ranged?
self.note.each_line { |line| return true if line.include?("Ranged") }
return false
end
def explosive?
self.note.each_line { |line| return true if line.include?("Explosive") }
return false
end
def bomb?
self.note.each_line { |line| return true if line.include?("Bomb") }
return false
end
def graphic
self.note.each_line { |line|
return line.gsub!('Graphic = ', '').chomp if line.include?('Graphic = ')
}
return ""
end
def index
self.note.each_line { |line|
return line.gsub('Index = ', '').to_i if line.include?('Index = ')
}
return 0
end
def move_speed
self.note.each_line { |line|
return line.gsub('Speed = ', '').to_i if line.include?('Speed = ')
}
return 4
end
def range
self.note.each_line { |line|
return line.gsub('Range = ', '').to_i if line.include?('Range = ')
}
return 5
end
def delay
self.note.each_line { |line|
return line.gsub('Delay = ', '').to_i if line.include?('Delay = ')
}
return 60
end
def area
self.note.each_line { |line|
return line.gsub('Area = ', '').to_i if line.include?('Area = ')
}
return 3
end
def shot_se
self.note.each_line { |line|
return line.gsub('Shot SE = ', '').to_s if line.include?('Shot SE = ')
}
return nil
end
def combo_hits
self.note.each_line { |line|
return line.gsub('Combo Hits = ', '').to_i if line.include?('Combo Hits = ')
}
return 5
end
def combo_rate
self.note.each_line { |line|
return line.gsub('Combo Rate = ', '').to_i if line.include?('Combo Rate = ')
}
return 75
end
def ammo1
self.note.each_line { |line|
return $data_items[line.gsub('Ammo1 = ', '').to_i] if line.include?('Ammo1 = ')
}
return nil
end
def ammo2
self.note.each_line { |line|
return $data_items[line.gsub('Ammo2 = ', '').to_i] if line.include?('Ammo2 = ')
}
return nil
end
def defense_rate
self.note.each_line { |line|
return line.gsub('Defense Rate = ', '').to_i if line.include?('Defense Rate = ')
}
return 50
end
end
end
#------------------------------------------------------------------------------
# Game Battler
#------------------------------------------------------------------------------
class Game_Battler
attr_accessor (:damage, :critical, :combo, :state_turns, :defending, :piece)
alias requiem_abs_gbattler_execute_damage execute_damage
alias requiem_abs_gbattler_make_obj_damage_value make_obj_damage_value
def attack_effect(attacker)
clear_action_results
unless attack_effective?(attacker)
@skipped = true
@damage = Requiem_ABS::Damage_Properties[6]
return
end
if rand(100) >= calc_hit(attacker)
@missed = true
@damage = Requiem_ABS::Damage_Properties[6]
return
end
if rand(100) < calc_eva(attacker)
@evaded = true
@damage = Requiem_ABS::Damage_Properties[6]
return
end
make_attack_damage_value(attacker)
execute_damage(attacker)
if @hp_damage == 0
return
end
apply_state_changes(attacker)
end
def skill_effect(user, skill)
clear_action_results
unless skill_effective?(user, skill)
@skipped = true
@damage = Requiem_ABS::Damage_Properties[6]
return
end
if rand(100) >= calc_hit(user, skill)
@missed = true
@damage = Requiem_ABS::Damage_Properties[6]
return
end
if rand(100) < calc_eva(user, skill)
@evaded = true
@damage = Requiem_ABS::Damage_Properties[6]
return
end
make_obj_damage_value(user, skill)
make_obj_absorb_effect(user, skill)
execute_damage(user)
if skill.physical_attack and @hp_damage == 0
return
end
apply_state_changes(skill)
end
def item_effect(user, item)
clear_action_results
unless item_effective?(user, item)
@damage = Requiem_ABS::Damage_Properties[6]
@skipped = true
return
end
if rand(100) >= calc_hit(user, item)
@missed = true
@damage = Requiem_ABS::Damage_Properties[6]
return
end
if rand(100) < calc_eva(user, item)
@evaded = true
@damage = Requiem_ABS::Damage_Properties[6]
return
end
hp_recovery = calc_hp_recovery(user, item)
mp_recovery = calc_mp_recovery(user, item)
make_obj_damage_value(user, item)
@hp_damage -= hp_recovery
@mp_damage -= mp_recovery
make_obj_absorb_effect(user, item)
execute_damage(user)
item_growth_effect(user, item)
if item.physical_attack and @hp_damage == 0
return
end
apply_state_changes(item)
end
def execute_damage(user)
if @hp_damage == 0
@damage = Requiem_ABS::Damage_Properties[6]
elsif defending?(user)
@damage = Requiem_ABS::Damage_Properties[18]
return
else
@damage = @hp_damage
end
requiem_abs_gbattler_execute_damage(user)
end
def make_attack_damage_value(attacker)
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 *= 2 if @critical
calculate_combo(attacker)
damage *= 3 if @combo
damage = apply_variance(damage, 20)
damage = apply_guard(damage)
@hp_damage = damage
end
end
def calculate_combo(attacker)
if attacker.is_a?(Game_Actor) and Requiem_ABS::Combo_Damage
if $game_player.right_attack_on and attacker.weapons[0] != nil
hits = attacker.weapons[0].combo_hits
rate = attacker.weapons[0].combo_rate
elsif $game_player.left_attack_on and attacker.weapons[1] != nil
hits = attacker.weapons[1].combo_hits
rate = attacker.weapons[1].combo_rate
elsif $game_player.right_attack_on and attacker.weapons[0].nil?
hits = 5
rate = 75
elsif $game_player.left_attack_on and attacker.weapons[1].nil?
hits = 5
rate = 75
else
hits = rate = 0
end
@combo = ($game_player.hits >= hits and rand(100) <= rate)
else
@combo = false
end
end
def defending?(user)
if self.is_a?(Game_Actor) and @defending and equips[1].is_a?(RPG::Armor) and
rand(100) <= equips[1].defense_rate and @piece != nil and user.piece.in_guard?(user.piece, @piece)
return true
elsif self.is_a?(Game_Enemy) and @defending and rand(100) <= self.defense_rate and
@piece != nil and user.piece.in_guard?(user.piece, @piece)
return true
end
return false
end
def remove_state(state_id)
return unless state?(state_id)
@states.delete(state_id)
@state_turns.delete(state_id)
end
end
#------------------------------------------------------------------------------
# Game Actor
#------------------------------------------------------------------------------
class Game_Actor < Game_Battler
attr_accessor (:skill_hotkeys, :item_hotkeys)
alias requiem_abs_gactor_initialize initialize
def initialize(actor_id)
requiem_abs_gactor_initialize(actor_id)
@skill_hotkeys = {}
for s in Requiem_ABS::Skill_Buttons
@skill_hotkeys[s] = 0
end
@item_hotkeys = {}
for i in Requiem_ABS::Item_Buttons
@item_hotkeys[i] = 0
end
end
def display_level_up(new_skills)
$game_system.battle_end_me.play
$game_player.animation_id = Requiem_ABS::LevelUp_Animation
@damage = Requiem_ABS::Damage_Properties[19]
if Requiem_ABS::Recovery_When_UpLevel
$game_player.actor.hp = $game_player.actor.maxhp
$game_player.actor.mp = $game_player.actor.maxmp
end
end
def atk_animation_id2
if two_swords_style
return weapons[1].nil? ? 1 : weapons[1].animation_id
else
return 1
end
end
end
#------------------------------------------------------------------------------
# Game Enemy
#------------------------------------------------------------------------------
class Game_Enemy < Game_Battler
def atk_animation_id
enemy.note.each_line { |line|
return line.gsub('Attack Animation = ', '').to_i if line.include?('Attack Animation = ')
}
return 1
end
def die_animation_id
enemy.note.each_line { |line|
return line.gsub('Die Animation = ', '').to_i if line.include?('Die Animation = ')
}
return nil
end
def die_se
enemy.note.each_line { |line|
return line.gsub('Die SE = ', '').to_s if line.include?('Die SE = ')
}
return nil
end
def weapon_icon
enemy.note.each_line { |line|
return line.gsub('Weapon Icon = ', '').to_i if line.include?('Weapon Icon = ')
}
return 0
end
def shield_icon
enemy.note.each_line { |line|
return line.gsub('Shield Icon = ', '').to_i if line.include?('Shield Icon = ')
}
return 0
end
def defense_rate
enemy.note.each_line { |line|
return line.gsub('Defense Rate = ', '').to_i if line.include?('Defense Rate = ')
}
return 50
end
end
#------------------------------------------------------------------------------
# Game Map
#------------------------------------------------------------------------------
class Game_Map
def range_passable?(x, y, flag = 0x01)
return true if @passages[@map.data[x, y, 0]] == 9
passable?(x, y, flag)
end
def passable?(x, y, flag = 0x01)
for drop in $game_drop
next if drop.nil?
return false if drop.x == x and drop.y == y
end
for event in events_xy(x, y)
next if event.tile_id == 0
next if event.priority_type > 0
next if event.through
pass = @passages[event.tile_id]
next if pass & 0x10 == 0x10
return true if pass & flag == 0x00
return false if pass & flag == flag
end
for i in [2, 1, 0]
tile_id = @map.data[x, y, i]
return false if tile_id.nil?
pass = @passages[tile_id]
next if pass & 0x10 == 0x10
return true if pass & flag == 0x00
return false if pass & flag == flag
end
return false
end
def update_events
for event in @events.values
next unless in_range?(event) or event.trigger == 3 or event.trigger == 4
event.update
end
for common_event in @common_events.values
common_event.update
end
end
def in_range?(object)
return false if object.real_x <= (@display_x-Graphics.width)
return false if object.real_x >= (@display_x+(Graphics.width*9))
return false if object.real_y <= (@display_y-Graphics.height)
return false if object.real_y >= (@display_y+(Graphics.height*9))
return true
end
end
#------------------------------------------------------------------------------
# Game Character
#------------------------------------------------------------------------------
class Game_Character
alias requiem_abs_gchar_initialize initialize
alias requiem_abs_gchar_update update
attr_accessor (:character_name, :character_index, :priority_type, :actor, :ani_time,
:state_time, :weapon1_attack_time, :weapon2_attack_time, :assigned_skill,
:skill_attack_time, :item_attack_time, :recovery_time, :right_attack_on,
:left_attack_on, :freeze, :anime_attack, :original_move_speed)
def initialize
requiem_abs_gchar_initialize
@weapon1_attack_time = 0
@weapon2_attack_time = 0
@skill_attack_time = 0
@item_attack_time = 0
@recovery_time = 0
@assigned_skill = 0
@ani_time = 0
@anime_attack = 0
@state_time = 0
@original_move_speed = 0
@actor = nil
@freeze = false
@right_attack_on = false
@left_attack_on = false
end
def update
requiem_abs_gchar_update
return if $game_party.members.size <= 0
decrease_counters
states_effects
end
def decrease_counters
@ani_time -= 1 if @ani_time > 0
@weapon1_attack_time -= 1 if @weapon1_attack_time > 0
@weapon2_attack_time -= 1 if @weapon2_attack_time > 0
@skill_attack_time -= 1 if @skill_attack_time > 0
@item_attack_time -= 1 if @item_attack_time > 0
@recovery_time -= 1 if @recovery_time > 0
@anime_attack -= 1 if @anime_attack > 0
@right_attack_on = @left_attack_on = false if @anime_attack <= 0
end
def states_effects
if self.is_a?(Game_Event) and self.in_battle or self.is_a?(Game_Player)
for state in @actor.states
next if state.nil?
if @state_time <= state.duration
@state_time += 1
@freeze = true if state.dont_walk?
@move_speed = 2 if state.walk_slower?
@move_speed = 5 if state.walk_faster?
if self.is_a?(Game_Event) and @actor.slip_damage?
@actor.slip_damage_effect if Graphics.frame_count % 60 <= 0
end
elsif @state_time > state.duration
@freeze = false if state.dont_walk?
@move_speed = @original_move_speed if state.walk_slower?
@move_speed = @original_move_speed if state.walk_faster?
@actor.remove_state(state.id)
@state_time = 0
end
end
end
end
def in_range?(parent, target, range)
x = (parent.x - target.x) * (parent.x - target.x)
y = (parent.y - target.y) * (parent.y - target.y)
r = x + y
return true if r <= (range * range)
return false
end
def in_direction?(parent, target)
return true if parent.direction == 2 and target.y >= parent.y and target.x == parent.x
return true if parent.direction == 4 and target.x <= parent.x and target.y == parent.y
return true if parent.direction == 6 and target.x >= parent.x and target.y == parent.y
return true if parent.direction == 8 and target.y <= parent.y and target.x == parent.x
return false
end
def in_front?(parent, target)
return true if parent.direction == 2 and parent.x == target.x and (parent.y+1) == target.y
return true if parent.direction == 4 and (parent.x-1) == target.x and parent.y == target.y
return true if parent.direction == 6 and (parent.x+1) == target.x and parent.y == target.y
return true if parent.direction == 8 and parent.x == target.x and (parent.y-1) == target.y
return false
end
def in_guard?(parent, target)
return true if parent.direction == 2 and target.direction == 8
return true if parent.direction == 4 and target.direction == 6
return true if parent.direction == 6 and target.direction == 4
return true if parent.direction == 8 and target.direction == 2
return false
end
def move_toward(target)
sx = distance_x_from(target)
sy = distance_y_from(target)
if sx != 0 or sy != 0
if sx.abs > sy.abs
sx > 0 ? move_left : move_right
if @move_failed and sy != 0
sy > 0 ? move_up : move_down
end
else
sy > 0 ? move_up : move_down
if @move_failed and sx != 0
sx > 0 ? move_left : move_right
end
end
end
end
def turn_toward(target)
sx = distance_x_from(target)
sy = distance_y_from(target)
if sx.abs > sy.abs
sx > 0 ? turn_left : turn_right
elsif sx.abs < sy.abs
sy > 0 ? turn_up : turn_down
end
end
def distance_x_from(target)
sx = @x - target.x
if $game_map.loop_horizontal?
if sx.abs > $game_map.width / 2
sx -= $game_map.width
end
end
return sx
end
def distance_y_from(target)
sy = @y - target.y
if $game_map.loop_vertical?
if sy.abs > $game_map.height / 2
sy -= $game_map.height
end
end
return sy
end
end
#------------------------------------------------------------------------------
# Game Event
#------------------------------------------------------------------------------
class Game_Event < Game_Character
attr_reader (:in_battle, :kill_with_weapon, :kill_with_skill, :kill_with_item,
:respawn, :boss, :object, :puzzle)
alias requiem_abs_gevent_initialize initialize
alias requiem_abs_gevent_setup setup
alias requiem_abs_gevent_update update
alias requiem_abs_gevent_refresh refresh
def initialize(map_id, event)
@enemy_id = 0
@respawn = nil
@in_battle = false
@boss = false
@object = false
@puzzle = false
requiem_abs_gevent_initialize(map_id, event)
end
def setup(new_page)
requiem_abs_gevent_setup(new_page)
self.original_move_speed = @move_speed
end
def update
requiem_abs_gevent_update
@respawn -= 1 if !@in_battle and self.actor.nil? and @respawn != nil and @respawn > 0
if @in_battle and self.actor != nil and !self.actor.dead?
make_attack
elsif @in_battle and self.actor != nil and self.actor.dead?
kill_enemy
erasing
elsif !@in_battle and self.actor.nil? and @respawn != nil and @respawn <= 0
@erased = @starting = false
refresh
end
end
def refresh
requiem_abs_gevent_refresh
@enemy_id = check_value("Enemy")
@follow_distance = check_value("Follow")
@erase = check_comment("Die Erase")
@switch_local_a = check_comment("Die Self Switch A")
@switch_local_b = check_comment("Die Self Switch B")
@switch_local_c = check_comment("Die Self Switch C")
@switch_local_d = check_comment("Die Self Switch D")
@switch = check_value("Die Switch")
@variable = check_value("Die Variable")
@kill_with_weapon = check_value("Kill With Weapon")
@kill_with_skill = check_value("Kill With Skill")
@kill_with_item = check_value("Kill With Item")
@boss = check_comment("Boss")
@object = check_comment("Object")
@puzzle = check_comment("Puzzle")
if @enemy_id > 0 and !@in_battle
@respawn = check_value("Respawn")
@respawn = nil if @respawn <= 0
self.actor = Game_Enemy.new(0, @enemy_id)
self.actor.recover_all
self.actor.piece = self
@in_battle = true
elsif @enemy_id <= 0
@in_battle = false
end
@opacity = 255
@blend_type = 0
end
def make_attack
return if $game_map.interpreter.running? or $game_player.in_vehicle?
for action in $data_enemies[@enemy_id].actions
next unless self.actor.conditions_met?(action) or rand(11) < action.rating
next if self.weapon1_attack_time > 0
case action.kind
when 0
case action.basic
when 0
attack_normal
when 1
self.actor.defending = true
end
when 1
self.assigned_skill = $data_skills[action.skill_id]
case self.assigned_skill.scope
when 1..6
if self.assigned_skill.ranged?
if in_direction?(self, $game_player) and in_range?(self, $game_player, self.assigned_skill.range)
skill_attack_range
elsif action.rating == 10
skill_attack_range
end
else
skill_attack_normal
end
when 7..11
skill_recover
end
end
end
end
def attack_normal
return unless in_front?(self, $game_player)
return if $game_player.actor.nil?
self.anime_attack = 20
$game_player.animation_id = self.actor.atk_animation_id
$game_player.actor.attack_effect(self.actor)
$game_player.jump(0,0)
self.weapon1_attack_time = Requiem_ABS::Enemy_Attack_Time
end
def skill_attack_normal
return unless self.actor.mp >= self.assigned_skill.mp_cost and in_front?(self, $game_player)
return if $game_player.actor.nil?
self.actor.mp -= self.actor.calc_mp_cost(self.assigned_skill)
$game_temp.common_event_id = self.assigned_skill.common_event_id if self.assigned_skill.common_event_id > 0
$game_player.animation_id = self.assigned_skill.animation_id
$game_player.actor.skill_effect(self.actor, self.assigned_skill)
$game_player.jump(0,0)
self.weapon1_attack_time = Requiem_ABS::Enemy_Attack_Time
end
def skill_attack_range
return unless self.actor.mp >= self.assigned_skill.mp_cost
self.actor.mp -= self.actor.calc_mp_cost(self.assigned_skill)
$game_temp.common_event_id = self.assigned_skill.common_event_id if self.assigned_skill.common_event_id > 0
$game_range.push(Game_Range.new(self, self.assigned_skill.graphic, self.assigned_skill.index, self.assigned_skill.move_speed, self.assigned_skill.range, 3))
self.weapon1_attack_time = self.assigned_skill.delay
RPG::SE.new(self.assigned_skill.shot_se).play if self.assigned_skill.shot_se != nil
end
def skill_recover
if self.actor.mp >= self.assigned_skill.mp_cost and self.actor.hp <= (self.actor.maxhp*25/100)
self.actor.mp -= self.actor.calc_mp_cost(self.assigned_skill)
$game_temp.common_event_id = self.assigned_skill.common_event_id if self.assigned_skill.common_event_id > 0
@animation_id = self.assigned_skill.animation_id
self.actor.skill_effect(self.actor, self.assigned_skill)
self.weapon1_attack_time = Requiem_ABS::Enemy_Attack_Time
end
for event in $game_map.events.values
if event.in_battle and in_range?(self, event, 3)
if self.actor.mp >= self.assigned_skill.mp_cost and event.actor.hp <= (event.actor.maxhp*25/100)
self.actor.mp -= self.assigned_skill.mp_cost
$game_temp.common_event_id = self.assigned_skill.common_event_id if self.assigned_skill.common_event_id > 0
event.animation_id = self.assigned_skill.animation_id
event.actor.skill_effect(self.actor, self.assigned_skill)
self.weapon1_attack_time = Requiem_ABS::Enemy_Attack_Time
end
end
end
end
def erasing
return if @puzzle
@blend_type = 2
@opacity -= 5
end
def kill_enemy
dying unless @killed
return if @opacity > 0 and !@puzzle
self.actor = nil
desactive_enemy
@killed = false
$game_player.hits = 0
@in_battle = false
end
def dying
if Requiem_ABS::Auto_EXP_Gold_Rate
exp = (self.actor.maxhp+self.actor.maxmp+self.actor.atk+self.actor.def+self.actor.spi+
self.actor.agi+self.actor.hit+self.actor.eva) * Requiem_ABS::EXP_Rate / 100
$game_player.actor.gain_exp(exp, 1)
else
$game_player.actor.gain_exp(self.actor.exp, 1)
end
make_drop
unless @puzzle
if self.actor.die_animation_id != nil
@animation_id = self.actor.die_animation_id
end
if self.actor.die_se != nil
RPG::SE.new(self.actor.die_se).play
else
Sound.play_enemy_collapse
end
end
@killed = true
end
def desactive_enemy
if @erase
erase
elsif @switch_local_a
key = [$game_map.map_id, self.id, "A"]
$game_self_switches[key] = !$game_self_switches[key]
elsif @switch_local_b
key = [$game_map.map_id, self.id, "B"]
$game_self_switches[key] = !$game_self_switches[key]
elsif @switch_local_c
key = [$game_map.map_id, self.id, "C"]
$game_self_switches[key] = !$game_self_switches[key]
elsif @switch_local_d
key = [$game_map.map_id, self.id, "D"]
$game_self_switches[key] = !$game_self_switches[key]
elsif @switch > 0
$game_switches[@switch] = !$game_switches[@switch]
elsif @variable > 0
$game_variables[@variable] += 1
end
$game_map.need_refresh = true
end
def make_drop
droped_items = []
for i in [self.actor.drop_item1, self.actor.drop_item2]
next if i.kind <= 0
next if rand(i.denominator) != 0
if i.kind == 1
droped_items.push($data_items[i.item_id])
elsif i.kind == 2
droped_items.push($data_weapons[i.weapon_id])
elsif i.kind == 3
droped_items.push($data_armors[i.armor_id])
end
end
for t in droped_items
next if t.nil?
$game_drop.push(Game_Drop.new(self, t.icon_index, t , 0))
end
if Requiem_ABS::Auto_EXP_Gold_Rate
gold = (self.actor.maxhp+self.actor.maxmp+self.actor.atk+self.actor.def+self.actor.spi+
self.actor.agi+self.actor.hit+self.actor.eva) * Requiem_ABS::Gold_Rate / 100
else
gold = self.actor.gold
end
if gold > 0 and rand(100) <= Requiem_ABS::Gold_Drop_Rate
$game_drop.push(Game_Drop.new(self, Requiem_ABS::Gold_Drop_Graphic, nil, gold))
end
end
def update_self_movement
return if self.freeze or (self.anime_attack/2) > 0
if @stop_count > 30 * (5 - @move_frequency)
if @in_battle and in_range?(self, $game_player, @follow_distance)
move_toward_player
else
case @move_type
when 1
move_type_random
when 2
move_type_toward_player
when 3
move_type_custom
end
end
end
end
def check_value(comment)
return 0 if @list.nil? or @list.size <= 0
for item in @list
if item.code == 108 or item.code == 408
if item.parameters[0].downcase =~ /#{comment.downcase}[ ]?(\d+)?/
return $1.to_i
end
end
end
return 0
end
def check_comment(comment)
return false if @list.nil? or @list.size <= 0
for item in @list
if item.code == 108 or item.code == 408
if item.parameters[0].downcase.include?(comment.downcase)
return true
end
end
end
return false
end
end
#------------------------------------------------------------------------------
# Game Player
#------------------------------------------------------------------------------
class Game_Player < Game_Character
attr_accessor (:hit, :hits, :hit_time, :assigned_item, :bomb_already, :reward)
alias requiem_abs_gplayer_initialize initialize
alias requiem_abs_gplayer_update update
alias requiem_abs_gplayer_perform_transfer perform_transfer
alias requiem_abs_gplayer_move_by_input move_by_input
def initialize
requiem_abs_gplayer_initialize
@hits = 0
@hit_time = 0
@assigned_item = 0
@bomb_already = false
@hit = nil
@reward = nil
self.original_move_speed = 4
end
def update
self.actor = $game_party.members[0]
requiem_abs_gplayer_update
return if self.actor.nil?
self.actor.piece = self
$game_temp.next_scene = "gameover" if self.actor.dead?
return if $game_map.interpreter.running? or in_vehicle?
attack_with_weapon
attack_with_skill
attack_with_item
auto_recovery
if self.right_attack_on and @attack_weapon != nil
@hits = 0 if @hit_time <= 0 or @hits >= @attack_weapon.combo_hits
elsif self.left_attack_on and @attack_weapon_and_Shield != nil
@hits = 0 if @hit_time <= 0 or @hits >= @attack_weapon_and_Shield.combo_hits
elsif self.right_attack_on and @attack_weapon.nil?
@hits = 0 if @hit_time <= 0 or @hits >= 5
elsif self.left_attack_on and @attack_weapon_and_Shield.nil?
@hits = 0 if @hit_time <= 0 or @hits >= 5
end
@hit_time -= 1 if @hit_time > 0
end
def hit_count
return unless Requiem_ABS::Combo_Damage
@hits += 1
@hit = "#{@hits}"
end
def attack_with_weapon
if Input.trigger?(Requiem_ABS::Right_Attack_Button)
return if !Requiem_ABS::Allow_attack_with_shield and self.actor.defending
return if self.weapon1_attack_time > 0
@attack_weapon = self.actor.equips[0]
RPG::SE.new(@attack_weapon.shot_se).play if @attack_weapon != nil and @attack_weapon.shot_se != nil
self.anime_attack = 20
self.right_attack_on = true
self.left_attack_on = false
if @attack_weapon != nil and @attack_weapon.ranged?
range_attack_right
self.weapon1_attack_time = @attack_weapon.delay
@hit_time = self.weapon1_attack_time + 15
else
normal_attack_right
self.weapon1_attack_time = Requiem_ABS::Hero_Attack_Time
@hit_time = self.weapon1_attack_time + 15
end
end
if Input.press?(Requiem_ABS::Left_Attack_and_Shield_Button)
self.actor.defending = (self.actor.equips[1].is_a?(RPG::Armor) and Requiem_ABS::Allow_Shields_Graphics)
else
self.actor.defending = false
end
if Input.trigger?(Requiem_ABS::Left_Attack_and_Shield_Button)
return if self.weapon2_attack_time > 0
return if !Requiem_ABS::Allow_attack_with_shield and self.actor.defending
@attack_weapon_and_Shield = (self.actor.two_swords_style ? self.actor.equips[1] : self.actor.equips[0])
RPG::SE.new(@attack_weapon_and_Shield.shot_se).play if @attack_weapon_and_Shield != nil and @attack_weapon_and_Shield.shot_se != nil
self.anime_attack = 20
self.right_attack_on = false
self.left_attack_on = true
if @attack_weapon_and_Shield != nil and @attack_weapon_and_Shield.ranged?
range_attack_left
self.weapon2_attack_time = Requiem_ABS::Hero_Attack_Time
@hit_time = self.weapon2_attack_time + 15
elsif self.actor.two_swords_style
normal_attack_left
self.weapon2_attack_time = @attack_weapon_and_Shield.delay
@hit_time = self.weapon1_attack_time + 15
end
end
end
def attack_with_skill
for button in self.actor.skill_hotkeys.keys
if Input.trigger?(button) and self.actor.skill_hotkeys[button] != nil and self.actor.skill_hotkeys[button] != 0
return if self.skill_attack_time > 0
return if !Requiem_ABS::Allow_attack_with_shield and self.actor.defending
self.assigned_skill = $data_skills[self.actor.skill_hotkeys[button]]
if self.assigned_skill.scope == 2
skill_attack_all
elsif self.assigned_skill.ranged?
skill_attack_range
elsif self.assigned_skill.explosive?
skill_exlpode_range
elsif self.assigned_skill.scope >= 7
skill_recover
else
skill_attack_normal
end
end
end
end
def attack_with_item
for button in self.actor.item_hotkeys.keys
if Input.trigger?(button) and self.actor.item_hotkeys[button] != nil and self.actor.item_hotkeys[button] != 0
return if self.item_attack_time > 0
return if !Requiem_ABS::Allow_attack_with_shield and self.actor.defending
@assigned_item = $data_items[self.actor.item_hotkeys[button]]
if @assigned_item.ranged?
item_attack_range
elsif @assigned_item.explosive?
item_attack_explode
elsif @assigned_item.bomb?
item_attack_bomb
else
case @assigned_item.scope
when 1
item_normal_attack
when 2
item_attack_all
when 3...6
item_normal_attack
when 7...11
item_recover
end
end
end
end
end
def normal_attack_right
for event in $game_map.events.values
next unless event.in_battle
next unless in_front?(self, event)
next if event.actor.dead? or event.object
event.animation_id = self.actor.atk_animation_id
hit_count
return if event.kill_with_weapon > 0 and @attack_weapon != event.kill_with_weapon or
event.kill_with_skill > 0 or event.kill_with_item > 0
event.actor.attack_effect(self.actor)
event.jump(0,0) unless event.puzzle
end
end
def range_attack_right
return unless $game_party.has_item?(@attack_weapon.ammo1)
$game_party.consume_item(@attack_weapon.ammo1)
$game_range.push(Game_Range.new(self, @attack_weapon.graphic, @attack_weapon.index, @attack_weapon.move_speed, @attack_weapon.range, 1))
end
def normal_attack_left
for event in $game_map.events.values
next unless event.in_battle
next unless in_front?(self,event)
next if event.actor.dead? or event.object
event.animation_id = self.actor.atk_animation_id2
hit_count
return if event.kill_with_weapon > 0 and @attack_weapon_and_Shield != event.kill_with_weapon or
event.kill_with_skill > 0 or event.kill_with_item > 0
event.actor.attack_effect(self.actor)
event.jump(0,0) unless event.puzzle
end
end
def range_attack_left
return unless $game_party.has_item?(@attack_weapon_and_Shield.ammo2)
$game_party.consume_item(@attack_weapon_and_Shield.ammo2)
$game_range.push(Game_Range.new(self, @attack_weapon_and_Shield.graphic, @attack_weapon_and_Shield.index, @attack_weapon_and_Shield.move_speed, @attack_weapon_and_Shield.range, 2))
end
def skill_attack_normal
for event in $game_map.events.values
next unless event.in_battle
next unless in_front?(self,event)
next if event.actor.dead? or event.object
next unless self.actor.mp >= self.assigned_skill.mp_cost
self.actor.mp -= self.actor.calc_mp_cost(self.assigned_skill)
$game_temp.common_event_id = self.assigned_skill.common_event_id if self.assigned_skill.common_event_id > 0
event.animation_id = self.assigned_skill.animation_id
self.skill_attack_time = self.assigned_skill.delay
return if event.kill_with_weapon > 0 or event.kill_with_item > 0 or
event.kill_with_skill > 0 and event.kill_with_skill != self.assigned_skill.id
event.actor.skill_effect(self.actor, self.assigned_skill)
event.jump(0,0) unless event.puzzle
end
end
def skill_attack_range
return unless self.actor.mp >= self.assigned_skill.mp_cost
self.actor.mp -= self.actor.calc_mp_cost(self.assigned_skill)
$game_temp.common_event_id = self.assigned_skill.common_event_id if self.assigned_skill.common_event_id > 0
$game_range.push(Game_Range.new(self, self.assigned_skill.graphic, self.assigned_skill.index, self.assigned_skill.move_speed, self.assigned_skill.range, 3))
RPG::SE.new(self.assigned_skill.shot_se).play if self.assigned_skill.shot_se != nil
self.skill_attack_time = self.assigned_skill.delay
end
def skill_attack_all
return unless self.actor.mp >= self.assigned_skill.mp_cost
self.actor.mp -= self.actor.calc_mp_cost(self.assigned_skill)
$game_temp.common_event_id = self.assigned_skill.common_event_id if self.assigned_skill.common_event_id > 0
for event in $game_map.events.values
next unless event.in_battle
next if event.actor.dead? or event.object
event.animation_id = self.assigned_skill.animation_id
self.skill_attack_time = Requiem_ABS::Hero_Attack_Time
return if event.kill_with_weapon > 0 or event.kill_with_item > 0 or
event.kill_with_skill > 0 and event.kill_with_skill != self.assigned_skill.id
event.actor.skill_effect(self.actor, self.assigned_skill)
event.jump(0,0) unless event.puzzle
end
end
def skill_exlpode_range
return unless self.actor.mp >= self.assigned_skill.mp_cost
self.actor.mp -= self.actor.calc_mp_cost(self.assigned_skill)
$game_temp.common_event_id = self.assigned_skill.common_event_id if self.assigned_skill.common_event_id > 0
$game_range.push(Game_Range.new(self, self.assigned_skill.graphic, self.assigned_skill.index, self.assigned_skill.move_speed, self.assigned_skill.range, 4))
RPG::SE.new(self.assigned_skill.shot_se).play if self.assigned_skill.shot_se != nil
self.skill_attack_time = self.assigned_skill.delay
end
def skill_recover
return unless self.actor.mp >= self.assigned_skill.mp_cost
self.actor.mp -= self.actor.calc_mp_cost(self.assigned_skill)
$game_temp.common_event_id = self.assigned_skill.common_event_id if self.assigned_skill.common_event_id > 0
self.actor.skill_effect(self.actor, self.assigned_skill)
@animation_id = self.assigned_skill.animation_id
self.skill_attack_time = Requiem_ABS::Hero_Attack_Time
end
def item_normal_attack
for event in $game_map.events.values
next unless event.in_battle
next unless in_front?(self,event)
next if event.actor.dead? or event.object
next unless $game_party.has_item?(@assigned_item)
$game_party.consume_item(@assigned_item)
$game_temp.common_event_id = @assigned_item.common_event_id if @assigned_item.common_event_id > 0
event.animation_id = @assigned_item.animation_id
self.item_attack_time = Requiem_ABS::Hero_Attack_Time
return if event.kill_with_weapon > 0 or event.kill_with_skill > 0 or
event.kill_with_item > 0 and event.kill_with_item != self.assigned_item.id
event.actor.item_effect(self.actor, @assigned_item)
event.jump(0,0) unless event.puzzle
end
end
def item_attack_range
return unless $game_party.has_item?(@assigned_item)
$game_party.consume_item(@assigned_item)
$game_temp.common_event_id = @assigned_item.common_event_id if @assigned_item.common_event_id > 0
$game_range.push(Game_Range.new(self, @assigned_item.graphic, @assigned_item.index, @assigned_item.move_speed, @assigned_item.range, 5))
RPG::SE.new(@assigned_item.shot_se).play if @assigned_item.shot_se != nil
self.item_attack_time = @assigned_item.delay
end
def item_attack_explode
return unless $game_party.has_item?(@assigned_item)
$game_party.consume_item(@assigned_item)
$game_temp.common_event_id = @assigned_item.common_event_id if @assigned_item.common_event_id > 0
$game_range.push(Game_Range.new(self, @assigned_item.graphic, @assigned_item.index, @assigned_item.move_speed, @assigned_item.range, 6))
RPG::SE.new(@assigned_item.shot_se).play if @assigned_item.shot_se != nil
self.item_attack_time = @assigned_item.delay
end
def item_recover
return unless $game_party.has_item?(@assigned_item)
$game_party.consume_item(@assigned_item)
$game_temp.common_event_id = @assigned_item.common_event_id if @assigned_item.common_event_id > 0
@animation_id = @assigned_item.animation_id
self.actor.item_effect(self.actor, @assigned_item)
self.item_attack_time = Requiem_ABS::Hero_Attack_Time
end
def item_attack_all
next unless $game_party.has_item?(@assigned_item)
$game_party.consume_item(@assigned_item)
$game_temp.common_event_id = @assigned_item.common_event_id if @assigned_item.common_event_id > 0
for event in $game_map.events.values
next unless event.in_battle
next if event.actor.dead? or event.object
event.animation_id = @assigned_item.animation_id
self.item_attack_time = Requiem_ABS::Hero_Attack_Time
return if event.kill_with_item > 0 and event.kill_with_item != self.assigned_item.id
event.actor.item_effect(self.actor, @assigned_item)
event.jump(0,0) unless event.puzzle
end
end
def item_attack_bomb
return if $game_party.has_item?(@assigned_item) and @bomb_already
$game_party.consume_item(@assigned_item)
$game_temp.common_event_id = @assigned_item.common_event_id if @assigned_item.common_event_id > 0
$game_bomb.push(Game_Bomb.new(self, @assigned_item))
end
def auto_recovery
return unless self.actor.auto_hp_recover and self.recovery_time <= 0
self.actor.hp += (self.actor.maxhp*10/100)
self.recovery_time = 1800
end
def perform_transfer
requiem_abs_gplayer_perform_transfer
for range in $game_range
next if range.nil?
range.destroy = true
end
for drop in $game_drop
next if drop.nil?
drop.destroy = true
end
for bomb in $game_bomb
next if bomb.nil?
bomb.destroy = true
end
@bomb_already = false
end
def move_by_input
return if self.freeze or (self.anime_attack/2) > 0
requiem_abs_gplayer_move_by_input
end
end
#------------------------------------------------------------------------------
# Game Range
#------------------------------------------------------------------------------
class Game_Range < Game_Character
attr_accessor (:draw, :destroy, :character_name)
def initialize(parent, chara_name="", chara_index=0, speed=4, range=5, type=3)
super()
@parent = parent
@character_name = chara_name
@character_index = chara_index
@move_speed = speed
@range = range
@type = type
@step = 0
@destroy = false
@draw = false
moveto(@parent.x, @parent.y)
@direction = @parent.direction
end
def update
super
return if @destroy
@destroy = @step > @range
return if moving?
move_forward
@step += 1
end
def check_event_trigger_touch(x, y)
return if @destroy
hurt_hero if $game_player.pos?(x, y) and @type == 3 and @parent.is_a?(Game_Event)
for event in $game_map.events.values
next unless event.in_battle and event.pos?(x, y) and @parent.is_a?(Game_Player)
case @type
when 1
hurt_enemy_weapon_right(event)
when 2
hurt_enemy_weapon_left(event)
when 3
hurt_enemy_skill(event)
when 4
hurt_enemy_skill_explode
when 5
hurt_enemy_item(event)
when 6
hurt_enemy_item_explode
end
end
end
def hurt_hero
@destroy = true
$game_player.animation_id = @parent.assigned_skill.animation_id
$game_player.actor.skill_effect(@parent.actor, @parent.assigned_skill)
$game_player.jump(0,0)
end
def hurt_enemy_weapon_right(enemy)
@destroy = true
return if enemy.actor.dead? or enemy.object
enemy.animation_id = @parent.actor.equips[0].ammo1.animation_id if @parent.actor.equips[0].ammo1 != nil
return if enemy.kill_with_weapon > 0 and @parent.actor.weapon_id != enemy.kill_with_weapon or
enemy.kill_with_skill > 0 or enemy.kill_with_item > 0
enemy.actor.attack_effect(@parent.actor)
enemy.jump(0,0) unless enemy.puzzle
end
def hurt_enemy_weapon_left(enemy)
@destroy = true
return if enemy.actor.dead? or enemy.object
if @parent.actor.two_swords_style
@weapon = @parent.actor.equips[1]
else
@weapon = @parent.actor.equips[0]
end
enemy.animation_id = @weapon.ammo2.animation_id if @weapon.ammo2 != nil
return if enemy.kill_with_weapon > 0 and @weapon.id != enemy.kill_with_weapon or
enemy.kill_with_skill > 0 or enemy.kill_with_item > 0
enemy.actor.attack_effect(@parent.actor)
enemy.jump(0,0) unless enemy.puzzle
end
def hurt_enemy_skill(enemy)
@destroy = true
return if enemy.actor.dead? or enemy.object
enemy.animation_id = @parent.assigned_skill.animation_id
enemy.actor.skill_effect(@parent.actor, @parent.assigned_skill)
enemy.jump(0,0) unless enemy.puzzle
end
def hurt_enemy_item(enemy)
@destroy = true
return if enemy.actor.dead? or enemy.object
enemy.animation_id = @parent.assigned_item.animation_id
return if enemy.kill_with_weapon > 0 or enemy.kill_with_skill > 0 or
enemy.kill_with_item > 0 and @parent.assigned_item != enemy.kill_with_item
enemy.actor.item_effect(@parent.actor, @parent.assigned_item)
enemy.jump(0,0) unless enemy.puzzle
end
def hurt_enemy_skill_explode
@destroy = true
for event in $game_map.events.values
next unless event.in_battle
next unless in_range?(self, event, @parent.assigned_skill.area)
return if event.actor.dead? or event.object
event.animation_id = @parent.assigned_skill.animation_id
return if event.kill_with_weapon > 0 or event.kill_with_item > 0 or
event.kill_with_skill > 0 and @parent.assigned_skill != event.kill_with_skill
event.actor.skill_effect(@parent.actor, @parent.assigned_skill)
event.jump(0,0) unless event.puzzle
end
end
def hurt_enemy_item_explode
@destroy = true
for event in $game_map.events.values
next unless event.in_battle and in_range?(self, event, @parent.assigned_item.area)
return if event.actor.dead? or event.object
event.animation_id = @parent.assigned_item.animation_id
return if event.kill_with_weapon > 0 or event.kill_with_item > 0 or
event.kill_with_skill > 0 and @parent.assigned_item != event.kill_with_skill
event.actor.item_effect(@parent.actor, @parent.assigned_item)
event.jump(0,0) unless event.puzzle
end
end
def map_passable?(x, y)
return $game_map.range_passable?(x, y)
end
end
#------------------------------------------------------------------------------
# Game Bomb
#------------------------------------------------------------------------------
class Game_Bomb < Game_Character
attr_accessor (:draw, :destroy, :graphic_name, :graphic_index)
def initialize(parent, item)
super()
@parent = parent
@item = item
@graphic_name = "IconSet"
@graphic_index = @item.icon_index
@area = @item.area
@time = @item.delay
@destroy = false
@draw = false
self.priority_type = 2
case @parent.direction
when 2
moveto(@parent.x, @parent.y+1)
when 4
moveto(@parent.x-1, @parent.y)
when 6
moveto(@parent.x+1, @parent.y)
when 8
moveto(@parent.x, @parent.y-1)
end
RPG::SE.new(Requiem_ABS::Drop_Item_SE).play if Requiem_ABS::Drop_Item_SE != ""
$game_player.bomb_already = true
jump(0,0)
move_random if !$game_map.passable?(@x, @y) or $game_map.events_xy(@x, @y) != []
end
def update
super
return if @destroy
if @item.shot_se != nil and Graphics.frame_count % 60 <= 0
RPG::SE.new(@item.shot_se).play
end
@time -= 1 if @time > 0
explode if @time <= 0
end
def explode
@animation_id = @item.animation_id
if in_range?(self, $game_player, @area)
$game_player.actor.item_effect(@parent.actor, @item)
$game_player.jump(0, 0)
end
for event in $game_map.events.values
if event.in_battle and in_range?(self, event, @area)
event.actor.item_effect(@parent.actor, @item)
event.jump(0, 0) unless event.puzzle
end
end
$game_player.bomb_already = false
@destroy = true
end
def check_event_trigger_touch(x, y)
end
end
#------------------------------------------------------------------------------
# Game Drop
#------------------------------------------------------------------------------
class Game_Drop < Game_Character
attr_accessor (:draw, :destroy, :graphic_name, :graphic_index)
def initialize(parent, graphic_index=0, item=nil, gold=0)
super()
@graphic_name = "IconSet"
@graphic_index = graphic_index
@item = item
@gold = gold
@drop_time = Requiem_ABS::Drop_Duration_Time
moveto(parent.x, parent.y)
RPG::SE.new(Requiem_ABS::Drop_Item_SE).play if Requiem_ABS::Drop_Item_SE != "" and @items != nil
RPG::SE.new(Requiem_ABS::Drop_Money_SE).play if Requiem_ABS::Drop_Money_SE != "" and @gold > 0
@destroy = false
@draw = false
jump(0,0)
move_random if !moving?
end
def update
super
return if @destroy
@drop_time -= 1 if @drop_time > 0
@destroy = true if @drop_time <= 0
return unless Input.trigger?(Input::C) and in_front?($game_player, self)
get_reward
end
def get_reward
RPG::SE.new(Requiem_ABS::Get_Reward_SE).play if Requiem_ABS::Get_Reward_SE != ""
case @item
when RPG::Item
$game_party.gain_item($data_items[@item.id],1)
$game_player.reward = $data_items[@item.id].name
when RPG::Weapon
$game_party.gain_item($data_weapons[@item.id],1)
$game_player.reward = $data_weapons[@item.id].name
when RPG::Armor
$game_party.gain_item($data_armors[@item.id],1)
$game_player.reward = $data_weapons[@item.id].name
end
if @gold > 0
$game_party.gain_gold(@gold)
$game_player.reward = "$ #{@gold}"
end
@destroy = true
end
def check_event_trigger_touch(x, y)
end
end
#------------------------------------------------------------------------------
# Sprite Base
#------------------------------------------------------------------------------
class Sprite_Base
def animation_set_sprites(frame)
cell_data = frame.cell_data
for i in 0..15
sprite = @animation_sprites[i]
next if sprite == nil
pattern = cell_data[i, 0]
if pattern == nil or pattern == -1
sprite.visible = false
next
end
if pattern < 100
sprite.bitmap = @animation_bitmap1
else
sprite.bitmap = @animation_bitmap2
end
sprite.visible = true
sprite.src_rect.set(pattern % 5 * 192, pattern % 100 / 5 * 192, 192, 192)
if @animation_mirror
sprite.x = @animation_ox - cell_data[i, 1] / Requiem_ABS::Animations_Divide_By
sprite.y = @animation_oy + cell_data[i, 2] / Requiem_ABS::Animations_Divide_By
sprite.angle = (360 - cell_data[i, 4])
sprite.mirror = (cell_data[i, 5] == 0)
else
sprite.x = @animation_ox + cell_data[i, 1] / Requiem_ABS::Animations_Divide_By
sprite.y = @animation_oy + cell_data[i, 2] / Requiem_ABS::Animations_Divide_By
sprite.angle = cell_data[i, 4]
sprite.mirror = (cell_data[i, 5] == 1)
end
sprite.z = self.z + 300 + i
sprite.ox = 96
sprite.oy = 96
sprite.zoom_x = cell_data[i, 3] / (100.0 * Requiem_ABS::Animations_Divide_By)
sprite.zoom_y = cell_data[i, 3] / (100.0 * Requiem_ABS::Animations_Divide_By)
sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
sprite.blend_type = cell_data[i, 7]
end
end
end
#------------------------------------------------------------------------------
# Sprite Character
#------------------------------------------------------------------------------
class Sprite_Character < Sprite_Base
alias requiem_abs_spchar_initialize initialize
alias requiem_abs_spchar_update update
alias requiem_abs_spchar_dispose dispose
def initialize(viewport, character=nil)
@character = character
@_damage_duration = 0
@_hit_duration = 0
@_reward_duration = 0
requiem_abs_spchar_initialize(viewport,@character)
end
def update
requiem_abs_spchar_update
update_show_dmg
update_show_hit
update_show_reward
update_show_state_ani
end
def dispose
requiem_abs_spchar_dispose
dispose_damage
dispose_hit
dispose_reward
end
def update_show_dmg
if @_damage_duration > 0
@_damage_duration -=1
@_damage_sprite.y -= 1
@_damage_sprite.x = self.x
elsif @_damage_duration <= 0 and @_damage_sprite != nil and !@_damage_sprite.disposed?
@_damage_sprite.y -= 1
@_damage_sprite.opacity -= 5
dispose_damage if @_damage_sprite.opacity <= 0
end
if @character.actor != nil and @character.actor.damage != 0
return if @character.is_a?(Game_Event) and @character.puzzle
damage(@character.actor.damage, @character.actor.critical, @character.actor.combo)
@character.actor.damage = 0
@character.actor.critical = @character.actor.combo = false
end
end
def update_show_hit
if @_hit_duration > 0
@_hit_duration -=1
elsif @_hit_duration <= 0 and @_hit_sprite != nil and !@_hit_sprite.disposed?
@_hit_sprite.opacity -= 5
dispose_hit if @_hit_sprite.opacity <= 0
end
if @character.is_a?(Game_Player) and @character.hit != nil
hit(@character.hit)
@character.hit = nil
end
end
def update_show_reward
if @_reward_duration > 0
@_reward_duration -= 1
elsif @_reward_duration <= 0 and @_reward_sprite != nil and !@_reward_sprite.disposed?
@_reward_sprite.opacity -= 5
dispose_reward if @_reward_sprite.opacity <= 0
end
if $game_player.reward != nil and Requiem_ABS::Show_Reward
show_reward($game_player.reward)
$game_player.reward = nil
end
end
def update_show_state_ani
return if @character.actor.nil?
for state in @character.actor.states
next if state.nil? or state.animation_id <= 0
if @character.ani_time <= 0
@character.animation_id = state.animation_id
@character.ani_time = $data_animations[@character.animation_id].frame_max * 4 + 1
end
end
end
def damage(value, critical, combo)
dispose_damage
damage_string = (value.is_a?(Numeric) ? value.abs.to_s : value.to_s)
bitmap = Bitmap.new(160, 100)
bitmap.font.name = Requiem_ABS::Damage_Properties[1]
bitmap.font.size = Requiem_ABS::Damage_Properties[2]
bitmap.font.bold = Requiem_ABS::Damage_Properties[3]
bitmap.font.italic = Requiem_ABS::Damage_Properties[4]
bitmap.font.color.set(0,0,0)
bitmap.draw_text(1,(Requiem_ABS::Damage_Properties[2]*2)+5, 160, Requiem_ABS::Damage_Properties[2]+2, damage_string, 1)
if value.is_a?(Numeric) and value <= 0
bitmap.font.color = Requiem_ABS::Damage_Properties[14]
else
bitmap.font.color = Requiem_ABS::Damage_Properties[13]
end
bitmap.draw_text(0,(Requiem_ABS::Damage_Properties[2]*2)+4, 160, Requiem_ABS::Damage_Properties[2]+2, damage_string, 1)
if critical
bitmap.font.color.set(0,0,0)
bitmap.draw_text(1, Requiem_ABS::Damage_Properties[2]+5, 160, Requiem_ABS::Damage_Properties[2]+2, Requiem_ABS::Damage_Properties[5], 1)
bitmap.font.color = Requiem_ABS::Damage_Properties[15]
bitmap.draw_text(0, Requiem_ABS::Damage_Properties[2]+4, 160, Requiem_ABS::Damage_Properties[2]+2, Requiem_ABS::Damage_Properties[5], 1)
end
if combo
bitmap.font.color.set(0,0,0)
bitmap.draw_text(1, 1, 160, Requiem_ABS::Damage_Properties[2]+2,Requiem_ABS::Damage_Properties[12], 1)
bitmap.font.color = Requiem_ABS::Damage_Properties[16]
bitmap.draw_text(0, 0, 160, Requiem_ABS::Damage_Properties[2]+2,Requiem_ABS::Damage_Properties[12], 1)
end
@_damage_sprite = ::Sprite.new(self.viewport)
@_damage_sprite.bitmap = bitmap
@_damage_sprite.ox = 80
@_damage_sprite.oy = 20
@_damage_sprite.x = self.x
@_damage_sprite.y = self.y-self.oy/2-60
@_damage_sprite.z = 99999
@_damage_duration = 30
end
def hit(value)
hit_string = (value.is_a?(Numeric) ? value.abs.to_s : value.to_s)
bitmap = Bitmap.new(160, Requiem_ABS::Damage_Properties[9])
bitmap.font.name = Requiem_ABS::Damage_Properties[8]
bitmap.font.size = Requiem_ABS::Damage_Properties[9]
bitmap.font.bold = Requiem_ABS::Damage_Properties[10]
bitmap.font.italic = Requiem_ABS::Damage_Properties[11]
bitmap.font.color.set(0,0,0)
bitmap.draw_text(1, 1, 160, 36,"#{hit_string}"+" "+"#{Requiem_ABS::Damage_Properties[7]}", 2)
bitmap.font.color = Requiem_ABS::Damage_Properties[17]
bitmap.draw_text(0, 0, 160, 36,"#{hit_string}"+" "+"#{Requiem_ABS::Damage_Properties[7]}", 2)
@_hit_sprite = ::Sprite.new(self.viewport)
@_hit_sprite.bitmap = bitmap
@_hit_sprite.x = 374
@_hit_sprite.y = 208 - Requiem_ABS::Damage_Properties[9]
@_hit_sprite.z = 99999
@_hit_duration = 60
end
def show_reward(reward)
dispose_reward
bitmap = Bitmap.new(200, 24)
bitmap.font.size = 16
bitmap.font.color = Color.new(0,0,0)
bitmap.draw_text(1, 1, bitmap.width, 24, reward)
bitmap.font.color = Color.new(255,255,255)
bitmap.draw_text(0, 0, bitmap.width, 24, reward)
@_reward_sprite = ::Sprite.new(self.viewport)
@_reward_sprite.bitmap = bitmap
@_reward_sprite.x = 10
@_reward_sprite.y = 196
@_reward_sprite.z = 99999
@_reward_duration = 300
end
def dispose_damage
if @_damage_sprite != nil
@_damage_sprite.dispose
@_damage_sprite = nil
end
end
def dispose_hit
if @_hit_sprite != nil
@_hit_sprite.dispose
@_hit_sprite = nil
end
end
def dispose_reward
if @_reward_sprite != nil
@_reward_sprite.dispose
@_reward_sprite = nil
end
end
end
#------------------------------------------------------------------------------
# Sprite Drop
#------------------------------------------------------------------------------
class Sprite_Drop < Sprite_Base
attr_accessor :character
def initialize(viewport, character=nil)
super(viewport)
@character = character
update
end
def update
super
update_bitmap
self.x = @character.screen_x
self.y = @character.screen_y
self.z = @character.screen_z
self.opacity = @character.opacity
self.blend_type = @character.blend_type
self.bush_depth = @character.bush_depth
if @character.animation_id != 0
start_animation($data_animations[@character.animation_id])
@character.animation_id = 0
end
end
def update_bitmap
return if @graphic_name == @character.graphic_name
@graphic_name = @character.graphic_name
self.bitmap = Cache.system(@graphic_name)
self.ox = 12
self.oy = 24
sx = @character.graphic_index % 16 * 24
sy = @character.graphic_index / 16 * 24
self.src_rect.set(sx, sy, 24, 24)
end
end
#------------------------------------------------------------------------------
# Sprite Weapon
#------------------------------------------------------------------------------
class Sprite_Weapon < Sprite_Base
attr_accessor :character
def initialize(viewport, character=nil)
super(viewport)
@character = character
self.visible = false
create_bitmap
update
end
def update
super
return unless Requiem_ABS::Allow_Weapons_Graphics
self.visible = @character.anime_attack > 0
update_src_rect
change_direction
end
def create_bitmap
self.bitmap = Cache.system("Iconset")
self.ox = 12
self.oy = 24
self.zoom_x = 0.80
self.zoom_y = 0.80
end
def update_src_rect
sx = weapon_index % 16 * 24
sy = weapon_index / 16 * 24
self.src_rect.set(sx, sy, 24, 24)
end
def change_direction
case @character.direction
when 2
self.x = @character.screen_x-6
self.z = @character.screen_z+2
self.mirror = false
change_angle(180, 135, 90)
when 4
self.x = @character.screen_x-10
self.z = @character.screen_z-1
self.mirror = false
change_angle(-45, 0, 45)
when 6
self.x = @character.screen_x+10
self.z = @character.screen_z+2
self.mirror = true
change_angle(45, 0, -45)
when 8
self.x = @character.screen_x+10
self.z = @character.screen_z-1
self.mirror = true
change_angle(45, 0, -45)
end
self.y = @character.screen_y-4
self.opacity = @character.opacity
self.blend_type = @character.blend_type
self.bush_depth = @character.bush_depth
end
def change_angle(a, b, c)
if @character.anime_attack >= 20
self.angle = a
elsif @character.anime_attack >= 15
self.angle = b
elsif @character.anime_attack >= 10
self.angle = c
end
end
def weapon_index
return 0 if @character.actor.nil?
if @character.actor.is_a?(Game_Actor) and @character.right_attack_on and @character.actor.equips[0] != nil
return @character.actor.equips[0].icon_index
elsif @character.actor.is_a?(Game_Actor) and @character.left_attack_on
if @character.actor.two_swords_style and @character.actor.equips[1] != nil
return @character.actor.equips[1].icon_index
elsif @character.actor.two_hands_legal? and @character.actor.equips[0] != nil and @character.actor.equips[0].ranged?
return @character.actor.equips[0].icon_index
end
elsif @character.actor.is_a?(Game_Enemy) and @character.actor.weapon_icon > 0
return @character.actor.weapon_icon
end
return 0
end
end
#------------------------------------------------------------------------------
# Sprite Shield
#------------------------------------------------------------------------------
class Sprite_Shield < Sprite_Base
attr_accessor :character
def initialize(viewport, character = nil)
super(viewport)
@character = character
self.visible = false
create_bitmap
update
end
def update
super
return unless Requiem_ABS::Allow_Shields_Graphics
return if @character.actor.nil?
self.visible = @character.actor.defending
update_src_rect
change_direction
moving_with_shield
end
def create_bitmap
self.bitmap = Cache.system("Iconset")
self.ox = 12
self.oy = 24
self.zoom_x = 0.80
self.zoom_y = 0.80
end
def update_src_rect
sx = shield_index % 16 * 24
sy = shield_index / 16 * 24
self.src_rect.set(sx, sy, 24, 24)
end
def change_direction
case @character.direction
when 2
self.mirror = true
self.x = @character.screen_x+6
self.z = @character.screen_z+1
when 4
self.mirror = false
self.x = @character.screen_x-6
self.z = @character.screen_z+1
when 6
self.mirror = true
self.x = @character.screen_x+6
self.z = @character.screen_z-1
when 8
self.mirror = false
self.x = @character.screen_x-6
self.z = @character.screen_z-1
end
self.y = @character.screen_y
self.opacity = @character.opacity
self.blend_type = @character.blend_type
self.bush_depth = @character.bush_depth
end
def moving_with_shield
if @character.moving?
self.wave_amp = 1
self.wave_length = 1
self.wave_speed = 6
else
self.wave_amp = 0
end
end
def shield_index
return 0 if @character.actor.nil?
if @character.actor.is_a?(Game_Actor) and !@character.actor.two_swords_style and @character.actor.armor1_id > 0
return $data_armors[@character.actor.armor1_id].icon_index
elsif @character.actor.is_a?(Game_Enemy) and @character.actor.shield_icon > 0
return @character.actor.shield_icon
end
return 0
end
end
#------------------------------------------------------------------------------
# Spriteset Map
#------------------------------------------------------------------------------
class Spriteset_Map
attr_accessor :viewport3
alias requiem_abs_sp_map_create_characters create_characters
alias requiem_abs_sp_map_dispose_characters dispose_characters
def create_characters
@range_sprites = []
for range in $game_range
next if range.nil? or !$game_map.in_range?(range)
@range_sprites.push(Sprite_Character.new(@viewport1, range))
end
@drop_sprites = []
for drop in $game_drop
next if drop.nil? or !$game_map.in_range?(drop)
@drop_sprites.push(Sprite_Drop.new(@viewport1, drop))
end
for bomb in $game_bomb
next if bomb.nil? or !$game_map.in_range?(bomb)
@drop_sprites.push(Sprite_Drop.new(@viewport1, bomb))
end
@weapon_sprites = []
@weapon_sprites.push(Sprite_Weapon.new(@viewport1, $game_player))
@shield_sprites = []
@shield_sprites.push(Sprite_Shield.new(@viewport1, $game_player))
for i in $game_map.events.keys.sort
@weapon_sprites.push(Sprite_Weapon.new(@viewport1, $game_map.events[i]))
@shield_sprites.push(Sprite_Shield.new(@viewport1, $game_map.events[i]))
end
requiem_abs_sp_map_create_characters
end
def update_characters
for sprite in @character_sprites
if sprite.character.is_a?(Game_Event)
if $game_map.in_range?(sprite.character) or sprite.character.trigger == 3 or sprite.character.trigger == 4
sprite.update
end
else
sprite.update
end
end
for range in @range_sprites
next if range.nil? or !$game_map.in_range?(range.character)
range.update
end
for drop in @drop_sprites
next if drop.nil? or !$game_map.in_range?(drop.character)
drop.update
end
for weapon in @weapon_sprites
next if weapon.nil? or !$game_map.in_range?(weapon.character)
weapon.update
end
for shield in @shield_sprites
next if shield.nil? or !$game_map.in_range?(shield.character)
shield.update
end
for range in $game_range
next if range.nil? or !$game_map.in_range?(range)
unless range.draw
@range_sprites.push(Sprite_Character.new(@viewport1, range))
range.draw = true
end
if range.destroy
$game_range.delete(range)
range.character_name = ""
end
end
for drop in $game_drop
next if drop.nil? or !$game_map.in_range?(drop)
unless drop.draw
@drop_sprites.push(Sprite_Drop.new(@viewport1, drop))
drop.draw = true
end
if drop.destroy
$game_drop.delete(drop)
drop.graphic_name = ""
end
end
for bomb in $game_bomb
next if bomb.nil? or !$game_map.in_range?(bomb)
unless bomb.draw
@drop_sprites.push(Sprite_Drop.new(@viewport1, bomb))
bomb.draw = true
end
if bomb.destroy
$game_bomb.delete(bomb)
bomb.graphic_name = ""
end
end
end
def dispose_characters
requiem_abs_sp_map_dispose_characters
for range in @range_sprites
next if range.nil?
range.dispose
end
for drop in @drop_sprites
next if drop.nil?
drop.dispose
end
for weapon in @weapon_sprites
next if weapon.nil?
weapon.dispose
end
for shield in @shield_sprites
next if shield.nil?
shield.dispose
end
end
end
#------------------------------------------------------------------------------
# Window Base
#------------------------------------------------------------------------------
class Window_Base < Window
def draw_actor_head(actor, x, y, enabled=true)
char_name = actor.character_name
char_index = actor.character_index
bitmap = Cache.character(char_name)
sign = char_name[/^[\!\$]./]
if sign != nil and sign.include?('$')
cw = bitmap.width / 3
ch = bitmap.height / 4
else
cw = bitmap.width / 12
ch = bitmap.height / 8
end
enbl = (enabled ? 255 : 128)
src_rect = Rect.new((char_index%4*3+1)*cw, (char_index/4*4)*ch, cw, ch/3*2)
self.contents.blt(x,y,bitmap,src_rect,enbl)
end
end
#------------------------------------------------------------------------------
# Scene Title
#------------------------------------------------------------------------------
class Scene_Title < Scene_Base
alias requiem_abs_scenetitle_create_game_objects create_game_objects
def create_game_objects
requiem_abs_scenetitle_create_game_objects
$game_range = []
$game_drop = []
$game_bomb = []
end
end
#------------------------------------------------------------------------------
# Scene Map
#------------------------------------------------------------------------------
class Scene_Map < Scene_Base
alias requiem_abs_smap_update update
alias requiem_abs_smap_terminate terminate
def update
requiem_abs_smap_update
for range in $game_range
next if range.nil? or !$game_map.in_range?(range)
range.update
end
for drop in $game_drop
next if drop.nil? or !$game_map.in_range?(drop)
drop.update
end
for bomb in $game_bomb
next if bomb.nil? or !$game_map.in_range?(bomb)
bomb.update
end
end
def update_encounter
end
end
#------------------------------------------------------------------------------
# Scene Item
#------------------------------------------------------------------------------
class Window_Item < Window_Selectable
def update_help
if $scene.is_a?(Scene_Item) and $scene.message != nil
@help_window.set_text($scene.message)
else
@help_window.set_text(item == nil ? "" : item.description)
end
end
end
#------------------------------------------------------------------------------
class Scene_Item < Scene_Base
attr_accessor :message
attr_accessor :delay
alias requiem_abs_sitem_start start
alias requiem_abs_sitem_update update
alias requiem_abs_sitem_update_item_selection update_item_selection
def start
requiem_abs_sitem_start
@actor = $game_party.members[0]
@message = nil
@delay = 0
end
def update
requiem_abs_sitem_update
if @delay <= 0
@message = nil
else
@delay -= 1
end
end
def update_item_selection
requiem_abs_sitem_update_item_selection
for button in @actor.item_hotkeys.keys
if Input.trigger?(button) and @item_window.item.is_a?(RPG::Item)
Sound.play_decision
@actor.item_hotkeys[button] = @item_window.item.id
@message = Requiem_ABS::Memorize_Text
@delay = 120
end
end
end
end
#------------------------------------------------------------------------------
# Scene Skill
#------------------------------------------------------------------------------
class Window_Skill < Window_Selectable
def update_help
if $scene.is_a?(Scene_Skill) and $scene.message != nil
@help_window.set_text($scene.message)
else
@help_window.set_text(skill == nil ? "" : skill.description)
end
end
end
#------------------------------------------------------------------------------
class Scene_Skill < Scene_Base
attr_accessor :message
attr_accessor :delay
alias requiem_abs_sskill_start start
alias requiem_abs_sskill_update update
alias requiem_abs_sskill_update_skill_selection update_skill_selection
def start
requiem_abs_sskill_start
@message = nil
@delay = 0
end
def update
requiem_abs_sskill_update
if @delay <= 0
@message = nil
else
@delay -= 1
end
end
def update_skill_selection
requiem_abs_sskill_update_skill_selection
for button in @actor.skill_hotkeys.keys
if Input.trigger?(button)
Sound.play_decision
@actor.skill_hotkeys[button] = @skill_window.skill.id
@message = "Memorizada!"
@delay = 120
end
end
end
end
#------------------------------------------------------------------------------
# Scene File
#------------------------------------------------------------------------------
class Scene_File < Scene_Base
alias requiem_abs_sfile_write_save_data write_save_data
alias requiem_abs_sfile_read_save_data read_save_data
def write_save_data(file)
requiem_abs_sfile_write_save_data(file)
Marshal.dump($game_range, file)
Marshal.dump($game_drop, file)
Marshal.dump($game_bomb, file)
end
def read_save_data(file)
requiem_abs_sfile_read_save_data(file)
$game_range = Marshal.load(file)
$game_drop = Marshal.load(file)
$game_bomb = Marshal.load(file)
end
end
#------------------------------------------------------------------------------
# High Priority
#------------------------------------------------------------------------------
Win32API.new("kernel32", "SetPriorityClass", "pi", "i").call(-1, 0x80)
#------------------------------------------------------------------------------
# End of ABS
#------------------------------------------------------------------------------
#==============================================================================
# Requiem HUD
#==============================================================================
OnOff_Switch = 0 # Switch that show or hide the HUD
Skills_Text = "Skills" # Text displayed on skills window
Items_Text = "Items" # Text displayed on items window
Ammo_Text = "Ammo" # Text displayed on ammunitions window
#------------------------------------------------------------------------------
Requiem_Masterpiece.register("Requiem HUD", 1.0, "29/03/2009")
#------------------------------------------------------------------------------
if Requiem_Masterpiece.enabled?("Requiem ABS", 5.0)
#------------------------------------------------------------------------------
class Requiem_HUD1 < Window_Base
def initialize
super(-32, -32, 224, 140)
self.opacity = 0
@actor = $game_party.members[0]
@old_hp = @actor.hp
@old_mp = @actor.mp
update
refresh
end
def update
return if $game_party.members.size <= 0
return unless @old_hp != @actor.hp or @old_mp != @actor.mp or @actor != $game_party.members[0]
@old_hp = @actor.hp
@old_mp = @actor.mp
@actor = $game_party.members[0]
refresh
end
def refresh
self.contents.clear
draw_hpbar(@actor, 34, 16)
draw_mpbar(@actor, 34, 38)
self.contents.font.size = 16
self.contents.font.color = Color.new(0,0,0)
self.contents.draw_text(19, 15, 24, 24, Vocab::hp_a)
self.contents.draw_text(19, 39, 24, 24, Vocab::mp_a)
self.contents.font.color = Color.new(255,255,255)
self.contents.draw_text(18, 14, 24, 24, Vocab::hp_a)
self.contents.draw_text(18, 38, 24, 24, Vocab::mp_a)
end
def draw_hpbar(actor, x, y)
base = Cache.system("Base")
self.contents.blt(x, y, base, base.rect)
bar = Cache.system("HP Bar")
meter = Rect.new(0, 0, base.width * actor.hp / actor.maxhp, base.height)
self.contents.blt(x, y, bar, meter)
end
def draw_mpbar(actor, x, y)
base = Cache.system("Base")
self.contents.blt(x, y, base, base.rect)
bar = Cache.system("MP Bar")
meter = Rect.new(0, 0, base.width * actor.mp / actor.maxmp, base.height)
self.contents.blt(x, y, bar, meter)
end
end
#------------------------------------------------------------------------------
class Requiem_HUD2 < Window_Base
def initialize
super(-32,-32,608,480)
self.opacity = 0
@actor = $game_party.members[0]
refresh
end
def update
return if $game_party.members.size <= 0
if @actor != $game_party.members[0]
@actor = $game_party.members[0]
refresh
end
end
def refresh
return if $game_party.members.size <= 0
self.contents.clear
self.contents.font.size = 16
bitmap = Cache.system("HUD")
rect = Rect.new(0, 0, 544, 416)
self.contents.blt(16, 16, bitmap, rect)
draw_skills(464, 28)
draw_items(464, 396)
draw_ammo(32, 396)
end
def draw_skills(x, y)
skill_count = 0
@actor.skill_hotkeys.each { |key, value|
next if value.nil?
skill = $data_skills[value]
next if skill.nil?
draw_icon(skill.icon_index, (32*skill_count)+x-4, y)
self.contents.font.color = Color.new(0,0,0)
self.contents.draw_text((32*skill_count)+x+5, y+17, 64, 24, Input.name?(key))
self.contents.font.color = Color.new(255,255,255)
self.contents.draw_text((32*skill_count)+x+4, y+16, 64, 24, Input.name?(key))
skill_count += 1
}
self.contents.font.color = Color.new(0,0,0)
self.contents.draw_text(x-7, y-15, 96, 24, Skills_Text, 1)
self.contents.font.color = Color.new(255,255,255)
self.contents.draw_text(x-8, y-16, 96, 24, Skills_Text, 1)
end
def draw_items(x, y)
item_count = 0
@actor.item_hotkeys.each { |key, value|
next if value.nil?
item = $data_items[value]
next if item.nil?
draw_icon(item.icon_index, (32*item_count)+x-4, y)
self.contents.font.color = Color.new(0,0,0)
self.contents.draw_text((32*item_count)+x+5, y+17, 64, 24, Input.name?(key))
self.contents.font.color = Color.new(255,255,255)
self.contents.draw_text((32*item_count)+x+4, y+16, 64, 24, Input.name?(key))
item_count += 1
}
self.contents.font.color = Color.new(0,0,0)
self.contents.draw_text(x-7, y-15, 96, 24, Items_Text, 1)
self.contents.font.color = Color.new(255,255,255)
self.contents.draw_text(x-8, y-16, 96, 24, Items_Text, 1)
end
def draw_ammo(x, y)
if @actor.equips[0] != nil and @actor.equips[0].ranged?
draw_icon(@actor.equips[0].ammo1.icon_index, x-4, y) if @actor.equips[0].ammo1 != nil
draw_icon(@actor.equips[0].ammo2.icon_index, x+28, y) if @actor.equips[0].ammo2 != nil
self.contents.font.color = Color.new(0,0,0)
self.contents.draw_text(x+5, y+17, 32, 24, Input.name?(Requiem_ABS::Right_Attack_Button))
self.contents.draw_text(x+37, y+17, 32, 24, Input.name?(Requiem_ABS::Left_Attack_and_Shield_Button))
self.contents.font.color = Color.new(255,255,255)
self.contents.draw_text(x+4, y+16, 32, 24, Input.name?(Requiem_ABS::Right_Attack_Button))
self.contents.draw_text(x+36, y+16, 32, 24, Input.name?(Requiem_ABS::Left_Attack_and_Shield_Button))
end
self.contents.font.color = Color.new(0,0,0)
self.contents.draw_text(x-7, y-16, 64, 24, Ammo_Text, 1)
self.contents.font.color = Color.new(255,255,255)
self.contents.draw_text(x-8, y-16, 64, 24, Ammo_Text, 1)
end
end
#------------------------------------------------------------------------------
class Scene_Map < Scene_Base
alias requiem_hudstart start
alias requiem_hudupdate update
alias requiem_hudterminate terminate
def start
requiem_hudstart
@hud_window1 = Requiem_HUD1.new
@hud_window2 = Requiem_HUD2.new
@hud_window1.visible = @hud_window1.active = false
@hud_window2.visible = @hud_window2.active = false
showing_hud
end
def update
requiem_hudupdate
@hud_window1.update if @hud_window1.active
@hud_window2.update if @hud_window2.active
showing_hud
end
def terminate
requiem_hudterminate
@hud_window1.dispose
@hud_window2.dispose
end
def showing_hud
if OnOff_Switch <= 0 or $game_switches[OnOff_Switch]
@hud_window1.visible = @hud_window1.active = true
@hud_window2.visible = @hud_window2.active = true
else
@hud_window1.visible = @hud_window1.active = false
@hud_window2.visible = @hud_window2.active = false
end
end
end
#------------------------------------------------------------------------------
end
#==============================================================================
# Requiem Enemies HP Bars
#==============================================================================
#------------------------------------------------------------------------------
Requiem_Masterpiece.register("Requiem Enemy HP Bars", 1.0, "29/03/2009")
#------------------------------------------------------------------------------
if Requiem_Masterpiece.enabled?("Requiem ABS", 5.0)
#------------------------------------------------------------------------------
class Requiem_EnemyHPBars < Sprite
def initialize(enemy, viewport)
super(viewport)
@enemy = enemy
@old_x = @old_y = 0
self.bitmap = Bitmap.new(45, 8)
refresh
end
def update
super
return unless @old_x != @enemy.screen_x-(self.bitmap.width/2) or @old_y != @enemy.screen_y
@old_x = self.x = @enemy.screen_x-(self.bitmap.width/2)
@old_y = self.y = @enemy.screen_y
refresh
end
def refresh
self.bitmap.clear
meter = (self.bitmap.width-2) * @enemy.actor.hp / @enemy.actor.maxhp
self.bitmap.fill_rect(0, 0, self.bitmap.width, self.bitmap.height, Color.new(0,0,0))
self.bitmap.gradient_fill_rect(1, 2, meter, (self.bitmap.height-4)/2, Color.new(255,160,160), Color.new(224,0,0))
self.bitmap.gradient_fill_rect(1, 2+((self.bitmap.height-4)/2), meter, (self.bitmap.height-4)/2, Color.new(224,64,64), Color.new(96,0,0))
end
def dispsoe
super
self.bitmap.dispose
self.dispose
end
end
#------------------------------------------------------------------------------
class Requiem_BossBar < Sprite
def initialize(event, viewport)
super(viewport)
@enemy = event
@hp = @enemy.actor.hp
@base = Cache.system("Boss Base")
@bar = Cache.system("Boss Bar")
self.bitmap = Bitmap.new(@base.width, @base.height)
self.x = (544 - self.bitmap.width) / 2
self.y = 416 - self.bitmap.height - 64
refresh
end
def update
super
return if @hp == @enemy.actor.hp
@hp = @enemy.actor.hp
refresh
end
def refresh
self.bitmap.clear
self.bitmap.blt(0, 0, @base, @base.rect)
meter = Rect.new(0, 0, @base.width * @enemy.actor.hp / @enemy.actor.maxhp, @base.height)
self.bitmap.blt(0, 0, @bar, meter)
end
def dispsoe
super
self.bitmap.dispose
@bitmap2.dispose
self.dispose
end
end
#------------------------------------------------------------------------------
class Scene_Map < Scene_Base
alias requiem_abs_enemyhp_smap_start start
alias requiem_abs_enemyhp_smap_update update
alias requiem_abs_enemyhp_smap_terminate terminate
alias requiem_abs_enemyhp_smap_update_transfer_player update_transfer_player
def start
@enemies_hp_bars = {}
requiem_abs_enemyhp_smap_start
end
def update
requiem_abs_enemyhp_smap_update
update_enemies_hp_bars
end
def update_enemies_hp_bars
for event in $game_map.events.values
next unless event.in_battle
if event.boss
if @boss_hud.nil? and !event.actor.dead?
@boss_hud = Requiem_BossBar.new(event, @spriteset.viewport3)
elsif @boss_hud != nil and !event.actor.dead?
@boss_hud.update
elsif @boss_hud != nil and event.actor.dead?
@boss_hud.dispose
@boss_hud = nil
end
else
if $game_player.in_range?($game_player, event, 3) and @enemies_hp_bars[event.id].nil? and !event.actor.dead?
next if event.object or event.puzzle
@enemies_hp_bars[event.id] = Requiem_EnemyHPBars.new(event, @spriteset.viewport3)
elsif $game_player.in_range?($game_player, event, 3) and @enemies_hp_bars[event.id] != nil and !event.actor.dead?
@enemies_hp_bars[event.id].update
elsif @enemies_hp_bars[event.id] != nil
@enemies_hp_bars[event.id].dispose
@enemies_hp_bars[event.id] = nil
end
end
end
end
def terminate
requiem_abs_enemyhp_smap_terminate
dispose_bars
end
def update_transfer_player
dispose_bars if $game_player.transfer?
requiem_abs_enemyhp_smap_update_transfer_player
end
def dispose_bars
if @boss_hud != nil
@boss_hud.dispose
@boss_hud = nil
end
for i in @enemies_hp_bars.values
next if i.nil?
i.dispose
end
@enemies_hp_bars.clear
end
end
#------------------------------------------------------------------------------
end
Es ist Action Kampfsystem von Vlad einem Portugiesen (oder Franzosen).
Es ist eins vie von Moghunter, aber viel einfacher.
Mir gefällt dieses besser, das XAS ist serh schwer zum verstehen.
Ich glaube Hybris 2nd Awakening verwendet das XAS.
Ich bin ja weder Ruby-Fan noch -Experte ich würde es lieber
vom Maker abschaffen aber tut ja nix zur Sache. Es gibt auch
Scripte die sich sogar mit beiden Versionen vertragen können,
da sie getrennten Code für beide haben aber sie beide im
selben Script stehen (siehe Apt Ploutôn Database).
Zitat
Wie kann ich das Script für den XP verwenden?
Ich habe mal von einem "Konverter" gehört, aber mehr weiß ich auch nicht.
...
Also wenns einen Converter gibt dann muss der aber seeehr komplex
arbeiten was das Code-Umgeschreibe angeht xD ~ und es würden
garantiert einige Scripte sich nicht convertieren lassen weil sie zur
Zielversion kein Stück passen.
--
Solange es hier falschzitierende Ärsche gibt, dulde ich keinerlei Zitatboxen, die von mir sein sollen.