Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #===============================================================================
- #
- # Shanghai Simple Script - Wereforms
- # Last Date Updated: 2010.06.08
- # Level: Normal
- #
- # Lets actors temporarily "transform" into other forms. These new forms take on
- # the skillsets of enemies in the database. Actors will revert back to their
- # normal skillsets once outside of battle.
- #===============================================================================
- # Instructions
- # -----------------------------------------------------------------------------
- # To install this script, open up your script editor and copy/paste this script
- # to an open slot below ▼ Materials but above ▼ Main. Remember to save.
- #
- # Place this in an item or skill notebox.
- #
- # <wereform: x>
- # This will transform the using actor's skillset into enemy x's skillset. Only
- # works in battle as the actor reverts outside of battle.
- #
- # <wereimage: string, x>
- # If this tag is used, then the actor's image will also change when the actor
- # transforms into its wereform. This will be reverted at the end of battle. In
- # order for this to work, the next tag must also be used.
- #
- # <wereface: string, x>
- # If this tag is used, then the actor's face will also change when the actor
- # transforms into its wereform. This will be reverted at the end of battle. In
- # order for this to work, the previous tag must also be used.
- #
- # <wereform revert>
- # If this tag is used and the actor is currently in a wereform, the actor will
- # revert back to its normal form.
- #===============================================================================
- $imported = {} if $imported == nil
- $imported["Wereforms"] = true
- #==============================================================================
- # RPG::UsableItem
- #==============================================================================
- class RPG::UsableItem < RPG::BaseItem
- #--------------------------------------------------------------------------
- # # Wereform
- #--------------------------------------------------------------------------
- def wereform
- return @wereform if @wereform != nil
- @wereform = 0
- self.note.split(/[\r\n]+/).each { |line|
- case line
- when /<(?:WEREFORM|metamorph):[ ](\d+)>/i
- @wereform = $1.to_i
- end
- }
- return @wereform
- end
- #--------------------------------------------------------------------------
- # # Wereform Image
- #--------------------------------------------------------------------------
- def wereform_image
- return @wereform_image if @wereform_image != nil
- @wereform_image = [nil, 0]
- self.note.split(/[\r\n]+/).each { |line|
- case line
- when /<(?:WEREIMAGE|morphimage):[ ](.*),[ ](\d+)>/i
- @wereform_image[0] = $1.to_s
- @wereform_image[1] = $2.to_i
- end
- }
- return @wereform_image
- end
- #--------------------------------------------------------------------------
- # # Wereform Face
- #--------------------------------------------------------------------------
- def wereform_face
- return @wereform_face if @wereform_face != nil
- @wereform_face = [nil, 0]
- self.note.split(/[\r\n]+/).each { |line|
- case line
- when /<(?:WEREFACE|morphface):[ ](.*),[ ](\d+)>/i
- @wereform_face[0] = $1.to_s
- @wereform_face[1] = $2.to_i
- end
- }
- return @wereform_face
- end
- #--------------------------------------------------------------------------
- # # Wereform Revert
- #--------------------------------------------------------------------------
- def wereform_revert
- return @wereform_revert if @wereform_revert != nil
- @wereform_revert = false
- self.note.split(/[\r\n]+/).each { |line|
- case line
- when /<(?:WEREFORM REVERT|metamorph revert)>/i
- @wereform_revert = true
- end
- }
- return @wereform_revert
- end
- end
- #==============================================================================
- # ** Game_Battler
- #==============================================================================
- class Game_Battler
- #--------------------------------------------------------------------------
- # * Apply Skill Effects
- #--------------------------------------------------------------------------
- alias skill_effect_sss_wereform skill_effect unless $@
- def skill_effect(user, skill)
- skill_effect_sss_wereform(user, skill)
- user.wereform_effect(skill)
- user.clear_wereforms if skill.wereform_revert
- end
- #--------------------------------------------------------------------------
- # * Apply Item Effects
- #--------------------------------------------------------------------------
- alias item_effect_sss_wereform item_effect unless $@
- def item_effect(user, item)
- item_effect_sss_wereform(user, item)
- user.wereform_effect(item)
- user.clear_wereforms if item.wereform_revert
- end
- #--------------------------------------------------------------------------
- # * Wereform Effect
- #--------------------------------------------------------------------------
- def wereform_effect(obj)
- return if obj.nil?
- return unless actor?
- return unless $game_temp.in_battle
- return unless obj.wereform > 0
- @wereform = obj.wereform
- if @wereimage.nil?
- @wereimage = @character_name
- @wereindex = @character_index
- @wereface = @face_name
- @werefndex = @face_index
- end
- if obj.wereform_image[0] != nil and obj.wereform_face[0] != nil
- a1 = obj.wereform_image[0]
- a2 = obj.wereform_image[1]
- b1 = obj.wereform_face[0]
- b2 = obj.wereform_face[1]
- set_graphic(a1, a2, b1, b2)
- end
- if $imported["BattleEngineMelody"]
- clear_battle_cache
- clear_cooldowns
- clear_limited_use
- end
- end
- #--------------------------------------------------------------------------
- # * Clear Wereforms
- #--------------------------------------------------------------------------
- def clear_wereforms
- return if @wereform.nil?
- @wereform = nil
- unless @wereimage.nil?
- set_graphic(@wereimage, @wereindex, @wereface, @werefndex)
- @wereimage = nil
- @wereindex = nil
- @wereface = nil
- @werefndex = nil
- $game_player.refresh
- end
- if $imported["BattleEngineMelody"]
- clear_battle_cache
- clear_cooldowns
- clear_limited_use
- end
- end
- end
- #==============================================================================
- # ** Game_Actor
- #==============================================================================
- class Game_Actor < Game_Battler
- #--------------------------------------------------------------------------
- # * Get Skill Object Array
- #--------------------------------------------------------------------------
- alias skills_sss_wereform skills unless $@
- def skills
- if @wereform != nil and @wereform > 0
- enemy = $data_enemies[@wereform]
- return skills_sss_wereform if enemy.nil?
- return enemy_skills(enemy)
- else
- return skills_sss_wereform
- end
- end
- #--------------------------------------------------------------------------
- # * Determine Usable Skills
- #--------------------------------------------------------------------------
- def skill_can_use?(skill)
- return super(skill)
- end
- #--------------------------------------------------------------------------
- # * Enemy Skills
- #--------------------------------------------------------------------------
- def enemy_skills(enemy)
- result = []
- for action in enemy.actions
- next unless action.kind == 1
- skill = $data_skills[action.skill_id]
- result.push(skill) unless result.include?(skill)
- end
- result.sort! { |a,b| a.id <=> b.id }
- return result.uniq
- end
- end
- #==============================================================================
- # ** Scene_Battle
- #==============================================================================
- class Scene_Battle < Scene_Base
- #--------------------------------------------------------------------------
- # * Start processing
- #--------------------------------------------------------------------------
- alias start_sss_wereform start unless $@
- def start
- for member in $game_party.members do member.clear_wereforms end
- start_sss_wereform
- end
- #--------------------------------------------------------------------------
- # * End Battle
- #--------------------------------------------------------------------------
- alias battle_end_sss_wereform battle_end unless $@
- def battle_end(result)
- for member in $game_party.members do member.clear_wereforms end
- battle_end_sss_wereform(result)
- end
- end
- #===============================================================================
- #
- # END OF FILE
- #
- #===============================================================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement