From 9b42676fad1d2ed290b390354ae881f100d0e6ee Mon Sep 17 00:00:00 2001 From: Buurazu Date: Thu, 18 Nov 2021 18:24:34 -0500 Subject: [PATCH 01/41] Update eid_bagofcrafting.lua --- eid_bagofcrafting.lua | 161 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 155 insertions(+), 6 deletions(-) diff --git a/eid_bagofcrafting.lua b/eid_bagofcrafting.lua index f42bfff3..c8c13087 100644 --- a/eid_bagofcrafting.lua +++ b/eid_bagofcrafting.lua @@ -49,7 +49,7 @@ local pickupIDLookup = { ["10.7"] = {5}, -- gold heart ["10.8"] = {2}, -- half soul heart ["10.9"] = {1}, -- scared red heart - ["10.10"] = {1, 2}, -- blended heart + ["10.10"] = {2, 1}, -- blended heart ["10.11"] = {6}, -- Bone heart ["10.12"] = {7}, -- Rotten heart ["20.1"] = {8}, -- Penny @@ -225,6 +225,110 @@ function EID:getBagOfCraftingID(Variant, SubType) return nil end +--not a very unified set; [7] = The Poop, [9] = The Left Hand; these aren't too important, they are poop nugget and cracked key +--however, [26] should be Planetarium, we need Planetarium and Ultra Secret Room icons added to the PNG +local poolToIcon = { [0]="{{TreasureRoom}}",[1]="{{Shop}}",[2]="{{BossRoom}}",[3]="{{DevilRoom}}",[4]="{{AngelRoom}}", +[5]="{{SecretRoom}}",[7]="{{Collectible36}}",[8]="{{ChestRoom}}",[9]="{{Trinket61}}",[12]="{{CursedRoom}}",[26]="{{Collectible158}}" } + +function EID:simulateBagOfCrafting(componentsTable) + local components = componentsTable + local compTotalWeight = 0 + local compCounts = {} + for i = 1, #componentShifts do + compCounts[i] = 0 + end + for _, compId in ipairs(components) do + if (_ > 8) then break end + compCounts[compId + 1] = compCounts[compId + 1] + 1 + compTotalWeight = compTotalWeight + pickupValues[compId + 1] + end + + local poolWeights = { + {idx = 0, weight = 1}, + {idx = 1, weight = 2}, + {idx = 2, weight = 2}, + {idx = 3, weight = compCounts[4] * 10}, + {idx = 4, weight = compCounts[5] * 10}, + {idx = 5, weight = compCounts[7] * 5}, + {idx = 7, weight = compCounts[30] * 10}, + {idx = 8, weight = compCounts[6] * 10}, + {idx = 9, weight = compCounts[26] * 10}, + {idx = 12, weight = compCounts[8] * 10}, + } + if compCounts[9] + compCounts[2] + compCounts[13] + compCounts[16] == 0 then + table.insert(poolWeights, {idx = 26, weight = compCounts[24] * 10}) + end + + for k,v in ipairs(poolWeights) do + v.totalWeight = 0 + end + local totalWeight = 0 + + local qualityWeights = {[0]=0, 0, 0, 0, 0} + + for _, poolWeight in ipairs(poolWeights) do + if poolWeight.weight > 0 then + local qualityMin = 0 + local qualityMax = 1 + local n = compTotalWeight + if (poolWeight.idx >= 3) and (poolWeight.idx <= 5) then + n = n - 5 + end + if n > 34 then + qualityMin = 4 + qualityMax = 4 + elseif n > 26 then + qualityMin = 3 + qualityMax = 4 + elseif n > 22 then + qualityMin = 2 + qualityMax = 4 + elseif n > 18 then + qualityMin = 2 + qualityMax = 3 + elseif n > 14 then + qualityMin = 1 + qualityMax = 2 + elseif n > 8 then + qualityMin = 0 + qualityMax = 2 + end + local pool = EID.XMLItemPools[poolWeight.idx + 1] + + for _, item in ipairs(pool) do + local quality = EID.XMLItemQualities[item[1]] + if quality >= qualityMin and quality <= qualityMax then + local w = item[2] * poolWeight.weight + poolWeight.totalWeight = poolWeight.totalWeight + w + qualityWeights[quality] = qualityWeights[quality] + w + totalWeight = totalWeight + w + end + end + end + end + + local poolString = "" + local firstAfterBoss = false + for k,v in ipairs(poolWeights) do + if (v.weight > 0) then + --line break after boss pool + if (firstAfterBoss) then poolString = poolString .. " " end + poolString = poolString .. poolToIcon[v.idx] .. ":" .. math.floor(v.totalWeight/totalWeight*100+0.5) .. "%," + if (k == 3) then firstAfterBoss = true else firstAfterBoss = false end + end + end + poolString = string.sub(poolString,1,-2) .. "#" + for i=0,4 do + local v = qualityWeights[i] + if (v > 0) then + poolString = poolString .. "{{Quality" .. i .. "}}:" .. math.floor(v/totalWeight*100+0.5) .. "%," + end + end + poolString = string.sub(poolString,1,-2) + + return compTotalWeight, poolString +end + function EID:calculateBagOfCrafting(componentsTable) local components = {table.unpack(componentsTable)} if components == nil or #components ~= 8 then @@ -294,9 +398,6 @@ function EID:calculateBagOfCrafting(componentsTable) if n > 34 then qualityMin = 4 qualityMax = 4 - elseif n > 30 then - qualityMin = 3 - qualityMax = 4 elseif n > 26 then qualityMin = 3 qualityMax = 4 @@ -334,7 +435,8 @@ function EID:calculateBagOfCrafting(componentsTable) while true do local t = nextFloat() local target = t * totalWeight - for k,v in pairs(itemWeights) do + for k,v in ipairs(itemWeights) do + print(k) target = target - v if target < 0 then if firstOption then @@ -458,7 +560,7 @@ local function shiftBagContent() EID.BagItems = newContent end --- only Tainted Cain's consumable slot bag can have its ingredients shifted... probably? +-- only Tainted Cain's consumable slot bag can have its ingredients shifted local function detectBagContentShift() if Input.IsActionTriggered(ButtonAction.ACTION_DROP, EID.player.ControllerIndex) and IsTaintedCain() then shiftBagContent() @@ -730,6 +832,8 @@ function EID:handleBagOfCraftingRendering() end local bagDesc = EID:getDescriptionEntry("CraftingBagContent").."(Beta)" EID:appendToDescription(customDescObj, bagDesc..EID:tableToCraftingIconsMerged(EID.BagItems).."#") + --debug the bag order + --EID:appendToDescription(customDescObj, EID:tableToCraftingIconsFull(EID.BagItems, false).."#") end if #roomItems >0 then if #roomItems == 8 then @@ -748,6 +852,51 @@ function EID:handleBagOfCraftingRendering() EID:appendToDescription(customDescObj, floorDesc..EID:tableToCraftingIconsMerged(EID.bagOfCraftingFloorQuery).."#") end + --Simplified mode WIP + --total weight, quality min, quality max, pool weights, total weight + local mostValuableSimp = {} + for i=1,8 do + mostValuableSimp[i] = itemQuery[i] + end + + local bagQuality, bagResult = EID:simulateBagOfCrafting(EID.BagItems) + local bestQuality, bestResult = EID:simulateBagOfCrafting(mostValuableSimp) + + EID:appendToDescription(customDescObj, "Bag Quality: " .. bagQuality .. "#" .. bagResult .. "#") + EID:appendToDescription(customDescObj, "Best Quality: " .. bestQuality .. " (" .. EID:tableToCraftingIconsFull(mostValuableSimp, false) .. ")#" .. bestResult .. "#") + + --[[if bagResult[2] ~= bagResult[3] then + EID:appendToDescription(customDescObj, "Best Quality: " .. bagResult[1] .. " ({{Quality" .. bagResult[2] .. "}}-{{Quality" .. bagResult[3] .. "}})#") + else + EID:appendToDescription(customDescObj, "Best Quality: " .. bagResult[1] .. " ({{Quality" .. bagResult[2] .. "}})#") + end + local poolString = "" + local first = true + local firstAfterBoss = false + for k,v in ipairs(bagResult[4]) do + if (v.weight > 0) then + if (not first) then poolString = poolString .. "," end + --line break after boss pool + if (firstAfterBoss) then poolString = poolString .. " " end + + poolString = poolString .. poolToIcon[v.idx] .. ":" .. math.floor(v.totalWeight/bagResult[6]*100+0.5) .. "%" + + first = false + if (k == 3) then firstAfterBoss = true else firstAfterBoss = false end + end + end + poolString = poolString .. "#" + first = true + for i=0,4 do + local v = bagResult[5][i] + if (v > 0) then + if (not first) then poolString = poolString .. "," end + poolString = poolString .. "{{Quality" .. i .. "}}:" .. math.floor(v/bagResult[6]*100+0.5) .. "%" + first = false + end + end + EID:appendToDescription(customDescObj, poolString .. "#") + ]] local resultDesc = EID:getDescriptionEntry("CraftingResults") EID:appendToDescription(customDescObj, resultDesc) if Input.IsActionPressed(EID.Config["BagOfCraftingToggleKey"], EID.player.ControllerIndex) then From d0a2ec3d0671bb0948fc23f8cc32fffa28b2bcb8 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Thu, 18 Nov 2021 18:26:21 -0500 Subject: [PATCH 02/41] allow not sorting a crafting icon list --- eid_api.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/eid_api.lua b/eid_api.lua index 4734f6f7..a8741007 100644 --- a/eid_api.lua +++ b/eid_api.lua @@ -829,9 +829,10 @@ end -- Converts a given table into a string containing the crafting icons of the table -- Example input: {1,2,3,4,5,6,7,8} -- Result: "{{Crafting8}}{{Crafting7}}{{Crafting6}}{{Crafting5}}{{Crafting4}}{{Crafting3}}{{Crafting2}}{{Crafting1}}" -function EID:tableToCraftingIconsFull(craftTable) +function EID:tableToCraftingIconsFull(craftTable, sortTable) + if (sortTable == nil) then sortTable = true end local sortedList = {table.unpack(craftTable)} - table.sort(sortedList, function(a, b) return a > b end) + if (sortTable) then table.sort(sortedList, function(a, b) return a > b end) end local iconString = "" for _,nr in ipairs(sortedList) do iconString = iconString.."{{Crafting"..nr.."}}" @@ -846,7 +847,6 @@ local emptyPickupTable = {} for i=1,29 do emptyPickupTable[i] = 0 end function EID:tableToCraftingIconsMerged(craftTable) local sortedList = {table.unpack(craftTable)} - table.sort(sortedList, function(a, b) return a > b end) local filteredList = {table.unpack(emptyPickupTable)} for _,nr in ipairs(sortedList) do filteredList[nr] = filteredList[nr] +1 From d7c6c9fc79376acb9f311a46a993d08556748828 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Thu, 18 Nov 2021 20:16:29 -0500 Subject: [PATCH 03/41] Spacebar -> active, Coin -> coin --- descriptions/ab+/en_us.lua | 40 +++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/descriptions/ab+/en_us.lua b/descriptions/ab+/en_us.lua index 4ed63e3b..787b92bf 100644 --- a/descriptions/ab+/en_us.lua +++ b/descriptions/ab+/en_us.lua @@ -30,7 +30,7 @@ EID.descriptions["en_us"].collectibles={ {"15", "<3", "↑ +1 Health up#Full health"}, {"16", "Raw Liver", "↑ +2 Health up#Full health"}, {"17", "Skeleton Key", "+99 Keys"}, - {"18", "A Dollar", "+99 Coins"}, + {"18", "A Dollar", "+99 coins"}, {"19", "Boom!", "+10 Bombs"}, {"20", "Transcendence", "Flight!"}, {"21", "The Compass", "Reveals all icons on the map#Does not show the layout of the map"}, @@ -75,7 +75,7 @@ EID.descriptions["en_us"].collectibles={ {"60", "The Ladder", "Walk over small gaps"}, {"61", "", ""}, {"62", "Charm of the Vampire", "Heals half a heart every 13 enemies killed"}, - {"63", "The Battery", "Spacebar items can now be charged up twice"}, + {"63", "The Battery", "Active items can now be charged up twice"}, {"64", "Steam Sale", "-50% on shop items#Getting this item two times will make everything free"}, {"65", "Anarchist Cookbook", "Spawn 6 troll bombs near the center of the room"}, {"66", "The Hourglass", "Slow down enemies for 8 secs"}, @@ -128,7 +128,7 @@ EID.descriptions["en_us"].collectibles={ {"113", "Demon Baby", "Auto-firing turret#Deals 3 damage per shot"}, {"114", "Mom's Knife", "Controllable knife attack#The knife deals 2x Isaac's damage while held and 6x damage at the furthest possible distance"}, {"115", "Ouija Board", "Spectral tears"}, - {"116", "9 Volt", "-1 Charge for active items#Fully charges current item"}, + {"116", "9 Volt", "-1 charge needed for active items#Fully charges current item"}, {"117", "Dead Bird", "Spawns a bird when you get hit#Bird deals 4 contact damage per second"}, {"118", "Brimstone", "Charge a blood laser that deals constant damage"}, {"119", "Blood Bag", "↑ +1 Health up#↑ +0.3 Speed up#Heals 4 Hearts"}, @@ -147,7 +147,7 @@ EID.descriptions["en_us"].collectibles={ {"132", "A Lump of Coal", "More Damage based on traveled distance of the tear"}, {"133", "Guppy's Paw", "!!! Convert:#1 heart container to 3 Soul Hearts"}, {"134", "Guppy's Tail", "More chests appear"}, - {"135", "IV Bag", "Portable blood bank#Half a heart = 1-3 Coin"}, + {"135", "IV Bag", "Portable blood bank#Half a heart = 1-3 coins"}, {"136", "Best Friend", "Exploding Decoy#Attracts enemies"}, {"137", "Remote Detonator", "Detonate bombs on demand#+5 bombs"}, {"138", "Stigmata", "↑ +1 Health up#↑ +0.3 Damage up"}, @@ -156,7 +156,7 @@ EID.descriptions["en_us"].collectibles={ {"141", "Pageant Boy", "Spawns 7 random coins"}, {"142", "Scapular", "When damaged down to half a heart, you gain 1 Soul Heart#(Once per room)"}, {"143", "Speed Ball", "↑ +0.3 Speed up#↑ +0.2 Shot Speed up"}, - {"144", "Bum Friend", "Converts Coins into pickups"}, + {"144", "Bum Friend", "Converts coins into pickups"}, {"145", "Guppy's Head", "Spawns 2-4 blue flies"}, {"146", "Prayer Card", "+1 Eternal Heart"}, {"147", "Notched Axe", "Break rocks in current room on touch"}, @@ -168,7 +168,7 @@ EID.descriptions["en_us"].collectibles={ {"153", "Mutant Spider", "Quad Shot!#↓ Tears down"}, {"154", "Chemical Peel", "↑ +2 Damage up for left eye"}, {"155", "The Peeper", "Floats around the room#Deals 17.1 contact damage per second"}, - {"156", "Habit", "+1 Charge when you get hit"}, + {"156", "Habit", "+1 charge when you get hit"}, {"157", "Bloody Lust", "↑ Damage up every time you get hit#Applies up to 6 times per floor#Lasts for whole floor"}, {"158", "Crystal Ball", "Reveal full map#Drops random Card or Soul Heart"}, {"159", "Spirit of the Night", "Flight#Spectral tears"}, @@ -187,7 +187,7 @@ EID.descriptions["en_us"].collectibles={ {"172", "Sacrificial Dagger", "Orbital knife#Blocks enemy shots#Deals 225 damage per second"}, {"173", "Mitre", "Higher chance to find Soul Hearts"}, {"174", "Rainbow Baby", "Shoots random tears#Deals 3-5 damage per shot"}, - {"175", "Dad's Key", "Opens all doors in the current room, including secret rooms"}, + {"175", "Dad's Key", "Opens all doors in the current room, including Secret Rooms, Challenge Rooms, and the Mega Satan door"}, {"176", "Stem Cells", "↑ +1 Health up#↑ +0.16 Shot Speed up"}, {"177", "Portable Slot", "Portable slot machine"}, {"178", "Holy Water", "Leaves pool of creep when you get hit#Deals 24 damage per second"}, @@ -239,7 +239,7 @@ EID.descriptions["en_us"].collectibles={ {"224", "Cricket's Body", "↑ +1 Tears up#↓ -10 Range down#Tears split up in 4 on hit#Splitted tears deal half damage"}, {"225", "Gimpy", "Chance to spawn a Soul Heart when taking damage#Monsters have a chance to drop a Half Red Heart on death"}, {"226", "Black Lotus", "↑ +1 Health up#+1 Soul Heart#+1 Black Heart"}, - {"227", "Piggy Bank", "+3 Coins#Spawns 1-2 coins when getting hit#Spawns 0-1 for Keeper"}, + {"227", "Piggy Bank", "+3 coins#Spawns 1-2 coins when getting hit#0-1 coin as Keeper"}, {"228", "Mom's Perfume", "Chance to shoot fearing tears#↑ +1 Tears up"}, {"229", "Monstro's Lung", "Tears can now be charged and released in a shotgun style attack#↓ 4.3x Tear Delay up"}, {"230", "Abaddon", "↑ +1.5 Damage up#↑ +0.2 Speed up#Fear tears#↓ Removes all heart containers#+6 Black Hearts"}, @@ -309,7 +309,7 @@ EID.descriptions["en_us"].collectibles={ {"294", "Butter Bean", "Knocks back nearby enemies and projectiles#10% chance to turn into the stronger \"Wait What?\" when swapping it with a different active item and picking it up again"}, {"295", "Magic Fingers", "Damages the whole room with 2x the player damage#Price: 1 coin"}, {"296", "Converter", "!!! Convert:#2 Soul/Black Hearts into 1 Red Heart Container"}, - {"297", "Pandora's Box", "!!! SINGLE USE, spawns items based on floor:#B1: 2 Soul Hearts#B2: 2 bombs and 2 keys#C1: 1 Boss item#C2: B1+C1#D1: 4 Soul Hearts#D2: 20 Coins#W1: 2 Boss items#W2: {{Collectible33}}The Bible#???/Void: Nothing#Sheol: 1 Devil item + 1 Black Heart#Dark Room: Unlocks {{Collectible523}}Moving Box#Cat: 1 Angel item + 1 Eternal Heart#Chest: 1 Coin"}, + {"297", "Pandora's Box", "!!! SINGLE USE, spawns items based on floor:#B1: 2 Soul Hearts#B2: 2 bombs and 2 keys#C1: 1 Boss item#C2: B1+C1#D1: 4 Soul Hearts#D2: 20 coins#W1: 2 Boss items#W2: {{Collectible33}}The Bible#???/Void: Nothing#Sheol: 1 Devil item + 1 Black Heart#Dark Room: Unlocks {{Collectible523}}Moving Box#Cat: 1 Angel item + 1 Eternal Heart#Chest: 1 coin"}, {"298", "Unicorn Stump", "Invincibility and +0.28 speed up for 6 seconds"}, {"299", "Taurus", "Get faster in hostile rooms!#Invincibility when fast enough#↓ -0.3 Speed down"}, {"300", "Aries", "↑ +0.25 Speed up#Touching enemies hurts them"}, @@ -368,7 +368,7 @@ EID.descriptions["en_us"].collectibles={ {"353", "Bomber Boy", "+5 bombs#Bombs will now explode in a cross-shaped pattern"}, {"354", "Crack Jacks", "↑ +1 Health up#Spawns random trinket on the floor"}, {"355", "Mom's Pearls", "↑ +1.25 Range up#↑ +1 Luck up#↑ +0.5 Tear Height"}, - {"356", "Car Battery", "Causes your spacebar item to activate twice when used"}, + {"356", "Car Battery", "Causes your active item to activate twice when used"}, {"357", "Box of Friends", "Duplicate your familiars for the current room#If you have no familiars, {{Collectible113}} Demon Baby will spawn for the current room"}, {"358", "The Wiz", "Fire 2 tears at once diagonally, similar to R U A WIZARD#Spectral tears"}, {"359", "8 Inch Nails", "↑ +1.5 Damage up#Increases knockback"}, @@ -384,7 +384,7 @@ EID.descriptions["en_us"].collectibles={ {"369", "Continuum", "↑ +2.25 Range up#↑ +1.5 Tear Height#Tears travel through walls and appear out of the opposite wall"}, {"370", "Mr. Dolly", "↑ +0.7 Tears up#↑ +5.25 Range up#↑ +0.5 Tear Height#Spawns 3 random hearts when picked up"}, {"371", "Curse of the Tower", "Spawn 6 troll bombs every time you get hit#These are affected by bomb items"}, - {"372", "Charged Baby", "Random chance to drop a battery or freeze all enemies in the room#Chance to add one charge to your spacebar item"}, + {"372", "Charged Baby", "Random chance to drop a battery or freeze all enemies in the room#Chance to add one charge to your active item"}, {"373", "Dead Eye", "↑ +12.5% damage up for every tear that successfully hits an enemy(max. +100%)"}, {"374", "Holy Light", "Random chance to fire a Holy tear, which will spawn a beam of light on hit#The beam deals 4x your damage"}, {"375", "Host Hat", "Grants explosion immunity and immunity from Mom's and Satan's foot stomps#20% chance to block tears"}, @@ -513,7 +513,7 @@ EID.descriptions["en_us"].collectibles={ {"498", "Duality", "Spawns {{DevilRoom}}Devil AND {{AngelRoom}}Angel Room doors#When entering one, the other disappears"}, {"499", "Eucharist", "100% chance to find an {{AngelRoom}}Angel Room"}, {"500", "Sack of Sacks", "Spawns a sack every 5-6 rooms"}, - {"501", "Greed's Gullet", "Gives you 1 heart container for every 25 coins#The Keeper will gain additional Coin-Hearts"}, + {"501", "Greed's Gullet", "Gives you 1 heart container for every 25 coins#The Keeper will gain additional Coin Hearts"}, {"502", "Large Zit", "Chance to fire a Creep leaving tear that deals double damage"}, {"503", "Little Horn", "Chance to fire tears that instantly kill enemies#Running into enemies will deal 3.5 damage to them"}, {"504", "Brown Nugget", "Spawns a fly turret that shoots at enemies#Each shot deals 2 damage"}, @@ -571,7 +571,7 @@ EID.descriptions["en_us"].collectibles={ EID.descriptions["en_us"].trinkets={ {"1", "Swallowed Penny", "Spawns 1 coin when you get hit"}, {"2", "Petrified Poop", "50% more drops from poop"}, - {"3", "AAA Battery", "-1 charge needed for spacebar items"}, + {"3", "AAA Battery", "-1 charge needed for active items"}, {"4", "Broken Remote", "Randomly teleports you, when using an item"}, {"5", "Purple Heart", "Doubles the chance for champion enemies"}, {"6", "Broken Magnet", "Coin magnet"}, @@ -634,7 +634,7 @@ EID.descriptions["en_us"].trinkets={ {"63", "Safety Scissors", "Turns troll bombs into bomb pickups"}, {"64", "Rainbow Worm", "Random worm effect every 3 seconds"}, {"65", "Tape Worm", "↑ Doubles your Range#-50% Tear Height"}, - {"66", "Lazy Worm", "↓ -0.4 Shot Speed down#↑ +4 Range up"}, + {"66", "Lazy Worm", "↓ -0.4 Shot Speed down#↑ +4 Range up#↑ +2 Tear Height"}, {"67", "Cracked Dice", "Chance to trigger a random dice effect when getting hit"}, {"68", "Super Magnet", "Magnet for pickups and enemies"}, {"69", "Faded Polaroid", "Camouflages the player randomly#Confuses enemies"}, @@ -670,8 +670,8 @@ EID.descriptions["en_us"].trinkets={ {"99", "Super Ball", "Chance to shoot bouncy tears"}, {"100", "Vibrant Bulb", "!!! While holding a fully charged active item:#↑ +0.5 Damage#↑ +0.25 Speed#↑ +0.75 Range#↑ +0.2 Tears#↑ +0.1 Shot speed#↑ +1 Luck"}, {"101", "Dim Bulb", "!!! While holding a completely uncharged active item:#↑ +1.5 Damage#↑ +0.5 Speed#↑ +1.5 Range#↑ +0.4 Tears#↑ +0.3 Shot Speed#↑ +2 Luck"}, - {"102", "Fragmented Card", "+1 extra secret room per floor while held"}, - {"103", "Equality!", "!!! When coin, key and bomb-count are equal:#Turns half consumables into double consumables"}, + {"102", "Fragmented Card", "+1 extra {{SecretRoom}}Secret Room per floor while held"}, + {"103", "Equality!", "!!! When coin, key and bomb count are equal:#Turns single consumables into double consumables"}, {"104", "Wish Bone", "Chance to spawn a pedestal item when hit#Gets destroyed afterwards"}, {"105", "Bag Lunch", "Chance to spawn {{Collectible22}}Lunch when hit#Gets destroyed afterwards"}, {"106", "Lost Cork", "Increases the radius of any creep you produce"}, @@ -748,7 +748,7 @@ EID.descriptions["en_us"].cards={ {"45", "A Card Against Humanity", "Fills the whole room with poop"}, {"46", "Suicide King", "Instantly kills you and spawns 10 pickup / Collectibles on the floor"}, {"47", "Get Out Of Jail Free Card", "Open all doors in the current room"}, - {"48", "? Card", "Activates your spacebar item for free"}, + {"48", "? Card", "Activates your active item for free"}, {"49", "Dice Shard", "Rerolls pedestals and pickups in current room"}, {"50", "Emergency Contact", "Two of Mom's Hands come down and grab an enemy"}, {"51", "Holy Card", "Grants the Holy Mantle effect for one room#(Prevents damage once)#25% chance to spawn another Holy Card"}, @@ -816,11 +816,11 @@ EID.descriptions["en_us"].pills={ EID.descriptions["en_us"].sacrificeHeader = "[Next Sacrifice Room payout]" EID.descriptions["en_us"].sacrifice={ - {"1", "", "50% chance for 1 Coin#100% chance for 1 Bomb, when on B1 and killed the Boss under 1 minute"}, - {"2", "", "50% chance for 1 Coin#100% chance for 1 Bomb, when on B1 and killed the Boss under 1 minute"}, + {"1", "", "50% chance for 1 coin#100% chance for 1 Bomb, when on B1 and killed the Boss under 1 minute"}, + {"2", "", "50% chance for 1 coin#100% chance for 1 Bomb, when on B1 and killed the Boss under 1 minute"}, {"3", "", "67% chance for increased {{AngelRoom}}Angel Room chance"}, {"4", "", "50% chance for 1 random chest"}, - {"5", "", "33% chance for 3 Coins#67% chance for increased {{AngelRoom}}Angel Room chance"}, + {"5", "", "33% chance for 3 coins#67% chance for increased {{AngelRoom}}Angel Room chance"}, {"6", "", "33% chance for a teleport to the {{AngelRoom}}Angel Room#Teleports to the {{DevilRoom}}Devil Room instead if its door was spawned on the current floor#67% chance for random chest"}, {"7", "", "33% chance for 1 random {{AngelRoom}}Angel Room item#67% chance for 1 Soul Heart"}, {"8", "", "100% chance for 7 troll bombs"}, From 7f1326ab2863834df1c67c528f328a87bde20fb1 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Thu, 18 Nov 2021 20:48:10 -0500 Subject: [PATCH 04/41] Update en_us.lua --- descriptions/rep/en_us.lua | 42 +++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/descriptions/rep/en_us.lua b/descriptions/rep/en_us.lua index e601ad38..351f4137 100644 --- a/descriptions/rep/en_us.lua +++ b/descriptions/rep/en_us.lua @@ -17,7 +17,7 @@ local repCollectibles={ [12] = {"12", "Magic Mushroom", "↑ +1 Health up#↑ +0.3 Damage up#↑ +50% Damage Multiplier#↑ +1.5 Range up#↑ +0.3 Speed up#↑ +0.5 Tear Height#Full health!"}, [13] = {"13", "The Virus", "Poison touch#↑ +0.2 Speed up"}, -- The Virus [14] = {"14", "Roid Rage", "↑ +0.3 Speed up#↑ +1.5 Range up#↑ +0.5 Tear Height"}, -- Roid Rage - [18] = {"18", "A Dollar", "+100 Coins"}, -- A Dollar + [18] = {"18", "A Dollar", "+100 coins"}, -- A Dollar [22] = {"22", "Lunch", "↑ +1 Health up#Heals one Red Heart"}, -- Lunch [23] = {"23", "Dinner", "↑ +1 Health up#Heals one Red Heart"}, -- Dinner [24] = {"24", "Dessert", "↑ +1 Health up#Heals one Red Heart"}, -- Dessert @@ -44,7 +44,7 @@ local repCollectibles={ [78] = {"78", "Book of Revelations", "+1 Soul Heart#A Horseman replaces the current floor's boss if used#↑ +17.5% Devil or Angel Room chance"}, -- Book of Revelations [79] = {"79", "The Mark", "↑ +1 Damage up#↑ +0.2 Speed up#+1 Black Heart"}, -- The Mark [80] = {"80", "The Pact", "↑ +0.5 Damage up#↑ +0.7 Tears up#+2 Black Hearts"}, -- The Pact - [83] = {"83", "The Nail", "+ Half Black Heart#↑ +2 Damage up#↓ -0.18 Speed down#Deal contact Damage#Crush rocks"}, -- The Nail + [83] = {"83", "The Nail", "+ Half Black Heart#↑ +2 Damage up#↓ -0.18 Speed down#Deal contact damage#Crush rocks"}, -- The Nail [91] = {"91", "Spelunker Hat", "Reveals the room type of up to 2 adjacent rooms#Can also reveal Secret Rooms, Super Secret Rooms and Mini-Boss Rooms#Blocks projectiles falling from above"}, -- Spelunker Hat [98] = {"98", "The Relic", "Spawns 1 Soul Heart every 7-8 rooms"}, -- The Relic [101] = {"101", "The Halo", "↑ +1 Health up#↑ +0.3 Damage up#↑ +0.2 Tears up#↑ +0.38 Range up#↑ +0.3 Speed up#↑ +0.5 Tear Height#Heals one Red Heart"}, -- The Halo @@ -54,7 +54,7 @@ local repCollectibles={ [121] = {"121", "Odd Mushroom (Large)", "↑ +1 Health up#↑ +1 Damage up#↑ +0.38 Range up#↓ -0.2 Speed down"}, -- Odd Mushroom (Large) [123] = {"123", "Monster Manual", "Spawns a random familiar#Lasts for current floor"}, -- Monster Manual [129] = {"129", "Bucket of Lard", "↑ +2 full red heart container#↓ -0.2 Speed down"}, -- Bucket of Lard - [135] = {"135", "IV Bag", "Portable blood bank#Half a heart = 1-2 Coins#1 coin on Hard Mode#0-1 coin as Keeper"}, --IV Bag + [135] = {"135", "IV Bag", "Portable blood bank#Half a heart = 1-2 coins#1 coin on Hard Mode#0-1 coin as Keeper"}, --IV Bag [138] = {"138", "Stigmata", "↑ +1 Health up#↑ +0.3 Damage up#Heals 1 red heart"}, -- Stigmata [139] = {"139", "Mom's Purse", "You can now hold 2 trinkets#Spawns 1 random trinket"}, -- Mom's Purse [140] = {"140", "Bob's Curse", "Poison bombs#+5 bombs#Bombs leave a poison cloud"}, -- Bob's Curse @@ -64,18 +64,18 @@ local repCollectibles={ [152] = {"152", "Technology 2", "Replaces the right eye tears with an unlimited range piercing laser which fires continuously#Laser deals 13% of your damage#↓ -33% Fire Rate down"}, -- Technology 2 [153] = {"153", "Mutant Spider", "Quad shot!#↓ -58% Fire Rate down"}, -- Mutant Spider [155] = {"155", "The Peeper", "Floats around the room#Deals 17.1 contact damage per second#↑ Tears shot from Isaac's left eye deal 34% more damage"}, -- The Peeper - [158] = {"158", "Crystal Ball", "Reveals the full map#Drops a Soul Heart or a random card or rune#While held:#↑ +15% Planetarium chance#100% if a Treasure Room was skipped"}, -- Crystal Ball - [169] = {"169", "Polyphemus", "↑ +100% Damage up#↑ +4 Additional Damage up#↓ -58% Fire Rate down"}, - [171] = {"171", "Spider Butt", "Slows down enemies for 4 seconds#10 Damage to all enemies#Enemies killed with it spawn blue spiders"}, -- Spider Butt + [158] = {"158", "Crystal Ball", "Reveals the full map#Drops a Soul Heart or a random card or rune#While held:#↑ +15% {{Planetarium}}Planetarium chance#100% if a Treasure Room was skipped"}, -- Crystal Ball + [169] = {"169", "Polyphemus", "↑ +100% Damage up#↑ +4 additional Damage up#↓ -58% Fire Rate down"}, + [171] = {"171", "Spider Butt", "Slows down enemies for 4 seconds#10 damage to all enemies#Enemies killed with it spawn blue spiders"}, -- Spider Butt [172] = {"172", "Sacrificial Dagger", "Orbital knife#Blocks enemy shots#Deals 112.5 damage per second"}, -- Sacrificial Dagger [176] = {"176", "Stem Cells", "↑ +1 Health up#↑ +0.16 Shot Speed up#Heals 1 red heart"}, -- Stem Cells [178] = {"178", "Holy Water", "{{Throwable}} {{ColorOrange}}Throwable{{CR}}#Launches itself in the direction Isaac shoots#Breaks and deals 7 damage when touching an enemy#Leaves a pool of damaging creep that petrifies enemies"}, -- Holy Water [182] = {"182", "Sacred Heart", "↑ +1 Health up#↑ 230% + 1 Damage up#↓ -0.4 Tears down#↓ -0.25 Shot Speed down#Homing tears#Full Health"}, -- Sacred Heart [184] = {"184", "Holy Grail", "Grants flight#↑ +1 Health up#Heals 1 red heart"}, -- Holy Grail - [188] = {"188", "Abel", "Mirrors your movement#Shoots towards the player#Deals 3.5 damage per shot#7.5 Damage if you play Cain"}, -- Abel + [188] = {"188", "Abel", "Mirrors your movement#Shoots towards the player#Deals 3.5 damage per shot#7.5 damage as Cain"}, -- Abel [192] = {"192", "Telepathy for Dummies", "Homing tears for current room#↑ +3 Range up"}, -- Telepathy for Dummies [193] = {"193", "MEAT!", "↑ +1 Health up#↑ +0.3 Damage up#Heals 1 red heart"}, -- MEAT! - [194] = {"194", "Magic 8 Ball", "↑ +0.16 Shot Speed up#+1 card#+15% Planetarium chance"}, -- Magic 8 Ball + [194] = {"194", "Magic 8 Ball", "↑ +0.16 Shot Speed up#+1 card#+15% {{Planetarium}}Planetarium chance"}, -- Magic 8 Ball [197] = {"197", "Jesus Juice", "↑ +0.5 Damage up#↑ +0.38 Range up.#↑ +0.5 Tear Height"}, -- Jesus Juice [203] = {"203", "Humbling Bundle", "Chance to spawn the double version of pickups"}, -- Humbling Bundle [205] = {"205", "Sharp Plug", "- half Heart = Charges one slot of your active item when pressing space"}, -- Sharp Plug @@ -114,7 +114,7 @@ local repCollectibles={ [295] = {"295", "Magic Fingers", "Damages the whole room with 2x the player damage + 10 #Price: 1 coin"}, -- Magic Fingers [296] = {"296", "Converter", "Converts 1 Soul or Black Heart into 1 Red Heart Container"}, -- Converter --the SINGLE USE line isn't the standard format in order to save a line break - [297] = {"297", "Pandora's Box", "{{Warning}} SINGLE USE, spawns items based on floor:#B1: 2 Soul Hearts#B2: 2 bombs and 2 keys#C1: 1 Boss item#C2: B1+C1#D1: 4 Soul Hearts#D2: 20 Coins#W1: 2 Boss items#W2: {{Collectible33}}The Bible#???/Void: Nothing#Sheol: 1 Devil item + 1 Black Heart#Dark Room: Unlocks {{Collectible523}}Moving Box#Cat: 1 Angel item + 1 Eternal Heart#Chest: 1 Coin#Home: {{Collectible580}}Red Key"}, -- Pandora's box + [297] = {"297", "Pandora's Box", "{{Warning}} SINGLE USE, spawns items based on floor:#B1: 2 Soul Hearts#B2: 2 bombs and 2 keys#C1: 1 Boss item#C2: B1+C1#D1: 4 Soul Hearts#D2: 20 coins#W1: 2 Boss items#W2: {{Collectible33}}The Bible#???/Void: Nothing#Sheol: 1 Devil item + 1 Black Heart#Dark Room: Unlocks {{Collectible523}}Moving Box#Cat: 1 Angel item + 1 Eternal Heart#Chest: 1 coin#Home: {{Collectible580}}Red Key"}, -- Pandora's Box [300] = {"300", "Aries", "↑ +0.25 Speed up#Touching enemies hurts them#Running fast enough will prevent contact damage"}, -- Aries [307] = {"307", "Capricorn", "↑ +1 Health up#↑ +0.5 Damage up#↑ +0.1 Speed up#↑ +0.75 Range up#↑ +0.5 Fire Rate up#Gives one bomb, coin and key"}, -- Capricorn [308] = {"308", "Aquarius", "Leave a trail of creep#Creep deals 66% your damage per second#Creep synergizes with tear effects"}, -- Aquarius @@ -302,7 +302,7 @@ local repCollectibles={ [662] = {"662", "Pacifist (Cut item)", ""}, -- Pacifist (Cut item) [663] = {"663", "Tooth and Nail", "Turn invincible every 6 seconds for 1 second#Flashes right before transition"}, -- Tooth and Nail [664] = {"664", "Binge Eater", "+1 Health up#Full health#Item pedestals periodically switch between food items and the item they would hold otherwise#Picking up a food item grants temporary +3.6 damage boost, 2 small permanent stat ups and a permanent -0.03 speed down#Food items heal 3 Red Hearts"}, -- Binge Eater - [665] = {"665", "Guppy's Eye", "Shows the contents of Chests, Sacks, and Fire Places before they're opened"}, -- Guppy's Eye + [665] = {"665", "Guppy's Eye", "Shows the contents of Chests, Sacks, Shopkeepers, and Fire Places before they're opened"}, -- Guppy's Eye [666] = {"666", "", ""}, [667] = {"667", "Strawman", "Spawns Keeper as a second character#If he dies, he spawns blue spiders#Item gets removed afterwards"}, -- Strawman [668] = {"668", "Dad's Note", "Begins the sequence to access the Home floor#Trinkets left in previous {{TreasureRoom}}Treasure or {{BossRoom}}Boss Rooms turn into {{Card78}}Cracked Key"}, -- Dad's Note @@ -310,9 +310,9 @@ local repCollectibles={ [670] = {"670", "Options?", "If a room grants a clear reward, there will be two different rewards to chose from#Taking one causes the other to disappear"}, -- Options? [671] = {"671", "Candy Heart", "Gives random permanent stat boost when healing with Red Heart pickups"}, -- Candy Heart [672] = {"672", "A Pound of Flesh", "Devil deals now cost coins#Shop items now cost health#Consumables in shops are free but surrounded by spikes"}, -- A Pound of Flesh - [673] = {"673", "Redemption", "Grants 1 Soul Heart and +1 damage when entering a {{DevilRoom}}Devil Room and not taking any item/pickup"}, -- Redemption + [673] = {"673", "Redemption", "Grants 1 Soul Heart and +1 Damage when entering a {{DevilRoom}}Devil Room and not taking any item/pickup"}, -- Redemption [674] = {"674", "Spirit Shackles", "On death, Isaac's ghost is chained to his dead body and he can continue to fight with half a heart#Return to life after 10 seconds#Must be recharged by picking up a Soul Heart"}, -- Spirit Shackles - [675] = {"675", "Cracked Orb", "When taking damage, reveals random room on floor#Also unlocks doors that require keys#Can open Mega Satan door#Can reveal Ultra Secret Room"}, -- Cracked Orb + [675] = {"675", "Cracked Orb", "When you take damage:#Unlocks locked doors#Reveals a random room#Destroys all tinted and crawlspace rocks#Can open story doors#Can reveal the {{UltraSecretRoom}}Ultra Secret Room"}, -- Cracked Orb [676] = {"676", "Empty Heart", "When having an empty heart container at the start of a new floor, grants another one#Bone Hearts don't count"}, -- Empty Heart [677] = {"677", "Astral Projection", "When getting hit, stops time for 3 seconds#Isaac becomes a ghost and leaves his body#In ghost form gain flight, spectral tears and also negate next hit taken"}, -- Astral Projection [678] = {"678", "C Section", "Gain a short delay charge attack that fires homing, spectral fetus tears"}, -- C Section @@ -329,9 +329,9 @@ local repCollectibles={ [689] = {"689", "Glitched Crown", "Item pedestals quickly cycle between 5 random items"}, -- Glitched Crown [690] = {"690", "Belly Jelly", "Causes enemies to bounce off of Isaac#Bouncing them against obstacles deals damage#50% chance that Isaac ignores contact damage#50% chance to deflect enemy projectiles"}, -- Belly Jelly [691] = {"691", "Sacred Orb", "Prevents low-quality (0-1) items from spawning#Greatly increases the quality of spawned items"}, -- Sacred Orb - [692] = {"692", "Sanguine Bond", "Spawns a set of spikes in the {{DevilRoom}}Devil Room#Taking damage from the spikes can grant a reward:#35%: 6 pennies#15%: +0.5 Damage up#5%: 2 Black Hearts#2%: Random item#1%: Leviathan transformation"}, -- Sanguine Bond //TBD: Someone on the wiki said the percentages were changed and that's mentioned in the changelog. Would like if someone could check those. + [692] = {"692", "Sanguine Bond", "Spawns a set of spikes in the {{DevilRoom}}Devil Room#Taking damage from the spikes can grant a reward:#35%: Nothing#33%: +0.5 Damage up#15%: 6 pennies#10%: 2 Black Hearts#5%: Random Devil item#2%: Leviathan transformation"}, -- Sanguine Bond //PERCENTAGES NOT CONFIRMED, updated in patch, taken from Wiki [693] = {"693", "The Swarm", "Grants 9 orbital flies which turn into Blue Flies after they block a shot#Spawns a new fly every room cleared"}, -- The Swarm - [694] = {"694", "Heartbreak", "Grants 3 broken hearts#↑ +0.25 damage for every broken heart#Every fatal hit will add 2 more broken hearts#You die at 12 broken hearts"}, -- Heartbreak + [694] = {"694", "Heartbreak", "Grants 3 broken hearts#↑ +0.25 Damage for every broken heart#Every fatal hit will add 2 more broken hearts#You die at 12 broken hearts"}, -- Heartbreak [695] = {"695", "Bloody Gust", "When taking damage, gain speed and tears up for the current floor#Up to +1.02 Speed and +3 Fire Rate possible"}, -- Bloody Gust [696] = {"696", "Salvation", "Grants halo that spawns beams of light on enemies inside it#The halo grows larger the more damage you've taken this floor"}, -- Salvation [697] = {"697", "Vanishing Twin", "Familiar that becomes a clone of the boss when entering the boss room#Defeating it drops an extra item#Clone is slower and has 75% of the original boss health"}, -- Vanishing Twin @@ -342,7 +342,7 @@ local repCollectibles={ [702] = {"702", "Vengeful Spirit", "After taking damage, spawns an orbital wisp that lasts for the entire floor#Maximum of 6#They fire tears but do not block shots"}, -- Vengeful Spirit [703] = {"703", "Esau Jr.", "Swaps between the current character and Esau Jr., who has 3 Black Hearts, +2 damage and flight#Characters have independent items and health#{{Warning}} Dying as either character ends the run"}, -- Esau Jr. [704] = {"704", "Berserk!", "Berserk mode for 5 seconds:#↑ +0.4 Speed up#↑ Tears up#↑ +3 Damage up#Restricts attacks to a melee weapon"}, -- Berserk! - [705] = {"705", "Dark Arts", "When used, gain ↑ +1 speed and ability to walk through enemies/bullets for 1 second#Shortly increases damage by 1 for each enemy touched#Damages touched enemies with 3x your damage"}, -- Dark Arts + [705] = {"705", "Dark Arts", "When used, gain ↑ +1 Speed and ability to walk through enemies/bullets for 1 second#Shortly increases damage by 1 for each enemy touched#Damages touched enemies with 3x your damage"}, -- Dark Arts [706] = {"706", "Abyss", "Destroys all items in the room and spawns an attack fly familiar for each#Effects of fly depends on the items"}, -- Abyss [707] = {"707", "Supper", "↑ +1 Health up#Heals one Red Heart"}, -- Supper [708] = {"708", "Stapler", "↑ +1 Damage up#Prevents Isaac from firing tears from one eye"}, -- Stapler @@ -357,7 +357,7 @@ local repCollectibles={ [717] = {"717", "Keeper's Kin", "Rocks and props spawn 2 blue spiders when destroyed#Rocks can occasionally spawn blue spiders when in a hostile room"}, -- Keeper's Kin [718] = {"718", "Keeper's Robe (Cut item)", ""}, -- Keepers Robe (Cut item) [719] = {"719", "Keeper's Box", "Spawns a random shop item/pickup"}, -- Keeper's Box - [720] = {"720", "Everything Jar", "Spawns certain pickups based on how many charges it has#If fully charged, it has a strong random effect#Charge Rewards:#{{Blank}} 1:{{Collectible36}} 2:{{Coin}} 3:{{Bomb}} 4:{{Key}}#{{Blank}} 5:{{Heart}} 6:{{Pill}} 7:{{Card}} 8:{{SoulHeart}}#{{Blank}} 9:{{GoldenHeart}} 10:{{GoldenKey}} 11:{{GoldenBomb}}"}, -- Everything Jar + [720] = {"720", "Everything Jar", "Spawns certain pickups based on how many charges it has#If fully charged, it has a strong random effect#Charge Rewards:#{{Blank}} 1:{{PoopPickup}} 2:{{Coin}} 3:{{Bomb}} 4:{{Key}}#{{Blank}} 5:{{Heart}} 6:{{Pill}} 7:{{Card}} 8:{{SoulHeart}}#{{Blank}} 9:{{GoldenHeart}} 10:{{GoldenKey}} 11:{{GoldenBomb}}"}, -- Everything Jar [721] = {"721", "TMTRAINER", "Causes all future items to be 'glitched'#Grants them completely random effects"}, -- TMTRAINER [722] = {"722", "Anima Sola", "Chains down the nearest enemy for 5 seconds, preventing them from acting"}, -- Anima Sola [723] = {"723", "Spindown Dice", "Transforms all items in the room by decreasing their internal ID number by one"}, -- Spindown Dice @@ -488,7 +488,7 @@ local repTrinkets={ [50] = {"50", "Burnt Penny", "25% chance to drop a bomb when picking up coins"}, -- Burnt Penny [51] = {"51", "Flat Penny", "25% chance to drop a key when picking up coins"}, -- Flat Penny [65] = {"65", "Tape Worm", "↑ +3 Range up"}, -- Tape Worm - [66] = {"66", "Lazy Worm", "↓ -0.5 Shot Speed down#↑ +2 Tear Height"}, -- Lazy Worm + [66] = {"66", "Lazy Worm", "↓ -0.4 Shot Speed down"}, -- Lazy Worm [69] = {"69", "Faded Polaroid", "Camouflages the player randomly#Confuses enemies#Can be used to open the door to the \"Home\" floor"}, -- Faded Polaroid [80] = {"80", "Black Feather", "↑ +0.5 Damage up for each evil item held"}, -- Black Feather [92] = {"92", "Cracked Crown", "↑ Stat increases of your items are 20% more effective"}, -- Cracked Crown @@ -522,7 +522,7 @@ local repTrinkets={ [149] = {"149", "Panic Button", "Activates your active item upon taking damage"}, -- Panic Button [150] = {"150", "Blue Key", "Entering a room that requires a key brings you in a room resembling the Hush stage#Room acts as an in-between of the two rooms"}, -- Blue Key [151] = {"151", "Flat File", "Causes spikes to retract, making them harmless#Also affects {{CursedRoom}}Curse Room doors, mimics and any spike obstacle"}, -- Flat File - [152] = {"152", "Telescope Lens", "Increases the default chance for a Planetarium to spawn to 15%#Adds another 10% chance#More than one Planetarium can spawn#Planetariums can now spawn in the Womb and Corpse"}, -- Telescope Lens + [152] = {"152", "Telescope Lens", "Increases the default chance for a {{Planetarium}}Planetarium to spawn to 15%#Adds another 10% chance#More than one Planetarium can spawn#Planetariums can now spawn in the Womb and Corpse"}, -- Telescope Lens [153] = {"153", "Mom's Lock", "Has a chance to grant the effects of a random Mom item each room"}, -- Mom's Lock [154] = {"154", "Dice Bag", "When entering a new room, grants a temporary Dice consumable item#The Dice disappears when leaving#Grants ability to hold two consumables"}, -- Dice Bag [155] = {"155", "Holy Crown", "Spawns a {{TreasureRoom}}Treasure Room and {{Shop}}Shop in Cathedral"}, -- Holy Crown @@ -796,7 +796,7 @@ local repCards={ [71] = {"71", "XV - The Devil?", "Invokes {{Collectible33}} The Bible effect#Grants {{Collectible390}} Seraphim and flight for 30 seconds"}, -- XV - The Devil? [72] = {"72", "XVI - The Tower?", "Spawns 6 clusters of random rocks and obstacles#Clusters will often contain Tinted Rocks"}, -- XVI - The Tower? [73] = {"73", "XVII - The Stars?", "Removes oldest passive item (ignoring starting items)#Spawns 2 random items from current room's item pool"}, -- XVII - The Stars? - [74] = {"74", "XVIII - The Moon?", "Teleports you to Ultra Secret Room#Pathway back will be made of red rooms"}, -- XVIII - The Moon? + [74] = {"74", "XVIII - The Moon?", "Teleports you to the {{UltraSecretRoom}}Ultra Secret Room#Pathway back will be made of red rooms"}, -- XVIII - The Moon? [75] = {"75", "XIX - The Sun?", "For the current floor:#↑ Gain {{Collectible159}} Spirit of the Night#↑ +1.5 Damage up#Turns your Red Hearts into Bone Hearts#Applies Curse of Darkness"}, -- XIX - The Sun? [76] = {"76", "XX - Judgement?", "Spawns a Restock Machine"}, -- XX - Judgement? [77] = {"77", "XXI - The World?", "Spawns a trap door to a crawl space"}, -- XXI - The World? @@ -896,6 +896,10 @@ EID.descriptions["en_us"].horsepills={ EID.descriptions["en_us"].CraftingBagContent = "Bag:" EID.descriptions["en_us"].CraftingRoomContent = "Room:" EID.descriptions["en_us"].CraftingFloorContent = "Floor:" + +EID.descriptions["en_us"].CraftingBagQuality = "Bag Quality:" +EID.descriptions["en_us"].CraftingBestQuality = "Best Quality:" + EID.descriptions["en_us"].CraftingResults = "(Scroll: hold {{CONFIG_BoC_Toggle}} + {{ButtonY}} {{ButtonA}},#Lock: {{ButtonX}}, Refresh: {{ButtonB}})" EID.descriptions["en_us"].CraftingBagModError = "!!! {{ColorRed}}ERROR:#{{ColorRed}}The \"Crafting result calculation\" feature currently does not work when item mods are installed!#{{ColorRed}}Please uninstall the item mods or deactivate the Bag of Crafting descriptions in the config" EID.descriptions["en_us"].AchievementWarningTitle = "{{ColorYellow}}!!! WARNING !!!" From 675de3f18586b2eb3a548753feff1ada919b36fc Mon Sep 17 00:00:00 2001 From: Buurazu Date: Thu, 18 Nov 2021 21:01:25 -0500 Subject: [PATCH 05/41] Update en_us.lua --- descriptions/rep/en_us.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/descriptions/rep/en_us.lua b/descriptions/rep/en_us.lua index 351f4137..6f2bff7b 100644 --- a/descriptions/rep/en_us.lua +++ b/descriptions/rep/en_us.lua @@ -312,7 +312,7 @@ local repCollectibles={ [672] = {"672", "A Pound of Flesh", "Devil deals now cost coins#Shop items now cost health#Consumables in shops are free but surrounded by spikes"}, -- A Pound of Flesh [673] = {"673", "Redemption", "Grants 1 Soul Heart and +1 Damage when entering a {{DevilRoom}}Devil Room and not taking any item/pickup"}, -- Redemption [674] = {"674", "Spirit Shackles", "On death, Isaac's ghost is chained to his dead body and he can continue to fight with half a heart#Return to life after 10 seconds#Must be recharged by picking up a Soul Heart"}, -- Spirit Shackles - [675] = {"675", "Cracked Orb", "When you take damage:#Unlocks locked doors#Reveals a random room#Destroys all tinted and crawlspace rocks#Can open story doors#Can reveal the {{UltraSecretRoom}}Ultra Secret Room"}, -- Cracked Orb + [675] = {"675", "Cracked Orb", "When you take damage:#Unlocks locked doors in the current room#Reveals a random room#Destroys all tinted and crawlspace rocks#Can open story doors#Can reveal the {{UltraSecretRoom}}Ultra Secret Room"}, -- Cracked Orb [676] = {"676", "Empty Heart", "When having an empty heart container at the start of a new floor, grants another one#Bone Hearts don't count"}, -- Empty Heart [677] = {"677", "Astral Projection", "When getting hit, stops time for 3 seconds#Isaac becomes a ghost and leaves his body#In ghost form gain flight, spectral tears and also negate next hit taken"}, -- Astral Projection [678] = {"678", "C Section", "Gain a short delay charge attack that fires homing, spectral fetus tears"}, -- C Section From 48269e74e77da0a1a8559bd78f1b155b5f68e9f9 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Thu, 18 Nov 2021 21:01:56 -0500 Subject: [PATCH 06/41] Damage is a stat, change transformation names 2 --- descriptions/ab+/en_us.lua | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/descriptions/ab+/en_us.lua b/descriptions/ab+/en_us.lua index 787b92bf..aac7aa5e 100644 --- a/descriptions/ab+/en_us.lua +++ b/descriptions/ab+/en_us.lua @@ -20,7 +20,7 @@ EID.descriptions["en_us"].collectibles={ {"5", "My Reflection", "Gives tears a boomerang effect#↑ +1.5 Range up#↑ +0.6 Shot Speed up#↑ +1 Tear Height"}, {"6", "Number One", "↑ +1.5 Tears up#↓ -17.62 Range down#↑ +0.76 Tear Height"}, {"7", "Blood of the Martyr", "↑ +1 Damage up#↑ +50% if you have Book of Belial or Devil Card effect active"}, - {"8", "Brother Bobby", "Normal tear familiar#Deals 3.5 Damage per tear"}, + {"8", "Brother Bobby", "Normal tear familiar#Deals 3.5 damage per tear"}, {"9", "Skatole", "All fly enemies are friendly"}, {"10", "Halo of Flies", "+2 fly orbitals#Blocks enemy projectiles"}, {"11", "1up!", "↑ +1 life#Respawn with full health"}, @@ -68,8 +68,8 @@ EID.descriptions["en_us"].collectibles={ {"53", "Magneto", "Magnetic attraction for pickups"}, {"54", "Treasure Map", "Reveals the floor-layout"}, {"55", "Mom's Eye", "Chance to shoot a tear backwards#Chance is 100% at 2 Luck"}, - {"56", "Lemon Mishap", "Drop a pool of lemonade#Deals 66 contact Damage per second"}, - {"57", "Distant Admiration", "Mid-range fly orbital#Deals 75 contact Damage per second"}, + {"56", "Lemon Mishap", "Drop a pool of lemonade#Deals 66 contact damage per second"}, + {"57", "Distant Admiration", "Mid-range fly orbital#Deals 75 contact damage per second"}, {"58", "Book of Shadows", "Invincibility for 10 secs"}, {"59", "", ""}, {"60", "The Ladder", "Walk over small gaps"}, @@ -79,9 +79,9 @@ EID.descriptions["en_us"].collectibles={ {"64", "Steam Sale", "-50% on shop items#Getting this item two times will make everything free"}, {"65", "Anarchist Cookbook", "Spawn 6 troll bombs near the center of the room"}, {"66", "The Hourglass", "Slow down enemies for 8 secs"}, - {"67", "Sister Maggy", "Normal tear familiar#Deals 3.5 Damage per tear"}, + {"67", "Sister Maggy", "Normal tear familiar#Deals 3.5 damage per tear"}, {"68", "Technology", "Tears are now lasers"}, - {"69", "Chocolate Milk", "Chargeable tears#↑ up to 400% Damage#↓ Tears down"}, + {"69", "Chocolate Milk", "Chargeable tears#↑ Up to 400% Damage#↓ Tears down"}, {"70", "Growth Hormones", "↑ +1 Damage up#↑ +0.4 Speed up"}, {"71", "Mini Mush", "↑ +0.3 Speed up#↓ -4.25 Range down*#↑ +1.5 Tear Height*#(*both add up to a slight Range up)#↑ Size down"}, {"72", "Rosary", "+3 Soul Hearts#{{Collectible33}} The Bible is added to all item pools"}, @@ -181,13 +181,13 @@ EID.descriptions["en_us"].collectibles={ {"166", "D20", "Reroll pickups"}, {"167", "Harlequin Baby", "Shoots two tears in a V-shaped pattern#Deals 4 damage per shot"}, {"168", "Epic Fetus", "Controllable airstrike instead of tears#Deals 20 times your damage"}, - {"169", "Polyphemus", "↑ +100% Damage up#↑ +4 Additional Damage up#↓ Tears down"}, + {"169", "Polyphemus", "↑ +100% Damage up#↑ +4 additional Damage up#↓ Tears down"}, {"170", "Daddy Longlegs", "Stomps on enemies#Deals 40 damage per second"}, - {"171", "Spider Butt", "Slows down enemies for 4 seconds#10 Damage to all enemies"}, + {"171", "Spider Butt", "Slows down enemies for 4 seconds#10 damage to all enemies"}, {"172", "Sacrificial Dagger", "Orbital knife#Blocks enemy shots#Deals 225 damage per second"}, {"173", "Mitre", "Higher chance to find Soul Hearts"}, {"174", "Rainbow Baby", "Shoots random tears#Deals 3-5 damage per shot"}, - {"175", "Dad's Key", "Opens all doors in the current room, including Secret Rooms, Challenge Rooms, and the Mega Satan door"}, + {"175", "Dad's Key", "Opens all doors in the room, including {{SecretRoom}}{{SuperSecretRoom}}Secret Rooms, {{ChallengeRoom}}{{BossRushRoom}}Challenge Rooms, and the Mega Satan door"}, {"176", "Stem Cells", "↑ +1 Health up#↑ +0.16 Shot Speed up"}, {"177", "Portable Slot", "Portable slot machine"}, {"178", "Holy Water", "Leaves pool of creep when you get hit#Deals 24 damage per second"}, @@ -198,7 +198,7 @@ EID.descriptions["en_us"].collectibles={ {"183", "Tooth Picks", "↑ +0.7 Tears up.#↑ +0.16 Shot Speed up"}, {"184", "Holy Grail", "Grants flight#↑ +1 Health up"}, {"185", "Dead Dove", "Flight#Spectral tears"}, - {"186", "Blood Rights", "↑ Deal 40 Damage to every enemy#↓ Deals 1 heart of damage to you#Prioritizes Red Hearts"}, + {"186", "Blood Rights", "↑ Deal 40 damage to every enemy#↓ Deals 1 heart of damage to you#Prioritizes Red Hearts"}, {"187", "Guppy's Hairball", "Growing hairball#Swings around you#Grows when it kills an enemy#Bigger ball deals more damage"}, {"188", "Abel", "Mirrors your movement#Shoots towards the player#Deals 3.5 damage per shot"}, {"189", "SMB Super Fan", "↑ +1 Health up#↑ +0.3 Damage up#↑ +0.2 Tears up#↑ +0.5 Range up#↑ +0.2 Speed up#↑ +1 Tear Height#Full health"}, @@ -847,10 +847,10 @@ EID.descriptions["en_us"].transformations = { "", -- 0 = none "Guppy", -- 1 "Fun Guy", -- 2 - "Lord of the Flies", -- 3 + "Beelzebub", -- 3 "Conjoined", -- 4 "Spun", -- 5 - "Mom", -- 6 + "Yes Mother?", -- 6 "Oh Crap", -- 7 "Bob", -- 8 "Leviathan", -- 9 From 6f50ebf2ab89a13b03bd89ff4d9a59ee69e186c7 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Thu, 18 Nov 2021 21:03:58 -0500 Subject: [PATCH 07/41] new icons --- eid_data.lua | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/eid_data.lua b/eid_data.lua index 3085fd76..bd61f09c 100644 --- a/eid_data.lua +++ b/eid_data.lua @@ -144,6 +144,7 @@ EID.InlineIcons = { ----- Modded Pill-Colors need to be added manually! (Example in Wiki) ["Battery"] = {"pickups", 9, 8, 9}, ["Timer"] = {"pickups", 10, 8, 9}, + ["PoopPickup"] = {"pickups", 11, 8, 9}, ["Collectible"] = {"Collectible", 0, 7, 7}, ----- Use Markup "Collectible"+ ITEMID to render collectible sprites (example: {{Collectible1}} = Sad Onion) ----- Modded Collectible-icons are automatically generated. No code needed! @@ -173,6 +174,12 @@ EID.InlineIcons = { ["ChestRoom"] = {"roomicons", 16, 8, 9, 0, 2}, ["IsaacsRoom"] = {"roomicons", 17, 8, 9, 0, 2}, ["BarrenRoom"] = {"roomicons", 18, 8, 9, 0, 2}, + ["UltraSecretRoom"] = {"roomicons", 19, 8, 9, 0, 2}, + ["Planetarium"] = {"roomicons", 20, 8, 9, 0, 2}, + ["PoopRoomIcon"] = {"roomicons", 21, 8, 9, 0, 2}, + ["RedChestRoomIcon"] = {"roomicons", 22, 8, 9, 0, 2}, + ["GoldenChestRoomIcon"] = {"roomicons", 23, 8, 9, 0, 2}, + -- Roomshape Icons ["Room"] = {"roomshape", 0, 9, 9, 0, 2}, ["RoomSmallHorizontal"] = {"roomshape", 1, 9, 9}, @@ -191,9 +198,11 @@ EID.InlineIcons = { ["Guppy"] = {"Transformation1", 0, 16, 16, 0, -1, EID.IconSprite}, ["FunGuy"] = {"Transformation2", 0, 16, 16, 0, -1, EID.IconSprite}, ["LordoftheFlies"] = {"Transformation3", 0, 16, 16, 0, -1, EID.IconSprite}, + ["Beelzebub"] = {"Transformation3", 0, 16, 16, 0, -1, EID.IconSprite}, ["Conjoined"] = {"Transformation4", 0, 16, 16, 0, -1, EID.IconSprite}, ["Spun"] = {"Transformation5", 0, 16, 16, 0, -1, EID.IconSprite}, ["Mom"] = {"Transformation6", 0, 16, 16, 0, -1, EID.IconSprite}, + ["YesMother?"] = {"Transformation6", 0, 16, 16, 0, -1, EID.IconSprite}, ["OhCrap"] = {"Transformation7", 0, 16, 16, 0, -1, EID.IconSprite}, ["Bob"] = {"Transformation8", 0, 16, 16, 0, -1, EID.IconSprite}, ["Leviathan"] = {"Transformation9", 0, 16, 16, 0, -1, EID.IconSprite}, From 4b41e12456c0d2a536327c5f2903144e4e00540e Mon Sep 17 00:00:00 2001 From: Buurazu Date: Thu, 18 Nov 2021 22:05:48 -0500 Subject: [PATCH 08/41] new icons --- resources/gfx/eid_inline_icons.anm2 | 8 +++++++- resources/gfx/eid_inline_icons.png | Bin 12888 -> 13387 bytes 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/resources/gfx/eid_inline_icons.anm2 b/resources/gfx/eid_inline_icons.anm2 index 0a1a1c79..27d97522 100644 --- a/resources/gfx/eid_inline_icons.anm2 +++ b/resources/gfx/eid_inline_icons.anm2 @@ -1,5 +1,5 @@ - + @@ -137,6 +137,7 @@ + @@ -168,6 +169,11 @@ + + + + + diff --git a/resources/gfx/eid_inline_icons.png b/resources/gfx/eid_inline_icons.png index b30a0e213946efee8ba8a0d51c8174d0f3b6bb32..2b9dc449b30947a1275225f36bdfd4d7d8861013 100644 GIT binary patch delta 10727 zcmY*E_nyyZep?UPRkq^;FQBRla=NhDJ-<&d%Bi|bm#?gw;ENhc zVOAAPOODvu$4IP*q`VwE;t;veKH``hMV|3Q?Kd0R#Iad^l0^l=h{Ql$8inN=HauU1 zjsnkcI5z9!r<#pD95Ifv3MH&~4Aa+Z=~6R-hZ)IIhktQm#dhJF$;ncV`@1gFrl0l! zsZR!UvV1xOq^JB!S{CWgTFWvUNccUO!*KlP^tW~~XnRZf`R3bREs@yvI6iH&7)lB0 zCNFZ$U`!AgJb|#gJaze)#nJL3^vlz0>sGxL=(-3`$<;z|Nur_NeSP6qqQ_LCPdH0d zN?cpQyvdO!ERCA_bwgVAN&*W+Q*2+}0Y#g9CBb^&tBvYGq9QW{jP|(3 zyuo8(e!KCKIfuEw4#IH4K3s6CdiwIz_*jWLU9u|9*WB}@TdNqBTRIF^M0g<7!|?yy z{}NSMgB*S}rDD$6lo`&q@<${F{1|e?#v?8!d&|JmFjegtxqZj%9d0{Gqi&Yt~QCW=~0n!O4l(?VVc_nTizt zfb>Oa*{_M}WznlGtI-_dBpc*2o&JGVP*@rvZw4-iW68j#KQ%cyYKU9{17u8wyE45d z-1t7=^7;VN&2fTfbwyzD-R!9&IZov}kygt)=}!>CX=j-T{V;t0bYTG2&O-B@*Y!UV zri(&eH7rvS&=iR5?q=l~E8^E0n+RlpLg_{qE3kXP6N zN+iOiVkE$c#G?$V8zniLE~J9c2^F_O&8r4@al^UWE!P|bB!^;n;9w?wy4go#n2 zYL@=Qy|4Q_eh?gDnxpE(K+l{^OKwv-EjQEA21R+=q3h{jg?Qu^+Cr9m;FplurFE+c z)9>ZbadBnG<%FQ zVt`!QZ#}xaB*QIjK_R1Xww@Y}bY#%;48>o>0*|6fFB`e zC|qA($H&BEX9@}k{0v3$EN*^p3TO&WL_R{zHo;w-$5e)Jl@h+$W1w1l-x;PT>D|+h zl$dy|$#A#pe0+7b0Uk6f88_L3mP2DM_mRLz3zj;KplyV6$Sdl+w9AeIsi@;sV4k_w zx0Tu4*Wsg~cU8I26LCRl*}*nR-7*<^*WKtp!Cv2rf)BcfTF_12Po}YlGg5`Z;rO|Q z$vl+G1Gx*%1vo?paASP3H$%zbH7G}$VOtdIW|3v~%W&M~6bz4?xL zmJh8HTT{yNzPh|n2d~yuTc96#y?&^n?CDD(f7qG(OXAe|0zE4%5TpM0fW>5QK@TMB z+D6xm^y^#%;ugSK&82FalOkQx+#8XWK?K6CyvbVx5ifh^d}IELkIy?DSlwvdeTWS^ zx4D}M`Fc5iQ+-c$d}Lb6yUR$y3o7N(v_boYT1i!JA@V2MO9_rtQqD1r`GS#)n<5j6 z7YDJmBPABE(`lAl)80`1!aBxJ2{tqCQTzTh#m2=rI9=-DV0^? zR{cl?z4=I8T(g6E2T4Fjhq+hcumu19g!bDjI^6_)N2lu4UH2mozVM<@qRu(ed>p#Y zoOH0f2GC2TiP+-5nyRl%$)p zg*uhNjw8&kbq8w<1 zz3jcaU`9(0hJrvPNVey5cwv$&KgT>FB^Qa8*qaJtu)IP9W)SAbU-Up=f*&(x3?)=m z+3qskR}4=`uXa`SoHs-focsEi+;o3TslpL#g-ys+If+q7ZdN?~sk$Ei=JOhwo1z!N1KCd4kJEv*{xW%GSc6$lGL9) z6XNyb;ApiPA@TotFjS`F$ImAlw*-%P-hOJ}KkD#{Pu45HD>QRy;HuFWalG1-)1}dF z)(UeQ6ZouCa%z9uuly5NY3&XAW!Kw^qhuJ8u&R4zijZ;W-C<1MD_V?v@@z5_uw`F0CJP#5FV_94W5jp|un z5AW{izdP8RS^v=N$E%%BzkB%|?a`Xg_gw1gmNC;}Evc^YaJ_4&)Gv4xmJabSsmcN}97Re<)t8=|{BIow^&&zDv-R;6*O6>=&s`jttt+ zYuEi38%!$XFGp*a(o2$=u(^Ev`xswKA*gvJ(=kcL%k5@5G=$H=t1ZBLa>qBRE__77 zN?3yi$9CUxS_leXp1=d2o)EU8FEE3?o1yOY?K;V?DYA4x7Nb^H_1&35s=R=NBRT}w zrg5GAy}M}=9KEdFZDO^Bq;vkYv6iMYY;{YSlhSf+pVK5hst!F)U5l(qA~@k!+604b zCNPRy^-k5Ldjm82Me=HsbNGf18qOv4YPCBPbD2)*BJDqSS)YnwRLRP}5IYZqed$eX z4xqMT&1VB9_5>P%dEg2S8jQ6Lvv5V$&aj{q8AxKds7XyY&LSM@@ z89oF)Xt~aY7rQ^~mRZ&}A|{$&d8{#cysFmX79n$ehv0niqKd8uFC{1>1nSKAu~L|6 z8w%1^Q^S7@4c*5p@^tXVblILf;7Fe}LE$hnvIAQ>`h1!1FR5_H*1Cen;)uUZptW|I z;(SY7ED7$|K^`kJ^K5#&bw4dG31m^D7G4v;uEjyVl`4k7FT3CMxnp8Z5kshH&(BIF zAd&CrWH&Z8Zt8--udQ6#<8Ih4>&rw3b;ztD(8F_gcRy3(Mi0>a{Iuc8w|6bMt}DRf zy?JRO%&+BqVyjoQLsYr(@f4FN6bl#EU=aZ`zm^udDQmoFf!f}Mdn>hSSq%F9k_lwK zb>WuiwkToAylD77@=N&U+7fU9m`|H;ib8KHpM~uD5p79F$$vQXNQ!zk&hzn4l~t|O zi^to_(Uxzb8B}C^DCRz$;jNzYD*-Q4MKR%UjNux1&4|^svp|Z(UzwMgWkz*s?F=$d zZid^L(Rd;CwO=eM>f0r+8lJ9i_k{D(cn21hm)BFkER1qi7Tc}k(l0C{_*c#QM@FVc zHzV9li4rm76CGCuJE?N130`Mr&7Dn)XrxQh6FeR6yE);sXG`uJ-zawBmIJz4o)IPP zBCgeq$IKrPNfnA?N%p968vPApJyRkOY`3g|4ld}Trsy8Mivd~+jrMlwItu3G;26Wy zFaKaa)n4`E3www+=?50q2f_v`1qpeq!Ra#Na}Pbe#2G4Ke;d>%;+>D>a;sP}Bq$zE z&!ZzP*^)u@imAh|v=%2;079CP78A@+dOIqEQ4Y5xb%1s>(`rl5_AWZ*TR9yX`jxOEA2n+3Mr%AQ8=r=Ku&(}3thqL6mYrF4FvAI8d zBBFJDO39NFT@(ittS#rHi@|q3FOZ1h3EfIQEL>iB1nH5RbZgx8F+v9TF6xwEAOx6hAt z|9GMXPK=Gs2?`D>Y-?i>pv|W!%UWUL`~Z8DCmbK)vJ8wp(TmHJ%Myq0U@b1xjkv4W zW77~(mXtfSU~%gm*OzBLX5i#CkSjcL=^%f&=iVG4DowarSGj6SP=fq2%*^O78mqpJDFcd6{3&UYSs|gWN zOtgz(M54cDHoFIf2gj`XoZ#uL-yw>d=c>->fcIkXYlbG~!z~JiCR(=R@ZZ0wOs3Lg zfKENlI_!#{?6L1|i#<0ImcCWA-ALx_zOjZ!=_2NGoSbKeDfz0Z_|MKeAAWqd!skcm zE-!Mv-cP<>jP)MRQ>KSoSy|cX`tU|vTU0-jZ0l1hA|w{f+~@S1Y=7xqY9I;HxNCM=px?uq(Q=HNjg5B`vMI z*#rO4ZiK#>Vc0)8-QqR>H0r`V_|coUzGpq@&(AX;Cs@3NKYhemqhXTIR@3U6iFHb^ zT1%2JA&N(Vby!(LL&)z~e+)hGoxZ1lqJq$nBbS~wy7tM_r*SZsp26t91o(uPkZcPF zXTBS?e~aSKSqK!F$>e-LeEY5)p-YgTXa9PNM*)kHoV;v~H?24N(Y?27E#!e-H5WO@ zx6q8R!^_mGrIuHo$4CaBZdbb;ozwfd^+@2l4a4B3)K9q-=KiJhN5 z95Z@o>l=qp)(T0U4oy^6D}&5uC+&Z>HN7W?EYyPu07{ru&db5Cn(W>Snr`Alv@L7@v3Tl+JLS`xD-!$ab4N8>~IeMjI6l! zn(;+R5%2U@^{tlfX7i}dJnb+Lm6&m3azDaAivT^QmZyp>`S@OLtXfpx;3Y+-d ziXYl)Ak4}#XS+X^ZPGRN4_cjB_mk1cINPd>wAh(R=8hi1L1uf4kvo*Z>%Dh&8V9)O z%EV3cy80SoOcHv}`q#qVm43~8S!@3tnCuJ2TNpR2E??~b_PnVr>m@VU)8eeh$2x1D z(j%Cjo>m>@-1$@)t-Zhue0032Ch)Hbu3SGb`PSOszl5s$LiId1TKZLBo#WGNM-&a6 z1e8Wqb;0#w?>rHHt3JcEGROCFxZC$QqS%-U=kFt-ur8)R9n6R7P1x<9MP0prK-5@`h-cO(6FiVCz%Od`vS z8&-xzm*RW5itoO5CL~F{G&~7gDOJ-m$M9D@ee3E0J<>|{xcA}X;AUAXXX>!Fo@a~n z-W-DeuC&09q93S<5qo3C?e*x-ZWUd#%7x*3+&i zq_=!4*Xlw{DZvU*^P{JyXMDzjf8_Somy?HQdd&yYgFh&S`%;OzfSQ0(&VHg7bz&Cgj$te0x=5@OIxUhzm zyG+_F0CG84inf=Qou+r&Klv};a@v&9QCfWmWI0(VVrRS}arGGe+ez%COz+Zm z{X7G{X^(3qLFqVMiUC^R+QI~x{+(NLeNtMt70Xs(eze?KSYF=S9V%0|x5I#=y_;pI zpmsF^tZfwR#2lqR)Ne@KT_c7mD^Ks4O@OQ(XEXL3vfV`ELWzO2%|TF0qXeGFh@&&#goj4_A=P; z#@iQ54fkf44Dbxo=(ha~Q;9yK#+Hb|RcG}IC)SgBXN-yIFW$RKyquh|rpkd~VPQX_ z;*fnj896!3AuSF?iDuPB0pCiCw`N~fKxTRXUPhZI9bMfJ@%iTtQA>0MKl?Hx=_T}t z->9p5B(zPic=z^jCIZ2gK6y zcIDCFb{Rf9LQaGyO>AC>4maHa$;J5sNFYrZ6q^)|P*eOW*cz3G6ILtY@s4LP!BsnC z8L#e>gNsSqer5B5b?+nzGavItBl*&%Yw(oTGRcJNDshnhE3Bu=PI|}qymW%!#psFo zVy2z++`eK^v7H}Ids74o@{nmsd;3=nL|@IPW}St+i>Lc9_=RV*Wb7lQ8%%CuA%LMD zl#6LInE3KW{&+DMKCV%NaHe;^mgqO(p$4f5 zShCa>oFr|$F2%GN2e5cdjnkjqO3sH4`PaY}Hw6?G73JKa0x2zW;_0)qMqLfVb#-+E z+dtRS2G(?!iUnM+8${JRe$pt*=2Do8ba<4O*5gDF3h4>xnY+cVL=Jc60{B#PLvExj77p=Q1l}|ySkM&1f=~$Bur3hom266Lwha?pt1gmU*j)gT7fnwM1skx1DJ}8{9PF+BkmF|L$A5-Z>uhBuJ zVL`ocAt@bfg`>eCLbwHNxl|4ikc5GAi!svU{fDewvC)je>Z;}UG0R>}T!ksy0tnVQ zsyX%BHbg+*+_*nUHGak4jm1h!xs;eRZDmvQeJ}S@wO4A!iI3$){op~@ES&rwN(keT z$X%|n-JP906gnZ5>*Dt?fIwdE?Cfx7Dyu1Nz#9ct)gG#>`hcAB@`Kn7&0cb~SDaB2 z`Sw(PHsYk);J2oxQRq>SkcNeacWLqIHr2=5=ZD{nM_nW~3_e>^@g1coxtkcmDc~#F zhb65l8V^RKRLv#~ z?8XTVQ@nV%0^*`oG9y!}j0Vt{jKko^>Y$*Ww1;3g{OvvZVwZ$0z}%dJ!3Jq1Pi#x1 zPC#ohxKz=S9k6wbUY6)Q|Io-tIVUGV&E_>6m*49#Y*ih^be16hM9GYx(DqAAP|Z!u zwHL~S{l><1XY$2hHheTg3f!t3MRy#0OrLi3fed&Fm&En@Dvh~(h5FQt{W-5ZKqjoL zyH0M2KeSb*?VhIluO$ZPNvunT?mCMMW5{{b0ZM z3uwUNV}P&w80^O=Gnh;M-w93{zG$wYP^gYai$grrCx z!gM9#*SXXu##%+64uA5%=x{A#HbawRS{c8Ka7WVLg*18KCu{(25JHEW8|?`c?j7PI z7-Wv-vmhVOZm3u?2W84eaQNsuF7JhCr9xb>I(+xP{+>}#_6u|U1{yd+|0rwFEBvB&@4a)(!M=idgRxv+^d&Bo&CI{ z<1ydTvV3%qn$jFk5!$BQD5_PG9@@)`+%oFbXz@O*e<_F*b)@d4 zLU99nG5;!$@3<1iGbIX03=Ow`4r%mxE#R)Mho&dV058HadEUov8R39LB51#)qzmT& z(5iUi5_N}XmeRfP9c0??M0bi049jR^1F-!mxS2^V^zLNPKB?!b49N{y>x<4s6Dwrg zS|{S-;x}d=KDRgB8orlqsHA+q`^Gr1N44#0`|aNEDqNHoBOXW&9b|#yNo;QMQ!waH zeK=m?(N|&8o6qCczQ3IOqp)1abI1T4~j+m#n(ZSfs-7Oouu zWX>tiF!N2`Pus*cw73Yu!Gv-rOJ`DRLx(Z$C0J51;Gh5XTt>gsCO%^_+u7^pm} z`D;gpzhwix1q16j_0t%bK=G-mw28i|s;UMjo3|C&ud5gE7g#Ga3I0oBOz`cf)r8pC z(_rvvkQV;@8Y>NC#Kyh`ad2^|%gj$^PmtOu*`b@=ZGHU{0YA9i46>kN&Gjwh7VhlK zbANx?ZnZg-oFwk?9G`%|q#qd{zZ}Y*A*-ngc5rY&|EKS(Nl)H}pRJ-{zymmgZvVp% zV({f=|4;4lf;Z14zF!f7c6N7T5)!aMKSxHCpwN1ET39Y?Z(|dwUnTpcV?sAisv!n6xxB4eFw!=SqBWcf%I)iYz`cFxJB~v$ijR#`b z+1YW?ZQ~PAe*firlJ3ij`0~~o+P5AolJRGXw7rBxZj%%Tc11Pd64lKe?>~Pn?jaRG zp~bwXssK25l8rv&b?fe9c0YdN7cXA;802-336&<^4YPJnc_Tk$5T~QGpEboaxWD{t zgih9Ek~LQH8AAnNG6j_Yi$#HrJe+GzHp3Mb_6^za@+51X4eoD`@|^L0c0S$Z$>(c! zK?vhINCUexaGEGOx?witP63{IH^#t>76H8Hj}8os6E}Rp!#3Yk@^)}KtwF=0@$vEIS4S%#qXLc)JTyuucYIW?47|FXyfRG@ zkzDU3_^7GQ+TlPz#o%_j_`z>=2*TnKokPva4AWgDurQ;t&qYm6QZ1@U>~~>UD0Y1% zMh5os@bYTXMqLv7Ie;P!2@JjDSGZSKTU}nxF}i7z3n9C|$E{vapyMIrujL|J=(}CL zbs@(A0)2F{DHnvZov<|x5G_v-tO^Ag&uFg?n>UF{U{|=5^{Gz;TMYz88hO=eJquap zzmqn=YOa>D#!=5(z}3jF7dP+~y)&_$5-e~IjT2KJVE+L!?~9^OT*$hrKP{KDkq#X^ zC~YJFja@2VQe~LUc%(p5a!NHAKtyfrl$grpO~PY4g*-(<6iEnZPGq}}rVKD&TQUhZ^fPP-)OVC~J*N2}(4t3THvb z+FOflT(pt!Mj+_30KE(0ZSS9^f~Tgh`b^N=JH1d&zRtJ3J*NmdaWW8}`??CsQJ{QJ zT(hZaSjct#m9G~J16>50(VLEKp6I1u%c_{K2%R54JOY`tbXZ!c{@SD-^KdHBobkmH zmVn|${$a+aa9uNZq_c3=4m<2kD{`0}ab1Kin z7vcecIbwV;(~MW+{I840@OW0^IQ))tfi7)*@8dIg?&q}(VjEBE=LcVPOaul_Wo$Z? z+;sC=Vd0{$aMd_AL>%K)K7EB;s(Z|tSNBNRzBL>ow@0@>aXtJ{6fQ&M@)Y&g1dzltOp@rB> zWHPYtRj=|2e#ao+|LH5HMxNY6HE*;~wBVN;$`->nWIH}IhU0jrqtEEox;_*)4Dvt# zB1+lJxg70Pw-$v*cw)ToQ4c!Q>Mg&%=h-abL#JzE<_QfH6_3KkUx-QM2f~XS9e1ix`$FB z$|H!CMk4vQZmbypRj)<6%(z{|$uLO+*KR_GV4QGn$f*yRbk~Rs^1b1kao4jC%O9W= zem>n8yFiHc|K^_vKy*S;nITD{ECMrPlMJ%t5bVTNDMoYW8)CPm4C2b2Tk#g`H_)Bm zBn@HS`twWJCdz9iy-O_8*KV5BMm)>0y~Q^W{|5|os>cw@Wpl=dS5ji5mzw7Bs| zSgH3zKp25p$-u5>m81Ei^4&`Sd)ZBYff~iV8R@6HJ$S=XShO`rxM?-!H<3_BfUAyX zEbPSQ3o#2E%+g~MivaZJ>jrOWpN9Qmmrz}Bc7Y?b zy$IO$c>?;g5E{2qY&lq{1-joriLTzaGKB0v+S|jY(7qjatKpW{patEWg%I4f>(m5U zU-Lcq0ET-}pg%@9{+`{eTAIK8X2vpZ{Uwok`xN2IoD*%sls_o~(d;9zNq?ElX z?2XrF4$N?{x%F{vs(3q8__{ElcX&3nGVQaone3Xoeb7GR6dj%Srr7LzT6l{nj3U{h z?*AMs{Qt7D_5UaRL?ayk>*S$6HbYbP12rh;aq?bD?-BYO2neLAsHIT;+C1=o02z-9 A!2kdN delta 10224 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 J#YdyB{|``%J1qbJ From 34389cf6fb32eeb5a54b40cb004dfd96529cae0f Mon Sep 17 00:00:00 2001 From: Buurazu Date: Fri, 19 Nov 2021 02:07:37 -0500 Subject: [PATCH 09/41] add crafting toggle / result toggle --- eid_bagofcrafting.lua | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/eid_bagofcrafting.lua b/eid_bagofcrafting.lua index c8c13087..9a76d04c 100644 --- a/eid_bagofcrafting.lua +++ b/eid_bagofcrafting.lua @@ -225,10 +225,8 @@ function EID:getBagOfCraftingID(Variant, SubType) return nil end ---not a very unified set; [7] = The Poop, [9] = The Left Hand; these aren't too important, they are poop nugget and cracked key ---however, [26] should be Planetarium, we need Planetarium and Ultra Secret Room icons added to the PNG local poolToIcon = { [0]="{{TreasureRoom}}",[1]="{{Shop}}",[2]="{{BossRoom}}",[3]="{{DevilRoom}}",[4]="{{AngelRoom}}", -[5]="{{SecretRoom}}",[7]="{{Collectible36}}",[8]="{{ChestRoom}}",[9]="{{Trinket61}}",[12]="{{CursedRoom}}",[26]="{{Collectible158}}" } +[5]="{{SecretRoom}}",[7]="{{PoopRoomIcon}}",[8]="{{GoldenChestRoomIcon}}",[9]="{{RedChestRoomIcon}}",[12]="{{CursedRoom}}",[26]="{{Planetarium}}" } function EID:simulateBagOfCrafting(componentsTable) local components = componentsTable @@ -436,7 +434,6 @@ function EID:calculateBagOfCrafting(componentsTable) local t = nextFloat() local target = t * totalWeight for k,v in ipairs(itemWeights) do - print(k) target = target - v if target < 0 then if firstOption then @@ -591,6 +588,9 @@ EID.bagOfCraftingRefreshes = 0 EID.downHeld = 0 EID.upHeld = 0 +EID.craftingIsHidden = false +EID.showCraftingResult = false + local maxItemID = nil local function detectModdedItems() @@ -620,13 +620,33 @@ function EID:handleBagOfCraftingRendering() trackBagActivated() detectBagContentShift() - if EID.isHidden then + if Input.IsButtonTriggered(EID.Config["CraftingHideKey"], 0) or Input.IsButtonTriggered(EID.Config["CraftingHideButton"], EID.player.ControllerIndex) then + EID.craftingIsHidden = not EID.craftingIsHidden + end + + if Input.IsButtonTriggered(EID.Config["CraftingResultKey"], 0) or Input.IsButtonTriggered(EID.Config["CraftingResultButton"], EID.player.ControllerIndex) then + EID.showCraftingResult = not EID.showCraftingResult + end + + if EID.isHidden or EID.craftingIsHidden then return elseif EID.Config["BagOfCraftingHideInBattle"] then if Isaac.CountBosses() > 0 or Isaac.CountEnemies() > 0 then return end end + + if EID.showCraftingResult and #EID.BagItems >= 8 then + local craftingResult, backupResult = EID:calculateBagOfCrafting(EID.BagItems) + local descriptionObj = EID:getDescriptionObj(5, 100, craftingResult) + local backupObj = EID:getDescriptionObj(5, 100, backupResult) + if (backupResult ~= craftingResult) then + EID:appendToDescription(descriptionObj,"#!!! If this item's locked, it will turn into#{{Collectible" .. backupResult .. "}} " .. + EID:getObjectName(5, 100, backupResult) .. "#" .. backupObj.Description) + end + EID:printDescription(descriptionObj) + return true + end if EID.Config["DisplayBagOfCrafting"] == "never" then return false From 02a313692d800f91660756e60fed6bc23555b1e5 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Fri, 19 Nov 2021 02:08:25 -0500 Subject: [PATCH 10/41] new hotkeys --- eid_config.lua | 47 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/eid_config.lua b/eid_config.lua index c1134a97..79fadbab 100644 --- a/eid_config.lua +++ b/eid_config.lua @@ -1,3 +1,21 @@ +local Controller = Controller or {} +Controller.DPAD_LEFT = 0 +Controller.DPAD_RIGHT = 1 +Controller.DPAD_UP = 2 +Controller.DPAD_DOWN = 3 +Controller.BUTTON_A = 4 +Controller.BUTTON_B = 5 +Controller.BUTTON_X = 6 +Controller.BUTTON_Y = 7 +Controller.BUMPER_LEFT = 8 +Controller.TRIGGER_LEFT = 9 +Controller.STICK_LEFT = 10 +Controller.BUMPER_RIGHT = 11 +Controller.TRIGGER_RIGHT = 12 +Controller.STICK_RIGHT = 13 +Controller.BUTTON_BACK = 14 +Controller.BUTTON_START = 15 + EID.UserConfig = { -------GENERAL--------- -- Change language of the mod. @@ -51,9 +69,13 @@ EID.UserConfig = { ["Indicator"] = "none", -- Set the keybinding to toggle the descriptions -- look into the AB+ or Repentance documentation for the key names here: https://wofsauge.github.io/IsaacDocs/rep/enums/Keyboard.html - -- if you want to map it onto a controller button, you need to use the "ButtonAction" enum instead of the Keyboard enum https://wofsauge.github.io/IsaacDocs/rep/enums/ButtonAction.html -- Default = Keyboard.KEY_F2 ["HideKey"] = Keyboard.KEY_F2, + -- Set the controller binding to toggle the descriptions + -- Use the Controller enum at the top of this file, or a number + -- Of note are Controller.STICK_LEFT and Controller.STICK_RIGHT, which aren't used in-game with default controls + -- Default = none (-1) + ["HideButton"] = -1, -- Initial displaystate. Can be used to change the toggle behavior of the "Hide Key" event -- Default = false ["InitiallyHidden"] = false, @@ -192,6 +214,24 @@ EID.UserConfig = { -- Hide the recipe list when in battle -- Default = true ["BagOfCraftingHideInBattle"] = true, + -- Set the keybinding to toggle the crafting display, so you can see descriptions of items/pickups on the floor + -- look into the AB+ or Repentance documentation for the key names here: https://wofsauge.github.io/IsaacDocs/rep/enums/Keyboard.html + -- Default = Keyboard.KEY_F3 + ["CraftingHideKey"] = Keyboard.KEY_F3, + -- Set the controller binding to toggle the crafting display, so you can see descriptions of items/pickups on the floor + -- Use the Controller enum at the top of this file, or a number + -- Of note are Controller.STICK_LEFT and Controller.STICK_RIGHT, which aren't used in-game with default controls + -- Default = none (-1) + ["CraftingHideButton"] = -1, + -- Set the keybinding to toggle viewing the description of the item ready to be crafted in the bag + -- look into the AB+ or Repentance documentation for the key names here: https://wofsauge.github.io/IsaacDocs/rep/enums/Keyboard.html + -- Default = Keyboard.KEY_F3 + ["CraftingResultKey"] = Keyboard.KEY_F4, + -- Set the controller binding to toggle viewing the description of the item ready to be crafted in the bag + -- Use the Controller enum at the top of this file, or a number + -- Of note are Controller.STICK_LEFT and Controller.STICK_RIGHT, which aren't used in-game with default controls + -- Default = none (-1) + ["CraftingResultButton"] = -1, ---------Mouse Controls----------- @@ -262,6 +302,7 @@ EID.DefaultConfig = { ["MaxDistance"] = 5, ["Indicator"] = "none", ["HideKey"] = Keyboard.KEY_F2, + ["HideButton"] = -1, ["InitiallyHidden"] = false, ["HideInBattle"] = false, ["DisableObstructionOnFlight"] = true, @@ -298,6 +339,10 @@ EID.DefaultConfig = { ["BagOfCraftingToggleKey"] = ButtonAction.ACTION_MAP, ["BagOfCraftingDisplayNames"] = false, ["BagOfCraftingHideInBattle"] = true, + ["CraftingHideKey"] = Keyboard.KEY_F3, + ["CraftingHideButton"] = -1, + ["CraftingResultKey"] = Keyboard.KEY_F4, + ["CraftingResultButton"] = -1, ["SpindownDiceResults"] = 3, ["SpindownDiceSkipLocked"] = false, ["EnableMouseControls"] = false, From 8b86b57cf28304bc90fce2790b97883699bd952e Mon Sep 17 00:00:00 2001 From: Buurazu Date: Fri, 19 Nov 2021 02:09:19 -0500 Subject: [PATCH 11/41] add a separate HideButton hotkey --- main.lua | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/main.lua b/main.lua index 0cf72fa3..dc1f4ee8 100644 --- a/main.lua +++ b/main.lua @@ -598,12 +598,12 @@ local function onRender(t) EID.isDisplaying = false EID:setPlayer() - --Controller hide keys are 0 through 26, keyboard hide keys are 32+ - local hidekeyType = 0 - if EID.Config["HideKey"] < 32 then hidekeyType = EID.player.ControllerIndex end - if Input.IsButtonTriggered(EID.Config["HideKey"], hidekeyType) then + --Keyboard hide keys are 32+, controller hide keys have their own option now so don't allow controller inputs in it + if EID.Config["HideKey"] < 32 then EID.Config["HideKey"] = -1 end + if Input.IsButtonTriggered(EID.Config["HideKey"], 0) or Input.IsButtonTriggered(EID.Config["HideButton"], EID.player.ControllerIndex) then EID.isHidden = not EID.isHidden end + if ModConfigMenu and ModConfigMenu.IsVisible and ModConfigMenu.Config["Mod Config Menu"].HideHudInMenu and EID.MCMCompat_isDisplayingEIDTab ~= "Visuals" then --if if the mod config menu exists, is opened and Hide Hud is enabled, and ModConfigMenu is currently in the "Visuals" tab of EID return end @@ -624,7 +624,6 @@ local function onRender(t) else EID:removeTextPosModifier("Tained HUD") end - -- Disabling Bag of Crafting for now, since it doesnt work after patch if EID.player:HasCollectible(710) then local success = EID:handleBagOfCraftingRendering() if success then From c27692552f7834b0c1fbb4aeca51bb6d58635c3e Mon Sep 17 00:00:00 2001 From: Buurazu Date: Fri, 19 Nov 2021 02:09:46 -0500 Subject: [PATCH 12/41] add new hotkey settings --- mod_config_menu.lua | 55 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/mod_config_menu.lua b/mod_config_menu.lua index 777c0f8e..922f90ca 100644 --- a/mod_config_menu.lua +++ b/mod_config_menu.lua @@ -65,6 +65,49 @@ function EID:buildColorArray() table.sort(colorNameArray) end +function EID:AddHotkeySetting(category, isController, optionName, displayText, infoText) + local optionType = ModConfigMenu.OptionType.KEYBIND_KEYBOARD + local hotkeyToString = InputHelper.KeyboardToString + local deviceString = "keyboard" + local backString = "ESCAPE" + if isController then + optionType = ModConfigMenu.OptionType.KEYBIND_CONTROLLER + hotkeyToString = InputHelper.ControllerToString + deviceString = "controller" + backString = "BACK" + end + MCM.AddSetting( + "EID", + category, + { + Type = optionType, + CurrentSetting = function() + return EID.Config[optionName] + end, + Display = function() + local key = "None" + if (hotkeyToString[EID.Config[optionName]]) then key = hotkeyToString[EID.Config[optionName]] end + return displayText .. ": " .. key + end, + OnChange = function(currentNum) + EID.Config[optionName] = currentNum or -1 + end, + PopupGfx = ModConfigMenu.PopupGfx.WIDE_SMALL, + PopupWidth = 280, + Popup = function() + local currentValue = EID.Config[optionName] + local keepSettingString = "" + if currentValue > -1 then + local currentSettingString = hotkeyToString[currentValue] + keepSettingString = "This setting is currently set to \"" .. currentSettingString .. "\".$newlinePress this button to keep it unchanged.$newline$newline" + end + return "Press a button on your "..deviceString.." to change this setting.$newline$newline" .. keepSettingString .. "Press "..backString.." to go back and clear this setting." + end, + Info = {infoText} + } + ) +end + if MCMLoaded then function AnIndexOf(t, val) for k, v in ipairs(t) do @@ -133,7 +176,11 @@ if MCMLoaded then Info = {"If translated names are available,","this changes how item names are displayed."} } ) - + + -- Hide Key + EID:AddHotkeySetting("General", false, "HideKey", "Toggle (Keyboard)", "Press this key to toggle the description display") + EID:AddHotkeySetting("General", true, "HideButton", "Toggle (Controller)", "Press this button to toggle the description display (Left Stick or Right Stick recommended; most other buttons will not work)") + MCM.AddSpace("EID", "General") -- Position X @@ -1106,6 +1153,12 @@ if MCMLoaded then } ) + EID:AddHotkeySetting("Crafting", false, "CraftingHideKey", "Toggle (Keyboard)", "Press this key to toggle the crafting display, allowing you to check descriptions of items/pickups on the floor") + EID:AddHotkeySetting("Crafting", true, "CraftingHideButton", "Display Toggle (Controller)", "Press this button to toggle the crafting display (Left Stick or Right Stick recommended; most other buttons will not work)") + + EID:AddHotkeySetting("Crafting", false, "CraftingResultKey", "Result Info Toggle (Keyboard)", "Press this key to toggle showing the description of the item ready to be crafted") + EID:AddHotkeySetting("Crafting", true, "CraftingResultButton", "Result Info Toggle (Controller)", "Press this key to toggle showing the description of the item ready to be crafted (Left Stick or Right Stick recommended; most other buttons will not work)") + MCM.AddSpace("EID", "Crafting") --------Clear Floor--------- MCM.AddSetting( From fbacfdc5c3bf7fff73954dcd0ecf5ac3acdcea42 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Fri, 19 Nov 2021 17:29:37 -0500 Subject: [PATCH 13/41] add low item count warning --- descriptions/rep/en_us.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/descriptions/rep/en_us.lua b/descriptions/rep/en_us.lua index 6f2bff7b..a587eb11 100644 --- a/descriptions/rep/en_us.lua +++ b/descriptions/rep/en_us.lua @@ -904,3 +904,4 @@ EID.descriptions["en_us"].CraftingResults = "(Scroll: hold {{CONFIG_BoC_Toggle}} EID.descriptions["en_us"].CraftingBagModError = "!!! {{ColorRed}}ERROR:#{{ColorRed}}The \"Crafting result calculation\" feature currently does not work when item mods are installed!#{{ColorRed}}Please uninstall the item mods or deactivate the Bag of Crafting descriptions in the config" EID.descriptions["en_us"].AchievementWarningTitle = "{{ColorYellow}}!!! WARNING !!!" EID.descriptions["en_us"].AchievementWarningText = "Achievements are disabled!#In order to enable progression and achievements, you first need to kill Mom (Depths II) without any mods enabled.#(If you've defeated Mom, this message is a bug and can be ignored)" +EID.descriptions["en_us"].OutdatedModWarningText = "An outdated mod is reducing your number of items! This could cause crashes, especially on entering the Knife Piece 2 area!#Please uninstall mods with an outdated resources/items.xml file" From 4e744eac5996a5c13537dbc8260c134978a9154f Mon Sep 17 00:00:00 2001 From: Buurazu Date: Fri, 19 Nov 2021 17:30:28 -0500 Subject: [PATCH 14/41] simplified mode option --- eid_config.lua | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/eid_config.lua b/eid_config.lua index 79fadbab..7760fa36 100644 --- a/eid_config.lua +++ b/eid_config.lua @@ -192,6 +192,12 @@ EID.UserConfig = { -- "always" = Always show Results, "hold" = Show when holding up bag, "never" = Never show results -- Default = "always" ["DisplayBagOfCrafting"] = "always", + -- Hide the recipe list when in battle + -- Default = true + ["BagOfCraftingHideInBattle"] = true, + -- Simplified / No Recipes Mode shows quality and item pool percentages instead of exact recipes, for a more intended experience + -- Default = false + ["BagOfCraftingSimplifiedMode"] = false, -- Changes the number of Results shown in the Bag of crafting description -- Higher numbers can cause more lag! -- Default = 7 @@ -211,9 +217,6 @@ EID.UserConfig = { -- Display craftable item names, moving the recipe to a new line -- Default = false ["BagOfCraftingDisplayNames"] = false, - -- Hide the recipe list when in battle - -- Default = true - ["BagOfCraftingHideInBattle"] = true, -- Set the keybinding to toggle the crafting display, so you can see descriptions of items/pickups on the floor -- look into the AB+ or Repentance documentation for the key names here: https://wofsauge.github.io/IsaacDocs/rep/enums/Keyboard.html -- Default = Keyboard.KEY_F3 @@ -339,6 +342,7 @@ EID.DefaultConfig = { ["BagOfCraftingToggleKey"] = ButtonAction.ACTION_MAP, ["BagOfCraftingDisplayNames"] = false, ["BagOfCraftingHideInBattle"] = true, + ["BagOfCraftingSimplifiedMode"] = false, ["CraftingHideKey"] = Keyboard.KEY_F3, ["CraftingHideButton"] = -1, ["CraftingResultKey"] = Keyboard.KEY_F4, From d24ac1f5ba4460578a6f24eac9b720d835d5e101 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Fri, 19 Nov 2021 17:31:00 -0500 Subject: [PATCH 15/41] simplified mode, reorganizing options --- mod_config_menu.lua | 100 ++++++++++++++++++++++++++++---------------- 1 file changed, 64 insertions(+), 36 deletions(-) diff --git a/mod_config_menu.lua b/mod_config_menu.lua index 922f90ca..cb29529b 100644 --- a/mod_config_menu.lua +++ b/mod_config_menu.lua @@ -1049,6 +1049,53 @@ if MCMLoaded then Info = {"always = Always show Results, hold = Show when holding up bag, never = Never show results"} } ) + -- Bag of Crafting Hide in Battle + MCM.AddSetting( + "EID", + "Crafting", + { + Type = ModConfigMenu.OptionType.BOOLEAN, + CurrentSetting = function() + return EID.Config["BagOfCraftingHideInBattle"] + end, + Display = function() + local onOff = "False" + if EID.Config["BagOfCraftingHideInBattle"] then + onOff = "True" + end + return "Hide in Battle: " .. onOff + end, + OnChange = function(currentBool) + EID.Config["BagOfCraftingHideInBattle"] = currentBool + end, + Info = {"Hides the recipe list when in a fight"} + } + ) + -- Bag of Crafting No Recipes Mode + MCM.AddSetting( + "EID", + "Crafting", + { + Type = ModConfigMenu.OptionType.BOOLEAN, + CurrentSetting = function() + return EID.Config["BagOfCraftingSimplifiedMode"] + end, + Display = function() + local onOff = "Off" + if EID.Config["BagOfCraftingSimplifiedMode"] then + onOff = "On" + end + return "No Recipes Mode: " .. onOff + end, + OnChange = function(currentBool) + EID.Config["BagOfCraftingSimplifiedMode"] = currentBool + end, + Info = {"No Recipes Mode shows quality and item pool percentages instead of exact recipes, for a more intended experience"} + } + ) + + MCM.AddSpace("EID", "Crafting") + -- Bag of Crafting results MCM.AddSetting( "EID", @@ -1130,36 +1177,28 @@ if MCMLoaded then Info = {"If on, each result takes two lines; lower your displayed results accordingly"} } ) - -- Bag of Crafting Hide in Battle + + MCM.AddSpace("EID", "Crafting") + + EID:AddHotkeySetting("Crafting", false, "CraftingHideKey", "Toggle (Keyboard)", "Press this key to toggle the crafting display, allowing you to check descriptions of items/pickups on the floor") + EID:AddHotkeySetting("Crafting", true, "CraftingHideButton", "Toggle (Controller)", "Press this button to toggle the crafting display (Left Stick or Right Stick recommended; most other buttons will not work)") + + EID:AddHotkeySetting("Crafting", false, "CraftingResultKey", "Result Toggle (Keyboard)", "Press this key to toggle the description of the item ready to be crafted") + EID:AddHotkeySetting("Crafting", true, "CraftingResultButton", "Result Toggle (Controller)", "Press this button to toggle the description of the item ready to be crafted (Left Stick or Right Stick recommended; most other buttons will not work)") + + MCM.AddSpace("EID", "Crafting") + --------Clear bag--------- MCM.AddSetting( "EID", "Crafting", { Type = ModConfigMenu.OptionType.BOOLEAN, - CurrentSetting = function() - return EID.Config["BagOfCraftingHideInBattle"] - end, - Display = function() - local onOff = "False" - if EID.Config["BagOfCraftingHideInBattle"] then - onOff = "True" - end - return "Hide in Battle: " .. onOff - end, - OnChange = function(currentBool) - EID.Config["BagOfCraftingHideInBattle"] = currentBool - end, - Info = {"Hides the recipe list when in a fight"} + CurrentSetting = function() return true end, + Display = function() return "<---- Clear Bag Content ---->" end, + OnChange = function(currentBool) EID.BagItems = {} end, + Info = {"Press this to clear all currently detected items on the bag"} } ) - - EID:AddHotkeySetting("Crafting", false, "CraftingHideKey", "Toggle (Keyboard)", "Press this key to toggle the crafting display, allowing you to check descriptions of items/pickups on the floor") - EID:AddHotkeySetting("Crafting", true, "CraftingHideButton", "Display Toggle (Controller)", "Press this button to toggle the crafting display (Left Stick or Right Stick recommended; most other buttons will not work)") - - EID:AddHotkeySetting("Crafting", false, "CraftingResultKey", "Result Info Toggle (Keyboard)", "Press this key to toggle showing the description of the item ready to be crafted") - EID:AddHotkeySetting("Crafting", true, "CraftingResultButton", "Result Info Toggle (Controller)", "Press this key to toggle showing the description of the item ready to be crafted (Left Stick or Right Stick recommended; most other buttons will not work)") - - MCM.AddSpace("EID", "Crafting") --------Clear Floor--------- MCM.AddSetting( "EID", @@ -1173,21 +1212,10 @@ if MCMLoaded then EID.bagOfCraftingFloorQuery = {} EID.bagOfCraftingCurPickupCount = -1 end, - Info = {"Press SPACE to clear all currently detected Items on the stage"} - } - ) - --------Clear bag--------- - MCM.AddSetting( - "EID", - "Crafting", - { - Type = ModConfigMenu.OptionType.BOOLEAN, - CurrentSetting = function() return true end, - Display = function() return "<---- Clear Bag Content ---->" end, - OnChange = function(currentBool) EID.BagItems = {} end, - Info = {"Press SPACE to clear all currently detected Items on the bag"} + Info = {"Press this to clear all currently detected items on the floor"} } ) + --------------------------------------------------------------------------- -----------------------------Mouse Controls-------------------------------- MCM.AddText("EID", "Mouse", function() return "! THIS FEATURE IS IN EARLY DEVELOPMENT !" end) From db6c62808d381d6d1fe67f024bfe078c9ef7f4e6 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Fri, 19 Nov 2021 17:31:20 -0500 Subject: [PATCH 16/41] detect low collectible counts as well as high --- eid_api.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/eid_api.lua b/eid_api.lua index a8741007..2b82c9ca 100644 --- a/eid_api.lua +++ b/eid_api.lua @@ -764,7 +764,8 @@ function EID:getSpindownResult(collectibleID) end function EID:GetMaxCollectibleID() - local id = CollectibleType.NUM_COLLECTIBLES-1 + --start a little lower than NUM_COLLECTIBLES, due to mods with outdated items.xmls that are missing newer items + local id = CollectibleType.NUM_COLLECTIBLES-17 local step = 16 while step > 0 do if EID.itemConfig:GetCollectible(id+step) ~= nil then From 6a2c0f47e4453f87831da227d1e2a862af9c964a Mon Sep 17 00:00:00 2001 From: Buurazu Date: Fri, 19 Nov 2021 17:33:34 -0500 Subject: [PATCH 17/41] don't crash on low item count; simplified mode; hotkey display in the description --- eid_bagofcrafting.lua | 166 ++++++++++++++++++++++++------------------ 1 file changed, 97 insertions(+), 69 deletions(-) diff --git a/eid_bagofcrafting.lua b/eid_bagofcrafting.lua index 9a76d04c..f0d18737 100644 --- a/eid_bagofcrafting.lua +++ b/eid_bagofcrafting.lua @@ -184,13 +184,17 @@ for i = 1, EID.XMLMaxItemID do end end -table.sort(sortedIDs, function(a, b) - if EID.XMLItemQualities[a] == EID.XMLItemQualities[b] then - return (EID:getObjectName(5, 100, a) < EID:getObjectName(5, 100, b)) - else - return (EID.XMLItemQualities[a] > EID.XMLItemQualities[b]) - end -end) +--don't sort if there's a collectible ID discrepancy +print(EID:GetMaxCollectibleID()) +if EID:GetMaxCollectibleID() == EID.XMLMaxItemID then + table.sort(sortedIDs, function(a, b) + if EID.XMLItemQualities[a] == EID.XMLItemQualities[b] then + return (EID:getObjectName(5, 100, a) < EID:getObjectName(5, 100, b)) + else + return (EID.XMLItemQualities[a] > EID.XMLItemQualities[b]) + end + end) +end local customRNGSeed = 0x77777770 local customRNGShift = {0,0,0} @@ -601,7 +605,6 @@ local function detectModdedItems() local customDescObj = EID:getDescriptionObj(5, 100, 710) customDescObj.Description = EID.descriptions["en_us"].CraftingBagModError EID:printDescription(customDescObj) - return true end return false end @@ -615,17 +618,30 @@ local function calcFloorItems() end end +--code from InputHelper in MCM +local HotkeyToString = {} +for key,num in pairs(Keyboard) do + local keyString = key + local keyStart, keyEnd = string.find(keyString, "KEY_") + keyString = string.sub(keyString, keyEnd+1, string.len(keyString)) + keyString = string.gsub(keyString, "_", " ") + HotkeyToString[num] = keyString +end + function EID:handleBagOfCraftingRendering() trackBagHolding() trackBagActivated() detectBagContentShift() - if Input.IsButtonTriggered(EID.Config["CraftingHideKey"], 0) or Input.IsButtonTriggered(EID.Config["CraftingHideButton"], EID.player.ControllerIndex) then - EID.craftingIsHidden = not EID.craftingIsHidden - end - - if Input.IsButtonTriggered(EID.Config["CraftingResultKey"], 0) or Input.IsButtonTriggered(EID.Config["CraftingResultButton"], EID.player.ControllerIndex) then - EID.showCraftingResult = not EID.showCraftingResult + --prevent our hotkeys from triggering as they're set + if not ModConfigMenu or not ModConfigMenu.IsVisible then + if Input.IsButtonTriggered(EID.Config["CraftingHideKey"], 0) or Input.IsButtonTriggered(EID.Config["CraftingHideButton"], EID.player.ControllerIndex) then + EID.craftingIsHidden = not EID.craftingIsHidden + end + + if Input.IsButtonTriggered(EID.Config["CraftingResultKey"], 0) or Input.IsButtonTriggered(EID.Config["CraftingResultButton"], EID.player.ControllerIndex) then + EID.showCraftingResult = not EID.showCraftingResult + end end if EID.isHidden or EID.craftingIsHidden then @@ -635,6 +651,16 @@ function EID:handleBagOfCraftingRendering() return end end + + if EID.Config["DisplayBagOfCrafting"] == "never" then + return false + end + if EID.Config["DisplayBagOfCrafting"] == "hold" and not string.find(EID.player:GetSprite():GetAnimation(), "PickupWalk") then + return false + end + if detectModdedItems() or Game():GetRoom():GetFrameCount ()<2 then + return false + end if EID.showCraftingResult and #EID.BagItems >= 8 then local craftingResult, backupResult = EID:calculateBagOfCrafting(EID.BagItems) @@ -647,16 +673,6 @@ function EID:handleBagOfCraftingRendering() EID:printDescription(descriptionObj) return true end - - if EID.Config["DisplayBagOfCrafting"] == "never" then - return false - end - if EID.Config["DisplayBagOfCrafting"] == "hold" and not string.find(EID.player:GetSprite():GetAnimation(), "PickupWalk") then - return false - end - if detectModdedItems() or Game():GetRoom():GetFrameCount ()<2 then - return false - end local curSeed = Game():GetSeeds():GetStartSeed() --reset our calculated recipes when the game seed changes @@ -726,6 +742,51 @@ function EID:handleBagOfCraftingRendering() --sort by ingredient quality table.sort(itemQuery, qualitySort) + --Simplified Mode display + if (EID.Config["BagOfCraftingSimplifiedMode"]) then + local customDescObj = EID:getDescriptionObj(5, 100, 710) + customDescObj.Description = "" + + local hotkeyString = "" + if HotkeyToString[EID.Config["CraftingHideKey"]] then + hotkeyString = "Hide: " .. HotkeyToString[EID.Config["CraftingHideKey"]] + end + if #EID.BagItems >= 8 and HotkeyToString[EID.Config["CraftingResultKey"]] then + if hotkeyString ~= "" then hotkeyString = hotkeyString .. ", " end + hotkeyString = hotkeyString .. "Preview: " .. HotkeyToString[EID.Config["CraftingResultKey"]] + end + if hotkeyString ~= "" then + EID:appendToDescription(customDescObj, "!!! " .. hotkeyString .. "#") + end + + if #EID.BagItems >0 then + local bagDesc = EID:getDescriptionEntry("CraftingBagContent").."(Beta)" + EID:appendToDescription(customDescObj, bagDesc..EID:tableToCraftingIconsMerged(EID.BagItems).."#") + end + if #roomItems >0 then + local roomDesc = EID:getDescriptionEntry("CraftingRoomContent") + EID:appendToDescription(customDescObj, roomDesc..EID:tableToCraftingIconsMerged(roomItems).."#") + end + if #EID.bagOfCraftingFloorQuery >0 and #roomItems ~= #EID.bagOfCraftingFloorQuery then + local floorDesc = EID:getDescriptionEntry("CraftingFloorContent") + EID:appendToDescription(customDescObj, floorDesc..EID:tableToCraftingIconsMerged(EID.bagOfCraftingFloorQuery).."#") + end + + local mostValuableSimp = {} + for i=1,8 do + mostValuableSimp[i] = itemQuery[i] + end + + local bagQuality, bagResult = EID:simulateBagOfCrafting(EID.BagItems) + local bestQuality, bestResult = EID:simulateBagOfCrafting(mostValuableSimp) + + EID:appendToDescription(customDescObj, "Bag Quality: " .. bagQuality .. "#" .. bagResult .. "#") + EID:appendToDescription(customDescObj, "Best Quality: " .. bestQuality .. " " .. EID:tableToCraftingIconsFull(mostValuableSimp, false) .. "#" .. bestResult .. "#") + + EID:printDescription(customDescObj) + return true + end + local queryString = table.concat(itemQuery,",") if EID.lockedResults ~= nil then results = calcResultCache[EID.lockedResults] @@ -845,6 +906,18 @@ function EID:handleBagOfCraftingRendering() local customDescObj = EID:getDescriptionObj(5, 100, 710) customDescObj.Description = "" + local hotkeyString = "" + if HotkeyToString[EID.Config["CraftingHideKey"]] then + hotkeyString = "Hide: " .. HotkeyToString[EID.Config["CraftingHideKey"]] + end + if #EID.BagItems >= 8 and HotkeyToString[EID.Config["CraftingResultKey"]] then + if hotkeyString ~= "" then hotkeyString = hotkeyString .. ", " end + hotkeyString = hotkeyString .. "Preview: " .. HotkeyToString[EID.Config["CraftingResultKey"]] + end + if hotkeyString ~= "" then + EID:appendToDescription(customDescObj, "!!! " .. hotkeyString .. "#") + end + if #EID.BagItems >0 then if #EID.BagItems >= 8 then local recipe = EID:calculateBagOfCrafting(EID.BagItems) @@ -872,51 +945,6 @@ function EID:handleBagOfCraftingRendering() EID:appendToDescription(customDescObj, floorDesc..EID:tableToCraftingIconsMerged(EID.bagOfCraftingFloorQuery).."#") end - --Simplified mode WIP - --total weight, quality min, quality max, pool weights, total weight - local mostValuableSimp = {} - for i=1,8 do - mostValuableSimp[i] = itemQuery[i] - end - - local bagQuality, bagResult = EID:simulateBagOfCrafting(EID.BagItems) - local bestQuality, bestResult = EID:simulateBagOfCrafting(mostValuableSimp) - - EID:appendToDescription(customDescObj, "Bag Quality: " .. bagQuality .. "#" .. bagResult .. "#") - EID:appendToDescription(customDescObj, "Best Quality: " .. bestQuality .. " (" .. EID:tableToCraftingIconsFull(mostValuableSimp, false) .. ")#" .. bestResult .. "#") - - --[[if bagResult[2] ~= bagResult[3] then - EID:appendToDescription(customDescObj, "Best Quality: " .. bagResult[1] .. " ({{Quality" .. bagResult[2] .. "}}-{{Quality" .. bagResult[3] .. "}})#") - else - EID:appendToDescription(customDescObj, "Best Quality: " .. bagResult[1] .. " ({{Quality" .. bagResult[2] .. "}})#") - end - local poolString = "" - local first = true - local firstAfterBoss = false - for k,v in ipairs(bagResult[4]) do - if (v.weight > 0) then - if (not first) then poolString = poolString .. "," end - --line break after boss pool - if (firstAfterBoss) then poolString = poolString .. " " end - - poolString = poolString .. poolToIcon[v.idx] .. ":" .. math.floor(v.totalWeight/bagResult[6]*100+0.5) .. "%" - - first = false - if (k == 3) then firstAfterBoss = true else firstAfterBoss = false end - end - end - poolString = poolString .. "#" - first = true - for i=0,4 do - local v = bagResult[5][i] - if (v > 0) then - if (not first) then poolString = poolString .. "," end - poolString = poolString .. "{{Quality" .. i .. "}}:" .. math.floor(v/bagResult[6]*100+0.5) .. "%" - first = false - end - end - EID:appendToDescription(customDescObj, poolString .. "#") - ]] local resultDesc = EID:getDescriptionEntry("CraftingResults") EID:appendToDescription(customDescObj, resultDesc) if Input.IsActionPressed(EID.Config["BagOfCraftingToggleKey"], EID.player.ControllerIndex) then From 578b06732c34be1f6da4a242b311e0017a3ac3fb Mon Sep 17 00:00:00 2001 From: Buurazu Date: Fri, 19 Nov 2021 17:34:55 -0500 Subject: [PATCH 18/41] add a low item count check warning --- main.lua | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/main.lua b/main.lua index dc1f4ee8..4a7cd50d 100644 --- a/main.lua +++ b/main.lua @@ -567,20 +567,29 @@ end EID:AddCallback(ModCallbacks.MC_POST_UPDATE, EID.onGameUpdate) local hasShownAchievementWarning = false + local function renderAchievementInfo() - if REPENTANCE and not EID.Config.DisableAchievementCheck and game:GetFrameCount() < 10*30 and game.Challenge == 0 then - local characterID = Game():GetPlayer(0):GetPlayerType() - --ID 21 = Tainted Isaac. Tainted characters have definitely beaten Mom! (Fixes Tainted Lost's item pools ruining this check) - if (characterID < 21) then - local hasBookOfRevelationsUnlocked = EID:isCollectibleUnlockedAnyPool(CollectibleType.COLLECTIBLE_BOOK_OF_REVELATIONS or CollectibleType.COLLECTIBLE_BOOK_REVELATIONS) - if not hasBookOfRevelationsUnlocked then - local hasCubeOfMeatUnlocked = EID:isCollectibleUnlockedAnyPool(CollectibleType.COLLECTIBLE_CUBE_OF_MEAT) - if not hasCubeOfMeatUnlocked then - local demoDescObj = EID:getDescriptionObj(-999, -1, 1) - demoDescObj.Name = EID:getDescriptionEntry("AchievementWarningTitle") or "" - demoDescObj.Description = EID:getDescriptionEntry("AchievementWarningText") or "" - EID:displayPermanentText(demoDescObj) - hasShownAchievementWarning = true + if REPENTANCE and not EID.Config.DisableAchievementCheck and game:GetFrameCount() < 10*30 then + if EID:GetMaxCollectibleID() < EID.XMLMaxItemID then + local demoDescObj = EID:getDescriptionObj(-999, -1, 1) + demoDescObj.Name = EID:getDescriptionEntry("AchievementWarningTitle") or "" + demoDescObj.Description = EID:getDescriptionEntry("OutdatedModWarningText") or "" + EID:displayPermanentText(demoDescObj) + hasShownAchievementWarning = true + else + local characterID = Game():GetPlayer(0):GetPlayerType() + --ID 21 = Tainted Isaac. Tainted characters have definitely beaten Mom! (Fixes Tainted Lost's item pools ruining this check) + if characterID < 21 and game.Challenge == 0 then + local hasBookOfRevelationsUnlocked = EID:isCollectibleUnlockedAnyPool(CollectibleType.COLLECTIBLE_BOOK_OF_REVELATIONS or CollectibleType.COLLECTIBLE_BOOK_REVELATIONS) + if not hasBookOfRevelationsUnlocked then + local hasCubeOfMeatUnlocked = EID:isCollectibleUnlockedAnyPool(CollectibleType.COLLECTIBLE_CUBE_OF_MEAT) + if not hasCubeOfMeatUnlocked then + local demoDescObj = EID:getDescriptionObj(-999, -1, 1) + demoDescObj.Name = EID:getDescriptionEntry("AchievementWarningTitle") or "" + demoDescObj.Description = EID:getDescriptionEntry("AchievementWarningText") or "" + EID:displayPermanentText(demoDescObj) + hasShownAchievementWarning = true + end end end end @@ -609,7 +618,7 @@ local function onRender(t) end EID:renderMCMDummyDescription() - + renderAchievementInfo() if EID.GameVersion == "ab+" then @@ -676,6 +685,7 @@ local function onRender(t) end end + local closest = EID.lastDescriptionEntity if EID.lastDist / 40 > tonumber(EID.Config["MaxDistance"]) then From 372863f9869b6c525f40e3fa960de3c46fd5672e Mon Sep 17 00:00:00 2001 From: Buurazu Date: Fri, 19 Nov 2021 17:40:00 -0500 Subject: [PATCH 19/41] remove print --- eid_bagofcrafting.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/eid_bagofcrafting.lua b/eid_bagofcrafting.lua index f0d18737..711e50ba 100644 --- a/eid_bagofcrafting.lua +++ b/eid_bagofcrafting.lua @@ -185,7 +185,6 @@ for i = 1, EID.XMLMaxItemID do end --don't sort if there's a collectible ID discrepancy -print(EID:GetMaxCollectibleID()) if EID:GetMaxCollectibleID() == EID.XMLMaxItemID then table.sort(sortedIDs, function(a, b) if EID.XMLItemQualities[a] == EID.XMLItemQualities[b] then From 6b31f35aea6b524d7f91ae4ca3c4ba21bff86f44 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Fri, 19 Nov 2021 19:15:05 -0500 Subject: [PATCH 20/41] Arrow now flips in mirror world --- main.lua | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/main.lua b/main.lua index 4a7cd50d..2c5a5c50 100644 --- a/main.lua +++ b/main.lua @@ -374,20 +374,9 @@ function EID:printBulletPoints(description, renderPos) end --------------------------------------------------------------------------- ---------------------------Handle New Room-------------------------------- -local function IsMirror() - local level = game:GetLevel() - local id = level:GetCurrentRoomIndex() - - return id >=0 and GetPtrHash(level:GetRoomByIdx(id)) == GetPtrHash(level:GetRoomByIdx(id, 1)) -end - local isMirrorRoom = false function EID:onNewRoom() - if game:GetLevel():GetAbsoluteStage() == LevelStage.STAGE1_2 then - isMirrorRoom = IsMirror() - else - isMirrorRoom = false - end + isMirrorRoom = game:GetLevel():GetCurrentRoom():IsMirrorWorld() end EID:AddCallback(ModCallbacks.MC_POST_NEW_ROOM, EID.onNewRoom) --------------------------------------------------------------------------- @@ -405,6 +394,11 @@ function EID:renderIndicator(entity) end local repDiv = 1 local entityPos = Isaac.WorldToScreen(entity.Position) + local ArrowOffset = Vector(0, -35) + if entity.Variant == 100 and not entity:ToPickup():IsShopItem() then + ArrowOffset = Vector(0, -62) + end + local arrowPos = Isaac.WorldToScreen(entity.Position + ArrowOffset) if entity:GetData() and entity:GetData()["EID_RenderOffset"] then entityPos = entityPos + entity:GetData()["EID_RenderOffset"] end @@ -414,6 +408,7 @@ function EID:renderIndicator(entity) if isMirrorRoom then local screenCenter = EID:getScreenSize()/2 entityPos.X = entityPos.X - (entityPos-screenCenter).X * 2 + arrowPos.X = arrowPos.X - (arrowPos-screenCenter).X * 2 sprite.FlipX = true end end @@ -424,11 +419,7 @@ function EID:renderIndicator(entity) sprite.Color = Color(1, 1, 1, 1, 0, 0, 0) elseif EID.Config["Indicator"] == "arrow" then ArrowSprite:Update() - local ArrowOffset = Vector(0, -35) - if entity.Variant == 100 and not entity:ToPickup():IsShopItem() then - ArrowOffset = Vector(0, -62) - end - ArrowSprite:Render(Isaac.WorldToScreen(entity.Position + ArrowOffset), nullVector, nullVector) + ArrowSprite:Render(arrowPos, nullVector, nullVector) else if EID.Config["Indicator"] == "border" then local c = 255 - math.floor(255 * ((entity.FrameCount % 40) / 40)) @@ -437,7 +428,7 @@ function EID:renderIndicator(entity) sprite.Color = Color(1, 1, 1, 1, 255/repDiv, 255/repDiv, 255/repDiv) end EID:renderEntity(entity, sprite, entityPos + Vector(0, 1)) - EID:renderEntity(entity, sprite, entityPos +Vector(0, -1)) + EID:renderEntity(entity, sprite, entityPos + Vector(0, -1)) EID:renderEntity(entity, sprite, entityPos + Vector(1, 0)) EID:renderEntity(entity, sprite, entityPos + Vector(-1, 0)) sprite.Color = Color(1, 1, 1, 1, 0, 0, 0) From 93341be9f27d0280251fb62dc68fbc92c8c2d3ad Mon Sep 17 00:00:00 2001 From: Buurazu Date: Fri, 19 Nov 2021 20:02:06 -0500 Subject: [PATCH 21/41] improve Telescope Lens --- descriptions/rep/en_us.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/descriptions/rep/en_us.lua b/descriptions/rep/en_us.lua index a587eb11..40ec195f 100644 --- a/descriptions/rep/en_us.lua +++ b/descriptions/rep/en_us.lua @@ -522,7 +522,7 @@ local repTrinkets={ [149] = {"149", "Panic Button", "Activates your active item upon taking damage"}, -- Panic Button [150] = {"150", "Blue Key", "Entering a room that requires a key brings you in a room resembling the Hush stage#Room acts as an in-between of the two rooms"}, -- Blue Key [151] = {"151", "Flat File", "Causes spikes to retract, making them harmless#Also affects {{CursedRoom}}Curse Room doors, mimics and any spike obstacle"}, -- Flat File - [152] = {"152", "Telescope Lens", "Increases the default chance for a {{Planetarium}}Planetarium to spawn to 15%#Adds another 10% chance#More than one Planetarium can spawn#Planetariums can now spawn in the Womb and Corpse"}, -- Telescope Lens + [152] = {"152", "Telescope Lens", "+24% {{Planetarium}}Planetarium chance if none have spawned#+9% if a Planetarium has already spawned#Planetariums can now spawn in the Womb and Corpse"}, -- Telescope Lens [153] = {"153", "Mom's Lock", "Has a chance to grant the effects of a random Mom item each room"}, -- Mom's Lock [154] = {"154", "Dice Bag", "When entering a new room, grants a temporary Dice consumable item#The Dice disappears when leaving#Grants ability to hold two consumables"}, -- Dice Bag [155] = {"155", "Holy Crown", "Spawns a {{TreasureRoom}}Treasure Room and {{Shop}}Shop in Cathedral"}, -- Holy Crown From c103f5a9afff6c59ae37b39ac0083ea93456b062 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Fri, 19 Nov 2021 21:08:35 -0500 Subject: [PATCH 22/41] crafting icon sort goes in ascending order --- eid_api.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/eid_api.lua b/eid_api.lua index 2b82c9ca..c77a8798 100644 --- a/eid_api.lua +++ b/eid_api.lua @@ -829,11 +829,11 @@ end -- Converts a given table into a string containing the crafting icons of the table -- Example input: {1,2,3,4,5,6,7,8} --- Result: "{{Crafting8}}{{Crafting7}}{{Crafting6}}{{Crafting5}}{{Crafting4}}{{Crafting3}}{{Crafting2}}{{Crafting1}}" +-- Result: "{{Crafting1}}{{Crafting2}}{{Crafting3}}{{Crafting4}}{{Crafting5}}{{Crafting6}}{{Crafting7}}{{Crafting8}}" function EID:tableToCraftingIconsFull(craftTable, sortTable) if (sortTable == nil) then sortTable = true end local sortedList = {table.unpack(craftTable)} - if (sortTable) then table.sort(sortedList, function(a, b) return a > b end) end + if (sortTable) then table.sort(sortedList, function(a, b) return a < b end) end local iconString = "" for _,nr in ipairs(sortedList) do iconString = iconString.."{{Crafting"..nr.."}}" @@ -843,7 +843,7 @@ end -- Converts a given table into a string containing the crafting icons of the table, which are also grouped to reduce render lag -- Example input: {1,1,1,2,2,3,3,3} --- Result: "3{{Crafting3}}2{{Crafting2}}3{{Crafting1}}" +-- Result: "3{{Crafting1}}2{{Crafting2}}3{{Crafting3}}" local emptyPickupTable = {} for i=1,29 do emptyPickupTable[i] = 0 end function EID:tableToCraftingIconsMerged(craftTable) From 2540dc5296cbf03c6f6552e2d34f05203104995e Mon Sep 17 00:00:00 2001 From: Buurazu Date: Fri, 19 Nov 2021 21:08:52 -0500 Subject: [PATCH 23/41] icon display setting --- eid_config.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/eid_config.lua b/eid_config.lua index 7760fa36..02cb757d 100644 --- a/eid_config.lua +++ b/eid_config.lua @@ -217,6 +217,9 @@ EID.UserConfig = { -- Display craftable item names, moving the recipe to a new line -- Default = false ["BagOfCraftingDisplayNames"] = false, + -- Display recipes as 8 icons instead of grouped ingredients + -- Default = false + ["BagOfCraftingDisplayIcons"] = false, -- Set the keybinding to toggle the crafting display, so you can see descriptions of items/pickups on the floor -- look into the AB+ or Repentance documentation for the key names here: https://wofsauge.github.io/IsaacDocs/rep/enums/Keyboard.html -- Default = Keyboard.KEY_F3 @@ -341,6 +344,7 @@ EID.DefaultConfig = { ["BagOfCraftingRandomResults"] = 400, ["BagOfCraftingToggleKey"] = ButtonAction.ACTION_MAP, ["BagOfCraftingDisplayNames"] = false, + ["BagOfCraftingDisplayIcons"] = false, ["BagOfCraftingHideInBattle"] = true, ["BagOfCraftingSimplifiedMode"] = false, ["CraftingHideKey"] = Keyboard.KEY_F3, From 2aee604fd1678fb8ead7ab82c4d1ba8c38fe4a61 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Fri, 19 Nov 2021 21:09:28 -0500 Subject: [PATCH 24/41] add 8 icons display option --- eid_bagofcrafting.lua | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/eid_bagofcrafting.lua b/eid_bagofcrafting.lua index 711e50ba..bbe85e02 100644 --- a/eid_bagofcrafting.lua +++ b/eid_bagofcrafting.lua @@ -632,6 +632,9 @@ function EID:handleBagOfCraftingRendering() trackBagActivated() detectBagContentShift() + local tableToCraftingIcons = EID.tableToCraftingIconsMerged + if EID.Config["BagOfCraftingDisplayIcons"] then tableToCraftingIcons = EID.tableToCraftingIconsFull end + --prevent our hotkeys from triggering as they're set if not ModConfigMenu or not ModConfigMenu.IsVisible then if Input.IsButtonTriggered(EID.Config["CraftingHideKey"], 0) or Input.IsButtonTriggered(EID.Config["CraftingHideButton"], EID.player.ControllerIndex) then @@ -778,9 +781,11 @@ function EID:handleBagOfCraftingRendering() local bagQuality, bagResult = EID:simulateBagOfCrafting(EID.BagItems) local bestQuality, bestResult = EID:simulateBagOfCrafting(mostValuableSimp) + local bagQualityDesc = EID:getDescriptionEntry("CraftingBagQuality") + local bestQualityDesc = EID:getDescriptionEntry("CraftingBestQuality") - EID:appendToDescription(customDescObj, "Bag Quality: " .. bagQuality .. "#" .. bagResult .. "#") - EID:appendToDescription(customDescObj, "Best Quality: " .. bestQuality .. " " .. EID:tableToCraftingIconsFull(mostValuableSimp, false) .. "#" .. bestResult .. "#") + if (#EID.BagItems > 0) then EID:appendToDescription(customDescObj, bagQualityDesc .. " " .. bagQuality .. "#" .. bagResult .. "#") end + EID:appendToDescription(customDescObj, bestQualityDesc .. " " .. bestQuality .. "#{{Blank}} " .. tableToCraftingIcons(self,mostValuableSimp) .. "#" .. bestResult .. "#") EID:printDescription(customDescObj) return true @@ -1018,7 +1023,7 @@ function EID:handleBagOfCraftingRendering() if v[3] then customDescObj.Description = customDescObj.Description.." {{Collectible" .. v[3] .. "}} " end end - customDescObj.Description = customDescObj.Description..EID:tableToCraftingIconsMerged(v[1]) + customDescObj.Description = customDescObj.Description..tableToCraftingIcons(self,v[1]) prevItem = v[2] end end From 11e4b966dc4b2dd3552192d3eec3e37845ee81d0 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Fri, 19 Nov 2021 21:10:03 -0500 Subject: [PATCH 25/41] working on simplifying the options creation --- mod_config_menu.lua | 88 ++++++++++++++++++++++++++++----------------- 1 file changed, 55 insertions(+), 33 deletions(-) diff --git a/mod_config_menu.lua b/mod_config_menu.lua index cb29529b..eb75ea6a 100644 --- a/mod_config_menu.lua +++ b/mod_config_menu.lua @@ -65,7 +65,33 @@ function EID:buildColorArray() table.sort(colorNameArray) end -function EID:AddHotkeySetting(category, isController, optionName, displayText, infoText) +function EID:AddBooleanSetting(category, optionName, displayText, onText, offText, infoText) + if (type(infoText) == "string") then infoText = {infoText} end + MCM.AddSetting( + "EID", + category, + { + Type = ModConfigMenu.OptionType.BOOLEAN, + CurrentSetting = function() + return EID.Config[optionName] + end, + Display = function() + local onOff = offText + if EID.Config[optionName] then + onOff = onText + end + return displayText .. ": " .. onOff + end, + OnChange = function(currentBool) + EID.Config[optionName] = currentBool + end, + Info = infoText + } + ) +end + +function EID:AddHotkeySetting(category, optionName, displayText, infoText, isController) + if (type(infoText) == "string") then infoText = {infoText} end local optionType = ModConfigMenu.OptionType.KEYBIND_KEYBOARD local hotkeyToString = InputHelper.KeyboardToString local deviceString = "keyboard" @@ -103,7 +129,7 @@ function EID:AddHotkeySetting(category, isController, optionName, displayText, i end return "Press a button on your "..deviceString.." to change this setting.$newline$newline" .. keepSettingString .. "Press "..backString.." to go back and clear this setting." end, - Info = {infoText} + Info = infoText } ) end @@ -178,8 +204,8 @@ if MCMLoaded then ) -- Hide Key - EID:AddHotkeySetting("General", false, "HideKey", "Toggle (Keyboard)", "Press this key to toggle the description display") - EID:AddHotkeySetting("General", true, "HideButton", "Toggle (Controller)", "Press this button to toggle the description display (Left Stick or Right Stick recommended; most other buttons will not work)") + EID:AddHotkeySetting("General", "HideKey", "Toggle (Keyboard)", "Press this key to toggle the description display", false) + EID:AddHotkeySetting("General", "HideButton", "Toggle (Controller)", "Press this button to toggle the description display (Left Stick or Right Stick recommended; most other buttons will not work)", true) MCM.AddSpace("EID", "General") @@ -1059,9 +1085,9 @@ if MCMLoaded then return EID.Config["BagOfCraftingHideInBattle"] end, Display = function() - local onOff = "False" + local onOff = "No" if EID.Config["BagOfCraftingHideInBattle"] then - onOff = "True" + onOff = "Yes" end return "Hide in Battle: " .. onOff end, @@ -1072,31 +1098,19 @@ if MCMLoaded then } ) -- Bag of Crafting No Recipes Mode - MCM.AddSetting( - "EID", - "Crafting", - { - Type = ModConfigMenu.OptionType.BOOLEAN, - CurrentSetting = function() - return EID.Config["BagOfCraftingSimplifiedMode"] - end, - Display = function() - local onOff = "Off" - if EID.Config["BagOfCraftingSimplifiedMode"] then - onOff = "On" - end - return "No Recipes Mode: " .. onOff - end, - OnChange = function(currentBool) - EID.Config["BagOfCraftingSimplifiedMode"] = currentBool - end, - Info = {"No Recipes Mode shows quality and item pool percentages instead of exact recipes, for a more intended experience"} - } - ) - + EID:AddBooleanSetting("Crafting", + "BagOfCraftingSimplifiedMode", + "No Recipes Mode", "On", "Off", + "No Recipes Mode shows quality and item pool percentages instead of exact recipes, for a more intended experience") + -- Bag of Crafting 8 icons toggle + EID:AddBooleanSetting("Crafting", + "BagOfCraftingDisplayIcons", + "Show Recipes as", "8 Icons", "Groups", + "Choose if you want recipes (and the Best Quality bag in No Recipes Mode) shown as 8 icons, or as grouped ingredients") + MCM.AddSpace("EID", "Crafting") - -- Bag of Crafting results + -- Bag of Crafting results per page MCM.AddSetting( "EID", "Crafting", @@ -1180,11 +1194,19 @@ if MCMLoaded then MCM.AddSpace("EID", "Crafting") - EID:AddHotkeySetting("Crafting", false, "CraftingHideKey", "Toggle (Keyboard)", "Press this key to toggle the crafting display, allowing you to check descriptions of items/pickups on the floor") - EID:AddHotkeySetting("Crafting", true, "CraftingHideButton", "Toggle (Controller)", "Press this button to toggle the crafting display (Left Stick or Right Stick recommended; most other buttons will not work)") + EID:AddHotkeySetting("Crafting", + "CraftingHideKey", "Toggle (Keyboard)", + "Press this key to toggle the crafting display, allowing you to check descriptions of items/pickups on the floor", false) + EID:AddHotkeySetting("Crafting", + "CraftingHideButton", "Toggle (Controller)", + "Press this button to toggle the crafting display (Left Stick or Right Stick recommended; most other buttons will not work)", true) - EID:AddHotkeySetting("Crafting", false, "CraftingResultKey", "Result Toggle (Keyboard)", "Press this key to toggle the description of the item ready to be crafted") - EID:AddHotkeySetting("Crafting", true, "CraftingResultButton", "Result Toggle (Controller)", "Press this button to toggle the description of the item ready to be crafted (Left Stick or Right Stick recommended; most other buttons will not work)") + EID:AddHotkeySetting("Crafting", + "CraftingResultKey", "Result Toggle (Keyboard)", + "Press this key to toggle the description of the item ready to be crafted", false) + EID:AddHotkeySetting("Crafting", + "CraftingResultButton", "Result Toggle (Controller)", + "Press this button to toggle the description of the item ready to be crafted (Left Stick or Right Stick recommended; most other buttons will not work)", true) MCM.AddSpace("EID", "Crafting") --------Clear bag--------- From 992e24746405f3df473dfaa92cb018e94773f94f Mon Sep 17 00:00:00 2001 From: Buurazu Date: Fri, 19 Nov 2021 23:39:22 -0500 Subject: [PATCH 26/41] Update mod_config_menu.lua --- mod_config_menu.lua | 47 ++++++++++++++++++--------------------------- 1 file changed, 19 insertions(+), 28 deletions(-) diff --git a/mod_config_menu.lua b/mod_config_menu.lua index eb75ea6a..08322985 100644 --- a/mod_config_menu.lua +++ b/mod_config_menu.lua @@ -136,6 +136,8 @@ end if MCMLoaded then function AnIndexOf(t, val) + --check for 0th term, to help with how OptionType.SCROLL works (returns value between 0 and 10) + if t[0] and t[0] == val then return 0 end for k, v in ipairs(t) do if v == val then return k @@ -204,8 +206,12 @@ if MCMLoaded then ) -- Hide Key - EID:AddHotkeySetting("General", "HideKey", "Toggle (Keyboard)", "Press this key to toggle the description display", false) - EID:AddHotkeySetting("General", "HideButton", "Toggle (Controller)", "Press this button to toggle the description display (Left Stick or Right Stick recommended; most other buttons will not work)", true) + EID:AddHotkeySetting("General", + "HideKey", "Toggle (Keyboard)", + "Press this key to toggle the description display", false) + EID:AddHotkeySetting("General", + "HideButton", "Toggle (Controller)", + "Press this button to toggle the description display (Left Stick or Right Stick recommended; most other buttons will not work)", true) MCM.AddSpace("EID", "General") @@ -590,6 +596,8 @@ if MCMLoaded then } ) + MCM.AddSpace("EID", "Display") + -- Spindown Dice results local diceSteps = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11} MCM.AddSetting( @@ -605,7 +613,7 @@ if MCMLoaded then AnIndexOf(diceSteps, EID.Config["SpindownDiceResults"]) - 1 .. " " .. EID.Config["SpindownDiceResults"] .. " Items" end, OnChange = function(currentNum) - EID.Config["SpindownDiceResults"] = diceSteps[currentNum%#diceSteps + 1] + EID.Config["SpindownDiceResults"] = diceSteps[currentNum + 1] end, Info = {"Preview of Items resulting when using the Spindown dice X times"} } @@ -1055,7 +1063,7 @@ if MCMLoaded then ---------------------------------Visuals----------------------------------- -- Bag of Crafting Display - local bagDisplays = {"always","hold","never"} + local bagDisplays = {"Always","Hold","Never"} MCM.AddSetting( "EID", "Crafting", @@ -1067,36 +1075,19 @@ if MCMLoaded then Minimum = 1, Maximum = 3, Display = function() - return "Display mode: " .. EID.Config["DisplayBagOfCrafting"] + return "Display Mode: " .. EID.Config["DisplayBagOfCrafting"] end, OnChange = function(currentNum) EID.Config["DisplayBagOfCrafting"] = bagDisplays[currentNum] end, - Info = {"always = Always show Results, hold = Show when holding up bag, never = Never show results"} + Info = {"Always = Always show Results, Hold = Show when holding up bag, Never = Never show results"} } ) -- Bag of Crafting Hide in Battle - MCM.AddSetting( - "EID", - "Crafting", - { - Type = ModConfigMenu.OptionType.BOOLEAN, - CurrentSetting = function() - return EID.Config["BagOfCraftingHideInBattle"] - end, - Display = function() - local onOff = "No" - if EID.Config["BagOfCraftingHideInBattle"] then - onOff = "Yes" - end - return "Hide in Battle: " .. onOff - end, - OnChange = function(currentBool) - EID.Config["BagOfCraftingHideInBattle"] = currentBool - end, - Info = {"Hides the recipe list when in a fight"} - } - ) + EID:AddBooleanSetting("Crafting", + "BagOfCraftingHideInBattle", + "Hide in Battle", "Yes", "No", + "Hides the recipe list when in a fight") -- Bag of Crafting No Recipes Mode EID:AddBooleanSetting("Crafting", "BagOfCraftingSimplifiedMode", @@ -1105,7 +1096,7 @@ if MCMLoaded then -- Bag of Crafting 8 icons toggle EID:AddBooleanSetting("Crafting", "BagOfCraftingDisplayIcons", - "Show Recipes as", "8 Icons", "Groups", + "Show Recipes/Best Bag as", "8 Icons", "Groups", "Choose if you want recipes (and the Best Quality bag in No Recipes Mode) shown as 8 icons, or as grouped ingredients") MCM.AddSpace("EID", "Crafting") From 6dbb6f5b98f0d0a27f19fa533d6ef55bf2052858 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Fri, 19 Nov 2021 23:39:54 -0500 Subject: [PATCH 27/41] small simplified mode improvements --- eid_bagofcrafting.lua | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/eid_bagofcrafting.lua b/eid_bagofcrafting.lua index bbe85e02..f993582f 100644 --- a/eid_bagofcrafting.lua +++ b/eid_bagofcrafting.lua @@ -311,7 +311,7 @@ function EID:simulateBagOfCrafting(componentsTable) local poolString = "" local firstAfterBoss = false for k,v in ipairs(poolWeights) do - if (v.weight > 0) then + if (v.totalWeight > 0) then --line break after boss pool if (firstAfterBoss) then poolString = poolString .. " " end poolString = poolString .. poolToIcon[v.idx] .. ":" .. math.floor(v.totalWeight/totalWeight*100+0.5) .. "%," @@ -762,6 +762,10 @@ function EID:handleBagOfCraftingRendering() end if #EID.BagItems >0 then + if #EID.BagItems >= 8 then + local recipe = EID:calculateBagOfCrafting(EID.BagItems) + EID:appendToDescription(customDescObj, "{{Collectible"..recipe.."}} ") + end local bagDesc = EID:getDescriptionEntry("CraftingBagContent").."(Beta)" EID:appendToDescription(customDescObj, bagDesc..EID:tableToCraftingIconsMerged(EID.BagItems).."#") end @@ -785,7 +789,7 @@ function EID:handleBagOfCraftingRendering() local bestQualityDesc = EID:getDescriptionEntry("CraftingBestQuality") if (#EID.BagItems > 0) then EID:appendToDescription(customDescObj, bagQualityDesc .. " " .. bagQuality .. "#" .. bagResult .. "#") end - EID:appendToDescription(customDescObj, bestQualityDesc .. " " .. bestQuality .. "#{{Blank}} " .. tableToCraftingIcons(self,mostValuableSimp) .. "#" .. bestResult .. "#") + if (bestQuality > bagQuality) then EID:appendToDescription(customDescObj, bestQualityDesc .. " " .. bestQuality .. "#{{Blank}} " .. tableToCraftingIcons(self,mostValuableSimp) .. "#" .. bestResult .. "#") end EID:printDescription(customDescObj) return true From 8969ef3652594982364b433cb3cf2ea2b77bf589 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Fri, 19 Nov 2021 23:41:07 -0500 Subject: [PATCH 28/41] change font loading for --luadebug --- main.lua | 51 +++++++++++++++++++++------------------------------ 1 file changed, 21 insertions(+), 30 deletions(-) diff --git a/main.lua b/main.lua index 2c5a5c50..b6e6c490 100644 --- a/main.lua +++ b/main.lua @@ -88,36 +88,25 @@ local nullVector = Vector(0,0) --------------------------------------------------------------------------- ------------------------------- Load Font --------------------------------- -local isluadebug, os = pcall(require,"os") local modfolder ='external item descriptions_836319872' --release mod folder name - if isluadebug then - local userPath = os.tmpname() - userPath = string.gsub(userPath, "\\", "/") - local newPath = "" - if not string.find(userPath, "AppData") then - -- Linux - EID.modPath = os.getenv("HOME") .. "/.local/share/binding of isaac afterbirth+ mods/"..modfolder.."/" - else - for str in string.gmatch(userPath, "([^/]+)") do - if str ~="AppData" then - newPath = newPath..str.."/" - else - break - end - end - EID.modPath = newPath.."Documents/My Games/Binding of Isaac Afterbirth+ Mods/"..modfolder.."/" - end - else - --use some very hacky trickery to get the path to this mod - local _, err = pcall(require, "") - local _, basePathStart = string.find(err, "no file '", 1) - local _, modPathStart = string.find(err, "no file '", basePathStart) - local modPathEnd, _ = string.find(err, ".lua'", modPathStart) - EID.modPath = string.sub(err, modPathStart + 1, modPathEnd - 1) - end - EID.modPath = string.gsub(EID.modPath, "\\", "/") - EID.modPath = string.gsub(EID.modPath, "//", "/") - EID.modPath = string.gsub(EID.modPath, ":/", ":\\") + +local function GetCurrentModPath() + if debug then + return string.sub(debug.getinfo(GetCurrentModPath).source,2) .. "/../" + end + --use some very hacky trickery to get the path to this mod + local _, err = pcall(require, "") + local _, basePathStart = string.find(err, "no file '", 1) + local _, modPathStart = string.find(err, "no file '", basePathStart) + local modPathEnd, _ = string.find(err, ".lua'", modPathStart) + local modPath = string.sub(err, modPathStart+1, modPathEnd-1) + modPath = string.gsub(modPath, "\\", "/") + modPath = string.gsub(modPath, "//", "/") + modPath = string.gsub(modPath, ":/", ":\\") + + return modPath +end +EID.modPath = GetCurrentModPath() EID.font = Font() -- init font object local fontFile = EID.Config["FontType"] or "default" @@ -376,7 +365,9 @@ end ---------------------------Handle New Room-------------------------------- local isMirrorRoom = false function EID:onNewRoom() - isMirrorRoom = game:GetLevel():GetCurrentRoom():IsMirrorWorld() + if REPENTANCE then + isMirrorRoom = game:GetLevel():GetCurrentRoom():IsMirrorWorld() + end end EID:AddCallback(ModCallbacks.MC_POST_NEW_ROOM, EID.onNewRoom) --------------------------------------------------------------------------- From 234398c6a091ef9ae4fe88d12c6dc6f0f3d7b2cb Mon Sep 17 00:00:00 2001 From: Buurazu Date: Fri, 19 Nov 2021 23:45:40 -0500 Subject: [PATCH 29/41] oops capitalizing that breaks it --- mod_config_menu.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod_config_menu.lua b/mod_config_menu.lua index 08322985..b26919c8 100644 --- a/mod_config_menu.lua +++ b/mod_config_menu.lua @@ -1063,7 +1063,7 @@ if MCMLoaded then ---------------------------------Visuals----------------------------------- -- Bag of Crafting Display - local bagDisplays = {"Always","Hold","Never"} + local bagDisplays = {"always","hold","never"} MCM.AddSetting( "EID", "Crafting", From 7e7714ec89d3e3ad9b66bb2926df2207fd6f55ea Mon Sep 17 00:00:00 2001 From: Buurazu Date: Sat, 20 Nov 2021 01:33:32 -0500 Subject: [PATCH 30/41] improve Lil Monstro --- descriptions/ab+/en_us.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/descriptions/ab+/en_us.lua b/descriptions/ab+/en_us.lua index aac7aa5e..02348584 100644 --- a/descriptions/ab+/en_us.lua +++ b/descriptions/ab+/en_us.lua @@ -483,7 +483,7 @@ EID.descriptions["en_us"].collectibles={ {"468", "Shade", "Follows your movement delayed by 1 seconds#Deals 30 contact damage per second"}, {"469", "Depression", "Leaves trail of creep#Creep deals 6 damage per second#Enemies touching the cloud can spawn a holy light beam"}, {"470", "Hushy", "Bounces around the room#Deals contact damage#Will stop moving when you are shooting#When stopped, it can block projectiles"}, - {"471", "Lil Monstro", "Chargable Shotgun attack#(Similar to monstros lung)#Each tear deals 3.5 damage"}, + {"471", "Lil Monstro", "Chargable shotgun attack similar to Monstro's Lung#Each tear deals 3.5 damage"}, {"472", "King Baby", "Other familiars follow it#Stops moving when you are shooting#Will teleport back to you when you stop shooting"}, {"473", "Big Chubby", "Charges forwards very slow#Deals 40.5 contact damage per second"}, {"474", "Tonsil", "Blocks enemy projectiles"}, From e12cdad6dedb13a0d02dca625795292a036a9985 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Sat, 20 Nov 2021 01:48:19 -0500 Subject: [PATCH 31/41] avoid any potential issues from AB+ using the collectible unlock check --- eid_api.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/eid_api.lua b/eid_api.lua index c77a8798..8e6ecd32 100644 --- a/eid_api.lua +++ b/eid_api.lua @@ -800,6 +800,8 @@ function EID:isCollectibleUnlocked(collectibleID, itemPoolOfItem) end function EID:isCollectibleUnlockedAnyPool(collectibleID) + --THIS FUNCTION IS FOR REPENTANCE ONLY due to using Repentance XML data; currently used by the Achievement Check, Spindown Dice, and Bag of Crafting + if not REPENTANCE then return true end local item = EID.itemConfig:GetCollectible(collectibleID) if EID.itemUnlockStates[collectibleID] == nil then --whitelist all quest items and items with no associated achievement From efebd659c45b9d23c1a8b86a3bfc5835f28c7c95 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Sat, 20 Nov 2021 10:34:18 -0500 Subject: [PATCH 32/41] improve Wheel of Fortune --- descriptions/ab+/en_us.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/descriptions/ab+/en_us.lua b/descriptions/ab+/en_us.lua index 02348584..a4edc10e 100644 --- a/descriptions/ab+/en_us.lua +++ b/descriptions/ab+/en_us.lua @@ -711,7 +711,7 @@ EID.descriptions["en_us"].cards={ {"8", "VII - The Chariot", "Invincibility + contact damage for 6 seconds"}, {"9", "VIII - Justice", "Spawns 1 bomb, 1 key, 1 coin, 1 heart"}, {"10", "IX - The Hermit", "Teleports you to the {{Shop}}Shop"}, - {"11", "X - Wheel of Fortune", "Spawns a Slot- or Fortune Machine"}, + {"11", "X - Wheel of Fortune", "Spawns a Slot or Fortune Machine"}, {"12", "XI - Strength", "↑ +1 Health up#↑ +0.3 Damage up#↑ +50% Damage#↑ +5.25 Range up#↑ +0.3 Speed up#For current room"}, {"13", "XII - The Hanged Man", "Grants flight for current room"}, {"14", "XIII - Death", "Deals 40 damage to all enemies in the room"}, From 20cf41773dd02357034feb2395df61d80cc01330 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Sat, 20 Nov 2021 11:01:30 -0500 Subject: [PATCH 33/41] Soul of the Keeper can give 1 coin --- descriptions/rep/en_us.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/descriptions/rep/en_us.lua b/descriptions/rep/en_us.lua index 40ec195f..70cd55bc 100644 --- a/descriptions/rep/en_us.lua +++ b/descriptions/rep/en_us.lua @@ -815,8 +815,8 @@ local repCards={ [90] = {"90", "Soul of Eden", "Rerolls pedestals and pickups in current room#The rerolled items use random pools {{Collectible402}}"}, -- Soul of Eden [91] = {"91", "Soul of the Lost", "Die and turn into The Lost for current room#You can take one {{DevilRoom}}Devil Room item for free, the rest will disappear#You can enter the Mausoleum or Gehenna door for free"}, -- Soul of the Lost [92] = {"92", "Soul of Lilith", "Adds 1 random familiar"}, -- Soul of Lilith - [93] = {"93", "Soul of the Keeper", "Spawns 3-25 random coins"}, -- Soul of the Keeper - [94] = {"94", "Soul of Apollyon", "Spawn 15 random locust flies"}, -- oul of Apollyon + [93] = {"93", "Soul of the Keeper", "Spawns 1-25 random coins"}, -- Soul of the Keeper + [94] = {"94", "Soul of Apollyon", "Spawn 15 random locust flies"}, -- Soul of Apollyon [95] = {"95", "Soul of the Forgotten", "Spawns The Forgotten as a temporary secondary character for current room"}, -- Soul of the Forgotten [96] = {"96", "Soul of Bethany", "Spawns 6 {{Collectible584}}Book of Virtues wisps with random properties"}, -- Soul of Bethany [97] = {"97", "Soul of Jacob and Esau", "Spawns Esau as a temporary secondary character for current room"}, -- Soul of Jacob and Esau From b3d7b1cd8d621e71477d69472e7e8f94946d2048 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Sat, 20 Nov 2021 12:03:15 -0500 Subject: [PATCH 34/41] improve Temperance/Judgement --- descriptions/ab+/en_us.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/descriptions/ab+/en_us.lua b/descriptions/ab+/en_us.lua index a4edc10e..e0088202 100644 --- a/descriptions/ab+/en_us.lua +++ b/descriptions/ab+/en_us.lua @@ -653,7 +653,7 @@ EID.descriptions["en_us"].trinkets={ {"82", "Golden Horse Shoe", "+15% chance for {{TreasureRoom}}Treasure Rooms to have two items on future floors#You can only choose one"}, {"83", "Store Key", "Open {{Shop}}Shops for free"}, {"84", "Rib of Greed", "Greed/Super Greed no longer appear in {{Shop}}Shops#More coins appear"}, - {"85", "Karma", "Using a Donation Machine can heal you or spawn a beggar"}, + {"85", "Karma", "Using a Donation Machine can heal you or spawn a Beggar"}, {"86", "Lil Larva", "Destroying poop spawns a blue fly"}, {"87", "Mom's Locket", "Heal half a heart when using keys#Turns half hearts into full hearts"}, {"88", "NO!", "Prevents active items from being generated in all item pools"}, @@ -715,13 +715,13 @@ EID.descriptions["en_us"].cards={ {"12", "XI - Strength", "↑ +1 Health up#↑ +0.3 Damage up#↑ +50% Damage#↑ +5.25 Range up#↑ +0.3 Speed up#For current room"}, {"13", "XII - The Hanged Man", "Grants flight for current room"}, {"14", "XIII - Death", "Deals 40 damage to all enemies in the room"}, - {"15", "XIV - Temperance", "Spawns a Blood Donation Machine"}, + {"15", "XIV - Temperance", "Spawns a Blood Donation Machine#Spawns a Devil Beggar in Greed Mode"}, {"16", "XV - The Devil", "↑ +2 Damage up for current room"}, {"17", "XVI - The Tower", "Spawns 6 troll bombs"}, {"18", "XVII - The Stars", "Teleports you to the {{TreasureRoom}}Treasure Room"}, {"19", "XVIII - The Moon", "Teleports you to the {{SecretRoom}}Secret Room"}, {"20", "XIX - The Sun", "Deals 100 damage to all enemies#Full health#Reveals entire map"}, - {"21", "XX - Judgement", "Spawns a beggar"}, + {"21", "XX - Judgement", "Spawns a Beggar or Devil Beggar"}, {"22", "XXI - The World", "Reveals the entire map and shows all roomtypes"}, {"23", "2 of Clubs", "Duplicate your bombs"}, {"24", "2 of Diamonds", "Duplicate your money"}, From 113814f4c1b2d9091edcf248a640fd78321485e2 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Sat, 20 Nov 2021 12:04:00 -0500 Subject: [PATCH 35/41] improve Beth's Essence --- descriptions/rep/en_us.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/descriptions/rep/en_us.lua b/descriptions/rep/en_us.lua index 70cd55bc..1cdfc8b5 100644 --- a/descriptions/rep/en_us.lua +++ b/descriptions/rep/en_us.lua @@ -552,7 +552,7 @@ local repTrinkets={ [179] = {"179", "RC Remote", "Familiars movement will be controlled by the same inputs as the player"}, -- RC Remote [180] = {"180", "Found Soul", "Familiar that follows Isaac's exact movements and shoots spectral tears#Has same damage and tear effects as the player"}, -- Found Soul [181] = {"181", "Expansion Pack", "Triggers a separate random active item when using an active item"}, -- Expansion Pack - [182] = {"182", "Beth's Essence", "Spawns 5 wisps upon entering an Angel Room#Creates a wisp when giving money to beggars"}, -- Beth's Essence + [182] = {"182", "Beth's Essence", "Spawns 5 wisps upon entering an Angel Room#Chance to spawn a wisp when donating to Beggars"}, -- Beth's Essence [183] = {"183", "The Twins", "50% chance to duplicate a familiar each room#Grants{{Collectible8}}Brother Bobby or{{Collectible67}}Sister Maggy if you have no familiars"}, -- The Twins [184] = {"184", "Adoption Papers", "Shops can sell familiars#Familiars will always be on discount"}, -- Adoption Papers [185] = {"185", "Cricket Leg", "Chance to spawn a random locust when killing an enemy"}, -- Cricket Leg @@ -584,7 +584,7 @@ EID.descriptions["en_us"].tarotClothBuffs = { [16] = {"16", "", "Damage increase doubled"}, -- XV - The Devil [17] = {"17", "", "Spawns 12 troll bombs"}, -- XVI - The Tower [18] = {"18", "", "If the Treasure Room wasn't entered before, it will have two items to choose from"}, -- XVII - The Stars - [21] = {"21", "", "Spawns 2 beggars"}, -- XX - Judgement + [21] = {"21", "", "Spawns 2 Beggars"}, -- XX - Judgement [56] = {"56", "", "Drops all items alongside pickups, including Tarot Cloth"}, -- 0 - The Fool? [59] = {"59", "", "↑ +3 Health up"}, -- III - The Empress? [61] = {"61", "", "Spawns 3 Bone Hearts"}, -- V - The Hierophant? From dd1335cb4441daf6942f1f57873317449dce57fa Mon Sep 17 00:00:00 2001 From: wofsauge Date: Sat, 20 Nov 2021 21:38:02 +0100 Subject: [PATCH 36/41] Update descriptions/ab+/en_us.lua Co-authored-by: Marcx <55658162+Ma-rcx@users.noreply.github.com> --- descriptions/ab+/en_us.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/descriptions/ab+/en_us.lua b/descriptions/ab+/en_us.lua index e0088202..5b9465cc 100644 --- a/descriptions/ab+/en_us.lua +++ b/descriptions/ab+/en_us.lua @@ -483,7 +483,7 @@ EID.descriptions["en_us"].collectibles={ {"468", "Shade", "Follows your movement delayed by 1 seconds#Deals 30 contact damage per second"}, {"469", "Depression", "Leaves trail of creep#Creep deals 6 damage per second#Enemies touching the cloud can spawn a holy light beam"}, {"470", "Hushy", "Bounces around the room#Deals contact damage#Will stop moving when you are shooting#When stopped, it can block projectiles"}, - {"471", "Lil Monstro", "Chargable shotgun attack similar to Monstro's Lung#Each tear deals 3.5 damage"}, + {"471", "Lil Monstro", "Chargable shotgun attack similar to {{Collectible229}}Monstro's Lung#Each tear deals 3.5 damage"}, {"472", "King Baby", "Other familiars follow it#Stops moving when you are shooting#Will teleport back to you when you stop shooting"}, {"473", "Big Chubby", "Charges forwards very slow#Deals 40.5 contact damage per second"}, {"474", "Tonsil", "Blocks enemy projectiles"}, From ebe123cf90404a93a9ae280cd7763c0693f9cd51 Mon Sep 17 00:00:00 2001 From: wofsauge Date: Sat, 20 Nov 2021 21:38:30 +0100 Subject: [PATCH 37/41] Update descriptions/rep/en_us.lua Co-authored-by: Marcx <55658162+Ma-rcx@users.noreply.github.com> --- descriptions/rep/en_us.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/descriptions/rep/en_us.lua b/descriptions/rep/en_us.lua index 1cdfc8b5..062d9fb9 100644 --- a/descriptions/rep/en_us.lua +++ b/descriptions/rep/en_us.lua @@ -552,7 +552,7 @@ local repTrinkets={ [179] = {"179", "RC Remote", "Familiars movement will be controlled by the same inputs as the player"}, -- RC Remote [180] = {"180", "Found Soul", "Familiar that follows Isaac's exact movements and shoots spectral tears#Has same damage and tear effects as the player"}, -- Found Soul [181] = {"181", "Expansion Pack", "Triggers a separate random active item when using an active item"}, -- Expansion Pack - [182] = {"182", "Beth's Essence", "Spawns 5 wisps upon entering an Angel Room#Chance to spawn a wisp when donating to Beggars"}, -- Beth's Essence + [182] = {"182", "Beth's Essence", "Spawns 5 wisps upon entering an {{AngelRoom}}Angel Room#Chance to spawn a wisp when donating to Beggars"}, -- Beth's Essence [183] = {"183", "The Twins", "50% chance to duplicate a familiar each room#Grants{{Collectible8}}Brother Bobby or{{Collectible67}}Sister Maggy if you have no familiars"}, -- The Twins [184] = {"184", "Adoption Papers", "Shops can sell familiars#Familiars will always be on discount"}, -- Adoption Papers [185] = {"185", "Cricket Leg", "Chance to spawn a random locust when killing an enemy"}, -- Cricket Leg From 12c18b7fad47e775951720686b3ef1ffeefdb29d Mon Sep 17 00:00:00 2001 From: Buurazu Date: Sun, 21 Nov 2021 00:09:23 -0500 Subject: [PATCH 38/41] try and hotfix the newest issue's issue slightly --- mod_config_menu.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mod_config_menu.lua b/mod_config_menu.lua index b26919c8..df6b5e00 100644 --- a/mod_config_menu.lua +++ b/mod_config_menu.lua @@ -56,6 +56,7 @@ end function EID:buildColorArray() + if (colorNameArray[1] ~= nil) then return end colorNameArray = {} for k,v in pairs(EID.InlineColors) do if k~="ColorText" and k~="ColorTransform" and k~="ColorError" and k~="ColorObjName" and k~="ColorReset" then @@ -1296,6 +1297,7 @@ if MCMLoaded then Minimum = 0, Maximum = 1000, Display = function() + if EID.Config["TextColor"] == nil then EID.Config["TextColor"] = EID.DefaultConfig["TextColor"] end EID.MCMCompat_isDisplayingEIDTab = "Visuals"; return "Descriptions: " .. string.gsub(EID.Config["TextColor"], "Color", "").. " ("..AnIndexOf(colorNameArray, EID.Config["TextColor"]).."/"..#colorNameArray..")" end, @@ -1319,6 +1321,7 @@ if MCMLoaded then Minimum = 0, Maximum = 1000, Display = function() + if EID.Config["ItemNameColor"] == nil then EID.Config["ItemNameColor"] = EID.DefaultConfig["ItemNameColor"] end return "Names: " .. string.gsub(EID.Config["ItemNameColor"], "Color", "").. " ("..AnIndexOf(colorNameArray, EID.Config["ItemNameColor"]).."/"..#colorNameArray..")" end, OnChange = function(currentNum) @@ -1341,6 +1344,7 @@ if MCMLoaded then Minimum = 0, Maximum = 1000, Display = function() + if EID.Config["TransformationColor"] == nil then EID.Config["TransformationColor"] = EID.DefaultConfig["TransformationColor"] end return "Transformations: " .. string.gsub(EID.Config["TransformationColor"], "Color", "").. " ("..AnIndexOf(colorNameArray, EID.Config["TransformationColor"]).."/"..#colorNameArray..")" end, OnChange = function(currentNum) @@ -1363,6 +1367,7 @@ if MCMLoaded then Minimum = 0, Maximum = 1000, Display = function() + if EID.Config["ErrorColor"] == nil then EID.Config["ErrorColor"] = EID.DefaultConfig["ErrorColor"] end return "Errors: " .. string.gsub(EID.Config["ErrorColor"], "Color", "").. " ("..AnIndexOf(colorNameArray, EID.Config["ErrorColor"]).."/"..#colorNameArray..")" end, OnChange = function(currentNum) From efc37309e27496bdeb8b94b5bee4ea4a0af0d33e Mon Sep 17 00:00:00 2001 From: Buurazu Date: Sun, 21 Nov 2021 08:23:54 -0500 Subject: [PATCH 39/41] automatically use No Recipes Mode if modded items --- eid_bagofcrafting.lua | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/eid_bagofcrafting.lua b/eid_bagofcrafting.lua index f993582f..f92de2ce 100644 --- a/eid_bagofcrafting.lua +++ b/eid_bagofcrafting.lua @@ -601,9 +601,7 @@ local function detectModdedItems() maxItemID = EID:GetMaxCollectibleID() end if maxItemID > EID.XMLMaxItemID then - local customDescObj = EID:getDescriptionObj(5, 100, 710) - customDescObj.Description = EID.descriptions["en_us"].CraftingBagModError - EID:printDescription(customDescObj) + return true end return false end @@ -660,7 +658,7 @@ function EID:handleBagOfCraftingRendering() if EID.Config["DisplayBagOfCrafting"] == "hold" and not string.find(EID.player:GetSprite():GetAnimation(), "PickupWalk") then return false end - if detectModdedItems() or Game():GetRoom():GetFrameCount ()<2 then + if Game():GetRoom():GetFrameCount ()<2 then return false end @@ -745,7 +743,7 @@ function EID:handleBagOfCraftingRendering() table.sort(itemQuery, qualitySort) --Simplified Mode display - if (EID.Config["BagOfCraftingSimplifiedMode"]) then + if (EID.Config["BagOfCraftingSimplifiedMode"] or detectModdedItems()) then local customDescObj = EID:getDescriptionObj(5, 100, 710) customDescObj.Description = "" From c848805be23c5c9e979e6efefd0ad8a801093c50 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Sun, 21 Nov 2021 12:00:54 -0500 Subject: [PATCH 40/41] Normalize Heals 1 Red Heart --- descriptions/rep/en_us.lua | 40 +++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/descriptions/rep/en_us.lua b/descriptions/rep/en_us.lua index 870f14c4..bea45f85 100644 --- a/descriptions/rep/en_us.lua +++ b/descriptions/rep/en_us.lua @@ -18,18 +18,18 @@ local repCollectibles={ [13] = {"13", "The Virus", "Poison touch#↑ +0.2 Speed up"}, -- The Virus [14] = {"14", "Roid Rage", "↑ +0.3 Speed up#↑ +1.5 Range up#↑ +0.5 Tear Height"}, -- Roid Rage [18] = {"18", "A Dollar", "+100 coins"}, -- A Dollar - [22] = {"22", "Lunch", "↑ +1 Health up#Heals one Red Heart"}, -- Lunch - [23] = {"23", "Dinner", "↑ +1 Health up#Heals one Red Heart"}, -- Dinner - [24] = {"24", "Dessert", "↑ +1 Health up#Heals one Red Heart"}, -- Dessert - [25] = {"25", "Breakfast", "↑ +1 Health up#Heals one Red Heart"}, -- Breakfast - [26] = {"26", "Rotten Meat", "↑ +1 Health up#Heals one Red Heart"}, -- Rotten Meat + [22] = {"22", "Lunch", "↑ +1 Health up#Heals 1 Red Heart"}, -- Lunch + [23] = {"23", "Dinner", "↑ +1 Health up#Heals 1 Red Heart"}, -- Dinner + [24] = {"24", "Dessert", "↑ +1 Health up#Heals 1 Red Heart"}, -- Dessert + [25] = {"25", "Breakfast", "↑ +1 Health up#Heals 1 Red Heart"}, -- Breakfast + [26] = {"26", "Rotten Meat", "↑ +1 Health up#Heals 1 Red Heart"}, -- Rotten Meat [29] = {"29", "Mom's Underwear", "↑ +1.5 Range up#↑ +0.5 Tear Height#Spawns 3-6 Blue Flies"}, -- Mom's Underwear [30] = {"30", "Mom's Heels", "↑ +1.5 Range up#↑ +0.5 Tear Height#Touched enemies take 12 damage"}, -- Mom's Heels [31] = {"31", "Mom's Lipstick", "↑ +2.25 Range up#↑ +0.5 Tear Height#Spawns 1 random heart"}, -- Mom's Lipstick [40] = {"40", "Kamikaze!", "Causes a big explosion at the player's location#Deals 185 damage"}, -- Kamikaze! [42] = {"42", "Bob's Rotten Head", "Throwable poison bomb#Deals 185 + your damage#Creates poison cloud"}, -- Bob's Rotten Head [44] = {"44", "Teleport", "Teleports Isaac into a random room except I AM ERROR rooms#Influence direction a bit by moving in desired direction"}, -- Teleport - [45] = {"45", "Yum Heart", "Heal 1 red heart#Also heals other players for half a heart"}, -- Yum Heart + [45] = {"45", "Yum Heart", "Heal 1 Red Heart#Also heals other players for half a heart"}, -- Yum Heart [46] = {"46", "Lucky Foot", "↑ +1 Luck up#Better chance to win while gambling#Increases room clearing drop chance#Turns some bad pills into good ones"}, -- Lucky Foot [52] = {"52", "Dr. Fetus", "Bomb tears#Each bomb deals 10x your damage#If that results in over 60 damage, it instead deals 5x your damage + 30#↓ -60% Tears down"}, --Dr. Fetus [53] = {"53", "Magneto", "Magnetic attraction for pickups#Opens chests remotely, ignoring damage of spike chests"}, -- Magneto @@ -47,7 +47,7 @@ local repCollectibles={ [83] = {"83", "The Nail", "+ Half Black Heart#↑ +2 Damage up#↓ -0.18 Speed down#Deal contact damage#Crush rocks"}, -- The Nail [91] = {"91", "Spelunker Hat", "Reveals the room type of up to 2 adjacent rooms#Can also reveal Secret Rooms, Super Secret Rooms and Mini-Boss Rooms#Blocks projectiles falling from above"}, -- Spelunker Hat [98] = {"98", "The Relic", "Spawns 1 Soul Heart every 7-8 rooms"}, -- The Relic - [101] = {"101", "The Halo", "↑ +1 Health up#↑ +0.3 Damage up#↑ +0.2 Tears up#↑ +0.38 Range up#↑ +0.3 Speed up#↑ +0.5 Tear Height#Heals one Red Heart"}, -- The Halo + [101] = {"101", "The Halo", "↑ +1 Health up#↑ +0.3 Damage up#↑ +0.2 Tears up#↑ +0.38 Range up#↑ +0.3 Speed up#↑ +0.5 Tear Height#Heals 1 Red Heart"}, -- The Halo [106] = {"106", "Mr. Mega", "↑ Bomb damage x1.85#+5 Bombs"}, -- Mr. Mega [110] = {"110", "Mom's Contacts", "Chance to shoot Freezing Tears#↑ +0.38 Range up#↑ +0.5 Tear Height"}, -- Mom's Contacts [118] = {"118", "Brimstone", "Charge a blood laser that deals constant damage#↓ -67% Fire Rate down"}, -- Brimstone @@ -55,7 +55,7 @@ local repCollectibles={ [123] = {"123", "Monster Manual", "Spawns a random familiar#Lasts for current floor"}, -- Monster Manual [129] = {"129", "Bucket of Lard", "↑ +2 full red heart container#↓ -0.2 Speed down"}, -- Bucket of Lard [135] = {"135", "IV Bag", "Portable blood bank#Half a heart = 1-2 coins#1 coin on Hard Mode#0-1 coin as Keeper"}, --IV Bag - [138] = {"138", "Stigmata", "↑ +1 Health up#↑ +0.3 Damage up#Heals 1 red heart"}, -- Stigmata + [138] = {"138", "Stigmata", "↑ +1 Health up#↑ +0.3 Damage up#Heals 1 Red Heart"}, -- Stigmata [139] = {"139", "Mom's Purse", "You can now hold 2 trinkets#Spawns 1 random trinket"}, -- Mom's Purse [140] = {"140", "Bob's Curse", "Poison bombs#+5 bombs#Bombs leave a poison cloud"}, -- Bob's Curse [147] = {"147", "Notched Axe", "Break rocks and damage enemies on swing#Hitting with the axe reduces its charge#Charge refills on stage transition"}, -- Notched Axe @@ -68,13 +68,13 @@ local repCollectibles={ [169] = {"169", "Polyphemus", "↑ +100% Damage up#↑ +4 additional Damage up#↓ -58% Fire Rate down"}, [171] = {"171", "Spider Butt", "Slows down enemies for 4 seconds#10 damage to all enemies#Enemies killed with it spawn blue spiders"}, -- Spider Butt [172] = {"172", "Sacrificial Dagger", "Orbital knife#Blocks enemy shots#Deals 112.5 damage per second"}, -- Sacrificial Dagger - [176] = {"176", "Stem Cells", "↑ +1 Health up#↑ +0.16 Shot Speed up#Heals 1 red heart"}, -- Stem Cells + [176] = {"176", "Stem Cells", "↑ +1 Health up#↑ +0.16 Shot Speed up#Heals 1 Red Heart"}, -- Stem Cells [178] = {"178", "Holy Water", "{{Throwable}} {{ColorOrange}}Throwable{{CR}}#Launches itself in the direction Isaac shoots#Breaks and deals 7 damage when touching an enemy#Leaves a pool of damaging creep that petrifies enemies"}, -- Holy Water [182] = {"182", "Sacred Heart", "↑ +1 Health up#↑ 230% + 1 Damage up#↓ -0.4 Tears down#↓ -0.25 Shot Speed down#Homing tears#Full Health"}, -- Sacred Heart - [184] = {"184", "Holy Grail", "Grants flight#↑ +1 Health up#Heals 1 red heart"}, -- Holy Grail + [184] = {"184", "Holy Grail", "Grants flight#↑ +1 Health up#Heals 1 Red Heart"}, -- Holy Grail [188] = {"188", "Abel", "Mirrors your movement#Shoots towards the player#Deals 3.5 damage per shot#7.5 damage as Cain"}, -- Abel [192] = {"192", "Telepathy for Dummies", "Homing tears for current room#↑ +3 Range up"}, -- Telepathy for Dummies - [193] = {"193", "MEAT!", "↑ +1 Health up#↑ +0.3 Damage up#Heals 1 red heart"}, -- MEAT! + [193] = {"193", "MEAT!", "↑ +1 Health up#↑ +0.3 Damage up#Heals 1 Red Heart"}, -- MEAT! [194] = {"194", "Magic 8 Ball", "↑ +0.16 Shot Speed up#+1 card#+15% {{Planetarium}}Planetarium chance"}, -- Magic 8 Ball [197] = {"197", "Jesus Juice", "↑ +0.5 Damage up#↑ +0.38 Range up.#↑ +0.5 Tear Height"}, -- Jesus Juice [203] = {"203", "Humbling Bundle", "Chance to spawn the double version of pickups"}, -- Humbling Bundle @@ -82,7 +82,7 @@ local repCollectibles={ [206] = {"206", "Guillotine", "↑ +1 Damage up#↑ +0.5 Fire Rate up#Your head is now an orbital which doesn't take damage and deals 105 contact damage#You will still shoot from the head"}, -- Guillotine [211] = {"211", "Spiderbaby", "Spawn 3-5 Blue Spiders upon taking damage"}, -- Spiderbaby [214] = {"214", "Anemic", "↑ +1.5 Range up#Leave a trail of damaging creep upon taking damage"}, -- Anemic - [218] = {"218", "Placenta", "↑ +1 Health up#Heals 1 red heart#Regenerate health slowly"}, -- Placenta + [218] = {"218", "Placenta", "↑ +1 Health up#Heals 1 Red Heart#Chance to heal half a heart every minute"}, -- Placenta [222] = {"222", "Anti-Gravity", "Holding the fire buttons causes tears to hover in midair#When released, they will all shoot in the direction they were fired#↑ +2 Fire Rate up"}, -- Anti-Gravity [224] = {"224", "Cricket's Body", "Tears split in 4 on hit#Split tears deal half your damage#↑ +0.5 Fire Rate up#↓ -20% Range down"}, -- Cricket's Body [228] = {"228", "Mom's Perfume", "Chance to shoot fearing tears#↑ +0.5 Fire Rate up"}, -- Mom's Perfume @@ -91,7 +91,7 @@ local repCollectibles={ [240] = {"240", "Experimental Treatment", "↑ Randomly increases 4 stats#↓ Randomly decreases 2 stats"}, -- Experimental Treatment [245] = {"245", "20/20", "Doubles all your shots#↓ -25% Damage"}, -- 20/20 [248] = {"248", "Hive Mind", "Blue Spiders/flies deal double damage#Spider/fly based familiars become stronger"}, -- Hive Mind - [253] = {"253", "Magic Scab", "↑ +1 Health up#↑ +1 Luck up#Heals 1 red heart"}, -- Magic Scab + [253] = {"253", "Magic Scab", "↑ +1 Health up#↑ +1 Luck up#Heals 1 Red Heart"}, -- Magic Scab [254] = {"254", "Blood Clot", "!!! Applies only for the left eye#↑ +1 Damage up#↑ +1.5 Range up"}, -- Blood Clot [256] = {"256", "Hot Bombs", "Burning bombs#+5 Bombs#You can no longer take fire damage#Bombs deal contact damage"}, -- Hot Bombs [261] = {"261", "Proptosis", "↑ +0.5 Damage up#↓ Dealt damage decreases the longer the tear stays airborne#300% Damage at point blank range"}, -- Proptosis @@ -120,7 +120,7 @@ local repCollectibles={ [308] = {"308", "Aquarius", "Leave a trail of creep#Creep deals 66% your damage per second#Creep synergizes with tear effects"}, -- Aquarius [309] = {"309", "Pisces", "↑ +0.5 Fire Rate up#Increases tear knockback"}, [310] = {"310", "Eve's Mascara", "↑ 200% Damage up#↓ -33% Tears down#↓ -0.5 Shot Speed down"}, - [314] = {"314", "Thunder Thighs", "↑ +1 Health up#↓ -0.4 Speed down#Heals 1 red heart#Destroy rocks when walking over them"}, -- Thunder Thighs + [314] = {"314", "Thunder Thighs", "↑ +1 Health up#↓ -0.4 Speed down#Heals 1 Red Heart#Destroy rocks when walking over them"}, -- Thunder Thighs [315] = {"315", "Strange Attractor", "Magnetic tears#Affects enemies, pickups and trinkets#Items will be attracted to where the tear lands"}, -- Strange Attractor [320] = {"320", "???'s Only Friend", "Controllable Fly#Deals 3.5 contact damage per tick"}, -- ???'s Only Friend [326] = {"326", "Breath of Life", "Hold down space till chargebar is empty for invincibility#Beams of light will strike enemies that touch you when invincible#!!! Don't hold it for too long!"}, -- Breath of Life @@ -129,13 +129,13 @@ local repCollectibles={ [331] = {"331", "Godhead", "↑ +0.5 Damage up#↓ -0.3 Tears down#↓ -0.3 Shot Speed down#↑ +0.8 Tear Height#Tears gain a damaging aura which deals 2 damage per tick#Homing tears"}, -- Godhead [336] = {"336", "Dead Onion", "Piercing and spectral tears#↓ -1.5 Range down#↓ -0.4 Shot Speed down#↓ -0.5 Tear Height down#↑ +50% Tear size"}, -- Dead Onion [339] = {"339", "Safety Pin", "↑ +1.5 Range up#↑ +0.16 Shot Speed up#+1 Black Heart#↑ +0.5 Tear Height"}, -- Safety Pin - [342] = {"342", "Blue Cap", "↑ +1 Health up#↑ +0.7 Tears up#↓ -16% Shot Speed down#Heals 1 red heart"}, -- Blue Cap + [342] = {"342", "Blue Cap", "↑ +1 Health up#↑ +0.7 Tears up#↓ -16% Shot Speed down#Heals 1 Red Heart"}, -- Blue Cap [344] = {"344", "Match Book", "+1 Black Heart#Spawns 2-3 Bomb pickups and the {{Trinket41}}Match Stick"}, -- Match Book [345] = {"345", "Synthoil", "↑ +1 Damage up#↑ +1.5 Range up#↑ +0.5 Tear Height"}, -- Synthoil - [346] = {"346", "A Snack", "↑ +1 Health up#Heals 1 red heart"}, -- A Snack + [346] = {"346", "A Snack", "↑ +1 Health up#Heals 1 Red Heart"}, -- A Snack [350] = {"350", "Toxic Shock", "At the start of every room every enemy gets a poison effect#Killed enemies leave puddle of creep#Grants immunity for toxic clouds"}, -- Toxic Shock [352] = {"352", "Glass Cannon", "Fires one large piercing spectral tear ((DMG x 10) + 10)#!!! When you take damage:#↓ You will lose an extra 2 hearts of health#↑ + 1.5 Range up#Self-damage does not count"}, -- Glass Cannon - [354] = {"354", "Crack Jacks", "↑ +1 Health up#Spawns random trinket on the floor#Heals one Red Heart"}, -- Crack Jacks + [354] = {"354", "Crack Jacks", "↑ +1 Health up#Spawns random trinket on the floor#Heals 1 Red Heart"}, -- Crack Jacks [355] = {"355", "Mom's Pearl", "↑ +0.38 Range up#↑ +1 Luck up#+1 Soul Heart#↑ +0.5 Tear Height"}, -- Mom's Pearl [360] = {"360", "Incubus", "Gain a demonic familiar that shoots the same tears as Isaac#Deals 75% of your damage unless playing as Lilith"}, -- Incubus [366] = {"366", "Scatter Bombs", "+5 bombs#Causes your bombs to explode into 4-5 tiny bombs"}, -- Scatter Bombs @@ -173,7 +173,7 @@ local repCollectibles={ [451] = {"451", "Tarot Cloth", "Drops a random card or rune on pickup#Some cards gain an extra or doubled effect"}, -- Tarot Cloth [453] = {"453", "Compound Fracture", "Bone tears#Tears shatter into 1-3 smaller bone shards upon hitting anything#↑ +0.38 Range up#↑ +1 Tear Height"}, -- Compound Fracture [455] = {"455", "Dad's Lost Coin", "↑ +0.38 Range up#Spawns a lucky penny"}, -- Dad's Lost Coin - [456] = {"456", "Midnight Snack", "↑ +1 Health up#Heals 1 red heart"}, -- Midnight Snack + [456] = {"456", "Midnight Snack", "↑ +1 Health up#Heals 1 Red Heart"}, -- Midnight Snack [464] = {"464", "Glyph of Balance", "+2 Soul Hearts#Champion enemies and room drops appear more frequently#Priority of spawned pickups depends on what the player is missing most of"}, -- Glyph of Balance [472] = {"472", "King Baby", "Other familiars follow it and shoot automatically at enemies#Stops moving when you are shooting#Will teleport back to you when you stop shooting"}, -- King Baby [474] = {"474", "Broken Glass Cannon", "Turns into Glass Cannon when used"}, -- Broken Glass Cannon @@ -228,7 +228,7 @@ local repCollectibles={ [588] = {"588", "Sol", "Reveals the location of the {{BossRoom}}Boss Room#Upon defeating a boss, activates XIX - The Sun {{Card20}}#Also fully recharges active item, and +3 damage and +1 luck for the rest of the floor"}, -- Sol [589] = {"589", "Luna", "Adds an extra {{SecretRoom}}Secret Room and {{SuperSecretRoom}}Super Secret Room to each floor#Secret Rooms contain a beam of light that give tears up for the current floor and give half a Soul Heart"}, -- Luna [590] = {"590", "Mercurius", "↑ +0.4 Speed up#Doors stay open after entering a room"}, -- Mercurius - [591] = {"591", "Venus", "+1 Health up#Heals one Red Heart#Close enemies become charmed"}, -- Venus + [591] = {"591", "Venus", "+1 Health up#Heals 1 Red Heart#Close enemies become charmed"}, -- Venus [592] = {"592", "Terra", "↑ +1 Damage up#Replaces tears with rocks#They deal variable damage#Can destroy obstacles#Increased knockback"}, -- Terra [593] = {"593", "Mars", "Dash by double-tapping a movement key, becoming invincible and dealing 4x your damage#3 seconds cooldown"}, -- Mars [594] = {"594", "Jupiter", "+2 Health up#Heals half a red heart#↓ -0.3 Speed down#Build up Speed while standing still for up to +0.5 Speed#Release a poison gas cloud when moving again"}, -- Jupiter @@ -344,7 +344,7 @@ local repCollectibles={ [704] = {"704", "Berserk!", "Berserk mode for 5 seconds:#↑ +0.4 Speed up#↑ Tears up#↑ +3 Damage up#Restricts attacks to a melee weapon"}, -- Berserk! [705] = {"705", "Dark Arts", "When used, gain ↑ +1 Speed and ability to walk through enemies/bullets for 1 second#Shortly increases damage by 1 for each enemy touched#Damages touched enemies with 3x your damage"}, -- Dark Arts [706] = {"706", "Abyss", "Destroys all items in the room and spawns an attack fly familiar for each#Effects of fly depends on the items"}, -- Abyss - [707] = {"707", "Supper", "↑ +1 Health up#Heals one Red Heart"}, -- Supper + [707] = {"707", "Supper", "↑ +1 Health up#Heals 1 Red Heart"}, -- Supper [708] = {"708", "Stapler", "↑ +1 Damage up#Prevents Isaac from firing tears from one eye"}, -- Stapler [709] = {"709", "Suplex!", "Allows you to dash into and pick up enemies or bosses, then slam them into the ground#Slam can be controlled#Slam deals 50 damage and spawns rock waves#Scales in damage and area of effect with the player's size"}, -- Suplex! [710] = {"710", "Bag of Crafting", "Collects and holds up to 8 pickups which cannot be dropped#Once 8 pickups are in the bag, using it will craft an item#Quality of the item is dependent on the quality of the pickups"}, -- Bag of Crafting From 66e63ac5c569b8c8c8660558b9e3ef05c2cd18df Mon Sep 17 00:00:00 2001 From: Buurazu Date: Sun, 21 Nov 2021 12:04:43 -0500 Subject: [PATCH 41/41] Normalize Heals 1 Red Heart --- descriptions/ab+/en_us.lua | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/descriptions/ab+/en_us.lua b/descriptions/ab+/en_us.lua index 8c0cd041..ffd81570 100644 --- a/descriptions/ab+/en_us.lua +++ b/descriptions/ab+/en_us.lua @@ -87,7 +87,7 @@ EID.descriptions["en_us"].collectibles={ {"72", "Rosary", "+3 Soul Hearts#{{Collectible33}} The Bible is added to all item pools"}, {"73", "Cube of Meat", "LVL1: Orbital#LVL2: Shooting orbital#LVL3: Meat Boy LVL1#LVL4: Meat Boy LVL2"}, {"74", "A Quarter", "+25 coins"}, - {"75", "PHD", "Better pills# +1 pill#Heals 2 hearts#More money from Blood Donation Machines"}, + {"75", "PHD", "Better pills#Spawns 1 pill on pickup#Heals 2 Red Hearts#More money from Blood Donation Machines"}, {"76", "X-Ray Vision", "Reveals secret rooms entrances"}, {"77", "My Little Unicorn", "Invincibility#40 contact damage"}, {"78", "Book of Revelations", "+1 Soul Heart#Higher horsemen chance if used#↑ +17.5% Devil/Angel Room chance"}, @@ -104,7 +104,7 @@ EID.descriptions["en_us"].collectibles={ {"89", "Spider Bite", "Chance to shoot slowing tears"}, {"90", "The Small Rock", "↑ +1 Damage up#↑ +0.2 Tears up#↓ -0.2 Speed down"}, {"91", "Spelunker Hat", "Reveals the room type of adjacent rooms#Can also reveal Secret Rooms, Super Secret Rooms, and Mini-Boss Rooms"}, - {"92", "Super Bandage", "↑ +1 Health up#+2 Soul Hearts#Heals one Red Heart"}, + {"92", "Super Bandage", "↑ +1 Health up#+2 Soul Hearts#Heals 1 Red Heart"}, {"93", "The Gamekid", "Short invincibility#Fears all enemies#Deal 40 contact damage#Two eaten enemies replenish half a heart"}, {"94", "Sack of Pennies", "Drops a random coin every 2 rooms"}, {"95", "Robo-Baby", "Laser tears#Deals 3.5 damage per shot"}, @@ -229,8 +229,8 @@ EID.descriptions["en_us"].collectibles={ {"214", "Anemic", "↑ +5 Range up#Leave creep on floor when getting hit"}, {"215", "Goat Head", "↑ 100% chance for {{DevilRoom}}Devil/{{AngelRoom}}Angel Rooms"}, {"216", "Ceremonial Robes", "↑ +1 Damage up#+3 Black Hearts"}, - {"217", "Mom's Wig", "Random chance to spawn blue spider when shooting tears#Heals one Red Heart"}, - {"218", "Placenta", "↑ +1 Health up#Regenerate health slowly"}, + {"217", "Mom's Wig", "Random chance to spawn blue spider when shooting tears#Heals 1 Red Heart"}, + {"218", "Placenta", "↑ +1 Health up#Chance to heal half a heart every minute"}, {"219", "Old Bandage", "↑ +1 Empty heart container#Random chance to drop Red Hearts when getting hit"}, {"220", "Sad Bombs", "Tear explosion!#+5 Bombs"}, {"221", "Rubber Cement", "Bouncing tears"}, @@ -263,8 +263,8 @@ EID.descriptions["en_us"].collectibles={ {"248", "Hive Mind", "Blue Spiders/flies deal double damage"}, {"249", "There's Options", "2 Boss items spawn instead of 1#!!! Only one can be taken"}, {"250", "Bogo Bombs", "All bomb drops become double bombs"}, - {"251", "Starter Deck", "You can carry 2 Cards#Turns all Pills into Cards#Spawns 1 random card on pickup"}, - {"252", "Little Baggy", "You can carry 2 Pills#Turns all Cards into Pills#Spawns 1 random pill on pickup"}, + {"251", "Starter Deck", "You can carry 2 Cards#Turns all Pills into Cards#Spawns 1 card on pickup"}, + {"252", "Little Baggy", "You can carry 2 Pills#Turns all Cards into Pills#Spawns 1 pill on pickup"}, {"253", "Magic Scab", "↑ +1 Luck up#↑ +1 Health up"}, {"254", "Blood Clot", "↑ +1 Damage up#↑ +5 Range up#!!! Applies only for the left eye"}, {"255", "Screw", "↑ +0.5 Tears up#↑ +0.2 Shot Speed up"}, @@ -324,7 +324,7 @@ EID.descriptions["en_us"].collectibles={ {"309", "Pisces", "↑ -1 Tear Delay#Increases tear knockback"}, {"310", "Eve's Mascara", "↑ +100% Damage up#↓ -50% Tears down#↓ -0.5 Shot speed down"}, {"311", "Judas' Shadow", "When dead, respawn as Black Judas#↑ (Damage x 2)"}, - {"312", "Maggy's Bow", "↑ +1 Health up#Heals one Red Heart#All Red Hearts now heal double their value"}, + {"312", "Maggy's Bow", "↑ +1 Health up#Heals 1 Red Heart#All Red Hearts now heal double their value"}, {"313", "Holy Mantle", "Ignore the first hit in every room"}, {"314", "Thunder Thighs", "↑ +1 Health up#↓ -0.4 Speed down#Destroy rocks when walking over them"}, {"315", "Strange Attractor", "Magnetic tears#Affects enemies, pickups and trinkets"}, @@ -466,7 +466,7 @@ EID.descriptions["en_us"].collectibles={ {"451", "Tarot Cloth", "Drops a random card or rune on pickup#Doubles the effect of any card used"}, {"452", "Varicose Veins", "When taking damage, fire 10 tears in a circle around you#The tears deal 125% your damage"}, {"453", "Compound Fracture", "Bone tears#Tears shatter into 1-3 smaller bone shards upon hitting anything#↑ +1.5 Range up#↑ +1 Tear Height"}, - {"454", "Polydactyly", "You can carry two cards, runes or pills#Spawns a random card, pill or rune on pickup"}, + {"454", "Polydactyly", "You can carry two cards, runes or pills#Spawns a card, pill or rune on pickup"}, {"455", "Dad's Lost Coin", "↑ +1.5 Range up#Spawns a lucky penny"}, {"456", "Moldy Bread", "↑ +1 Health up"}, {"457", "Cone Head", "+1 Soul Heart#20% Chance to ignore damage"}, @@ -483,7 +483,7 @@ EID.descriptions["en_us"].collectibles={ {"468", "Shade", "Follows your movement delayed by 1 seconds#Deals 30 contact damage per second"}, {"469", "Depression", "Leaves trail of creep#Creep deals 6 damage per second#Enemies touching the cloud can spawn a holy light beam"}, {"470", "Hushy", "Bounces around the room#Deals contact damage#Will stop moving when you are shooting#When stopped, it can block projectiles"}, - {"471", "Lil Monstro", "Chargable shotgun attack similar to {{Collectible229}}Monstro's Lung#Each tear deals 3.5 damage"}, + {"471", "Lil Monstro", "Chargable shotgun attack similar to {{Collectible229}}Monstro's Lung#Each tear deals 3.5 damage"}, {"472", "King Baby", "Other familiars follow it#Stops moving when you are shooting#Will teleport back to you when you stop shooting"}, {"473", "Big Chubby", "Charges forwards very slow#Deals 40.5 contact damage per second"}, {"474", "Tonsil", "Blocks enemy projectiles"}, @@ -621,7 +621,7 @@ EID.descriptions["en_us"].trinkets={ {"50", "Burnt Penny", "50% chance to drop a bomb when picking up coins"}, {"51", "Flat Penny", "50% chance to drop a key when picking up coins"}, {"52", "Counterfeit Penny", "50% chance to get +1 coin when picking up coins"}, - {"53", "Tick", "-15% boss health#Heals 1 red heart when entering a {{BossRoom}}Boss Room#!!! Once picked up, it can't be removed#Only removeable with {{Trinket41}}Match Stick or gulping"}, + {"53", "Tick", "-15% boss health#Heals 1 Red Heart when entering a {{BossRoom}}Boss Room#!!! Once picked up, it can't be removed#Only removeable with {{Trinket41}}Match Stick or gulping"}, {"54", "Isaac's Head", "Familiar with piercing tears#Deals 3.5 damage per tear"}, {"55", "Maggy's Faith", "Get one Eternal Heart at the start of every floor"}, {"56", "Judas' Tongue", "Reduces Devil deal prices from 2 heart containers to 1"},