Jump to content

TearofElandil

Member
  • Content Count

    3
  • Joined

  • Last visited

About TearofElandil

  • Rank
    Newbie
  1. Hi, Sorry for posting again so quickly, but this is a post for the solution, so don't want anyone to miss this... After a few more intense Google searches, changing the battler images are in the BATTLE_HUD script, NOT the Actor Picture. What you'll need to do is call this script in the battle field: battler_face_name(1,"Face_2")[/CODE] See Glasses' post in this link for further details: https://www.rpgmakercentral.com/topic/29730-need-help-with-atelier-rgsss-battle-hud-ex-modification/ Thanks a lot :)
  2. Hello there, again sorry to be asking this, been stuck for awhile... I find Moghunter's Kekkai script really awesome. What it does is that it kind of changes battle background while at the same time implements a lot of cool effects like Reverse Damage, HP always = 1, etc that does not wear off after turns like status effects. I'm finding it a bit difficult to customize however. The script comes with 12 effects but they are all negative for the player. I wanted to 1) make copies of all those effects but make them damaging to the enemy rather than the player, 2) add more effects that Moghunter didn't include like "lower Fire Elemental damage while Kekkai in effect" etc. I'm having some trouble just adding effects however as the script would not pick up on any effects I added other than the given 12. Would someone know how to try to even add in a customized effect based on Moghunter's Kekkai script? (I thought about just finding another animated battle back script that adds in status, but I'm not sure if it'll turn out as cool as Moghuner's...plus I do want there to be only one 'Kekkai' in effect so it's not exactly the same as status). Thank you for reading! Here's the code and the demo. #============================================================================== # +++ MOG - Kekkai (Bounded Field) (v1.4) +++ #============================================================================== # By Moghunter # https://atelierrgss.wordpress.com/ #============================================================================== # Permite o inimigo invocar uma barreira mágica (Kekkai / Bounded Field) # onde serão adicionadas regras no campo de batalha. O sistema inclúi # efeitos animados simulando o Kekkai ativado. #============================================================================== #============================================================================== # ● UTILIZAÇÃO #============================================================================== # Modo 1 (Event) # Use o comando abaixo através do comando chamar script. # # kekkai(ID) # # ID do Kekkai # #============================================================================== # Modo 2 (Skill) # Coloque o comentário abaixo na caixa de notas de habilidades . # # <Kekkai = ID> # #============================================================================== # Para cancelar o Kekkai use o comando abaixo. # # kekkai_clear # #============================================================================== #============================================================================== # ● As imagens devem ser gravadas na pasta Graphics/Pictures/ #============================================================================== module MOG_KEKKAI BOUNDED_FIELD = [] # ☢CAUTION!!☢ Don't Touch.^_^ #BOUNDED_FIELD[A] = [B,C,D] # A = FIELD ID. # B = Description (Kekkai Title). # # C = Effect Type. # 0 - Enemy Power UP # 1 - Enemy Defense UP # 2 - Enemy Invulnerable. # 3 - Party Damage Reverse. # 4 - Party always 1 HP or 0 HP. # 5 - Party always 0 MP. # 6 - Party Power Down. # 7 - Party Defense Down. # 8 - Seal Skill & Guard Command. # 9 - Seal All Commands. (Except Guard Command) # 10 - Slip HP Damage. # 11 - Slip MP Damage. # # D = Background File Name. # E = Background Animation Type. # 0 - Scrolling # 1 - Wave # F = Scroll Speed X / Wave Power. (0 - 10) # G = Scroll Speed Y / Wave Speed. (0 - 10) # H = Opacity. (0,255) # I = Blend Type. (0- Normal / 1 - Add / 2 - Substract) BOUNDED_FIELD[1] = ["Curse of Dreams and Reality.", #Kekkai Name 3, # Effect Type "Background_1", # Picture file Name 1, # Animation Type 4, # Scroll Speed X 4, # Scroll Speed Y 150, # Opacity 0 # Blend Type ] BOUNDED_FIELD[2] = ["Balance of Motion and Stillness.",5, "Kekkai1", 0,1,1,255,0] BOUNDED_FIELD[3] = ["Mesh of Light and Darkness.",9, "Background_1", 1,4,10,250,2] BOUNDED_FIELD[4] = ["Boundary of Humans and Youkai",2, "Background_5", 1,4,4,155,0] BOUNDED_FIELD[5] = ["Boundary of Life and Death.",4, "Background_8", 0,0,0,255,0] BOUNDED_FIELD[6] = ["Boundary of Life and Death.",4, "Background_8", 1,1,1,255,0] BOUNDED_FIELD[7] = ["Hakurei Dai-Kekkai.", 3, # Effect Type "Reimu_Hakurei", # Picture file Name 1, # Animation Type 4, # Scroll Speed X 4, # Scroll Speed Y 150, # Opacity 1 # Blend Type ] #Definição do poder de ataque do campo. ATTACK_PERC = 100 #Definição do poder de defesa do campo. DEFENSE_PERC = 100 #Porcentagem de dano no efeito Slip. SLIP_DAMAGE_PERC = 20 #Posição do texto (Title). (x,y) TEXT_POSITION = [310,0] #Alinhamento do texto. (0..2) TEXT_ALIGN = 1 #Ativar o efeito de zoom no texto. TEXT_ZOOM_EFFECT = true #Definição da cor da fonte. FONT_COLOR = Color.new(255,255,255) #Apresentar os efeitos em danos. (*É preciso ter o script MOG_Damage_Popup) EFFECT_POPUP = true EFFECT_POPUP_WORD = "Kekkai Effect" EFFECT_POPUP_INVUNERABLE_WORD = "Invulnerable" EFFECT_POPUP_REVERSE_DAMAGE_WORD = "Reverse Effect" end #============================================================================== # ● Histórico (Version History) #============================================================================== # v 1.4 - Compatibilidade com MOG Battle Camera. # v 1.3 - Compatibilidade com o MOG ATB. # v 1.2 - Correção na compatibilidade com o script Advanced Battle Hud. # No efeito Drain. # v 1.1 - Melhoria na codificação. #============================================================================== #============================================================================== # ■ Game Temp #============================================================================== class Game_Temp attr_accessor :kekkai attr_accessor :battle_end #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- alias mog_bounded_field_initialize initialize def initialize @kekkai = [false,nil,nil] @battle_end = false mog_bounded_field_initialize end end #============================================================================== # ■ Game Interpreter #============================================================================== class Game_Interpreter #-------------------------------------------------------------------------- # ● Bounded Field #-------------------------------------------------------------------------- def kekkai(id = nil) id = nil if id < 1 $game_temp.kekkai = [true,id] end #-------------------------------------------------------------------------- # ● Clear Kekkai #-------------------------------------------------------------------------- def kekkai_clear $game_temp.kekkai = [true,nil] end #-------------------------------------------------------------------------- # ● Clear Bounded Field #-------------------------------------------------------------------------- def clear_bounded_field $game_temp.kekkai = [true,nil] end end #============================================================================== # ■ Bounded Field #============================================================================== class Bounded_Field include MOG_KEKKAI #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- def initialize(viewport = nil) $game_temp.kekkai = [false,nil] $game_temp.battle_end = false @effect = ["",0,"",0,0,0,0,0] @phase = 0 create_kekkai_text(viewport) end #-------------------------------------------------------------------------- # ● Create Kekkai Layer #-------------------------------------------------------------------------- def create_kekkai_layer if @effect[3] == 0 @kekkai_1 = Plane.new @kekkai_1.bitmap = Cache.picture(@effect[2].to_s) stretch_battleback(@kekkai_1) if $imported[:mog_battle_camera] @kekkai_1.ox = @kekkai_1.bitmap.width / 2 @kekkai_1.oy = @kekkai_1.bitmap.height / 2 else range = (@effect[4] + 1) * 10 ; range = 500 if range > 500 if $imported[:mog_battle_camera] camera_range = [[$game_system.battle_camera_range.abs, 100].min, 0].max rxy = [Graphics.width * camera_range / 100,Graphics.height * camera_range / 100] else rxy = [0,0] end speed = (@effect[5] + 1) * 100 speed = 1000 if speed > 1000 @kekkai_image = Cache.picture(@effect[2].to_s) @kekkai_1 = Sprite.new @kekkai_1.x = -range @kekkai_1.wave_amp = range @kekkai_1.wave_length = Graphics.width @kekkai_1.wave_speed = speed @kekkai_1.bitmap = Bitmap.new(Graphics.width + rxy[0] + (range * 2),Graphics.height + rxy[1]) @kekkai_1.bitmap.stretch_blt(@kekkai_1.bitmap.rect, @kekkai_image, @kekkai_image.rect) center_sprite(@kekkai_1) end end #-------------------------------------------------------------------------- # ● Stretch Battleback #-------------------------------------------------------------------------- def stretch_battleback(sprite) return if !$game_system.battle_camera return if !MOG_BATTLE_CAMERA::BATTLEBACK_STRETCH return if sprite == nil camera_range = [[$game_system.battle_camera_range.abs, 100].min, 0].max old_bitmap = sprite.bitmap ; perc_s = 105 + camera_range perc_w = Graphics.width * perc_s / 100 perc_h = Graphics.height * perc_s / 100 sprite.bitmap = Bitmap.new(perc_w,perc_h) sprite.bitmap.stretch_blt(sprite.bitmap.rect, old_bitmap, old_bitmap.rect) end #-------------------------------------------------------------------------- # ● Center Sprite #-------------------------------------------------------------------------- def center_sprite(sprite) sprite.ox = sprite.bitmap.width / 2 sprite.oy = sprite.bitmap.height / 2 sprite.x = Graphics.width / 2 sprite.y = Graphics.height / 2 end #-------------------------------------------------------------------------- # ● Refresh Kekkai Layer #-------------------------------------------------------------------------- def refresh_kekkai_layer dispose_kekkai_layer create_kekkai_layer @kekkai_1.viewport = @kekkai_text.viewport rescue nil @kekkai_1.z = 9 @kekkai_1.opacity = 0 @kekkai_1.blend_type = @effect[7] @kekkai_1.visible = true end #-------------------------------------------------------------------------- # ● Dispose #-------------------------------------------------------------------------- def dispose dispose_kekkai_layer dispose_kekkai_text $game_temp.kekkai = [false,nil] end #-------------------------------------------------------------------------- # ● Dispose Kekkai Layer #-------------------------------------------------------------------------- def dispose_kekkai_layer return if @kekkai_1 == nil if @kekkai_1.bitmap != nil @kekkai_1.bitmap.dispose @kekkai_1.bitmap = nil end @kekkai_1.dispose @kekkai_1 = nil if @kekkai_image != nil @kekkai_image.dispose @kekkai_image = nil end end #-------------------------------------------------------------------------- # ● Dispose kekkai Text Bitmap #-------------------------------------------------------------------------- def dispose_kekkai_text_bitmap return if @kekkai_text == nil return if @kekkai_text.bitmap == nil @kekkai_text.bitmap.dispose @kekkai_text.bitmap = nil end #-------------------------------------------------------------------------- # ● Dispose Kekkai Text #-------------------------------------------------------------------------- def dispose_kekkai_text return if @kekkai_text == nil dispose_kekkai_text_bitmap @kekkai_text.dispose @kekkai_text = nil end #-------------------------------------------------------------------------- # ● Create Kekkai Text #-------------------------------------------------------------------------- def create_kekkai_text(viewport) @kekkai_text_duration = 0 @kekkai_text = Sprite.new @kekkai_text.viewport = viewport @kekkai_text.z = 160 @kekkai_text.ox = 120 @kekkai_text.oy = 16 @kekkai_text.x = @kekkai_text.ox + TEXT_POSITION[0] @kekkai_text.y = @kekkai_text.oy + TEXT_POSITION[1] @kekkai_text.visible = false refresh_kekkai_text end #-------------------------------------------------------------------------- # ● Refresh Kekkai Text #-------------------------------------------------------------------------- def refresh_kekkai_text dispose_kekkai_text_bitmap @kekkai_text_duration = 0 @kekkai_text.bitmap = Bitmap.new(240,32) text = @effect[0] @kekkai_text.bitmap.font.size = 22 @kekkai_text.bitmap.font.bold = true @kekkai_text.bitmap.font.color = Color.new(0,0,0) @kekkai_text.bitmap.draw_text(0,0,240,32,text.to_s, TEXT_ALIGN) @kekkai_text.bitmap.font.color = FONT_COLOR @kekkai_text.bitmap.draw_text(2,2,240,32,text.to_s, TEXT_ALIGN) @kekkai_text.zoom_x = 1.00 @kekkai_text.zoom_y = 1.00 @kekkai_text.opacity = 0 @kekkai_text.visible = true if $imported[:mog_battle_command_ex] $game_temp.refresh_battle_command = true #if [8,9].include?(@effect[1]) end end #-------------------------------------------------------------------------- # ● Update #-------------------------------------------------------------------------- def update refresh_kekkai if can_refresh_kekkai? update_kekkai if can_update_kekkai? end #-------------------------------------------------------------------------- # ● Can Refresh Kekkain? #-------------------------------------------------------------------------- def can_refresh_kekkai? return false if !$game_temp.kekkai[0] return true end #-------------------------------------------------------------------------- # ● Can Update Kekkai? #-------------------------------------------------------------------------- def can_update_kekkai? return false if @phase == 0 return true end #-------------------------------------------------------------------------- # ● Refresh Kekkai #-------------------------------------------------------------------------- def refresh_kekkai $game_temp.kekkai[0] = false @effect = BOUNDED_FIELD[$game_temp.kekkai[1]] rescue nil if @effect != nil refresh_party_effects refresh_kekkai_layer refresh_kekkai_text @phase = 1 else @phase = 2 end end #-------------------------------------------------------------------------- # ● Refresh Party Effects #-------------------------------------------------------------------------- def refresh_party_effects if @effect[1] == 4 or @effect[1] == 5 index = 0 for i in $game_party.members i.hp = 1 if i.hp != 0 and @effect[1] == 4 i.mp = 0 if @effect[1] == 5 if $mog_rgss3_battle_hud != nil i.battler_face = [3,0,40] end if $imported[:mog_damage_popup] != nil and MOG_KEKKAI::EFFECT_POPUP i.damage.push([MOG_KEKKAI::EFFECT_POPUP_WORD,"Kekkai Effect"]) end index += 1 break if index >= $game_party.max_battle_members end end end #-------------------------------------------------------------------------- # ● Update Kekkai #-------------------------------------------------------------------------- def update_kekkai update_kekkai_layer update_kekkai_text if !$game_temp.battle_end if @phase == 1 if @kekkai_1.opacity < @effect[6] @kekkai_1.opacity += 5 @kekkai_1.opacity = @effect[6] if @kekkai_1.opacity > @effect[6] end @kekkai_text.opacity += 5 elsif @phase == 2 update_kekkai_clear end else update_fade_sprite end end #-------------------------------------------------------------------------- # ● Update Kekkai Layer #-------------------------------------------------------------------------- def update_kekkai_layer return if @kekkai_1 == nil return if @effect == nil if @effect[3] == 0 @kekkai_1.ox += @effect[4] @kekkai_1.oy += @effect[5] else @kekkai_1.update end end #-------------------------------------------------------------------------- # ● Update Kekkai Text #-------------------------------------------------------------------------- def update_kekkai_text return if @kekkai_text == nil return if !@kekkai_text.visible return if !TEXT_ZOOM_EFFECT if $imported[:mog_battle_camera] @kekkai_text.ox = -$game_temp.viewport_oxy[0] + 120 @kekkai_text.oy = -$game_temp.viewport_oxy[1] + 16 end @kekkai_text_duration += 1 case @kekkai_text_duration when 1..20 @kekkai_text.zoom_x += 0.005 @kekkai_text.zoom_y += 0.005 when 21..40 @kekkai_text.zoom_x -= 0.005 @kekkai_text.zoom_y -= 0.005 else @kekkai_text.zoom_x = 1.00 @kekkai_text.zoom_y = 1.00 @kekkai_text_duration = 0 end end #-------------------------------------------------------------------------- # ● Update Kekkai Clear #-------------------------------------------------------------------------- def update_kekkai_clear return if @phase == 0 return if @kekkai_1 == nil @kekkai_1.opacity -= 5 @kekkai_text.opacity -= 5 if @kekkai_1.opacity == 0 dispose_kekkai_layer dispose_kekkai_text_bitmap @kekkai_text.visible = false @phase = 0 end end #-------------------------------------------------------------------------- # ● Update Fade Sprite #-------------------------------------------------------------------------- def update_fade_sprite if @kekkai_1 != nil @kekkai_1.opacity -= 5 end if @kekkai_text != nil @kekkai_text.opacity -= 5 end end end #============================================================================== # ■ Spriteset_Battle #============================================================================== class Spriteset_Battle #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- alias mog_bounded_field_initialize initialize def initialize mog_bounded_field_initialize create_bounded_field end #-------------------------------------------------------------------------- # ● Dispose #-------------------------------------------------------------------------- alias mog_bounded_field_dispose dispose def dispose dispose_bounded_field mog_bounded_field_dispose end #-------------------------------------------------------------------------- # ● Update #-------------------------------------------------------------------------- alias mog_bounded_field_update update def update mog_bounded_field_update update_bounded_field end #-------------------------------------------------------------------------- # ● Create Bounded Field #-------------------------------------------------------------------------- def create_bounded_field @bounded_field = Bounded_Field.new(@viewport1) end #-------------------------------------------------------------------------- # ● Dispose Bounded Field #-------------------------------------------------------------------------- def dispose_bounded_field return if @bounded_field == nil @bounded_field.dispose end #-------------------------------------------------------------------------- # ● Update Bounded Field #-------------------------------------------------------------------------- def update_bounded_field return if @bounded_field == nil @bounded_field.update end end #============================================================================== # ■ Game_Battler #============================================================================== class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # ● Bounded Effect #-------------------------------------------------------------------------- def bounded_effect MOG_KEKKAI::BOUNDED_FIELD[$game_temp.kekkai[1]] rescue nil end #-------------------------------------------------------------------------- # ● Execute Damage #-------------------------------------------------------------------------- alias mog_bounded_field_execute_damage execute_damage def execute_damage(user) execute_bounded_field_effects_before(user,bounded_effect) if bounded_effect != nil mog_bounded_field_execute_damage(user) execute_bounded_field_effects_after(user,bounded_effect) if bounded_effect != nil end #-------------------------------------------------------------------------- # ● Item Apply #-------------------------------------------------------------------------- alias mog_bounded_field_item_apply item_apply def item_apply(user, item) return if bounded_nil_effect_enemy?(user) mog_bounded_field_item_apply(user, item) end #-------------------------------------------------------------------------- # ● Bounded Nil Effect Enemy? #-------------------------------------------------------------------------- def bounded_nil_effect_enemy?(user) return false if bounded_effect == nil return false if self.is_a?(Game_Actor) return false if user.is_a?(Game_Enemy) return false if bounded_effect[1] != 2 if $imported[:mog_damage_popup] != nil and MOG_KEKKAI::EFFECT_POPUP self.damage.push([MOG_KEKKAI::EFFECT_POPUP_INVUNERABLE_WORD,"Invunerable"]) if bounded_effect[1] == 2 end @result.clear return true end #-------------------------------------------------------------------------- # ● Execute Bounded Field Effects Before #-------------------------------------------------------------------------- def execute_bounded_field_effects_before(user,bounded_effect) case bounded_effect[1] when 0; bounded_power_effect(user) when 1; bounded_defense_effect(user) when 2; bounded_invunerable_effect(user) when 3; bounded_reverse_damage_effect(user) when 4; bounded_nil_drain_hp(user) when 5; bounded_nil_drain_mp(user) when 6; bounded_power_effect_actor(user) when 7; bounded_defense_effect_actor(user) end end #-------------------------------------------------------------------------- # ● Execute Bounded Field Effects After #-------------------------------------------------------------------------- def execute_bounded_field_effects_after(user,bounded_effect) case bounded_effect[1] when 4; bounded_nil_actor_recover_hp(user) when 5; bounded_nil_actor_recover_mp(user) end end #-------------------------------------------------------------------------- # ● Bounded Power Effect #-------------------------------------------------------------------------- def bounded_power_effect(user) return if self.is_a?(Game_Enemy) return if user.is_a?(Game_Actor) dam = @result.hp_damage * MOG_KEKKAI::ATTACK_PERC / 100 dam = 0 if dam < 0 @result.hp_damage += dam end #-------------------------------------------------------------------------- # ● Bounded Power Effect User #-------------------------------------------------------------------------- def bounded_power_effect_actor(user) return if user.is_a?(Game_Enemy) return if @result.hp_damage < 0 dam = @result.hp_damage * MOG_KEKKAI::ATTACK_PERC / 100 dam = 0 if dam < 0 @result.hp_damage -= dam @result.hp_damage = 0 if @result.hp_damage < 0 end #-------------------------------------------------------------------------- # ● Bounded Defense Effect #-------------------------------------------------------------------------- def bounded_defense_effect(user) return if self.is_a?(Game_Actor) return if user.is_a?(Game_Enemy) dam = @result.hp_damage * MOG_KEKKAI::DEFENSE_PERC / 100 dam2 = @result.hp_damage - dam dam2 = 0 if dam2 < 0 @result.hp_damage = dam2 end #-------------------------------------------------------------------------- # ● Bounded Defense Effect Actor #-------------------------------------------------------------------------- def bounded_defense_effect_actor(user) return if self.is_a?(Game_Enemy) dam = @result.hp_damage * MOG_KEKKAI::DEFENSE_PERC / 100 dam2 = @result.hp_damage + dam dam2 = 0 if dam2 < 0 @result.hp_damage = dam2 end #-------------------------------------------------------------------------- # ● Bounded Invunerable Effect #-------------------------------------------------------------------------- def bounded_invunerable_effect(user) return if self.is_a?(Game_Actor) return if user.is_a?(Game_Enemy) @result.hp_damage = 0 end #-------------------------------------------------------------------------- # ● Bounded Reverse Damage Effect #-------------------------------------------------------------------------- def bounded_reverse_damage_effect(user) return if @result.hp_damage == 0 return if user.is_a?(Game_Enemy) if $imported[:mog_damage_popup] != nil and MOG_KEKKAI::EFFECT_POPUP self.damage.push([MOG_KEKKAI::EFFECT_POPUP_REVERSE_DAMAGE_WORD,"Reverse Effect"]) end @result.hp_damage = -@result.hp_damage if @result.hp_drain != nil and @result.hp_drain != 0 @result.hp_drain = -@result.hp_drain if $mog_rgss3_battle_hud != nil user.battler_face = [3,0,40] end end end #-------------------------------------------------------------------------- # ● Bounded Nil Drain HP #-------------------------------------------------------------------------- def bounded_nil_drain_hp(user) return if self.is_a?(Game_Actor) @result.hp_drain = 0 end #-------------------------------------------------------------------------- # ● Bounded Nil Actor Recover HP #-------------------------------------------------------------------------- def bounded_nil_actor_recover_hp(user) return if self.is_a?(Game_Enemy) @result.hp_drain = 0 self.hp = 1 if self.hp > 1 end #-------------------------------------------------------------------------- # ● Bounded Nil Drain MP #-------------------------------------------------------------------------- def bounded_nil_drain_mp(user) return if self.is_a?(Game_Actor) @result.mp_drain = 0 end #-------------------------------------------------------------------------- # ● Bounded Nil Actor Recover MP #-------------------------------------------------------------------------- def bounded_nil_actor_recover_mp(user) return if self.is_a?(Game_Enemy) self.mp = 0 end #-------------------------------------------------------------------------- # ● Item Effect Recover HP #-------------------------------------------------------------------------- alias mog_bounded_field_item_effect_recover_hp item_effect_recover_hp def item_effect_recover_hp(user, item, effect) if bounded_effect != nil and bounded_effect[1] == 3 execute_bounded_reverse_item_hp(user, item, effect) return end mog_bounded_field_item_effect_recover_hp(user, item, effect) if bounded_effect != nil and self.is_a?(Game_Actor) execute_bounded_seal_hp end end #-------------------------------------------------------------------------- # ● Execute Bounded Reverse Item HP #-------------------------------------------------------------------------- def execute_bounded_reverse_item_hp(user, item, effect) if $mog_rgss3_damage_pop != nil and MOG_KEKKAI::EFFECT_POPUP self.damage.push(["Reverse Effect","Reverse Effect"]) end value = (mhp * effect.value1 + effect.value2) * rec value *= user.pha if item.is_a?(RPG::Item) value = -value.to_i @result.hp_damage -= value @result.success = true self.hp += value end #-------------------------------------------------------------------------- # ● Execute Bounded seal HP #-------------------------------------------------------------------------- def execute_bounded_seal_hp return if bounded_effect[1] != 4 self.hp = 1 if self.hp > 0 end #-------------------------------------------------------------------------- # ● Item Effect Recover MP #-------------------------------------------------------------------------- alias mog_bounded_field_item_effect_recover_mp item_effect_recover_mp def item_effect_recover_mp(user, item, effect) mog_bounded_field_item_effect_recover_mp(user, item, effect) if bounded_effect != nil and self.is_a?(Game_Actor) execute_bounded_seal_mp end end #-------------------------------------------------------------------------- # ● Execute Bounded seal MP #-------------------------------------------------------------------------- def execute_bounded_seal_mp return if bounded_effect[1] != 5 self.mp = 0 if self.mp > 0 end #-------------------------------------------------------------------------- # ● Regenerate HP #-------------------------------------------------------------------------- alias mog_bounded_field_regenerate_hp regenerate_hp def regenerate_hp mog_bounded_field_regenerate_hp if bounded_effect != nil and self.is_a?(Game_Actor) execute_bounded_slip_hp execute_bounded_seal_hp end end #-------------------------------------------------------------------------- # ● Regenerate mp #-------------------------------------------------------------------------- alias mog_bounded_field_regenerate_mp regenerate_mp def regenerate_mp mog_bounded_field_regenerate_mp if bounded_effect != nil and self.is_a?(Game_Actor) execute_bounded_slip_mp execute_bounded_seal_mp end end #-------------------------------------------------------------------------- # ● Execute Bounded Slip HP #-------------------------------------------------------------------------- def execute_bounded_slip_hp return if bounded_effect[1] != 10 return if self.hp <= 1 dmg = self.mhp * MOG_KEKKAI::SLIP_DAMAGE_PERC / 100 dmg = 1 if dmg < 1 dmg = self.hp - 1 if dmg > self.hp self.hp -= dmg if self.hp > 0 if $imported[:mog_damage_popup] != nil and MOG_KEKKAI::EFFECT_POPUP self.damage.push([dmg,"HP"]) self.damage.push([MOG_KEKKAI::EFFECT_POPUP_WORD,"Kekkai Effect"]) end end #-------------------------------------------------------------------------- # ● Execute Bounded Slip MP #-------------------------------------------------------------------------- def execute_bounded_slip_mp return if bounded_effect[1] != 11 return if self.mp == 0 dmg = self.mmp * MOG_KEKKAI::SLIP_DAMAGE_PERC / 100 self.mp -= dmg if $imported[:mog_damage_popup] != nil and MOG_KEKKAI::EFFECT_POPUP self.damage.push([dmg,"MP"]) self.damage.push([MOG_KEKKAI::EFFECT_POPUP_WORD,"Kekkai Effect"]) end end end #============================================================================== # ■ Game_Interpreter #============================================================================== class Game_Interpreter #-------------------------------------------------------------------------- # ● Bounded Effect #-------------------------------------------------------------------------- def bounded_effect MOG_KEKKAI::BOUNDED_FIELD[$game_temp.kekkai[1]] rescue nil end #-------------------------------------------------------------------------- # ● Kekkai Effect #-------------------------------------------------------------------------- def kekkai_effect return if !SceneManager.scene_is?(Scene_Battle) return if bounded_effect == nil index = 0 for i in $game_party.members break if index >= $game_party.max_battle_members i.hp = 1 if bounded_effect[1] == 4 and i.hp > 1 i.mp = 0 if bounded_effect[1] == 5 index += 1 end end #-------------------------------------------------------------------------- # ● Command 311 #-------------------------------------------------------------------------- alias mog_kekkai_command_311 command_311 def command_311 mog_kekkai_command_311 kekkai_effect end #-------------------------------------------------------------------------- # ● Command 312 #-------------------------------------------------------------------------- alias mog_kekkai_command_312 command_312 def command_312 mog_kekkai_command_312 kekkai_effect end #-------------------------------------------------------------------------- # ● Command 314 #-------------------------------------------------------------------------- alias mog_kekkai_command_314 command_314 def command_314 mog_kekkai_command_314 kekkai_effect end end #============================================================================== # ■ Scene_Battle #============================================================================== class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ● Use Item #-------------------------------------------------------------------------- alias mog_kekkai_use_item use_item def use_item check_kekkai_effect mog_kekkai_use_item end #-------------------------------------------------------------------------- # ● Check Kekkai Effect #-------------------------------------------------------------------------- def check_kekkai_effect return if @subject.is_a?(Game_Actor) skill = @subject.current_action.item if skill.note =~ /<Kekkai = (\d+)>/i id = $1.to_i id = nil if id < 1 $game_temp.kekkai = [true,id] end end end #============================================================================== # ■ BattleManager #============================================================================== class << BattleManager #-------------------------------------------------------------------------- # ● Init Members #-------------------------------------------------------------------------- alias mog_kekkai_init_members init_members def init_members $game_temp.battle_end = false mog_kekkai_init_members end #-------------------------------------------------------------------------- # ● Process Victory #-------------------------------------------------------------------------- alias mog_kekkai_process_victory process_victory def process_victory $game_temp.battle_end = true mog_kekkai_process_victory end #-------------------------------------------------------------------------- # ● Process Abort #-------------------------------------------------------------------------- alias mog_kekkai_process_abort process_abort def process_abort $game_temp.battle_end = true mog_kekkai_process_abort end #-------------------------------------------------------------------------- # ● Process Defeat #-------------------------------------------------------------------------- alias mog_kekkai_process_defeat process_defeat def process_defeat $game_temp.battle_end = true mog_kekkai_process_defeat end end #============================================================================== # ■ Window Base #============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # ● Bounded Effect #-------------------------------------------------------------------------- def bounded_effect MOG_KEKKAI::BOUNDED_FIELD[$game_temp.kekkai[1]] rescue nil end end #============================================================================== # ■ Window ActorCommand #============================================================================== class Window_ActorCommand < Window_Command #-------------------------------------------------------------------------- # ● Make Command List #-------------------------------------------------------------------------- alias mog_kekkai_make_command_list make_command_list def make_command_list return if kekkai_enabled? mog_kekkai_make_command_list end #-------------------------------------------------------------------------- # ● Kekkai Enabled? #-------------------------------------------------------------------------- def kekkai_enabled? if bounded_effect != nil and (bounded_effect[1] == 8 or bounded_effect[1] == 9) if @actor != nil if bounded_effect[1] == 8 add_attack_command add_item_command else add_guard_command end end return true end return false end end It can be found in the demo here: https://atelierrgss.wordpress.com/download-page-1/
  3. Hello there, sorry to be asking this, but I was stuck on this issue for awhile... I'm using Moghunter's Actor Picture CM script, and it creates an actor image in the format of (Actor+Battler.id.png) in battles. I was wondering if there's someone kind enough to help me out by adding a function which can CHANGE the actor image mid-battle by, for example, flipping a switch. So for example normally I'd use Actor1.png for Actor1 which is Eric, but Eric casts a spell called "Transform" which will change his actor image to Actor2.png instead. (I initially wanted to add a swapping actor functionality to achieve this effect, but this seems incompatible with Moghunter scripts overall). Thank you for reading! Here's the code and the demo. #============================================================================== # +++ MOG - ACTOR PICTURE CM (v2.1) +++ #============================================================================== # By Moghunter # https://atelierrgss.wordpress.com/ #============================================================================== # Apresenta a imagem do personagem durante a seleção de comandos, com efeitos # animados. #============================================================================== # ● Definindo o nome das imagens dos battlers. #============================================================================== # 1 - As imagens devem ser gravadas na pasta # # GRAPHICS/PICTURES # # 2 - Nomeie os arquivos de imagens da seguinte forma. # # # ACTOR + ID # # EG # # ACTOR1.png # #============================================================================== # ● Histórico (Version History) #============================================================================== # v2.1 - Melhoria na codificação. # v2.0 - Correção de não atualizar as imagens dos battlers quando se # adiciona ou remove um battler no meio da batalha. #============================================================================== module MOG_ACTOR_PICTURE_CM #Posição da imagem do battler. (Para fazer ajustes) PICTURE_POSITION = [0, 0] #Definição da opacidade da imagem. PICTURE_OPACITY = 255 #Velocidade de deslize SLIDE_SPEED = 40 #Ativar o efeito da imagem respirando. BREATH_EFFECT = true #Definição da prioridade da imagem na tela. PICTURE_PRIORITY_Z = 101 end $imported = {} if $imported.nil? $imported[:actor_picture_cm] = true #=============================================================================== # ■ Game Temp #=============================================================================== class Game_Temp attr_accessor :bpicture_cm_need_refresh #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- alias mog_battler_cm_initialize initialize def initialize @bpicture_cm_need_refresh = false mog_battler_cm_initialize end end #=============================================================================== # ■ Sprite_Battler_CM #=============================================================================== class Sprite_Battler_CM < Sprite include MOG_ACTOR_PICTURE_CM #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- def initialize(viewport = nil,battler_id = -1) super(viewport) filename = "Actor" + battler_id.to_s self.bitmap = Cache.picture(filename) rescue nil self.bitmap = Cache.picture("") if self.bitmap == nil sc = (Graphics.width / 2) - (self.bitmap.width / 2) + PICTURE_POSITION[0] @size = [self.bitmap.width + PICTURE_POSITION[0] ,sc] self.visible = false ; self.opacity = 0 ; self.z = PICTURE_PRIORITY_Z self.ox = 0 ; self.oy = self.bitmap.height ; self.x = -@size[0] self.y = (Graphics.height + 10) + PICTURE_POSITION[1] ; @cm_visible = false @breach_effect = [1.0,0] ; @battler_id = battler_id ; @active = false end #-------------------------------------------------------------------------- # ● Dispose #-------------------------------------------------------------------------- def dispose super self.bitmap.dispose end #-------------------------------------------------------------------------- # ● Update #-------------------------------------------------------------------------- def update super update_slide end #-------------------------------------------------------------------------- # ● Active Battler #-------------------------------------------------------------------------- def active_battler(battler_id) @active = @battler_id == battler_id ? true : false self.visible = true if @active ; @cm_visible = false if !@active end #-------------------------------------------------------------------------- # ● Refresh Battler CM #-------------------------------------------------------------------------- def refresh_battler(cm_visible, battler_index) @cm_visible = cm_visible active_battler(battler_index) end #-------------------------------------------------------------------------- # ● Update Slide #-------------------------------------------------------------------------- def update_slide if !@cm_visible self.x -= SLIDE_SPEED if self.x > -@size[0] self.opacity -= 25 if self.x <= -@size[0] or self.opacity == 0 self.visible = false ; self.opacity = 0 ; self.x = -@size[0] end else self.x += SLIDE_SPEED if self.x < @size[1] self.x = @size[1] if self.x > @size[1] self.opacity += 10 if self.opacity < PICTURE_OPACITY self.opacity = PICTURE_OPACITY if self.opacity > PICTURE_OPACITY update_breath_effect end self.visible = false if can_force_hide? end #-------------------------------------------------------------------------- # ● Can Force Hide #-------------------------------------------------------------------------- def can_force_hide? return true if $game_temp.blitz_commands_phase if $imported[:mog_blitz_commands] return true if $game_temp.chain_action_phase if $imported[:mog_active_chain] return false end #-------------------------------------------------------------------------- # ● Update Breath Effect #-------------------------------------------------------------------------- def update_breath_effect return if !BREATH_EFFECT @breach_effect[1] += 1 case @breach_effect[1] when 0..30 ; @breach_effect[0] += 0.0004 when 31..50 ; @breach_effect[0] -= 0.0004 else ; @breach_effect[1] = 0 ; @breach_effect[0] = 1.truncate end self.zoom_y = @breach_effect[0] end #-------------------------------------------------------------------------- # ● Force Hide #-------------------------------------------------------------------------- def force_hide @cm_visible = false ; self.visible = false ; self.x = -@size[0] self.opacity = 0 end end #=============================================================================== # ■ Spriteset_Battle #=============================================================================== class Spriteset_Battle #-------------------------------------------------------------------------- # ● Create Actors #-------------------------------------------------------------------------- alias mog_battler_cm_create_actors create_actors def create_actors mog_battler_cm_create_actors create_battler_pictures end #-------------------------------------------------------------------------- # ● Dispose #-------------------------------------------------------------------------- alias mog_battler_cm_dispose dispose def dispose mog_battler_cm_dispose dispose_battler_cm end #-------------------------------------------------------------------------- # ● Update #-------------------------------------------------------------------------- alias mog_battler_cm_update update def update mog_battler_cm_update update_battler_cm end #-------------------------------------------------------------------------- # ● Create Battler Pictures #-------------------------------------------------------------------------- def create_battler_pictures @battler_pictures = [] for i in $game_party.battle_members @battler_pictures.push(Sprite_Battler_CM.new(nil,i.id)) end end #-------------------------------------------------------------------------- # ● Dispose Battler CM #-------------------------------------------------------------------------- def dispose_battler_cm return if @battler_pictures == nil @battler_pictures.each {|sprite| sprite.dispose if sprite != nil } end #-------------------------------------------------------------------------- # ● Update Battler CM #-------------------------------------------------------------------------- def update_battler_cm refresh_battler_cm if $game_temp.bpicture_cm_need_refresh return if @battler_pictures == nil @battler_pictures.each {|sprite| sprite.update } end #-------------------------------------------------------------------------- # ● Update CM Pictures #-------------------------------------------------------------------------- def update_cm_picture(cm_visible, battler_index) return if @battler_pictures == nil @battler_pictures.each {|sprite| sprite.refresh_battler(cm_visible, battler_index) } end #-------------------------------------------------------------------------- # ● CM Force Hide #-------------------------------------------------------------------------- def cm_force_hide return if @battler_pictures == nil @battler_pictures.each {|sprite| sprite.force_hide } end #-------------------------------------------------------------------------- # ● Refresh Battler CM #-------------------------------------------------------------------------- def refresh_battler_cm $game_temp.bpicture_cm_need_refresh = false dispose_battler_cm ; create_battler_pictures end end #=============================================================================== # ■ Scene_Battle #=============================================================================== class Scene_Battle < Scene_Base if $imported["YEA-CommandEquip"] #-------------------------------------------------------------------------- # * Command Equip #-------------------------------------------------------------------------- alias mog_yfcm_command_equip command_equip def command_equip @spriteset.cm_force_hide mog_yfcm_command_equip end end #-------------------------------------------------------------------------- # ● Update #-------------------------------------------------------------------------- alias mog_cm_picture_update_basic update_basic def update_basic mog_cm_picture_update_basic update_picture_visible end #-------------------------------------------------------------------------- # ● Update Battler CM Active #-------------------------------------------------------------------------- def update_picture_visible return if @actor_command_window.nil? cm_visible = can_cm_picture_visible? cm_id = BattleManager.actor.id rescue -1 @spriteset.update_cm_picture(cm_visible, cm_id) end #-------------------------------------------------------------------------- # ● Can CM Picture Visible #-------------------------------------------------------------------------- def can_cm_picture_visible? if $imported[:mog_atb_system] return false if $game_system.atb_type != 0 return false if $game_message.visible return false if $game_temp.battle_end return false if $game_temp.end_phase_duration[1] > 0 end return false if $imported[:mog_active_chain] and $game_temp.active_chain return false if $imported[:mog_blitz_commands] and $game_temp.blitz_commands_phase return false if @party_command_window.active return false if BattleManager.actor.nil? return false if @actor_window.active return false if @enemy_window.active return true if @actor_command_window.active return true if @item_window.active return true if @skill_window.active return false end end #============================================================================== # ** Game Interpreter #============================================================================== class Game_Interpreter #-------------------------------------------------------------------------- # ● Command_129 #-------------------------------------------------------------------------- alias mog_bpic_cm_command_129 command_129 def command_129 mog_bpic_cm_command_129 $game_temp.bpicture_cm_need_refresh = true if SceneManager.scene_is?(Scene_Battle) end #-------------------------------------------------------------------------- # ● Command 335 #-------------------------------------------------------------------------- alias mog_bpic_cm_command_335 command_335 def command_335 mog_bpic_cm_command_335 $game_temp.bpicture_cm_need_refresh = true if SceneManager.scene_is?(Scene_Battle) end end #============================================================================== # ** Game Party #============================================================================== class Game_Party < Game_Unit #-------------------------------------------------------------------------- # ● Swap Order #-------------------------------------------------------------------------- alias mog_bpic_cm_swap_order swap_order def swap_order(index1, index2) mog_bpic_cm_swap_order(index1, index2) $game_temp.bpicture_cm_need_refresh = true if SceneManager.scene_is?(Scene_Battle) end end It can be found in the demo here: https://atelierrgss.wordpress.com/download-page-1/
×