#===============================================================================
# Flying Enemies
# Version 1.1
# Author game_guy
#-------------------------------------------------------------------------------
# Intro:
# Flying Enemies adds some realism to your game. It basically gives the
# appearance and feel that enemies are floating off the ground. Only weapons
# with the "flying" element can attack enemies that aren't on the ground. e.g.
# a gun or a bow. A guy with a sword couldn't very well jump 20 feet and kill
# something could they? (maybe, it is just a game)
#
# Features:
# -Flying Enemies
# -Specific Spells and Weapons can hurt
# -Floating animation for enemies
#
# Instructions:
# -Go to the config, set the following data there. To make a weapon hit a flying
# enemy, you must give it the flying element you specified below. The same for
# skills, except some skills get exceptions. Read Notes.
#
# Notes:
# -Only weapons marked with the Flying_Element can hit a flying enemy.
# -Only skills with the flying element can hit flying enemies.
#
# Compatibility:
# -Not tested with SDK.
# -Not tested with any custom battle systems.
# -Attacking flying enemies (and missing) will most likely work throughout all
# custom battle systems.
# -Animating enemy up and down may or may not work in any custom battle system.
#
# Credits:
# -game_guy ~ For creating it.
# -Final Fantasy X ~ Started playing this game again and Tidus was unable to
# hit any flying enemies. ;_; Hence inspiration. :3
#===============================================================================
module GG_Fly
#---------------------------------------------
# Weapons and skill must have this element
# in order to attack flying enemies.
#---------------------------------------------
Flying_Element = 17
#---------------------------------------------
# Place enemy ids in the array below to mark
# them as flying enemies.
#---------------------------------------------
Flying_Enemies = [1, 2]
#---------------------------------------------
# The 'miss' message displayed when an out of
# reach attacker attempts to hit a flying
# enemy.
#---------------------------------------------
Miss_Message = "Out of reach!"
#---------------------------------------------
# Moves flying enemies up and down to give
# the "floating" feeling.
#---------------------------------------------
Animate_Enemy = true
end
class Game_Enemy
def flying?
return GG_Fly::Flying_Enemies.include?(self.id)
end
end
class Game_Battler
alias gg_fly_attack_effect_lat attack_effect
def attack_effect(attacker)
if self.is_a?(Game_Enemy) && attacker.is_a?(Game_Actor)
if self.flying? && !attacker.element_set.include?(GG_Fly::Flying_Element)
self.damage = GG_Fly::Miss_Message
return true
end
end
return gg_fly_attack_effect_lat(attacker)
end
alias gg_fly_skill_effect_lat skill_effect
def skill_effect(user, skill)
if self.is_a?(Game_Enemy) && user.is_a?(Game_Actor)
if self.flying? && !skill.element_set.include?(GG_Fly::Flying_Element)
self.damage = GG_Fly::Miss_Message
return true
end
end
return gg_fly_skill_effect_lat(user, skill)
end
end
class Sprite_Battler < RPG::Sprite
alias gg_init_flying_enemy_lat initialize
def initialize(viewport, battler = nil)
gg_init_flying_enemy_lat(viewport, battler)
if battler != nil && battler.is_a?(Game_Enemy)
@update_frame = 0
@speed = 2
@new_y = battler.screen_y
end
end
alias gg_animate_flying_enemy_lat update
def update
gg_animate_flying_enemy_lat
if GG_Fly::Animate_Enemy && @battler.is_a?(Game_Enemy) && @battler.flying?
@update_frame += 1
if @update_frame == 2
@update_frame = 0
@new_y += @speed
if @new_y == @battler.screen_y
@speed = 1
elsif @new_y == @battler.screen_y + 16
@speed = -1
end
end
self.y = @new_y
end
end
end