mrbubble

Blood Magic

Jan 3rd, 2012
506
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 23.65 KB | None | 0 0
  1. #==============================================================================
  2. # ++ Blood Magic ++                                             v1.1 (1/04/12)
  3. #==============================================================================
  4. # Script by:
  5. #     Mr. Bubble ( http://mrbubblewand.wordpress.com/ )
  6. # Thanks to:
  7. #     Yanfly, whose scripts and designs I heavily referenced in order
  8. #              to learn RGSS3 and make this script
  9. #     VXA Help File
  10. #--------------------------------------------------------------------------
  11. #   - What is Blood Magic? / What are Blood Mages?
  12. #
  13. # "Every mage can feel the dark lure of blood magic. Originally
  14. # learned from demons, these dark rites tap into the power of blood,
  15. # converting life into mana and giving the mage command over the minds
  16. # of others. Such power comes with a price, though; a blood mage must
  17. # sacrifice his/her own health, or the health of allies, to fuel these
  18. # abilities." - Dragon Age: Origins, Blood Mage specialization description
  19. #
  20. # Blood magic is a form of magic that uses the power inherent in blood to
  21. # fuel spellcasting. To put it simply, Blood Magic is the ability to use HP
  22. # to cast skills instead of MP. This essentially increases the battler's
  23. # effective MP.
  24. #
  25. #   - What makes Blood Magic different from giving skills a simple HP cost?
  26. #
  27. # The main reason why Blood Magic is incredibly effective in the Dragon Age
  28. # series is the option to have the MP to HP conversion ratio become
  29. # even more efficient through passive skills or equipment bonuses. However,
  30. # these pieces of gear were generally hard to come by.
  31. #
  32. # Blood Magic MP to HP conversions are done from a 1:x MP to HP ratio
  33. # where x is the total blood magic bonus value of the caster. This means that
  34. # the higher the bonus, the more "effective MP" the battler potentially has.
  35. #
  36. # For example, if the caster's Blood Magic MP to HP ratio is 3:1 and the
  37. # caster has 30 health, the battler's "effective MP" pool becomes 90.
  38. #
  39. #   - Does this mean battlers can just heal themselves for infinite HP?
  40. #
  41. # Not necessarily. In the Dragon Age series, Blood Magic is a sustained
  42. # state that can be freely activated and deactivated by the user. When
  43. # activated, the user gains a significant penalty to conventional healing.
  44. # In Dragon Age: Origins, the penalty is 90% reduced healing. In
  45. # Dragon Age II, the user cannot be healed at all except through
  46. # very specific means. VX Ace already has built-in options to
  47. # change recovery effect rates.
  48. #
  49. # Keep in mind that in the Dragon Age series, the maximum Health and Mana
  50. # values for player characters were relatively small, never exceeding three
  51. # digits each. Spell costs were also relatively high. Using the default Blood
  52. # Magic settings in this script with the default VX Ace database
  53. # values/settings is not recommended.
  54. #
  55. # Many of the Blood Magic mechanics provided in this script go beyond what
  56. # was allowed in the Dragon Age series. It is up to developers to choose how
  57. # close they wish to stick to the source material.
  58. #
  59. # How balanced Blood Magic can be in a game is left up to the developer.
  60. #--------------------------------------------------------------------------
  61. # ++ Changelog ++
  62. #--------------------------------------------------------------------------
  63. # v1.1 : Bugfix update. (1/04/2012)
  64. # v1.0 : Initial release. (1/03/2012)
  65. #--------------------------------------------------------------------------
  66. # ++ Installation ++
  67. #--------------------------------------------------------------------------
  68. # Install this script in the Materials section in your project's
  69. # script editor.
  70. #--------------------------------------------------------------------------
  71. # ++ Blood Magic Notetags ++
  72. #--------------------------------------------------------------------------
  73. # The following Notetags are for Actors, Classes, Weapons, Armors, Enemies,
  74. # and States:
  75. #
  76. # <blood magic>
  77. #   Activates Blood Magic for the given Actor, Class, or Enemy. If the Blood
  78. #   Magic tag is applied to a piece of equipment, it will activate Blood Magic
  79. #   when it is equipped. If the Blood Magic tag is applied to a State, it
  80. #   will activate Blood Magic when the battler is inflicted by it.
  81. #
  82. #   Be very cautious with what you add this tag to especially Actors and
  83. #   Classes since they will have no way to deactivate innate Blood Magic.
  84. #
  85. # <blood magic bonus: +n>
  86. # <blood magic bonus: -n>
  87. #   Provides a bonus to the battler's Blood Magic Ratio for MP to HP
  88. #   conversions. n can be floating point values (ex. 1.3, 0.5, etc.).
  89. #--------------------------------------------------------------------------
  90. # The following Notetags are for Skills and Items only:
  91. #
  92. # <blood magic: required>
  93. #   Forces the skill or item to only be usable when the battler has
  94. #   Blood Magic activated.
  95. #
  96. # <blood magic: ignore cost>
  97. #   Allows the MP skill to ignore whenever Blood Magic is activated,
  98. #   allowing the skill to stick to its original MP cost. Tag has no
  99. #   effect on items.
  100. #
  101. # <blood magic: ignore penalty>
  102. #   Allows the skill or item to ignore the Blood Magic healing penalty
  103. #   on the target. Use with discretion.
  104. #--------------------------------------------------------------------------
  105. # ++ Blood Magic Formula ++
  106. #--------------------------------------------------------------------------
  107. # This is a simplified internal formula used to calculate Blood Magic
  108. # costs.
  109. #
  110. #   hp_cost = (mp_cost * BASE_MP_MULTIPLIER) / blood_magic_bonuses
  111. #
  112. # Floating point value results are always rounded up.
  113. #--------------------------------------------------------------------------
  114. # ++ Compatibility ++
  115. #--------------------------------------------------------------------------
  116. # This script does not overwrite any default VXA methods. All default
  117. # methods modified in this script are aliased.
  118. #
  119. # This script has built-in compatibility with the following scripts:
  120. #     - Yanfly Engine Ace - Skill Cost Manager
  121. #
  122. # Requests for compatibility with other scripts are welcome.
  123. #--------------------------------------------------------------------------
  124. # ++ Terms and Conditions ++
  125. #--------------------------------------------------------------------------
  126. # Please do not repost this script elsewhere without permission. Newest
  127. # versions of this script can be found at http://mrbubblewand.wordpress.com/
  128. #==============================================================================
  129.  
  130. $imported = {} if $imported.nil?
  131. $imported["BubsBloodMagic"] = true
  132.  
  133. #==========================================================================
  134. # ++ START OF USER CUSTOMIZATION MODULE ++
  135. #==========================================================================
  136. module Bubs
  137.   #==========================================================================
  138.   # ++ Blood Magic Settings
  139.   #==========================================================================
  140.   module BloodMagic
  141.  
  142.   #--------------------------------------------------------------------------
  143.   # Global Base Blood Magic Ratio
  144.   #--------------------------------------------------------------------------
  145.   # This value sets the global base conversion ratio for MP to HP.
  146.   BASE_BMR = 1.0
  147.  
  148.   #--------------------------------------------------------------------------
  149.   # Blood Magic Ratio Bonus
  150.   #--------------------------------------------------------------------------
  151.   # These values adds a set Blood Magic Ratio bonus to actors and enemies.
  152.   ACTOR_BMR_BONUS = 0.0       # BMR Bonus for all actors
  153.   ENEMY_BMR_BONUS = 0.0       # BMR Bonus for all enemies
  154.  
  155.   #--------------------------------------------------------------------------
  156.   # Minimum Blood Magic Ratio
  157.   #--------------------------------------------------------------------------
  158.   # This value sets the minimum threshold for MP to HP conversions
  159.   MIN_BMR = 1.0
  160.  
  161.   #--------------------------------------------------------------------------
  162.   # Use Maximum Blood Magic Ratio
  163.   #--------------------------------------------------------------------------
  164.   # true  : Use MAX_BMR as the maximum MP to HP ratio
  165.   # false : Unlimited MP to HP ratio
  166.   USE_MAX_BMR = false
  167.   #--------------------------------------------------------------------------
  168.   # Maximum Blood Magic Ratio
  169.   #--------------------------------------------------------------------------
  170.   # This value sets a maximum ratio limit for MP to HP blood magic conversion
  171.   MAX_BMR = 10.0
  172.  
  173.   #--------------------------------------------------------------------------
  174.   # Blood Magic Healing Penalty
  175.   #--------------------------------------------------------------------------
  176.   # Actors and Enemies with Blood Magic activated can receive a penalty to
  177.   # their Recovery Effect Rate where 100.0 is normal healing rate (100%)
  178.   # and 0.0 is no healing rate (0%).
  179.   #
  180.   # Keep in mind that VX Ace already has a feature which can reduce overall
  181.   # healing taken by the battler. This penalty stacks with those effects.
  182.   BM_HEAL_PENALTY = 0.0
  183.  
  184.   #--------------------------------------------------------------------------
  185.   # Base MP Multiplier for Blood Magic
  186.   #--------------------------------------------------------------------------
  187.   # This value sets an arbitrary multiplier to base MP costs when calculating
  188.   # the HP cost through Blood Magic. This will not affect the actual base
  189.   # MP cost or the battler's MP cost rate (mcr). Results are rounded up.
  190.   #
  191.   # For example, if the multiplier is x2.0 and a skill costs 4 MP, then the
  192.   # HP cost through Blood Magic will be as though the spell originally
  193.   # costs 8 MP.
  194.   #
  195.   # Leave this value at 1.0 for unmodified base MP calculations.
  196.   MP_COST_MULTIPLIER = 1.0
  197.  
  198.   #--------------------------------------------------------------------------
  199.   # Blood Magic General/SCM Settings
  200.   #--------------------------------------------------------------------------
  201.   # Some settings only apply when YEA - Skill Cost Manager is installed.
  202.   BM_HP_COST_COLOR = 10         # Color used from "Window" skin.
  203.   BM_HP_COST_SIZE   = 20        # Font size used for Blood Magic HP costs.
  204.   BM_HP_COST_SUFFIX = "%sHP"    # Suffix used for Blood Magic HP costs.
  205.   BM_HP_COST_ICON   = 0         # Icon used for BM HP costs. Set 0 to disable.
  206.  
  207.   end # module BloodMagic
  208. end # module Bubs
  209.  
  210. #==========================================================================
  211. # ++ END OF USER CUSTOMIZATION MODULE ++
  212. #==========================================================================
  213.  
  214.  
  215.  
  216. #==========================================================================
  217. # ++ Bubs::Regexp
  218. #==========================================================================
  219. module Bubs
  220.   module Regexp
  221.     module BaseItem
  222.       BLOOD_MAGIC_ACTIVE = /<(?:BLOOD_MAGIC|blood magic)>/i
  223.       BLOOD_MAGIC_BONUS =
  224.             /<(?:BLOOD_MAGIC_BONUS|blood magic bonus):\s*([-+]?\d+\.?\d*)>/i
  225.     end # module BaseItem
  226.    
  227.     module UsableItem
  228.       BLOOD_MAGIC_REQUIRED = /<(?:BLOOD_MAGIC|blood magic):\s*require[d]?>/i
  229.       BLOOD_MAGIC_IGNORE_COST =
  230.             /<(?:BLOOD_MAGIC|blood magic):\s*ignore cost[s]?>/i
  231.       BLOOD_MAGIC_IGNORE_PENALTY =
  232.             /<(?:BLOOD_MAGIC|blood magic):\s*ignore penalty>/i
  233.     end # module UsableItem
  234.   end # module Regexp
  235. end # module Bubs
  236.  
  237.  
  238. #==========================================================================
  239. # ++ DataManager
  240. #==========================================================================
  241. module DataManager
  242.  
  243.   #--------------------------------------------------------------------------
  244.   # alias : load_database
  245.   #--------------------------------------------------------------------------
  246.   class << self; alias load_database_blood_magic load_database; end
  247.   def self.load_database
  248.     load_database_blood_magic # alias
  249.     load_notetags_blood_magic
  250.   end
  251.  
  252.   #--------------------------------------------------------------------------
  253.   # new method : load_notetags_blood_magic
  254.   #--------------------------------------------------------------------------
  255.   def self.load_notetags_blood_magic
  256.     groups = [$data_actors, $data_classes, $data_skills, $data_items,
  257.       $data_weapons, $data_armors, $data_enemies, $data_states]
  258.     for group in groups
  259.       for obj in group
  260.         next if obj.nil?
  261.         obj.load_notetags_blood_magic
  262.       end
  263.     end
  264.   end
  265.  
  266. end # module DataManager
  267.  
  268.  
  269. #==========================================================================
  270. # ++ Icon
  271. #==========================================================================
  272. module Icon
  273.   #--------------------------------------------------------------------------
  274.   # new method : self.blood_magic_hp_cost
  275.   #--------------------------------------------------------------------------
  276.   def self.blood_magic_hp_cost; return Bubs::BloodMagic::BM_HP_COST_ICON; end
  277. end # module Icon
  278.  
  279.  
  280. #==========================================================================
  281. # ++ Window_Base
  282. #==========================================================================
  283. class Window_Base < Window
  284.   #--------------------------------------------------------------------------
  285.   # new method : cost_colours
  286.   #--------------------------------------------------------------------------
  287.   def blood_magic_hp_cost_color; text_color(Bubs::BloodMagic::BM_HP_COST_COLOR); end;
  288. end # class Window_Base
  289.  
  290.  
  291. #==========================================================================
  292. # ++ RPG::BaseItem
  293. #==========================================================================
  294. class RPG::BaseItem
  295.   #--------------------------------------------------------------------------
  296.   # public instance variables
  297.   #--------------------------------------------------------------------------
  298.   attr_accessor :blood_magic_active
  299.   attr_accessor :blood_magic_bonus
  300.  
  301.   #--------------------------------------------------------------------------
  302.   # common cache : load_notetags_blood_magic
  303.   #--------------------------------------------------------------------------
  304.   def load_notetags_blood_magic
  305.     @blood_magic_active = false
  306.     @blood_magic_bonus = 0.0
  307.    
  308.     self.note.split(/[\r\n]+/).each { |line|
  309.       case line
  310.  
  311.       when Bubs::Regexp::BaseItem::BLOOD_MAGIC_ACTIVE
  312.         @blood_magic_active = true
  313.       when Bubs::Regexp::BaseItem::BLOOD_MAGIC_BONUS
  314.         @blood_magic_bonus = $1.to_f
  315.       end
  316.     } # self.note.split
  317.   end # def
  318. end # RPG::BaseItem
  319.  
  320.  
  321. #==========================================================================
  322. # ++ RPG::UsableItem
  323. #==========================================================================
  324. class RPG::UsableItem < RPG::BaseItem
  325.   #--------------------------------------------------------------------------
  326.   # public instance variables
  327.   #--------------------------------------------------------------------------
  328.   attr_accessor :blood_magic_required
  329.   attr_accessor :blood_magic_ignore_cost
  330.   attr_accessor :blood_magic_ignore_penalty
  331.  
  332.   #--------------------------------------------------------------------------
  333.   # common cache : load_notetags_blood_magic
  334.   #--------------------------------------------------------------------------
  335.   def load_notetags_blood_magic
  336.     @blood_magic_required = false
  337.     @blood_magic_ignore_cost = false
  338.     @blood_magic_ignore_penalty = false
  339.  
  340.     self.note.split(/[\r\n]+/).each { |line|
  341.       case line
  342.  
  343.       when Bubs::Regexp::UsableItem::BLOOD_MAGIC_REQUIRED
  344.         @blood_magic_required = true
  345.       when Bubs::Regexp::UsableItem::BLOOD_MAGIC_IGNORE_COST
  346.         @blood_magic_ignore_cost = true
  347.       when Bubs::Regexp::UsableItem::BLOOD_MAGIC_IGNORE_PENALTY
  348.         @blood_magic_ignore_penalty = true
  349.       end
  350.     } # self.note.split
  351.    
  352.   end # def
  353. end
  354.  
  355.  
  356. #==========================================================================
  357. # ++ Game_BattlerBase
  358. #==========================================================================
  359. class Game_BattlerBase
  360.   #--------------------------------------------------------------------------
  361.   # alias : skill_cost_payable?
  362.   #--------------------------------------------------------------------------
  363.   alias skill_cost_payable_blood_magic skill_cost_payable?
  364.   def skill_cost_payable?(skill)
  365.     if blood_magic_activated?
  366.       return false if self.hp <= skill_blood_magic_hp_cost(skill)
  367.     end
  368.     return skill_cost_payable_blood_magic(skill) # alias
  369.   end
  370.  
  371.   #--------------------------------------------------------------------------
  372.   # alias : skill_conditions_met?
  373.   #--------------------------------------------------------------------------
  374.   alias skill_conditions_met_blood_magic skill_conditions_met?
  375.   def skill_conditions_met?(skill)
  376.     return false unless blood_magic_conditions_met?(skill)
  377.     return skill_conditions_met_blood_magic(skill) # alias
  378.   end
  379.    
  380.   #--------------------------------------------------------------------------
  381.   # alias : item_conditions_met?
  382.   #--------------------------------------------------------------------------
  383.   alias item_conditions_met_blood_magic item_conditions_met?
  384.   def item_conditions_met?(item)
  385.     return false unless blood_magic_conditions_met?(item)
  386.         return item_conditions_met_blood_magic(item) # alias
  387.   end
  388.  
  389.   #--------------------------------------------------------------------------
  390.   # new method : blood_magic_conditions_met?
  391.   #--------------------------------------------------------------------------
  392.   def blood_magic_conditions_met?(item)
  393.     return false if item.blood_magic_required && !blood_magic_activated?
  394.     return true
  395.   end
  396.  
  397.   #--------------------------------------------------------------------------
  398.   # alias : pay_skill_cost
  399.   #--------------------------------------------------------------------------
  400.   alias pay_skill_cost_blood_magic pay_skill_cost
  401.   def pay_skill_cost(skill)
  402.     pay_skill_cost_blood_magic(skill) # alias
  403.     self.hp -= skill_blood_magic_hp_cost(skill)
  404.   end # def
  405.  
  406.   #--------------------------------------------------------------------------
  407.   # alias : skill_mp_cost
  408.   #--------------------------------------------------------------------------
  409.   alias skill_mp_cost_blood_magic skill_mp_cost
  410.   def skill_mp_cost(skill)
  411.     if !skill.blood_magic_ignore_cost && blood_magic_activated?
  412.       return 0
  413.     else
  414.       skill_mp_cost_blood_magic(skill) # alias
  415.     end
  416.   end # def
  417.  
  418.   #--------------------------------------------------------------------------
  419.   # new method : bmr        # Blood Magic Ratio
  420.   #--------------------------------------------------------------------------
  421.   def bmr
  422.     n = Bubs::BloodMagic::BASE_BMR
  423.     if actor?
  424.       n += Bubs::BloodMagic::ACTOR_BMR_BONUS
  425.       n += self.actor.blood_magic_bonus
  426.       n += self.class.blood_magic_bonus
  427.       for equip in equips
  428.         next if equip.nil?
  429.         n += equip.blood_magic_bonus
  430.       end
  431.     else
  432.       n += Bubs::BloodMagic::ENEMY_BMR_BONUS
  433.       n += self.enemy.blood_magic_bonus
  434.     end
  435.     for state in states
  436.       next if state.nil?
  437.       n += state.blood_magic_bonus
  438.     end
  439.     # determine minimum blood ratio
  440.     n = [n, Bubs::BloodMagic::MIN_BMR].max
  441.     # determine maximum blood ratio cap
  442.     n = [n, Bubs::BloodMagic::MAX_BMR].min if Bubs::BloodMagic::USE_MAX_BMR
  443.     return n
  444.   end # def bmr
  445.  
  446.   #--------------------------------------------------------------------------
  447.   # new method : blood_magic_activated?
  448.   #--------------------------------------------------------------------------
  449.   def blood_magic_activated?
  450.     if actor?
  451.       return true if self.actor.blood_magic_active
  452.       return true if self.class.blood_magic_active
  453.       for equip in equips
  454.         next if equip.nil?
  455.         return true if equip.blood_magic_active
  456.       end
  457.     else
  458.       return true if self.enemy.blood_magic_active
  459.     end
  460.     for state in states
  461.       next if state.nil?
  462.       return true if state.blood_magic_active
  463.     end
  464.     return false
  465.   end # def blood_magic_activated?
  466.  
  467.   #--------------------------------------------------------------------------
  468.   # new method : skill_blood_magic_hp_cost
  469.   #--------------------------------------------------------------------------
  470.   # Determines the MP to HP cost conversion
  471.   def skill_blood_magic_hp_cost(skill)
  472.     return 0 if skill.blood_magic_ignore_cost
  473.    
  474.     # default mp cost
  475.     n = (skill.mp_cost * mcr).to_i
  476.    
  477.     if $imported["YEA-SkillCostManager"]
  478.       n += skill.mp_cost_percent * mmp * mcr
  479.       n = [n.to_i, skill.mp_cost_max].min unless skill.mp_cost_max.nil?
  480.       n = [n.to_i, skill.mp_cost_min].max unless skill.mp_cost_min.nil?
  481.     end
  482.    
  483.     n = (n * Bubs::BloodMagic::MP_COST_MULTIPLIER).ceil
  484.     n = (n / bmr).ceil
  485.     n = [n, 0].max
  486.     return n
  487.   end # def skill_blood_magic_hp_cost(skill)
  488.  
  489. end # class Game_BattlerBase
  490.  
  491.  
  492. #==========================================================================
  493. # ++ Game_Battler
  494. #==========================================================================
  495. class Game_Battler < Game_BattlerBase
  496.   #--------------------------------------------------------------------------
  497.   # alias : make_damage
  498.   #--------------------------------------------------------------------------
  499.   alias make_damage_value_blood_magic make_damage_value
  500.   def make_damage_value(user, item)
  501.     make_damage_value_blood_magic(user, item) # alias
  502.    
  503.     apply_blood_magic_penalty(item)
  504.   end
  505.  
  506.   #--------------------------------------------------------------------------
  507.   # alias : apply_blood_magic_penalty
  508.   #--------------------------------------------------------------------------
  509.   def apply_blood_magic_penalty(item)
  510.         if item.damage.recover? && self.blood_magic_activated?
  511.             unless item.blood_magic_ignore_penalty    
  512.                 penalty = Bubs::BloodMagic::BM_HEAL_PENALTY * 0.01
  513.                 value = @result.hp_damage * penalty
  514.                 @result.make_damage(value.to_i, item)
  515.             end
  516.         end
  517.   end
  518.  
  519. end
  520.  
  521.  
  522. #==========================================================================
  523. # ++ Window_SkillList
  524. #==========================================================================
  525. class Window_SkillList < Window_Selectable
  526.   #--------------------------------------------------------------------------
  527.   # alias : draw_skill_cost
  528.   #--------------------------------------------------------------------------
  529.   alias draw_skill_cost_blood_magic draw_skill_cost
  530.   def draw_skill_cost(rect, skill)
  531.    
  532.     if @actor.blood_magic_activated? &&
  533.           @actor.skill_blood_magic_hp_cost(skill) > 0
  534.      
  535.       if $imported["YEA-SkillCostManager"]
  536.         draw_blood_magic_hp_skill_cost(rect, skill)
  537.       else
  538.         change_color(blood_magic_hp_cost_color, enable?(skill))
  539.         draw_text(rect, @actor.skill_blood_magic_hp_cost(skill), 2)
  540.       end # $imported
  541.    
  542.     end # end if
  543.    
  544.     draw_skill_cost_blood_magic(rect, skill) # alias
  545.   end # def draw_skill_cost
  546.  
  547.   #--------------------------------------------------------------------------
  548.   # new method : draw_blood_magic_hp_skill_cost
  549.   #--------------------------------------------------------------------------
  550.   # Used only when YEA - Skill Cost Manager is installed
  551.   def draw_blood_magic_hp_skill_cost(rect, skill)
  552.     return unless @actor.skill_blood_magic_hp_cost(skill) > 0
  553.     change_color(blood_magic_hp_cost_color, enable?(skill))
  554.     #---
  555.     icon = Icon.blood_magic_hp_cost
  556.     if icon > 0
  557.       draw_icon(icon, rect.x + rect.width-24, rect.y, enable?(skill))
  558.       rect.width -= 24
  559.     end
  560.     #---
  561.     contents.font.size = Bubs::BloodMagic::BM_HP_COST_SIZE
  562.     cost = @actor.skill_blood_magic_hp_cost(skill)
  563.     text = sprintf(Bubs::BloodMagic::BM_HP_COST_SUFFIX, cost.group)
  564.     draw_text(rect, text, 2)
  565.     cx = text_size(text).width + 4
  566.     rect.width -= cx
  567.     reset_font_settings
  568.   end # def draw_blood_magic_hp_skill_cost
  569.  
  570. end # class Window_SkillList
Advertisement
Add Comment
Please, Sign In to add comment