Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local Mod = RegisterMod("betterkeybum", 1)
- local game = Game()
- -- BumsKeys = 0 -- gobal variable which keeps track on how many keys Key Bum picked up
- local DadsKey = nil
- local BumsKeys = 0
- local KBumExtra = 0
- function Mod:onInit(player)
- if game:GetFrameCount() == 1 then
- -- spawn in if you want to
- Isaac.Spawn(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_COLLECTIBLE, CollectibleType.COLLECTIBLE_KEY_BUM, Vector(350, 200), Vector(0,0), player)
- -- check for Dads Key
- DadsKey = false
- end
- end
- Mod:AddCallback(ModCallbacks.MC_POST_PEFFECT_UPDATE, Mod.onInit)
- function Mod:onPickup(KBum)
- local player = Isaac.GetPlayer(0)
- local entities = Isaac.GetRoomEntities()
- local rng = player:GetCollectibleRNG(CollectibleType.COLLECTIBLE_KEY_BUM)
- local roll = rng:RandomInt(100)
- if player:HasCollectible(CollectibleType.COLLECTIBLE_KEY_BUM) then
- -- we check all entities in the room
- for j = 1, #entities do
- -- collision detection
- if entities[j].Type == EntityType.ENTITY_PICKUP
- and KBum.Position:Distance(entities[j].Position) <= 150
- then
- if entities[j]:GetSprite():IsPlaying("Collect")
- and entities[j]:GetData().Picked == nil then
- entities[j]:GetData().Picked = true
- -- pickup specific action
- if entities[j].Variant == PickupVariant.PICKUP_KEY then
- if entities[j].SubType == KeySubType.KEY_NORMAL then
- -- key counter
- BumsKeys = BumsKeys + 1
- Mod:SaveData(BumsKeys)
- Isaac.Spawn(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_KEY, KeySubType.KEY_GOLDEN, entities[j].Position, Vector(0,0), KBum)
- if BumsKeys == 1 then
- Isaac.DebugString("BumsKeys + 1")
- end
- -- depending on how high the key counter Key Bum can spawn different things
- if BumsKeys == 6 then
- if player:HasCollectible(CollectibleType.COLLECTIBLE_SKELETON_KEY)
- and player:HasCollectible(CollectibleType.COLLECTIBLE_MOMS_KEY)
- and player:HasCollectible(CollectibleType.COLLECTIBLE_LATCH_KEY)
- and DadsKey == true then
- Isaac.Spawn(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_KEY, KeySubType.KEY_GOLDEN, entities[j].Position, Vector(0,0), KBum)
- else
- if roll < 50 then
- Isaac.Spawn(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_COLLECTIBLE, CollectibleType.COLLECTIBLE_KEY_BUM, Vector(350, 200), Vector(0,0), KBum)
- -- Isaac.Spawn(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_KEY, KeySubType.KEY_GOLDEN, entities[j].Position, Vector(0,0), KBum)
- BumsKeys = 0 -- reset the counter to 0
- Mod:SaveData(BumsKeys)
- end
- end
- elseif BumsKeys >= 12 then
- -- the chance to drop something increases with every key picked up
- if BumsKeys == 12 then
- KBumExtra = 0
- Mod:SaveData(KBumExtra)
- elseif BumsKeys == 13 then
- KBumExtra = KBumExtra + 10
- Mod:SaveData(KBumExtra)
- elseif BumsKeys == 14 then
- KBumExtra = KBumExtra + 10
- Mod:SaveData(KBumExtra)
- elseif BumsKeys == 15 then
- KBumExtra = KBumExtra + 15
- Mod:SaveData(KBumExtra)
- elseif BumsKeys == 16 then
- KBumExtra = KBumExtra + 15
- Mod:SaveData(KBumExtra)
- elseif BumsKeys == 17 then
- KBumExtra = KBumExtra + 15
- Mod:SaveData(KBumExtra)
- end
- if roll < (35 + KBumExtra) then
- local rolltwo = rng:RandomInt(120)
- if rolltwo < 20 then
- Isaac.Spawn(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_COLLECTIBLE, CollectibleType.COLLECTIBLE_SKELETON_KEY, KBum.Position, Vector(0,0), KBum)
- BumsKeys = 0
- Mod:SaveData(BumsKeys)
- elseif rolltwo < 40 then
- Isaac.Spawn(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_COLLECTIBLE, CollectibleType.COLLECTIBLE_MOMS_KEY, KBum.Position, Vector(0,0), KBum)
- BumsKeys = 0
- Mod:SaveData(BumsKeys)
- elseif rolltwo < 60 then
- if DadsKey == false then
- Isaac.Spawn(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_COLLECTIBLE, CollectibleType.COLLECTIBLE_DADS_KEY, KBum.Position, Vector(0,0), KBum)
- BumsKeys = 0
- Mod:SaveData(BumsKeys)
- DadsKey = true
- end
- elseif rolltwo < 80 then
- Isaac.Spawn(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_COLLECTIBLE, CollectibleType.COLLECTIBLE_LATCH_KEY, KBum.Position, Vector(0,0), KBum)
- BumsKeys = 0
- Mod:SaveData(BumsKeys)
- elseif rolltwo < 100 then
- Isaac.Spawn(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_TRINKET, TrinketType.TRINKET_PAPER_CLIP, KBum.Position, Vector(0,0), KBum)
- BumsKeys = 0
- Mod:SaveData(BumsKeys)
- else
- Isaac.Spawn(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_TRINKET, TrinketType.TRINKET_STORE_KEY, KBum.Position, Vector(0,0), KBum)
- BumsKeys = 0
- Mod:SaveData(BumsKeys)
- end
- end
- end
- end
- end
- end
- end
- end
- end
- end
- Mod:AddCallback(ModCallbacks.MC_FAMILIAR_UPDATE, Mod.onPickup, FamiliarVariant.KEY_BUM)
Advertisement
Add Comment
Please, Sign In to add comment