MoonShadow 2 Posted October 29, 2015 (edited) Hello everybody, I'm using this abs http://www.mundorpgmaker.com.br/topic/90666-rmtm-bullpup-shooting-engine-v18/, (I know is Portuguese) works very well but I have a problem: the script is the function of alert near enemies and I would like to turn it off but default you can`t do. The page of script is this: #============================================================================== # Bullpup Shooting Engine Main #============================================================================== #------------------------------------------------------------------------------ # Créditos: Leon-S.K --- ou --- AndreMaker --- ou --- 4ndreMTM #------------------------------------------------------------------------------ # # Para Criar um inimigo, coloque o comentario em um evento: # - enemy_id= E coloque o ID do inimigo na database # Para adicionar um comando quando o inimigo morrer, coloque o comentario # Die Erase - Ira apagar o inimigo # Die Switch Local X - Ira ativar a switch local x # Die Switch X - Ira ativar a switch # # Você pode criar um objeto, colocando um comentario no evento # - object command # # E SUBSTITUA command por : # Self X - Ativa a switch local x # Switch X - Ativa a swich X # Start - Executa tudo após o comentario # Weapon X - Ativa-se somente com a arma de ID X # # Exemplo: # - Object Self A # # Outro Exemplo: # - Object Switch 20 # # Para o Inimigo no database, coloque nos comentarios # animation_id= id da animação # Para definir uma animação de ataque # # Você ainda pode criar uma arma com dano em area ou que atravessa mais # de um inimigo. # # Para fazer-lo coloque no comentario da arma: # # Adicione "area" para criar uma arma com efeito de area(explosao) # Adicione "pierce x" e troque x para quantos inimigos quiser atravessar # # Para colocar as armas no script, visite "Bullpup Weapons" #------------------------------------------------------------------------------ #============================================================================== module Module_Of_Config #------------------------------------------------------------------------------ # CONFIGURAÇÕES GERAIS #------------------------------------------------------------------------------ Opacity_Burn = 10 # A velocidade que a opacidade diminui quando morto Enemy_Recover = 60 # Recover padrão de inimigos Attack_Key = Key::A # Tecla de Tiro Reload_Key = Key::S # Tecla de Reload Turn_Key = nil # Tecla que quando segurada gira o jogador Pierce_Enemies = 1 # Quantos inimigos a bala pode atravessar (padrao 1) Die_SE = "Monster6" # SE tocado quando o inimigo Morre Player_Die_SE = "die_abyss" # SE tocado quando o player morre # Tecla que possui a mesma função de enter # deixe nil para desabilitar Enter_Key2 = nil # Tecla de andar sileciosamente (esgueirar) Sneak_Key = Key::Ctrl # Velocidade do movimento do inimigo Enemy_Speed = {:normal => 2, # normal -> velocidade normal do inimigo :search => 3, # search -> quando o inimigo estiver te procurando :chase => 3} # chase -> quando o inimigo estiver te perseguindo Mouse_Control = false # Girar o Player e atirar com o Mouse? WeaponWeight_Slow = false # Peso da arma afeta a velocidade do player? WASD_Movement = false # Controlar usando WASD Disable_Control = 0 # Switch que Impede que o Player atire etc... Show_Damage_Sprites = true # Mostrar valor do dano no alvo Show_Melee_Sprites = true # Mostrar sprites de armas melee (facas, etc) Show_Weapon_Sprites = true # Mostrar sprites de armas (pistolas, etc) Show_Smoke_On_Fire = true # Mostrar sprites de fumaça ao atirar Show_Blood_Anim = true # Mostrar sangue Show_PopUp_Item = true # Mostrar janelas de item ganho Stamina = false # Sistema de Stamina Max_Stamina = 150 # Máximo de stamina Stamina_Time = 70 # Tempo até a stamina começar a regenerar Stamina_Rate = 8 # Frequencia de Regeneraçaõ Stamina_Regeneration = 5 # Quantidade regenerada cada vez Jump_On_Damage = false # Pular quando recebe dano Health_Time = 0 # Tempo de espera até o hp começar a regenerar Health_Rate = 0 # Frequencia de Regeneraçaõ Health_Regeneration = 0 # Quantidade regenerada cada vez Decrease_Volume = true # Diminuir o som periodicamente quando morrendo Decrease_Tone = true # Diminuir a tonalidade periodicamente quando morrendo Enemy_Drop = false # Inimigos dropam suas armas Pick_SE = "Equip1" # Som ao pegar um drop Quick_Switch_Key = nil # Tecla de rapida troca de armas Swap_SE = "Equip2" # Som de rapida troca de armas Drop_Weapon_Key = nil # Tecla de largar arma Drop_SE = "Equip3" # Som de largar arma Push_Back_Effect = false # Aumento do recover quando é atingido Push_Back_Melee = 14 # Valor para o push back do ataque melee Clip_IN_SE = "usp_no_ammo" # Se os tiros estiverem passando por um tile que não pode ser passavel, marque # o tile com o numero abaixo... Terrain_Debug = 1 Flash = false # Flash quando receber dano ou uma explosão acontecer Floor = true # Explosão deixa uma marca do chão Default_Follow = 0 # Valor padrão para visão dos inimigos Melee_Wav_Name = "knife_hit" # Som do ataque melee Explosion_SE = "Explosion2" # Som da explosão Blend_Type = 1 # Sinteticidade (normal, adicionar, subtrair) padrão 1 Fragments = 10 # Numero de fragmentos que a explosão solta Frag_Vel = 9 # Velocidade dos fragmentos Smokes = 2 # Numero de fumaças que a explosão solta Smoke_Vel = 2 # Velocidade da fumaça Smoke_Freq = 3 # Frequencia da fumaça Shot_Bit = {} # Não Mecha # GRAFICOS # Coloque aqui o caminho para os determinados graficos: # Se não souber oque é, não mecha. AreaChar = "$!rocket" Floor_Bit = Bitmap.new("Graphics/Particles/floor") Explosion_Bit = Bitmap.new("Graphics/Particles/explosion") Fragment_Bit = Bitmap.new("Graphics/Particles/fragments") Smoke_Bit = Bitmap.new("Graphics/Particles/smoke") Blood_Bit = Bitmap.new("Graphics/Particles/blood") Melee_Bit = Bitmap.new("Graphics/Particles/knifeslash") Shot_Bit[:x] = Bitmap.new("Graphics/Particles/shot_x") Shot_Bit[:y] = Bitmap.new("Graphics/Particles/shot_y") #----------------------------------------------------------------------------------# #------------------------------------------------------------------------------ # AREA NAO EDITAVEL - APENAS SE SABE OQUE ESTA FAZENDO =D #------------------------------------------------------------------------------ def abs_distance_to(me, him) dx = me.distance_x_from(him.x).abs dy = me.distance_y_from(him.y).abs return dx + dy end def same_axis?(me, character) return if !me.is_a?(Game_Character) or !character.is_a?(Game_Character) ax = me.x - character.x ay = me.y - character.y case me.direction when 2 return true if ax == 0 and ay < 0 when 4 return true if ay == 0 and ax > 0 when 6 return true if ay == 0 and ax < 0 when 8 return true if ax == 0 and ay > 0 end return false end def in_sight?(me, him, range) xx = [];yy = [] xx.push(me.x); yy.push(me.y) SceneManager.scene.spriteset.dep_clear case me.direction when 2 for i in 0..range if $game_map.passable?(me.x, me.y + i, me.direction) or $game_map.counter?(me.x, me.y + i) yy.push(me.y + i) #SceneManager.scene.spriteset.depuracao(me.x, me.y + i) else break end end when 4 for i in 0..range if $game_map.passable?(me.x - i, me.y, me.direction) or $game_map.counter?(me.x - i, me.y) xx.push(me.x - i) #SceneManager.scene.spriteset.depuracao(me.x - i, me.y) else break end end when 6 for i in 0..range if $game_map.passable?(me.x + i, me.y, me.direction) or $game_map.counter?(me.x + i, me.y) xx.push(me.x + i) #SceneManager.scene.spriteset.depuracao(me.x + i, me.y) else break end end when 8 for i in 0..range if $game_map.passable?(me.x, me.y - i, me.direction) or $game_map.counter?(me.x, me.y - i) yy.push(me.y - i) #SceneManager.scene.spriteset.depuracao(me.x, me.y - i) else break end end end xx = xx & xx yy = yy & yy xx.sort!; yy.sort! return true if xx.include?(him.x) and yy.include?(him.y) return false end end class Game_Map attr_accessor :enemies attr_accessor :damage_sprites attr_accessor :item_windows attr_accessor :explosion_chars #attr_accessor :last_drops attr_accessor :screen attr_accessor :hash alias abs_setup setup def setup(map_id) @enemies.nil? ? @enemies = [] : @enemies.clear @item_windows.nil? ? @item_windows = [] : @item_windows.clear #@last_drops.nil? ? @last_drops = [] : @last_drops.clear store_drops [] if @hash.nil? abs_setup(map_id) if SceneManager.scene.is_a?(Scene_Map) SceneManager.scene.dispose_spriteset SceneManager.scene.create_spriteset end end def window(type) @item_windows.push(type) end def store_drops array @hash = {}; @hash[:x] = []; @hash[:y] = []; @hash[:item] = []; @hash[:angle] = [] array.each do |sprite| @hash[:x].push(sprite.character.x) @hash[:y].push(sprite.character.y) @hash[:item].push(sprite.item) @hash[:angle].push(sprite.angle) end end end #----------------------------------------------------------------------------------# class Game_Event < Game_Character include Module_Of_Config attr_accessor :state attr_accessor :last_know attr_reader :enemy attr_reader :object attr_reader :not_blood attr_reader :st attr_reader :dbug alias abs_setup_page_settings setup_page_settings alias abs_initialize initialize alias abs_update update alias abs_start start alias abs_erase_enemy erase def initialize(map_id, event) @enemy = nil @recover = 0; @timer = 0; @state = :normal abs_initialize(map_id, event) end def setup_page_settings abs_setup_page_settings check_enemy end def check_enemy if !@enemy.nil? @enemy = nil $game_map.enemies.delete(self) elsif !@object.nil? @object = nil $game_map.enemies.delete(self) end return if @list.nil? weapon = nil @list.each do |command| next if not command.code == 108 or command.code == 408 if @enemy.nil? if command.parameters[0].downcase.include?("enemy_id=") id = command.parameters[0].sub("enemy_id=","") @enemy = ABS_Enemy.new(id.to_i) @trigger = 2 $game_map.enemies.push(self) print "Enemy #{@enemy.enemy.name} criado \n" @move_speed = weight_speed if @enemy.weapon != nil elsif command.parameters[0].downcase.include?("object") die_com = command.parameters[0].downcase.sub("object ", ""); die_com.downcase! if die_com.include?("self ") switch = die_com.downcase.sub('self ','') switch.downcase! switch = check_switch_string(switch) elsif die_com.include?("switch ") and !die_com.include?('local') switch = die_com.downcase.sub('switch ','') switch = switch.to_i elsif die_com.include?('start') switch = true elsif die_com.include?('weapon') switch = true weapon = (die_com.sub("weapon ",'')).to_i else switch = true end @object = ABS_Object.new(switch, weapon) $game_map.enemies.push(self) print "Objeto criado com switch #{@object.switch} \n" end else if command.parameters[0].downcase.include?("die") cmd = command.parameters[0].downcase if cmd == "die erase" @enemy.die = 0 elsif cmd.include?("die switch local") @enemy.die = 1 maqoe = cmd.sub("die switch local ",'') @enemy.switch = check_switch_string(maqoe) elsif cmd.include?("die switch") @enemy.die = 2 maqoe = cmd.sub("die switch ", '') @enemy.switch = maqoe.to_i else @enemy.die = 0 end print "Enemy #{@enemy.enemy.name} die command is #{@enemy.die} \n" elsif command.parameters[0].downcase.include?("follow ") cmd = command.parameters[0].downcase @enemy.follow = (cmd.sub("follow ","")).to_i else next end end end end def weight_speed return 5 if @enemy.weapon.nil? return 6 - @enemy.weapon.weight end def check_switch_string(string) if string.include?('a') return "A" elsif string.include?('b') return "B" elsif string.include?('c') return "C" elsif string.include?('d') return "D" end return nil end def start_object(used = nil) if @object.only.is_a?(Fixnum) print "has a only! \n" return if @object.only != used.id end if @object.switch.is_a?(TrueClass) start(true);return end if @object.switch.is_a?(String) key = [$game_map.map_id, self.id, @object.switch] $game_self_switches[key] ? $game_self_switches[key] = false : $game_self_switches[key] = true elsif @object.switch.is_a?(TrueClass) @object = nil $game_map.enemies.delete(self) self.start else $game_switches[@object.switch] ? $game_switches[@object.switch] = false : $game_switches[@object.switch] = true end end def erase @character_name = '' @priority_type = 1 moveto(0,0) abs_erase_enemy end def damage_enemy(value, pushback, used = nil) if !@object.nil? start_object(used) return end turn_toward_character($game_player) @state = :chase if @state == :search and @st == 0 @recover += (pushback / 2).to_i if Push_Back_Effect value -= (rand(10) - 5) value -= @enemy.defense value = 0 if value < 0 if Jump_On_Damage last_speed = @move_speed last_freq = @move_frequency @move_speed = 5 @move_frequency = 5 jump(0,0) end $game_map.damage_sprites.push(Damage_Sprite.new(self, value)) if Show_Damage_Sprites == true @enemy.hp -= value if @enemy.hp <= 0 $game_map.enemies.delete(self) RPG::SE.new(Die_SE, 80).play Audio.se_play('Audio/Se/Blow6', 90, 100) expp = @enemy.enemy.exp end if Jump_On_Damage @move_speed = last_speed @move_frequency = last_freq end end def update @not_blood = (@object.nil? ? false : true) if @not_blood.nil? @bl = false if @bl.nil? update_enemy_basic abs_update end def update_enemy_basic if @enemy != nil @recover -= 1 if @recover > 0 if @enemy.hp <= 0 update_kill return end update_state end end def check_enemies_around $game_map.enemies.each do |enemy| next if enemy.object != nil next if abs_distance_to(self, enemy) >= 6 next if enemy.st != 0 if enemy.state != @state @state = enemy.state if @state == :search @last_know = enemy.last_know end end end end def update_state return if @enemy.nil? return if @enemy.hp == 0 @move_speed = Enemy_Speed[@state] if @move_speed != Enemy_Speed[@state] case @state when :normal @last_know = nil if @last_know != nil check_enemies_around clear_path if in_sight?(self, $game_player, @enemy.follow) if @bl == false @bl = true @balloon_id = 1 end @state = :chase elsif in_sight?(self, $game_player, @enemy.follow + 3) change_to_search if @bl == false @bl = true @balloon_id = 2 end elsif check_really_near == true change_to_search else @direction_fix = false if @direction_fix @bl = false if @bl end when :search update_search when :chase print "chasing \n" if abs_distance_to(self, $game_player) >= 9; @state = :search; change_to_search; end; update_chase! end end def change_to_search return if @state == :chase clear_path turn_toward_character($game_player) @state = :search @last_know = Game_Character.new @last_know.moveto($game_player.x,$game_player.y) find_path(@last_know.x, @last_know.y) @recover = 20 end def update_search @st = 0 if @st.nil? @dbug = 0 if @dbug.nil? return if @state != :search @state = :normal if @last_know.nil? if in_sight?(self, $game_player, @enemy.follow) @ballon_id = 0 @bl = true @state = :chase @last_know = nil @balloon_id = 1 return end if (self.x != @last_know.x) == true and (self.y != @last_know.y) == true @dbug += 1 if @map.nil? and @runpath == false find_path(@last_know.x, @last_know.y) else print "searching \n" run_path if !moving? end if @dbug == 200 @state = :normal @last_know = nil; @dbug = 0; clear_path return end else clear_path @st += 1 if @st == 40 print "turn? \n" turn_toward_character($game_player) if !moving? elsif @st == 80 print "turn! \n" turn_away_from_character($game_player) if !moving? elsif @st == 120 print "turned \n" turn_random if !moving? @st = 0; @state = :normal @last_know = nil end end end def update_chase! return if @state != :chase if @enemy.weapon.nil? @direction_fix = false if @direction_fix if in_sight?(self, $game_player, @enemy.follow) clear_path move_toward_character($game_player) if !moving? else if @map.nil? and @runpath == false find_path($game_player.x, $game_player.y) else run_path if !moving? end end dx = distance_x_from($game_player.x).abs dy = distance_y_from($game_player.y).abs if dx + dy <= 1 attack; return end else turn_toward_character($game_player) if !moving? if in_sight?(self, $game_player, @enemy.follow) clear_path @direction_fix = true update_shooting else if @map.nil? and @runpath == false find_path($game_player.x, $game_player.y) else run_path if !moving? end @direction_fix = false end end end def update_shooting return if @recover > 0 return if @enemy.weapon.nil? if @enemy.weapon.bullets > 0 RPG::SE.new("#{@enemy.weapon.wav_name}", 100).play SceneManager.scene.spriteset.shoot_enemy(self) @recover = @enemy.weapon.recover @enemy.weapon.bullets -= 1 else RPG::SE.new("#{@enemy.weapon.wav_name}_reload", 100).play @enemy.weapon.bullets = @enemy.weapon.max @recover = (@enemy.weapon.recover > 40 ? @enemy.weapon.recover : 40 ) end end def update_kill if @opacity > 0 @opacity -= Module_Of_Config::Opacity_Burn else if Enemy_Drop and @enemy.weapon != nil SceneManager.scene.spriteset.drop(@x, @y, @enemy.weapon.weapon) end $game_party.members[0].gain_exp(@enemy.enemy.exp) $game_party.gain_gold(@enemy.enemy.gold) case @enemy.die when 0 print "Erased enemy #{@enemy.enemy.name}\n" self.erase @enemy = nil when 1 key = [$game_map.map_id, self.id, @enemy.switch] if $game_self_switches[key] == true $game_self_switches[key] = false else $game_self_switches[key] = true end @opacity = 255 when 2 $game_switches[@enemy.switch] ? $game_switches[@enemy.switch] = false : $game_switches[@enemy.switch] = true @opacity = 255 end @enemy = nil if !@enemy.nil? end end def start(object_ok = false) if object_ok and @object != nil abs_start return end abs_start if @enemy.nil? end def check_really_near return false if !$game_player.moving? return false if $game_player.sneaking sx = distance_x_from($game_player.x).abs sy = distance_y_from($game_player.y).abs plus = ($game_player.dash? ? 1 : 0) return true if sx + sy - plus < 3 end def attack return if @enemy.hp == 0 or @recover > 0 @recover = Module_Of_Config::Enemy_Recover SceneManager.scene.spriteset.blood($game_player, @direction) value = @enemy.attack r = rand(20) factor = r - 10 value += factor $game_player.damage_hero(value, Push_Back_Melee) SceneManager.scene.spriteset.melee(self) end end #----------------------------------------------------------------------------------# class ABS_Object attr_accessor :only attr_accessor :switch def initialize(die_com, only = nil) @switch = die_com @only = only end end #----------------------------------------------------------------------------------# class ABS_Enemy include Module_Of_Config attr_accessor :enemy attr_accessor :hp attr_accessor :attack attr_accessor :defense attr_accessor :die attr_accessor :switch attr_accessor :weapon attr_reader :name attr_accessor :follow def initialize(id) @enemy = Game_Enemy.new(0, id) @name = @enemy.name; @weapon = nil @die = 0, @switch = nil; @follow = Default_Follow note = @enemy.enemy.note if note.include?("weapon=") id = note.sub("weapon=","").to_i arma = Weapons_To_Be_Used::Armas[id] p1 = $data_weapons[id] p2 = $data_items[arma[0]] p3 = arma[1] p4 = arma[2] p5 = arma[3] p6 = arma[4] p7 = arma[5] @weapon = Abs_Weapon.new(p1,p2,p3,p4,p5,p6,p7) @weapon.bullets = @weapon.max end @hp = enemy.mhp @attack = enemy.atk @defense = enemy.def end end #----------------------------------------------------------------------------------# class Game_Player < Game_Character include Module_Of_Config attr_accessor :kill_player attr_accessor :equipped_weapon attr_accessor :need_check attr_accessor :hrate attr_accessor :weight attr_accessor :stamina attr_reader :aiming attr_reader :stamina_wasted alias abs_initialize initialize alias abs_update update def initialize @st_time, @st_rate = 0, 0 @recover = 0; $master_sound = 0; @stamina = Max_Stamina; @stamina_wasted = false @kill_player = false; @need_check = true; @hrate = 0; @hwait = 0; @weight = false @real_vis_character_name = @character_name @real_vis_character_index = @character_index abs_initialize end def update_stamina return unless Stamina return unless SceneManager.scene.is_a?(Scene_Map) spriteset = SceneManager.scene.spriteset if Stamina_Gauge::Enabled if spriteset.stamina_gauge != nil spriteset.stamina_gauge.update if spriteset.stamina_gauge.stamina != @stamina or spriteset.stamina_gauge.visible != !SceneManager.scene.hud.nil? else spriteset.create_stamina_gauge end end if dash? and moving? minus = 1 + distance_per_frame if @stamina - minus < 0 @stamina = 0 else @stamina -= minus end @st_time = Stamina_Time @stamina_wasted = true if @stamina == 0 return else if @st_time > 0 @st_time -= 1 else if @st_rate == Stamina_Rate if @stamina + Stamina_Regeneration > Max_Stamina @stamina = Max_Stamina else @stamina += Stamina_Regeneration end @stamina_wasted = false if @stamina == Max_Stamina @st_rate = 0 else @st_rate += 1 end end end end alias :normal_dash :dash? def dash? if Stamina return false if @stamina == 0 or @stamina_wasted end return normal_dash end def sneaking Input.press?(Sneak_Key) end def update_inputs return if stop_bullpup! if @recover == 0 and Input.trigger?(Drop_Weapon_Key) and @equipped_weapon != nil drop_weapon end if Mouse_Control update_mouse_control else if @recover == 0 and Input.trigger?(Quick_Switch_Key) quick_weapon_swap end if not @equipped_weapon == nil if Input.press?(Attack_Key) and @recover == 0 if not @equipped_weapon.bullets == 0 @equipped_weapon.area == true ? update_attack(true) : update_attack return else Audio.se_play("Audio/SE/#{@equipped_weapon.wav_name}_no_ammo", 100, 130) @recover = @equipped_weapon.recover end end if Input.trigger?(Reload_Key) if @equipped_weapon.bullets == 0 reload(@equipped_weapon) else Audio.se_play("Audio/SE/Buzzer1", 80, 100) end end else if Input.press?(Attack_Key) update_melee if @recover == 0 end end end end def update_mouse_control return if Mouse_Control == false if @recover == 0 and Mouse.click?(Mouse::SCROLL) quick_weapon_swap end if not @equipped_weapon == nil if Mouse.press?(Mouse::LEFT) and @recover == 0 if not @equipped_weapon.bullets == 0 @equipped_weapon.area == true ? update_attack(true) : update_attack return else Audio.se_play("Audio/SE/#{@equipped_weapon.wav_name}_no_ammo", 100, 130) @recover = @equipped_weapon.recover end end if Input.trigger?(Reload_Key) if @equipped_weapon.bullets == 0 reload(@equipped_weapon) else Audio.se_play("Audio/SE/Buzzer1", 80, 100) end end else if Mouse.click?(Mouse::LEFT) update_melee if @recover == 0 end end end def update update_health_reg @original_ms = @move_speed if @original_ms.nil? if sneaking @move_speed = @original_ms - 1 else if !dash? @move_speed = @original_ms if @move_speed != @original_ms end end if WeaponWeight_Slow == true if @equipped_weapon != nil @move_speed = weight_speed if @move_speed != weight_speed else @move_speed = 5 if @move_speed != 5 end end update_kill if @kill_player update_stamina if Stamina if $reload_sprite.nil? @recover -= 1 if @recover > 0 end re_check_equipped_weapon if @need_check == true abs_update update_inputs update_strafe if Mouse_Control end def update_strafe return if stop_bullpup! bx = Mouse.x - self.screen_x by = Mouse.y - (self.screen_y-16) rad_angle = Math.atan2(bx,by) rescue 1 r_angle = (rad_angle*360)/(2*Math::PI) if r_angle >= 135 and r_angle <= 225 #between?(-2,-1) set_direction(8) if @direction != 8 elsif r_angle >= -135 and r_angle <= -45 #.between?(-2,2) set_direction(4) if @direction != 4 elsif r_angle >= 45 and r_angle <= 135 #.between?(1,2) set_direction(6) if @direction != 6 elsif r_angle >= -45 and r_angle <= 45#.between?(-1,1) set_direction(2) if @direction != 2 end end def stop_bullpup! return true if $game_switches[Disable_Control] == true return true if $game_map.interpreter.running? return true if $game_message.busy? return false end if Mouse_Control def move_straight(d, turn_ok = true) @followers.move if passable?(@x, @y, d) @move_succeed = passable?(@x, @y, d) if @move_succeed set_direction(d) if stop_bullpup! @x = $game_map.round_x_with_direction(@x, d) @y = $game_map.round_y_with_direction(@y, d) @real_x = $game_map.x_with_direction(@x, reverse_dir(d)) @real_y = $game_map.y_with_direction(@y, reverse_dir(d)) increase_steps elsif turn_ok set_direction(d) if stop_bullpup! check_event_trigger_touch_front end end end def weight_speed return if not WeaponWeight_Slow return 6 - @equipped_weapon.weight end def update_health_reg actor = $game_party.members[0] return if actor.nil? return if actor.hp == actor.mhp if Decrease_Volume volume = (50 * actor.hp / actor.mhp).to_i $master_sound = 50 - volume end if Decrease_Tone if @last_alpha.nil? @last_alpha = $game_map.screen.tone elsif actor.hp == actor.mhp if @last_alpha != $game_map.screen.tone @last_alpha = $game_map.screen.tone end end color = (255 * actor.hp / actor.mhp).to_i tone = (@last_alpha.gray + 255) - color if tone < 0; tone = 0; elsif tone > 255; tone = 255; end $game_map.screen.start_tone_change(Tone.new(@last_alpha.red,@last_alpha.green,@last_alpha.blue,tone), 0) end if @hwait > 0 @hwait -= 1; return else if @hrate == Health_Rate if actor.hp + Health_Regeneration > actor.mhp actor.hp = actor.mhp else actor.hp += Health_Regeneration end @hrate = 0 else @hrate += 1 end end end alias :move :movable? def movable? return false if @kill_player move end def drop_weapon return if @equipped_weapon == nil RPG::SE.new(Drop_SE, 90).play item = @equipped_weapon.weapon SceneManager.scene.spriteset.drop(@x, @y, item) actor = $game_party.members[0] actor.change_equip(0,nil) @equipped_weapon = nil $game_party.lose_item(item, 1) SceneManager.scene.spriteset.refresh! $game_system.hud_need_refresh = true end def quick_weapon_swap real = [] $weapons.each {|weapon| if $game_party.has_item?(weapon.weapon, true) real.push(weapon) end } return if real.empty? if @equipped_weapon.nil? @equipped_weapon = real[0] $game_party.members[0].change_equip(0, real[0].weapon) $game_party.lose_item(real[0].weapon, 1) $game_map.window(Pop.new(real[0].weapon)) proc; return end if real.size == 1 $game_party.gain_item(@equipped_weapon.weapon, 1,false, true) @equipped_weapon = real[0] $game_party.members[0].change_equip(0, real[0].weapon) $game_party.lose_item(real[0].weapon, 1) $game_map.window(Pop.new(real[0].weapon)) proc; return end if real.include?(@equipped_weapon) index = real.index(@equipped_weapon) if index == real.size - 1 $game_party.gain_item(@equipped_weapon.weapon, 1,false,true) @equipped_weapon = real[0] $game_party.members[0].force_change_equip(0, real[0].weapon) $game_party.lose_item(real[0].weapon, 1) $game_map.window(Pop.new(real[0].weapon)) proc; return else #$game_party.gain_item(@equipped_weapon.weapon, 1) @equipped_weapon = real[index + 1] $game_party.members[0].change_equip(0, real[index + 1].weapon) $game_map.item_windows.clear; $game_party.lose_item(real[index + 1].weapon, 1) $game_map.window(Pop.new(real[index + 1].weapon)) proc; return end else $game_party.gain_item(@equipped_weapon.weapon, 1,false,true) @equipped_weapon = real[0] $game_party.members[0].change_equip(0, real[0].weapon) $game_party.lose_item(real[0].weapon, 1) $game_map.window(Pop.new(real[0].weapon)) proc; return end proc end def proc @recover = 30 @need_check = true SceneManager.scene.spriteset.refresh! if Show_Weapon_Sprites RPG::SE.new(Swap_SE,80).play end def move_by_input return if !movable? || $game_map.interpreter.running? if Input.press?(Turn_Key) set_direction(Input.dir4) if Input.dir4 > 0 else move_straight(Input.dir4) if Input.dir4 > 0 end end def update_melee actor = $game_party.members[0] @recover = 60 if actor.weapons[0] != nil and Show_Melee_Sprites SceneManager.scene.spriteset.weapon(self, actor.weapons[0].icon_index) end SceneManager.scene.spriteset.melee(self) return if $game_map.enemies.empty? $game_map.enemies.each {|enemy| damage = actor.atk if @direction == enemy.direction damage *= 2 end ax = @x - enemy.x ay = @y - enemy.y case @direction when 2 if ax == 0 and ay == -1 enemy.damage_enemy(damage, Push_Back_Melee) SceneManager.scene.spriteset.blood(enemy, @direction) if enemy.object.nil? end when 4 if ay == 0 and ax == 1 enemy.damage_enemy(damage, Push_Back_Melee) SceneManager.scene.spriteset.blood(enemy, @direction) if enemy.object.nil? end when 6 if ay == 0 and ax == -1 enemy.damage_enemy(damage, Push_Back_Melee) SceneManager.scene.spriteset.blood(enemy, @direction) if enemy.object.nil? end when 8 if ax == 0 and ay == 1 enemy.damage_enemy(damage, Push_Back_Melee) SceneManager.scene.spriteset.blood(enemy, @direction) if enemy.object.nil? end end } end def re_check_equipped_weapon if self.actor.weapons[0].nil? print "#{self.actor.name} has no weapon\n" @equipped_weapon = nil; return end $weapons.each { |weapon| if self.actor.equips.include?(weapon.weapon) @equipped_weapon = weapon return elsif self.actor.weapons[0].id == weapon.weapon.id @equipped_weapon = weapon return else @equipped_weapon = nil end } @need_check = false end def reload(weapon) $game_party.items.each { |item| if item.id == weapon.magazine.id rec = 0 if @equipped_weapon.recover < 40 rec = 40 else rec = @equipped_weapon.recover end SceneManager.scene.spriteset.reload(rec) @recover = (@equipped_weapon.recover > 40 ? @equipped_weapon.recover : 45) $game_party.lose_item(weapon.magazine,1) @equipped_weapon.bullets += @equipped_weapon.max Audio.se_play("Audio/Se/#{weapon.wav_name}_reload", 100, 100) @recover = @equipped_weapon.recover return end } Audio.se_play("Audio/Se/Buzzer1", 85, 100) end def update_attack(bazooca = false) return if $game_map.interpreter.running? or $game_message.busy? $game_map.enemies.compact! return if @kill_player return if $game_party.members[0].weapons[0] == nil re_check_equipped_weapon if @equipped_weapon == nil return if @equipped_weapon.nil? or @equipped_weapon.class != Abs_Weapon Audio.se_stop Audio.se_play("Audio/Se/#{@equipped_weapon.wav_name}", 100, 100) @equipped_weapon.bullets -= 1 @recover = @equipped_weapon.recover range_x = {'pos' => [], 'neg' => []} range_y = {'pos' => [], 'neg' => []} SceneManager.scene.spriteset.shoot(self) $game_map.enemies.each {|enemy| next if enemy.object != nil next if enemy.state == :chase dx = enemy.distance_x_from(self.x).abs dy = enemy.distance_y_from(self.y).abs rg = (@equipped_weapon.wav_name.include?("silenced") ? 2 : 4) if dx+dy <= rg enemy.change_to_search enemy.balloon_id = 2 end } for i in 1..8 if (map_passable?(@x - i, @y, 4) or $game_map.counter?(@x - i, @y)) and $game_map.terrain_tag(@x - i, @y) != Terrain_Debug range_x['pos'].push(i) else break; next end end for i in 1..8 if (map_passable?(@x + i, @y, 6) or $game_map.counter?(@x + i, @y)) and $game_map.terrain_tag(@x + i, @y) != Terrain_Debug range_x['neg'].push(i * (-1)) else break; next end end for i in 1..8 if (map_passable?(@x, @y - i, 8) or $game_map.counter?(@x, @y - i)) and $game_map.terrain_tag(@x, @y - i) != Terrain_Debug range_y['pos'].push(i) else break; next end end for i in 1..8 if (map_passable?(@x, @y + i, 2) or $game_map.counter?(@x, @y + i)) and $game_map.terrain_tag(@x, @y + i) != Terrain_Debug range_y['neg'].push(i * (-1)) else break; next end end @new_enemies = [] $game_map.enemies.each do |enemy| ax = @x - enemy.x ay = @y - enemy.y case @direction when 2 if not ax != 0 if ay == -1 @new_enemies[0] = enemy elsif ay == - 2 @new_enemies[1] = enemy elsif ay == - 3 @new_enemies[2] = enemy elsif ay == - 4 @new_enemies[3] = enemy elsif ay == - 5 @new_enemies[4] = enemy elsif ay == - 6 @new_enemies[5] = enemy elsif ay == - 7 @new_enemies[6] = enemy elsif ax == - 8 @new_enemies[7] = enemy end end when 4 if not ay != 0 if ax == 1 @new_enemies[0] = enemy elsif ax == 2 @new_enemies[1] = enemy elsif ax == 3 @new_enemies[2] = enemy elsif ax == 4 @new_enemies[3] = enemy elsif ax == 5 @new_enemies[4] = enemy elsif ax == 6 @new_enemies[5] = enemy elsif ax == 7 @new_enemies[6] = enemy elsif ax == 8 @new_enemies[7] = enemy end end when 6 if not ay != 0 if ax == -1 @new_enemies[0] = enemy elsif ax == - 2 @new_enemies[1] = enemy elsif ax == - 3 @new_enemies[2] = enemy elsif ax == - 4 @new_enemies[3] = enemy elsif ax == - 5 @new_enemies[4] = enemy elsif ax == - 6 @new_enemies[5] = enemy elsif ax == - 7 @new_enemies[6] = enemy elsif ax == - 8 @new_enemies[7] = enemy end end when 8 if not ax != 0 if ay == 1 @new_enemies[0] = enemy elsif ay == 2 @new_enemies[1] = enemy elsif ay == 3 @new_enemies[2] = enemy elsif ay == 4 @new_enemies[3] = enemy elsif ay == 5 @new_enemies[4] = enemy elsif ay == 6 @new_enemies[5] = enemy elsif ay == 7 @new_enemies[6] = enemy elsif ay == 8 @new_enemies[7] = enemy end end end end @new_enemies.compact!; a = 0 @new_enemies.each do |enemy| if @equipped_weapon.pierce == true break if a >= Pierce_Enemies + @equipped_weapon.pierce_num else break if a >= Pierce_Enemies end next if not enemy.is_a?(Game_Event) ax = @x - enemy.x ay = @y - enemy.y case @direction when 2 if ax == 0 if range_y['neg'].include?(ay) bazooca ? damage_area(enemy) : attack_enemy(enemy) a += 1 next else @equipped_weapon.area ? miss_area(range_x, range_y) : miss; break end else @equipped_weapon.area ? miss_area(range_x, range_y) : miss; break end when 4 if ay == 0 if range_x['pos'].include?(ax) bazooca ? damage_area(enemy) : attack_enemy(enemy) a += 1 next else @equipped_weapon.area ? miss_area(range_x, range_y) : miss; break end else @equipped_weapon.area ? miss_area(range_x, range_y) : miss; break end when 6 if ay == 0 if range_x['neg'].include?(ax) bazooca ? damage_area(enemy) : attack_enemy(enemy) a += 1 next else @equipped_weapon.area ? miss_area(range_x, range_y) : miss; break end else @equipped_weapon.area ? miss_area(range_x, range_y) : miss; break end when 8 if ax == 0 if range_y['pos'].include?(ay) bazooca ? damage_area(enemy) : attack_enemy(enemy) a += 1 next else @equipped_weapon.area ? miss_area(range_x, range_y) : miss; break end else @equipped_weapon.area ? miss_area(range_x, range_y) : miss; break end end end @new_enemies.clear if a == 0 @equipped_weapon.area ? miss_area(range_x, range_y) : miss end end def miss_area(area_x, area_y) @recover = @equipped_weapon.recover area_x['pos'].sort!; area_x['neg'].sort! area_y['pos'].sort!; area_y['neg'].sort! area_x['pos'].compact!; area_x['neg'].compact! area_y['pos'].compact!; area_y['neg'].compact! xis, yis = @x, @y gm = $game_party.members[0] pre_feito = gm.atk - gm.def pre_feito = 0 if pre_feito <= 0 if not area_x['pos'].empty? or area_x['neg'].empty? or area_y['pos'].empty? or area_y['neg'].empty? case @direction when 2 if area_y['neg'][0].nil?; damage_hero(pre_feito, 20); SceneManager.scene.spriteset.explode($game_player.x, $game_player.y); return; end xis = @x; yis -= area_y['neg'][0] when 4 a = area_x['pos'].size if area_x['pos'][a - 1].nil?; damage_hero(pre_feito, 20); SceneManager.scene.spriteset.explode($game_player.x, $game_player.y); return; end yis = @y; xis -= area_x['pos'][a - 1] when 6 if area_x['neg'][0].nil?; damage_hero(pre_feito, 20); SceneManager.scene.spriteset.explode($game_player.x, $game_player.y); return; end yis = @y; xis -= area_x['neg'][0] when 8 a = area_y['pos'].size if area_y['pos'][a - 1].nil?; damage_hero(pre_feito, 20); SceneManager.scene.spriteset.explode($game_player.x, $game_player.y); return; end xis = @x; yis -= area_y['pos'][a - 1] end else return end xis = 0 if xis.nil? yis = 0 if yis.nil? SceneManager.scene.spriteset.area(self, xis, yis) SceneManager.scene.spriteset.explode(xis,yis) range = {} range[:x] = [xis]; range[:y] = [yis] for i in 0..1 range[:x].push(xis + i) range[:y].push(yis + i) range[:x].push(xis - i) range[:y].push(yis - i) end range[:x] = range[:x] & range[:x] range[:y] = range[:y] & range[:y] range[:x].sort!; range[:y].sort! $game_map.enemies.each {|enemy| if range[:x].include?(enemy.x) and range[:y].include?(enemy.y) enemy.damage_enemy(pre_feito, 20, @equipped_weapon.weapon) end } if range[:x].include?($game_player.x) and range[:y].include?($game_player.y) $game_player.damage_hero(pre_feito, 20, @equipped_weapon.weapon) end end def remove_bullets(qnt) if @equipped_weapon.bullets - qnt < 0 @equipped_weapons.bullets = 0 else @equipped_weapon.bullets -= qnt end end def damage_area(enemy) Audio.se_play("Audio/Se/#{@equipped_weapon.wav_name}", 100, 100) SceneManager.scene.spriteset.area(self, enemy.x, enemy.y) SceneManager.scene.spriteset.explode(enemy.x, enemy.y) xis, yis = enemy.x, enemy.y area = {'X' => [], 'Y' => []} area['X'].push(xis + 1) area['X'].push(xis - 1) area['Y'].push(yis + 1) area['Y'].push(yis - 1) area['X'].push(xis) area['Y'].push(yis) area['X'].sort!; area['Y'].sort! $game_map.enemies.compact! a = $game_map.enemies.compact; a.delete(enemy) attack_enemy(enemy, true) for enemi in a if area['X'].include?(enemi.x) and area['Y'].include?(enemi.y) attack_enemy(enemi, true) end end Audio.se_play("Audio/Se/explosion1", 100, 100) end def miss hero = $game_party.members[0] @recover = @equipped_weapon.recover end def attack_enemy(event, bazooca = false) hero = $game_party.members[0] r = rand(10) rand = r - 5 event.damage_enemy(hero.atk + rand, @equipped_weapon.pushback, @equipped_weapon.weapon) if event.object.nil? SceneManager.scene.spriteset.blood(event, @direction) if bazooca != true end @recover = @equipped_weapon.recover end def get_bullets(weapon) if not weapon.bullets == weapon.max $game_party.lose_item(weapon.magazine, 1) weapon.bullets += weapon.max else return end end def damage_hero(value, pushback) return if @kill_player @hwait = Health_Time @recover += (pushback / 2).to_i if Push_Back_Effect jump(0,0) if Jump_On_Damage hero = $game_party.members[0] value -= hero.def value -= (rand(10) - 5) value = 0 if value < 0 $game_map.damage_sprites.push(Damage_Sprite.new(self, value)) if Show_Damage_Sprites == true if not value > hero.hp hero.hp -= value else hero.hp = 1 @kill_player = true RPG::SE.new(Player_Die_SE, 80).play end end def update_kill if @opacity > 0 @opacity -= Module_Of_Config::Opacity_Burn else SceneManager.goto(Scene_Gameover) end end end if Module_Of_Config::WASD_Movement class << Input alias :dir :dir4 def dir4 return dir_wasd end def dir_wasd return 8 if self.press?(Key::W) or self.press?(:UP) return 4 if self.press?(Key::A) or self.press?(:LEFT) return 2 if self.press?(Key::S) or self.press?(:DOWN) return 6 if self.press?(Key:) or self.press?(:RIGHT) return 0 end end end #----------------------------------------------------------------------------------# class Scene_Map < Scene_Base alias :upd :update def update upd Mouse.update end end #----------------------------------------------------------------------------------# class Spriteset_Map alias abs_initialize initialize alias abs_update update alias abs_dispose dispose attr_reader :viewport1 def initialize $game_map.damage_sprites = [] $game_map.item_windows = [] $game_map.explosion_chars = [] @spritees = {}; $reload_sprite = nil abs_initialize end def update abs_update trash = [] trash2 = [] $game_map.damage_sprites.each do |sprite| sprite.update trash.push(sprite )if sprite.disposed? end if !$game_map.item_windows.empty? if $game_map.item_windows[0].is_a?(Pop) $game_map.item_windows[0].update trash2.push($game_map.item_windows[0]) if $game_map.item_windows[0].disposed? end end trash2.each { |item| $game_map.item_windows.delete(item) } $game_map.item_windows.compact! trash.each { |item| $game_map.damage_sprites.delete(item) } trash2.clear; trash.clear for char in $game_map.explosion_chars char.update char.my_sprite = Sprite_Character.new(@viewport1, char) if char.my_sprite.nil? trash.push(char) if char.disposed? end trash.each { |item| $game_map.explosion_chars.delete(item) } end def dispose abs_dispose $game_map.damage_sprites.each do |sprite| sprite.bitmap.dispose sprite.dispose end $game_map.damage_sprites.clear $game_map.item_windows.each do |window| window.dispose end $game_map.item_windows.clear $game_map.explosion_chars.each { |char| char.dispose } $game_map.explosion_chars.clear end end #----------------------------------------------------------------------------------# class Game_Party < Game_Unit alias metodo_aliasado_com_sucesso gain_item def gain_item(item, amount, include_equip = false, swaping = false) if amount > 0 and Module_Of_Config::Show_PopUp_Item $game_map.window(Pop.new(item)) if swaping == false end $game_system.hud_need_refresh = true metodo_aliasado_com_sucesso(item, amount, include_equip) end end #----------------------------------------------------------------------------------# class Damage_Sprite < Sprite def initialize(target, value) super(nil) @target = target self.bitmap = Bitmap.new(100,20) self.bitmap.draw_text(0,0,100,20,value,1) self.ox = 50 self.z = 999 self.x = target.screen_x self.y = target.screen_y - 40 @timer = 50 end def update if @timer > 0 @timer -= 1 self.y -= 1 if not self.y < @target.screen_y - 60 else if self.opacity > 0 self.opacity -= 15 self.y -= 2 else dispose end end end def dispose self.bitmap.dispose super end end #----------------------------------------------------------------------------------# class Reward_Sprite < Sprite def initialize(target, value) super(nil) @target = target self.bitmap = Bitmap.new(100,20) self.bitmap.font.color = Color.new(72,0,255) self.bitmap.draw_text(0,0,100,20,value,1) self.ox = 50 self.z = 999 self.x = target.screen_x - 5 self.y = target.screen_y - 40 @timer = 50 end def update if @timer > 0 @timer -= 1 self.zoom_x += 0.008 self.zoom_y += 0.008 self.y -= 1 if not self.y < @target.screen_y - 60 else if self.opacity > 0 self.opacity -= 15 self.y -= 2 else dispose end end end def dispose self.bitmap.dispose super end end #----------------------------------------------------------------------------------# class Window_Ammo < Window_Base def initialize super(0,0,120,52) self.contents = Bitmap.new(width - 32, height - 32) if not $game_player.equipped_weapon == nil self.contents.draw_text(2,0,120,20,"Ammo:" + $game_player.equipped_weapon.bullets.to_s) end end def dispose super end end #----------------------------------------------------------------------------------# class Pop < Window_Base def initialize(item) if not item.nil? super(0,355,175,60) self.contents = Bitmap.new(width - 32, height - 32) self.contents.draw_text(30,5,120,20, item.name) draw_icon(item.icon_index, 5, 5) @timer = 70 self.opacity = 0; self.visible = false else dispose if not self.disposed? end end def update return if self.disposed? self.opacity = 255 if self.opacity != 255 self.visible = true if self.visible == false @timer > 0 ? @timer -= 1 : dispose end def dispose super end end #----------------------------------------------------------------------------------# module DataManager def self.make_save_contents contents = {} contents[:system] = $game_system contents[:timer] = $game_timer contents[:message] = $game_message contents[:switches] = $game_switches contents[:variables] = $game_variables contents[:self_switches] = $game_self_switches contents[:actors] = $game_actors contents[:party] = $game_party contents[:troop] = $game_troop contents[:map] = $game_map contents[:player] = $game_player if $weapons != nil $weapons.compact! contents[:weapons] = $weapons end contents end def self.extract_save_contents(contents) $game_system = contents[:system] $game_timer = contents[:timer] $game_message = contents[:message] $game_switches = contents[:switches] $game_variables = contents[:variables] $game_self_switches = contents[:self_switches] $game_actors = contents[:actors] $game_party = contents[:party] $game_troop = contents[:troop] $game_map = contents[:map] $game_player = contents[:player] $weapons = contents[:weapons] if contents.has_key?(:weapons) $weapons.compact! end end class Scene_Gameover < Scene_Base alias :weapons_reset :start def start weapons_reset $weapons.each {|weapon| weapon.bullets = 0} end end if Module_Of_Config::Decrease_Volume class << Audio alias :play! :se_play def se_play(dir, volume, rate) new = (volume - $master_sound rescue volume) new = 0 if new < 0 play!(dir,new,rate) end end $master_sound = 0 end #----------------------------------------------------------------------------------# module Definitions Sprite_angles = {2=>[80,110,140,170],4=>[340,10,40,70],6=>[290,260,230,200],8=>[290,320,350,20]} Move_correction = {2=>[-8,-10],4=>[0,-10],6=>[0,-4],8=>[4,-10]} Sprite_z_values = { 2=>120, 4=>50, 6=>120, 8=>50} Static_Angles = {2=>140,4=>40,6=>320,8=>350} # 6=>340 Static_Move = {2=>[-8,-14],4=>[0,-10],6=>[10,0],8=>[4,-10]} Static_Z = { 2=>120, 4=>50, 6=>120, 8=>50} Static_Mirror = {2 => false, 4=>false,6=>true,8=>false} Kick_Angles = {2=>[-14,-10,-6],4=>[-14,-10,-6],6=>[14,10,6],8=>[14,10,6] } end class Scene_Map < Scene_Base; attr_reader :spriteset; end class Spriteset_Map include Module_Of_Config include Definitions attr_accessor :smoke attr_accessor :stamina_gauge alias :mtm_initialize :initialize def initialize @explosions = []; @smoke = []; @floors = []; @particles = []; @parts = [] @array_weapons = {}; @weapons = {}; @drops = [] mtm_initialize if $last_frame != nil $reload_sprite = Reload.new($last_frame, @viewport2, $last_max) end if !$game_map.hash[:x].empty? xis = $game_map.hash[:x] yis = $game_map.hash[:y] items = $game_map.hash[:item] angles = $game_map.hash[:angle] xis.each_with_index do |xx, i| @drops.push(Particle_Sprites::Drop.new(xx, yis[i], items[i], @viewport1, angles[i])) end end create_enemy_weapons if Show_Weapon_Sprites end def create_enemy_weapons $game_map.enemies.each {|enemy| next if enemy.enemy.nil? if enemy.enemy.weapon != nil icon = (enemy.enemy.weapon.weapon.icon_index rescue nil) return if icon.nil? bitmap = Bitmap.new(24,24) bitmap.blt(0,0,Cache.system("Iconset"),Rect.new(icon%16*24,icon/16*24,24,24)) sprite = Sprite.new(@viewport1) sprite.ox, sprite.oy = 22,22 sprite.zoom_x, sprite.zoom_y = 0.85, 0.85 sprite.bitmap = bitmap @weapons[enemy] = [sprite, false, 0] end } end alias :mtm_update :update def update update_explosions if !@explosions.empty? update_smokes if !@smoke.empty? update_particles if !@particles.empty? update_parts if !@parts.empty? update_array if !@array_weapons.empty? update_drops if !@drops.empty? trash = [] @floors.each { |sprite| sprite.update if sprite.disposed? trash.push(sprite) end } trash.each {|item| @floors.delete(item)}; trash.clear if Show_Weapon_Sprites update_vis_equip end if $reload_sprite != nil $reload_sprite.update $reload_sprite = nil if $reload_sprite.disposed? end mtm_update end def depuracao(x, y) @dep = [] if @dep.nil? @dep.push(Particle_Sprites::Dep.new(x,y, @viewport1)) end def dep_clear if @dep.is_a?(Array) @dep.each {|sprite| sprite.dispose if not sprite.disposed?} @dep.clear end end def create_stamina_gauge @stamina_gauge = Stamina_Bar.new(@viewport2) end def reload(frames) return if $reload_sprite != nil $reload_sprite = Reload.new(frames, @viewport2) end def update_vis_equip update_enemy_weapons return if $game_player.equipped_weapon == nil if @weapons.keys.include?(:player) sprite = @weapons[:player][0]; player = $game_player kick = @weapons[:player][1]; time = @weapons[:player][2] sprite.update if $game_player.kill_player @wtf.nil? ? @wtf = 1 : @wtf += 1 return if @wtf == 3 sprite.x += rand(2) - 1 sprite.y += rand(2) - 1 sprite.angle += rand(4) - 2 return end sprite.x = player.screen_x + Static_Move[player.direction][0] sprite.y = player.screen_y + Static_Move[player.direction][1] sprite.z = Static_Z[player.direction]# - 15 sprite.mirror = Static_Mirror[player.direction] if kick case time when 9 sprite.angle = Static_Angles[player.direction] + Kick_Angles[player.direction][0] when 6 sprite.angle = Static_Angles[player.direction] + Kick_Angles[player.direction][1] when 3 sprite.angle = Static_Angles[player.direction] + Kick_Angles[player.direction][2] when 0 @weapons[:player][1] = false @weapons[:player][2] = 0 end @weapons[:player][2] -= 1 else sprite.angle = Static_Angles[player.direction] end else icon = ($game_player.equipped_weapon.weapon.icon_index rescue nil) return if icon.nil? bitmap = Bitmap.new(24,24) bitmap.blt(0,0,Cache.system("Iconset"),Rect.new(icon%16*24,icon/16*24,24,24)) sprite = Sprite.new(@viewport1) sprite.ox, sprite.oy = 22,22 sprite.zoom_x, sprite.zoom_y = 0.85, 0.85 sprite.bitmap = bitmap @weapons[:player] = [sprite, false, 0] end end def update_enemy_weapons new_weapons = @weapons.clone new_weapons[:player] = nil new_weapons.delete(:player) new_weapons.each {|key, value| enemy = key; sprite = value[0]; kick = value[1]; time = value[2] if enemy.nil? sprite.dispose if not sprite.disposed? next end if enemy.enemy.nil? sprite.dispose if not sprite.disposed? next end sprite.update sprite.x = enemy.screen_x + Static_Move[enemy.direction][0] sprite.y = enemy.screen_y + Static_Move[enemy.direction][1] sprite.z = Static_Z[enemy.direction]# - 15 sprite.mirror = Static_Mirror[enemy.direction] if kick case time when 9 sprite.angle = Static_Angles[enemy.direction] + Kick_Angles[enemy.direction][0] when 6 sprite.angle = Static_Angles[enemy.direction] + Kick_Angles[enemy.direction][1] when 3 sprite.angle = Static_Angles[enemy.direction] + Kick_Angles[enemy.direction][2] when 0 @weapons[enemy][1] = false @weapons[enemy][2] = 0 end @weapons[enemy][2] -= 1 else sprite.angle = Static_Angles[enemy.direction] end } end def refresh! if @weapons[:player] != nil @weapons[:player][0].dispose if not @weapons[:player][0].disposed? @weapons.delete(:player) end icon = ($game_player.equipped_weapon.weapon.icon_index rescue nil) return if icon.nil? bitmap = Bitmap.new(24,24) bitmap.blt(0,0,Cache.system("Iconset"),Rect.new(icon%16*24,icon/16*24,24,24)) sprite = Sprite.new(@viewport1) sprite.ox, sprite.oy = 22,22 sprite.zoom_x, sprite.zoom_y = 0.85, 0.85 sprite.bitmap = bitmap @weapons[:player] = [sprite, false, 0] end def update_array trash = [] @array_weapons.each_with_index {|array, i| update_array_weapon(array) trash.push(@array_weapons[i]) if array[1][1] == false } trash.each {|item| @array_weapons.delete(item) }; trash.clear end def update_array_weapon(array) array[1][0].x = array[0].screen_x + Move_correction[array[0].direction][0] array[1][0].y = array[0].screen_y + Move_correction[array[0].direction][1] if !array[1][3] case array[1][2] when 12 array[1][0].angle = Sprite_angles[array[0].direction][0] array[1][0].z = Sprite_z_values[array[0].direction] - 15 when 9 array[1][0].angle = Sprite_angles[array[0].direction][1] array[1][0].z = Sprite_z_values[array[0].direction] - 15 when 6 array[1][0].angle = Sprite_angles[array[0].direction][2] array[1][0].z = Sprite_z_values[array[0].direction] - 15 when 3 array[1][0].angle = Sprite_angles[array[0].direction][3] array[1][0].z = Sprite_z_values[array[0].direction] - 15 when 0 array[1][1] = false array[1][0].bitmap = nil end else if array[1][2] > 0 array[1][0].angle = Sprite_angles[array[0].direction][2] array[1][0].z = Sprite_z_values[array[0].direction] - 15 else array[1][1] = false array[1][0].bitmap = nil end end array[1][0].update array[1][2] -= 1 end alias :mtm_dispose :dispose def dispose @explosions.each {|sprite| sprite.dispose if not sprite.disposed? } @explosions = nil @smoke.each {|sprite| sprite.dispose if not sprite.disposed? } @smoke = nil @particles.each {|sprite| sprite.dispose if not sprite.disposed?} @particles = nil @parts.each {|sprite| sprite.dispose if not sprite.disposed?} @parts = nil if @weapons[:player].is_a?(Sprite) @weapons[:player].dispose if not @weapons[:player].disposed? @weapons[:player] = nil @weapons.delete(:player) end @weapons.each {|key, value| value[0].dispose if not value[0].disposed? } @weapons = nil $game_map.store_drops @drops @drops = nil if $reload_sprite != nil $reload_sprite.store $reload_sprite = nil end mtm_dispose end def blood(target, direction) return unless Show_Blood_Anim if target.is_a?(Game_Event) return if target.not_blood end 3.times { @particles.push(Particle_Sprites::Blood.new(target,direction, @viewport1)) } return unless Flash @character_sprites.each {|sprite_character| next if sprite_character.character != target sprite_character.flash(Color.new(255,0,0), 30) break } end def drop(x, y, weapon) @drops.push(Particle_Sprites::Drop.new(x,y,weapon,@viewport1)) end def explode(x, y) @explosions.push(Particle_Sprites::Explosion.new(x, y, @viewport1)) i = 0 loop { i += 1; break if i == 5} for i in 0..Smokes - 1 @smoke.push(Particle_Sprites::Smoke.new(x, y, @viewport1)) end if Floor if @floors.empty? @floors.push(Particle_Sprites::Floor.new(x, y, @viewport1)) else if not @floors.any? {|floor| floor.event_x == x and floor.event_y == y} @floors.push(Particle_Sprites::Floor.new(x, y, @viewport1)) end end end end def weapon(character, icon_index) return if character.nil? return if icon_index == 0 icon = icon_index bitmap = Bitmap.new(24,24) bitmap.blt(0,0,Cache.system("Iconset"),Rect.new(icon%16*24,icon/16*24,24,24)) sprite = Sprite.new(@viewport1) sprite.ox, sprite.oy = 22,22 sprite.bitmap = bitmap @array_weapons[character] = [sprite,true,12,false] end def melee(character) Audio.se_stop RPG::SE.new("#{Melee_Wav_Name}", 80).play @particles.push(Particle_Sprites::Melee.new(character, @viewport1)) end def area(attacker, final_x, final_y) @particles.push(Particle_Sprites::Area.new(attacker ,final_x, final_y, @viewport1)) end def shoot(character) if character.is_a?(Game_Player) if @weapons[:player] != nil @weapons[:player][1] = true @weapons[:player][2] = 9 end end @particles.push(Particle_Sprites::Shot.new(character, @parts, @viewport1)) if Show_Smoke_On_Fire @smoke.push(Particle_Sprites::Smoke2.new(character, @viewport1)) end end def shoot_enemy(event) if @weapons[event] != nil @weapons[event][1] = true @weapons[event][2] = 9 end if event.enemy.weapon.area == true @particles.push(Particle_Sprites::Enemy_Area.new(event, @viewport1)) else @particles.push(Particle_Sprites::Enemy_Shot.new(event, @parts, @viewport1)) end if Show_Smoke_On_Fire @smoke.push(Particle_Sprites::Smoke2.new(event, @viewport1)) end end def update_explosions trash = [] @explosions.each {|sprite| sprite.update trash.push(sprite) if sprite.disposed? } trash.each {|item| @explosions.delete(item)} trash.clear end def update_parts trash = [] @parts.each {|sprite| sprite.update trash.push(sprite) if sprite.disposed? } trash.each {|item| @parts.delete(item)} trash.clear end def update_smokes trash = [] @smoke.each {|sprite| sprite.update trash.push(sprite) if sprite.disposed? } trash.each {|item| @smoke.delete(item)} trash.clear end def update_particles trash = [] @particles.each {|sprite| sprite.update trash.push(sprite) if sprite.disposed? } trash.each {|item| @particles.delete(item)} trash.clear end def update_drops trash = [] @drops.each {|sprite| sprite.update trash.push(sprite) if sprite.disposed? } trash.each {|item| @drops.delete(item)} trash.clear end end module Particle_Sprites class Area < Game_Character include Module_Of_Config attr_accessor :sprite def initialize(character, final_x, final_y, view) super(); @character, @fx, @fy = character.clone, final_x, final_y; @view = view @move_speed = 7 @move_frequency = 3 @through = true @sprite = Sprite_Character.new(view,self) set_graphic(AreaChar, 0); @disposed = false moveto(@character.x, @character.y); set_direction @character.direction update end def update return if disposed? @sprite.update if not @sprite.disposed? if !destination_reached? move_straight(@direction) SceneManager.scene.spriteset.smoke.push(Smoke.new(@x, @y, @view)) else dispose end end def destination_reached? return true if @x == @fx and @y == @fy return false end def dispose @disposed = true @sprite.dispose if not @sprite.disposed? @sprite = nil end def disposed? @disposed end end class Shot < Sprite include Module_Of_Config def initialize(character, parts_array, view) super(view); @character = character; @direction = character.direction case @direction when 2; self.bitmap = Shot_Bit[:y] when 4; self.bitmap = Shot_Bit[:x] when 6; self.bitmap = Shot_Bit[:x] when 8; self.bitmap = Shot_Bit[:y] end self.ox, self.oy = 16,16 self.x, self.y = character.screen_x, character.screen_y - 8 @parts = parts_array @disposer = Game_Character.new @disposer.moveto(@character.x, @character.y) @disposer.set_direction(@direction) get_speed; update end def update return if self.disposed? if out_screen? dispose; return end case @disposer.direction when 2 @disposer.moveto(@disposer.x, @disposer.y + 1) if !@disposer.map_passable?(@disposer.x, @disposer.y, @disposer.direction) or @disposer.collide_with_characters?(@disposer.x, @disposer.y) or $game_map.terrain_tag(@disposer.x, @disposer.y) == 1 and $game_map.counter?(@disposer.x, @disposer.y) != true dispose; return end when 4 @disposer.moveto(@disposer.x - 1, @disposer.y) if !@disposer.map_passable?(@disposer.x, @disposer.y, @disposer.direction) or @disposer.collide_with_characters?(@disposer.x, @disposer.y) or $game_map.terrain_tag(@disposer.x, @disposer.y) == 1 and $game_map.counter?(@disposer.x, @disposer.y) != true dispose; return end when 6 @disposer.moveto(@disposer.x + 1, @disposer.y) if !@disposer.map_passable?(@disposer.x, @disposer.y, @disposer.direction) or @disposer.collide_with_characters?(@disposer.x, @disposer.y) or $game_map.terrain_tag(@disposer.x, @disposer.y) == 1 and $game_map.counter?(@disposer.x, @disposer.y) != true dispose; return end when 8 @disposer.moveto(@disposer.x, @disposer.y - 1) if !@disposer.map_passable?(@disposer.x, @disposer.y, @disposer.direction) or @disposer.collide_with_characters?(@disposer.x, @disposer.y) or $game_map.terrain_tag(@disposer.x, @disposer.y) == 1 and $game_map.counter?(@disposer.x, @disposer.y) != true dispose; return end end self.x, self.y = @disposer.screen_x, @disposer.screen_y - 8 self.opacity > 0 ? self.opacity -= 25 : dispose create_new_parts end def out_screen? return false if @disposer.x == $game_map.width - 1 and @character.x == $game_map.width - 1 return false if @disposer.y == $game_map.height and @character.y == $game_map.height return true if @disposer.x + 1 == $game_map.width or @disposer.y + 1 == $game_map.height return false if @disposer.x == 0 and @character.x == 0 return false if @disposer.y == 0 and @character.y == 0 return true if @disposer.x == 0 or @disposer.y == 0 return false end def get_speed case @direction when 2 @vx = 0 @vy = 25 when 4 @vx = -25 @vy = 0 when 6 @vx = 25 @vy = 0 when 8 @vx = 0 @vy = -25 end end def create_new_parts return if self.disposed? 3.times do case @direction when 2 vx = 0 vy = 1 when 4 vx = -1 vy = 0 when 6 vx = 1 vy = 0 when 8 vx = 0 vy = -1 end @parts.push(Part.new(self, self.viewport, vx, vy)) end end def dispose super @disposer = nil end end class Part < Sprite def initialize(sprite, view, vx, vy) super(view); @sprite = sprite self.bitmap = Bitmap.new(2,2) self.bitmap.fill_rect(0,0,2,2,Color.new(255,216,0)) rx, ry = rand(12) - 6, rand(12) - 6 self.x, self.y = sprite.x + rx, sprite.y + ry @vx, @vy = vx, vy update end def update return if self.disposed? self.x += @vx self.y += @vy self.opacity > 0 ? self.opacity -= 8 : dispose end end class Melee < Sprite include Module_Of_Config def initialize(character, view) @character = character.clone super(view) self.bitmap = Melee_Bit self.z = 60; self.blend_type = 1 self.ox, self.oy = 16,16 self.x, self.y = @character.screen_x, @character.screen_y - 8 character! update end def update return if disposed? self.opacity > 0 ? self.opacity -= 6 : dispose end def character! case @character.direction when 2 self.y += 8 self.angle = 180 when 4 self.x -= 8 self.angle = 90 when 6 self.x += 8 self.angle = 270 when 8 self.y -= 8 self.angle = 0 end end end class Explosion < Sprite include Module_Of_Config attr_reader :event def initialize(x, y, viewport) super(viewport) @phase = 0; @timer = 30 @event = Game_Character.new @event.moveto(x,y) self.z = 999 self.bitmap = Bitmap.new(128,128) self.ox = 64; self.oy = 64 self.x, self.y = @event.screen_x, @event.screen_y - 32 RPG::SE.new(Explosion_SE, 100).play self.blend_type = Blend_Type self.bitmap.blt(0,0,Explosion_Bit,Rect.new(128 * @phase,0,128,128)) self.viewport.flash(Color.new(255,105,0,190),30) if Flash @event = nil create_fragments update self.viewport.flash(Color.new(234,96,0),25) end def create_fragments @fragments = [] for i in 0..Fragments - 1 @fragments.push(Fragment.new(self.x, self.y, self.viewport)) end @fragments.compact end def update_fragments trash = [] @fragments.each {|sprite| sprite.update trash.push(sprite) if sprite.disposed? } trash.each {|item| @fragments.delete(item) if @fragments.include?(item)} end def update return if self.disposed? update_fragments self.bitmap.clear case @timer when 30 @phase = 0 when 27 @phase = 1 when 24 @phase = 2 when 21 @phase = 3 when 18 @phase = 4 when 15 @phase = 5 when 12 @phase = 6 when 9 @phase = 7 when 6 @phase = 8 when 3 @phase = 9 when 0 self.dispose end if @timer == 0 self.dispose if not self.disposed? return end @timer -= 1 self.bitmap.blt(0,0,Explosion_Bit,Rect.new(128 * @phase,0,128,128)) end def dispose super return if @fragments.nil? if !@fragments.empty? @fragments.each {|frag| frag.dispose if not frag.disposed? } @fragments.clear end end end class Fragment < Sprite include Module_Of_Config def initialize(x, y, viewport) super() self.viewport = viewport r = rand(15) self.bitmap = Bitmap.new(32,32) self.z = 0 self.bitmap.blt(0,0,Fragment_Bit,Rect.new(32 * r,0,32,32)) self.blend_type = 2 @vx, @vy = rand(Frag_Vel) - (Frag_Vel/2).to_i, rand(Frag_Vel) - (Frag_Vel/2).to_i self.x, self.y = x - 16, y - 16 end def update return if self.disposed? self.x += @vx self.y += @vy self.opacity -= 9 end end class Smoke < Sprite include Module_Of_Config def initialize(x, y, viewport) @event = Game_Character.new @event.moveto(x,y) super(viewport) self.bitmap = Smoke_Bit self.blend_type = 2 self.opacity = 150 self.z = 999 - 5 self.x, self.y = @event.screen_x - 16, @event.screen_y - 32 - 16 @event = nil @vx, @vy = rand(4) - 2, rand(4) - 2 @vx = 1 if @vx == 0; @vy = 1 if @vy == 0 @move_freq = Smoke_Freq update end def update return if self.disposed? if @move_freq > 0 @move_freq -= 1 else @move_freq = Smoke_Freq self.x += @vx self.y += @vy end self.opacity > 0 ? self.opacity -= 2 : dispose end end class Smoke2 < Sprite include Module_Of_Config def initialize(character, viewport) @character = character.clone direction = character.direction super(viewport) self.bitmap = Smoke_Bit self.blend_type = 2 self.opacity = 150 self.z = 0 self.zoom_x, self.zoom_y = 0.3, 0.3 case direction when 2 self.x, self.y = @character.screen_x - 9, @character.screen_y + 6 when 4 self.x, self.y = @character.screen_x - 26, @character.screen_y - 19 when 6 self.x, self.y = @character.screen_x + 9, @character.screen_y - 21 when 8 self.x, self.y = @character.screen_x - 9, @character.screen_y - 36 end @vx, @vy = rand(4) - 2, rand(4) - 2 @vx = 1 if @vx == 0; @vy = 1 if @vy == 0 @move_freq = Smoke_Freq + 2 update end def update return if self.disposed? if @move_freq > 0 @move_freq -= 1 else @move_freq = Smoke_Freq + 2 self.x += @vx self.y += @vy end self.opacity > 0 ? self.opacity -= 4 : dispose end end class Floor < Sprite attr_reader :event_x attr_reader :event_y def initialize(x,y,viewport) @event_x, @event_y = x,y super(viewport) self.z = 0 self.ox, self.oy = 16,16 self.bitmap = Module_Of_Config::Floor_Bit @event = Game_Character.new @event.moveto(x,y) self.x, self.y = @event.screen_x, @event.screen_y - 8 self.z = @event.screen_z end def update self.x = @event.screen_x if self.x != @event.screen_x self.y = @event.screen_y - 8 if self.y != @event.screen_y - 8 self.z = @event.screen_z if self.z != @event.screen_z end end class PlayerWeapon < Sprite Sprite_z_values = { 2=>120, 4=>50, 6=>120, 8=>50} Sprite_Mirror = {2=>false,4=>false,6=>true,8=>false} Sprite_Angles = {2=>100, 4=>20, 6=>340, 8=>100} Move_correction = {2=>[2,-4],4=>[-7,-10],6=>[8,-14],8=>[-2,-18]} def initialize(view) super(view) self.bitmap = Bitmap.new(24,24) self.ox, self.oy = 12,12 icon = $game_player.equipped_weapon.weapon.icon_index self.bitmap.blt(0,0,Cache.system("Iconset"), Rect.new(icon%16*24,icon/16*24,24,24)) update end def update self.x = $game_player.screen_x + Move_correction[$game_player.direction][0] self.y = $game_player.screen_y + Move_correction[$game_player.direction][1] self.z = Sprite_z_values[$game_player.direction] self.angle = Sprite_Angles[$game_player.direction] self.mirror = Sprite_Mirror[$game_player.direction] end end class Blood < Sprite include Module_Of_Config def initialize(target, direction, view) @target, @direction = target, direction super(view) self.bitmap = Bitmap.new(32,32) rand = rand(7) + 3 self.bitmap.blt(0,0,Blood_Bit, Rect.new(32 * rand,0,32,32)) self.ox, self.oy = 16,16 self.x, self.y = @target.screen_x, @target.screen_y - 8 self.z = 30 get_speed update end def update return if self.disposed? return if @vx.nil? or @vy.nil? if @target.nil? dispose; return end self.x += @vx self.y += @vy self.opacity > 0 ? self.opacity -= 6 : dispose end def get_speed case @direction when 2 @vx = rand(4) - 2 @vy = rand(4) when 4 @vx = -rand(4) @vy = rand(4) - 2 when 6 @vx = rand(4) @vy = rand(4) - 2 when 8 @vx = rand(4) - 2 @vy = -rand(4) end end end class Enemy_Shot < Sprite include Module_Of_Config def initialize(character, parts_array, view) super(view); @character = character; @direction = character.direction case @direction when 2; self.bitmap = Shot_Bit[:y] when 4; self.bitmap = Shot_Bit[:x] when 6; self.bitmap = Shot_Bit[:x] when 8; self.bitmap = Shot_Bit[:y] end self.ox, self.oy = 16,16 self.x, self.y = character.screen_x, character.screen_y - 8 @parts = parts_array @disposer = Game_Character.new @disposer.moveto(@character.x, @character.y) @disposer.set_direction(@direction) get_speed; update end def update return if self.disposed? case @disposer.direction when 2 @disposer.moveto(@disposer.x, @disposer.y + 1) if !@disposer.map_passable?(@disposer.x, @disposer.y, @disposer.direction) or @disposer.collide_with_characters?(@disposer.x, @disposer.y) or $game_map.terrain_tag(@disposer.x, @disposer.y) == 1 and $game_map.counter?(@disposer.x, @disposer.y) != true dispose; return end when 4 @disposer.moveto(@disposer.x - 1, @disposer.y) if !@disposer.map_passable?(@disposer.x, @disposer.y, @disposer.direction) or @disposer.collide_with_characters?(@disposer.x, @disposer.y) or $game_map.terrain_tag(@disposer.x, @disposer.y) == 1 and $game_map.counter?(@disposer.x, @disposer.y) != true dispose; return end when 6 @disposer.moveto(@disposer.x + 1, @disposer.y) if !@disposer.map_passable?(@disposer.x, @disposer.y, @disposer.direction) or @disposer.collide_with_characters?(@disposer.x, @disposer.y) or $game_map.terrain_tag(@disposer.x, @disposer.y) == 1 and $game_map.counter?(@disposer.x, @disposer.y) != true dispose; return end when 8 @disposer.moveto(@disposer.x, @disposer.y - 1) if !@disposer.map_passable?(@disposer.x, @disposer.y, @disposer.direction) or @disposer.collide_with_characters?(@disposer.x, @disposer.y) or $game_map.terrain_tag(@disposer.x, @disposer.y) == 1 and $game_map.counter?(@disposer.x, @disposer.y) != true dispose; return end end #self.x += @vx #self.y += @vy self.x, self.y = @disposer.screen_x, @disposer.screen_y - 8 self.opacity > 0 ? self.opacity -= 25 : dispose return if self.disposed? if hit_area?(self.x, self.y) if @character.enemy.nil? dispose if not self.disposed? return else $game_player.damage_hero(@character.enemy.attack + @character.enemy.weapon.weapon.params[2], @character.enemy.weapon.pushback) SceneManager.scene.spriteset.blood($game_player, @character.direction) if SceneManager.scene.is_a?(Scene_Map) dispose if not self.disposed? return end end create_new_parts end def get_speed case @direction when 2 @vx = 0 @vy = 25 when 4 @vx = -25 @vy = 0 when 6 @vx = 25 @vy = 0 when 8 @vx = 0 @vy = -25 end end def create_new_parts return if self.disposed? 3.times do case @direction when 2 vx = 0 vy = 1 when 4 vx = -1 vy = 0 when 6 vx = 1 vy = 0 when 8 vx = 0 vy = -1 end @parts.push(Part.new(self, self.viewport, vx, vy)) end end def dispose super @disposer = nil end def area_x result = [] init = ($game_player.screen_x - 16).to_i final = (init + 32).to_i for i in init..final result.push(i) end result.sort end def area_y result = [] init = ($game_player.screen_y - 28).to_i final = (init + 32).to_i for i in init..final result.push(i) end result.sort end def hit_area?(x,y) return false if self.disposed? return true if area_x.include?(x) and area_y.include?(y) return false end end class Drop < Sprite attr_reader :character attr_reader :item def initialize(x, y, item, view, angle = nil) super(view) @character = Game_Character.new @character.moveto(x,y) @item = item self.ox, self.oy = 12,12 self.bitmap = Bitmap.new(32,32) icon = item.icon_index if icon.nil? dispose; return end self.bitmap.blt(4,4,Cache.system("Iconset"), Rect.new(icon%16*24,icon/16*24,24,24)) if angle.nil? self.angle += rand(60) - 30 else self.angle = angle end end def update return if self.disposed? self.x, self.y = @character.screen_x, @character.screen_y - 16 if self.viewport.nil? self.viewport = SceneManager.scene.spriteset.viewport1 if SceneManager.scene.is_a?(Scene_Map) end if player_in_range? if Input.trigger?(:C) or Input.repeat?(:C) pick_up end end end def player_in_range? return true if $game_player.x == @character.x and $game_player.y == @character.y return true if $game_player.x - 1 == @character.x and $game_player.y == @character.y return true if $game_player.x + 1 == @character.x and $game_player.y == @character.y return true if $game_player.y - 1 == @character.y and $game_player.x == @character.x return true if $game_player.y + 1 == @character.y and $game_player.x == @character.x return false end def pick_up if $game_party.has_item?(@item, true) to_gain = nil $weapons.each {|w| next if w.weapon != @item; to_gain = w.magazine; break} $game_party.gain_item(to_gain,1) else $game_party.gain_item(@item,1) if $game_player.equipped_weapon.nil? to_equip = nil $weapons.each {|w| next if w.weapon != @item; to_equip = w; break} $game_player.equipped_weapon = to_equip $game_party.members[0].change_equip(0,@item) SceneManager.scene.spriteset.refresh! $game_player.need_check = true $game_party.lose_item(@item,1) end end RPG::SE.new("#{Module_Of_Config::Pick_SE}", 90).play dispose if not disposed? end def dispose super @character = nil; @item = nil end end class Enemy_Area < Game_Character include Module_Of_Config attr_accessor :sprite def initialize(character, view) super(); @character = character.clone; @view = view @move_speed = 7 @move_frequency = 3 @travel = 0 @through = true set_graphic(AreaChar, 0); @disposed = false @sprite = Sprite_Character.new(view,self) moveto(@character.x, @character.y); set_direction @character.direction update end def update return if self.disposed? @sprite.update if not @sprite.disposed? if !destination_reached? if @character.enemy.nil? dispose; return end move_straight(@direction) @travel += 1 SceneManager.scene.spriteset.smoke.push(Smoke.new(@x, @y, @view)) if @x == $game_player.x and @y == $game_player.y SceneManager.scene.spriteset.explode(@x, @y) $game_player.damage_hero(@character.enemy.attack + @character.enemy.weapon.weapon.params[2]) dispose if not self.disposed? end if @travel >= 8 SceneManager.scene.spriteset.explode(@x, @y) if $game_player.x - 1 == @x and $game_player.y == @y $game_player.damage_hero((@character.enemy.attack + @character.enemy.weapon.weapon.params[2] / 2).to_i) elsif $game_player.x + 1 == @x and $game_player.y == @y $game_player.damage_hero((@character.enemy.attack + @character.enemy.weapon.weapon.params[2] / 2).to_i) elsif $game_player.y + 1 == @y and $game_player.x == @x $game_player.damage_hero((@character.enemy.attack + @character.enemy.weapon.weapon.params[2] / 2).to_i) elsif $game_player.y - 1 == @y and $game_player.x == @x $game_player.damage_hero((@character.enemy.attack + @character.enemy.weapon.weapon.params[2] / 2).to_i) end dispose if not self.disposed? end else dispose if not self.disposed? end end def destination_reached? return true if @x == @fx and @y == @fy return false end def dispose @disposed = true @sprite.dispose if not @sprite.disposed? @sprite = nil end def disposed? @disposed end def area_x result = [] init = ($game_player.screen_x - 16).to_i final = (init + 32).to_i for i in init..final result.push(i) end result.sort end def area_y result = [] init = ($game_player.screen_y - 28).to_i final = (init + 32).to_i for i in init..final result.push(i) end result.sort end def hit_area?(x,y) return true if area_x.include?(x) and area_y.include?(y) return false end end class Dep < Sprite def initialize(x, y, view) super(view) @char = Game_Character.new @char.moveto(x,y) self.bitmap = Bitmap.new(32,32) self.ox, self.oy = 16,16 self.x, self.y = @char.screen_x, @char.screen_y - 8 self.bitmap.fill_rect(0,0,32,32,Color.new(255,255,255,200)) end end end class Reload < Sprite def initialize(frames, view, max = nil) if max.nil? @frames = frames; @max = frames else @frames = frames; @max = max end $last_max, $last_frame = nil,nil super(view) self.bitmap = Bitmap.new(128,26) self.ox, self.oy = self.bitmap.width / 2, self.bitmap.height / 2 self.x, self.y = 544/2,416/2 + 100 self.bitmap.font.color = Color.new(255,216,0) self.bitmap.font.bold = true self.bitmap.font.size = 14 create_base update end def update return if self.disposed? self.bitmap.clear create_base if @frames > 0 @frames -= 1 else RPG::SE.new(Module_Of_Config::Clip_IN_SE, 100).play dispose if not self.disposed? return end wd = 124 * @frames / @max; wd = 124 - wd self.bitmap.fill_rect(2,2,wd,22,Color.new(255,216,0)) self.bitmap.draw_text(12,4,90,20,"RELOADING...") end def create_base return if self.disposed? self.bitmap.fill_rect(0,0,128,26,Color.new(255,216,0)) self.bitmap.fill_rect(1,1,126,24,Color.new()) end def store $last_frame = @frames $last_max = @max dispose if not self.disposed? end end if Module_Of_Config::WASD_Movement class Window_Selectable < Window_Base def process_cursor_move return unless cursor_movable? last_index = @index cursor_down (Input.trigger?(:DOWN)) if Input.repeat?(:DOWN) cursor_up (Input.trigger?(:UP)) if Input.repeat?(:UP) cursor_right(Input.trigger?(:RIGHT)) if Input.repeat?(:RIGHT) cursor_left (Input.trigger?(:LEFT)) if Input.repeat?(:LEFT) cursor_down (Input.trigger?(Key::S)) if Input.repeat?(Key::S) cursor_up (Input.trigger?(Key::W)) if Input.repeat?(Key::W) cursor_right(Input.trigger?(Key:)) if Input.repeat?(Key:) cursor_left (Input.trigger?(Key::A)) if Input.repeat?(Key::A) cursor_pagedown if !handle?(:pagedown) && Input.trigger?(:R) cursor_pageup if !handle?(:pageup) && Input.trigger?(:L) Sound.play_cursor if @index != last_index end end end if Module_Of_Config::Enter_Key2 != nil class << Input alias normal_trigger? trigger? alias normal_repeat? repeat? alias normal_press? press? def trigger?(key) if key == :C if normal_trigger?(:C) == false return normal_trigger?(Module_Of_Config::Enter_Key2) else true end else normal_trigger?(key) end end def repeat?(key) if key == :C if normal_repeat?(:C) == false return normal_repeat?(Module_Of_Config::Enter_Key2) else true end else normal_repeat?(key) end end def press?(key) if key == :C if normal_press?(:C) == false return normal_press?(Module_Of_Config::Enter_Key2) else true end else normal_press?(key) end end end end #-----##-----##-----##-----##-----##-----##-----##-----##-----##-----##-----# # FIM ## FIM ## FIM ## FIM ## FIM ## FIM ## FIM ## FIM ## FIM ## FIM ## FIM # #-----##-----##-----##-----##-----##-----##-----##-----##-----##-----##-----# in particular this is the command that sets the distance of "alert" enemies Default_Follow = 0 # Valor padrão para visão dos inimigos it set to 0 but remains active. Can someone please help me? Thank you in advance. Edited November 4, 2015 by MoonShadow Share this post Link to post Share on other sites
Rikifive 3,411 Posted November 3, 2015 Could you please put these scripts in spoilers? It would make everything easier for the others. Thank you. (= To use spoilers use this BBCode: [ spoiler ] your script [ /spoiler ] (Remove spaces.) Share this post Link to post Share on other sites