Advertisement
dsiver144

DSI Card Altar

Feb 24th, 2017
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.83 KB | None | 0 0
  1. #==============================================================================
  2. # DSI Card Altar
  3. # -- Last Updated: 2017.02.25
  4. # -- Author: dsiver144
  5. # -- Level: Normal
  6. # -- Requires: n/a
  7. #==============================================================================
  8. $imported = {} if $imported.nil?
  9. $imported["DSI-CARDALTAR"] = true
  10. #==============================================================================
  11. # + Updates
  12. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  13. # 2017.02.25 - Finish first version.
  14. #==============================================================================
  15. # + Instructions
  16. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  17. # To install this script, open up your script editor and copy/paste this script
  18. # to an open slot below �� Materials/�f�� but above �� Main. Remember to save.
  19. # Remember to put this script below: DSI-Bitmap.
  20. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  21. # Script Call: open_altar(altar_id) # Open an Altar with specific altar id (See below)
  22. # Item notetags:
  23. # <sealed_item> : define an sealed item
  24. # <sealed_card: x> : where x is the id of skill in Database
  25. # <sealed_altar: x> : where x is the id of altar in script configuration (See below)
  26. #==============================================================================
  27.  
  28. module DSIVER144
  29. module ALTAR_UNSEALING
  30.  
  31. ALTARS = {}
  32.  
  33. #ALTARS[alter_id] = {}
  34. #ALTARS[alter_id][:name] = "Name of Altar"
  35. #ALTARS[alter_id][:background] = "Background File Name In Picture Folder"
  36.  
  37. ALTARS[1] = {}
  38. ALTARS[1][:name] = "Altar of Unsealing Earth Mage Cards"
  39. ALTARS[1][:background] = "Background_Here" # In Picture Folder
  40.  
  41. ALTARS[2] = {}
  42. ALTARS[2][:name] = "Altar of Unsealing Ice Mage Cards"
  43. ALTARS[2][:background] = "Background_Here" # In Picture Folder
  44.  
  45. ALTARS[3] = {}
  46. ALTARS[3][:name] = "Altar of Unsealing Common And Uncommon Cards"
  47. ALTARS[3][:background] = "Background_Here" # In Picture Folder
  48.  
  49. UNSEAL_COMPLETION_TEXT = "%s has been unsealed! It has been add to your card collection!"
  50. UNSEAL_COMPLETION_TEXT2 = "There are %2d of %s have been unsealed! They have been add to your card collection!"
  51.  
  52. SCENE_BGM = ["Scene5", 100, 100]
  53.  
  54. UNSEAL_SE = ["Saint7", 100, 100]
  55. UNSEAL_COMPLETE_SE = ["PA Announcement (FF7)", 100, 100]
  56.  
  57. SEAL_ITEM_TEXT = "\\i[3424]\\c[5]Sealed Item\\c[0]\\i[3424]"
  58. SEAL_ITEM_TEXT_MARGIN = 40
  59. UNSEAL_BUTTONS_TEXT = "\\i[1609]:Unseal"
  60. OTHER_BUTTONS_TEXT = "\\i[1600]:Choose - \\i[1602]:Cancel"
  61. OTHER_BUTTONS_MARGIN = 170
  62.  
  63. #-------------------------------------------------------------------------
  64. # * Don't touch these please
  65. #-------------------------------------------------------------------------
  66. REGEX_1 = /<sealed_item>/i
  67. REGEX_2 = /<sealed_altar:\s*(\w+)>/i
  68. REGEX_3 = /<sealed_card:\s*(\w+)>/i
  69. end # ALTAR_UNSEALING
  70.  
  71. end # DSIVER144
  72.  
  73. include DSIVER144::ALTAR_UNSEALING
  74. #==============================================================================
  75. # DataManager
  76. #==============================================================================
  77. module DataManager
  78. #--------------------------------------------------------------------------
  79. # alias method: load_database
  80. #--------------------------------------------------------------------------
  81. class <<self; alias load_database_seal_item load_database; end
  82. def self.load_database
  83. load_database_seal_item
  84. load_notetags_seal_item
  85. end
  86. #--------------------------------------------------------------------------
  87. # Load Notetag Rental Weapons
  88. #--------------------------------------------------------------------------
  89. def self.load_notetags_seal_item
  90. for item in $data_items
  91. next if item.nil?
  92. item.load_notetags_seal_item
  93. end
  94. end
  95. end # DataManager
  96.  
  97. #==============================================================================
  98. # �� RPG::Weapon
  99. #==============================================================================
  100. class RPG::Item
  101. #--------------------------------------------------------------------------
  102. # public instance variables
  103. #--------------------------------------------------------------------------
  104. attr_accessor :sealed_item
  105. attr_accessor :sealed_card
  106. attr_accessor :sealed_altar
  107. #--------------------------------------------------------------------------
  108. # common cache: load_notetags_sani
  109. #--------------------------------------------------------------------------
  110. def load_notetags_seal_item
  111. @sealed_item = false
  112. @sealed_card = 0
  113. @sealed_altar = 0
  114. self.note.split(/[\r\n]+/).each do |line|
  115. if line =~ REGEX_1
  116. @sealed_item = true
  117. end
  118. if line =~ REGEX_2
  119. @sealed_altar = $1.to_i
  120. end
  121. if line =~ REGEX_3
  122. @sealed_card = $1.to_i
  123. end
  124. end
  125. end
  126. end # RPG::Item
  127.  
  128. class Scene_CardAltar < Scene_Base
  129. #-------------------------------------------------------------------------
  130. # * method: start
  131. #-------------------------------------------------------------------------
  132. def prepare(altar_id=1)
  133. @altar_id = altar_id
  134. end
  135. #-------------------------------------------------------------------------
  136. # * method: start
  137. #-------------------------------------------------------------------------
  138. def start
  139. super
  140. @altar_id ||= 1
  141. create_background_image
  142. play_card_library_bgm
  143. create_main_windows
  144. end
  145. #-------------------------------------------------------------------------
  146. # * new method: play_card_library_bgm
  147. #-------------------------------------------------------------------------
  148. def play_card_library_bgm
  149. $game_system.save_bgm
  150. RPG::BGM.new(*SCENE_BGM).play
  151. end
  152. #-------------------------------------------------------------------------
  153. # * new method: stop_card_bgm
  154. #-------------------------------------------------------------------------
  155. def stop_card_library_bgm
  156. RPG::BGM.stop
  157. $game_system.replay_bgm
  158. end
  159. #-------------------------------------------------------------------------
  160. # * new method: create_background_image
  161. #-------------------------------------------------------------------------
  162. def create_background_image
  163. @background_image = Sprite.new
  164. if ALTARS[@altar_id][:background] != false
  165. begin
  166. @background_image.bitmap = Cache.picture(ALTARS[@altar_id][:background].to_s)
  167. rescue
  168. @background_image.bitmap = SceneManager.background_bitmap
  169. @background_image.color.set(16, 16, 16, 128)
  170. end
  171. else
  172. @background_image.bitmap = SceneManager.background_bitmap
  173. @background_image.color.set(16, 16, 16, 128)
  174. end
  175. end
  176. #-------------------------------------------------------------------------
  177. # * method: create_main_windows
  178. #-------------------------------------------------------------------------
  179. def create_main_windows
  180. @altar_title = Window_Base.new(0,0,Graphics.width,48)
  181. ww = @altar_title.contents_width; hh = @altar_title.contents_height
  182. @altar_title.draw_text(0,0,ww,hh,ALTARS[@altar_id][:name],1)
  183. @altar_help_window = Window_AltarHelp.new
  184. hh = 100
  185. yy = Graphics.height-hh-@altar_help_window.height
  186. @item_window = Window_SealItem.new(0,yy,Graphics.width,hh)
  187. @item_window.category = @altar_id
  188. @item_window.select(0)
  189. @item_window.set_handler(:ok, method(:current_item))
  190. @item_window.activate
  191. @selected_window = Window_SelectedSeal.new(0,0,220,48*2 - 12)
  192. @selected_window.x = 0.5*(Graphics.width - @selected_window.width)
  193. hh = @item_window.height + @altar_help_window.height + @selected_window.height - @altar_title.height
  194. @selected_window.y = 0.5*(Graphics.height - hh)
  195. @selected_window.draw_seal_item(nil)
  196. @stack_item = []
  197. @sprite_card = Sprite.new
  198. @sprite_card.opacity = 0
  199. @sprite_card.z = 200
  200. @sprite_text = Sprite.new
  201. @sprite_text.bitmap = Bitmap.new(400,Graphics.height)
  202. @sprite_text.bitmap.turn_on_wordwraping
  203. @sprite_text.z = 200
  204. @confirm_window = Window_UnsealComfirm.new(0,0)
  205. @confirm_window.x = 0.5*(Graphics.width - @confirm_window.width)
  206. @confirm_window.y = 0.5*(Graphics.height - @confirm_window.height)
  207. @confirm_window.openness = 0
  208. @confirm_window.deactivate
  209. @confirm_window.set_handler(:ok, method(:command_confirm_ok))
  210. @confirm_window.set_handler(:cancel, method(:command_confirm_cancel))
  211. @confirm_text = Window_Base.new(0,0,@confirm_window.width,48)
  212. cw = @confirm_text.contents_width
  213. @confirm_text.draw_text(0,0,cw,24,"Are you sure?")
  214. @confirm_text.x = @confirm_window.x
  215. @confirm_text.y = @confirm_window.y - @confirm_text.height
  216. @confirm_text.openness = 0
  217. end
  218. #-------------------------------------------------------------------------
  219. # * method: seal_state
  220. #-------------------------------------------------------------------------
  221. def seal_state
  222. if @stack_item && @stack_item.size > 0
  223. @altar_help_window.refresh(true)
  224. return true
  225. else
  226. @altar_help_window.refresh(false)
  227. return false
  228. end
  229. end
  230. #-------------------------------------------------------------------------
  231. # * method: command_confirm_cancel
  232. #-------------------------------------------------------------------------
  233. def command_confirm_cancel
  234. @confirm_state = true
  235. @confirm_window.close
  236. @confirm_window.deactivate
  237. @confirm_text.close
  238. @item_window.activate
  239. end
  240. #-------------------------------------------------------------------------
  241. # * method: command_confirm_ok
  242. #-------------------------------------------------------------------------
  243. def command_confirm_ok
  244. @confirm_state = true
  245. card_skill_id = @stack_item[0].sealed_card
  246. card_skill = $data_skills[card_skill_id]
  247. @card_recieve = [card_skill.id,@stack_item.size]
  248. @stack_item.clear
  249. hide_seal_item_window
  250. show_card(card_skill)
  251. @cancel_card = true
  252. end
  253. #-------------------------------------------------------------------------
  254. # * method: return_stack_item
  255. #-------------------------------------------------------------------------
  256. def return_stack_item
  257. return unless @stack_item
  258. @stack_item.each do |item|
  259. $game_party.gain_item(item,1)
  260. end
  261. end
  262. #-------------------------------------------------------------------------
  263. # * method: refresh_windows
  264. #-------------------------------------------------------------------------
  265. def refresh_windows
  266. @selected_window.draw_seal_item(nil)
  267. @item_window.refresh
  268. seal_state
  269. end
  270. #-------------------------------------------------------------------------
  271. # * method: current_item
  272. #-------------------------------------------------------------------------
  273. def current_item
  274. if @stack_item.include?(@item_window.item)
  275. Sound.play_ok
  276. @stack_item.push(@item_window.item)
  277. $game_party.lose_item(@item_window.item,1)
  278. @item_window.refresh
  279. else
  280. return_stack_item
  281. if @item_window.item.nil?
  282. Sound.play_buzzer if @stack_item.size == 0
  283. end
  284. @stack_item.clear
  285. if @item_window.item
  286. @stack_item.push(@item_window.item)
  287. $game_party.lose_item(@item_window.item,1)
  288. Sound.play_ok
  289. else
  290. Sound.play_ok
  291. end
  292. @item_window.refresh
  293. end
  294. @selected_window.draw_seal_item(@stack_item[0],@stack_item.size)
  295. @item_window.activate
  296. seal_state
  297. end
  298. #-------------------------------------------------------------------------
  299. # * method: hide_seal_item_window
  300. #-------------------------------------------------------------------------
  301. def hide_seal_item_window
  302. @item_window.deactivate
  303. @altar_help_window.refresh(false)
  304. while @item_window.openness > 0
  305. [@selected_window,@item_window,@altar_title,@confirm_window,@confirm_text].each do |window|
  306. window.openness -= 30
  307. end
  308. Graphics.update
  309. end
  310. end
  311. #-------------------------------------------------------------------------
  312. # * method: open_seal_item_window
  313. #-------------------------------------------------------------------------
  314. def open_seal_item_window
  315. refresh_windows
  316. while @item_window.openness < 255
  317. [@selected_window,@item_window,@altar_title].each do |window|
  318. window.openness += 30
  319. end
  320. Graphics.update
  321. end
  322. @item_window.activate
  323. end
  324. #-------------------------------------------------------------------------
  325. # * method: hide_card
  326. #-------------------------------------------------------------------------
  327. def hide_card
  328. while @sprite_card.opacity > 0
  329. @sprite_card.opacity -= 6
  330. @sprite_text.opacity -= 6
  331. @sprite_card.zoom_x += 0.003
  332. @sprite_card.zoom_y += 0.003
  333. Graphics.update
  334. end
  335. @sprite_card.zoom_x = 1
  336. @sprite_card.zoom_y = 1
  337. @cancel_card = false
  338. open_seal_item_window
  339. end
  340. #-------------------------------------------------------------------------
  341. # * method: show_card
  342. #-------------------------------------------------------------------------
  343. def show_card(card)
  344. RPG::SE.new(*UNSEAL_SE).play
  345. @sprite_card.bitmap = Cache.picture("Card" + card.id.to_s)
  346. @sprite_card.ox = @sprite_card.bitmap.width / 2
  347. @sprite_card.oy = @sprite_card.bitmap.height / 2
  348. @sprite_card.x = 0.5*(Graphics.width - @sprite_card.bitmap.width) + @sprite_card.ox
  349. hh = @sprite_card.bitmap.height + @altar_help_window.height - @altar_title.height
  350. @sprite_card.y = 0.5*(Graphics.height - hh) + @sprite_card.oy - 30
  351. @sprite_text.opacity = 0
  352. @sprite_text.x = 0.5*(Graphics.width - @sprite_text.bitmap.width)
  353. @sprite_text.y = 20
  354. if @card_recieve[1] == 1
  355. name = $data_skills[@card_recieve[0]].name
  356. str = sprintf(UNSEAL_COMPLETION_TEXT,name)
  357. else
  358. name = $data_skills[@card_recieve[0]].name
  359. num = @card_recieve[1]
  360. str = sprintf(UNSEAL_COMPLETION_TEXT2,num,name)
  361. end
  362. text_y = @sprite_card.y+@sprite_card.bitmap.height
  363. @sprite_text.bitmap.clear
  364. @sprite_text.bitmap.draw_text_ex(0,300,str)
  365. while @sprite_card.opacity < 255
  366. @sprite_card.opacity += 5
  367. @sprite_card.y -= 1 if Graphics.frame_count % 3 == 0
  368. Graphics.update
  369. end
  370. 5.times { Graphics.update }
  371. RPG::SE.new(*UNSEAL_COMPLETE_SE).play
  372. while @sprite_text.opacity < 255
  373. @sprite_text.opacity += 5
  374. @sprite_text.y -= 1 if Graphics.frame_count % 3 == 0
  375. Graphics.update
  376. end
  377. recieve_cards
  378. 60.times { Graphics.update }
  379. hide_card
  380. end
  381. #-------------------------------------------------------------------------
  382. # * method: recieve_cards
  383. #-------------------------------------------------------------------------
  384. def recieve_cards
  385. return unless @card_recieve
  386. interpreter = Game_Interpreter2.new
  387. @card_recieve[1].times do
  388. interpreter.add_card_to_coll(@card_recieve[0])
  389. end
  390. end
  391. #-------------------------------------------------------------------------
  392. # * method: check_confirm
  393. #-------------------------------------------------------------------------
  394. def check_confirm
  395. @item_window.deactivate
  396. @confirm_window.open
  397. @confirm_window.activate
  398. @confirm_text.open
  399. @confirm_state = false
  400. while @confirm_window.openness < 255
  401. @confirm_window.update
  402. @confirm_text.update
  403. Graphics.update
  404. end
  405. while !@confirm_state
  406. @confirm_window.update
  407. @confirm_text.update
  408. Graphics.update
  409. Input.update
  410. end
  411. end
  412. #-------------------------------------------------------------------------
  413. # * method: update
  414. #-------------------------------------------------------------------------
  415. def update
  416. super
  417. if Input.trigger?(:B)
  418. if @cancel_card
  419. hide_card
  420. open_seal_item_window
  421. else
  422. return_scene
  423. end
  424. end
  425. if Input.trigger?(:X)
  426. if seal_state
  427. check_confirm
  428. else
  429. Sound.play_buzzer
  430. end
  431. end
  432. end
  433. #-------------------------------------------------------------------------
  434. # * method: make_command_list
  435. #-------------------------------------------------------------------------
  436. def terminate
  437. super
  438. return_stack_item
  439. if @sprite_card.bitmap
  440. @sprite_card.bitmap.dispose
  441. end
  442. @sprite_card.dispose
  443. if @sprite_text.bitmap
  444. @sprite_text.bitmap.dispose
  445. end
  446. @sprite_text.dispose
  447. stop_card_library_bgm
  448. end
  449. end # Scene_CardAltar
  450.  
  451. class Window_UnsealComfirm < Window_Command
  452. #-------------------------------------------------------------------------
  453. # * method: window_width
  454. #-------------------------------------------------------------------------
  455. def window_width
  456. return 200
  457. end
  458. #-------------------------------------------------------------------------
  459. # * method: make_command_list
  460. #-------------------------------------------------------------------------
  461. def make_command_list
  462. add_command("Yes", :ok)
  463. add_command("No", :cancel)
  464. end
  465. end # Window_UnsealComfirm
  466.  
  467. class Window_SelectedSeal < Window_Base
  468. #-------------------------------------------------------------------------
  469. # * method: draw_seal_item
  470. #-------------------------------------------------------------------------
  471. def draw_seal_item(item=nil,item_num=1)
  472. contents.clear
  473. x = 0; y = 0;cw = contents_width;ch = contents_height
  474. draw_text_ex(SEAL_ITEM_TEXT_MARGIN,0,SEAL_ITEM_TEXT)
  475. y += 26
  476. contents.fill_rect(x + 3,y,cw - 6,30,Color.new(0,0,0,200))
  477. return if item.nil?
  478. draw_icon(item.icon_index,x + 4,y + 2)
  479. draw_text(x + 29, y + 2, cw, 24, item.name + " x#{item_num}")
  480. end
  481. end # Window_SelectedSeal
  482.  
  483. class Window_AltarHelp < Window_Base
  484. #-------------------------------------------------------------------------
  485. # * method: draw_info
  486. #-------------------------------------------------------------------------
  487. def initialize
  488. super(0,Graphics.height-48,Graphics.width,48)
  489. refresh
  490. end
  491. #--------------------------------------------------------------------------
  492. # * Draw Text with Control Characters
  493. #--------------------------------------------------------------------------
  494. def draw_text_ex(x, y, text)
  495. text = convert_escape_characters(text)
  496. pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(text)}
  497. process_character(text.slice!(0, 1), text, pos) until text.empty?
  498. end
  499. #-------------------------------------------------------------------------
  500. # * new method: refresh
  501. #-------------------------------------------------------------------------
  502. def refresh(enable_altar=false)
  503. contents.clear
  504. change_color(normal_color,enable_altar)
  505. draw_text_ex(0,0,UNSEAL_BUTTONS_TEXT)
  506. change_color(normal_color,true)
  507. draw_text_ex(contents_width - OTHER_BUTTONS_MARGIN,0,OTHER_BUTTONS_TEXT)
  508. end
  509. end # Window_CardLibraryHelp
  510.  
  511. #==============================================================================
  512. # ** Window_SealItem
  513. #------------------------------------------------------------------------------
  514. # This window displays a list of seal on the item screen.
  515. #==============================================================================
  516.  
  517. class Window_SealItem < Window_ItemList
  518. #--------------------------------------------------------------------------
  519. # * Object Initialization
  520. #--------------------------------------------------------------------------
  521. def initialize(x, y, width, height)
  522. super(x, y, width, height)
  523. @category = 0
  524. end
  525. #--------------------------------------------------------------------------
  526. # * Set Category
  527. #--------------------------------------------------------------------------
  528. def category=(category)
  529. return if @category == category
  530. @category = category
  531. refresh
  532. self.oy = 0
  533. end
  534. #--------------------------------------------------------------------------
  535. # * Get Digit Count
  536. #--------------------------------------------------------------------------
  537. def col_max
  538. return 2
  539. end
  540. #--------------------------------------------------------------------------
  541. # * Get Number of Items
  542. #--------------------------------------------------------------------------
  543. def item_max
  544. @data ? @data.size : 1
  545. end
  546. #--------------------------------------------------------------------------
  547. # * Get Item
  548. #--------------------------------------------------------------------------
  549. def item
  550. @data && index >= 0 ? @data[index] : nil
  551. end
  552. #--------------------------------------------------------------------------
  553. # * Get Activation State of Selection Item
  554. #--------------------------------------------------------------------------
  555. def current_item_enabled?
  556. true
  557. end
  558. #--------------------------------------------------------------------------
  559. # * Include in Item List?
  560. #--------------------------------------------------------------------------
  561. def include?(item)
  562. return item.is_a?(RPG::Item) && item.sealed_altar == @category
  563. end
  564. #--------------------------------------------------------------------------
  565. # * Display in Enabled State?
  566. #--------------------------------------------------------------------------
  567. def enable?(item)
  568. true#$game_party.usable?(item)
  569. end
  570. #--------------------------------------------------------------------------
  571. # * Create Item List
  572. #--------------------------------------------------------------------------
  573. def make_item_list
  574. @data = $game_party.all_items.select {|item| include?(item) }
  575. @data.push(nil) if include?(nil)
  576. end
  577. #--------------------------------------------------------------------------
  578. # * Restore Previous Selection Position
  579. #--------------------------------------------------------------------------
  580. def select_last
  581. select(@data.index($game_party.last_item.object) || 0)
  582. end
  583. #--------------------------------------------------------------------------
  584. # * Draw Item
  585. #--------------------------------------------------------------------------
  586. def draw_item(index)
  587. item = @data[index]
  588. if item
  589. rect = item_rect(index)
  590. rect.width -= 4
  591. draw_item_name(item, rect.x, rect.y, enable?(item))
  592. draw_item_number(rect, item)
  593. end
  594. end
  595. #--------------------------------------------------------------------------
  596. # * Draw Number of Items
  597. #--------------------------------------------------------------------------
  598. def draw_item_number(rect, item)
  599. draw_text(rect, sprintf(":%2d", $game_party.item_number(item)), 2)
  600. end
  601. #--------------------------------------------------------------------------
  602. # * Processing When OK Button Is Pressed
  603. #--------------------------------------------------------------------------
  604. def process_ok
  605. if current_item_enabled?
  606. Input.update
  607. deactivate
  608. call_ok_handler
  609. else
  610. Sound.play_buzzer
  611. end
  612. end
  613. #--------------------------------------------------------------------------
  614. # * Update Help Text
  615. #--------------------------------------------------------------------------
  616. def update_help
  617. end
  618. #--------------------------------------------------------------------------
  619. # * Refresh
  620. #--------------------------------------------------------------------------
  621. def refresh
  622. make_item_list
  623. create_contents
  624. draw_all_items
  625. end
  626. end # Window_SealItem
  627.  
  628. class Game_Interpreter
  629. #--------------------------------------------------------------------------
  630. # * open_altar
  631. #--------------------------------------------------------------------------
  632. def open_altar(altar_id)
  633. SceneManager.call(Scene_CardAltar)
  634. SceneManager.scene.prepare(altar_id)
  635. end
  636. end # Game_Interpreter
  637.  
  638. class Game_Interpreter2 < Game_Interpreter
  639. def initialize
  640. end
  641. end # Game_Interpreter2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement