Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local Medusa = RegisterMod("Medusa", 1)
- local Medusa_item = Isaac.GetItemIdByName("Head of Medusa")
- List = {}
- function List.new ()
- return {first = 0, last = -1}
- end
- function List.popleft (list)
- local first = list.first
- if first > list.last then error("list is empty") end
- local value = list[first]
- list[first] = nil
- list.first = first + 1
- return value
- end
- function List.pushright (list, value)
- local last = list.last + 1
- list.last = last
- list[last] = value
- end
- local activated = false
- local num_stone = 0
- local stoney_list = List.new()
- function Medusa:use_Medusa()
- activated = true
- end
- function Medusa:effect_Medusa()
- if activated then
- local player = Isaac.GetPlayer(0)
- local entities = Isaac.GetRoomEntities()
- if Medusa:hasPlayerJustEnterARoom() and num_stone > 0 then
- num_stone = 0
- activated = false
- end
- for i = 1, #entities do
- if (entities[i]:IsVulnerableEnemy() and entities[i]:IsBoss() == false) then
- local entity = entities[i]
- local pos = entity.Position
- local dist = pos:Distance(player.Position)
- if dist <= 120 then
- entity:Remove()
- local stoney = Isaac.Spawn(EntityType.ENTITY_STONEY, 1, 1, pos, Vector(0, 0), player)
- List.pushright(stoney_list, stoney)
- if num_stone < 3 then
- num_stone = num_stone + 1
- else
- local remove = List.popleft(stoney_list)
- -- remove this reference!
- end
- end
- end
- end
- end
- end
- function Medusa:hasPlayerJustEnterARoom()
- return Game():GetRoom():GetFrameCount() == 1
- end
- Medusa:AddCallback(ModCallbacks.MC_USE_ITEM, Medusa.use_Medusa, Medusa_item)
- Medusa:AddCallback(ModCallbacks.MC_POST_UPDATE, Medusa.effect_Medusa)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement