Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2011
1,731
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 8.82 KB | None | 0 0
  1. #===============================================================================
  2. #
  3. # Shanghai Simple Script - Wereforms
  4. # Last Date Updated: 2010.06.08
  5. # Level: Normal
  6. #
  7. # Lets actors temporarily "transform" into other forms. These new forms take on
  8. # the skillsets of enemies in the database. Actors will revert back to their
  9. # normal skillsets once outside of battle.
  10. #===============================================================================
  11. # Instructions
  12. # -----------------------------------------------------------------------------
  13. # To install this script, open up your script editor and copy/paste this script
  14. # to an open slot below ▼ Materials but above ▼ Main. Remember to save.
  15. #
  16. # Place this in an item or skill notebox.
  17. #
  18. # <wereform: x>
  19. # This will transform the using actor's skillset into enemy x's skillset. Only
  20. # works in battle as the actor reverts outside of battle.
  21. #
  22. # <wereimage: string, x>
  23. # If this tag is used, then the actor's image will also change when the actor
  24. # transforms into its wereform. This will be reverted at the end of battle. In
  25. # order for this to work, the next tag must also be used.
  26. #
  27. # <wereface: string, x>
  28. # If this tag is used, then the actor's face will also change when the actor
  29. # transforms into its wereform. This will be reverted at the end of battle. In
  30. # order for this to work, the previous tag must also be used.
  31. #
  32. # <wereform revert>
  33. # If this tag is used and the actor is currently in a wereform, the actor will
  34. # revert back to its normal form.
  35. #===============================================================================
  36.  
  37. $imported = {} if $imported == nil
  38. $imported["Wereforms"] = true
  39.  
  40. #==============================================================================
  41. # RPG::UsableItem
  42. #==============================================================================
  43.  
  44. class RPG::UsableItem < RPG::BaseItem
  45.   #--------------------------------------------------------------------------
  46.   # # Wereform
  47.   #--------------------------------------------------------------------------
  48.   def wereform
  49.     return @wereform if @wereform != nil
  50.     @wereform = 0
  51.     self.note.split(/[\r\n]+/).each { |line|
  52.       case line
  53.       when /<(?:WEREFORM|metamorph):[ ](\d+)>/i
  54.         @wereform = $1.to_i
  55.       end
  56.     }
  57.     return @wereform
  58.   end
  59.   #--------------------------------------------------------------------------
  60.   # # Wereform Image
  61.   #--------------------------------------------------------------------------
  62.   def wereform_image
  63.     return @wereform_image if @wereform_image != nil
  64.     @wereform_image = [nil, 0]
  65.     self.note.split(/[\r\n]+/).each { |line|
  66.       case line
  67.       when /<(?:WEREIMAGE|morphimage):[ ](.*),[ ](\d+)>/i
  68.         @wereform_image[0] = $1.to_s
  69.         @wereform_image[1] = $2.to_i
  70.       end
  71.     }
  72.     return @wereform_image
  73.   end
  74.   #--------------------------------------------------------------------------
  75.   # # Wereform Face
  76.   #--------------------------------------------------------------------------
  77.   def wereform_face
  78.     return @wereform_face if @wereform_face != nil
  79.     @wereform_face = [nil, 0]
  80.     self.note.split(/[\r\n]+/).each { |line|
  81.       case line
  82.       when /<(?:WEREFACE|morphface):[ ](.*),[ ](\d+)>/i
  83.         @wereform_face[0] = $1.to_s
  84.         @wereform_face[1] = $2.to_i
  85.       end
  86.     }
  87.     return @wereform_face
  88.   end
  89.   #--------------------------------------------------------------------------
  90.   # # Wereform Revert
  91.   #--------------------------------------------------------------------------
  92.   def wereform_revert
  93.     return @wereform_revert if @wereform_revert != nil
  94.     @wereform_revert = false
  95.     self.note.split(/[\r\n]+/).each { |line|
  96.       case line
  97.       when /<(?:WEREFORM REVERT|metamorph revert)>/i
  98.         @wereform_revert = true
  99.       end
  100.     }
  101.     return @wereform_revert
  102.   end
  103. end
  104.  
  105. #==============================================================================
  106. # ** Game_Battler
  107. #==============================================================================
  108.  
  109. class Game_Battler
  110.   #--------------------------------------------------------------------------
  111.   # * Apply Skill Effects
  112.   #--------------------------------------------------------------------------
  113.   alias skill_effect_sss_wereform skill_effect unless $@
  114.   def skill_effect(user, skill)
  115.     skill_effect_sss_wereform(user, skill)
  116.     user.wereform_effect(skill)
  117.     user.clear_wereforms if skill.wereform_revert
  118.   end
  119.   #--------------------------------------------------------------------------
  120.   # * Apply Item Effects
  121.   #--------------------------------------------------------------------------
  122.   alias item_effect_sss_wereform item_effect unless $@
  123.   def item_effect(user, item)
  124.     item_effect_sss_wereform(user, item)
  125.     user.wereform_effect(item)
  126.     user.clear_wereforms if item.wereform_revert
  127.   end
  128.   #--------------------------------------------------------------------------
  129.   # * Wereform Effect
  130.   #--------------------------------------------------------------------------
  131.   def wereform_effect(obj)
  132.     return if obj.nil?
  133.     return unless actor?
  134.     return unless $game_temp.in_battle
  135.     return unless obj.wereform > 0
  136.     @wereform = obj.wereform
  137.     if @wereimage.nil?
  138.       @wereimage = @character_name
  139.       @wereindex = @character_index
  140.       @wereface  = @face_name
  141.       @werefndex = @face_index
  142.     end
  143.     if obj.wereform_image[0] != nil and obj.wereform_face[0] != nil
  144.       a1 = obj.wereform_image[0]
  145.       a2 = obj.wereform_image[1]
  146.       b1 = obj.wereform_face[0]
  147.       b2 = obj.wereform_face[1]
  148.       set_graphic(a1, a2, b1, b2)
  149.     end
  150.     if $imported["BattleEngineMelody"]
  151.       clear_battle_cache
  152.       clear_cooldowns
  153.       clear_limited_use
  154.     end
  155.   end
  156.   #--------------------------------------------------------------------------
  157.   # * Clear Wereforms
  158.   #--------------------------------------------------------------------------
  159.   def clear_wereforms
  160.     return if @wereform.nil?
  161.     @wereform = nil
  162.     unless @wereimage.nil?
  163.       set_graphic(@wereimage, @wereindex, @wereface, @werefndex)
  164.       @wereimage = nil
  165.       @wereindex = nil
  166.       @wereface  = nil
  167.       @werefndex = nil
  168.       $game_player.refresh
  169.     end
  170.     if $imported["BattleEngineMelody"]
  171.       clear_battle_cache
  172.       clear_cooldowns
  173.       clear_limited_use
  174.     end
  175.   end
  176. end
  177.  
  178. #==============================================================================
  179. # ** Game_Actor
  180. #==============================================================================
  181.  
  182. class Game_Actor < Game_Battler
  183.   #--------------------------------------------------------------------------
  184.   # * Get Skill Object Array
  185.   #--------------------------------------------------------------------------
  186.   alias skills_sss_wereform skills unless $@
  187.   def skills
  188.     if @wereform != nil and @wereform > 0
  189.       enemy = $data_enemies[@wereform]
  190.       return skills_sss_wereform if enemy.nil?
  191.       return enemy_skills(enemy)
  192.     else
  193.       return skills_sss_wereform
  194.     end
  195.   end
  196.   #--------------------------------------------------------------------------
  197.   # * Determine Usable Skills
  198.   #--------------------------------------------------------------------------
  199.   def skill_can_use?(skill)
  200.     return super(skill)
  201.   end
  202.   #--------------------------------------------------------------------------
  203.   # * Enemy Skills
  204.   #--------------------------------------------------------------------------
  205.   def enemy_skills(enemy)
  206.     result = []
  207.     for action in enemy.actions
  208.       next unless action.kind == 1
  209.       skill = $data_skills[action.skill_id]
  210.       result.push(skill) unless result.include?(skill)
  211.     end
  212.     result.sort! { |a,b| a.id <=> b.id }
  213.     return result.uniq
  214.   end
  215. end
  216.  
  217. #==============================================================================
  218. # ** Scene_Battle
  219. #==============================================================================
  220.  
  221. class Scene_Battle < Scene_Base
  222.   #--------------------------------------------------------------------------
  223.   # * Start processing
  224.   #--------------------------------------------------------------------------
  225.   alias start_sss_wereform start unless $@
  226.   def start
  227.     for member in $game_party.members do member.clear_wereforms end
  228.     start_sss_wereform
  229.   end
  230.   #--------------------------------------------------------------------------
  231.   # * End Battle
  232.   #--------------------------------------------------------------------------
  233.   alias battle_end_sss_wereform battle_end unless $@
  234.   def battle_end(result)
  235.     for member in $game_party.members do member.clear_wereforms end
  236.     battle_end_sss_wereform(result)
  237.   end
  238. end
  239.  
  240. #===============================================================================
  241. #
  242. # END OF FILE
  243. #
  244. #===============================================================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement