Advertisement
Guest User

Untitled

a guest
Jul 5th, 2017
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 54.77 KB | None | 0 0
  1. #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
  2. # Passive Augments by Xelias
  3. # Version: 1.01
  4. # Type: Skill Enhacement
  5. # Date v1.01:   18.12.2009
  6. #
  7. #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
  8. #  
  9. #  This work is protected by the following license:
  10. # #----------------------------------------------------------------------------
  11. # #  
  12. # #  Creative Commons - Attribution-NonCommercial-ShareAlike 3.0 Unported
  13. # #  ( http://creativecommons.org/licenses/by-nc-sa/3.0/ )
  14. # #  
  15. # #  You are free:
  16. # #  
  17. # #  to Share - to copy, distribute and transmit the work
  18. # #  to Remix - to adapt the work
  19. # #  
  20. # #  Under the following conditions:
  21. # #  
  22. # #  Attribution. You must attribute the work in the manner specified by the
  23. # #  author or licensor (but not in any way that suggests that they endorse you
  24. # #  or your use of the work).
  25. # #  
  26. # #  Noncommercial. You may not use this work for commercial purposes.
  27. # #  
  28. # #  Share alike. If you alter, transform, or build upon this work, you may
  29. # #  distribute the resulting work only under the same or similar license to
  30. # #  this one.
  31. # #  
  32. # #  - For any reuse or distribution, you must make clear to others the license
  33. # #    terms of this work. The best way to do this is with a link to this web
  34. # #    page.
  35. # #  
  36. # #  - Any of the above conditions can be waived if you get permission from the
  37. # #    copyright holder.
  38. # #  
  39. # #  - Nothing in this license impairs or restricts the author's moral rights.
  40. # #  
  41. # #----------------------------------------------------------------------------
  42. #
  43. #  Version history
  44. #
  45. # 1.01
  46. #
  47. #  *Added new Passive Skills (From RESIST_STATES to GEOMANCY)
  48. #  *Fixed a bug
  49. #
  50. # #----------------------------------------------------------------------------
  51. #  This script creates "Passive Skills". The "Passive Skills" you list in
  52. #  PASSIVE_SKILLS_IDS = [] are displayed in a separate menu.
  53. #  They are simple skills you can give an Icon, a name, a description...
  54. #  You can change the menu's name in PASSIVE_WORD = "Augments"
  55. #  Replace "Augments" by whatever name you want.
  56. #
  57. #  Passive Skills only work on actors !
  58. #
  59. #  Passive skills effects are listed here :
  60. #
  61. #  GUARD_PLUS will decrease even more the damage taken while defending.
  62. #  REFLECT_GUARD will counterattack a physical attack while defending.
  63. #  MAGIC_REFLECT will counterattack a magical attack while defending.
  64. #  ARTFUL_DODGER will allow a certain percentage chance to dodge an attack while defending.
  65. #  MP_SHIELD will allow damage to be inflicted on SP instead of HP until you run out of SP.
  66. #  MARTYR allows the character to gain SP when taking damage
  67. #  INQUISITOR allows the character to gain SP when dealing physical damage.
  68. #  WARMAGE allows the character to gain SP when dealing damage with spells.
  69. #  BLOOD_PRICE allows the character to pay HP instead of SP. HP cost is SP cost*5
  70. #  DEMI_MP allows the character to cast spells for half the SP cost
  71. #  TURBO_MP doubles the SP cost as well as the power of the skills.
  72. #  SPELLBREAKER increases the damage dealt by spells when you have low HP
  73. #  ADRENALINE increases the damage dealt by attacks when you have low HP
  74. #  LAST_STAND decreases the damage taken when you have low HP
  75. #  CHARGED_ATTACKS increases the power of physical attacks for 6 SP a hit until you run out of SP.
  76. #  BRAWLER allows you to inflict more damage when no weapons are equipped. Note that
  77. #  thanks to this script, bare-handed attacks are available. Just modify the BARE_ANIMATION_SELF_ID
  78. #  and BARE_ANIMATION_ID to modify the animations that play on the attacker and on the enemy
  79. #  while attacking without weapons, respectively.
  80. #  CRITICAL_BOOST increases the critical hit ratio
  81. #  VITAL_POINT increases the critical hit damage <-- needs to be redone
  82. #  FOCUS slightly increases the damage dealt by attacks when at full HP
  83. #  SERENITY slightly increases the damage dealt by spells when at full HP
  84. #  ONCE_MORE allows the actor to survive all hits when his HP are higher than 1 : then his
  85. #  HP will become 1, and next strike will be deadly. Think about Kingdom Hearts for this one.
  86. #  LEARNING allows the actor to learn blue magic. This blue magic is set in BLUE_SKILLS_IDS = []
  87. #  HEALER increases the potency of healing spells and objects on the actor.
  88. #  STATE_RESIST halves the chances the actor will be affected by a status effect
  89. #  BLOOD_SWORD absorbs  1/4 of damage done by physical attacks as HP for the actor.
  90. #  ELEMENTALISM reduces an enemy's resistance to elemental spells
  91. #  GEOMANCY increases the user's resistance to elemental spells.
  92. #  SLAYER increases the user's Light spell damage against Evil foes (specified with EVIL_ID)
  93. #
  94. #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
  95. # Passive Skills
  96.  
  97. GUARD_PLUS_ID = 401
  98. REFLECT_GUARD_ID = 0
  99. MAGIC_REFLECT_ID = 0
  100. ARTFUL_DODGER_ID = 0
  101. MP_SHIELD_ID = 402
  102. MARTYR_ID = 420
  103. INQUISITOR_ID = 419
  104. WARMAGE_ID = 418
  105. BLOOD_PRICE_ID = 403
  106. DEMI_MP_ID = 405
  107. TURBO_MP_ID = 406
  108. SPELLBREAKER_ID = 407
  109. ADRENALINE_ID = 408
  110. LAST_STAND_ID = 409
  111. CHARGED_ATTACKS_ID =  410
  112. BRAWLER_ID = 400
  113. CRITICAL_BOOST_ID = 411
  114. VITAL_POINT_ID = 421
  115. FOCUS_ID = 0
  116. SERENITY_ID = 0
  117. ONCE_MORE_ID = 412
  118. LEARNING_ID = 0
  119. HEALER_ID = 413
  120. STATE_RESIST_ID = 414
  121. BLOOD_SWORD_ID = 404
  122. ELEMENTALISM_ID = 415
  123. GEOMANCY_ID = 416
  124. SLAYER_ID = 417
  125. ICEHAND_ID = 422
  126.  
  127. #BLUE_SKILLS_IDS = []
  128. BLUE_SKILLS = (2..114).to_a
  129.  
  130. BARE_ANIMATION_SELF_ID = 0
  131. BARE_ANIMATION_ID = 4
  132.  
  133. EVIL_IDS = [4,10,14,15,16,17,20,21,36,37,38,39,41,49,54,55,61,65,78,79,504,656,999]
  134.  
  135. #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
  136. #
  137. #  Passive skills can also be used to equip weapons and armors, and to be able to use skills.
  138. #  Configure it like that :
  139. #
  140. #  When [weapon/armor id] then return [passive skill id]
  141. #  When [skill id] then return [passive skill id]
  142. #
  143. #  Note that passive skills overwrite class restrictions : if a warrior gets a "Equip Staffs"
  144. #  passive ability, he will be able to equip staffs.
  145. #
  146. #  On a sad note, all weapons/armors need to be set to a skill in order to be equipped.
  147. #  If you put "nil"  or "0", the game will crash.
  148. #  So set a skill for each different weapon or armor. Default is 100
  149. #  The same applies for skills. Skills won't crash, but won't be able to be used. Which is bad.
  150. #  However if you put "when skill X then return skill X", the skill will be usable if you have it, which
  151. #  means you won't have to learn another passive skill.
  152. #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
  153.  
  154. #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
  155. # Alternative Attack Algorithms  by Xelias
  156. # Version: 1.00
  157. # Type: Battle Add-ON
  158. # Date v1.00:   7.11.2009
  159. #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
  160. #
  161. #   How to use this script :
  162. # This allows your weapons to follow different damage algorithms. Before that, you
  163. # MUST place your weapons following a normal algorithm in the
  164. # NORMAL_WEAPONS_IDS, or else... It wouldn't be good for your game.
  165. # Also place all weapons ID except SP damaging and absorbing ones, into the
  166. # "ALL_WEAPONS_IDS", because if you don't, a nasty bug will prevent you from
  167. # dealing damage with normal attack. Cool, huh ?
  168. #
  169. # ATMA_WEAPON_IDS = [X,X...] : A weapon with an ID equal to X will inflict
  170. # more damage depending on the user’s HP. If HP are full, attack power is doubled.
  171. # If HP are at minimum, attack power is normal. If HP are equal to half, attack power
  172. # is equal to 1,5 of the normal Attack power, and so on...
  173. # VALIANT_KNIFE_IDS = [X, X...] : The opposite effect of Atma Weapon.
  174. # If HP are at minimum, attack power is doubled, and so on...
  175. # LIMITED_MOON_IDS = [X, X...] : Follows the same formula than Atma Weapon
  176. # but works with SP
  177. # CONFORMER_IDS = [X, X...] : Deals damage based on user’s Level.
  178. # At Level 1, attack power is normal. At Level 99, attack power is doubled. You get
  179. # the idea
  180. # MASAMUNE_IDS = [X, X...] : Deals more damage the weaker the enemy is
  181. # For an enemy with 100% HP, attack power is normal. For an enemy with 1 HP,
  182. # attack power is doubled (which is pretty useless). For an enemy with half HP,
  183. # attack power is equal to 1,5 of the normal attack power, and so on...
  184. # PROJECTILE_IDS = [X, X...] : Ignores the opponent's defense in the damage
  185. # calculation. However, the Attack power is halved, preventing an attack to inflict
  186. # max damage at an opponent with max defense. Otherwise, it wouldn't be fair.
  187. # BOW_IDS = [X, X...] : inflicts damage based on user's Dexterity instead of Strength
  188. # DAGGER_IDS = [X, X...] : inflicts damage based on user's Agility instead of Strength
  189. # MIND_BLASTER_IDS = [X, X...] : Damage is inflicted to SP. Damage
  190. # relies also on the opponent's Magic Defense and your Intelligence
  191. # BLOOD_SWORD_W_IDS = [X, X...] & PERCENT_DRAINED = X :  
  192. # some damage is absorbed from the attack. How many? PERCENT_DRAINED %
  193. # GUARD_BREAKER_IDS = [X, X...] : Damage ignores if enemy is defending.  
  194. # As simple as that.
  195. # GENJI_WEAPON_IDS = [X, X...] : Critical Hit Ratio is doubled.
  196. # KIKU_ICHIMONJI_IDS = [X, X...] : Critical Hit power is doubled.
  197. # ROBOT_WEAPON_IDS = [X, X...] : Weapons that inflicts damage based on a combination of str, dex and agl.
  198. #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
  199.  
  200. # Alternate Attack Algorithms
  201.  
  202.   OTHER_WEAPONS_IDS = [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49,
  203.   77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
  204.   137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
  205.   178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
  206.   270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 304, 306, 307, 309, 310, 311, 313, 314, 315, 316, 317, 318, 319, 320, 335, 336, 337]
  207.  
  208.   ALL_WEAPONS_IDS = []
  209.  
  210.   ATMA_WEAPON_IDS = [0]
  211.   VALIANT_KNIFE_IDS = [0]
  212.   LIMITED_MOON_IDS = [0]
  213.   CONFORMER_IDS = [0]
  214.   MASAMUNE_IDS = [0]
  215.   PROJECTILE_IDS = [0]
  216.   BOW_IDS = [200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 301, 302, 303, 313, 321]
  217.   DAGGER_IDS = [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72 ,73 ,74, 75, 321, 322]
  218.   MIND_BLASTER_IDS = [0]
  219.   BLOOD_SWORD_W_IDS = [0]
  220.   PERCENT_DRAINED = 10
  221.   GUARD_BREAKER_IDS = [0]
  222.   GENJI_WEAPON_IDS = [0]
  223.   KIKU_ICHIMONJI_IDS = [0]
  224.   ROBOT_WEAPON_IDS = [323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334]
  225.  
  226. #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
  227. #==============================================================================
  228. # % based weapons (& skills) states rates
  229. # By gerkrt/gerrtunk
  230. # Version: 1.0
  231. # Date: 23/12/2010
  232. #
  233. # Modified By Midnight Moon to support skills.
  234. # Date: 08/08/2011
  235. #==============================================================================
  236.  
  237. =begin
  238.  
  239. --------Introduction-----------
  240.  
  241. Normally you can add any combination of states for weapons and skills,
  242. but you dont have any other control. With this you can use any state based on %.
  243.  
  244. You can ask for bugs, suggerences, compatibilitzations and any other things.
  245.  
  246. The % means the posibilities that have the state to impact the enemy. After that
  247. impact, the traditional formula(versus random+abdce) is applied. It works like
  248. old rpgmakers state affliction.
  249.  
  250.  
  251. weapon_id=>[[state_id1, possibility], [state_id2, possibility]]
  252.  
  253. Weap_state_rates = {3=>[[2, 100], [4,100]], 11=>[[2, 100], [4,100]] }
  254.  
  255. You can add any number of states for weapon, and weapons, just add a , before these.
  256. and respect the {}.
  257.  
  258. ---------Syntax notes--------------
  259.  
  260. You can divide long lines like this:
  261.  
  262. Weap_state_rates = {3=>[[2, 100], [4,100]],
  263. 11=>[[2, 100], [4,100]] ,
  264. 15=>[[2, 100], [4,100]] }
  265.  
  266. See that the new line have to be after a , and that the final one dont put a
  267. final ,.
  268.  
  269.  
  270. =end
  271.  
  272. module Wep
  273.  
  274.   # Set Weapon_state_rates to nil if you want to deactivate
  275.   # % based weapons states rates
  276.  
  277.   Weapon_state_rates = {}
  278.  
  279.   # Set Skill_state_rates to nil if you want to deactivate
  280.   # % based skills states rates
  281.   # Skill_state_rates = {
  282.   # SKILL_ID => [ [ADD_STATE_1, PERCENT_CHANCE_SUCCESS, [REMOVE_STATE_1,
  283.   # REMOVE_STATE_2, ... ]], [ADD_STATE_2, PERCENT_CHANCE_SUCCESS, [REMOVE_STATE_1,
  284.   # REMOVE_STATE_2, ... ]], ... ]
  285.   # The removed states occur if the PERCENT_CHANCE_SUCCESS is successful--there is
  286.   # no separate percent chance of removal. You can omit them entirely actually.
  287.   #  [ [ADD_STATE_1, PERCENT_CHANCE_SUCCESS], [ADD_STATE_2, PERCENT_CHANCE_SUCCESS], ... ]
  288.   # If you want to just remove states and not add any, set the ADD_STATE value to 0.
  289.  
  290.  
  291.   Skill_state_rates = {    
  292.     1=>[[1, 100,[]]],
  293.     11=>[[11, 10,[12, 13]]],
  294.     12=>[[11, 20,[12, 13]]],
  295.     13=>[[11, 30,[12, 13]]],
  296.     14=>[[2, 10,[]]],
  297.     15=>[[2, 20,[]]],
  298.     16=>[[9, 30,[]]],
  299.     17=>[[12, 10,[11, 13]]],
  300.     18=>[[12, 20,[11, 13]]],
  301.     19=>[[12, 30,[11, 13]]],
  302.     21=>[[6, 20,[]]],
  303.     22=>[[6, 40,[]]],
  304.     23=>[[13, 10,[]]],
  305.     25=>[[13, 30,[]]],
  306.     33=>[[6, 20,[]]],
  307.     34=>[[4, 10,[]], [5, 10,[]], [6, 10,[]]],
  308.     38=>[[4, 10,[]]],
  309.     39=>[[4, 20,[]]],
  310.     40=>[[4, 30,[]]],
  311.     44=>[[3, 30,[]]],
  312.     45=>[[3, 40,[]]],
  313.     46=>[[3, 50,[]]],
  314.     49=>[[2, 40,[]]],
  315.     56=>[[11, 20,[12, 13]]],
  316.     57=>[[11, 40,[12, 13]]],
  317.     58=>[[1, 50,[]]],
  318.     145=>[[2, 20,[]]],
  319.     149=>[[4, 30,[]]],
  320.     150=>[[5, 30,[]]],
  321.     151=>[[6, 30,[]]],
  322.     152=>[[9, 10,[]]],
  323.     153=>[[9, 20,[]]],
  324.     154=>[[9, 30,[]]],
  325.     164=>[[9, 50,[]]],
  326.     166=>[[1, 50,[]]],
  327.     180=>[[2, 20,[]]],
  328.     188=>[[11, 10,[12, 13]]],
  329.     189=>[[11, 20,[12, 13]]],
  330.     190=>[[11, 30,[12, 13]]],
  331.     191=>[[12, 10,[11, 13]]],
  332.     192=>[[12, 20,[11, 13]]],
  333.     193=>[[12, 30,[11, 13]]],
  334.     197=>[[1, 50,[]]],
  335.     200=>[[2, 20,[]]],
  336.     203=>[[11, 10,[12, 13]]],
  337.     204=>[[11, 20,[12, 13]]],
  338.     205=>[[11, 30,[12, 13]]],
  339.     206=>[[12, 10,[11, 13]]],
  340.     207=>[[12, 20,[11, 13]]],
  341.     208=>[[12, 30,[11, 13]]],
  342.     209=>[[9, 10,[]]],
  343.     210=>[[9, 20,[]]],
  344.     211=>[[9, 30,[]]],
  345.     216=>[[9, 10,[]]],
  346.     217=>[[11, 10,[12, 13]]],
  347.     218=>[[12, 10,[11, 13]]],
  348.     220=>[[2, 20,[]]],
  349.     223=>[[9, 10,[]]],
  350.     224=>[[9, 20,[]]],
  351.     225=>[[9, 30,[]]],
  352.     226=>[[11, 10,[12, 13]]],
  353.     227=>[[11, 20,[12, 13]]],
  354.     228=>[[11, 30,[12, 13]]],
  355.     229=>[[12, 10,[11, 13]]],
  356.     230=>[[12, 20,[11, 13]]],
  357.     231=>[[12, 30,[11, 13]]],
  358.     240=>[[19, 40,[27]]],
  359.     241=>[[20, 40,[26]]],
  360.     260=>[[3, 40,[]]],
  361.     265=>[[4, 20,[]]],
  362.     266=>[[4, 40,[]]],
  363.     267=>[[4, 60,[]]],
  364.     268=>[[5, 20,[]]],
  365.     269=>[[5, 40,[]]],
  366.     270=>[[5, 60,[]]],
  367.     271=>[[6, 20,[]]],
  368.     272=>[[6, 40,[]]],
  369.     273=>[[6, 60,[]]],
  370.     277=>[[22, 50,[]]],
  371.     278=>[[1, 50,[]]],
  372.     281=>[[5, 10,[]]],
  373.     282=>[[5, 20,[]]],
  374.     283=>[[6, 10,[]]],
  375.     284=>[[6, 20,[]]],
  376.     286=>[[11, 10,[12, 13]]],
  377.     287=>[[11, 20,[12, 13]]],
  378.     288=>[[11, 30,[12, 13]]],
  379.     289=>[[12, 10,[11, 13]]],
  380.     290=>[[12, 40,[11, 13]]],
  381.     291=>[[12, 30,[11, 13]]],
  382.     292=>[[13, 10,[]]],
  383.     293=>[[13, 20,[]]],
  384.     294=>[[13, 30,[]]],
  385.     298=>[[1, 50,[]]],
  386.     299=>[[12, 50,[11, 13]]],
  387.     515=>[[12, 10,[11, 13]]],
  388.     516=>[[2, 100,[]]],
  389.     517=>[[21, 100,[24, 25]]],
  390.     518=>[[12, 30,[11, 13]]],
  391.     521=>[[9, 30,[]],[12, 30,[]]],
  392.     522=>[[11, 30,[]],[12, 30,[]]],
  393.     523=>[[12, 30,[11, 13]]],
  394.     524=>[[1, 100,[]]],
  395.     525=>[[12, 50,[11, 13]]],
  396.     526=>[[12, 50,[11, 13]]],
  397.     571=>[[2, 20,[]]],
  398.     572=>[[2, 20,[]]],
  399.     573=>[[2, 20,[]]],
  400.     574=>[[1, 50,[]]],
  401.     576=>[[9, 30,[]]],
  402.     605=>[[3, 30,[]]],
  403.     606=>[[2, 20,[]]],
  404.     615=>[[2, 20,[]]],
  405.     619=>[[3, 20,[]]],
  406.     620=>[[3, 30,[]]],
  407.     624=>[[2, 20,[]]],
  408.     647=>[[1, 50,[]]],
  409.     648=>[[1, 30,[]]],
  410.     650=>[[1, 85,[]]],
  411.     651=>[[11, 10,[12, 13]]],
  412.     652=>[[11, 20,[12, 13]]],
  413.     653=>[[11, 30,[12, 13]]],
  414.     654=>[[2, 10,[]]],
  415.     655=>[[2, 20,[]]],
  416.     656=>[[9, 30,[]]],
  417.     657=>[[12, 10,[11, 13]]],
  418.     658=>[[12, 20,[11, 13]]],
  419.     659=>[[12, 30,[11, 13]]],
  420.     661=>[[6, 20,[]]],
  421.     662=>[[6, 40,[]]],
  422.     663=>[[13, 10,[]]],
  423.     665=>[[13, 30,[]]],
  424.     673=>[[6, 20,[]]],
  425.     674=>[[4, 10,[]], [5, 10,[]], [6, 10,[]]],
  426.     678=>[[4, 10,[]]],
  427.     679=>[[4, 20,[]]],
  428.     680=>[[4, 30,[]]],
  429.     684=>[[3, 30,[]]],
  430.     685=>[[3, 40,[]]],
  431.     686=>[[3, 50,[]]],
  432.     689=>[[2, 40,[]]],
  433.     696=>[[11, 20,[12, 13]]],
  434.     697=>[[11, 40,[12, 13]]],
  435.     698=>[[1, 50,[]]],
  436.     704=>[[14, 20,[]]],
  437.     704=>[[14, 20,[]]],
  438.     712=>[[2, 30,[]]],
  439.     721=>[[12, 10,[11, 13]]],
  440.     722=>[[2, 100,[]]],
  441.     723=>[[21, 100,[24, 25]]],
  442.     724=>[[12, 30,[11, 13]]],
  443.     726=>[[1, 80,[]]],
  444.     727=>[[11, 20,[12, 13]]],
  445.     728=>[[9, 100,[]]],
  446.     729=>[[11, 10,[11, 13]]],
  447.     730=>[[11, 30,[11, 13]]],
  448.     733=>[[13, 20,[]]],
  449.     735=>[[22, 90,[28]]],
  450.     738=>[[7, 100,[]]],
  451.     739=>[[2, 50,[]]],
  452.     740=>[[6, 30,[]]],
  453.     741=>[[2, 10,[]]],
  454.     745=>[[9, 10,[]]],
  455.     746=>[[11, 10,[12, 13]]],
  456.     747=>[[12, 10,[11, 13]]],
  457.     751=>[[2, 20,[]]],
  458.     758=>[[11, 10,[12, 13]]],
  459.     759=>[[11, 20,[12, 13]]],
  460.     760=>[[11, 30,[12, 13]]],
  461.     761=>[[12, 10,[11, 13]]],
  462.     762=>[[12, 20,[11, 13]]],
  463.     763=>[[12, 30,[11, 13]]],
  464.     767=>[[1, 50,[]]],
  465.   }
  466.  
  467. end
  468.  
  469. #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
  470.  
  471. class Game_Battler
  472.  
  473. def states_plus(plus_state_set)
  474.     # 有効フラグをクリア
  475.     effective = false
  476.     # ループ (付加するステート)
  477.     for i in plus_state_set
  478.       # このステートが防御されていない場合
  479.       unless self.state_guard?(i)
  480.         # このステートがフルでなければ有効フラグをセット
  481.         effective |= self.state_full?(i) == false
  482.         # ステートが [抵抗しない] の場合
  483.         if $data_states[i].nonresistance
  484.           # ステート変化フラグをセット
  485.           @state_changed = true
  486.           # ステートを付加
  487.           add_state(i)
  488.         # このステートがフルではない場合
  489.         elsif self.state_full?(i) == false
  490.           # ステート有効度を確率に変換し、乱数と比
  491.   if self.is_a?(Game_Actor) && self.skill_learn?(STATE_RESIST_ID)
  492.     if rand(100) < [0,50,40,30,20,10,0][self.state_ranks[i]]
  493.             # ステート変化フラグをセット
  494.             @state_changed = true
  495.             # ステートを付加
  496.             add_state(i)
  497.           end
  498.           end
  499.         unless self.is_a?(Game_Actor) && self.skill_learn?(STATE_RESIST_ID)
  500.           if rand(100) < [0,100,80,60,40,20,0][self.state_ranks[i]]
  501.           @state_changed = true
  502.             # ステートを付加
  503.             add_state(i)
  504.           end
  505.           end
  506.         end
  507.       end
  508.     end
  509.     # メソッド終了
  510.     return effective
  511.   end
  512.  
  513. #==============================================================================
  514. # ** Game_Battler (part 3)
  515. #------------------------------------------------------------------------------
  516. #  This class deals with battlers. It's used as a superclass for the Game_Actor
  517. #  and Game_Enemy classes.
  518. #==============================================================================
  519.  
  520.  #--------------------------------------------------------------------------
  521.  # * Applying Normal Attack Effects
  522.  #     attacker : battler
  523.  #--------------------------------------------------------------------------
  524.  
  525. def attack_effect(attacker)
  526.     # Clear critical flag
  527.     self.critical = false
  528.     # First hit detection
  529.     hit_result = (rand(100) < attacker.hit)
  530.     # If hit occurs
  531.     if hit_result == true
  532.       # Calculate basic damge
  533.         atk = [attacker.atk - self.pdef / 2, 0].max
  534.       self.damage = atk * (attacker.str) / 10
  535.     if attacker.is_a?(Game_Actor)
  536.    if ATMA_WEAPON_IDS.include?(attacker.weapon_id)
  537.      atk = [attacker.atk - self.pdef / 2,0].max
  538.      atk2 = atk * (attacker.str) / 10
  539.     self.damage = atk2 + ((atk2*((attacker.hp*100)/attacker.maxhp))/100)
  540.     end
  541.        if VALIANT_KNIFE_IDS.include?(attacker.weapon_id)
  542.      atk = [attacker.atk - self.pdef / 2,0].max
  543.      atk2 = atk * (attacker.str) / 10
  544.      minushp = attacker.maxhp - attacker.hp
  545.     self.damage = atk2 + ((atk2*((minushp*100)/attacker.maxhp))/100)
  546.     end
  547.      if LIMITED_MOON_IDS.include?(attacker.weapon_id)
  548.      atk = [attacker.atk - self.pdef / 2,0].max
  549.      atk2 = atk * (attacker.str) / 10
  550.     self.damage = atk2 + ((atk2*((attacker.sp*100)/attacker.maxsp))/100)
  551.   end
  552.        if CONFORMER_IDS.include?(attacker.weapon_id)
  553.      atk = [attacker.atk - self.pdef / 2,0].max
  554.      atk2 = atk * (attacker.str) / 10
  555.     self.damage = atk2 + (atk2*(((attacker.level*100) / 99)/100))
  556.   end
  557.       if MASAMUNE_IDS.include?(attacker.weapon_id)
  558.      atk = [attacker.atk - self.pdef / 2,0].max
  559.      atk2 = atk * (attacker.str) / 10
  560.      minushp = self.maxhp - self.hp
  561.     self.damage = atk2 + ((atk2*((minushp*100)/self.maxhp))/100)
  562.   end
  563.         if PROJECTILE_IDS.include?(attacker.weapon_id)
  564.      atk = [attacker.atk,0].max
  565.      self.damage = atk * (attacker.str) / 10
  566.    end
  567.       if BOW_IDS.include?(attacker.weapon_id)
  568.     atk = [attacker.atk - self.pdef / 2, 0].max
  569.      self.damage = atk * (attacker.dex) / 10
  570.    end
  571.       if DAGGER_IDS.include?(attacker.weapon_id)
  572.     atk = [attacker.atk - self.pdef / 2, 0].max
  573.     if attacker.is_a?(Game_Actor) && attacker.skill_learn?(452)
  574.       self.damage = atk * 2 * (attacker.agi) / 10
  575.       else
  576.      self.damage = atk * (attacker.agi) / 10
  577.      end
  578.    end
  579.       if BLOOD_SWORD_W_IDS.include?(attacker.weapon_id)
  580.     atk = [attacker.atk - self.pdef / 2, 0].max
  581.      self.damage = atk * (attacker.str) / 10
  582.    end
  583.       if MIND_BLASTER_IDS.include?(attacker.weapon_id)
  584.     atk = [attacker.atk - ((self.pdef+self.mdef)) / 4, 0].max
  585.      self.damage = atk * (((attacker.str + attacker.int)/2)) / 10
  586.    end
  587.       if GUARD_BREAKER_IDS.include?(attacker.weapon_id)
  588.     atk = [attacker.atk - self.pdef / 2, 0].max
  589.      self.damage = atk * (attacker.str) / 10
  590.    end
  591.       if GENJI_WEAPON_IDS.include?(attacker.weapon_id)
  592.     atk = [attacker.atk - self.pdef / 2, 0].max
  593.      self.damage = atk * (attacker.str) / 10
  594.    end
  595.       if KIKU_ICHIMONJI_IDS.include?(attacker.weapon_id)
  596.     atk = [attacker.atk - self.pdef / 2, 0].max
  597.      self.damage = atk * (attacker.str) / 10
  598.    end
  599.       if ROBOT_WEAPON_IDS.include?(attacker.weapon_id)
  600.     atk = [attacker.atk - self.pdef / 2, 0].max
  601.      self.damage = atk * (((attacker.str) / 3) + ((attacker.dex) / 3) + ((attacker.agi) / 3)) / 10
  602.    end
  603.        if OTHER_WEAPONS_IDS.include?(attacker.weapon_id)
  604.     atk = [attacker.atk - self.pdef / 2, 0].max
  605.      self.damage = atk * (attacker.str) / 10
  606.    end
  607.        if attacker.is_a?(Game_Actor) && attacker.atk == 0
  608.         atk = [attacker.str - self.pdef / 2, 0].max
  609.       self.damage = atk * (attacker.str) / 10
  610.       end
  611.       if attacker.skill_learn?(400)
  612.           atk = [10 + attacker.str/1 - self.pdef / 2, 0].max
  613.       self.damage = atk * (attacker.str) / 10
  614.     end
  615.    if attacker.is_a?(Game_Enemy)
  616.       atk = [attacker.atk - self.pdef / 2, 0].max
  617.      self.damage = atk * (attacker.str) / 10
  618.    end
  619.    end
  620.       # Element correction
  621.       self.damage *= elements_correct(attacker.element_set)
  622.       self.damage /= 100
  623.       # If damage value is strictly positive
  624.       if self.damage > 0
  625.         # Critical correction
  626.       if attacker.is_a?(Game_Actor) && attacker.skill_learn?(411)
  627.         if rand(100) < 10 * attacker.dex / self.agi
  628.           self.damage *= 2
  629.           self.critical = true
  630.         end
  631.          if attacker.is_a?(Game_Actor)
  632.     if GENJI_WEAPON_IDS.include?(attacker.weapon_id)
  633.         if rand(100) < 8 * attacker.dex / self.agi
  634.           self.damage *= 2
  635.           self.critical = true
  636.         end
  637.         end
  638.       if KIKU_ICHIMONJI_IDS.include?(attacker.weapon_id)
  639.         if rand(100) < 4 * attacker.dex / self.agi
  640.           self.damage *= 4
  641.           self.critical = true
  642.         end
  643.       end
  644.         else
  645.           if rand(100) < 2 * attacker.dex / self.agi
  646.           self.damage *= 2
  647.           self.critical = true
  648.         end
  649.       end
  650.     end
  651.         # Guard correction
  652.         if self.guarding?
  653.           self.damage /= 2
  654.         end
  655.         if self.is_a?(Game_Actor) && self.guarding? && self.skill_learn?(401)
  656.           if rand(100) < 50
  657.           hp_recovery = self.maxhp/10
  658.           self.hp += hp_recovery
  659.           self.damage *= 0
  660.           else
  661.           self.damage /= 16
  662.         end
  663.       end
  664.       end
  665.       # Dispersion
  666.       if self.damage.abs > 0
  667.         amp = [self.damage.abs * 15 / 100, 1].max
  668.         self.damage += rand(amp+1) + rand(amp+1) - amp
  669.       end
  670.       # Second hit detection
  671.       eva = 2 * self.agi / attacker.dex + self.eva
  672.       hit = self.damage < 0 ? 100 : 100 - eva
  673.       hit = self.cant_evade? ? 100 : hit
  674.       hit_result = (rand(100) < hit)
  675.     end
  676.     # If hit occurs
  677.     if hit_result == true
  678.       # State Removed by Shock
  679.       remove_states_shock
  680.       # Subtract damage from HP
  681.        if attacker.is_a?(Game_Actor)
  682.       if MIND_BLASTER_IDS.include?(attacker.weapon_id)
  683.         self.sp -= self.damage
  684.         self.damage = sprintf('%+d %s', -self.damage, $data_system.words.sp)
  685.         end
  686.       if BLOOD_SWORD_W_IDS.include?(attacker.weapon_id)
  687.        healing = (self.damage*PERCENT_DRAINED)/100
  688.         self.hp -= self.damage
  689.         attacker.hp += healing
  690.       end
  691.       if ALL_WEAPONS_IDS.include?(attacker.weapon_id)
  692.         self.hp -= self.damage
  693.       end
  694.       end
  695.       if self.is_a?(Game_Actor) && self.skill_learn?(420) && self.damage > 0
  696.       sp_recovery = self.damage/10
  697.       self.sp += sp_recovery
  698.     end
  699.       if attacker.is_a?(Game_Actor) && attacker.skill_learn?(419)
  700.       sp_recovery = self.damage/10
  701.       attacker.sp += sp_recovery
  702.     end
  703.       if attacker.is_a?(Game_Actor) && attacker.skill_learn?(408) && ((attacker.hp*100)/attacker.maxhp) < 30
  704.       self.damage*= 2
  705.     end
  706.       if attacker.is_a?(Game_Actor) && attacker.skill_learn?(FOCUS_ID) && attacker.hp = attacker.maxhp
  707.       self.damage*= 2
  708.     end
  709.     if self.is_a?(Game_Actor) && self.skill_learn?(409) && ((self.hp*100)/self.maxhp) < 30
  710.       self.damage/= 8
  711.     end
  712.     if attacker.is_a?(Game_Actor) && attacker.skill_learn?(403) && self.hp > 1
  713.       attacker.hp -= attacker.hp/10
  714.       self.damage += self.damage/2
  715.       end
  716.     if attacker.is_a?(Game_Actor) && attacker.skill_learn?(410) && attacker.sp > 0
  717.       attacker.sp -= 6
  718.       self.damage += self.damage/3
  719.     end
  720.     if attacker.is_a?(Game_Actor) && attacker.skill_learn?(404)
  721.       hp_recovery = self.damage/10
  722.       attacker.hp += hp_recovery
  723.     end
  724.     if self.is_a?(Game_Actor) && self.skill_learn?(412) && self.hp > 1 && self.damage > self.hp
  725.     self.damage = self.hp - 1  
  726.     end
  727.      if self.is_a?(Game_Actor) && self.skill_learn?(402) && self.sp > 0
  728.       self.sp -= (self.damage*0.8).to_i
  729.       self.hp -= (self.damage*0.2).to_i
  730.     else
  731.       self.hp -= self.damage
  732.     end
  733.       # State change
  734.       # Check to add unique states for weapons
  735.       if attacker.is_a? Game_Actor and Wep::Weapon_state_rates[attacker.weapon_id] != nil
  736.         state_add = []
  737.         state_remove = []
  738.         # Loop over state rates and check the posibilties. Create a state list.
  739.         for state_rate in Wep::Weapon_state_rates[attacker.weapon_id]
  740.           if rand(100) < state_rate[1]
  741.             state_add.push(state_rate[0])
  742.             for s in state_rate[2]
  743.               state_remove.push(s)
  744.             end
  745.           end
  746.         end
  747.         states_plus(state_add)
  748.         states_remove(state_remove)
  749.       else
  750.       @state_changed = false
  751.       states_plus(attacker.plus_state_set)
  752.       states_minus(attacker.minus_state_set)
  753.       end
  754.     # When missing
  755.     else
  756.       # Set damage to "Miss"
  757.       self.damage = "Miss!"
  758.       # Clear critical flag
  759.       self.critical = false
  760.     end
  761.     # End Method
  762.     return true
  763.   end
  764.   #--------------------------------------------------------------------------
  765.   # * Apply Skill Effects
  766.   #     user  : the one using skills (battler)
  767.   #     skill : skill
  768.   #--------------------------------------------------------------------------
  769.   def skill_effect(user, skill)
  770.     # Clear critical flag
  771.     self.critical = false
  772.     # If skill scope is for ally with 1 or more HP, and your own HP = 0,
  773.     # or skill scope is for ally with 0, and your own HP = 1 or more
  774.     if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
  775.        ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
  776.       # End Method
  777.       return false
  778.     end
  779.     # Clear effective flag
  780.     effective = false
  781.     # Set effective flag if common ID is effective
  782.     effective |= skill.common_event_id > 0
  783.     # First hit detection
  784.     hit = skill.hit
  785.     if skill.atk_f > 0 && skill.power > 0 && skill.int_f < 1
  786.       hit *= user.hit / 100
  787.     end
  788.     hit_result = (rand(100) < hit)
  789.     # Set effective flag if skill is uncertain
  790.     effective |= hit < 100
  791.     # If hit occurs
  792.     if hit_result == true
  793.       # Calculate power
  794.       if user.is_a?(Game_Actor) && user.skill_learn?(452)
  795.       power = skill.power + (user.atk * 2) * skill.atk_f / 100
  796.       else
  797.       power = skill.power + user.atk * skill.atk_f / 100
  798.       if power > 0
  799.         power -= self.pdef * skill.pdef_f / 200
  800.         power -= self.mdef * skill.mdef_f / 200
  801.         power = [power, 0].max
  802.       end
  803.       end
  804.       # Calculate rate
  805.       rate = 20
  806.       rate += (user.str * skill.str_f / 100)
  807.       rate += (user.dex * skill.dex_f / 100)
  808.       rate += (user.agi * skill.agi_f / 100)
  809.       rate += (user.int * skill.int_f / 100)
  810.       # Calculate basic damage
  811.       self.damage = power * rate / 20
  812.       # Element correction
  813.       elements = (elements_correct(skill.element_set))
  814.       if user.is_a?(Game_Actor) && user.skill_learn?(415) && skill.int_f > 0 && self.damage > 0
  815.       elements *= 2
  816.       end
  817.       if self.is_a?(Game_Actor) && self.skill_learn?(416) && skill.mdef_f > 0 && self.damage > 0
  818.         elements /= 2
  819.       end
  820.         self.damage *= elements
  821.       self.damage /= 100
  822.       # If damage value is strictly positive
  823.       if self.damage > 0
  824.         # Critical
  825.         if rand(100) < 4 * user.dex / self.agi
  826.             self.damage *= 2
  827.             self.critical = true
  828.           end
  829.         # Guard correction
  830.         if self.guarding?
  831.           self.damage /= 2
  832.         end
  833.         if self.is_a?(Game_Actor) && self.guarding? && self.skill_learn?(401) && skill.int_f < 1 && self.damage > 0
  834.           if rand(100) < 50
  835.           hp_recovery = self.maxhp/4
  836.           self.hp += hp_recovery
  837.           self.damage *= 0
  838.           else
  839.           self.damage /= 16
  840.         end
  841.       end
  842.       if self.is_a?(Game_Actor) && self.guarding? && self.skill_learn?(401) && skill.int_f > 0 && self.damage > 0
  843.         if rand(100) < 25
  844.         self.damage *= 0
  845.         else
  846.         self.damage /= 4
  847.       end
  848.       end
  849.       if self.is_a?(Game_Actor) && self.guarding? && self.skill_learn?(ARTFUL_DODGER_ID) && self.damage > 0
  850.         if rand(100) < 4 * self.agi / self.dex
  851.         self.damage = "Miss!"
  852.       else
  853.         self.damage /= 2
  854.       end
  855.       end
  856.     end
  857.       # Dispersion
  858.       if skill.variance > 0 and self.damage.abs > 0
  859.         amp = [self.damage.abs * skill.variance / 100, 1].max
  860.         self.damage += rand(amp+1) + rand(amp+1) - amp
  861.       end
  862.       # Second hit detection
  863.       eva = self.eva
  864.       #eva = 8 * self.agi / user.dex + self.eva
  865.       hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
  866.       hit = self.cant_evade? ? 100 : hit
  867.       hit_result = (rand(100) < hit)
  868.       # Set effective flag if skill is uncertain
  869.       effective |= hit < 100
  870.     end
  871.     # If hit occurs
  872.     if hit_result == true
  873.       # If physical attack has power other than 0
  874.       if skill.power != 0 and skill.atk_f > 0
  875.         # State Removed by Shock
  876.         remove_states_shock
  877.         # Set to effective flag
  878.         effective = true
  879.       end
  880.       # Subtract damage from HP
  881.       last_hp = self.hp
  882.         if self.is_a?(Game_Actor) && self.skill_learn?(420) && self.damage > 0
  883.       sp_recovery = self.damage/10
  884.       self.sp += sp_recovery
  885.     end
  886.         if user.is_a?(Game_Actor) && user.skill_learn?(419)  && self.damage > 0 && skill.int_f < 1
  887.       sp_recovery = self.damage/10
  888.       user.sp += sp_recovery
  889.     end
  890.         if user.is_a?(Game_Actor) && user.skill_learn?(418)  && self.damage > 0 && skill.int_f > 0
  891.       sp_recovery = self.damage/10
  892.       user.sp += sp_recovery
  893.     end
  894.       if user.is_a?(Game_Actor) && user.skill_learn?(404)  && skill.pdef_f > 0
  895.       hp_recovery = self.damage/4
  896.       user.hp += hp_recovery
  897.     end
  898.       if user.is_a?(Game_Actor) && user.skill_learn?(403) && skill.int_f > 1 && skill.pdef_f > 0
  899.       user.hp -= user.maxhp/20
  900.       self.damage*=4
  901.       self.damage = self.damage.to_i
  902.     end
  903.       if user.is_a?(Game_Actor) && user.skill_learn?(406) && skill.mdef_f > 0
  904.       self.damage*=3
  905.     end
  906.       if user.is_a?(Game_Actor) && user.skill_learn?(453) && skill.atk_f > 0 && skill.element_set.include?(2)
  907.       self.damage*=3
  908.     else
  909.       self.damage*=1
  910.     end
  911.     if user.is_a?(Game_Actor) && user.skill_learn?(425) && skill.atk_f > 0 && skill.element_set.include?(20)
  912.       self.damage*=1.5
  913.       self.damage = self.damage.to_i
  914.     else
  915.       self.damage*=1
  916.     end
  917.     if user.is_a?(Game_Actor) && user.skill_learn?(426) && skill.atk_f > 0 && skill.element_set.include?(20)
  918.       self.damage*=1.8
  919.       self.damage = self.damage.to_i
  920.       elsif user.is_a?(Game_Actor) && user.skill_learn?(426) && skill.atk_f > 0 && skill.element_set.include?(21)
  921.       self.damage*=1.2
  922.       self.damage = self.damage.to_i
  923.     else
  924.       self.damage*=1
  925.     end
  926.     if user.is_a?(Game_Actor) && user.skill_learn?(427) && skill.atk_f > 0 && skill.element_set.include?(20)
  927.       self.damage*=1.8
  928.       self.damage = self.damage.to_i
  929.       elsif user.is_a?(Game_Actor) && user.skill_learn?(427) && skill.atk_f > 0 && skill.element_set.include?(22)
  930.       self.damage*=1.2
  931.       self.damage = self.damage.to_i
  932.       elsif user.is_a?(Game_Actor) && user.skill_learn?(427) && skill.atk_f > 0 && skill.element_set.include?(26)
  933.       self.damage*=1.2
  934.       self.damage = self.damage.to_i
  935.     else
  936.       self.damage*=1
  937.     end
  938.     if user.is_a?(Game_Actor) && user.skill_learn?(428) && skill.atk_f > 0 && skill.element_set.include?(20)
  939.       self.damage*=1.8
  940.       self.damage = self.damage.to_i
  941.       elsif user.is_a?(Game_Actor) && user.skill_learn?(428) && skill.atk_f > 0 && skill.element_set.include?(23)
  942.       self.damage*=1.2
  943.       self.damage = self.damage.to_i
  944.     else
  945.       self.damage*=1
  946.     end
  947.     if user.is_a?(Game_Actor) && user.skill_learn?(429) && skill.atk_f > 0 && skill.element_set.include?(21)
  948.       self.damage*=1.5
  949.       self.damage = self.damage.to_i
  950.     else
  951.       self.damage*=1
  952.     end
  953.     if user.is_a?(Game_Actor) && user.skill_learn?(430) && skill.atk_f > 0 && skill.element_set.include?(21)
  954.       self.damage*=1.8
  955.       self.damage = self.damage.to_i
  956.       elsif user.is_a?(Game_Actor) && user.skill_learn?(430) && skill.atk_f > 0 && skill.element_set.include?(20)
  957.       self.damage*=1.2
  958.       self.damage = self.damage.to_i
  959.     else
  960.       self.damage*=1
  961.     end
  962.     if user.is_a?(Game_Actor) && user.skill_learn?(431) && skill.atk_f > 0 && skill.element_set.include?(21)
  963.       self.damage*=1.8
  964.       self.damage = self.damage.to_i
  965.       elsif user.is_a?(Game_Actor) && user.skill_learn?(431) && skill.atk_f > 0 && skill.element_set.include?(22)
  966.       self.damage*=1.2
  967.       self.damage = self.damage.to_i
  968.       elsif user.is_a?(Game_Actor) && user.skill_learn?(431) && skill.atk_f > 0 && skill.element_set.include?(26)
  969.       self.damage*=1.2
  970.       self.damage = self.damage.to_i
  971.     else
  972.       self.damage*=1
  973.     end
  974.     if user.is_a?(Game_Actor) && user.skill_learn?(432) && skill.atk_f > 0 && skill.element_set.include?(21)
  975.       self.damage*=1.8
  976.       self.damage = self.damage.to_i
  977.       elsif user.is_a?(Game_Actor) && user.skill_learn?(432) && skill.atk_f > 0 && skill.element_set.include?(23)
  978.       self.damage*=1.2
  979.       self.damage = self.damage.to_i
  980.     else
  981.       self.damage*=1
  982.     end
  983.     if user.is_a?(Game_Actor) && user.skill_learn?(433) && skill.atk_f > 0 && skill.element_set.include?(22)
  984.       self.damage*=1.5
  985.       self.damage = self.damage.to_i
  986.     elsif user.is_a?(Game_Actor) && user.skill_learn?(433) && skill.atk_f > 0 && skill.element_set.include?(26)
  987.       self.damage*=1.5
  988.       self.damage = self.damage.to_i
  989.     else
  990.       self.damage*=1
  991.     end
  992.     if user.is_a?(Game_Actor) && user.skill_learn?(434) && skill.atk_f > 0 && skill.element_set.include?(22)
  993.       self.damage*=1.8
  994.       self.damage = self.damage.to_i
  995.       elsif user.is_a?(Game_Actor) && user.skill_learn?(434) && skill.atk_f > 0 && skill.element_set.include?(26)
  996.       self.damage*=1.8
  997.       self.damage = self.damage.to_i
  998.       elsif user.is_a?(Game_Actor) && user.skill_learn?(434) && skill.atk_f > 0 && skill.element_set.include?(20)
  999.       self.damage*=1.2
  1000.       self.damage = self.damage.to_i
  1001.     else
  1002.       self.damage*=1
  1003.     end
  1004.     if user.is_a?(Game_Actor) && user.skill_learn?(435) && skill.atk_f > 0 && skill.element_set.include?(22)
  1005.       self.damage*=1.8
  1006.       self.damage = self.damage.to_i
  1007.       elsif user.is_a?(Game_Actor) && user.skill_learn?(435) && skill.atk_f > 0 && skill.element_set.include?(26)
  1008.       self.damage*=1.8
  1009.       self.damage = self.damage.to_i
  1010.       elsif user.is_a?(Game_Actor) && user.skill_learn?(435) && skill.atk_f > 0 && skill.element_set.include?(21)
  1011.       self.damage*=1.2
  1012.       self.damage = self.damage.to_i
  1013.     else
  1014.       self.damage*=1
  1015.     end
  1016.     if user.is_a?(Game_Actor) && user.skill_learn?(436) && skill.atk_f > 0 && skill.element_set.include?(22)
  1017.       self.damage*=1.8
  1018.       self.damage = self.damage.to_i
  1019.       elsif user.is_a?(Game_Actor) && user.skill_learn?(436) && skill.atk_f > 0 && skill.element_set.include?(26)
  1020.       self.damage*=1.8
  1021.       self.damage = self.damage.to_i
  1022.       elsif user.is_a?(Game_Actor) && user.skill_learn?(436) && skill.atk_f > 0 && skill.element_set.include?(23)
  1023.       self.damage*=1.2
  1024.       self.damage = self.damage.to_i
  1025.     else
  1026.       self.damage*=1
  1027.     end
  1028.     if user.is_a?(Game_Actor) && user.skill_learn?(437) && skill.atk_f > 0 && skill.element_set.include?(23)
  1029.       self.damage*=1.5
  1030.       self.damage = self.damage.to_i
  1031.     else
  1032.       self.damage*=1
  1033.     end
  1034.     if user.is_a?(Game_Actor) && user.skill_learn?(438) && skill.atk_f > 0 && skill.element_set.include?(23)
  1035.       self.damage*=1.8
  1036.       self.damage = self.damage.to_i
  1037.       elsif user.is_a?(Game_Actor) && user.skill_learn?(438) && skill.atk_f > 0 && skill.element_set.include?(20)
  1038.       self.damage*=1.2
  1039.       self.damage = self.damage.to_i
  1040.     else
  1041.       self.damage*=1
  1042.     end
  1043.     if user.is_a?(Game_Actor) && user.skill_learn?(439) && skill.atk_f > 0 && skill.element_set.include?(23)
  1044.       self.damage*=1.8
  1045.       self.damage = self.damage.to_i
  1046.       elsif user.is_a?(Game_Actor) && user.skill_learn?(439) && skill.atk_f > 0 && skill.element_set.include?(21)
  1047.       self.damage*=1.2
  1048.       self.damage = self.damage.to_i
  1049.     else
  1050.       self.damage*=1
  1051.     end
  1052.     if user.is_a?(Game_Actor) && user.skill_learn?(440) && skill.atk_f > 0 && skill.element_set.include?(23)
  1053.       self.damage*=1.8
  1054.       self.damage = self.damage.to_i
  1055.       elsif user.is_a?(Game_Actor) && user.skill_learn?(440) && skill.atk_f > 0 && skill.element_set.include?(22)
  1056.       self.damage*=1.2
  1057.       self.damage = self.damage.to_i
  1058.       elsif user.is_a?(Game_Actor) && user.skill_learn?(440) && skill.atk_f > 0 && skill.element_set.include?(26)
  1059.       self.damage*=1.2
  1060.       self.damage = self.damage.to_i
  1061.     else
  1062.       self.damage*=1
  1063.     end
  1064.     if user.is_a?(Game_Actor) && user.skill_learn?(441) && skill.atk_f > 0 && skill.element_set.include?(24)
  1065.       self.damage*=1.5
  1066.       self.damage = self.damage.to_i
  1067.     else
  1068.       self.damage*=1
  1069.     end
  1070.     if user.is_a?(Game_Actor) && user.skill_learn?(442) && skill.atk_f > 0 && skill.element_set.include?(27)
  1071.       self.damage*=1.5
  1072.       self.damage = self.damage.to_i
  1073.     else
  1074.       self.damage*=1
  1075.     end
  1076.     if user.is_a?(Game_Actor) && user.skill_learn?(443) && skill.atk_f > 0 && skill.element_set.include?(25)
  1077.       self.damage*=1.5
  1078.       self.damage = self.damage.to_i
  1079.     else
  1080.       self.damage*=1
  1081.     end
  1082.         if user.is_a?(Game_Actor) && user.skill_learn?(444) && skill.atk_f > 0 && skill.element_set.include?(20)
  1083.       self.damage*=3
  1084.     else
  1085.       self.damage*=1
  1086.     end
  1087.     if user.is_a?(Game_Actor) && user.skill_learn?(445) && skill.atk_f > 0 && skill.element_set.include?(21)
  1088.       self.damage*=3
  1089.     else
  1090.       self.damage*=1
  1091.     end
  1092.     if user.is_a?(Game_Actor) && user.skill_learn?(446) && skill.atk_f > 0 && skill.element_set.include?(22)
  1093.       self.damage*=3
  1094.     elsif user.is_a?(Game_Actor) && user.skill_learn?(446) && skill.atk_f > 0 && skill.element_set.include?(26)
  1095.       self.damage*=3
  1096.     else
  1097.       self.damage*=1
  1098.     end
  1099.     if user.is_a?(Game_Actor) && user.skill_learn?(447) && skill.atk_f > 0 && skill.element_set.include?(23)
  1100.       self.damage*=3
  1101.     else
  1102.       self.damage*=1
  1103.     end
  1104.     if user.is_a?(Game_Actor) && user.skill_learn?(448) && skill.atk_f > 0 && skill.element_set.include?(24)
  1105.       self.damage*=3
  1106.     else
  1107.       self.damage*=1
  1108.     end
  1109.     if user.is_a?(Game_Actor) && user.skill_learn?(449) && skill.atk_f > 0 && skill.element_set.include?(27)
  1110.       self.damage*=3
  1111.     else
  1112.       self.damage*=1
  1113.     end
  1114.     if user.is_a?(Game_Actor) && user.skill_learn?(450) && skill.atk_f > 0 && skill.element_set.include?(25)
  1115.       self.damage*=3
  1116.     else
  1117.       self.damage*=1
  1118.     end
  1119.     if user.is_a?(Game_Actor) && user.skill_learn?(460) && skill.atk_f > 0 && skill.element_set.include?(1)
  1120.       self.damage*=1.5
  1121.       self.damage = self.damage.to_i
  1122.     else
  1123.       self.damage*=1
  1124.     end
  1125.     if user.is_a?(Game_Actor) && user.skill_learn?(461) && skill.atk_f > 0 && skill.element_set.include?(2)
  1126.       self.damage*=1.5
  1127.       self.damage = self.damage.to_i
  1128.     else
  1129.       self.damage*=1
  1130.     end
  1131.     if user.is_a?(Game_Actor) && user.skill_learn?(462) && skill.atk_f > 0 && skill.element_set.include?(3)
  1132.       self.damage*=1.5
  1133.       self.damage = self.damage.to_i
  1134.     else
  1135.       self.damage*=1
  1136.     end
  1137.     if user.is_a?(Game_Actor) && user.skill_learn?(463) && skill.atk_f > 0 && skill.element_set.include?(4)
  1138.       self.damage*=1.5
  1139.       self.damage = self.damage.to_i
  1140.     else
  1141.       self.damage*=1
  1142.     end
  1143.     if user.is_a?(Game_Actor) && user.skill_learn?(464) && skill.atk_f > 0 && skill.element_set.include?(5)
  1144.       self.damage*=1.5
  1145.       self.damage = self.damage.to_i
  1146.     else
  1147.       self.damage*=1
  1148.     end
  1149.     if user.is_a?(Game_Actor) && user.skill_learn?(465) && skill.atk_f > 0 && skill.element_set.include?(6)
  1150.       self.damage*=1.5
  1151.       self.damage = self.damage.to_i
  1152.     else
  1153.       self.damage*=1
  1154.     end
  1155.     if user.is_a?(Game_Actor) && user.skill_learn?(466) && skill.atk_f > 0 && skill.element_set.include?(7)
  1156.       self.damage*=1.5
  1157.       self.damage = self.damage.to_i
  1158.     else
  1159.       self.damage*=1
  1160.     end
  1161.     if user.is_a?(Game_Actor) && user.skill_learn?(467) && skill.atk_f > 0 && skill.element_set.include?(12)
  1162.       self.damage*=1.5
  1163.       self.damage = self.damage.to_i
  1164.     else
  1165.       self.damage*=1
  1166.     end
  1167.     if user.is_a?(Game_Actor) && user.skill_learn?(468) && skill.atk_f > 0 && skill.element_set.include?(13)
  1168.       self.damage*=1.5
  1169.       self.damage = self.damage.to_i
  1170.     else
  1171.       self.damage*=1
  1172.     end
  1173.     if user.is_a?(Game_Actor) && user.skill_learn?(469) && skill.atk_f > 0 && skill.element_set.include?(10)
  1174.       self.damage*=1.5
  1175.       self.damage = self.damage.to_i
  1176.     else
  1177.       self.damage*=1
  1178.     end
  1179.     if user.is_a?(Game_Actor) && user.skill_learn?(470) && skill.power < 0 && skill.element_set.include?(17)
  1180.       self.damage*=2
  1181.       self.damage = self.damage.to_i
  1182.     else
  1183.       self.damage*=1
  1184.     end
  1185.       if user.is_a?(Game_Actor) && user.skill_learn?(417) && skill.atk_f > 0 && skill.element_set.include?(13)
  1186.         if self.is_a?(Game_Enemy) && EVIL_IDS.include?(self.id)
  1187.       self.damage*=7
  1188.     else
  1189.       self.damage*=1
  1190.       end
  1191.     end
  1192.       if user.is_a?(Game_Actor) && user.skill_learn?(407) && skill.mdef_f > 0 && ((user.hp*100)/ user.maxhp) < 30
  1193.       self.damage*=2
  1194.     end
  1195.       if user.is_a?(Game_Actor) && user.skill_learn?(408) && skill.pdef_f > 0 && ((user.hp*100)/ user.maxhp) < 30
  1196.       self.damage*=4
  1197.     end
  1198.       if user.is_a?(Game_Actor) && user.skill_learn?(SERENITY_ID) && skill.mdef_f > 0 && user.hp = user.maxhp
  1199.       self.damage += self.damage/3
  1200.     end
  1201.       if user.is_a?(Game_Actor) && user.skill_learn?(FOCUS_ID) && skill.pdef_f > 0 && user.hp = user.maxhp
  1202.       self.damage += self.damage/3
  1203.     end
  1204.       if self.is_a?(Game_Actor) && self.skill_learn?(409) && ((self.hp*100)/self.maxhp) < 50
  1205.       self.damage/= 4
  1206.     end
  1207.       if self.is_a?(Game_Actor) && self.skill_learn?(412) && self.hp > 1 && self.damage > self.hp
  1208.     self.damage = self.hp - 1  
  1209.   end
  1210.       if self.is_a?(Game_Actor) && self.skill_learn?(413) && self.damage < 0
  1211.         self.damage *= 3
  1212.       end
  1213.     if self.is_a?(Game_Actor) && self.skill_learn?(LEARNING_ID) && BLUE_SKILLS_IDS.include?(skill.id)
  1214.     learn_skill(skill.id)
  1215.     end
  1216.       if self.is_a?(Game_Actor) && self.skill_learn?(402) && self.sp > 0 && self.damage > 0
  1217.       self.sp -= (self.damage*0.9).to_i
  1218.       self.hp -= (self.damage*0.1).to_i
  1219.       else
  1220.        self.hp -= self.damage
  1221.      end
  1222.       effective |= self.hp != last_hp
  1223.       # State change
  1224.       @state_changed = false
  1225.       if Wep::Skill_state_rates[skill.id] != nil
  1226.         state_add = []
  1227.         state_remove = []
  1228.         # Loop over state rates and check the posibiltys. Create a state list.
  1229.         for state_rate in Wep::Skill_state_rates[skill.id]
  1230.           if rand(100) < state_rate[1]
  1231.             state_add.push(state_rate[0])
  1232.             for s in state_rate[2]
  1233.               state_remove.push(s)
  1234.             end
  1235.           end
  1236.         end
  1237.         states_plus(state_add)
  1238.         states_minus(state_remove)
  1239.         #effective |= states_plus(state_add)
  1240.         #effective |= states_minus(state_remove)
  1241.       else
  1242.         states_plus(skill.plus_state_set)
  1243.         states_minus(skill.minus_state_set)
  1244.         #effective |= states_plus(skill.plus_state_set)
  1245.         #effective |= states_minus(skill.minus_state_set)
  1246.         end
  1247.       # If power is 0
  1248.       if skill.power == 0
  1249.         # Set damage to an empty string
  1250.         self.damage = ""
  1251.         # If state is unchanged
  1252.         unless @state_changed
  1253.           # Set damage to "Miss"
  1254.           self.damage = "Miss!"
  1255.         end
  1256.       end
  1257.     # If miss occurs
  1258.     else
  1259.       # Set damage to "Miss"
  1260.       self.damage = "Miss!"
  1261.     end
  1262.     # If not in battle
  1263.     unless $game_temp.in_battle
  1264.       # Set damage to nil
  1265.       self.damage = nil
  1266.     end
  1267.     # End Method
  1268.     return effective
  1269.   end
  1270.   #--------------------------------------------------------------------------
  1271.   # * Application of Item Effects
  1272.   #     item : item
  1273.   #--------------------------------------------------------------------------
  1274.   def item_effect(item)
  1275.     # Clear critical flag
  1276.     self.critical = false
  1277.     # If item scope is for ally with 1 or more HP, and your own HP = 0,
  1278.     # or item scope is for ally with 0 HP, and your own HP = 1 or more
  1279.     if ((item.scope == 3 or item.scope == 4) and self.hp == 0) or
  1280.        ((item.scope == 5 or item.scope == 6) and self.hp >= 1)
  1281.       # End Method
  1282.       return false
  1283.     end
  1284.     # Clear effective flag
  1285.     effective = false
  1286.     # Set effective flag if common ID is effective
  1287.     effective |= item.common_event_id > 0
  1288.     # Determine hit
  1289.     hit_result = (rand(100) < item.hit)
  1290.     # Set effective flag is skill is uncertain
  1291.     effective |= item.hit < 100
  1292.     # If hit occurs
  1293.     if hit_result == true
  1294.       # Calculate amount of recovery
  1295.       recover_hp = maxhp * item.recover_hp_rate / 100 + item.recover_hp
  1296.       recover_sp = maxsp * item.recover_sp_rate / 100 + item.recover_sp
  1297.       if recover_hp < 0
  1298.         recover_hp += self.pdef * item.pdef_f / 20
  1299.         recover_hp += self.mdef * item.mdef_f / 20
  1300.         recover_hp = [recover_hp, 0].min
  1301.       end
  1302.       # Element correction
  1303.       recover_hp *= elements_correct(item.element_set)
  1304.       recover_hp /= 100
  1305.       recover_sp *= elements_correct(item.element_set)
  1306.       recover_sp /= 100
  1307.       # Dispersion
  1308.       if item.variance > 0 and recover_hp.abs > 0
  1309.         amp = [recover_hp.abs * item.variance / 100, 1].max
  1310.         recover_hp += rand(amp+1) + rand(amp+1) - amp
  1311.       end
  1312.       if item.variance > 0 and recover_sp.abs > 0
  1313.         amp = [recover_sp.abs * item.variance / 100, 1].max
  1314.         recover_sp += rand(amp+1) + rand(amp+1) - amp
  1315.       end
  1316.       # If recovery code is negative
  1317.       if recover_hp < 0
  1318.         # Guard correction
  1319.         if self.guarding?
  1320.           recover_hp /= 2
  1321.         end
  1322.       end
  1323.       # Set damage value and reverse HP recovery amount
  1324.       if self.is_a?(Game_Actor) && self.skill_learn?(413) && recover_hp > 0
  1325.         recover_hp *= (1.5).to_i
  1326.         end
  1327.       self.damage = -recover_hp
  1328.       # HP and SP recovery
  1329.       last_hp = self.hp
  1330.       last_sp = self.sp
  1331.       self.hp += recover_hp
  1332.       self.sp += recover_sp
  1333.       effective |= self.hp != last_hp
  1334.       effective |= self.sp != last_sp
  1335.       # State change
  1336.       @state_changed = false
  1337.       effective |= states_plus(item.plus_state_set)
  1338.       effective |= states_minus(item.minus_state_set)
  1339.       # If parameter value increase is effective
  1340.       if item.parameter_type > 0 and item.parameter_points != 0
  1341.         # Branch by parameter
  1342.         case item.parameter_type
  1343.         when 1  # MaxHP
  1344.           @maxhp_plus += item.parameter_points
  1345.         when 2  # MaxSP
  1346.           @maxsp_plus += item.parameter_points
  1347.         when 3  # Strength
  1348.           @str_plus += item.parameter_points
  1349.         when 4  # Dexterity
  1350.           @dex_plus += item.parameter_points
  1351.         when 5  # Agility
  1352.           @agi_plus += item.parameter_points
  1353.         when 6  # Intelligence
  1354.           @int_plus += item.parameter_points
  1355.         end
  1356.         # Set to effective flag
  1357.         effective = true
  1358.       end
  1359.       # If HP recovery rate and recovery amount are 0
  1360.       if item.recover_hp_rate == 0 and item.recover_hp == 0
  1361.         # Set damage to empty string
  1362.         self.damage = ""
  1363.         # If SP recovery rate / recovery amount are 0, and parameter increase
  1364.         # value is ineffective.
  1365.         if item.recover_sp_rate == 0 and item.recover_sp == 0 and
  1366.            (item.parameter_type == 0 or item.parameter_points == 0)
  1367.           # If state is unchanged
  1368.           unless @state_changed
  1369.             # Set damage to "Miss"
  1370.             self.damage = "Miss!"
  1371.           end
  1372.         end
  1373.       end
  1374.     # If miss occurs
  1375.     else
  1376.       # Set damage to "Miss"
  1377.       self.damage = "Miss!"
  1378.     end
  1379.     # If not in battle
  1380.     unless $game_temp.in_battle
  1381.       # Set damage to nil
  1382.       self.damage = nil
  1383.     end
  1384.     # End Method
  1385.     return effective
  1386.   end
  1387.   #--------------------------------------------------------------------------
  1388.   # * Application of Slip Damage Effects
  1389.   #--------------------------------------------------------------------------
  1390.   def slip_damage_effect
  1391.     # Set damage
  1392.     self.damage = self.maxhp / 8
  1393.     # Dispersion
  1394.     if self.damage.abs > 0
  1395.       amp = [self.damage.abs * 15 / 100, 1].max
  1396.       self.damage += rand(amp+1) + rand(amp+1) - amp
  1397.     end
  1398.     # Subtract damage from HP (Prevent Slip Damage from Killing)
  1399.     if self.damage > self.hp
  1400.     self.damage = self.hp-1
  1401.     self.hp -= self.damage
  1402.     else
  1403.     self.hp -= self.damage
  1404.     # End Method
  1405.     return true
  1406.   end
  1407.   end#
  1408. end
  1409.  
  1410.   #--------------------------------------------------------------------------
  1411.   # * Calculating Element Correction
  1412.   #     element_set : element
  1413.   #--------------------------------------------------------------------------
  1414.   def elements_correct(element_set)
  1415.     # If not an element
  1416.     if element_set == []
  1417.       # Return 100
  1418.       return 100
  1419.     end
  1420.     # Return the weakest object among the elements given
  1421.     # * "element_rate" method is defined by Game_Actor and Game_Enemy classes,
  1422.     #    which inherit from this class.
  1423.     weakest = -100
  1424.     for i in element_set
  1425.       weakest = [weakest, self.element_rate(i)].max
  1426.     end
  1427.     return weakest
  1428.   end
  1429.  
  1430. class Scene_Battle
  1431.   def make_skill_action_result
  1432.     # Get skill
  1433.     @skill = $data_skills[@active_battler.current_action.skill_id]
  1434.     # If not a forcing action
  1435.     unless @active_battler.current_action.forcing
  1436.       # If unable to use due to SP running out
  1437.       unless @active_battler.skill_can_use?(@skill.id)
  1438.         # Clear battler being forced into action
  1439.         $game_temp.forcing_battler = nil
  1440.         # Shift to step 1
  1441.         @phase4_step = 1
  1442.         return
  1443.       end
  1444.     end  
  1445.     # Use up SP
  1446.     if @active_battler.is_a?(Game_Actor) && @active_battler.skill_learn?(403)
  1447.     @active_battler.hp -= (@skill.sp_cost)
  1448.   else
  1449.     @active_battler.sp -= @skill.sp_cost
  1450.     end
  1451.     # Refresh status window
  1452.     @status_window.refresh
  1453.     # Show skill name on help window
  1454.     @help_window.set_text(@skill.name, 1)
  1455.     # Set animation ID
  1456.     @animation1_id = @skill.animation1_id
  1457.     @animation2_id = @skill.animation2_id
  1458.     # Set command event ID
  1459.     @common_event_id = @skill.common_event_id
  1460.     # Set target battlers
  1461.     set_target_battlers(@skill.scope)
  1462.     # Apply skill effect
  1463.     for target in @target_battlers
  1464.       target.skill_effect(@active_battler, @skill)
  1465.     end
  1466.   end
  1467. end
  1468.  
  1469. class Game_Actor < Game_Battler
  1470.   def animation1_id
  1471.     weapon = $data_weapons[@weapon_id]
  1472.     return weapon != nil ? weapon.animation1_id : BARE_ANIMATION_SELF_ID
  1473.   end
  1474.  
  1475.   def animation2_id
  1476.     weapon = $data_weapons[@weapon_id]
  1477.     return weapon != nil ? weapon.animation2_id : BARE_ANIMATION_ID
  1478.   end
  1479.  
  1480.   def element_set
  1481.     weapon = $data_weapons[@weapon_id]
  1482.     return weapon != nil ? weapon.element_set : [18]
  1483.   end
  1484.  
  1485. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement