Advertisement
dsiver144

DSI Equipment Set v2.0

May 18th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 23.84 KB | None | 0 0
  1. #==============================================================================
  2. # DSI Equipment Set v2.0
  3. # -- Last Updated: 2017.05.19
  4. # -- Author: dsiver144
  5. # -- Level: Normal
  6. # -- Requires: n/a
  7. #==============================================================================
  8. $imported = {} if $imported.nil?
  9. $imported["DSI-EquipSet"] = true
  10. #==============================================================================
  11. # + Updates
  12. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  13. # 2017.05.15 - Finish first version.
  14. # 2017.05.16 - Fix some bugs.
  15. # 2017.05.18 - Fix more bugs.
  16. # 2017.05.19 - Add a way to assign enhance card graphic.
  17. #==============================================================================
  18. # + Instructions
  19. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  20. # To install this script, open up your script editor and copy/paste this script
  21. # to an open slot below �� Materials/�f�� but above �� Main. Remember to save.
  22. # + Notetags
  23. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  24. # <enhance graphic: "x"> - Where x is name of card graphic in Graphics/Picture
  25. #                          folder.
  26. # ex: <enhance graphic: "Card30-3">
  27. #==============================================================================
  28.   module DSIVER144
  29.     module Equipment_Set
  30.       Equipments = {}
  31.       #-------------------------------------------------------------------------
  32.       Equipments[1] = {}
  33.       Equipments[1][:name] = "Earth Mage Set"
  34.       Equipments[1][:items] = ["w13","a12","a36","a1","a2"] # weapon 13, armor 12, armor 36, ...
  35.       Equipments[1][:set] = []
  36.       Equipments[1][:set][1] = {}
  37.       Equipments[1][:set][1][:skill_id] = [[28,22]] # Replace 28 with 169
  38.                                                      # [[28,169],[29,169],[x,y],...] You can enhance more than 1 skill
  39.       Equipments[1][:set][1][:info] = ["DMG + 1 when using Earth Mage card."]
  40.       Equipments[1][:set][3] = {}
  41.       Equipments[1][:set][3][:skill_id] = [[28,23]] # Place 28 with 170
  42.       Equipments[1][:set][3][:info] = ["DMG + 2 when using Earth Mage card.", "20% chance to poison the chosen target when using X Skilllllll."]
  43.       Equipments[1][:set][5] = {}
  44.       Equipments[1][:set][5][:skill_id] = [[28,24]] # Place 28 with 171
  45.       Equipments[1][:set][5][:info] = ["HP barrier is projected on the caster for 1 turn.","+5 HP restored. Cure certain status effects"]
  46.      
  47.       Equipments[2] = {}
  48.       Equipments[2][:name] = "Grand Gaia Set"
  49.       Equipments[2][:items] = ["w89","a521","a523","a522","a524"] # weapon 13, armor 12, armor 36, ...
  50.       Equipments[2][:set] = []
  51.       Equipments[2][:set][1] = {}
  52.       Equipments[2][:set][1][:skill_id] = [[30,18]] # Replace 28 with 169
  53.       Equipments[2][:set][1][:info] = ["Stalagmite Dmg +1."]
  54.       Equipments[2][:set][3] = {}
  55.       Equipments[2][:set][3][:skill_id] = [[29,19]] # Place 28 with 170
  56.       Equipments[2][:set][3][:info] = ["Wood Hammer Dmg +2", "20% chance to stun enemies for 1 turn."]
  57.       Equipments[2][:set][5] = {}
  58.       Equipments[2][:set][5][:skill_id] = [[30,20]] # Place 28 with 171
  59.       Equipments[2][:set][5][:info] = ["Stalagmite Dmg +3", "30% chance to Vanquish on hit", "Healing Effect Removed", "Mp cost +2."]
  60.       #------------------------------------------------------------------------
  61.       # * new method: convert_to_equipdata
  62.       #------------------------------------------------------------------------
  63.       def self.convert_to_equipdata(string_array)
  64.         equip_data = []
  65.         string_array.each do |str|
  66.           if str =~ /w(\d+)/i
  67.             equip_data
  68.           end
  69.         end
  70.       end
  71.       #------------------------------------------------------------------------
  72.       # * new method: convert_equipdata_to_str
  73.       #------------------------------------------------------------------------
  74.       def self.convert_equipdata_to_str(equips)
  75.         str_array = []
  76.         equips.each do |equip|
  77.           if equip.is_a?(RPG::Weapon)
  78.             str_array << "w#{equip.id}"
  79.           end
  80.           if equip.is_a?(RPG::Armor)
  81.             str_array << "a#{equip.id}"
  82.           end
  83.         end
  84.         return str_array
  85.       end
  86.       #------------------------------------------------------------------------
  87.       # * new method: check_for_set
  88.       #------------------------------------------------------------------------
  89.       def self.check_for_set(equips)
  90.         $game_system.set_effect.clear
  91.         Equipments.each_pair do |set_id, equip_set|
  92.           a = convert_equipdata_to_str(equips).sort
  93.           b = equip_set[:items].sort
  94.           c = a - (a - b) # Get Same Equip
  95.           if c.size == 0
  96.             next
  97.           end
  98.           set_type = c.size
  99.           if [2,4].include?(set_type)
  100.             set_type -= 1
  101.           end
  102.           new_set = {}
  103.           new_set[:set_id] = set_id
  104.           new_set[:have_item] = c
  105.           new_set[:have_noitem] = a - b
  106.           [1,3,5].each do |set_index|
  107.             break if set_type < set_index
  108.             new_set[:skill_id] ||= []
  109.             new_set[:skill_id] << equip_set[:set][set_index][:skill_id]
  110.           end
  111.           new_set[:skill_id].uniq!
  112.           $game_system.set_effect << new_set
  113.         end
  114.       end
  115.     end # Equipment_Set
  116.   end # DSIVER144
  117.   #==============================================================================
  118.   # DataManager
  119.   #==============================================================================
  120.   module DataManager
  121.     include DSIVER144::Equipment_Set
  122.     #--------------------------------------------------------------------------
  123.     # alias method: load_database
  124.     #--------------------------------------------------------------------------
  125.     class <<self; alias load_database_equipment_set load_database; end
  126.     def self.load_database
  127.       load_database_equipment_set
  128.       init_equiment_set
  129.     end
  130.     #--------------------------------------------------------------------------
  131.     # Load Notetag Rental Weapons
  132.     #--------------------------------------------------------------------------
  133.     def self.init_equiment_set
  134.       Equipments.each_pair do |set_id, equipment_set|
  135.         equipment_set[:items].each do |str|
  136.           if str =~ /(w|a)(\d+)/i
  137.             item = $1 == "w" ? $data_weapons[$2.to_i] : $data_armors[$2.to_i]
  138.             next if item.nil?
  139.             item.eqset_id = set_id
  140.           end
  141.         end
  142.       end
  143.       $data_skills.each do |skill|
  144.         next if skill.nil?
  145.         next if skill.name == ""
  146.         skill.note.split(/[\r\n]+/i).each do |line|
  147.           if line =~ /<enhance[ _]graphic:\s*"(.+)">/i
  148.             skill.enhanced_graphic = $1
  149.           end
  150.         end
  151.       end # $data_skills
  152.     end
  153.   end # DataManager
  154.   class RPG::Skill
  155.     attr_accessor :enhanced_graphic
  156.     attr_accessor :enhanced_skill_id
  157.   end # RPG::Skill
  158.   class RPG::EquipItem
  159.     attr_accessor :eqset_id
  160.   end # RPG::EquipItem
  161.   #=============================================================================
  162.   # ** Game_System
  163.   #=============================================================================
  164.   class Game_System
  165.     attr_accessor :set_effect
  166.     alias_method(:dsi_equipment_set_effect_initialize, :initialize)
  167.     #------------------------------------------------------------------------
  168.     # * new method: initialize
  169.     #------------------------------------------------------------------------
  170.     def initialize
  171.       @set_effect = []
  172.       dsi_equipment_set_effect_initialize
  173.     end
  174.   end # Game_System
  175.   #=============================================================================
  176.   # ** Scene_Battle
  177.   #=============================================================================
  178.   class Scene_Battle
  179.     #--------------------------------------------------------------------------
  180.     # Handles card costs
  181.     #--------------------------------------------------------------------------
  182.     def invoke_card_cost(effect_name)
  183.       effect_array = PC27::CG::CARD_EFFECT[effect_name]
  184.       if effect_array[0] == :draw
  185.         card_effect_draw_cards(effect_array[1], effect_array[2], effect_array[3])
  186.         new_skill_id = @skill.id
  187.         $game_system.set_effect.each do |eq_set|
  188.           if eq_set[:skill_id]
  189.             eq_set[:skill_id].each do |replacer|
  190.               replacer.each do |pair|
  191.                 if @skill.id == pair[0]
  192.                   new_skill_id = pair[1]
  193.                 end
  194.               end
  195.             end
  196.           end
  197.         end
  198.         BattleManager.actor.input.set_skill(new_skill_id)
  199.         BattleManager.actor.last_skill.object = @skill
  200.         if !@skill.need_selection?
  201.           @skill_window.hide
  202.           next_command
  203.         elsif @skill.for_opponent?
  204.           select_enemy_selection
  205.         else
  206.           select_actor_selection
  207.         end
  208.       else
  209.         $game_message.background = 1
  210.         $game_message.position   = 1
  211.         $game_message.add(PC27::CG::CARD_EFF_TEXT)
  212.         wait_for_message
  213.         prepare_select_window(:cost, effect_array[0])
  214.         @temp_effect_data = [] unless @temp_effect_data
  215.         @temp_effect_data[0] = :cost
  216.         process_select_cards(effect_name)
  217.       end
  218.     end
  219.     #--------------------------------------------------------------------------
  220.     # On Skill Ok checks for card costs
  221.     #--------------------------------------------------------------------------
  222.     alias pc27_cardgame_scene_battle_on_skill_ok on_skill_ok
  223.     def on_skill_ok
  224.       @skill = @skill_window.item
  225.       BattleManager.actor.card_to_stack?(@skill.id)
  226.       if @skill.cost
  227.         invoke_card_cost(@skill.cost)
  228.         @skill_window.hide
  229.       else
  230.         new_skill_id = @skill.id
  231.         $game_system.set_effect.each do |eq_set|
  232.           if eq_set[:skill_id]
  233.             eq_set[:skill_id].each do |replacer|
  234.               replacer.each do |pair|
  235.                 if @skill.id == pair[0]
  236.                   new_skill_id = pair[1]
  237.                 end
  238.               end
  239.             end
  240.           end
  241.         end
  242.         BattleManager.actor.input.set_skill(new_skill_id)
  243.         BattleManager.actor.last_skill.object = @skill
  244.         if !@skill.need_selection?
  245.           @skill_window.hide
  246.           next_command
  247.         elsif @skill.for_opponent?
  248.           select_enemy_selection
  249.         else
  250.           select_actor_selection
  251.         end
  252.       end
  253.     end
  254.   end # Scene_Battle
  255.   class Game_Interpreter
  256.     #--------------------------------------------------------------------------
  257.     # * Change Equipment
  258.     #--------------------------------------------------------------------------
  259.     alias_method(:dsi_change_equipment_command_319, :command_319)
  260.     def command_319
  261.       dsi_change_equipment_command_319
  262.       actor = $game_actors[@params[0]]
  263.       DSIVER144::Equipment_Set.check_for_set(actor.equips)
  264.     end
  265.   end
  266.   #==============================================================================
  267.   # ** Scene_Equip
  268.   #==============================================================================
  269.   class Scene_Equip
  270.     include DSIVER144::Equipment_Set
  271.     alias_method(:dsi_equipment_set_info_window_creation, :start)
  272.     #--------------------------------------------------------------------------
  273.     # * Start Processing
  274.     #--------------------------------------------------------------------------
  275.     def start
  276.       dsi_equipment_set_info_window_creation # Call original method
  277.       create_equipment_set_info_window
  278.       create_equipment_set_skill_info_window
  279.     end
  280.     #--------------------------------------------------------------------------
  281.     # * Update All Windows
  282.     #--------------------------------------------------------------------------
  283.     alias_method(:dsi_equipment_set_update_all_windows, :update_all_windows)
  284.     def update_all_windows
  285.       return if @equipment_set_skill_info_window.visible
  286.       dsi_equipment_set_update_all_windows
  287.     end
  288.     #-------------------------------------------------------------------------
  289.     # * new method: easeInOutQuad
  290.     #-------------------------------------------------------------------------
  291.     def easeInOutQuad(t, b, c, d)
  292.       t = t / (d/2.0)
  293.       if (t < 1)
  294.         return c/2*t*t + b
  295.       end
  296.       t -= 1
  297.       return -c/2.0 * (t*(t-2) - 1) + b
  298.     end
  299.     #-------------------------------------------------------------------------
  300.     # * new method: update
  301.     #-------------------------------------------------------------------------
  302.     alias_method(:dsi_update_equipment_set, :update)
  303.     def update
  304.       dsi_update_equipment_set
  305.       if Input.trigger?(:X) && $game_system.set_effect.size > 0
  306.         if @item_window.active
  307.           if @item_window.item
  308.             if @item_window.item.eqset_id
  309.               @equipment_set_skill_info_window.show_skill_info(@item_window.item.eqset_id)
  310.               @equipment_set_skill_info_window.visible = !@equipment_set_skill_info_window.visible
  311.               @equipment_set_skill_info_window.update
  312.             end
  313.           end
  314.         end
  315.         if @slot_window.active
  316.           if @slot_window.item
  317.             if @slot_window.item.eqset_id
  318.               @equipment_set_skill_info_window.show_skill_info(@slot_window.item.eqset_id)
  319.               @equipment_set_skill_info_window.visible = !@equipment_set_skill_info_window.visible
  320.               @equipment_set_skill_info_window.update
  321.             end
  322.           end
  323.         end
  324.       end
  325.       if @equipment_set_skill_info_window.visible && Input.trigger?(:B)
  326.         @equipment_set_skill_info_window.visible = false
  327.         @equipment_set_skill_info_window.update
  328.       end
  329.       if @item_window.active
  330.         if @item_window_index != @item_window.index
  331.           @item_window_index = @item_window.index
  332.           if @item_window.item && @item_window.item.eqset_id
  333.             @equipment_set_info_window.show_info(@item_window.item.eqset_id)
  334.             show_set_info_window
  335.           else
  336.             hide_set_info_window
  337.           end
  338.         end
  339.       end
  340.       if @slot_window.active
  341.         if @slot_window_index != @slot_window.index
  342.           @slot_window_index = @slot_window.index
  343.           if @slot_window.item && @slot_window.item.eqset_id
  344.             @equipment_set_info_window.show_info(@slot_window.item.eqset_id)
  345.             show_set_info_window
  346.           else
  347.             hide_set_info_window
  348.           end
  349.         end
  350.       end
  351.     end
  352.     #--------------------------------------------------------------------------
  353.     # * new method: create_equipment_set_info_window
  354.     #--------------------------------------------------------------------------
  355.     def create_equipment_set_skill_info_window
  356.       ww = Graphics.width - 90
  357.       wh = Graphics.height - 100
  358.       wx = (Graphics.width - ww) * 0.5
  359.       wy = (Graphics.height - wh) * 0.5
  360.       @equipment_set_skill_info_window = Window_EquipmentSetSkillInfo.new(wx,wy,ww,wh)
  361.       @equipment_set_skill_info_window.z = 200
  362.       DSIVER144::Equipment_Set.check_for_set(@actor.equips)
  363.       @equipment_set_skill_info_window.visible = false
  364.     end
  365.     #--------------------------------------------------------------------------
  366.     # * new method: create_equipment_set_info_window
  367.     #--------------------------------------------------------------------------
  368.     def create_equipment_set_info_window
  369.       wx = @slot_window.x + @slot_window.width
  370.       wy = @command_window.y
  371.       ww = Graphics.width - @slot_window.width
  372.       wh = @slot_window.height + @command_window.height
  373.       @equipment_set_info_window = Window_EquipmentSetInfo.new(wx,wy,ww,wh)
  374.       @equipment_info_x_ori = @equipment_set_info_window.x
  375.       @equipment_set_info_window.x = Graphics.width
  376.       @slot_window_index = @slot_window.index
  377.       @item_window_index = @item_window.index
  378.       @slide_animation = false
  379.       DSIVER144::Equipment_Set.check_for_set(@actor.equips)
  380.     end
  381.     #--------------------------------------------------------------------------
  382.     # * new method: show_set_info_window
  383.     #--------------------------------------------------------------------------
  384.     def show_set_info_window
  385.       return if @equipment_set_info_window.x == @equipment_info_x_ori
  386.       duration = 30
  387.       start_time = Graphics.frame_count
  388.       start_x = @equipment_set_info_window.x#Graphics.width
  389.       change_x = @equipment_info_x_ori - start_x
  390.       while (current_time = Graphics.frame_count - start_time) < duration
  391.         @equipment_set_info_window.x = easeInOutQuad(current_time, start_x, change_x, duration)
  392.         update_basic
  393.       end
  394.     end
  395.     #--------------------------------------------------------------------------
  396.     # * new method: hide_set_info_window
  397.     #--------------------------------------------------------------------------
  398.     def hide_set_info_window
  399.       return if @equipment_set_info_window.x == Graphics.width
  400.       duration = 30
  401.       start_time = Graphics.frame_count
  402.       start_x = @equipment_set_info_window.x
  403.       change_x = Graphics.width - start_x
  404.       while (current_time = Graphics.frame_count - start_time) < duration
  405.         @equipment_set_info_window.x = easeInOutQuad(current_time, start_x, change_x, duration)
  406.         update_basic
  407.       end
  408.     end
  409.     #--------------------------------------------------------------------------
  410.     # * new method: check_for_equipment_set
  411.     #--------------------------------------------------------------------------
  412.     def check_for_equipment_set
  413.       DSIVER144::Equipment_Set.check_for_set(@actor.equips)
  414.       if $game_system.set_effect.size > 0
  415.         @equipment_set_info_window.show
  416.         if @slot_window.item
  417.           if @slot_window.item.eqset_id
  418.             @equipment_set_info_window.show_info(@slot_window.item.eqset_id)
  419.             show_set_info_window
  420.           else
  421.             hide_set_info_window
  422.           end
  423.         else
  424.           hide_set_info_window
  425.         end
  426.       else
  427.         hide_set_info_window
  428.       end
  429.     end
  430.     #--------------------------------------------------------------------------
  431.     # * new method: command_clear
  432.     #--------------------------------------------------------------------------
  433.     alias_method(:dsi_command_clear_equipment_set, :command_clear)
  434.     def command_clear
  435.       dsi_command_clear_equipment_set # Call original method
  436.       check_for_equipment_set
  437.     end
  438.     #--------------------------------------------------------------------------
  439.     # * new method: on_item_ok
  440.     #--------------------------------------------------------------------------
  441.     alias_method(:dsi_on_item_ok_equipment_set, :on_item_ok)
  442.     def on_item_ok
  443.       dsi_on_item_ok_equipment_set # Call original method
  444.       check_for_equipment_set
  445.     end
  446.   end # Scene_Equip
  447. #==============================================================================
  448. # ** Window_EquipmentSetSkillInfo
  449. #==============================================================================
  450. class Window_EquipmentSetSkillInfo < Window_Base
  451.   include DSIVER144::Equipment_Set
  452.   #-------------------------------------------------------------------------
  453.   # * new method: show_skill_info
  454.   #-------------------------------------------------------------------------
  455.   def show_skill_info(set_id)
  456.     contents.clear
  457.     contents.turn_on_wordwraping
  458.     x = 0; y = 0
  459.     change_color(text_color(20))
  460.     contents.font.size = 20
  461.     draw_text(x,y,contents_width,line_height,"Equipment Set Effect",1)
  462.     equip_set = Equipments[set_id]
  463.     check_set = $game_system.set_effect.select {|set| set[:set_id] == set_id}[0]
  464.     reset_font_settings
  465.     y += 24
  466.     info = ""
  467.     [1,3,5].each do |set_type|
  468.       change_color(text_color(11), true)
  469.       enable_color = check_set && check_set[:have_item].size >= set_type ? 11 : 10
  470.       txt_color = check_set && check_set[:have_item].size >= set_type ? 7 : 0
  471.       info << "\\c[#{enable_color}][#{set_type}] Set Effect" + "\n"
  472.       equip_set[:set][set_type][:info].each do |text|
  473.         info << "\\c[#{txt_color}] + " + text + "\n"
  474.       end
  475.     end
  476.     contents.draw_text_ex(x,y,info,false,18)
  477.   end
  478. end # Window_EquipmentSetSkillInfo
  479. #==============================================================================
  480. # ** Window_EquipmentSetInfo
  481. #==============================================================================
  482. class Window_EquipmentSetInfo < Window_Base
  483.   include DSIVER144::Equipment_Set
  484.   attr_accessor :last_set_id
  485.   #-------------------------------------------------------------------------
  486.   # * new method: show_info
  487.   #-------------------------------------------------------------------------
  488.   def show_info(set_id)
  489.     contents.clear
  490.     equip_set = Equipments[set_id]
  491.     check_set = $game_system.set_effect.select {|set| set[:set_id] == set_id}[0]
  492.     x = 0; y = 0
  493.     change_color(normal_color, true)
  494.     draw_text(x,y,contents.width,line_height,equip_set[:name],1)
  495.     y += 24;
  496.     equip_set[:items].each do |str_data|
  497.       if check_set && check_set[:have_item].include?(str_data)
  498.         change_color(text_color(11), true)
  499.       else
  500.         change_color(normal_color, false)
  501.       end
  502.       if str_data =~ /(w|a)(\d+)/i
  503.         name = $1 == "a" ? $data_armors[$2.to_i].name : $data_weapons[$2.to_i].name
  504.       end
  505.       draw_text(x,y,contents.width,line_height," - " + name)
  506.       y += 16;
  507.     end
  508.     y += 16
  509.     draw_text_ex(x,y,"Press [A] for more info.")
  510.     @last_set_id = set_id
  511.   end
  512. end # Window_EquipmentSetInfo
  513. #==============================================================================
  514. # ** Window_EquipCommand
  515. #------------------------------------------------------------------------------
  516. #  This window is for selecting commands (change equipment/ultimate equipment
  517. # etc.) on the skill screen.
  518. #==============================================================================
  519. class Window_EquipCommand < Window_HorzCommand
  520.   #--------------------------------------------------------------------------
  521.   # * Get Window Width
  522.   #--------------------------------------------------------------------------
  523.   def window_width
  524.     @window_width
  525.   end
  526.   #--------------------------------------------------------------------------
  527.   # * Get Digit Count
  528.   #--------------------------------------------------------------------------
  529.   def col_max
  530.     return 2
  531.   end
  532.   #--------------------------------------------------------------------------
  533.   # * Create Command List
  534.   #--------------------------------------------------------------------------
  535.   def make_command_list
  536.     add_command(Vocab::equip2,   :equip)
  537.     add_command(Vocab::clear,    :clear)
  538.   end
  539. end # Window_EquipCommand
  540. #===============================================================================
  541. # Window CardHelp (new)
  542. #===============================================================================
  543. class Window_CardHelp < Window_Base
  544.   #-------------------------------------------------------------------------
  545.   # * overwrite method: draw_card_illustration
  546.   #-------------------------------------------------------------------------
  547.   def draw_card_illustration(item)
  548.     contents.dispose
  549.     graphic_name = "Card" + item.id.to_s
  550.     $game_system.set_effect.each do |eq_set|
  551.       eq_set[:skill_id].each do |skill_array|
  552.         skill_array.each do |replacer|
  553.           if item.id == replacer[0]
  554.             if $data_skills[replacer[1]].enhanced_graphic
  555.               graphic_name = $data_skills[replacer[1]].enhanced_graphic
  556.             end
  557.           end
  558.         end
  559.       end
  560.     end
  561.     self.contents = Bitmap.new(190, 264)
  562.     bitmap = Cache.picture(graphic_name)
  563.     self.padding = 0
  564.     rect = Rect.new(0, 0, 190, 264)
  565.     contents.blt(0, 0, bitmap, rect, 255)
  566.     bitmap.dispose
  567.   end
  568. end
  569. #===============================================================================
  570. # * END OF FILE
  571. #===============================================================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement