Brimstone-x
Member
The Request
I want it so I can assign 2 skills on one skill hotkey, I tried this several times but one skill usually cancels out the other. I do this so when you press A or S, your character can change graphics while using the skill (making it look neat).
But when I try and use another character that has a different skill assigned to the hotkey, it doesn’t work. OR vice versa with the first hero. Does anyone know how to fix this?
This is the part of the script with the skills involved, if you think you need to look at the other 2 parts of the script, just tell me and ill post them:
I want it so I can assign 2 skills on one skill hotkey, I tried this several times but one skill usually cancels out the other. I do this so when you press A or S, your character can change graphics while using the skill (making it look neat).
But when I try and use another character that has a different skill assigned to the hotkey, it doesn’t work. OR vice versa with the first hero. Does anyone know how to fix this?
This is the part of the script with the skills involved, if you think you need to look at the other 2 parts of the script, just tell me and ill post them:
Code:
#======================================
# â– Squad Based Action Battle System
#======================================
#  By: Near Fantastica
# Date: 02.07.05
# Version: 3.4
# Thanks To: Cybersam for the Keyboard Script
# Thanks To: Prexus for the Graphics
#======================================
#
#======================================
# â– ABS Key Commands
#======================================
# Numlock â— Change Lead Forward
# Numlock â— Change Lead Backwards
# Numlock â— Waits Leader
# Y â— Waits Allies
# U â— Gathers Allies
# Numlock â— Dash
# Numlock â— Sneak
# P â— Toggle Hud
# Q(L) â— Melee Attack
# W(R) â— Range Attack
# A(X) â— Skill Key 1
# S(Y) â— Skill Key 2
# K â— Skill Key 3
# L â— Skill Key 4
# N â— Wide Follow
# M â— Close Follow
#======================================
#
#======================================
# â– ABS Enemy Ai List
#======================================
# Name
# Name Of the Enemy in The Data Base
#---------------------------------------------------------------------------
# Behavior
# Passive = 0 â— The Event (Enemy) will only attack when attacked
# Aggressive = 1 â— The Event will attack when one of its Detection level are set true
# Linking = 2 â— Event will only attack when another Event is attacked with in its Detection level
# Aggressive Linking = 3 â— Event will attack when either Aggressive or Linking is true
#---------------------------------------------------------------------------
# Detection
# Sound = range â— The range of sound the enemy can hear inactive if set to zero
# Sight = range â— The range of sightthe enemy can see inactive if set to zero
#---------------------------------------------------------------------------
# Aggressiveness
# Aggressiveness = Level â— The high number the less Aggressive the Event
#---------------------------------------------------------------------------
# Movement
# Speed = Level â— The movment Speed of the event when engaged
# Frequency = Level â— The movment Frequency of the event when engaged
#---------------------------------------------------------------------------
# Trigger
# Erased = 0 â— The event will be erased on death
# Switch = 1 â— The event will be trigger Switch[ID] on death
# Varible = 2 â— The event will be set the Varible[ID] = VALUE on death
# Local Switch = 3 â— The event will trigger Local_Switch[ID] on death
#======================================
#
#======================================
# â– ABS CONSTANTS
#======================================
# â— DEAD_DISPLAY is the sprite that is displayed when an actor is dead
# â— DEAD_DISPLAY[Data_Base_Actor_ID] = ["Character_Set_Name", X of sprite, Y of sprite]
#---------------------------------------------------------------------------
$DEAD_DISPLAY = {}
$DEAD_DISPLAY[2] = ["Redman", 4, 3] #Actor 1
$DEAD_DISPLAY[1] = ["189-Down01", 6, 1] #Actor 2
#---------------------------------------------------------------------------
# â— RANGE_ELEMENT_ID is which element the range is set to
#---------------------------------------------------------------------------
$RANGE_ELEMENT_ID = 1 #Element 1
#---------------------------------------------------------------------------
# â— RANGE_DISPLAY is the setup for range weapons
# â— RANGE_DISPLAY[Data_Base_Weapon_ID] =
# ["Character_Set_Name", New Animation Id, Item Id of Ammo]
#---------------------------------------------------------------------------
$RANGE_DISPLAY = {}
$RANGE_DISPLAY[9] = ["Bomb", 6, 2] #Weapon 9
$RANGE_DISPLAY[10] = ["Dagger", 7, 2] #Weapon 10
#======================================
class Action_Battle_System
#--------------------------------------------------------------------------
attr_accessor :ally_ai_active
attr_accessor :enemies
attr_accessor :display
attr_accessor :hud
attr_accessor :hud_pc
attr_accessor :hudname
attr_accessor :dash_level
attr_accessor :sneak_level
attr_accessor :transer_player
attr_accessor :ranged
attr_accessor :skill_key
attr_accessor :player_engaged
attr_accessor :close_follow
#--------------------------------------------------------------------------
def initialize
# Ally AI Flag
@ally_ai_active = true
# Enemies List
@enemies = {}
# Range List
@ranged = {}
# Dashing
@dashing = false
@dash_restore = false
@dash_reduce= false
@dash_timer = 0
@dash_level = 5
@dash_sec = 0
# Sneaking
@sneaking = false
@sneak_restore = false
@sneak_reduce= false
@sneak_timer = 0
@sneak_level = 5
@sneak_sec = 0
# Display
@display = []
@display[0] = false
@display[1] = ""
# Hud
@hud = true
@hud_pc = false
@hudname = "HUD-Display"
# Transfering Player
@transer_player = false
#--------------------# Skill Keys##############-----------------------------------------------
@skill_key = {}
@skill_key[1] = 1
@skill_key[2] = 2 or @skill_key[2] = 5
#------------ Ally tracking--------------------
@player_engaged = false
@player_obect = nil
# Party Command
@close_follow = false
end
#--------------------------------------------------------------------------
def hud_control(flag)
@hud = flag
return
end
#--------------------------------------------------------------------------
def hud_player_control(flag)
@hud_pc = flag
return
end
#--------------------------------------------------------------------------
def set_ally_ai(tirgger)
@ally_ai_active = tirgger
return
end
#--------------------------------------------------------------------------
def refresh(event, list, character_name)
@enemies.delete(event.id)
return if character_name == ""
return if list == nil
for i in 0...list.size
if list[i].code == 108 and list[i].parameters == ["ABS Event Command List"]
name = list[i+1].parameters[0].split
for x in 1...$data_enemies.size
enemy = $data_enemies[x]
if name[1].upcase == enemy.name.upcase
@enemies[event.id] = Game_ABS_Enemy.new(enemy.id)
@enemies[event.id].event_id = event.id
default_setup(event.id)
behavior = list[i+2].parameters[0].split
@enemies[event.id].behavior = behavior[1].to_i
sound = list[i+3].parameters[0].split
@enemies[event.id].detection[0] = sound[1].to_i
sight = list[i+4].parameters[0].split
@enemies[event.id].detection[1] = sight[1].to_i
aggressiveness = list[i+5].parameters[0].split
@enemies[event.id].aggressiveness = aggressiveness[1].to_i
speed = list[i+6].parameters[0].split
@enemies[event.id].speed = speed[1].to_i
frequency = list[i+7].parameters[0].split
@enemies[event.id].frequency = frequency[1].to_i
trigger = list[i+8].parameters[0].split
@enemies[event.id].trigger= [trigger[1].to_i, trigger[2].to_i, trigger[3].to_i]
end
end
end
end
end
#--------------------------------------------------------------------------
def default_setup(id)
@enemies[id].behavior = 1
@enemies[id].detection[0] = 1
@enemies[id].detection[1] = 4
@enemies[id].aggressiveness = 2
@enemies[id].engaged[0] = false
@enemies[id].engaged[1] = 0
@enemies[id].speed = 4
@enemies[id].frequency = 5
end
#--------------------------------------------------------------------------
def update
update_dash if @sneaking == false
update_sneak if @dashing == false
update_enemies
update_range
update_allies if @ally_ai_active == true
Graphics.frame_reset
end
#--------------------------------------------------------------------------
def update_range
for range in @ranged.values
range.update
end
end
#--------------------------------------------------------------------------
def update_allies
for ally in $game_allies.values
next if ally.under_attack == true
if @player_engaged == true
ally.under_attack = true
ally.forced_attack = true
ally.object = @player_obect
end
end
end
#--------------------------------------------------------------------------
def update_dash
if Kboard.keyb($R_Key_NUMLOCK) == 1
if $game_player.moving?
@dashing = true
$game_player.move_speed = 5
for ally in $game_allies.values
ally.move_speed = 5
end
@dash_restore = false
if @dash_reduce == false
@dash_timer = 50 # Initial time off set
@dash_reduce = true
else
@dash_timer-= 1
end
@dash_sec = (@dash_timer / Graphics.frame_rate)%60
if @dash_sec == 0
if @dash_level != 0
@dash_level -= 1
@dash_timer = 50 # Timer Count
end
end
if @dash_level == 0
@dashing = false
$game_player.move_speed = 4
for ally in $game_allies.values
ally.move_speed = 4
end
end
end
else
@dashing = false
$game_player.move_speed = 4
for ally in $game_allies.values
ally.move_speed = 4
end
@dash_reduce = false
if @dash_restore == false
@dash_timer = 80 # Initial time off set
@dash_restore = true
else
@dash_timer-= 1
end
@dash_sec = (@dash_timer / Graphics.frame_rate)%60
if @dash_sec == 0
if @dash_level != 5
@dash_level+= 1
@dash_timer = 60
end
end
end
end
#--------------------------------------------------------------------------
def update_sneak
if Kboard.keyb($R_Key_NUMLOCK) == 1
if $game_player.moving?
@sneaking = true
$game_player.move_speed = 3
for ally in $game_allies.values
ally.move_speed = 3
end
@sneak_restore = false
if @sneak_reduce == false
@sneak_timer = 50 # Initial time off set
@sneak_reduce = true
else
@sneak_timer-= 1
end
@sneak_sec = (@sneak_timer / Graphics.frame_rate)%60
if @sneak_sec == 0
if @sneak_level != 0
@sneak_level -= 1
@sneak_timer = 100 # Timer Count
end
end
if @sneak_level == 0
@sneaking = false
$game_player.move_speed = 4
for ally in $game_allies.values
ally.move_speed = 4
end
end
end
else
@sneaking = false
$game_player.move_speed = 4
for ally in $game_allies.values
ally.move_speed = 4
end
@sneak_reduce = false
if @sneak_restore == false
@sneak_timer = 80 # Initial time off set
@sneak_restore = true
else
@sneak_timer-= 1
end
@sneak_sec = (@sneak_timer / Graphics.frame_rate)%60
if @sneak_sec == 0
if @sneak_level != 5
@sneak_level+= 1
@sneak_timer = 60 # Timer Count
end
end
end
end
#--------------------------------------------------------------------------
def update_enemies
for enemy in @enemies.values
if enemy.ranged != nil
enemy.ranged.update
end
case enemy.behavior
when 0
if enemy.engaged[0] == true
next if engaged_enemy_detection?(enemy,1) == true
next if engaged_enemy_detection?(enemy, 0) == true
end
when 1
if enemy.engaged[0] == true
next if engaged_enemy_detection?(enemy,1) == true
next if engaged_enemy_detection?(enemy, 0) == true
else
next if enemy_detection_sight?(enemy) == true
next if enemy_detection_sound?(enemy) == true
end
when 2
if enemy.engaged[0] == true
next if engaged_enemy_linking?(enemy, 1) == true
next if engaged_enemy_linking?(enemy, 0) == true
else
next if enemy_linking?(enemy) == true
end
when 3
if enemy.engaged[0] == true
next if engaged_enemy_linking?(enemy,1) == true
next if engaged_enemy_linking?(enemy,0) == true
else
next if enemy_detection_sight?(enemy) == true
next if enemy_detection_sound?(enemy) == true
next if enemy_linking?(enemy) == true
end
end
end
end
#--------------------------------------------------------------------------
def set_event_movement(enemy)
event = $game_map.events[enemy.event_id]
enemy.move_type = event.move_type
enemy.move_frequency = event.move_frequency
enemy.move_speed = event.move_speed
if enemy.engaged[1] == 0
event.object = $game_player
else
event.object = $game_allies[enemy.engaged[1]]
end
event.move_type = 4
event.move_toward_object
event.move_frequency = enemy.frequency
event.move_speed = enemy.speed
end
#--------------------------------------------------------------------------
def return_event_movement(enemy)
event = $game_map.events[enemy.event_id]
event.move_type = enemy.move_type
event.move_frequency = enemy.move_frequency
event.move_speed = enemy.move_speed
end
#--------------------------------------------------------------------------
def engaged_enemy_linking?(enemy, level)
if enemy.detection[level] != 0
if enemy.engaged[1] == 0
object = $game_player
else
object = $game_allies[enemy.engaged[1]]
end
if in_range?($game_map.events[enemy.event_id], object, enemy.detection[level])
enemy.linking = false
enemy_attack(enemy)
return true
else
if enemy.linking == false
enemy.engaged[0] = false
if enemy.engaged[1] == 0
@player_engaged = false
else
$game_allies[enemy.engaged[1]].under_attack = false
end
enemy.engaged[1] = 0
return_event_movement(enemy)
return false
end
end
end
end
#--------------------------------------------------------------------------
def enemy_linking?(enemy)
for key in @enemies.keys
if in_range?($game_map.events[enemy.event_id], $game_map.events[key], enemy.detection[1])
if @enemies[key].engaged[0] == true
enemy.engaged[0] = true
enemy.engaged[1] = @enemies[key].engaged[1]
enemy.linking = true
set_event_movement(enemy)
return true
end
end
end
return false
end
#--------------------------------------------------------------------------
def enemy_detection_sound?(enemy)
if enemy.detection[0] != 0
if in_range?($game_map.events[enemy.event_id], $game_player, enemy.detection[0])
if @sneaking == true
return false
end
enemy.engaged[0] = true
enemy.engaged[1] = 0
set_event_movement(enemy)
return true
end
for key in $game_allies.keys
if $game_allies[key].map_id == $game_map.map_id
next if $game_allies[key].dead == true
if in_range?($game_map.events[enemy.event_id], $game_allies[key], enemy.detection[0])
if $game_party.actors[key] != nil
if @sneaking == true
return false
end
enemy.engaged[0] = true
enemy.engaged[1] = key
set_event_movement(enemy)
return true
end
end
end
end
end
return false
end
#--------------------------------------------------------------------------
def enemy_detection_sight?(enemy)
if enemy.detection[1] != 0
if in_range?($game_map.events[enemy.event_id], $game_player, enemy.detection[1])
if facing?($game_map.events[enemy.event_id], $game_player)
enemy.engaged[0] = true
enemy.engaged[1] = 0
set_event_movement(enemy)
return true
end
end
for key in $game_allies.keys
if $game_allies[key].map_id == $game_map.map_id
next if $game_allies[key].dead == true
if in_range?($game_map.events[enemy.event_id], $game_allies[key], enemy.detection[1])
if facing?($game_map.events[enemy.event_id], $game_allies[key])
if $game_party.actors[key] != nil
enemy.engaged[0] = true
enemy.engaged[1] = key
set_event_movement(enemy)
return true
end
end
end
end
end
end
return false
end
#--------------------------------------------------------------------------
def engaged_enemy_detection?(enemy, level)
if enemy.detection[level] != 0
if enemy.engaged[1] == 0
object = $game_player
else
id = enemy.engaged[1]
object = $game_allies[id]
end
if in_range?($game_map.events[enemy.event_id], object, enemy.detection[level])
enemy_attack(enemy)
return true
else
enemy.engaged[0] = false
if enemy.engaged[1] == 0
@player_engaged = false
else
$game_allies[enemy.engaged[1]].under_attack = false
end
enemy.engaged[1] = 0
return_event_movement(enemy)
return false
end
end
end
#--------------------------------------------------------------------------
def in_range?(element, object, range)
x = (element.x - object.x) * (element.x - object.x)
y = (element.y - object.y) * (element.y - object.y)
r = x + y
if r <= (range * range)
return true
else
return false
end
end
#--------------------------------------------------------------------------
def in_range(element, range)
objects = []
x = (element.x - $game_player.x) * (element.x - $game_player.x)
y = (element.y - $game_player.y) * (element.y - $game_player.y)
r = x + y
if r <= (range * range)
objects.push($game_party.actors[0])
end
for key in $game_allies.keys
ally = $game_allies[key]
x = (element.x - ally.x) * (element.x - ally.x)
y = (element.y - ally.y) * (element.y - ally.y)
r = x + y
if r <= (range * range)
next if $game_party.actors[key] == nil
objects.push($game_party.actors[key])
end
end
return objects
end
#--------------------------------------------------------------------------
def facing?(element, object)
if element.direction == 2
if object.y >= element.y
return true
end
end
if element.direction == 4
if object.x <= element.x
return true
end
end
if element.direction == 6
if object.x >= element.x
return true
end
end
if element.direction == 8
if object.y <= element.y
return true
end
end
return false
end
#--------------------------------------------------------------------------
def in_line?(element, object)
if element.direction == 2
if object.x == element.x
return true
end
end
if element.direction == 4
if object.y == element.y
return true
end
end
if element.direction == 6
if object.y == element.y
return true
end
end
if element.direction == 8
if object.x == element.x
return true
end
end
return false
end
#--------------------------------------------------------------------------
def enemy_pre_attack(enemy, actions)
if enemy.hp * 100.0 / enemy.maxhp > actions.condition_hp
return true
end
if $game_party.max_level < actions.condition_level
return true
end
switch_id = actions.condition_switch_id
if actions.condition_switch_id > 0 and $game_switches[switch_id] == false
return true
end
n = rand(11)
if actions.rating < n
return true
end
return false
end
#--------------------------------------------------------------------------
def hit_actor(object, enemy)
return if object == nil
object.jump(0, 0)
object.animation_id = enemy.animation2_id
end
#--------------------------------------------------------------------------
def actor_non_dead?(actor, enemy)
if actor.dead?
return_event_movement(enemy)
enemy.engaged[0] = false
enemy.engaged[1] = 0
$game_party.kill_actor(actor.id)
if $game_party.all_dead?
$game_temp.gameover = true
end
return false
end
return true
end
#--------------------------------------------------------------------------
def set_engaged(enemy)
if enemy.engaged[1] == 0
@player_engaged = true
@player_obect = $game_map.events[enemy.event_id]
else
$game_allies[enemy.engaged[1]].object = $game_map.events[enemy.event_id]
$game_allies[enemy.engaged[1]].under_attack = true
end
end
#--------------------------------------------------------------------------
def enemy_attack(enemy)
for actions in enemy.actions
next if enemy_pre_attack(enemy, actions) == true
case actions.kind
when 0 #Basic
if Graphics.frame_count % (enemy.aggressiveness * 20) == 0
case actions.basic
when 0 #Attack
if enemy.engaged[1] == 0
object = $game_player
else
object = $game_allies[enemy.engaged[1]]
end
if in_range?($game_map.events[enemy.event_id], object, 1) and
facing?($game_map.events[enemy.event_id], object)
actor = $game_party.actors[enemy.engaged[1]]
actor.attack_effect(enemy)
set_engaged(enemy)
if $game_party.actors[enemy.engaged[1]].damage != "Miss" and $game_party.actors[enemy.engaged[1]].damage != 0
hit_actor(object, enemy)
end
actor_non_dead?(actor, enemy)
return
end
when 1..3 #Nothing
return
end
end
when 1 #Skill
skill = $data_skills[actions.skill_id]
case skill.scope
when 1 # One Enemy
if Graphics.frame_count % (enemy.aggressiveness * 10) == 0
if enemy.engaged[1] == 0
object = $game_player
actor = $game_party.actors[0]
else
object = $game_allies[enemy.engaged[1]]
actor = $game_party.actors[enemy.engaged[1]]
end
if in_line?($game_map.events[enemy.event_id], object)
next if enemy.can_use_skill?(skill) == false
next if enemy.ranged != nil
enemy.ranged = Game_Ranged.new("Magic", $game_map.events[enemy.event_id], enemy, skill)
enemy.sp -= skill.sp_cost
end
end
when 2 # All Emenies
if Graphics.frame_count % (enemy.aggressiveness * 100) == 0
next if enemy.can_use_skill?(skill) == false
enemy.sp -= skill.sp_cost
actors = in_range($game_map.events[enemy.event_id], 7)
next if actors[0].dead?
$game_map.events[enemy.event_id].animation_id = skill.animation2_id
for actor in actors
actor.effect_skill(enemy, skill)
if $game_party.actors[enemy.engaged[1]].damage != "Miss" and $game_party.actors[enemy.engaged[1]].damage != 0
hit_actor(object, enemy)
end
set_engaged(enemy)
if enemy.engaged[1] == 0
object = $game_player
else
object = $game_allies[enemy.engaged[1]]
end
actor_non_dead?(actor, enemy)
end
return
end
when 3..4 # User
if Graphics.frame_count % (enemy.aggressiveness * 100) == 0
if enemy.hp < skill.power.abs
enemy.effect_skill(enemy, skill)
enemy.sp -= skill.sp_cost
$game_map.events[enemy.event_id].animation_id = skill.animation2_id
end
return
end
when 7 # User
if Graphics.frame_count % (enemy.aggressiveness * 100) == 0
if enemy.hp < skill.power.abs
enemy.effect_skill(enemy, skill)
enemy.sp -= skill.sp_cost
$game_map.events[enemy.event_id].animation_id = skill.animation2_id
end
return
end
end
return
end
end
else
return
end
#--------------------------------------------------------------------------
def hit_event(event, animation)
event.jump(0, 0)
return if animation == 0
event.animation_id = animation
end
#--------------------------------------------------------------------------
def event_non_dead?(enemy)
if enemy.dead?
if enemy.engaged[1] == 0
@player_engaged = false
else
$game_allies[enemy.engaged[1]].under_attack = false
end
treasure(enemy)
id = enemy.event_id
@enemies.delete(id)
event = $game_map.events[enemy.event_id]
event.character_name = ""
case enemy.trigger[0]
when 0
event.erase
when 1
print "EVENT " + event.id.to_s + "Trigger Not Set Right ~!" if event_actor.trigger[1] == 0
$game_switches[enemy.trigger[1]] = true
$game_map.need_refresh = true
when 2
print "EVENT " + event.id.to_s + "Trigger Not Set Right ~!" if event_actor.trigger[1] == 0
if enemy.trigger[2] == 0
$game_variables[enemy.trigger[1]] += 1
$game_map.need_refresh = true
else
$game_variables[enemy.trigger[1]] = enemy.trigger[2]
$game_map.need_refresh = true
end
when 3
value = "A" if enemy.trigger[1] == 1
value = "B" if enemy.trigger[1] == 2
value = "C" if enemy.trigger[1] == 3
value = "D" if enemy.trigger[1] == 4
print "EVENT " + event.id.to_s + "Trigger Not Set Right ~!" if value == 0
key = [$game_map.map_id, event.id, value]
$game_self_switches[key] = true
$game_map.need_refresh = true
end
return false
end
return true
end
#--------------------------------------------------------------------------
def treasure(enemy)
exp = 0
gold = 0
treasures = []
unless enemy.hidden
exp += enemy.exp
gold += enemy.gold
if rand(100) < enemy.treasure_prob
if enemy.item_id > 0
treasures.push($data_items[enemy.item_id])
end
if enemy.weapon_id > 0
treasures.push($data_weapons[enemy.weapon_id])
end
if enemy.armor_id > 0
treasures.push($data_armors[enemy.armor_id])
end
end
end
treasures = treasures[0..5]
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
if actor.cant_get_exp? == false
last_level = actor.level
actor.exp += exp
if actor.level > last_level
@display[0] = true
@display[1] = "LEVEL UP ~!"
actor.hp = actor.maxhp
actor.sp = actor.maxsp
end
end
end
$game_party.gain_gold(gold)
for item in treasures
case item
when RPG::Item
$game_party.gain_item(item.id, 1)
when RPG::Weapon
$game_party.gain_weapon(item.id, 1)
when RPG::Armor
$game_party.gain_armor(item.id, 1)
end
end
end
#--------------------------------------------------------------------------
def player_attack
if $RANGE_DISPLAY[$game_party.actors[0].weapon_id] == nil
if Graphics.frame_count % 2 == 0
for enemy in @enemies.values
event = $game_map.events[enemy.event_id]
if facing?($game_player, event) and in_range?($game_player, event, 1)
actor = $game_party.actors[0]
enemy.attack_effect(actor)
if enemy.damage != "Miss" and enemy.damage != 0
hit_event(event, $data_weapons[actor.weapon_id].animation2_id)
end
if event_non_dead?(enemy)
@player_engaged = false
if enemy.engaged[0] == false
enemy.engaged[0] = true
enemy.engaged[1] = 0
set_event_movement(enemy)
end
end
end
end
end
end
end
#--------------------------------------------------------------------------
def player_ranged
weapon = $data_weapons[$game_party.actors[0].weapon_id]
return if weapon == nil
if weapon.element_set.include?($RANGE_ELEMENT_ID)
ammo = $RANGE_DISPLAY[weapon.id]
return if ammo == nil
if $game_party.item_number(ammo[2]) != 0
if @ranged[0] == nil
$game_party.lose_item(ammo[2], 1)
@ranged[0] = Game_Ranged.new("Weapon", $game_player, $game_party.actors[0], $game_party.actors[0].weapon_id)
end
end
end
end
#--------------------------------------------------------------------------
def player_skill(skill_key_id)
skill = $data_skills[@skill_key[skill_key_id]]
return if skill == nil
actor = $game_party.actors[0]
return if not actor.skills.include?(skill.id)
case skill.scope
when 1 # One Enemy
if skill.element_set.include?($RANGE_ELEMENT_ID)
if @ranged[0] == nil
return if actor.can_use_skill?(skill) == false
@ranged[0] = Game_Ranged.new("Magic", $game_player, actor, skill)
actor.sp -= skill.sp_cost
return
end
else
return if actor.can_use_skill?(skill) == false
actor.sp -= skill.sp_cost
for enemy in @enemies.values
next if enemy == nil
event = $game_map.events[enemy.event_id]
if facing?($game_player, event) and in_range?($game_player, event, 1)
enemy.effect_skill(actor, skill)
if enemy.damage != "Miss" and enemy.damage != 0
hit_event(event, skill.animation2_id)
end
if event_non_dead?(enemy)
if enemy.engaged[0] == false
enemy.engaged[0] = true
enemy.engaged[1] = 0
set_event_movement(enemy)
return
end
end
end
end
end
when 2 # All Emenies
return if actor.can_use_skill?(skill) == false
$game_player.animation_id = skill.animation2_id
actor.sp -= skill.sp_cost
for enemy in @enemies.values
next if enemy == nil
enemy.effect_skill(actor, skill)
if enemy.damage != "Miss" and enemy.damage != 0
event = $game_map.events[enemy.event_id]
hit_event(event, 0)
end
if event_non_dead?(enemy)
if enemy.engaged[0] == false
enemy.engaged[0] = true
enemy.engaged[1] = 0
set_event_movement(enemy)
end
end
end
return
when 3..4 # User
return if actor.can_use_skill?(skill) == false
actor.effect_skill(actor, skill)
actor.sp -= skill.sp_cost
$game_player.animation_id = skill.animation2_id
return
when 7 # User
return if actor.can_use_skill?(skill) == false
actor.effect_skill(actor, skill)
actor.sp -= skill.sp_cost
$game_player.animation_id = skill.animation2_id
end
end
#--------------------------------------------------------------------------
def ally_melee_attack(ally, id)
enemy = @enemies[id]
actor = $game_party.actors[ally.actor_id]
random = rand(100)
return if random >= 20
return if $RANGE_DISPLAY[actor.weapon_id] != nil
return if not Graphics.frame_count % 5 == 0
enemy.attack_effect(actor)
if enemy.damage != "Miss" and enemy.damage != 0
event = $game_map.events[enemy.event_id]
hit_event(event, $data_weapons[actor.weapon_id].animation2_id)
end
if not event_non_dead?(enemy)
ally.under_attack = false
end
end
#--------------------------------------------------------------------------
def ally_ranged_weapon?(ally, id)
event = $game_map.events[id]
actor = $game_party.actors[ally.actor_id]
return false if in_line?(ally, event) == false
for allies in $game_allies.values
next if allies == ally
return false if in_line?(ally, allies)
end
return false if $RANGE_DISPLAY[actor.weapon_id] == nil
weapon = $data_weapons[actor.weapon_id]
return false if weapon == nil
return false if weapon.element_set.include?($RANGE_ELEMENT_ID) == false
return false if @ranged[ally.actor_id] != nil
ammo = $RANGE_DISPLAY[weapon.id]
return false if ammo == nil
return false if $game_party.item_number(ammo[2]) == 0
$game_party.lose_item(ammo[2], 1)
@ranged[ally.actor_id] = Game_Ranged.new("Weapon", ally, actor, actor.weapon_id)
return true
end
#--------------------------------------------------------------------------
def ally_ranged_spell?(ally, id)
event = $game_map.events[id]
actor = $game_party.actors[ally.actor_id]
return false if @ranged[ally.actor_id] != nil
return false if in_line?(ally, event) == false
for allies in $game_allies.values
next if allies == ally
return false if in_line?(ally, allies)
end
for id in actor.skills
skill = $data_skills[id]
next if skill.scope > 1
next if skill.element_set.include?($RANGE_ELEMENT_ID) == false
next if skill.sp_cost > actor.sp
next if facing?(ally, event) == false
@ranged[ally.actor_id] = Game_Ranged.new("Magic", ally, actor, skill)
actor.sp -= skill.sp_cost
return true
end
return false
end
#--------------------------------------------------------------------------
def ally_heal?(ally)
lowest_actor = $game_party.actors[0]
for actor in $game_party.actors
if lowest_actor.hp > actor.hp and actor.hp != actor.maxhp and actor.dead? == false
lowest_actor = actor
end
end
return false if lowest_actor.hp == lowest_actor.maxhp and !lowest_actor.dead?
ally_actor = $game_party.actors[ally.actor_id]
for id in ally_actor.skills
skill = $data_skills[id]
next if skill.scope != 3
next if skill.element_set.include?($RANGE_ELEMENT_ID) == true
next if skill.sp_cost > ally_actor.sp
next if skill.power >= 0
next if (lowest_actor.hp/2) > skill.power.abs
lowest_actor.effect_skill(ally_actor, skill)
ally_actor.sp -= skill.sp_cost
index = $game_party.actors.index(lowest_actor)
if index == 0
$game_player.animation_id = skill.animation2_id
else
$game_allies[index].animation_id = skill.animation2_id
end
return true
end
return false
end
#--------------------------------------------------------------------------
def ally_cure?(ally)
lowest_actor = $game_party.actors[0]
for actor in $game_party.actors
if lowest_actor.states.size > actor.states.size and actor.dead? == false
lowest_actor = actor
end
end
return false if lowest_actor.states.size == 0
ally_actor = $game_party.actors[ally.actor_id]
for id in ally_actor.skills
skill = $data_skills[id]
next if skill.scope != 3
next if skill.element_set.include?($RANGE_ELEMENT_ID) == true
next if skill.sp_cost > ally_actor.sp
next if skill.minus_state_set == []
next if skill.plus_state_set != []
lowest_actor.effect_skill(ally_actor, skill)
ally_actor.sp -= skill.sp_cost
index = $game_party.actors.index(lowest_actor)
if index == 0
$game_player.animation_id = skill.animation2_id
else
$game_allies[index].animation_id = skill.animation2_id
end
return true
end
return false
end
#--------------------------------------------------------------------------
def ally_range_attack?(ally, id)
return true if ally_ranged_weapon?(ally, id)
return true if ally_ranged_spell?(ally, id)
return true if ally_heal?(ally)
return true if ally_cure?(ally)
return false
end
#--------------------------------------------------------------------------
def ally_range_help(ally)
return if ally_heal?(ally)
return if ally_cure?(ally)
end
end