Jamiras843
Introduction
Ever want more customization with hazardous tiles without cluttering your maps with events for each damage square? Or tired of the poison slip damage effect being exactly the same as the default damage floor tiles? Well worry not, this script allows you to have multiple hazard terrains using the in-editor "Damage Floor" marker in the tile sets tab all tied to a variable. I know all this can be done with eventing, but why worry about lag?
Features
- Allows five custom HP damage floors and one MP dame floor.
- Allows a sound effect to be played on the damage floor
- Control of the color of the flash of the damage tiles
- Damage tiles can now add states
- A switch to negate the damage floor for say a skill or item
- The ability to alter 3 states that use slip damage and customize the on screen effects (all actor effects are still done in the States tab in the database.
Screenshots... Nah, how about a Video!
How to Use
Plug-in-play, don't see much compatibility issues.
Demo
http://www.mediafire.com/download/00tp6roy19az68s/Damage+Tiles.exe
Script
Spoiler
#============================================================================# [VXAce] Dragon Quest Tile DMG and State DMG Flash V1.00#----------------------------------------------------------------------------# By Jamiras843## Features: # V1.00# * Allows you to have 5 HP and 1 MP damage type floors based on switches# * Plays SE with damage# * Damage floors fully custom with damage and screen flashes# * Damage floors can add states# * A switch to negate floor damage and effects# * Ability to change flash color for slip states for 3 different states# #============================================================================$imported = {} if $imported.nil?$imported["Dragon Quest Tile DMG and State DMG Flash"] = true module Jami_DQ_Tile_DMG #======================================================================== # Script options #------------------------------------------------------------------------ # Here you can edit the switches and damage amounts for each floor type # Make all simple edits here! They are easy to understand and labled! #=========================================================================beginEXPLANATION F1_DAMAGE = 1 amount of HP or MP taken F1_SFX_ON = true when on plays SE on step F1_SFX = "" SE file to play (leave "") F1_ADD_STATE = false when true adds a state F1_STATE = 0 the state to be added F1_RED =255 flash hue red 0-255 F1_GREEN = 0 flash hue grn 0-255 F1_BLUE = 255 flash hue blu 0-255=end STEPGUARD_SWITCH = 1 FLOOR_VARIABLE = 1 #Set variable number to match #floor type. MP damage is 6. #FLOOR 1 Edits F1_DAMAGE = 1 F1_SFX_ON = true F1_SFX = "Poison" F1_ADD_STATE = false F1_STATE = 0 F1_RED =255 F1_GREEN = 0 F1_BLUE = 255 #FLOOR2 Edits F2_DAMAGE = 4 F2_SFX_ON = true F2_SFX = "Fire1" F2_ADD_STATE = false F2_STATE = 0 F2_RED = 255 F2_GREEN = 0 F2_BLUE = 0 #FLOOR3 Edits F3_DAMAGE = 5 F3_SFX_ON = true F3_SFX = "Ice4" F3_ADD_STATE = false F3_STATE = 0 F3_RED = 0 F3_GREEN = 255 F3_BLUE = 255 #FLOOR4 Edits F4_DAMAGE = 6 F4_SFX_ON = true F4_SFX = "Thunder2" F4_ADD_STATE = false F4_STATE = 0 F4_RED = 255 F4_GREEN = 255 F4_BLUE = 0 #FLOOR5 Edits F5_DAMAGE = 7 F5_SFX_ON = true F5_SFX = "Water2" F5_ADD_STATE = false F5_STATE = 0 F5_RED = 0 F5_GREEN = 110 F5_BLUE = 255 #FLOOR6 (MP DAMAGE) Edits MP_DAMAGE = 2 MP_SFX_ON = true MP_SFX = "Down1" MP_ADD_STATE = false MP_STATE = 0 MP_RED = 0 MP_GREEN = 0 MP_BLUE = 0 #======================================================================== # Script options (MORE!?) #------------------------------------------------------------------------ # Here you can edit the states slip damage screen effects # NOTE: All damage is still done through the database under the "STATES" # tab, this is only for editing the eyecandy. # # Make all simple edits here! They are easy to understand and labled! #======================================================================== #State 1 Screen effects STATE1 = 2 STATE1_SFX_ON = true STATE1_SFX = "Bell1" STATE1_RED = 255 STATE1_GREEN = 255 STATE1_BLUE = 255 #State 2 Screen effects STATE2 = 0 STATE2_SFX_ON = false STATE2_SFX = "" STATE2_RED = 0 STATE2_GREEN = 0 STATE2_BLUE = 0 #State 3 Screen effects STATE3 = 0 STATE3_SFX_ON = false STATE3_SFX = "" STATE3_RED = 0 STATE3_GREEN = 0 STATE3_BLUE = 0end #module class Game_Party < Game_Unit #-------------------------------------------------------------------------- # * Term #-------------------------------------------------------------------------- def s_any?(state_id) members.any? {|actor| actor.state?(state_id)} end end class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # * Floor Damage Processing #-------------------------------------------------------------------------- def execute_floor_damage return if $game_switches[Jami_DQ_Tile_DMG::STEPGUARD_SWITCH] damage = (basic_floor_damage * fdr).to_i if $game_variables[Jami_DQ_Tile_DMG::FLOOR_VARIABLE] == 6 self.mp -= [damage, max_floor_damage].min else self.hp -= [damage, max_floor_damage].min end perform_map_damage if damage > 0 end #-------------------------------------------------------------------------- # * State Damage Processing #-------------------------------------------------------------------------- def turn_end_on_map if $game_party.steps % steps_for_turn == 0 on_turn_end perform_state1_effect if $game_party.s_any?(Jami_DQ_Tile_DMG::STATE1) perform_state2_effect if $game_party.s_any?(Jami_DQ_Tile_DMG::STATE2) perform_state3_effect if $game_party.s_any?(Jami_DQ_Tile_DMG::STATE3) end end #-------------------------------------------------------------------------- # * Get Base Value for Floor Damage #-------------------------------------------------------------------------- def basic_floor_damage if $game_variables[Jami_DQ_Tile_DMG::FLOOR_VARIABLE] == 1 return Jami_DQ_Tile_DMG::F1_DAMAGE end if $game_variables[Jami_DQ_Tile_DMG::FLOOR_VARIABLE] == 2 return Jami_DQ_Tile_DMG::F2_DAMAGE end if $game_variables[Jami_DQ_Tile_DMG::FLOOR_VARIABLE] == 3 return Jami_DQ_Tile_DMG::F3_DAMAGE end if $game_variables[Jami_DQ_Tile_DMG::FLOOR_VARIABLE] == 4 return Jami_DQ_Tile_DMG::F4_DAMAGE end if $game_variables[Jami_DQ_Tile_DMG::FLOOR_VARIABLE] == 5 return Jami_DQ_Tile_DMG::F5_DAMAGE end if $game_variables[Jami_DQ_Tile_DMG::FLOOR_VARIABLE] == 6 return Jami_DQ_Tile_DMG::MP_DAMAGE end end #basic_floor_damage #-------------------------------------------------------------------------- # * Execute Damage Effect on Map #-------------------------------------------------------------------------- def perform_map_damage if $game_variables[Jami_DQ_Tile_DMG::FLOOR_VARIABLE] == 1 $game_map.screen.start_flash_F1 if Jami_DQ_Tile_DMG::F1_ADD_STATE == true $game_party.members.each { |actor| already_dead = actor.dead? actor.add_state(Jami_DQ_Tile_DMG::F1_STATE) actor.perform_collapse_effect if actor.dead? and !already_dead } $game_party.clear_results end #state if end if $game_variables[Jami_DQ_Tile_DMG::FLOOR_VARIABLE] == 2 $game_map.screen.start_flash_F2 if Jami_DQ_Tile_DMG::F2_ADD_STATE == true $game_party.members.each { |actor| already_dead = actor.dead? actor.add_state(Jami_DQ_Tile_DMG::F2_STATE) actor.perform_collapse_effect if actor.dead? and !already_dead } $game_party.clear_results end #state if end if $game_variables[Jami_DQ_Tile_DMG::FLOOR_VARIABLE] == 3 $game_map.screen.start_flash_F3 if Jami_DQ_Tile_DMG::F3_ADD_STATE == true $game_party.members.each { |actor| already_dead = actor.dead? actor.add_state(Jami_DQ_Tile_DMG::F3_STATE) actor.perform_collapse_effect if actor.dead? and !already_dead } $game_party.clear_results end #state if end if $game_variables[Jami_DQ_Tile_DMG::FLOOR_VARIABLE] == 4 $game_map.screen.start_flash_F4 if Jami_DQ_Tile_DMG::F4_ADD_STATE == true $game_party.members.each { |actor| already_dead = actor.dead? actor.add_state(Jami_DQ_Tile_DMG::F4_STATE) actor.perform_collapse_effect if actor.dead? and !already_dead } $game_party.clear_results end #state if end if $game_variables[Jami_DQ_Tile_DMG::FLOOR_VARIABLE] == 5 $game_map.screen.start_flash_F5 if Jami_DQ_Tile_DMG::F5_ADD_STATE == true $game_party.members.each { |actor| already_dead = actor.dead? actor.add_state(Jami_DQ_Tile_DMG::F5_STATE) actor.perform_collapse_effect if actor.dead? and !already_dead } $game_party.clear_results end #state if end if $game_variables[Jami_DQ_Tile_DMG::FLOOR_VARIABLE] == 6 $game_map.screen.start_flash_MP if Jami_DQ_Tile_DMG::MP_ADD_STATE == true $game_party.members.each { |actor| already_dead = actor.dead? actor.add_state(Jami_DQ_Tile_DMG::MP_STATE) actor.perform_collapse_effect if actor.dead? and !already_dead } $game_party.clear_results end #state if end end #perform-map_damage_effect def perform_state1_effect $game_map.screen.start_flash_state1 end def perform_state2_effect $game_map.screen.start_flash_state2 end def perform_state3_effect $game_map.screen.start_flash_state3 endend #Game_Actor`` class Game_Screen #-------------------------------------------------------------------------- # * Start Flash (Damage Floor) #-------------------------------------------------------------------------- def start_flash_F1 start_flash(Color.new(Jami_DQ_Tile_DMG::F1_RED,Jami_DQ_Tile_DMG::F1_GREEN,Jami_DQ_Tile_DMG::F1_BLUE,128), 8) if Jami_DQ_Tile_DMG::F1_SFX_ON == true Audio.se_play("Audio/SE/" + Jami_DQ_Tile_DMG::F1_SFX) end end def start_flash_F2 start_flash(Color.new(Jami_DQ_Tile_DMG::F2_RED,Jami_DQ_Tile_DMG::F2_GREEN,Jami_DQ_Tile_DMG::F2_BLUE,128), 8) if Jami_DQ_Tile_DMG::F2_SFX_ON == true Audio.se_play("Audio/SE/" + Jami_DQ_Tile_DMG::F2_SFX) end end def start_flash_F3 start_flash(Color.new(Jami_DQ_Tile_DMG::F3_RED,Jami_DQ_Tile_DMG::F3_GREEN,Jami_DQ_Tile_DMG::F3_BLUE,128), 8) if Jami_DQ_Tile_DMG::F3_SFX_ON == true Audio.se_play("Audio/SE/" + Jami_DQ_Tile_DMG::F3_SFX) end end def start_flash_F4 start_flash(Color.new(Jami_DQ_Tile_DMG::F4_RED,Jami_DQ_Tile_DMG::F4_GREEN,Jami_DQ_Tile_DMG::F4_BLUE,128), 8) if Jami_DQ_Tile_DMG::F4_SFX_ON == true Audio.se_play("Audio/SE/" + Jami_DQ_Tile_DMG::F4_SFX) end end def start_flash_F5 start_flash(Color.new(Jami_DQ_Tile_DMG::F5_RED,Jami_DQ_Tile_DMG::F5_GREEN,Jami_DQ_Tile_DMG::F5_BLUE,128), 8) if Jami_DQ_Tile_DMG::F5_SFX_ON == true Audio.se_play("Audio/SE/" + Jami_DQ_Tile_DMG::F5_SFX) end end def start_flash_MP start_flash(Color.new(Jami_DQ_Tile_DMG::MP_RED,Jami_DQ_Tile_DMG::MP_GREEN,Jami_DQ_Tile_DMG::MP_BLUE,128), 8) if Jami_DQ_Tile_DMG::MP_SFX_ON == true Audio.se_play("Audio/SE/" + Jami_DQ_Tile_DMG::MP_SFX) end end def start_flash_state1 start_flash(Color.new(Jami_DQ_Tile_DMG::STATE1_RED,Jami_DQ_Tile_DMG::STATE1_GREEN,Jami_DQ_Tile_DMG::STATE1_BLUE,128), 8) if Jami_DQ_Tile_DMG::STATE1_SFX_ON == true Audio.se_play("Audio/SE/" + Jami_DQ_Tile_DMG::STATE1_SFX) end end def start_flash_state2 start_flash(Color.new(Jami_DQ_Tile_DMG::STATE2_RED,Jami_DQ_Tile_DMG::STATE2_GREEN,Jami_DQ_Tile_DMG::STATE2_BLUE,128), 8) if Jami_DQ_Tile_DMG::STATE2_SFX_ON == true Audio.se_play("Audio/SE/" + Jami_DQ_Tile_DMG::STATE2_SFX) end end def start_flash_state3 start_flash(Color.new(Jami_DQ_Tile_DMG::STATE3_RED,Jami_DQ_Tile_DMG::STATE3_GREEN,Jami_DQ_Tile_DMG::STATE3_BLUE,128), 8) if Jami_DQ_Tile_DMG::STATE3_SFX_ON == true Audio.se_play("Audio/SE/" + Jami_DQ_Tile_DMG::STATE3_SFX) end endend #Game_Picture
Q: Why not use something relevant, like regions or terrain tags
A: I am currently using other scripts that use these things, a variable or multiple switches were the only options left.
Q: Can you convert it for regions/terrain tags
A: No. I am not a coder. I don't know what I'm doing really. This script is super messy, but it works as is.
Credit and Thanks
- Jamiras843
- Xypher (for this bit of info http://forums.rpgmakerweb.com/index.php?/topic/16071-yanfly-battle-engine-removes-poison-flash/)
Terms of Use
Use as you see fit commercial or not, credit would be nice though.