diff --git a/descriptions/rep/en_us.lua b/descriptions/rep/en_us.lua index 11be80f8..4874c5e5 100644 --- a/descriptions/rep/en_us.lua +++ b/descriptions/rep/en_us.lua @@ -1196,3 +1196,8 @@ if EID.enableDebug then EID.descriptions[languageCode].repCards = repCards EID.descriptions[languageCode].repPills = repPills end + +if REPENTOGON then + EID.descriptions[languageCode].custom["6.8.0"] = {"0", "Donation Machine", "{1} of {2} coins remaining until next achievement#{{Luck}} 2% chance for +1 Luck when donating#{{AngelRoom}} Donating 10 coins increases Angel Room chance"} + EID.descriptions[languageCode].custom["6.11.0"] = {"0", "Greed Donation Machine", "{{ColorGold}}{1} of {2}{{CR}} coins remaining until next achievement"} +end \ No newline at end of file diff --git a/eid_config.lua b/eid_config.lua index 12d912c8..0ebf3cd3 100644 --- a/eid_config.lua +++ b/eid_config.lua @@ -433,7 +433,7 @@ EID.UserConfig = { -- Default = false ["ShowCursor"] = false, - + ---------- Repentogon ---------- -- The following options only affect features that require the API extention "Repentogon" to be installed. -- Website: https://repentogon.com/index.html @@ -442,6 +442,9 @@ EID.UserConfig = { -- Default = true ["RGON_ShowOnCollectionPage"] = true, + -- Toggles achievement progress descriptions for donation machines + -- Default = true + ["RGON_DonationMachineDescriptions"] = true, ---------- Misc ---------- @@ -602,6 +605,7 @@ EID.DefaultConfig = { ["ShowCursor"] = false, ["RGON_ShowOnCollectionPage"] = true, + ["RGON_DonationMachineDescriptions"] = true, ["ErrorMessage"] = "[Effect not defined]", ["TextColor"] = "ColorEIDText", diff --git a/eid_mcm.lua b/eid_mcm.lua index 92dab73b..f66916ea 100644 --- a/eid_mcm.lua +++ b/eid_mcm.lua @@ -728,7 +728,12 @@ if MCMLoaded then Info = {"Color in which item names are colored to highlight that this item needs to be collected for the collection page"} } ) - EID:AddBooleanSetting("Repentogon", "RGON_ShowOnCollectionPage", "Show descriptions on collection page", { infoText = "Displays item effects when navigating the collection page in the main menu."}) + EID:AddBooleanSetting("Repentogon", "RGON_ShowOnCollectionPage", "Show descriptions on collection page", { infoText = "Displays item effects when navigating the collection page in the main menu."}) + + -- Achievement tracking section + MCM.AddSpace("EID", "Repentogon") + MCM.AddText("EID", "Repentogon", "Achievement tracking") + EID:AddBooleanSetting("Repentogon", "RGON_DonationMachineDescriptions", "Donation machine progress", { infoText = "Displays the number of coins required to gain the next achievement from donation machines"}) end --------------------------------------------------------------------------- ----------------------------Savegame Config-------------------------------- diff --git a/eid_repentogon.lua b/eid_repentogon.lua index e1edc420..ca8c683f 100644 --- a/eid_repentogon.lua +++ b/eid_repentogon.lua @@ -98,3 +98,53 @@ function EID:BoCTrackBagHolding() end function EID:BoCDetectBagContentShift() end +-----------------------Descriptions & Modifiers -------------------------- +local oldHasDescription = EID.hasDescription +function EID:hasDescription(entity) + local oldReturnVal = oldHasDescription(_,entity) + -- repentogon related checks + + -- check if donation machines should have a description + if entity.Type == 6 and (entity.Variant == 8 or entity.Variant == 11) and entity.SubType == 0 then + local isGreed = entity.Variant == 11 + local eventCounter = isGreed and EventCounter.GREED_DONATION_MACHINE_COUNTER or + EventCounter.DONATION_MACHINE_COUNTER + local totalDonations = Isaac.GetPersistentGameData():GetEventCounter(eventCounter) + + return EID.Config["RGON_DonationMachineDescriptions"] and totalDonations < 1000 + end + return oldReturnVal +end + + +local requirementsDonationMachine = { 10, 20, 50, 100, 150, 200, 400, 600, 900, 999 } +local requirementsGreedDonationMachine = { 2, 14, 33, 68, 111, 234, 439, 500, 666, 879, 999, 1000 } +local function DonationMachineCallback(descObj) + local isGreed = descObj.ObjVariant == 11 + local eventCounter = isGreed and EventCounter.GREED_DONATION_MACHINE_COUNTER or + EventCounter.DONATION_MACHINE_COUNTER + local rewardsTable = isGreed and requirementsGreedDonationMachine or requirementsDonationMachine + local totalDonations = Isaac.GetPersistentGameData():GetEventCounter(eventCounter) + + local coinsNeeded = 0 + for _, value in ipairs(rewardsTable) do + if totalDonations < value then + coinsNeeded = value + break + end + end + descObj.Description = string.gsub(descObj.Description, "{1}", coinsNeeded - totalDonations) + descObj.Description = string.gsub(descObj.Description, "{2}", coinsNeeded) + descObj.Icon = EID.InlineIcons["DonationMachine"] + return descObj +end + +local function RepentogonModifierConditions(descObj) + -- Donation machine and Greed donation machine description + if descObj.ObjType == 6 and (descObj.ObjVariant == 8 or descObj.ObjVariant == 11) then + return { DonationMachineCallback } + end + + return false +end +EID:addDescriptionModifier("EID Repentogon", RepentogonModifierConditions, nil)