My guess is it has to do something with Map_Remote. Particularily, 'def execute'.
#----------------------------------------------------------------------------
# execute
# Executes the projectile's effect.
#----------------------------------------------------------------------------
def execute(target = @target)
# if skill
if BlizzABS::REMSkills.include?(@type)
# execute skill
target.skill_effect(@creator, @battler_copy, $data_skills[@id])
# check special skill effects
$BlizzABS.check_special_skills(@creator, [target], $data_skills[@id])
# if item
elsif BlizzABS::REMItems.include?(@type)
# execute item
target.item_effect(@creator, @battler_copy, $data_items[@id])
else
# execute attack
target.attack_effect(@creator, @battler_copy)
# if shot item
if @type == BlizzABS::REMShotItem
# store damage
dmg = target.battler.damage
# execute item
target.item_effect(@creator, @battler_copy, $data_items[@id])
# if damage is a number and any damage done
if target.battler.damage.is_a?(Numeric) &&
(target.battler.hpdamage > 0 || target.battler.spdamage > 0)
# add attack damage if attack damage was a number
target.battler.damage += dmg if dmg.is_a?(Numeric)
# if no damage done with item
elsif target.battler.hpdamage == 0 && target.battler.spdamage == 0
# set back to attack damage
target.battler.damage = dmg
end
end
end
# clear damage displays
target.battler.damage, target.battler.damage_pop = nil, false
# add to already hit targets
@hit.push(target)
# sets flag for self-termination if necessary
@terminate = true unless BlizzABS::REMPersistent.include?(@type)
end
I don't work a whole lot with BABS anymore, but I (and anyone else who has better knowledge of it) can take a crack at it.
EDIT: Okay, I think I figured it out. It was just a matter of flipping two lines around.
In Part 2 of BABS, CTRL + F for "class Processor". Scroll down to 'def update' and replace with this:
#--------------------------------------------------------------------------
# update
# Updates Blizz-ABS processes.
#--------------------------------------------------------------------------
def update
# update player battle input
@controls.update
# update each projectile and trap
$BlizzABS.cache.remotes.each {|remote| remote.update}
# update summons
update_summons
# stop if scene is not Scene_Map
return if !$scene.is_a?(Scene_Map)
# update killed events
update_killed
# remove expired events from the map
event_removal
# remove expired summons from the map
summon_removal
# check special status effects
check_special_states
end
To the people who want to know the reason: I made the game print out whether I was defending or not against a normal attack under 'def attack_effect'. It worked fine with normal attacks (Sword-type), but it kept saying that I was not defending against projectiles (Bow-type). The game is processing projectiles (class Map_Remote instances) before it is getting the player's key input. Thus, I swapped the two around.
Didn't do any thorough testing.