Josh64

only trinkets challenge

Dec 7th, 2019
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.27 KB | None | 0 0
  1. local Mod = RegisterMod("Challenge Only Trinkets", 1)
  2. local game = Game()
  3.  
  4. local Challenges = {
  5. CHALLENGE_ONLY_TRINKETS = Isaac.GetChallengeIdByName("Trinkets Only!")
  6. }
  7. local roomContains = {
  8. Famine = false,
  9. Pestilence = false,
  10. Death = false,
  11. War = false,
  12. Conquest = false,
  13. Fallen
  14. }
  15.  
  16. local waitForBeggar = false
  17. local bumFriendTrinket
  18.  
  19. -- trinket pool
  20. function TrinketPools (item, pool, poolBackwards)
  21. if pool == nil then
  22. Isaac.ConsoleOutput("That works")
  23. end
  24. -- item = the current item
  25. -- pool = the current main pool.
  26. -- poolBackwards = the mirrored version of the current main pool. It is used to check which trinkets the player has
  27.  
  28. local maxNum = 0 -- keeps track of the max number of trinkets in the current main table/pool
  29. local curNum = 0 -- used to count down the places in the current main table/pool
  30.  
  31. local player = Isaac.GetPlayer(0)
  32. local hasEffect = player:GetEffects()
  33. local roomType = game:GetRoom():GetType()
  34.  
  35. -- get maxNum first of the main table/pool
  36. for a = 1, #pool do
  37. maxNum = maxNum + 1
  38. end
  39.  
  40. -- now go through very entity in the backwards table
  41. for b = 1, #poolBackwards do
  42. -- check if the player has a trinket or a trinket effect from the table
  43. if player:HasTrinket(poolBackwards[b])
  44. or hasEffect:HasTrinketEffect(poolBackwards[b]) then
  45. -- remove it from the main Table
  46. table.remove(pool, (maxNum - curNum))
  47. end
  48.  
  49. -- increase curNum so that the position to remove gets moved by 1 in the next cycle
  50.  
  51. curNum = curNum +1
  52. end
  53. -- spawn trinket
  54. if pool[1] ~= nil then -- the table which got check isn't empty yet
  55. local rng = player:GetCollectibleRNG(CollectibleType.COLLECTIBLE_SMELTER)
  56. local pickTrinket = rng:RandomInt(#pool)
  57.  
  58. -- morph the item to the picked trinket
  59. item:ToPickup():Morph(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_TRINKET, pool[pickTrinket], false)
  60. else
  61. -- the table is already empty. Spawn the error trinket
  62. item:ToPickup():Morph(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_TRINKET, TrinketType.TRINKET_ERROR, false)
  63.  
  64. Isaac.ConsoleOutput("That's an error for you")
  65. end
  66. end
  67.  
  68.  
  69. function Mod:OnUpdate(player)
  70. local roomType = game:GetRoom():GetType()
  71.  
  72. -- do possible trophy spawning
  73.  
  74. -- check if the player plays the challenge
  75. if game.Challenge == Challenges.CHALLENGE_ONLY_TRINKETS then
  76.  
  77. -- give the player moar options
  78. if game:GetFrameCount() == 1 then
  79. player:GetEffects():AddCollectibleEffect(414)
  80. end
  81.  
  82.  
  83. -- go through all room entities
  84. for _, entities in pairs(Isaac.GetRoomEntities()) do
  85. if entities.Type == EntityType.ENTITY_SLOT then
  86. if entities.Variant == 4 then
  87. -- Isaac.ConsoleOutput("Pay Prize")
  88. if entities:GetSprite():IsPlaying("Prize") then
  89. waitForBeggar = true
  90. Isaac.ConsoleOutput("Pay Prize")
  91. -- go through all room entites
  92. for _, entity in pairs(Isaac.GetRoomEntities()) do
  93. if entity.Type == EntityType.ENTITY_PICKUP
  94. and entity.Variant == PickupVariant.PICKUP_COLLECTIBLE then -- look for items
  95. local item = entity
  96. -- get the beggar trinket "pool"
  97. local pool = {1,24,49,50,51,52,126} -- mostly the penny trinkets
  98. local poolBackwards = {126,52,51,50,49,24,1}
  99.  
  100. -- trinket pool stuff
  101. TrinketPools(item, pool, poolBackwards)
  102.  
  103. waitForBeggar = false
  104. end
  105. end
  106. end
  107. end
  108.  
  109. elseif entities.Type == EntityType.ENTITY_PICKUP then
  110. if entities.Variant == PickupVariant.PICKUP_COLLECTIBLE then -- look for items
  111. local item = entities
  112. -- check for the SpawnerType (if possible) for stuff like beggars, slots, the player etc.
  113. if item.SpawnerType == EntityType.ENTITY_SLOT then
  114. -- check for the spawner variant (to differ between the slots)
  115. if item.SpawnerVariant == 1 then -- Slot Machine (doesn't work)
  116. -- get the slot machine trinket "pool"
  117. local pool = {121} -- while it makes no sense for one trinket [...]
  118. local poolBackwards = {121} -- [...] it allows to extend the trinket pool more easily
  119.  
  120. -- trinket pool stuff
  121. TrinketPools(item, pool, poolBackwards) -- gives the item itself and the both pools into the pool function
  122.  
  123. elseif item.SpawnerVariant == 2 then -- Blood Donation Machine
  124. -- get the blood donation machine trinket "pool"
  125. local pool = {34} -- Child's Heart
  126. local poolBackwards = {34}
  127.  
  128. -- trinket pool stuff
  129. TrinketPools(item, pool, poolBackwards)
  130.  
  131. elseif item.SpawnerVariant == 3 then -- Fortune Teller
  132. -- get the fortune teller trinket "pool"
  133. local pool = {102} -- Fragmented Card
  134. local poolBackwards = {102}
  135.  
  136. -- trinket pool stuff
  137. TrinketPools(item, pool, poolBackwards)
  138.  
  139. elseif item.SpawnerVariant == 4 then -- normal Beggar
  140. -- get the beggar trinket "pool"
  141. local pool = {1,24,49,50,51,52,126} -- mostly the penny trinkets
  142. local poolBackwards = {126,52,51,50,49,24,1}
  143.  
  144. -- trinket pool stuff
  145. TrinketPools(item, pool, poolBackwards)
  146.  
  147. elseif item.SpawnerVariant == 5 then -- Devil Beggar
  148. -- get the devil beggar trinket "pool"
  149. local pool = {61,111} -- Left Hand, Bloody Crown
  150. local poolBackwards = {111,61}
  151.  
  152. -- trinket pool stuff
  153. TrinketPools(item, pool, poolBackwards)
  154.  
  155. elseif item.SpawnerVariant == 6 then -- Shell Game
  156.  
  157. Isaac.ConsoleOutput("Shell Game")
  158. -- get the shell game trinket "pool"
  159. local pool = {2,93} -- Petrified Poop, Used Diaper
  160. local poolBackwards = {93,2}
  161.  
  162. -- trinket pool stuff
  163. TrinketPools(item, pool, poolBackwards)
  164.  
  165. elseif item.SpawnerVariant == 7 then -- Key Master (Key Beggar)
  166. -- get the key master trinket "pool"
  167. local pool = {19,36,83,124} -- key related trinkets
  168. local poolBackwards = {124,83,36,19}
  169.  
  170. -- trinket pool stuff
  171. TrinketPools(item, pool, poolBackwards)
  172.  
  173. -- nothing for SpawnerVariant 8
  174.  
  175. elseif item.SpawnerVariant == 9 then -- Bomb Beggar
  176. -- get the bomb beggar trinket "pool"
  177. local pool = {71} -- Bob's Bladder / bomb related trinkets
  178. local poolBackwards = {71}
  179.  
  180. -- trinket pool stuff
  181. TrinketPools(item, pool, poolBackwards)
  182.  
  183. -- nothing for SpawnerVariant 10
  184. -- nothing for SpawnerVariant 11
  185.  
  186. elseif item.SpawnerVariant == 12 then -- Dressing Table
  187. -- get the dressing table trinket "pool"
  188. local pool = {16,17,44}
  189. local poolBackwards = {44,17,16}
  190.  
  191. -- trinket pool stuff
  192. TrinketPools(item, pool, poolBackwards)
  193. end
  194. elseif item.SpawnerType == EntityType.ENTITY_PICKUP then
  195. if item.SpawnerVariant == PickupVariant.PICKUP_LOCKEDCHEST then -- Golden Chest
  196. -- get the golden chest trinket "pool"
  197. local pool = {29,54,57}
  198. local poolBackwards = {57,54,29}
  199.  
  200. -- trinket pool stuff
  201. TrinketPools(item, pool, poolBackwards)
  202.  
  203. elseif item.SpawnerVariant == PickupVariant.PICKUP_REDCHEST then
  204. -- get the red chest trinket "pool"
  205. local pool = {40,43,80,107,128}
  206. local poolBackwards = {128,107,80,43,40}
  207.  
  208. -- trinket pool stuff
  209. TrinketPools(item, pool, poolBackwards)
  210.  
  211. elseif item.SpawnerVariant == PickupVariant.PICKUP_ETERNALCHEST then
  212. -- get the eternal/holy chest trinket "pool"
  213. local pool = {7,18,38,85,87,92,100,110,121} -- pool is shared with the angel room
  214. local poolBackwards = {121,110,100,92,87,85,38,18,7}
  215.  
  216. -- trinket pool stuff
  217. TrinketPools(item, pool, poolBackwards)
  218. end
  219.  
  220. elseif item.SpawnerType == EntityType.ENTITY_PLAYER then
  221. -- for item spawning trinkets/effects (inlucdes Lunch Bag and Wish Bone)
  222. -- needs thought tho
  223. end
  224.  
  225. -- Look for spcific items via the CollectibleType
  226. if (item.SubType == CollectibleType.COLLECTIBLE_LUMP_OF_COAL -- spawned from the Krampus fight
  227. or item.SubType == CollectibleType.COLLECTIBLE_KRAMPUS_HEAD) then
  228. -- possible needs room type?
  229. -- get krampu's trinket pool
  230. local pool = {35,95}
  231. local poolBackwards = {95,35}
  232.  
  233. -- trinket pool stuff
  234. TrinketPools(item, pool, poolBackwards)
  235. elseif (item.SubType == CollectibleType.COLLECTIBLE_CUBE_OF_MEAT -- spawned by the horesman fight
  236. or item.SubType == CollectibleType.COLLECTIBLE_BALL_OF_BANDAGES
  237. or item.SubType == CollectibleType.COLLECTIBLE_WHITE_PONY) then -- spawned by Conquest
  238. -- get room data to see which horseman room it is
  239. if roomType == RoomType.ROOM_BOSS then -- first check the room type
  240. -- if roomData.IsFaminesRoom == true then
  241. if roomContains.Famine == true then
  242. -- morph the item into a locust. This will always happen regardless if the player has it or not
  243. item:ToPickup():Morph(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_TRINKET, TrinketType.TRINKET_LOCUST_OF_FAMINE, false)
  244. -- elseif roomData.IsPestilencesRoom == true then
  245. elseif roomContains.Pestilence == true then
  246. -- morph the item into a locust. This will always happen regardless if the player has it or not
  247. item:ToPickup():Morph(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_TRINKET, TrinketType.TRINKET_LOCUST_OF_PESTILENCE, false)
  248. -- elseif roomData.IsDeathsRoom == true then
  249. elseif roomContains.Death == true then
  250. -- morph the item into a locust. This will always happen regardless if the player has it or not
  251. item:ToPickup():Morph(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_TRINKET, TrinketType.TRINKET_LOCUST_OF_DEATH, false)
  252. -- elseif roomData.IsWarsRoom == true then
  253. elseif roomContains.War == true then
  254. -- morph the item into a locust. This will always happen regardless if the player has it or not
  255. item:ToPickup():Morph(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_TRINKET, TrinketType.TRINKET_LOCUST_OF_WRATH, false)
  256. -- elseif roomData.IsConquestsRoom == true then
  257. elseif roomContains.Conquest == true then
  258. -- morph the item into a locust. This will always happen regardless if the player has it or not
  259. item:ToPickup():Morph(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_TRINKET, TrinketType.TRINKET_LOCUST_OF_CONQUEST, false)
  260. end
  261. end
  262. elseif (item.SubType == CollectibleType.COLLECTIBLE_POLARIOD -- spawned from the Krampus fight
  263. or item.SubType == CollectibleType.COLLECTIBLE_NEGATIVE) then
  264. -- get mom's "pool"
  265. local pool = {69} -- Faded Polariod
  266. -- morph the item to the picked trinket
  267. item:ToPickup():Morph(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_TRINKET, pool, false)
  268.  
  269. -- elseif item.SubType == CollectibleType.COLLECTIBLE_SKATOLE then -- shell game
  270. -- get the shell game trinket "pool"
  271. -- local pool = {2,93} -- Petrified Poop, Used Diaper
  272. -- local poolBackwards = {93,2}
  273.  
  274. -- trinket pool stuff
  275. -- TrinketPools(item, pool, poolBackwards)
  276.  
  277. elseif item.SubType == CollectibleType.COLLECTIBLE_DOLLAR then -- slot machine
  278. -- get the slot machine trinket "pool"
  279. local pool = {121}
  280. -- morph the item to the picked trinket
  281. item:ToPickup():Morph(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_TRINKET, pool, false)
  282.  
  283. elseif item.SubType == CollectibleType.COLLECTIBLE_CRYSTAL_BALL then -- fortune teeler
  284. -- get the fortune teller trinket "pool"
  285. local pool = {102} -- Fragmented Card
  286. -- morph the item to the picked trinket
  287. item:ToPickup():Morph(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_TRINKET, pool, false)
  288.  
  289. end
  290.  
  291. -- go through the different room types
  292. if roomType == RoomType.ROOM_TREASURE
  293. or roomType == RoomType.ROOM_DUNGEON then
  294. -- get the treasure room pool
  295. local pool = {5,8,14,16,25,30,31,33,53,54,55,57,60,68,70,71,77,81,86,90,93,95,97,98,99,127}
  296. local poolBackwards = {127,99,98,97,95,93,90,86,81,77,71,70,68,60,57,55,54,53,33,31,30,25,16,14,8,5}
  297.  
  298. -- trinket pool stuff
  299. TrinketPools(item, pool, poolBackwards)
  300.  
  301.  
  302. if item:GetData().ThereIsOptions == nil then
  303. item:GetData().ThereIsOptions = true
  304. end
  305.  
  306. elseif roomType == RoomType.ROOM_SHOP
  307. or roomType == RoomType.ROOM_BLACK_MARKET then
  308. -- get the shop room pool
  309. local pool = {3,29,34,36,41,44,59,62,63,72,73,74,76,78,82,89,94,103,106,109,120,125}
  310. local poolBackwards = {125,120,109,106,103,94,89,82,78,76,74,73,72,63,62,59,44,41,36,34,29,3}
  311.  
  312. -- trinket pool stuff
  313. TrinketPools(item, pool, poolBackwards)
  314.  
  315. -- asign data to the entity to make it a shop item later down the line
  316. item:GetData().ShopTrinket = true
  317. item:GetData().NeedsNewPrize = true
  318.  
  319.  
  320. elseif roomType == RoomType.ROOM_LIBRARY then
  321. -- get the library room pool
  322. local pool = {9,10,11,12,21,23,26,27,45,48,64,65,66,96,102}
  323. local poolBackwards = {102,96,66,65,64,48,45,27,26,23,21,12,11,10,9}
  324.  
  325. -- trinket pool stuff
  326. TrinketPools(item, pool, poolBackwards)
  327.  
  328. elseif roomType == RoomType.ROOM_BOSS
  329. or roomType == RoomType.ROOM_MINIBOSS then
  330. if roomContains.Famine == true then -- the boss room contains the Fallen
  331. -- get the devil room pool
  332. local pool = {13,17,20,22,35,80,111,118}
  333. local poolBackwards = {118,111,80,35,22,20,17,13}
  334.  
  335. -- trinket pool stuff
  336. TrinketPools(item, pool, poolBackwards)
  337. else
  338. -- get the boss room pool
  339. local pool = {37,39,42,46,58,101,104,105,108,119}
  340. local poolBackwards = {119,108,105,104,101,58,46,42,39,37}
  341.  
  342. -- trinket pool stuff
  343. TrinketPools(item, pool, poolBackwards)
  344. end
  345.  
  346. elseif roomType == RoomType.ROOM_SECRET
  347. or roomType == RoomType.ROOM_SUPERSECRET then
  348. -- get the secret room pool
  349. local pool = {15,28,32,83,84,91}
  350. local poolBackwards = {91,84,83,32,28,15}
  351.  
  352. -- trinket pool stuff
  353. TrinketPools(item, pool, poolBackwards)
  354.  
  355. elseif roomType == RoomType.ROOM_DEVIL then
  356. -- get the secret room pool
  357. local pool = {13,17,20,22,35,80,111,118}
  358. local poolBackwards = {118,111,80,35,22,20,17,13}
  359.  
  360. -- trinket pool stuff
  361. TrinketPools(item, pool, poolBackwards)
  362.  
  363. elseif roomType == RoomType.ROOM_ANGEL
  364. or roomType == RoomType.ROOM_SACRIFICE then
  365. -- get the secret room pool
  366. local pool = {7,18,38,85,87,92,100,110,121}
  367. local poolBackwards = {121,110,100,92,87,85,38,18,7}
  368.  
  369. -- trinket pool stuff
  370. TrinketPools(item, pool, poolBackwards)
  371.  
  372. elseif roomType == RoomType.ROOM_CURSE then
  373. -- get the secret room pool
  374. local pool = {40,43,61,107,128}
  375. local poolBackwards = {128,107,61,43,40}
  376.  
  377. -- trinket pool stuff
  378. TrinketPools(item, pool, poolBackwards)
  379.  
  380. elseif roomType == RoomType.ROOM_ISAACS
  381. or roomType == RoomType.ROOM_BARREN then
  382. -- get the secret room pool
  383. local pool = {8,46,54,63,67,99}
  384. local poolBackwards = {99,67,63,54,46,8}
  385.  
  386. -- trinket pool stuff
  387. TrinketPools(item, pool, poolBackwards)
  388.  
  389. elseif roomType == RoomType.ROOM_CHALLENGE then
  390. -- get the secret room pool
  391. local pool = {6,40,58}
  392. local poolBackwards = {58,40,6}
  393.  
  394. -- trinket pool stuff
  395. TrinketPools(item, pool, poolBackwards)
  396.  
  397. elseif roomType == RoomType.ROOM_ERROR then
  398. -- get the secret room pool
  399. local pool = {4,6,67,75,79,92}
  400. local poolBackwards = {92,79,75,67,6,4}
  401.  
  402. -- trinket pool stuff
  403. TrinketPools(item, pool, poolBackwards)
  404.  
  405. elseif roomType == RoomType.ROOM_BOSSRUSH
  406. or roomType == RoomType.ROOM_DEFAULT then
  407. if waitForBeggar == false then
  408. -- morph the item into a random trinket. This will always happen regardless if the player has it or not
  409. item:ToPickup():Morph(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_TRINKET, TrinketType.TRINKET_NULL, false)
  410. end
  411. end
  412.  
  413. elseif entities.Variant == PickupVariant.PICKUP_TRINKET then -- look for trinkets
  414. local trinket = entities
  415. local sprite = trinket:GetSprite()
  416. local data = trinket:GetData()
  417.  
  418. -- check for There's Options trinkets
  419. if roomType == RoomType.ROOM_TREASURE then
  420. if (player.Position - trinket.Position):Length() < player.Size + trinket.Size then
  421. -- if sprite:IsPlaying("Collect") -- gets collected
  422. if data.Picked == nil then -- hasn't been picked up yet
  423. -- and data.ThereIsOptions == true then -- one of the trinkets where you have a choice
  424.  
  425. Isaac.ConsoleOutput("Yeahhh")
  426. data.Picked = true
  427.  
  428. -- look for the other There Is Options trinket
  429. for _, entitis in pairs(Isaac.GetRoomEntities()) do
  430. if entitis.Type == EntityType.ENTITY_PICKUP
  431. and entitis.Variant == PickupVariant.PICKUP_TRINKET
  432. and entitis:GetData().Picked == nil
  433. and entitis ~= trinket then -- isn't the trinket which plays the collect animation
  434. entitis:Remove() -- remove the other trinket
  435. end
  436. end
  437. end
  438. end
  439. end
  440.  
  441. -- check if the trinket is in the shop
  442. if roomType == RoomType.ROOM_SHOP then
  443. local price = 10
  444. if data.ShopTrinket == true then -- it's a shop trinket
  445. if data.NeedsNewPrize == true then -- is just spawned
  446. -- give it a new cost/price
  447. trinket:ToPickup().Price = price
  448. data.Price = price
  449.  
  450. -- doesn't need a new price anymore
  451. data.NeedsNewPrize = false
  452. end
  453. end
  454. end
  455. end
  456. end
  457. end
  458. end
  459. end
  460. Mod:AddCallback(ModCallbacks.MC_POST_PEFFECT_UPDATE, Mod.OnUpdate)
  461.  
  462. function Mod.onNewRoom(_)
  463. local player = Isaac.GetPlayer(0)
  464. local roomType = game:GetRoom():GetType()
  465.  
  466. -- check if the player plays the challenge
  467. if game.Challenge == Challenges.CHALLENGE_ONLY_TRINKETS then
  468.  
  469. if game:GetRoom().IsFirstVisit == true then
  470. if roomtype == RoomType.ROOM_TREASURE then
  471. -- check for items
  472. for _, entities in pairs(Isaac.GetRoomEntities()) do
  473. if entities.Type == EntityType.ENTITY_PICKUP then
  474. if entities.Variant == PickupVariant.PICKUP_COLLECTIBLE then -- it's an item!
  475. local item = entities
  476. -- get the treasure room pool
  477. local pool = {5,8,14,16,25,30,31,33,53,54,55,57,60,68,70,71,77,81,86,90,93,95,97,98,99,127}
  478. local poolBackwards = {127,99,98,97,95,93,90,86,81,77,71,70,68,60,57,55,54,53,33,31,30,25,16,14,8,5}
  479.  
  480. -- trinket pool stuff
  481. TrinketPools(item, pool, poolBackwards)
  482.  
  483. elseif entities.Variant == PickupVariant.PICKUP_TRINKET -- it's a trinket!
  484. and entities:GetData().ThereIsOptions == nil then
  485. entities:GetData().ThereIsOptions = true
  486. end
  487. end
  488. end
  489. elseif roomtype == RoomType.ROOM_BOSS then
  490. -- look for the boss in the boss room
  491. for _, entitis in pairs(Isaac.GetRoomEntities()) do
  492. if entitis.Type == EntityType.ENTITY_FAMINE then
  493. if roomContains.Famine == false then
  494. roomContains.Famine = true
  495. end
  496. elseif entitis.Type == EntityType.ENTITY_PESTILENCE then
  497. if roomContains.Pestilence == false then
  498. roomContains.Pestilence = true
  499. end
  500. elseif entitis.Type == EntityType.ENTITY_WAR then
  501. if entitis.Variant == 1 then -- it's Conquest
  502. if roomContains.Conquest == false then
  503. roomContains.Conquest = true
  504. end
  505. else -- it's War
  506. if roomContains.War == false then
  507. roomContains.War = true
  508. end
  509. end
  510. elseif entitis.Type == EntityType.ENTITY_DEATH then
  511. if roomContains.Death == false then
  512. roomContains.Death = true
  513. end
  514. elseif entitis.Type == EntityType.ENTITY_FALLEN then
  515. if roomContains.Fallen == false then
  516. roomContains.Fallen = true
  517. end
  518. else
  519. -- it is none of them so the variables should be reset to false
  520. roomContains.Famine = false
  521. roomContains.Pestilence = false
  522. roomContains.War = false
  523. roomContains.Death = false
  524. roomContains.Conquest = false
  525. roomContains.Fallen = false
  526. end
  527. end
  528. end
  529. end
  530. end
  531.  
  532. end
  533. Mod:AddCallback(ModCallbacks.MC_POST_NEW_ROOM, Mod.onNewRoom)
Advertisement
Add Comment
Please, Sign In to add comment