Josh64

better key bum

Jul 7th, 2018
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.37 KB | None | 0 0
  1.  
  2. local Mod = RegisterMod("betterkeybum", 1)
  3. local game = Game()
  4.  
  5. -- BumsKeys = 0 -- gobal variable which keeps track on how many keys Key Bum picked up
  6. local DadsKey = nil
  7. local BumsKeys = 0
  8. local KBumExtra = 0
  9.  
  10. function Mod:onInit(player)
  11. if game:GetFrameCount() == 1 then
  12. -- spawn in if you want to
  13. Isaac.Spawn(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_COLLECTIBLE, CollectibleType.COLLECTIBLE_KEY_BUM, Vector(350, 200), Vector(0,0), player)
  14. -- check for Dads Key
  15. DadsKey = false
  16. end
  17. end
  18. Mod:AddCallback(ModCallbacks.MC_POST_PEFFECT_UPDATE, Mod.onInit)
  19.  
  20.  
  21.  
  22. function Mod:onPickup(KBum)
  23. local player = Isaac.GetPlayer(0)
  24. local entities = Isaac.GetRoomEntities()
  25. local rng = player:GetCollectibleRNG(CollectibleType.COLLECTIBLE_KEY_BUM)
  26. local roll = rng:RandomInt(100)
  27.  
  28.  
  29. if player:HasCollectible(CollectibleType.COLLECTIBLE_KEY_BUM) then
  30.  
  31. -- we check all entities in the room
  32. for j = 1, #entities do
  33. -- collision detection
  34. if entities[j].Type == EntityType.ENTITY_PICKUP
  35. and KBum.Position:Distance(entities[j].Position) <= 150
  36. then
  37. if entities[j]:GetSprite():IsPlaying("Collect")
  38. and entities[j]:GetData().Picked == nil then
  39. entities[j]:GetData().Picked = true
  40. -- pickup specific action
  41. if entities[j].Variant == PickupVariant.PICKUP_KEY then
  42. if entities[j].SubType == KeySubType.KEY_NORMAL then
  43. -- key counter
  44. BumsKeys = BumsKeys + 1
  45. Mod:SaveData(BumsKeys)
  46. Isaac.Spawn(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_KEY, KeySubType.KEY_GOLDEN, entities[j].Position, Vector(0,0), KBum)
  47. if BumsKeys == 1 then
  48. Isaac.DebugString("BumsKeys + 1")
  49. end
  50. -- depending on how high the key counter Key Bum can spawn different things
  51. if BumsKeys == 6 then
  52. if player:HasCollectible(CollectibleType.COLLECTIBLE_SKELETON_KEY)
  53. and player:HasCollectible(CollectibleType.COLLECTIBLE_MOMS_KEY)
  54. and player:HasCollectible(CollectibleType.COLLECTIBLE_LATCH_KEY)
  55. and DadsKey == true then
  56. Isaac.Spawn(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_KEY, KeySubType.KEY_GOLDEN, entities[j].Position, Vector(0,0), KBum)
  57.  
  58. else
  59. if roll < 50 then
  60. Isaac.Spawn(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_COLLECTIBLE, CollectibleType.COLLECTIBLE_KEY_BUM, Vector(350, 200), Vector(0,0), KBum)
  61. -- Isaac.Spawn(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_KEY, KeySubType.KEY_GOLDEN, entities[j].Position, Vector(0,0), KBum)
  62. BumsKeys = 0 -- reset the counter to 0
  63. Mod:SaveData(BumsKeys)
  64. end
  65. end
  66. elseif BumsKeys >= 12 then
  67. -- the chance to drop something increases with every key picked up
  68. if BumsKeys == 12 then
  69. KBumExtra = 0
  70. Mod:SaveData(KBumExtra)
  71. elseif BumsKeys == 13 then
  72. KBumExtra = KBumExtra + 10
  73. Mod:SaveData(KBumExtra)
  74. elseif BumsKeys == 14 then
  75. KBumExtra = KBumExtra + 10
  76. Mod:SaveData(KBumExtra)
  77. elseif BumsKeys == 15 then
  78. KBumExtra = KBumExtra + 15
  79. Mod:SaveData(KBumExtra)
  80. elseif BumsKeys == 16 then
  81. KBumExtra = KBumExtra + 15
  82. Mod:SaveData(KBumExtra)
  83. elseif BumsKeys == 17 then
  84. KBumExtra = KBumExtra + 15
  85. Mod:SaveData(KBumExtra)
  86. end
  87. if roll < (35 + KBumExtra) then
  88. local rolltwo = rng:RandomInt(120)
  89. if rolltwo < 20 then
  90. Isaac.Spawn(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_COLLECTIBLE, CollectibleType.COLLECTIBLE_SKELETON_KEY, KBum.Position, Vector(0,0), KBum)
  91. BumsKeys = 0
  92. Mod:SaveData(BumsKeys)
  93. elseif rolltwo < 40 then
  94. Isaac.Spawn(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_COLLECTIBLE, CollectibleType.COLLECTIBLE_MOMS_KEY, KBum.Position, Vector(0,0), KBum)
  95. BumsKeys = 0
  96. Mod:SaveData(BumsKeys)
  97. elseif rolltwo < 60 then
  98. if DadsKey == false then
  99. Isaac.Spawn(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_COLLECTIBLE, CollectibleType.COLLECTIBLE_DADS_KEY, KBum.Position, Vector(0,0), KBum)
  100. BumsKeys = 0
  101. Mod:SaveData(BumsKeys)
  102. DadsKey = true
  103. end
  104. elseif rolltwo < 80 then
  105. Isaac.Spawn(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_COLLECTIBLE, CollectibleType.COLLECTIBLE_LATCH_KEY, KBum.Position, Vector(0,0), KBum)
  106. BumsKeys = 0
  107. Mod:SaveData(BumsKeys)
  108. elseif rolltwo < 100 then
  109. Isaac.Spawn(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_TRINKET, TrinketType.TRINKET_PAPER_CLIP, KBum.Position, Vector(0,0), KBum)
  110. BumsKeys = 0
  111. Mod:SaveData(BumsKeys)
  112. else
  113. Isaac.Spawn(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_TRINKET, TrinketType.TRINKET_STORE_KEY, KBum.Position, Vector(0,0), KBum)
  114. BumsKeys = 0
  115. Mod:SaveData(BumsKeys)
  116. end
  117. end
  118. end
  119. end
  120. end
  121. end
  122. end
  123. end
  124. end
  125. end
  126. Mod:AddCallback(ModCallbacks.MC_FAMILIAR_UPDATE, Mod.onPickup, FamiliarVariant.KEY_BUM)
Advertisement
Add Comment
Please, Sign In to add comment