Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.75 KB | None | 0 0
  1. package nl.bartpelle.veteres.content.minigames.raids
  2.  
  3. import nl.bartpelle.veteres.content.discord.DiscordBot
  4. import nl.bartpelle.veteres.content.mechanics.ServerAnnouncements
  5. import nl.bartpelle.veteres.model.entity.Player
  6. import nl.bartpelle.veteres.model.item.Item
  7. import nl.bartpelle.veteres.model.item.ItemContainer
  8. import java.math.BigDecimal
  9. import java.math.RoundingMode
  10. import java.security.SecureRandom
  11. import java.util.*
  12.  
  13. val UNIQUE = 0.2
  14. val UNCOMMON = 25.0
  15. val COMMON = 75.0
  16. val RARE = 0.4
  17. val VERY_RARE = 0.5
  18. val ALWAYS = 100.0
  19.  
  20. enum class RaidsRewards constructor(itemId: Int, var minimum_amount: Int, var maximum_amount: Int, var chance: Double) {
  21. OLMLET_PET(20851, 1, 1, VERY_RARE),
  22. TWISTED_BOW(20997, 1, 1, UNIQUE),
  23. TWISTED_BUCKLER(21000, 1, 1, UNIQUE),
  24. ELDER_MAUL(21003, 1, 1, RARE),
  25. DRAGON_HUNTER_CROSSBOW(21012, 1, 1, UNIQUE),
  26. DRAGON_CLAWS(13652, 1, 1, RARE),
  27. DINHS_BULWARK(21015, 1, 1, RARE),
  28. ANCESTRAL_HAT(21018, 1, 1, UNIQUE),
  29. ANCESTRAL_ROBE_TOP(21021, 1, 1, UNIQUE),
  30. ANCESTRAL_ROBE_BOTTOM(21024, 1, 1, UNIQUE),
  31. DRAGON_HARPOON(21028, 1, 1, RARE),
  32. DEXTEROUS_PRAYER_SCROLL(21034, 1, 1, RARE),
  33. KODAI_INSIGNIA(21043, 1, 1, RARE),
  34. GRIMY_TOADFLAX(3050, 15, 150, UNCOMMON),
  35. GRIMY_IRIT_LEAF(210, 10, 120, UNCOMMON),
  36. GRIMY_AVANTOE(212, 5, 110, COMMON),
  37. GRIMY_KWUARM(214, 10, 100, COMMON),
  38. GRIMY_SNAPDRAGON(3052, 8, 90, UNCOMMON),
  39. GRIMY_CADANTINE(216, 12, 90, UNCOMMON),
  40. GRIMY_LANTADYME(2486, 18, 80, UNCOMMON),
  41. GRIMY_DWARF_WEED(218, 20, 80, UNCOMMON),
  42. GRIMY_TORSTOL(220, 5, 70, UNCOMMON),
  43. TORSTOL_SEED(5304, 7, 21, UNCOMMON),
  44. DWARF_WEED_SEED(5303, 12, 32, UNCOMMON),
  45. LANTADYME_SEED(5302, 16, 38, UNCOMMON),
  46. CADANTINE_SEED(5301, 20, 42, COMMON),
  47. SNAPDRAGON_SEED(5300, 24, 48, COMMON),
  48. DRAGON_DART_TIP(11232, 25, 250, UNCOMMON),
  49. COAL(454, 100, 600, COMMON),
  50. MITHRIL_ORE(448, 25, 400, COMMON),
  51. ADAMANT_ORE(450, 9, 430, UNCOMMON),
  52. RUNITE_ORE(452, 3, 90, UNCOMMON),
  53. UNCUT_RUBY(1620, 100, 425, COMMON),
  54. SOUL_RUNE(566, 1000, 4000, COMMON),
  55. DEATH_RUNE(560, 1000, 4000, COMMON),
  56. UNCUT_DIAMOND(1618, 50, 250, UNCOMMON),
  57. //ANCIENT_TABLET(21046, 1, 1, COMMON),
  58. TEAK_PLANK(8781, 300, 1000, UNCOMMON),
  59. MAHOGANY_PLANKS(8783, 100, 400, UNCOMMON);
  60.  
  61. var itemId: Int = 0
  62.  
  63. init {
  64. this.itemId = if (maximum_amount > 1) itemId else itemId
  65. }
  66.  
  67. companion object {
  68.  
  69. fun forItem(itemId: Int): RaidsRewards? {
  70. for (reward in RaidsRewards.values()) {
  71. if (reward.itemId == itemId) {
  72. return reward
  73. }
  74. }
  75. return null
  76. }
  77.  
  78. fun getRewards(player: Player, party: RaidParty): ItemContainer {
  79. val rewards = ItemContainer(player.world(), 36, ItemContainer.Type.REGULAR)
  80. var damage = 0
  81. if (party.groupPoints().containsKey(player.id())) {
  82. damage = party.groupPoints()[player.id() as Int]!!
  83. }
  84. val applicableRewards = ArrayList<RaidsRewards>()
  85. for (reward in RaidsRewards.values()) {
  86. val randomChance = player.world().random(2000)
  87. val randomChance2 = player.world().random(2000)
  88. val randomChance3 = player.world().random(2000)
  89. val randomChance4 = player.world().random(2000)
  90. val randomChance5 = player.world().random(2000)
  91. val randomChance6 = player.world().random(2000)
  92. val randomChance7 = player.world().random(2000)
  93. val randomChance8 = player.world().random(2000)
  94. val randomChance9 = player.world().random(2000)
  95. val randomChance10 = player.world().random(2000)
  96. val chance = if (damage > 3500 && randomChance > 1997) VERY_RARE
  97. else if (damage > 3500 && randomChance3 > 1997) UNIQUE
  98. else if (damage > 3500 && randomChance2 > 1996) RARE
  99. else if (damage > 2000 && randomChance10 > 1998) VERY_RARE
  100. else if (damage > 2000 && randomChance4 > 1998) UNIQUE
  101. else if (damage > 2000 && randomChance5 > 1997) RARE
  102. else if (damage > 800 && randomChance6 > 1999) VERY_RARE
  103. else if (damage > 800 && randomChance7 > 1999) UNIQUE
  104. else if (damage > 800 && randomChance8 > 1998) RARE
  105. else if (damage > 350 && randomChance9 > 150) UNCOMMON else COMMON
  106. if (reward.chance == chance) {
  107. applicableRewards.add(reward)
  108. }
  109. }
  110. for (i in 3..6) {
  111. if (damage > 350) {
  112. val reward = applicableRewards[player.world().random(applicableRewards.size)]
  113. rewards.add(Item(reward.itemId, player.world().random(reward.minimum_amount..reward.maximum_amount)))
  114. for (item in RaidsRewards.values()) {
  115. if (item.itemId == reward.itemId) {
  116. if (reward.chance == RARE || reward.chance == UNIQUE || reward.chance == VERY_RARE) {
  117. player.world().broadcast("<col=6a1a18><img=15> ${player.name()} has received a rare reward from Chambers of Xeric: ${Item(reward.itemId).unnote(player.world()).name(player.world())}!")
  118. DiscordBot.logRareDrop("News: ${player.name()} has received a ${Item(reward.itemId).unnote(player.world()).name(player.world())} drop from raids!")
  119. }
  120. }
  121. }
  122. } else {
  123. player.message("You didn't do enough damage to receive a reward.")
  124. }
  125. }
  126. party.groupPoints().remove(player.id() as Int)
  127. return rewards
  128. }
  129.  
  130. @JvmStatic
  131. fun main(args: Array<String>) {
  132. for (i in 2..500) {
  133. val shardsAmount = i * 10
  134. val price:Double = when {
  135. i <= 19 -> 1.00
  136. i <= 49 -> 0.90
  137. i <= 99 -> 0.85
  138. i <= 299 -> 0.80
  139. else -> 0.75
  140. }
  141. val decimal = BigDecimal(price * i).setScale(2, RoundingMode.DOWN)
  142. println("${i-2} => array(\n" +
  143. "\t'pid' => \"${88230014 + i}\", \n" +
  144. "\t'url' => \"https://secure.bmtmicro.com/cart?CID=8823&PRODUCTID=${88230014 + i}\",\n" +
  145. "\t'name' => \"$$decimal $shardsAmount Shards\",\n" +
  146. "\t'shards' => \"$shardsAmount\",\n" +
  147. "\t'amount' => \"$decimal\",\n" +
  148. "\t'discount' => \"0\"\n" +
  149. "),")
  150. }
  151. val random = SecureRandom()
  152. var rewards = ArrayList<Item>()
  153. val applicableRewards = ArrayList<RaidsRewards>()
  154. var damage = 1000
  155. for (i in 0..49) {
  156. val randomChance = random(250, random)
  157. val randomChance2 = random(1000, random)
  158. val randomChance3 = random(1000, random)
  159. val randomChance4 = random(1000, random)
  160. val randomChance5 = random(1000, random)
  161. val randomChance6 = random(450, random)
  162. val randomChance7 = random(1000, random)
  163. val randomChance8 = random(1000, random)
  164. val randomChance9 = random(1000, random)
  165. for (reward in RaidsRewards.values()) {
  166. val chance = if (damage > 3500 && randomChance > 249) VERY_RARE
  167. else if (damage > 3500 && randomChance3 > 995) UNIQUE
  168. else if (damage > 3500 && randomChance2 > 991) RARE
  169. else if (damage > 2000 && randomChance4 > 997) UNIQUE
  170. else if (damage > 2000 && randomChance5 > 993) RARE
  171. else if (damage > 800 && randomChance6 > 449) VERY_RARE
  172. else if (damage > 800 && randomChance7 > 999) UNIQUE
  173. else if (damage > 800 && randomChance8 > 994) RARE
  174. else if (damage > 350 && randomChance9 > 150) UNCOMMON else COMMON
  175. if (reward.chance == chance) {
  176. applicableRewards.add(reward)
  177. }
  178. }
  179. rewards.clear()
  180. }
  181. }
  182.  
  183. /**
  184. * @param i Maximum - INCLUSIVE!
  185. * @return Integer between 1 - MAX
  186. */
  187. fun random(i: Int, random: SecureRandom): Int {
  188. return if (i < 1) {
  189. 0
  190. } else random.nextInt(i + 1)
  191.  
  192. }
  193. }
  194.  
  195. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement