Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2011
1,582
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 10.59 KB | None | 0 0
  1. #===============================================================================
  2. #
  3. # Shanghai Simple Script - Passive Skills
  4. # Last Date Updated: 2010.05.19
  5. # Level: Normal
  6. #
  7. # Skills learned by actors can now give stat bonuses or apply autostates.
  8. #===============================================================================
  9. # Instructions
  10. # -----------------------------------------------------------------------------
  11. # To install this script, open up your script editor and copy/paste this script
  12. # to an open slot below ▼ Materials but above ▼ Main. Remember to save.
  13. #
  14. # <passive param: +x>
  15. # <passive param: -x>
  16. # <passive param: x%>
  17. # Replace param with hp, mp, atk, def, spi, agi, dex, res, hit, eva, cri, or
  18. # odds, and this tag will increase or decrease the base stat by that much. %
  19. # will increase by a percent.
  20. #
  21. # <passive state: x>
  22. # <passive state: x, x, x>
  23. # Gives the skill with state x always applied. Unremovable until the skill has
  24. # been forgotten.
  25. #
  26. # Insert multiple of these tags if you want more than one passive effect
  27. # applied for a single skill.
  28. #===============================================================================
  29.  
  30. $imported = {} if $imported == nil
  31. $imported["PassiveSkills"] = true
  32.  
  33. #==============================================================================
  34. # RPG::BaseItem
  35. #==============================================================================
  36.  
  37. class RPG::BaseItem
  38.  
  39.   #--------------------------------------------------------------------------
  40.   # passive_traits
  41.   #--------------------------------------------------------------------------
  42.   def passive_traits
  43.     return @passive_traits if @passive_traits != nil
  44.     @passive_traits = { :maxhp => 0, :maxmp => 0, :atk => 0, :def => 0,
  45.       :spi => 0, :agi => 0, :dex => 0, :res => 0, :hit => 0, :eva => 0,
  46.       :cri => 0, :odds => 0, :maxhpp => 100, :maxmpp => 100, :atkp => 100,
  47.       :defp => 100, :spip => 100, :agip => 100, :dexp => 100, :resp => 100,
  48.       :hitp => 100, :evap => 100, :crip => 100, :oddsp => 100, :states => []}
  49.     self.note.split(/[\r\n]+/).each { |line|
  50.       case line
  51.       when /<(?:PASSIVE|pas)[ ](.*):[ ]([\+\-]\d+)>/i
  52.         case $1.upcase
  53.         when "MAXHP", "HP"
  54.           @passive_traits[:maxhp] = $2.to_i
  55.         when "MAXMP", "MP"
  56.           @passive_traits[:maxmp] = $2.to_i
  57.         when "ATK"
  58.           @passive_traits[:atk] = $2.to_i
  59.         when "DEF"
  60.           @passive_traits[:def] = $2.to_i
  61.         when "SPI"
  62.           @passive_traits[:spi] = $2.to_i
  63.         when "AGI"
  64.           @passive_traits[:agi] = $2.to_i
  65.         when "DEX"
  66.           @passive_traits[:dex] = $2.to_i
  67.         when "RES"
  68.           @passive_traits[:res] = $2.to_i
  69.         when "HIT"
  70.           @passive_traits[:hit] = $2.to_i
  71.         when "EVA"
  72.           @passive_traits[:eva] = $2.to_i
  73.         when "CRI"
  74.           @passive_traits[:cri] = $2.to_i
  75.         when "ODDS"
  76.           @passive_traits[:odds] = $2.to_i
  77.         end
  78.       when /<(?:PASSIVE|pas)[ ](.*):[ ](\d+)([%])>/i
  79.         case $1.upcase
  80.         when "MAXHP", "HP"
  81.           @passive_traits[:maxhpp] = $2.to_i
  82.         when "MAXMP", "MP"
  83.           @passive_traits[:maxmpp] = $2.to_i
  84.         when "ATK"
  85.           @passive_traits[:atkp] = $2.to_i
  86.         when "DEF"
  87.           @passive_traits[:defp] = $2.to_i
  88.         when "SPI"
  89.           @passive_traits[:spip] = $2.to_i
  90.         when "AGI"
  91.           @passive_traits[:agip] = $2.to_i
  92.         when "DEX"
  93.           @passive_traits[:dexp] = $2.to_i
  94.         when "RES"
  95.           @passive_traits[:resp] = $2.to_i
  96.         when "HIT"
  97.           @passive_traits[:hitp] = $2.to_i
  98.         when "EVA"
  99.           @passive_traits[:evap] = $2.to_i
  100.         when "CRI"
  101.           @passive_traits[:crip] = $2.to_i
  102.         when "ODDS"
  103.           @passive_traits[:oddsp] = $2.to_i
  104.         end
  105.       when /<(?:PASSIVE_STATE|passive state):[ ](\d+(?:\s*,\s*\d+)*)>/i
  106.         $1.scan(/\d+/).each { |num|
  107.         @passive_traits[:states].push($data_states[num.to_i]) if num.to_i > 0 }
  108.       end
  109.     }
  110.     return @passive_traits
  111.   end
  112.  
  113. end
  114.  
  115. #==============================================================================
  116. # ** Game_Battler
  117. #==============================================================================
  118.  
  119. class Game_Battler
  120.   #--------------------------------------------------------------------------
  121.   # * Get Current States as an Object Array
  122.   #--------------------------------------------------------------------------
  123.   alias states_sss_passive_skills states unless $@
  124.   def states
  125.     array = states_sss_passive_skills
  126.     if actor?
  127.       for skill in skills do array |= skill.passive_traits[:states] end
  128.     end
  129.     return array.compact
  130.   end
  131. end
  132.  
  133. #==============================================================================
  134. # Game Actor
  135. #==============================================================================
  136.  
  137. class Game_Actor < Game_Battler
  138.   #--------------------------------------------------------------------------
  139.   # * Get Basic Maximum HP
  140.   #--------------------------------------------------------------------------
  141.   alias base_maxhp_sss_passive_skills base_maxhp unless $@
  142.   def base_maxhp
  143.     n = base_maxhp_sss_passive_skills
  144.     for skill in skills do n = n * skill.passive_traits[:maxhpp] / 100.0 end
  145.     for skill in skills do n += skill.passive_traits[:maxhp] end
  146.     return Integer(n)
  147.   end
  148.   #--------------------------------------------------------------------------
  149.   # * Get Basic Maximum MP
  150.   #--------------------------------------------------------------------------
  151.   alias base_maxmp_sss_passive_skills base_maxmp unless $@
  152.   def base_maxmp
  153.     n = base_maxmp_sss_passive_skills
  154.     for skill in skills do n = n * skill.passive_traits[:maxmpp] / 100.0 end
  155.     for skill in skills do n += skill.passive_traits[:maxmp] end
  156.     return Integer(n)
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   # * Get Basic Attack
  160.   #--------------------------------------------------------------------------
  161.   alias base_atk_sss_passive_skills base_atk unless $@
  162.   def base_atk
  163.     n = base_atk_sss_passive_skills
  164.     for skill in skills do n = n * skill.passive_traits[:atkp] / 100.0 end
  165.     for skill in skills do n += skill.passive_traits[:atk] end
  166.     return Integer(n)
  167.   end
  168.   #--------------------------------------------------------------------------
  169.   # * Get Basic Defense
  170.   #--------------------------------------------------------------------------
  171.   alias base_def_sss_passive_skills base_def unless $@
  172.   def base_def
  173.     n = base_def_sss_passive_skills
  174.     for skill in skills do n = n * skill.passive_traits[:defp] / 100.0 end
  175.     for skill in skills do n += skill.passive_traits[:def] end
  176.     return Integer(n)
  177.   end
  178.   #--------------------------------------------------------------------------
  179.   # * Get Basic Spirit
  180.   #--------------------------------------------------------------------------
  181.   alias base_spi_sss_passive_skills base_spi unless $@
  182.   def base_spi
  183.     n = base_spi_sss_passive_skills
  184.     for skill in skills do n = n * skill.passive_traits[:spip] / 100.0 end
  185.     for skill in skills do n += skill.passive_traits[:spi] end
  186.     return Integer(n)
  187.   end
  188.   #--------------------------------------------------------------------------
  189.   # * Get Basic Agility
  190.   #--------------------------------------------------------------------------
  191.   alias base_agi_sss_passive_skills base_agi unless $@
  192.   def base_agi
  193.     n = base_agi_sss_passive_skills
  194.     for skill in skills do n = n * skill.passive_traits[:agip] / 100.0 end
  195.     for skill in skills do n += skill.passive_traits[:agi] end
  196.     return Integer(n)
  197.   end
  198.   #--------------------------------------------------------------------------
  199.   # * Get Basic Dexterity
  200.   #--------------------------------------------------------------------------
  201.   if $imported["DEX Stat"]
  202.   alias base_dex_sss_passive_skills base_dex unless $@
  203.   def base_dex
  204.     n = base_dex_sss_passive_skills
  205.     for skill in skills do n = n * skill.passive_traits[:dexp] / 100.0 end
  206.     for skill in skills do n += skill.passive_traits[:dex] end
  207.     return Integer(n)
  208.   end
  209.   end
  210.   #--------------------------------------------------------------------------
  211.   # * Get Basic Resist
  212.   #--------------------------------------------------------------------------
  213.   if $imported["RES Stat"]
  214.   alias base_res_sss_passive_skills base_res unless $@
  215.   def base_res
  216.     n = base_res_sss_passive_skills
  217.     for skill in skills do n = n * skill.passive_traits[:resp] / 100.0 end
  218.     for skill in skills do n += skill.passive_traits[:res] end
  219.     return Integer(n)
  220.   end
  221.   end
  222.   #--------------------------------------------------------------------------
  223.   # * Get Hit Rate
  224.   #--------------------------------------------------------------------------
  225.   alias hit_sss_passive_skills hit unless $@
  226.   def hit
  227.     n = hit_sss_passive_skills
  228.     for skill in skills do n = n * skill.passive_traits[:hitp] / 100.0 end
  229.     for skill in skills do n += skill.passive_traits[:hit] end
  230.     return [Integer(n), 0].max
  231.   end
  232.   #--------------------------------------------------------------------------
  233.   # * Get Evasion Rate
  234.   #--------------------------------------------------------------------------
  235.   alias eva_sss_passive_skills eva unless $@
  236.   def eva
  237.     n = eva_sss_passive_skills
  238.     for skill in skills do n = n * skill.passive_traits[:evap] / 100.0 end
  239.     for skill in skills do n += skill.passive_traits[:eva] end
  240.     return [Integer(n), 0].max
  241.   end
  242.   #--------------------------------------------------------------------------
  243.   # * Get Critical Rate
  244.   #--------------------------------------------------------------------------
  245.   alias cri_sss_passive_skills cri unless $@
  246.   def cri
  247.     n = cri_sss_passive_skills
  248.     for skill in skills do n = n * skill.passive_traits[:crip] / 100.0 end
  249.     for skill in skills do n += skill.passive_traits[:cri] end
  250.     return [Integer(n), 0].max
  251.   end
  252.   #--------------------------------------------------------------------------
  253.   # * Get Get Ease of Hitting
  254.   #--------------------------------------------------------------------------
  255.   alias odds_sss_passive_skills odds unless $@
  256.   def odds
  257.     n = odds_sss_passive_skills
  258.     for skill in skills do n = n * skill.passive_traits[:oddsp] / 100.0 end
  259.     for skill in skills do n += skill.passive_traits[:odds] end
  260.     return [Integer(n), 1].max
  261.   end
  262. end
  263.  
  264. #===============================================================================
  265. #
  266. # END OF FILE
  267. #
  268. #===============================================================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement