Pastebin
API
tools
faq
paste
Login
Sign up
Please fix the following errors:
New Paste
Syntax Highlighting
#=============================================================================== # * Falcao Pearl ABS script shelf # 1 # # This script is the Heart of Pearl ABS Liquid, it handles all the character # management, the tools variables and the input module, enemy registration etc. #=============================================================================== module PearlKernel # Default enemy sensor self switch Enemy_Sensor = "B" # Default enemy sensor (distance in tiles the enemy is able to see the Player Sensor = 7 # Default enemy knockdown self switch (used to display knockdowned graphic) KnockdownSelfW = "C" # Deafault Enemy collapse DefaultCollapse = 'zoom_vertical' # While in party battle on map, the game player is the manager of the group # Which distance the player can see the enemies?, this is used, to determine # wheter the follower can start fighting. enemy away from this tiles # whil be ignored untill the player is near them # distamce measured in tiles PlayerRange = 7 # When a follower fail an action this balloon is played, runs out of mana etc. FailBalloon = 1 # Start the game with the ABS huds turned on? StartWithHud = true # Do you want to activate the followers dead poses? FollowerDeadPose = true # Do you want to activate the single player mode? # this only avoid you accesing the player slection menu and the K key is used # to open the quick tool selection menu SinglePlayer = false #----------------------------------------------------------------------------- @gaugeback = Color.new(0, 0, 0, 100) def self.draw_hp(obj, battler, x, y, w, h, color, name=nil) tag = 'Hp' ; c = color name = battler.name if !name.nil? draw_gauge(obj, battler.hp, battler.mhp, x, y, w, h, c, tag, name) end def self.draw_mp(obj, battler, x, y, w, h, color, name=nil) tag = 'Mp' ; c = color name = battler.name if !name.nil? draw_gauge(obj, battler.mp, battler.mmp, x, y, w, h, c, tag, name) end def self.draw_exp(obj, battler, x, y, w, h, color, name=nil) tag = 'Exp' ; c = color name = battler.name if !name.nil? draw_gauge(obj,battler.exp, battler.next_level_exp, x, y, w, h, c, tag,name) end def self.draw_tp(obj, x, y, actor) string = 'Tp ' + (actor.tp).to_i.to_s obj.fill_rect(x, y + 10 , string.length * 9, 12, @gaugeback) obj.draw_text(x, y, obj.width, 32, string) end def self.draw_gauge(obj, nm, max, x, y, w, h, col, tag, name) obj.font.shadow = true w2 = w - 2 ; max = 1 if max == 0 obj.fill_rect(x, y - 1, w, h + 2, @gaugeback) obj.fill_rect(x+1, y+1, w2*nm/max, h/2 - 1, col[0]) obj.fill_rect(x+1, y + h/2, w2*nm/max, h/2 - 1, col[1]) obj.draw_text(x, y + h - 22, w, 32, nm.to_s, 2) obj.draw_text(x + 4, y + h - 22, w, 32, tag) obj.draw_text(x, y - 25, w, 32, name, 1) if !name.nil? end # image based bars definition def self.image_hp(bitmap, x, y, back, image, battler, name=nil) tag = 'Hp' name = battler.name if !name.nil? draw_i_gauge(bitmap, x, y, back, image, battler.hp, battler.mhp, tag, name) end def self.image_mp(bitmap, x, y, back, image, battler, name=nil) tag = 'Mp' name = battler.name if !name.nil? draw_i_gauge(bitmap, x, y, back, image, battler.mp, battler.mmp, tag, name) end def self.image_exp(bitmap, x, y, back, image, battler, name=nil) tag = 'Exp' name = battler.name if !name.nil? exp, nexte = battler.exp, battler.next_level_exp draw_i_gauge(bitmap, x, y, back, image, exp, nexte, tag, name) end def self.draw_i_gauge(bitmap, x, y, back, image, nm, max, tag, name) cw = back.width ch = back.height max = 1 if max == 0 src_rect = Rect.new(0, 0, cw, ch) bitmap.blt(x - 10, y - ch + 30, back, src_rect) cw = image.width * nm / max ch = image.height src_rect = Rect.new(0, 0, cw, ch) bitmap.blt(x - 10, y - ch + 30, image, src_rect) bitmap.draw_text(x - 4, y + back.height - 14, back.width, 32, tag) bitmap.draw_text(x - 12, y + back.height - 14, back.width, 32, nm.to_s, 2) bitmap.draw_text(x - 6, y - 10, back.width, 32, name, 1) if !name.nil? end def self.has_data? !user_graphic.nil? end def self.load_item(item) @item = item end def self.user_graphic() @item.tool_data("User Graphic = ", false) end def self.user_animespeed() @item.tool_data("User Anime Speed = ") end def self.tool_cooldown() @item.tool_data("Tool Cooldown = ") end def self.tool_graphic() @item.tool_data("Tool Graphic = ", false) end def self.tool_index() @item.tool_data("Tool Index = ") end def self.tool_size() @item.tool_data("Tool Size = ") end def self.tool_distance() @item.tool_data("Tool Distance = ") end def self.tool_effectdelay() @item.tool_data("Tool Effect Delay = ") end def self.tool_destroydelay() @item.tool_data("Tool Destroy Delay = ") end def self.tool_speed() @item.tool_float("Tool Speed = ") end def self.tool_castime() @item.tool_data("Tool Cast Time = ") end def self.tool_castanimation() @item.tool_data("Tool Cast Animation = ") end def self.tool_blowpower() @item.tool_data("Tool Blow Power = ") end def self.tool_piercing() @item.tool_data("Tool Piercing = ", false) end def self.tool_animation() @item.tool_data("Tool Animation When = ", false) end def self.tool_anirepeat() @item.tool_data("Tool Animation Repeat = ",false)end def self.tool_special() @item.tool_data("Tool Special = ", false) end def self.tool_target() @item.tool_data("Tool Target = ", false) end def self.tool_invoke() @item.tool_data("Tool Invoke Skill = ") end def self.tool_guardrate() @item.tool_data("Tool Guard Rate = ") end def self.tool_knockdown() @item.tool_data("Tool Knockdown Rate = ") end def self.tool_soundse() @item.tool_data("Tool Sound Se = ", false) end def self.tool_itemcost() @item.tool_data("Tool Item Cost = ") end def self.tool_shortjump() @item.tool_data("Tool Short Jump = ", false) end def self.tool_through() @item.tool_data("Tool Through = ", false) end def self.tool_priority() @item.tool_data("Tool Priority = ") end def self.tool_selfdamage() @item.tool_data("Tool Self Damage = ", false) end def self.tool_hitshake() @item.tool_data("Tool Hit Shake = ", false) end def self.tool_combo() @item.tool_data("Tool Combo Tool = ", false) end def self.knock_actor(actor) a = actor.actor.tool_data("Knockdown Graphic = ", false) b = actor.actor.tool_data("Knockdown Index = ") c = actor.actor.tool_data("Knockdown pattern = ") d = actor.actor.tool_data("Knockdown Direction = ") return nil if a.nil? return [a, b, c, d] end def self.jump_hit?(target) t = target.enemy.tool_data("Hit Jump = ", false) if target.is_a?(Game_Enemy) t = target.actor.tool_data("Hit Jump = ", false) if target.is_a?(Game_Actor) return true if !t.nil? and t == "true" return true if t.nil? return false end def self.voices(b) voices = b.actor.tool_data("Battler Voices = ",false) if b.is_a?(Game_Actor) voices = b.enemy.tool_data("Battler Voices = ",false) if b.is_a?(Game_Enemy) voices = voices.split(", ") unless voices.nil? voices end def self.hitvoices(b) voices = b.actor.tool_data("Hit Voices = ",false) if b.is_a?(Game_Actor) voices = b.enemy.tool_data("Hit Voices = ",false) if b.is_a?(Game_Enemy) voices = voices.split(", ") unless voices.nil? voices end # check for iconset def self.check_iconset(item, tag, object) data = item.tool_data(tag, false) return if data.nil? v = [item.icon_index, data.to_sym] if data == "animated" || data == "static" || data == "shielding" object.is_a?(Projectile) ? object.pro_iconset = v : object.user_iconset = v end def self.clean_back? @clean_back == true end end ($imported ||= {})["Falcao Pearl ABS Liquid"] = true class RPG::BaseItem attr_reader :has_data def tool_data(comment, sw=true) if @note =~ /#{comment}(.*)/i @has_data = true return sw ? $1.to_i : $1.to_s.sub("\r","") end end def tool_float(comment) return $1.to_f if @note =~ /#{comment}(.*)/i end def cool_enabled? @cd_dis = @note.include?("Tool Cooldown Display = true") if @cd_dis.nil? @cd_dis end def itemcost if @i_cost.nil? @note =~ /Tool Item Cost = (.*)/i ? @i_cost = $1.to_i : @i_cost = 0 end @i_cost end end # Pearl ABS Input module module PearlKey # numbers N0 = 0x30; N1 = 0x31; N2 = 0x32; N3 = 0x33; N4 = 0x34 N5 = 0x35; N6 = 0x36; N7 = 0x37; N8 = 0x38; N9 = 0x39 # keys A = 0x41; B = 0x42; C = 0x43; D = 0x44; E = 0x45 F = 0x46; G = 0x47; H = 0x48; I = 0x49; J = 0x4A K = 0x4B; L = 0x4C; M = 0x4D; N = 0x4E; O = 0x4F P = 0x50; Q = 0x51; R = 0x52; S = 0x53; T = 0x54 U = 0x55; V = 0x56; W = 0x57; X = 0x58; Y = 0x59; Z = 0x5A @unpack_string = 'b'*256 @last_array = '0'*256 @press = Array.new(256, false) @trigger = Array.new(256, false) @release = Array.new(256, false) @getKeyboardState = Win32API.new('user32', 'GetKeyboardState', ['P'], 'V') @getAsyncKeyState = Win32API.new('user32', 'GetAsyncKeyState', 'i', 'i') @getKeyboardState.call(@last_array) @last_array = @last_array.unpack(@unpack_string) for i in 0...@last_array.size @press[i] = @getAsyncKeyState.call(i) == 0 ? false : true end def self.update @trigger = Array.new(256, false) @release = Array.new(256, false) array = '0'*256 @getKeyboardState.call(array) array = array.unpack(@unpack_string) for i in 0...array.size if array[i] != @last_array[i] @press[i] = @getAsyncKeyState.call(i) == 0 ? false : true if !@press[i] @release[i] = true else @trigger[i] = true end else if @press[i] == true @press[i] = @getAsyncKeyState.call(i) == 0 ? false : true @release[i] = true if !@press[i] end end end @last_array = array end def self.press?(key) return @press[key] end def self.trigger?(key) return @trigger[key] end end # Input module update engine class << Input alias falcaopearl_abs_cooldown_update update def Input.update update_pearl_abs_cooldown update_popwindow if !$game_temp.nil? and !$game_temp.pop_windowdata.nil? update_pearl_abs_respawn falcaopearl_abs_cooldown_update end def update_pearl_abs_respawn $game_map.event_enemies.each do |event| if event.respawn_count > 0 event.respawn_count -= 1 if event.respawn_count == 0 event.battler.remove_state(event.battler.death_state_id) event.battler.hp = event.battler.mhp event.battler.mp = event.battler.mmp event.apply_respawn event.animation_id = event.respawn_anim end end end end alias falcaopearl_trigger trigger? def trigger?(constant) return true if constant == :B and PearlKey.trigger?(PearlKey::B) falcaopearl_trigger(constant) end # pop window global def update_popwindow $game_temp.pop_windowdata[0] -= 1 if $game_temp.pop_windowdata[0] > 0 if @temp_window.nil? tag = $game_temp.pop_windowdata[2] string = $game_temp.pop_windowdata[1] + tag width = (string.length * 9) - 10 x, y = Graphics.width / 2 - width / 2, Graphics.height / 2 - 64 / 2 @temp_window = Window_Base.new(x, y, width, 64) @temp_window.contents.font.size = 20 @temp_window.draw_text(-10, -6, width, 32, tag, 1) @temp_window.draw_text(-10, 14, width, 32, $game_temp.pop_windowdata[1],1) @current_scene = SceneManager.scene.class end if $game_temp.pop_windowdata[0] == 0 || @current_scene != SceneManager.scene.class @temp_window.dispose @temp_window = nil $game_temp.pop_windowdata = nil end end def update_pearl_abs_cooldown PearlKey.update eval_cooldown($game_party.all_members) if !$game_party.nil? eval_cooldown($game_map.enemies) if !$game_map.nil? end # cooldown update def eval_cooldown(operand) for sub in operand sub.skill_cooldown.each {|sid, sv| # skill if sub.skill_cooldown[sid] > 0 sub.skill_cooldown[sid] -= 1 sub.skill_cooldown.delete(sid) if sub.skill_cooldown[sid] == 0 end} sub.item_cooldown.each {|iid, iv| # item if sub.item_cooldown[iid] > 0 sub.item_cooldown[iid] -= 1 sub.item_cooldown.delete(iid) if sub.item_cooldown[iid] == 0 end} sub.weapon_cooldown.each {|wid, wv| # weapon if sub.weapon_cooldown[wid] > 0 sub.weapon_cooldown[wid] -= 1 sub.weapon_cooldown.delete(wid) if sub.weapon_cooldown[wid] == 0 end} sub.armor_cooldown.each {|aid, av| #armor if sub.armor_cooldown[aid] > 0 sub.armor_cooldown[aid] -= 1 sub.armor_cooldown.delete(aid) if sub.armor_cooldown[aid] == 0 end} end end end #=============================================================================== #=============================================================================== # Game character class Game_CharacterBase attr_accessor :just_hitted, :anime_speed, :blowpower, :targeting, :x, :y attr_accessor :battler_guarding, :knockdown_data, :colapse_time, :opacity attr_accessor :zoomfx_x, :zoomfx_y, :targeted_character, :stuck_timer attr_accessor :send_dispose_signal, :follower_attacktimer, :stopped_movement attr_accessor :hookshoting, :battler_chain, :pattern, :user_move_distance attr_accessor :move_speed, :through, :being_grabbed, :making_spiral attr_accessor :direction, :direction_fix, :zfx_bol, :buff_pop_stack attr_accessor :die_through, :target_index, :using_custom_g, :combodata attr_accessor :originalasp, :doingcombo, :angle_fx attr_accessor :user_iconset, :pro_iconset, :respawn_count alias falcaopearl_abmain_ini initialize def initialize @zfx_bol = false @just_hitted = 0 @anime_speed = 0 @respawn_count = 0 @blowpower = [0, dir=2, dirfix=false, s=4, wait_reset=0] @user_casting = [0, nil] @send_dispose_signal = false @targeting = [false, item=nil, char=nil] @colapse_time = 0 @stopped_movement = 0 @follower_attacktimer = 0 set_hook_variables @target_index = 0 @using_custom_g = false @combodata = [] @angle_fx = 0.0 #-------------- @zoomfx_x = 1.0 @zoomfx_y = 1.0 @stuck_timer = 0 @battler_guarding = [false, nil] @knockdown_data = [0, nil, nil, nil, nil] @state_poptimer = [0, 0] @making_spiral = false @buff_pop_stack = [] @doingcombo = 0 @range_view = 2 @originalasp = 0 falcaopearl_abmain_ini end def set_hook_variables @hookshoting = [on=false, hooking=false, grabing=false, delay=0] @battler_chain = [] @user_move_distance = [steps=0, speed=nil, trought=nil, cor=nil, evmove=nil] @being_grabbed = false end # projectiles at nt def projectiles_xy_nt(x, y) $game_player.projectiles.select {|pro| pro.pos_nt?(x, y) } end # collide with projectiles def collide_with_projectiles?(x, y) projectiles_xy_nt(x, y).any? do |pro| pro.normal_priority? || self.is_a?(Projectile) end end def zoom(x, y) @zoomfx_x = x @zoomfx_y = y end alias falcaopearl_collide_with collide_with_characters? def collide_with_characters?(x, y) return true if collide_with_projectiles?(x, y) falcaopearl_collide_with(x, y) end # follow character straigh and diagonal def follow_char(character) sx = distance_x_from(character.x) sy = distance_y_from(character.y) if sx != 0 && sy != 0 move_diagonal(sx > 0 ? 4 : 6, sy > 0 ? 8 : 2) elsif sx != 0 move_straight(sx > 0 ? 4 : 6) elsif sy != 0 move_straight(sy > 0 ? 8 : 2) end end def on_battle_screen?(out = 0) max_w = (Graphics.width / 32).to_i - 1 max_h = (Graphics.height / 32).to_i - 1 sx = (screen_x / 32).to_i sy = (screen_y / 32).to_i if sx.between?(0 - out, max_w + out) and sy.between?(0 - out, max_h + out) return true end return false end # jump to specific tiles def jumpto_tile(x, y) jumpto(0, [x, y]) end # jumpto character ( 0 = Game Player, 1 and up event id) def jumpto(char_id, tilexy=nil) char_id > 0 ? char = $game_map.events[char_id] : char = $game_player tilexy.nil? ? condxy = [char.x, char.y] : condxy = [tilexy[0], tilexy[1]] jx = + eval_distance(tilexy.nil? ? char : tilexy)[0] if condxy[0] >= @x jy = - eval_distance(tilexy.nil? ? char : tilexy)[1] if condxy[1] <= @y jx = - eval_distance(tilexy.nil? ? char : tilexy)[0] if condxy[0] <= @x jy = - eval_distance(tilexy.nil? ? char : tilexy)[1] if condxy[1] <= @y jx = - eval_distance(tilexy.nil? ? char : tilexy)[0] if condxy[0] <= @x jy = + eval_distance(tilexy.nil? ? char : tilexy)[1] if condxy[1] >= @y jx = + eval_distance(tilexy.nil? ? char : tilexy)[0] if condxy[0] >= @x jy = + eval_distance(tilexy.nil? ? char : tilexy)[1] if condxy[1] >= @y jump(jx, jy) end # distance def eval_distance(target) if target.is_a?(Array) distance_x = (@x - target[0]).abs distance_y = (@y - target[1]).abs else distance_x = (@x - target.x).abs distance_y = (@y - target.y).abs end return [distance_x, distance_y] end # check if the game player and follower are executing an action def battler_acting? return true if @user_casting[0] > 0 || @targeting[0] return true if @knockdown_data[0] > 0 and battler.deadposing.nil? return true if @anime_speed > 0 return true if @hookshoting[0] || @making_spiral if self.is_a?(Game_Player) $game_player.followers.each {|f| return true if f.battler_acting?} end return false end def battler end #use single tools def use_weapon(id) return unless tool_can_use? process_tool_action($data_weapons[id]) end def use_item(id) return unless tool_can_use? process_tool_action($data_items[id]) end def use_skill(id) return unless tool_can_use? process_tool_action($data_skills[id]) end def use_armor(id) return unless tool_can_use? process_tool_action($data_armors[id]) end # use multiple tools def rand_weapon(*args) return unless tool_can_use? process_tool_action($data_weapons[args[rand(args.size)]]) end def rand_item(*args) return unless tool_can_use? process_tool_action($data_items[args[rand(args.size)]]) end def rand_skill(*args) return unless tool_can_use? process_tool_action($data_skills[args[rand(args.size)]]) end def rand_armor(*args) return unless tool_can_use? process_tool_action($data_armors[args[rand(args.size)]]) end def tool_can_use? return false if @hookshoting[0] || @making_spiral return false if @user_casting[0] > 0 || @targeting[0] return false if battler.nil? return false if battler.dead? return false if @doingcombo > 0 || @battler_guarding[0] return false if $game_message.busy? return true end def load_target_selection(item) @targeting[0] = true; @targeting[1] = item if self.is_a?(Game_Player) $game_player.pearl_menu_call = [:battler, 2] elsif self.is_a?(Game_Follower) @targeting[2] = @targeted_character @targeting = [false, item=nil, char=nil] if @targeting[2].nil? elsif self.is_a?(Projectile) if user.is_a?(Game_Player) user.targeting[0] = true; user.targeting[1] = item $game_player.pearl_menu_call = [:battler, 2] end if user.is_a?(Game_Follower) @targeting[2] = user.targeted_character @targeting = [false, item=nil, char=nil] if @targeting[2].nil? end end end def playdead @angle_fx = 90 end def resetplaydead @angle_fx = 0.0 end #action canceling def force_cancel_actions @user_casting[0] = 0 @anime_speed = 0 end def speed(x) @move_speed = x end def anima(x) @animation_id = x end # aply melee params def apply_weapon_param(weapon, add) id = 0 for param in weapon.params add ? battler.add_param(id, param) : battler.add_param(id, -param) id += 1 end end # Short script call for poping damage text def pop_damage(custom=nil) $game_player.damage_pop.push(DamagePop_Obj.new(self, custom)) end #check if target is unable to move def force_stopped? return true if @anime_speed > 0 || @knockdown_data[0] > 0 || @stopped_movement > 0 || @hookshoting[0] || @angle_fx != 0.0 return true if @making_spiral return false end # sensor def obj_size?(target, size) return false if size.nil? distance = (@x - target.x).abs + (@y - target.y).abs enable = (distance <= size-1) return true if enable return false end # sensor body def body_size?(target, size) distance = (@x - target[0]).abs + (@y - target[1]).abs enable = (distance <= size-1) return true if enable return false end def faceto_face?(target) return true if @direction == 2 and target.direction == 8 return true if @direction == 4 and target.direction == 6 return true if @direction == 6 and target.direction == 4 return true if @direction == 8 and target.direction == 2 return false end def adjustcxy push_x, push_y = 0, 1 if @direction == 2 push_x, push_y = - 1, 0 if @direction == 4 push_x, push_y = 1, 0 if @direction == 6 push_x, push_y = 0, - 1 if @direction == 8 return [push_x, push_y] end def in_frontof?(target) return true if @direction == 2 and @x == target.x and (@y+1) == target.y return true if @direction == 4 and (@x-1) == target.x and @y == target.y return true if @direction == 6 and (@x+1) == target.x and @y == target.y return true if @direction == 8 and @x == target.x and (@y-1) == target.y return false end # detect map edges ignoring loop maps def facing_corners? case $game_map.map.scroll_type when 1 then return false if @direction == 2 || @direction == 8 when 2 then return false if @direction == 4 || @direction == 6 when 3 then return false end m = $game_map unless @x.between?(1, m.width - 2) && @y.between?(1, m.height - 2) return true if @x == 0 and @direction == 4 return true if @y == 0 and @direction == 8 return true if @x == m.width - 1 and @direction == 6 return true if @y == m.height - 1 and @direction == 2 end return false end # item usable test def usable_test_passed?(item) return true if battler.is_a?(Game_Enemy) && item.is_a?(RPG::Item) itemcost = item.tool_data("Tool Item Cost = ") invoke = item.tool_data("Tool Invoke Skill = ") if battler.is_a?(Game_Actor) and itemcost != nil and itemcost != 0 return false if !battler.usable?($data_items[itemcost]) end if item.is_a?(RPG::Skill) || item.is_a?(RPG::Item) return false if !battler.usable?(item) else if invoke != nil and invoke != 0 return false if !battler.usable?($data_skills[invoke]) else return false if !battler.attack_usable? end end return true end # process the tool and verify wheter can be used def process_tool_action(item) PearlKernel.load_item(item) return if !battler.tool_ready?(item) unless PearlKernel.has_data? if item.is_a?(RPG::Weapon) || item.is_a?(RPG::Armor) msgbox('Tool data missing') if $DEBUG return end if item.scope.between?(1, 6) msgbox('Tool data missing') if $DEBUG return elsif item.scope == 0 return elsif !battler.usable?(item) RPG::SE.new("Cursor1", 80).play if self.is_a?(Game_Player) return end end if PearlKernel.has_data? and not usable_test_passed?(item) RPG::SE.new("Cursor1", 80).play if self.is_a?(Game_Player) return end @user_casting = [PearlKernel.tool_castime,item] if PearlKernel.has_data? if @user_casting[0] > 0 @animation_id = 0 @animation_id = PearlKernel.tool_castanimation else load_abs_tool(item) end end # load the abs tool def load_abs_tool(item) return if @knockdown_data[0] > 0 PearlKernel.load_item(item) return if self.is_a?(Game_Follower) and @targeted_character.nil? if !@targeting[0] and self.battler.is_a?(Game_Actor) if item.is_a?(RPG::Skill) || item.is_a?(RPG::Item) # apply target to skills items if PearlKernel.tool_target == "true" || item.scope == 7 || item.scope == 9 load_target_selection(item) return end else # apply target parsing the invoked skill to weapons and armors invoke = PearlKernel.tool_invoke if invoke != nil && invoke > 0 && invoke != 1 && invoke != 2 invokeskill = $data_skills[invoke] if PearlKernel.tool_target == "true" || invokeskill.scope == 7 || invokeskill.scope == 9 load_target_selection(item) return end # apply target to normal weapon and armor without invoking else if PearlKernel.tool_target == "true" load_target_selection(item) return end end end end if item.is_a?(RPG::Skill) || item.is_a?(RPG::Item) battler.use_item(item) else if PearlKernel.tool_invoke != 0 battler.use_item($data_skills[PearlKernel.tool_invoke]) end end # if the tool has data continue if PearlKernel.has_data? consume_ammo_item(item) if battler.is_a?(Game_Actor) and PearlKernel.tool_itemcost != 0 @anime_speed = PearlKernel.user_animespeed battler.apply_cooldown(item, PearlKernel.tool_cooldown) end create_projectile_object(item) create_anime_sprite_object(item) end # projectile creator def create_projectile_object(item) if PearlKernel.tool_special == "hook" PearlKernel.tool_distance.times {|i| $game_player.projectiles.push(Projectile.new(self, item, i))} @hookshoting[0] = true elsif PearlKernel.tool_special == "triple" # loads 3 projectiles for i in [:uno, :dos, :tres] $game_player.projectiles.push(Projectile.new(self, item, i)) end elsif PearlKernel.tool_special == "quintuple" #loads 5 projectiles for i in [:uno, :dos, :tres, :cuatro, :cinco] $game_player.projectiles.push(Projectile.new(self, item, i)) end elsif PearlKernel.tool_special == "octuple" # loads 8 projectiles for i in [:uno, :dos, :tres, :cuatro, :cinco, :seis, :siete, :ocho] $game_player.projectiles.push(Projectile.new(self, item, i)) end else # load default projectile $game_player.projectiles.push(Projectile.new(self, item)) end end # User anime sprite creation def create_anime_sprite_object(item) $game_player.anime_action.each {|i| if i.user == self if i.custom_graphic @transparent = false i.user.using_custom_g = false end $game_player.anime_action.delete(i) end} if PearlKernel.user_graphic != "nil" return if PearlKernel.user_graphic.nil? $game_player.anime_action.push(Anime_Obj.new(self, item)) end # using iconset graphic if PearlKernel.user_graphic == "nil" and !item.tool_data("User Iconset = ", false).nil? return if PearlKernel.user_graphic.nil? $game_player.anime_action.push(Anime_Obj.new(self, item)) end end # consume ammo item def consume_ammo_item(item) itemcost = $data_items[PearlKernel.tool_itemcost] return if item.is_a?(RPG::Item) and item.consumable and item == itemcost battler.use_item(itemcost) end alias falcaopearl_chaupdate update def update update_falcao_pearl_abs falcaopearl_chaupdate end # Falcao pearl abs main update def update_falcao_pearl_abs if @user_move_distance[0] > 0 and not moving? move_forward ; @user_move_distance[0] -= 1 end return if battler.nil? update_pearlabs_timing update_followers_attack if self.is_a?(Game_Follower) && self.visible? if @targeting[2] != nil load_abs_tool(@targeting[1]) if battler.is_a?(Game_Actor) @targeting = [false, item=nil, char=nil] end update_battler_collapse update_state_effects @combodata.each {|combo| if combo[3] > 0 combo[3] -= 1 if combo[3] == 0 perform_combo(combo[0], combo[1], combo[2]) @combodata.delete(combo) end break end} end def perform_combo(kind, id, jumpp) if jumpp == 'jump' jump(0, 0) move_forward end case kind when :weapon then use_weapon(id) when :armor then use_armor(id) when :item then use_item(id) when :skill then use_skill(id) end @doingcombo = 12 end #======================================================================== # * followers attacks engine def fo_tool return actor.equips[0] if actor.primary_use == 1 return actor.equips[1] if actor.primary_use == 2 return actor.assigned_item if actor.primary_use == 3 return actor.assigned_item2 if actor.primary_use == 4 return actor.assigned_skill if actor.primary_use == 5 return actor.assigned_skill2 if actor.primary_use == 6 return actor.assigned_skill3 if actor.primary_use == 7 return actor.assigned_skill4 if actor.primary_use == 8 end # followers attack engine def update_followers_attack if fo_tool.nil? || battler.dead? @targeted_character = nil if @targeted_character != nil return end return if @stopped_movement > 0 if @follower_attacktimer > 0 @follower_attacktimer -= 1 if @follower_attacktimer == 40 and !moving? r = rand(3) move_random if r == 0 || r == 1 move_away_from_character(@targeted_character) if !@targeted_character.nil? and r == 2 end end # si la skill es para el player if @targeted_character != nil and @targeted_character.is_a?(Game_Player) if all_enemies_dead? delete_targetf return end use_predefined_tool return end # si la skill es para un enemigo continuar if @targeted_character != nil use_predefined_tool return if @targeted_character.nil? # reset if the target is dead if @targeted_character.collapsing? force_cancel_actions delete_targetf end else # select a follower slected target $game_player.followers.each do |follower| if !follower.targeted_character.nil? next if follower.targeted_character.is_a?(Game_Player) if follower.stuck_timer >= 10 follower.targeted_character = nil return end @targeted_character = follower.targeted_character break end end end end # prepare the tool usage def setup_followertool_usage @range_view = 2 @range_view = 6 if fo_tool.tool_data("Tool Target = ", false) == "true" || fo_tool.tool_data("Tool Special = ", false) == "autotarget" if fo_tool.is_a?(RPG::Skill) || fo_tool.is_a?(RPG::Item) if fo_tool.scope.between?(1, 6) setup_target else ; @targeted_character = $game_player @range_view = 6 end # prepare tool for invoke follower elsif fo_tool.is_a?(RPG::Weapon) || fo_tool.is_a?(RPG::Armor) invoke = fo_tool.tool_data("Tool Invoke Skill = ") if invoke > 0 if $data_skills[invoke].scope.between?(1, 6) setup_target else ; @targeted_character = $game_player @range_view = 6 end else # no invoke skill just set up an enemy target setup_target end end end # use the predifined tool def use_predefined_tool update_follower_movement return if @targeted_character.nil? if obj_size?(@targeted_character, @range_view) && @follower_attacktimer == 0 turn_toward_character(@targeted_character) use_weapon(fo_tool.id) if actor.primary_use == 1 use_armor(fo_tool.id) if actor.primary_use == 2 use_item(fo_tool.id) if actor.primary_use == 3 || actor.primary_use == 4 use_skill(fo_tool.id) if actor.primary_use==5 || actor.primary_use==6 || actor.primary_use == 7 || actor.primary_use == 8 if fo_tool.tool_data("User Graphic = ", false).nil? @targeted_character = nil turn_toward_player end @follower_attacktimer = 60 end delete_targetf if self.actor.dead? end def all_enemies_dead? for event in $game_map.event_enemies if event.on_battle_screen? && event.enemy_ready? return false if $game_player.obj_size?(event,PearlKernel::PlayerRange+1) end end return true end def delete_targetf @targeted_character = nil end #------------------------ # follower movement attack def reset_targeting_settings(target) target.being_targeted = false if target.is_a?(Game_Event) delete_targetf turn_toward_player @stuck_timer = 0 end def update_follower_movement target = @targeted_character if @stuck_timer >= 30 reset_targeting_settings(target) return end # if the follower is unabble to use the tool unless usable_test_passed?(fo_tool) if SceneManager.scene_is?(Scene_Map) reset_targeting_settings(target) @balloon_id = PearlKernel::FailBalloon return end end return if target.nil? @stuck_timer += 1 if !obj_size?(target, @range_view) and !moving? if moving? || @anime_speed > 0 || @making_spiral || @hookshoting[0] || @knockdown_data[0] > 0 @stuck_timer = 0 end return if moving? if fo_tool.tool_data("Tool Target = ", false) == "true" || fo_tool.tool_data("Tool Special = ", false) == "autotarget" || target.is_a?(Game_Player) # using skill con target true magical cpu_reactiontype(1, target) return # target not exist else if fo_tool.is_a?(RPG::Skill) || fo_tool.is_a?(RPG::Item) fo_tool.scope.between?(1, 6) ? cpu_reactiontype(2, target) : # to enemy cpu_reactiontype(1, target) # benefical else # for weapon armor without target cpu_reactiontype(2, target) end end return if !obj_size?(target, @range_view) return if target.is_a?(Game_Player) case rand(40) when 4 then move_backward when 10 then move_random end end # cpu reaction def cpu_reactiontype(type, target) unless on_battle_screen? 3.times.each {|i| move_toward_player} return end move_toward_character(target) if !obj_size?(target, @range_view) if type==1 if @follower_attacktimer == 0 || !obj_size?(target, @range_view) move_toward_character(target) if type == 2 end end #------------------------------------------------- # buff timer def update_buff_timing battler.buff_turns.each do |id, value| if battler.buff_turns[id] > 0 battler.buff_turns[id] -= 1 if battler.buff_turns[id] <= 0 battler.remove_buff(id) pop_damage end end end end #blow power effect def update_blow_power_effect if @blowpower[4] > 0 @blowpower[4] -= 1 if @blowpower[4] == 0 @direction_fix = @blowpower[2] @move_speed = @blowpower[3] end end if @blowpower[0] > 0 and !moving? @move_speed = 5.5 @direction_fix = true move_straight(@blowpower[1]); @blowpower[0] -= 1 if @blowpower[0] == 0 @blowpower[4] = 10 end end end # Pearl timing def update_pearlabs_timing @just_hitted -= 1 if @just_hitted > 0 @stopped_movement -= 1 if @stopped_movement > 0 @doingcombo -= 1 if @doingcombo > 0 # hookshooting if @hookshoting[3] > 0 @hookshoting[3] -= 1 if @hookshoting[3] == 0 @hookshoting = [false, false, false, 0] @user_move_distance[3].being_grabbed = false if @user_move_distance[3].is_a?(Game_Event) @user_move_distance[3] = nil end end update_buff_timing update_blow_power_effect # anime if @anime_speed > 0 @pattern = 0 @anime_speed -= 1 end # casting if @user_casting[0] > 0 @user_casting[0] -= 1 load_abs_tool(@user_casting[1]) if @user_casting[0] == 0 end update_knockdown end # Update battler collapse def check_for_dead_four return if $game_party.members.size <= 4 SceneManager.goto(Scene_Gameover) if all_fourdead? end def all_fourdead? m = $game_party.battle_members return true if m[0].dead? && m[1].dead? && m[2].dead? && m[3].dead? return false end def update_battler_collapse if @colapse_time > 0 @colapse_time -= 1 force_cancel_actions if battler.is_a?(Game_Actor) Sound.play_actor_collapse if @secollapse.nil? @secollapse = true if @colapse_time == 0 @secollapse = nil for event in $game_map.event_enemies if event.agroto_f == self event.agroto_f = nil end end check_for_dead_four member = $game_party.battle_members # swap and reset player if self.is_a?(Game_Player) reset_knockdown_actors battler.deadposing=$game_map.map_id if PearlKernel::FollowerDeadPose $game_party.swap_order(0,3) if !member[3].nil? and !member[3].dead? $game_party.swap_order(0,2) if !member[2].nil? and !member[2].dead? $game_party.swap_order(0,1) if !member[1].nil? and !member[1].dead? else if PearlKernel::FollowerDeadPose battler.deadposing = $game_map.map_id if !$game_player.follower_fighting? and member.size > 2 swap_dead_follower else $game_player.reserved_swap << battler.id if member.size > 2 end end end end elsif battler.is_a?(Game_Enemy) @die_through = @through if @die_through.nil? @through = true apply_collapse_anime(battler.collapse_type) @secollapse = true battler.object ? @transparent = true : @opacity -= 2 if !@deadposee if @colapse_time == 0 self.kill_enemy end end end end def swap_dead_follower reset_knockdown_actors member = $game_party.battle_members member.each_with_index.each do |actorr, i| next unless actorr.id == self.actor.id case member.size when 3 break if i == 2 $game_party.swap_order(i, 2) when 4 break if i == 3 if !member[3].dead? $game_party.swap_order(i, 3) break end if !member[2].dead? $game_party.swap_order(i, 2) break end end end end def apply_collapse_anime(type) # sound and animation if battler.die_animation != nil @animation_id = battler.die_animation if @secollapse.nil? else Sound.play_enemy_collapse if @secollapse.nil? and !battler.object end return if battler.object if @deadposee @knockdown_data[0] = 8 return end type = PearlKernel::DefaultCollapse if type.nil? case type.to_sym when :zoom_vertical @zoomfx_x -= 0.03 @zoomfx_y += 0.02 when :zoom_horizontal @zoomfx_x += 0.03 @zoomfx_y -= 0.02 when :zoom_maximize @zoomfx_x += 0.02 @zoomfx_y += 0.02 when :zoom_minimize @zoomfx_x -= 0.02 @zoomfx_y -= 0.02 end end # konck down engine update def update_knockdown if @knockdown_data[0] > 0 @knockdown_data[0] -= 1 @knockdown_data[0] == 0 ? knowdown_effect(2) : knowdown_effect(1) if @knockdown_data[1] != nil @pattern = @knockdown_data[2] @direction = @knockdown_data[3] end end end def knowdown_effect(type) return if self.is_a?(Projectile) if type[0] == 1 if @knockdown_data[1] == nil if battler.is_a?(Game_Enemy) if self.knockdown_enable force_cancel_actions self_sw = PearlKernel::KnockdownSelfW $game_self_switches[[$game_map.map_id, self.id, self_sw]] = true @knockdown_data[1] = self_sw self.refresh @knockdown_data[2] = self.page.graphic.pattern @knockdown_data[3] = self.page.graphic.direction $game_map.screen.start_shake(7, 4, 20) end @knockdown_data[0] = 0 if @knockdown_data[1] == nil elsif battler.is_a?(Game_Actor) if PearlKernel.knock_actor(self.actor) != nil and if @knockdown_data[1] == nil force_cancel_actions @knockdown_data[1] = @character_name @knockdown_data[4] = @character_index @character_name = PearlKernel.knock_actor(self.actor)[0] @character_index = PearlKernel.knock_actor(self.actor)[1] @knockdown_data[2] = PearlKernel.knock_actor(self.actor)[2] @knockdown_data[3] = PearlKernel.knock_actor(self.actor)[3] $game_map.screen.start_shake(7, 4, 20) if battler.deadposing.nil? end end @knockdown_data[0] = 0 if @knockdown_data[1] == nil end end elsif type == 2 if battler.is_a?(Game_Enemy) if @deadposee and battler.dead? @knockdown_data[1] = nil return end $game_self_switches[[$game_map.map_id, self.id, @knockdown_data[1]]] = false if @knockdown_data[1] != nil @knockdown_data[1] = nil else @character_name = @knockdown_data[1] @character_index = @knockdown_data[4] @knockdown_data[1] = nil end end end #================================ # states def primary_state_ani return nil if battler.states[0].nil? return battler.states[0].tool_data("State Animation = ") end # higer priority state animation displayed def update_state_effects return if battler.nil? @state_poptimer[0] += 1 unless primary_state_ani.nil? if @state_poptimer[0] == 30 @animation_id = primary_state_ani @animation_id = 0 if @animation_id.nil? elsif @state_poptimer[0] == 180 @state_poptimer[0] = 0 end update_state_action_steps end # update state actions def update_state_action_steps for state in battler.states if state.remove_by_walking if !battler.state_steps[state.id].nil? && battler.state_steps[state.id] > 0 battler.state_steps[state.id] -= 1 end if battler.state_steps[state.id] == 0 battler.remove_state(state.id) pop_damage end end if state.restriction == 4 @stopped_movement = 10 @pattern = 2 if @knockdown_data[0] == 0 end state.features.each do |feature| if feature.code == 22 @knockdown_data[0] =10 if state.restriction == 4 && feature.data_id==1 next unless feature.data_id.between?(7, 9) apply_regen_state(state, feature.data_id) end end end end # apply regen for hp, mp and tp def apply_regen_state(state, type) random = state.tool_data("State Effect Rand Rate = ") random = 120 if random.nil? if rand(random) == 1 battler.regenerate_hp if type == 7 battler.regenerate_mp if type == 8 battler.regenerate_tp if type == 9 if type == 7 and battler.result.hp_damage == 0 @colapse_time = 80 battler.add_state(1) return end type == 9 ? pop_damage("Tp Up!") : pop_damage end end alias falcaopearl_update_anime_pattern update_anime_pattern def update_anime_pattern return if @anime_speed > 0 || @knockdown_data[0] > 0 falcaopearl_update_anime_pattern end #============================================================================= # Reset Pearl ABS System # reset from game player call def reset_knockdown_actors # reset knock down if @knockdown_data[1] != nil @knockdown_data[0] = 0 knowdown_effect(2) end # force clear knock down $game_player.followers.each do |follower| if follower.knockdown_data[1] != nil follower.knockdown_data[0] = 0 follower.knowdown_effect(2) end end end # reset knockdown enemies game player call def reset_knockdown_enemies $game_map.events.values.each do |event| if event.knockdown_data[1] != nil event.knockdown_data[0] = 0 event.knowdown_effect(2) end if event.deadposee and event.killed $game_self_switches[[$game_map.map_id, event.id, PearlKernel::KnockdownSelfW]] = false end end end # glabal reseting def pearl_abs_global_reset force_cancel_actions battler.remove_state(9) if @battler_guarding[0] @battler_guarding = [false, nil] @making_spiral = false set_hook_variables @using_custom_g = false $game_player.followers.each do |f| f.targeted_character = nil if !f.targeted_character.nil? f.stuck_timer = 0 if f.stuck_timer > 0 f.follower_attacktimer = 0 if f.follower_attacktimer > 0 f.force_cancel_actions unless f.visible? f.battler.remove_state(9) if f.battler_guarding[0] f.battler_guarding = [false, nil] f.set_hook_variables f.making_spiral = false end reset_knockdown_actors reset_knockdown_enemies $game_player.projectiles.clear $game_player.damage_pop.clear $game_player.anime_action.clear $game_player.enemy_drops.clear @send_dispose_signal = true end end #=============================================================================== # Evets as enemies registration class Game_Event < Game_Character attr_accessor :enemy, :move_type, :page, :deadposee attr_accessor :being_targeted, :agroto_f, :draw_drop, :dropped_items attr_accessor :start_delay, :epassive, :erased, :killed, :boom_grabdata attr_reader :token_weapon, :token_armor,:token_item,:token_skill,:boom_start attr_reader :hook_pull, :hook_grab, :event, :knockdown_enable, :boom_grab attr_reader :respawn_anim alias falcaopearlabs_iniev initialize def initialize(map_id, event) @inrangeev = nil @being_targeted = false @agroto_f = nil @draw_drop = false @dropped_items = [] @epassive = false @touch_damage = 0 @start_delay = 0 @touch_atkdelay = 0 @killed = false @knockdown_enable = false @deadposee = false @respawn_anim = 0 create_token_arrays falcaopearlabs_iniev(map_id, event) register_enemy(event) end def create_token_arrays @token_weapon = [] @token_armor = [] @token_item = [] @token_skill = [] end alias falcaopearl_setup_page_settings setup_page_settings def setup_page_settings create_token_arrays falcaopearl_setup_page_settings wtag = string_data("<start_with_weapon: ") @token_weapon = wtag.split(",").map { |s| s.to_i } if wtag != nil atag = string_data("<start_with_armor: ") @token_armor = atag.split(",").map { |s| s.to_i } if atag != nil itag = string_data("<start_with_item: ") @token_item = itag.split(",").map { |s| s.to_i } if itag != nil stag = string_data("<start_with_skill: ") @token_skill = stag.split(",").map { |s| s.to_i } if stag != nil @hook_pull = string_data("<hook_pull: ") == "true" @hook_grab = string_data("<hook_grab: ") == "true" @boom_grab = string_data("<boom_grab: ") == "true" @boom_start = string_data("<boomed_start: ") == "true" @direction_fix = false if @hook_grab if has_token? || @hook_pull || @hook_grab || @boom_grab || @boom_start $game_map.events_withtags.push(self) unless $game_map.events_withtags.include?(self) end end def has_token? !@token_weapon.empty? || !@token_armor.empty? || !@token_item.empty? || !@token_skill.empty? end def register_enemy(event) if !$game_system.remain_killed[$game_map.map_id].nil? and $game_system.remain_killed[$game_map.map_id].include?(self.id) return end @enemy = Game_Enemy.new(0, $1.to_i) if event.name =~ /<enemy: (.*)>/i if @enemy != nil passive = @enemy.enemy.tool_data("Enemy Passive = ", false) @epassive = true if passive == "true" touch = @enemy.enemy.tool_data("Enemy Touch Damage Range = ") @sensor = @enemy.esensor @touch_damage = touch if touch != nil $game_map.event_enemies.push(self) # new separate enemy list $game_map.enemies.push(@enemy) # just enemies used in the cooldown @event.pages.each do |page| if page.condition.self_switch_valid and page.condition.self_switch_ch == PearlKernel::KnockdownSelfW @knockdown_enable = true break end end pose = @enemy.enemy.tool_data("Enemy Dead Pose = ", false) == "true" @deadposee = true if pose and @knockdown_enable end end def update_state_effects @killed ? return : super end def collapsing? return true if @killed || @colapse_time > 0 return false end def enemy_ready? return false if @enemy.nil? || @page.nil? || collapsing? || @enemy.object return true end def battler return @enemy end def apply_respawn return if @colapse_time > 0 @draw_drop = false @dropped_items.clear @through = @die_through @through = false if @through.nil? @die_through = nil @secollapse = nil @colapse_time = 0 @erased = false ; @opacity = 255 @zoomfx_x = 1.0 ; @zoomfx_y = 1.0 @killed = false @priority_type = 1 if @deadposee resetdeadpose refresh end def resetdeadpose if @deadposee $game_self_switches[[$game_map.map_id, @id, PearlKernel::KnockdownSelfW]] = false end end def kill_enemy @secollapse = nil @killed = true @priority_type = 0 if @deadposee gain_exp gain_gold etext = 'Exp ' + @enemy.exp.to_s if @enemy.exp > 0 gtext = 'Gold ' + @enemy.gold.to_s if @enemy.gold > 0 $game_player.pop_damage("#{etext} #{gtext}") if etext || gtext make_drop_items run_assigned_commands end def run_assigned_commands transform = @enemy.enemy.tool_data("Enemy Die Transform = ") switch = @enemy.enemy.tool_data("Enemy Die Switch = ") $game_switches[switch] = true if switch != nil variable = @enemy.enemy.tool_data("Enemy Die Variable = ") $game_variables[variable] += 1 if variable != nil self_sw = @enemy.enemy.tool_data("Enemy Die Self Switch = ", false) #$game_map.event_enemies.delete(self) if @enemy.object #$game_map.enemies.delete(@enemy) if @enemy.object if self_sw.is_a?(String) $game_self_switches[[$game_map.map_id, self.id, self_sw]] = true apply_respawn $game_map.event_enemies.delete(self) $game_map.enemies.delete(@enemy) unless $game_system.remain_killed.has_key?($game_map.map_id) $game_system.remain_killed[$game_map.map_id] = [] end $game_system.remain_killed[$game_map.map_id].push(self.id) unless $game_system.remain_killed[$game_map.map_id].include?(self.id) @enemy = nil else erase unless @deadposee respawn = @enemy.enemy.tool_data("Enemy Respawn Seconds = ") animation = @enemy.enemy.tool_data("Enemy Respawn Animation = ") @respawn_count = respawn * 60 unless respawn.nil? @respawn_anim = animation unless animation.nil? end if transform != nil @enemy = Game_Enemy.new(0, transform) apply_respawn end end def make_drop_items @dropped_items = @enemy.make_drop_items unless @dropped_items.empty? $game_player.enemy_drops.push(self) $game_map.events_withtags.push(self) unless $game_map.events_withtags.include?(self) end end def gain_exp return if @enemy.exp == 0 $game_party.all_members.each do |actor| actor.gain_exp(@enemy.exp) end end def gain_gold return if @enemy.gold == 0 $game_party.gain_gold(@enemy.gold) end alias falcaopearlabs_updatev update def update @start_delay -= 1 if @start_delay > 0 @touch_atkdelay -= 1 if @touch_atkdelay > 0 update_enemy_sensor unless @enemy.nil? update_enemy_touch_damage unless @enemy.nil? falcaopearlabs_updatev end def update_enemy_touch_damage return unless @touch_damage > 0 return unless @character_name != "" return if @epassive || @killed return if @touch_atkdelay > 0 unless @enemy.object @agroto_f.nil? ? target = $game_player : target = @agroto_f else target = $game_player $game_player.followers.each do |follower| next unless follower.visible? if obj_size?(follower, @touch_damage) and !follower.battler.dead? execute_touch_damage(follower) end end end execute_touch_damage(target) if obj_size?(target, @touch_damage) end def execute_touch_damage(target) target.battler.attack_apply(@enemy) target.pop_damage @touch_atkdelay = 50 target.colapse_time = 60 if target.battler.dead? return if target.battler.result.hp_damage == 0 target.jump(0, 0) end # enemy sensor def update_enemy_sensor return if @hookshoting[0] return if @epassive if @sensor != nil @agroto_f.nil? ? target = $game_player : target = @agroto_f if obj_size?(target, @sensor) data = [$game_map.map_id, @id, PearlKernel::Enemy_Sensor] if @inrangeev.nil? and !$game_self_switches[[data[0], data[1], data[2]]] $game_self_switches[[data[0], data[1], data[2]]] = true @inrangeev = true end elsif @inrangeev != nil data = [$game_map.map_id, @id, PearlKernel::Enemy_Sensor] if $game_self_switches[[data[0], data[1], data[2]]] $game_self_switches[[data[0], data[1], data[2]]] = false @inrangeev = nil end end end end # on battle pixel, take a lot of time procesing, but it is very exact def on_battle_pixel?(out=0) w = Graphics.width + out; h = Graphics.height + out return true if screen_x.between?(0 - out,w) and screen_y.between?(0 - out,h) return false end def cmt_data(comment) return 0 if @list.nil? or @list.size <= 0 for item in @list if item.code == 108 or item.code == 408 return $1.to_i if item.parameters[0] =~ /#{comment}(.*)>/i end end return 0 end def string_data(comment) return nil if @list.nil? or @list.size <= 0 for item in @list if item.code == 108 or item.code == 408 return $1.to_s if item.parameters[0] =~ /#{comment}(.*)>/i end end return nil end # stop event movement alias falcaopearl_update_self_movement update_self_movement def update_self_movement return if !@boom_grabdata.nil? return if force_stopped? || @colapse_time > 0 || @blowpower[0] > 0 falcaopearl_update_self_movement end end class Game_System attr_accessor :remain_killed alias falcao_fantastic_store_ini initialize def initialize falcao_fantastic_store_ini @remain_killed = {} end end #=============================================================================== # mist class Game_Map attr_reader :map attr_accessor :event_enemies, :enemies, :events_withtags alias falcaopearl_enemycontrol_ini initialize def initialize @event_enemies = [] @enemies = [] @events_withtags = [] falcaopearl_enemycontrol_ini end alias falcaopearl_enemycontrol_setup setup def setup(map_id) @event_enemies.clear @enemies.clear @events_withtags.clear falcaopearl_enemycontrol_setup(map_id) if $game_temp.loadingg != nil @event_enemies.each do |event| event.resetdeadpose end $game_temp.loadingg = nil end end alias falcaopearl_damage_floor damage_floor? def damage_floor?(x, y) return if $game_player.hookshoting[1] falcaopearl_damage_floor(x, y) end end class Game_Temp attr_accessor :pop_windowdata, :loadingg def pop_w(time, name, text) return unless @pop_windowdata.nil? @pop_windowdata = [time, text, name] end end class Game_Party < Game_Unit alias falcaopearl_swap_order swap_order def swap_order(index1, index2) unless SceneManager.scene_is?(Scene_Map) if $game_player.in_combat_mode? $game_temp.pop_w(180, 'Pearl ABS', 'You cannot switch player while in combat!') return elsif $game_player.any_collapsing? $game_temp.pop_w(180, 'Pearl ABS', 'You cannot switch player while collapsing!') return elsif $game_party.battle_members[index2].deadposing != nil $game_temp.pop_w(180, 'Pearl ABS', 'You cannot move a dead ally!') return end end falcaopearl_swap_order(index1, index2) end end class << DataManager alias falcaopearl_extract extract_save_contents def DataManager.extract_save_contents(contents) falcaopearl_extract(contents) $game_temp.loadingg = true end end
Optional Paste Settings
Category:
None
Cryptocurrency
Cybersecurity
Fixit
Food
Gaming
Haiku
Help
History
Housing
Jokes
Legal
Money
Movies
Music
Pets
Photo
Science
Software
Source Code
Spirit
Sports
Travel
TV
Writing
Tags:
Syntax Highlighting:
None
Bash
C
C#
C++
CSS
HTML
JSON
Java
JavaScript
Lua
Markdown (PRO members only)
Objective C
PHP
Perl
Python
Ruby
Swift
4CS
6502 ACME Cross Assembler
6502 Kick Assembler
6502 TASM/64TASS
ABAP
AIMMS
ALGOL 68
APT Sources
ARM
ASM (NASM)
ASP
ActionScript
ActionScript 3
Ada
Apache Log
AppleScript
Arduino
Asymptote
AutoIt
Autohotkey
Avisynth
Awk
BASCOM AVR
BNF
BOO
Bash
Basic4GL
Batch
BibTeX
Blitz Basic
Blitz3D
BlitzMax
BrainFuck
C
C (WinAPI)
C Intermediate Language
C for Macs
C#
C++
C++ (WinAPI)
C++ (with Qt extensions)
C: Loadrunner
CAD DCL
CAD Lisp
CFDG
CMake
COBOL
CSS
Ceylon
ChaiScript
Chapel
Clojure
Clone C
Clone C++
CoffeeScript
ColdFusion
Cuesheet
D
DCL
DCPU-16
DCS
DIV
DOT
Dart
Delphi
Delphi Prism (Oxygene)
Diff
E
ECMAScript
EPC
Easytrieve
Eiffel
Email
Erlang
Euphoria
F#
FO Language
Falcon
Filemaker
Formula One
Fortran
FreeBasic
FreeSWITCH
GAMBAS
GDB
GDScript
Game Maker
Genero
Genie
GetText
Go
Godot GLSL
Groovy
GwBasic
HQ9 Plus
HTML
HTML 5
Haskell
Haxe
HicEst
IDL
INI file
INTERCAL
IO
ISPF Panel Definition
Icon
Inno Script
J
JCL
JSON
Java
Java 5
JavaScript
Julia
KSP (Kontakt Script)
KiXtart
Kotlin
LDIF
LLVM
LOL Code
LScript
Latex
Liberty BASIC
Linden Scripting
Lisp
Loco Basic
Logtalk
Lotus Formulas
Lotus Script
Lua
M68000 Assembler
MIX Assembler
MK-61/52
MPASM
MXML
MagikSF
Make
MapBasic
Markdown (PRO members only)
MatLab
Mercury
MetaPost
Modula 2
Modula 3
Motorola 68000 HiSoft Dev
MySQL
Nagios
NetRexx
Nginx
Nim
NullSoft Installer
OCaml
OCaml Brief
Oberon 2
Objeck Programming Langua
Objective C
Octave
Open Object Rexx
OpenBSD PACKET FILTER
OpenGL Shading
Openoffice BASIC
Oracle 11
Oracle 8
Oz
PARI/GP
PCRE
PHP
PHP Brief
PL/I
PL/SQL
POV-Ray
ParaSail
Pascal
Pawn
Per
Perl
Perl 6
Phix
Pic 16
Pike
Pixel Bender
PostScript
PostgreSQL
PowerBuilder
PowerShell
ProFTPd
Progress
Prolog
Properties
ProvideX
Puppet
PureBasic
PyCon
Python
Python for S60
QBasic
QML
R
RBScript
REBOL
REG
RPM Spec
Racket
Rails
Rexx
Robots
Roff Manpage
Ruby
Ruby Gnuplot
Rust
SAS
SCL
SPARK
SPARQL
SQF
SQL
SSH Config
Scala
Scheme
Scilab
SdlBasic
Smalltalk
Smarty
StandardML
StoneScript
SuperCollider
Swift
SystemVerilog
T-SQL
TCL
TeXgraph
Tera Term
TypeScript
TypoScript
UPC
Unicon
UnrealScript
Urbi
VB.NET
VBScript
VHDL
VIM
Vala
Vedit
VeriLog
Visual Pro Log
VisualBasic
VisualFoxPro
WHOIS
WhiteSpace
Winbatch
XBasic
XML
XPP
Xojo
Xorg Config
YAML
YARA
Z80 Assembler
ZXBasic
autoconf
jQuery
mIRC
newLISP
q/kdb+
thinBasic
Paste Expiration:
Never
Burn after read
10 Minutes
1 Hour
1 Day
1 Week
2 Weeks
1 Month
6 Months
1 Year
Paste Exposure:
Public
Unlisted
Private
Folder:
(members only)
Password
NEW
Enabled
Disabled
Burn after read
NEW
Paste Name / Title:
Create New Paste
Hello
Guest
Sign Up
or
Login
Sign in with Facebook
Sign in with Twitter
Sign in with Google
You are currently not logged in, this means you can not edit or delete anything you paste.
Sign Up
or
Login
Public Pastes
Untitled
49 min ago | 8.46 KB
Untitled
1 hour ago | 7.62 KB
Web Maintenance Kickoff [POST REDESIGN]
2 hours ago | 0.98 KB
Untitled
2 hours ago | 7.43 KB
Untitled
3 hours ago | 6.56 KB
Untitled
4 hours ago | 16.10 KB
Untitled
5 hours ago | 5.53 KB
Untitled
6 hours ago | 25.04 KB
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the
Cookies Policy
.
OK, I Understand
Not a member of Pastebin yet?
Sign Up
, it unlocks many cool features!