From 82d5f4ec3e2352e117aa5ddbdd75205057886b35 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Sun, 23 Jan 2022 21:31:20 -0500 Subject: [PATCH 01/19] Update main.lua --- main.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/main.lua b/main.lua index ad75fd8e..59e5de4c 100644 --- a/main.lua +++ b/main.lua @@ -862,7 +862,8 @@ local function attemptPathfind(entity) pathsChecked[entity.InitSeed] = true return true end - if EID.GameUpdateCount - lastPathfindFrame < 10 then return false end + -- Don't reattempt pathfinding more than 3 times a second, unless this is a new entity + if pathsChecked[entity.InitSeed] == false and EID.GameUpdateCount - lastPathfindFrame < 10 then return false end -- Spawn a custom NPC entity to attempt a pathfind to the target pickup, then remove it afterwards pathCheckerEntity = game:Spawn(17, 3169, EID.player.Position, nullVector, EID.player, 0, 4354) From 7b075eb1d8400453f4f1788659d3cabbe57dcb21 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Mon, 24 Jan 2022 13:34:37 -0500 Subject: [PATCH 02/19] fix the glowing hour glass check --- eid_tmtrainer.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eid_tmtrainer.lua b/eid_tmtrainer.lua index 7ff5ee72..54155d65 100644 --- a/eid_tmtrainer.lua +++ b/eid_tmtrainer.lua @@ -127,10 +127,10 @@ local function CheckLogForItems(_) numEffects = numEffects - 1 eidDesc = eidDesc .. parseEffectLine(line) if numEffects == 0 then - -- Glowing Hour Glass type effects seem to cause the game to reload all items, check if our desc is equal to the first one + eidDesc = EID:CheckGlitchedItemConfig(maxNumber - spawnedItems) .. eidDesc + -- Glowing Hour Glass type effects cause the game to reload all items, check if our desc is equal to the first one if (descOne == eidDesc) then spawnedItems = 1 end - eidDesc = EID:CheckGlitchedItemConfig(maxNumber - spawnedItems) .. eidDesc EID:addCollectible(maxNumber - spawnedItems, eidDesc) if spawnedItems == 1 then descOne = eidDesc end end From fe3eaa13f014a94fd4a32e9e208f4b37fd998a79 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Mon, 24 Jan 2022 13:36:10 -0500 Subject: [PATCH 03/19] Void WIP --- main.lua | 46 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/main.lua b/main.lua index 59e5de4c..8d8d6108 100644 --- a/main.lua +++ b/main.lua @@ -815,14 +815,32 @@ end -- Runs 30 times a second; doesn't update while paused local collSpawned = false +local function VoidRNGNext(num) + num = num ~ ((num >> 5) & 4294967295) + num = num ~ ((num << 9) & 4294967295) + num = num ~ ((num >> 7) & 4294967295) + return num >> 0; +end +-- Speed, Fire Rate, Damage, Range, Shot Speed, Luck +-- (Same order as it is on the Extra Hud) +local voidStatUps = { 0.2, 0.5, 1, 1.5, 0.2, 1 } function EID:onGameUpdate() EID.GameUpdateCount = EID.GameUpdateCount + 1 - -- Fix Overlapping Pedestals if a collectible spawned this frame (needed for Mega Chest) + if collSpawned then collSpawned = false + local numVoidable = 0 + local numBlackRunable = 0 + -- THIS INCLUDES UNPURCHASED SHOP ITEMS??? and both choice items also, which is OK for AB+ but not for Rep! local curPositions = {} for _, entity in ipairs(Isaac.FindByType(5, 100, -1, true, false)) do + if entity.SubType > 0 then + numBlackRunable = numBlackRunable + 1 + if EID.itemConfig:GetCollectible(entity.SubType).Type ~= 3 then numVoidable = numVoidable + 1 end + end + + -- Fix Overlapping Pedestals if a collectible spawned this frame (needed for Mega Chest) local pos = entity.Position for _, otherPos in ipairs(curPositions) do if pos:Distance(otherPos[2]) == 0 then @@ -832,6 +850,32 @@ function EID:onGameUpdate() end table.insert(curPositions, {entity, entity.Position}) end + + -- Recalculate our total Void stat-ups if a collectible spawned this frame + -- NOTE: NEED AB+ NUMBERS STILL + -- THIS COULD APPLY TO BLACK RUNE AS WELL, WHATS ITS RNG??? getplayer:getcardrng? + if EID:PlayersHaveCollectible(CollectibleType.COLLECTIBLE_VOID) then + local curRoomIndex = game:GetLevel():GetCurrentRoomIndex() + local increases = {0, 0, 0, 0, 0, 0} + --CHANGE THIS TO THE PLAYER THAT HAS VOID + local startRNG = Isaac.GetPlayer(0):GetCollectibleRNG(CollectibleType.COLLECTIBLE_VOID):GetSeed() + startRNG = VoidRNGNext(startRNG) + for pedestals = 1, numVoidable do + local statTable = {1,2,3,4,5,6} + -- perform 5 random swaps of our stat table + for i = 6, 2, -1 do + startRNG = VoidRNGNext(startRNG) + local result = (startRNG % i) + 1 + local temp = statTable[i] + statTable[i] = statTable[result] + statTable[result] = temp + end + -- the first two entries in the stat table get increased + increases[statTable[1]] = increases[statTable[1]] + voidStatUps[statTable[1]] + increases[statTable[2]] = increases[statTable[2]] + voidStatUps[statTable[2]] + end + for i,v in ipairs(increases) do print(v) end + end end -- Remove Crane Game item data if it's giving the prize out From 5c63608db50f435e9f2333a2c8496ac541f30d49 Mon Sep 17 00:00:00 2001 From: Xheepey87 <40490528+Xheepey87@users.noreply.github.com> Date: Wed, 26 Jan 2022 09:19:51 +0800 Subject: [PATCH 04/19] zh_cn : corrected Teleport 2.0 levels' order, updated some Devil Room descriptions --- descriptions/rep/zh_cn.lua | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/descriptions/rep/zh_cn.lua b/descriptions/rep/zh_cn.lua index d77edeaa..74211a76 100644 --- a/descriptions/rep/zh_cn.lua +++ b/descriptions/rep/zh_cn.lua @@ -2,7 +2,7 @@ ----- Basic Chinese descriptions --- -------------------------------------- --- Last Sync Revise: 2022.01.22 +-- Last Update: 2022.01.26 -- Last Full Check: N/A -- I will have a full check someday else. -- FORMAT: Item ID | Name | Description @@ -46,7 +46,7 @@ local repCollectibles={ [71] = {"71", "小蘑菇", "↑ +0.3移速#↑ +1.5射程#↑ 体型缩小"}, -- Mini Mush [72] = {"72", "念珠", "+3魂心#↑ +0.5射速#{{Collectible33}}圣经添加至所有道具池"}, -- Rosary [77] = {"77", "彩虹独角兽", "无敌#每秒造成20接触伤害"}, -- My Little Unicorn - [78] = {"78", "启示录", "+1魂心#使用后天启骑士会替代本层Boss#↑ +17.5% {{DevilRoom}}恶魔房或{{AngelRoom}}天使房几率"}, -- Book of Revelations + [78] = {"78", "启示录", "+1魂心#使用后天启骑士会替代本层Boss#↑ +17.5% {{DevilRoom}}恶魔房/{{AngelRoom}}天使房几率"}, -- Book of Revelations [79] = {"79", "咒印", "↑ +1.0伤害#↑ +0.2移速#+1黑心"}, -- The Mark [80] = {"80", "契约", "↑ +0.5伤害#↑ +0.7射速#+2黑心"}, -- The Pact [83] = {"83", "钉子", "+半黑心#↑ +2.0伤害#↓ -0.18移速#造成接触伤害#粉碎经过的岩石"}, -- The Nail @@ -168,7 +168,7 @@ local repCollectibles={ [415] = {"415", "光明之冠", "+2魂心#如果没有不满的心之容器:#↑ +100%伤害#↑ +1.5射程#↓ -0.3弹速#受伤后,当前房间无论心之容器是否是满的,效果消失"}, -- Crown Of Light [416] = {"416", "深口袋", "如果房间没有奖励,生成1-3硬币#提高硬币上限为999"}, -- Deep Pockets [417] = {"417", "魅魔", "在房间内漂浮的跟班,产生伤害光环,每秒造成7-10的伤害#↑ 站在光环中+50%伤害"}, -- Succubus - [419] = {"419", "传送2.0", "传送至另1个未探索的随机房间#等级:{{Room}}>{{BossRoom}}>{{SuperSecretRoom}}>{{Shop}}>{{TreasureRoom}}>{{SacrificeRoom}}>{{DiceRoom}}> {{Library}}>{{CursedRoom}}>{{MiniBoss}}>{{ChallengeRoom}}>{{IsaacsRoom}}>{{ArcadeRoom}}>{{ChestRoom}}>{{Planetarium}}>{{SecretRoom}}>{{DevilRoom}}/{{AngelRoom}}>错误房"}, + [419] = {"419", "传送2.0", "传送至另1个未探索的随机房间#等级:{{Room}}>{{BossRoom}}>{{SuperSecretRoom}}>{{Shop}}>{{TreasureRoom}}>{{Planetarium}}>{{SacrificeRoom}}>{{DiceRoom}}> {{Library}}>{{CursedRoom}}>{{MiniBoss}}>{{ChallengeRoom}}>{{IsaacsRoom}}>{{ArcadeRoom}}>{{ChestRoom}}>{{SecretRoom}}>{{DevilRoom}}/{{AngelRoom}}>错误房"}, [421] = {"421", "腰豆", "使用时将任何范围内的敌人魅惑"}, -- Kidney Bean [426] = {"426", "狂热粉丝", "跟随角色移动的跟班,有0.66秒延迟#每秒造成30接触伤害"}, -- Obsessed Fan [430] = {"430", "狙击蝇老爹", "跟随角色移动的跟班,有0.66秒延迟#向附近敌人发射眼泪,造成与角色伤害相等的伤害"}, -- Papa Fly @@ -235,7 +235,7 @@ local repCollectibles={ [581] = {"581", "灵能苍蝇", "环绕苍蝇跟班#自动反弹附近的弹幕#造成接触伤害"}, -- Psy Fly [582] = {"582", "迷幻蘑菇", "↑ +0.75发射速度#↓ -0.03移速#扭曲画面#效果可叠加"}, -- Wavy Cap [583] = {"583", "罐中火箭", "+5炸弹#若发射时放置炸弹,改为向发射的方向发射火箭"}, -- Rocket in a Jar - [584] = {"584", "美德之书", "使用时生成1个魂火环绕跟班,发射幽灵眼泪,但可被摧毁#与其它主动道具结合时可产生特殊魂火#将第一个{{DevilRoom}}恶魔房变成{{AngelRoom}}天使房,并提升{{AngelRoom}}天使房几率#恶魔交易后仍会出现天使房"}, -- Book of Virtues + [584] = {"584", "美德之书", "使用时生成1个魂火环绕跟班,发射幽灵眼泪,但可被摧毁#与其它主动道具结合时可产生特殊魂火#将第一个{{DevilRoom}}恶魔房变成{{AngelRoom}}天使房,并提升{{AngelRoom}}天使房几率25%#恶魔交易后仍会出现天使房"}, -- Book of Virtues [585] = {"585", "白玉香膏盒", "使用时生成3魂心和2个天使房道具#只能通过捡起魂心充能#若已进行过恶魔交易,则生成2魂心和1个天使房道具"}, -- Alabaster Box [586] = {"586", "天堂阶梯", "在每一层的初始房间生成梯子,通向1个特殊的天使房道具商店"}, -- The Stairway [587] = {"587", "", "<道具不存在>"}, -- Menorah (Unused but skripted) @@ -252,7 +252,7 @@ local repCollectibles={ [598] = {"598", "冥王星", "↑ +0.7射速#体积缩小,可以挤进障碍物间隙#弹幕会从头顶飞过"}, -- Pluto [599] = {"599", "巫毒娃娃头", "每层额外生成1个{{CursedRoom}}诅咒房"}, -- Voodoo Head [600] = {"600", "眼药水", "!!! 只对左眼有效:#↑ +28%发射速度#一段时间内第一次发射总是双发"}, -- Eye Drops - [601] = {"601", "痛悔短祷", "↑ +0.7射速#+1永恒之心#进行过恶魔交易后天使房仍然会出现#减缓受红心伤害减少恶魔房和天使房的几率"}, -- Act of Contrition + [601] = {"601", "痛悔短祷", "↑ +0.7射速#+1永恒之心#进行过恶魔交易后天使房仍然会出现#减缓受红心伤害减少{{DevilRoom}}恶魔房/{{AngelRoom}}天使房的几率"}, -- Act of Contrition [602] = {"602", "会员卡", "在商店内生成1个暗门,通向高级商店"}, -- Member Card [603] = {"603", "电池组", "生成2-4电池#对当前主动道具充能"}, -- Battery Pack [604] = {"604", "老妈的手镯", "可以捡起岩石,TNT,便便,友好粪滴,寄居骷髅等障碍物进行投掷#捡起的东西可以带入下1个房间"}, -- Mom's Bracelet @@ -320,7 +320,7 @@ local repCollectibles={ [666] = {"666", "", "<道具不存在>"}, [667] = {"667", "稻草人", "+1炸弹#生成店主作为第二个角色#店主死亡时生成蓝蜘蛛#店主死亡时该道具消失#店主活着时恶魔交易花费硬币#!!! 店主能够捡起道具,包括剧情道具,死亡时也会永久移除"}, -- Strawman [668] = {"668", "老爸的便条", "踏上回家的路#留在之前{{TreasureRoom}}道具房或{{BossRoom}}Boss房的饰品会变成 {{Card78}} 破裂的钥匙"}, -- Dad's Note - [669] = {"669", "腊肠", "↑ +1心之容器#满血#↑ +0.5伤害#↑ +0.2移速#↑ +1.2弹速#↑ +0.16射程#↑ +1运气#↑ +6.9%{{DevilRoom}}恶魔房或{{AngelRoom}}天使房几率#↑ +6.9%{{Planetarium}}星象房几率"}, -- Sausage + [669] = {"669", "腊肠", "↑ +1心之容器#满血#↑ +0.5伤害#↑ +0.2移速#↑ +1.2弹速#↑ +0.16射程#↑ +1运气#↑ +6.9%{{DevilRoom}}恶魔房/{{AngelRoom}}天使房几率#↑ +6.9%{{Planetarium}}星象房几率"}, -- Sausage [670] = {"670", "选择?", "如果清理的房间有奖励,产生2种不同的奖励#捡起其一后另1个奖励消失"}, -- Options? [671] = {"671", "糖心", "捡起红心时获得永久的属性提升"}, -- Candy Heart [672] = {"672", "一磅肉", "恶魔交易消耗硬币#商店里的道具消耗心之容器#商店里的 其它物品免费,但被尖刺环绕"}, -- A Pound of Flesh From 4dc81421f5120b7f21b1bdc2b1c759af9843d5ef Mon Sep 17 00:00:00 2001 From: Xheepey87 <40490528+Xheepey87@users.noreply.github.com> Date: Wed, 26 Jan 2022 09:21:45 +0800 Subject: [PATCH 05/19] zh_cn : updated Black Candle's chance for Devil Room --- descriptions/ab+/zh_cn.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/descriptions/ab+/zh_cn.lua b/descriptions/ab+/zh_cn.lua index 7c8de5c3..8ed11ebf 100644 --- a/descriptions/ab+/zh_cn.lua +++ b/descriptions/ab+/zh_cn.lua @@ -2,7 +2,7 @@ ----- Basic Chinese descriptions --- -------------------------------------- --- Last Sync Revise: 2022.01.20 +-- Last Update: 2022.01.26 -- Last Full Check: N/A -- I will have a full check someday else. -- FORMAT: Item ID | Name | Description @@ -282,7 +282,7 @@ EID.descriptions[languageCode].collectibles={ {"257", "火焰意志", "眼泪会点燃敌人#击中敌人时眼泪有几率爆炸#运气13:100%几率#!!! 爆炸也会伤到自己!"}, {"258", "编号丢失", "每换一层重置一次持有道具和掉落物#同时重置角色属性"}, {"259", "暗物质", "↑ +1伤害#33%几率发射恐惧眼泪"}, - {"260", "黑蜡烛", "免疫诅咒#+1黑心#{{DevilRoom}}恶魔房/{{AngelRoom}}天使房出现几率更高"}, + {"260", "黑蜡烛", "免疫诅咒#+1黑心#+15%{{DevilRoom}}恶魔房/{{AngelRoom}}天使房几率"}, {"261", "眼球突出", "↑ +100%伤害#↓ 眼泪走得越远伤害越低"}, {"262", "遗失的书页2", "+1黑心#当降至1心时,对房间内所有敌人造成40伤害"}, {"263", "", "<道具不存在>"}, From c43028f338c0eed426442f5d590318ee1d9797b2 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Wed, 26 Jan 2022 00:36:52 -0500 Subject: [PATCH 06/19] Add a Tab preview to Spindown Dice --- eid_modifiers.lua | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/eid_modifiers.lua b/eid_modifiers.lua index 7b92ebd6..2fff2c88 100644 --- a/eid_modifiers.lua +++ b/eid_modifiers.lua @@ -50,6 +50,7 @@ if REPENTANCE then return descObj end + local inSpindownPreview = false -- Handle Spindown Dice description addition local function SpindownDiceCallback(descObj) EID:appendToDescription(descObj, "#{{Collectible723}} :") @@ -63,6 +64,12 @@ if REPENTANCE then end refID = spinnedID if refID > 0 and refID < 4294960000 then + if i == 1 and Input.IsActionPressed(ButtonAction.ACTION_MAP, EID.player.ControllerIndex) then + inSpindownPreview = true + local descEntry = EID:getDescriptionObj(5, 100, refID) + inSpindownPreview = false + return descEntry + end EID:appendToDescription(descObj, "{{Collectible"..refID.."}}") if EID.itemUnlockStates[refID] == false then EID:appendToDescription(descObj, "?") end if i ~= EID.Config["SpindownDiceResults"] then @@ -77,6 +84,7 @@ if REPENTANCE then if hasCarBattery then EID:appendToDescription(descObj, " (Results with {{Collectible356}})") end + EID:appendToDescription(descObj, "#{{Blank}} ".. EID:getDescriptionEntry("FlipItemToggleInfo")) return descObj end @@ -317,7 +325,7 @@ if REPENTANCE then if collectiblesOwned[584] then table.insert(callbacks, BookOfVirtuesCallback) end if collectiblesOwned[706] then table.insert(callbacks, AbyssCallback) end - if collectiblesOwned[723] or (EID.absorbedSpindown and collectiblesOwned[477]) then table.insert(callbacks, SpindownDiceCallback) end + if (collectiblesOwned[723] or (EID.absorbedSpindown and collectiblesOwned[477])) and not inSpindownPreview then table.insert(callbacks, SpindownDiceCallback) end if collectiblesOwned[711] and EID:getEntityData(descObj.Entity, "EID_FlipItemID") then table.insert(callbacks, FlipCallback) end -- Card / Rune Callbacks elseif descObj.ObjVariant == PickupVariant.PICKUP_TAROTCARD then From eef4b549e1251caeb8f035ec43db920054e66a40 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Wed, 26 Jan 2022 00:37:11 -0500 Subject: [PATCH 07/19] Add Void toggle, remove F5 default scale --- eid_config.lua | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/eid_config.lua b/eid_config.lua index c93bb898..b776121a 100644 --- a/eid_config.lua +++ b/eid_config.lua @@ -30,9 +30,9 @@ EID.UserConfig = { -- Change the size of the info boxes. Range: [0,...,1] -- Default = 1 ["Scale"] = 1, - -- Press or hold the key to change scale. - -- Default = Keyboard.KEY_F5 - ["ScaleKey"] = Keyboard.KEY_F5, + -- Press or hold the key to change scale. Keyboard.KEY_F5 is recommended + -- Default = none + ["ScaleKey"] = -1, -- Set the background transparency. Range: [0,...,1] -- Default = 0.75 ["Transparency"] = 0.75, @@ -226,6 +226,11 @@ EID.UserConfig = { -- REPENTANCE ONLY!!! -- Default = true ["DisplayCraneInfo"] = true, + + ---------- Void Stat Increases ---------- + -- Toggle display of what stats will increase on Void absorption + -- Default = false + ["DisplayVoidStatInfo"] = false, ---------- Bag of Crafting ------------ @@ -347,7 +352,7 @@ EID.DefaultConfig = { ["FontType"] = "default", ["TextboxWidth"] = 130, ["Scale"] = 1, - ["ScaleKey"] = Keyboard.KEY_F5, + ["ScaleKey"] = -1, ["Transparency"] = 0.75, ["HUDOffset"] = 10, ["XPosition"] = 60, @@ -396,6 +401,7 @@ EID.DefaultConfig = { ["DisplayDiceInfo"] = true, ["DisplayBagOfCrafting"] = "always", ["DisplayCraneInfo"] = true, + ["DisplayVoidStatInfo"] = false, ["BagOfCraftingResults"] = 7, ["BagOfCraftingCombinationMax"] = 12, ["BagOfCraftingRandomResults"] = 400, From 9771a77a7694558502459fe27b56867ea10bb83f Mon Sep 17 00:00:00 2001 From: Buurazu Date: Wed, 26 Jan 2022 00:42:35 -0500 Subject: [PATCH 08/19] Add Void option, reduce some simple boolean option line counts --- mod_config_menu.lua | 248 ++++++-------------------------------------- 1 file changed, 29 insertions(+), 219 deletions(-) diff --git a/mod_config_menu.lua b/mod_config_menu.lua index be873c43..1df7a9ec 100644 --- a/mod_config_menu.lua +++ b/mod_config_menu.lua @@ -115,27 +115,27 @@ function EID:buildColorArray() table.sort(colorNameArray) end -function EID:AddBooleanSetting(category, optionName, displayText, onText, offText, infoText) - if (type(infoText) == "string") then infoText = {infoText} end +function EID:AddBooleanSetting(category, optionName, displayText, params) + if type(params) ~= "table" then params = {} end + if params.repOnly and not REPENTANCE then return end MCM.AddSetting( - "EID", - category, + "EID", category, { Type = ModConfigMenu.OptionType.BOOLEAN, - CurrentSetting = function() + CurrentSetting = params.currentSettingFunc or function() return EID.Config[optionName] end, - Display = function() - local onOff = offText + Display = params.displayFunc or function() + local onOff = params.offText or "False" if EID.Config[optionName] then - onOff = onText + onOff = params.onText or "True" end return displayText .. ": " .. onOff end, - OnChange = function(currentBool) + OnChange = params.onChangeFunc or function(currentBool) EID.Config[optionName] = currentBool end, - Info = infoText + Info = params.infoText or {} } ) end @@ -579,190 +579,21 @@ if MCMLoaded then --------------------------------------------------------------------------- ---------------------------------Display----------------------------------- - - ------------Collectibles-------------- - - MCM.AddSetting( - "EID", - "Display", - { - Type = ModConfigMenu.OptionType.BOOLEAN, - CurrentSetting = function() - return EID.Config["DisplayItemInfo"] - end, - Display = function() - EID.MCMCompat_isDisplayingEIDTab = ""; - local onOff = "False" - if EID.Config["DisplayItemInfo"] then - onOff = "True" - end - return "Collectible Infos: " .. onOff - end, - OnChange = function(currentBool) - EID.Config["DisplayItemInfo"] = currentBool - end - } - ) - ------------Trinkets-------------- - - MCM.AddSetting( - "EID", - "Display", - { - Type = ModConfigMenu.OptionType.BOOLEAN, - CurrentSetting = function() - return EID.Config["DisplayTrinketInfo"] - end, - Display = function() - local onOff = "False" - if EID.Config["DisplayTrinketInfo"] then - onOff = "True" - end - return "Trinket Infos: " .. onOff - end, - OnChange = function(currentBool) - EID.Config["DisplayTrinketInfo"] = currentBool - end - } - ) - ------------CARDS-------------- - - MCM.AddSetting( - "EID", - "Display", - { - Type = ModConfigMenu.OptionType.BOOLEAN, - CurrentSetting = function() - return EID.Config["DisplayCardInfo"] - end, - Display = function() - local onOff = "False" - if EID.Config["DisplayCardInfo"] then - onOff = "True" - end - return "Card Infos: " .. onOff - end, - OnChange = function(currentBool) - EID.Config["DisplayCardInfo"] = currentBool - end - } - ) - - ------------PILLS-------------- - MCM.AddSetting( - "EID", - "Display", - { - Type = ModConfigMenu.OptionType.BOOLEAN, - CurrentSetting = function() - return EID.Config["DisplayPillInfo"] - end, - Display = function() - local onOff = "False" - if EID.Config["DisplayPillInfo"] then - onOff = "True" - end - return "Pill Infos: " .. onOff - end, - OnChange = function(currentBool) - EID.Config["DisplayPillInfo"] = currentBool - end - } - ) - if REPENTANCE then - ------------Glitched Items-------------- - MCM.AddSetting( - "EID", - "Display", - { - Type = ModConfigMenu.OptionType.BOOLEAN, - CurrentSetting = function() - return EID.Config["DisplayGlitchedItemInfo"] - end, - Display = function() - local onOff = "False" - if EID.Config["DisplayGlitchedItemInfo"] then - onOff = "True" - end - return "Glitched Item Infos: " .. onOff - end, - OnChange = function(currentBool) - EID.Config["DisplayGlitchedItemInfo"] = currentBool - end, - Info = {"Note: The --luadebug launch option is required for more detailed glitched item descriptions"} - } - ) - end - --------Sacrifice Room--------- - MCM.AddSetting( - "EID", - "Display", - { - Type = ModConfigMenu.OptionType.BOOLEAN, - CurrentSetting = function() - return EID.Config["DisplaySacrificeInfo"] - end, - Display = function() - local onOff = "False" - if EID.Config["DisplaySacrificeInfo"] then - onOff = "True" - end - return "Sacrifice Room Infos: " .. onOff - end, - OnChange = function(currentBool) - EID.Config["DisplaySacrificeInfo"] = currentBool - end - } - ) - - --------Dice Room--------- - MCM.AddSetting( - "EID", - "Display", - { - Type = ModConfigMenu.OptionType.BOOLEAN, - CurrentSetting = function() - return EID.Config["DisplayDiceInfo"] - end, - Display = function() - local onOff = "False" - if EID.Config["DisplayDiceInfo"] then - onOff = "True" - end - return "Dice Room Infos: " .. onOff - end, - OnChange = function(currentBool) - EID.Config["DisplayDiceInfo"] = currentBool - end - } - ) - + -- Simple toggles of what descriptions the user wants displayed + EID:AddBooleanSetting("Display", "DisplayItemInfo", "Collectible Infos") + EID:AddBooleanSetting("Display", "DisplayTrinketInfo", "Trinket Infos") + EID:AddBooleanSetting("Display", "DisplayCardInfo", "Card Infos") + EID:AddBooleanSetting("Display", "DisplayPillInfo", "Pill Infos") + EID:AddBooleanSetting("Display", "DisplayGlitchedItemInfo", "Glitched Item Infos", {repOnly = true, + infoText = "Note: The --luadebug launch option is required for more detailed glitched item descriptions; this can be dangerous!"}) + EID:AddBooleanSetting("Display", "DisplaySacrificeInfo", "Sacrifice Room Infos") + EID:AddBooleanSetting("Display", "DisplayDiceInfo", "Dice Room Infos") + EID:AddBooleanSetting("Display", "DisplayCraneInfo", "Crane Game Infos", {repOnly = true}) + EID:AddBooleanSetting("Display", "DisplayVoidStatInfo", "Void Stat Increase Infos") local diceSteps = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11} if REPENTANCE then - - --------Crane Game--------- - MCM.AddSetting( - "EID", - "Display", - { - Type = ModConfigMenu.OptionType.BOOLEAN, - CurrentSetting = function() - return EID.Config["DisplayCraneInfo"] - end, - Display = function() - local onOff = "False" - if EID.Config["DisplayCraneInfo"] then - onOff = "True" - end - return "Crane Game Infos: " .. onOff - end, - OnChange = function(currentBool) - EID.Config["DisplayCraneInfo"] = currentBool - end - } - ) MCM.AddSpace("EID", "Display") @@ -788,27 +619,8 @@ if MCMLoaded then -- -- Spindown Dice skip locked items - MCM.AddSetting( - "EID", - "Display", - { - Type = ModConfigMenu.OptionType.BOOLEAN, - CurrentSetting = function() - return EID.Config["SpindownDiceSkipLocked"] - end, - Display = function() - local onOff = "False" - if EID.Config["SpindownDiceSkipLocked"] then - onOff = "True" - end - return "Skip Locked Items: " .. onOff - end, - OnChange = function(currentBool) - EID.Config["SpindownDiceSkipLocked"] = currentBool - end, - Info = {"Skip locked items in the preview just as the dice will; the method to check for unlock status is not perfect, though"} - } - ) + EID:AddBooleanSetting("Display", "SpindownDiceSkipLocked", "Skip Locked Items", + {repOnly = true, infoText = "Skip locked items in the preview just as the dice will; the method to check for unlock status is not perfect, though"}) end --------Obstruction--------- @@ -1369,15 +1181,13 @@ if MCMLoaded then } ) -- Bag of Crafting Hide in Battle - EID:AddBooleanSetting("Crafting", - "BagOfCraftingHideInBattle", - "Hide in Battle", "Yes", "No", - "Hides the recipe list when in a fight") + EID:AddBooleanSetting("Crafting", "BagOfCraftingHideInBattle", "Hide in Battle", + {onText = "Yes", offText = "No", + infoText = "Hides the recipe list when in a fight"}) -- Bag of Crafting 8 icons toggle - EID:AddBooleanSetting("Crafting", - "BagOfCraftingDisplayIcons", - "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") + EID:AddBooleanSetting("Crafting", "BagOfCraftingDisplayIcons", "Show Recipes/Best Bag as", + {onText = "8 Icons", offText = "Groups", + infoText = "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") MCM.AddText("EID", "Crafting", function() return "Recipe List Options" end) From 5c433ad0183c376cc2f853a58c9736291b10e1a0 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Wed, 26 Jan 2022 00:42:56 -0500 Subject: [PATCH 09/19] use GameUpdateCount for the modifier collectible check --- eid_modifiers.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/eid_modifiers.lua b/eid_modifiers.lua index 2fff2c88..429215d4 100644 --- a/eid_modifiers.lua +++ b/eid_modifiers.lua @@ -282,13 +282,15 @@ if REPENTANCE then CollectibleType.COLLECTIBLE_FALSE_PHD, CollectibleType.COLLECTIBLE_ABYSS, CollectibleType.COLLECTIBLE_FLIP, } local collectiblesOwned = {} - + local lastCheck = 0 + local function EIDConditions(descObj) -- currently, only pickup descriptions have modifiers if descObj.ObjType ~= 5 then return false end -- recheck the players' owned collectibles periodically, not every frame - if game:GetFrameCount() % 10 == 0 then + if EID.GameUpdateCount >= lastCheck + 15 then + lastCheck = EID.GameUpdateCount local numPlayers = game:GetNumPlayers() local players = {}; for i = 0, numPlayers - 1 do players[i] = Isaac.GetPlayer(i) end for _,v in ipairs(collectiblesToCheck) do From bba23bcc5736417ac850a42d930baa28a485583b Mon Sep 17 00:00:00 2001 From: Buurazu Date: Wed, 26 Jan 2022 01:14:35 -0500 Subject: [PATCH 10/19] Fix no Flip items after fresh game reload --- main.lua | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/main.lua b/main.lua index 8d8d6108..d3fb188e 100644 --- a/main.lua +++ b/main.lua @@ -628,16 +628,7 @@ end local isMirrorRoom = false local isDeathCertRoom = false if REPENTANCE then - function EID:onNewRoom() - isMirrorRoom = game:GetLevel():GetCurrentRoom():IsMirrorWorld() - - local level = game:GetLevel() - local id = level:GetCurrentRoomIndex() - isDeathCertRoom = (id >=0 and GetPtrHash(level:GetRoomByIdx(id)) == GetPtrHash(level:GetRoomByIdx(id, 2))) - - -- Handle Flip Item - initialItemNext = false - flipItemNext = false + function EID:AssignFlipItems() EID.flipMaxIndex = -1 local curRoomIndex = game:GetLevel():GetCurrentRoomIndex() if EID.flipItemPositions[curRoomIndex] then @@ -651,6 +642,18 @@ if REPENTANCE then end end end + function EID:onNewRoom() + isMirrorRoom = game:GetLevel():GetCurrentRoom():IsMirrorWorld() + + local level = game:GetLevel() + local id = level:GetCurrentRoomIndex() + isDeathCertRoom = (id >=0 and GetPtrHash(level:GetRoomByIdx(id)) == GetPtrHash(level:GetRoomByIdx(id, 2))) + + -- Handle Flip Item + initialItemNext = false + flipItemNext = false + EID:AssignFlipItems() + end EID:AddCallback(ModCallbacks.MC_POST_NEW_ROOM, EID.onNewRoom) end --------------------------------------------------------------------------- @@ -1279,6 +1282,7 @@ if EID.MCMLoaded or REPENTANCE then for k, _ in pairs(configIgnoreList) do savedEIDConfig[k] = nil end + EID:AssignFlipItems() end end From d432a4e67294ba43ce2cd271b1eec1f0e1c0946b Mon Sep 17 00:00:00 2001 From: Xheepey87 <40490528+Xheepey87@users.noreply.github.com> Date: Wed, 26 Jan 2022 16:58:08 +0800 Subject: [PATCH 11/19] zh_cn : corrected Daemon's Tail description --- descriptions/ab+/zh_cn.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/descriptions/ab+/zh_cn.lua b/descriptions/ab+/zh_cn.lua index 8ed11ebf..63c55415 100644 --- a/descriptions/ab+/zh_cn.lua +++ b/descriptions/ab+/zh_cn.lua @@ -600,7 +600,7 @@ EID.descriptions[languageCode].trinkets={ {"19", "回形针", "不用钥匙就能开箱子"}, {"20", "猴爪", "受伤后血量不多于半心则生成1黑心#!!! 只能用3次"}, {"21", "神秘纸片", "随机模仿:#{{Blank}} {{Collectible327}}全家福#{{Blank}} {{Collectible328}}底片#{{Blank}} {{Trinket48}}遗失书页#{{Blank}} {{Trinket23}}寻人启事"}, - {"22", "恶魔的尾巴", "心的掉率降至20%#钥匙掉率提升#心掉落物全变为黑心"}, + {"22", "恶魔的尾巴", "心掉落物有80%几率被钥匙取代#心掉落物变为黑心"}, {"23", "寻人启事", "在{{SacrificeRoom}}献祭房死亡则以游魂重生#如果解锁过,在献祭房之外也会以他重生"}, {"24", "屁股硬币", "便便产生硬币的几率+20%#捡起硬币时放屁#屁只会击退敌人"}, {"25", "神秘糖果", "每30秒放屁或生成便便"}, From b3eb695400e2a4bde7ecd16dbb056e8024adf3ca Mon Sep 17 00:00:00 2001 From: Xheepey87 <40490528+Xheepey87@users.noreply.github.com> Date: Wed, 26 Jan 2022 17:10:11 +0800 Subject: [PATCH 12/19] zh_cn : updated Number Magnet description --- descriptions/rep/zh_cn.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/descriptions/rep/zh_cn.lua b/descriptions/rep/zh_cn.lua index 74211a76..e2ce64d1 100644 --- a/descriptions/rep/zh_cn.lua +++ b/descriptions/rep/zh_cn.lua @@ -747,7 +747,7 @@ local repTrinkets={ [171] = {"171", "店主的协议", "50%几率使恶魔交易花费硬币而不是心"}, -- Keeper's Bargain [172] = {"172", "诅咒硬币", "捡起硬币时传送至随机房间#可以传送到隐藏房"}, -- Cursed Penny [173] = {"173", "你的灵魂", "免费进行一次恶魔交易"}, -- Your Soul - [174] = {"174", "数字冰箱贴", "+10%恶魔房几率"}, -- Number Magnet + [174] = {"174", "数字冰箱贴", "+10%恶魔房几率#防止恶魔交易中出现坎卜斯"}, -- Number Magnet [175] = {"175", "奇怪的钥匙", "解锁窒息胎战通道,不再限时#使用{{Collectible297}}潘多拉的盒子时从随机道具池生成6个道具,原效果失效#使用后两者都会被消耗"}, -- Strange Key [176] = {"176", "小血团", "生成1个血块跟班,模仿角色的行动,发射方向和眼泪效果#如果跟班死亡则在下一个房间重生"}, -- Lil Clot [177] = {"177", "纹身贴", "清理{{ChallengeRoom}}挑战房后生成1箱子,清理{{BossRushRoom}}Boss挑战房后生成1道具"}, -- Temporary Tattoo From f3afb1b92362294432716d2135c3686e0d88db5c Mon Sep 17 00:00:00 2001 From: Buurazu Date: Wed, 26 Jan 2022 04:44:28 -0500 Subject: [PATCH 13/19] Void update --- descriptions/ab+/en_us.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/descriptions/ab+/en_us.lua b/descriptions/ab+/en_us.lua index f5f98c1e..f6798ff3 100644 --- a/descriptions/ab+/en_us.lua +++ b/descriptions/ab+/en_us.lua @@ -496,7 +496,7 @@ EID.descriptions[languageCode].collectibles={ {"474", "Tonsil", "Blocks enemy projectiles"}, {"475", "Plan C", "!!! SINGLE USE !!!#Deals 9,999,999 damage to all enemies and kills you 3 seconds later"}, {"476", "D1", "Duplicates 1 random pickup in the current room"}, - {"477", "Void", "!!! When used, consume any pedestal items in the room#Active item: Its effect will be added to Void's effect (Stacking the effects)#↑ Passive item: Small stat upgrade to a random stat"}, + {"477", "Void", "!!! When used, consumes all pedestal items in the room#Active item: Its effect activates, and will activate every future use of Void#↑ Passive item: Small stat upgrade to two random stats"}, {"478", "Pause", "Freezes all enemies in the room until you start shooting again#Touching a frozen enemy will hurt you#Enemies unfreeze after 30 seconds"}, {"479", "Smelter", "Consumes your trinket and gives you the effect permanently#More trinkets appear"}, {"480", "Compost", "Converts pickups into blue flies or spiders#Doubles your current blue flies/spiders#Spawns 1 blue fly or spider when you don't have any"}, @@ -870,6 +870,9 @@ EID.descriptions[languageCode].transformations={ ---------- MISC ---------- +EID.descriptions[languageCode].VoidText = "If absorbed, gain:" +EID.descriptions[languageCode].VoidNames = {"Speed", "Tears", "Damage", "Range", "Shot Speed", "Luck"} + EID.descriptions[languageCode].MCM = { DemoObjectName = "Demo Object Name", DemoObjectTransformation = "Demo Transformation", From 1eeaca4e9518faadeb58bce28a688e6bd9708a4e Mon Sep 17 00:00:00 2001 From: Buurazu Date: Wed, 26 Jan 2022 04:44:54 -0500 Subject: [PATCH 14/19] Void update, specify Map hotkey --- descriptions/rep/en_us.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/descriptions/rep/en_us.lua b/descriptions/rep/en_us.lua index 2b60fdc9..06a05636 100644 --- a/descriptions/rep/en_us.lua +++ b/descriptions/rep/en_us.lua @@ -188,6 +188,7 @@ local repCollectibles={ [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 [476] = {"476", "D1", "Duplicates 1 random pickup in the current room#Duplicated pickups may not be identical to the original"}, -- D1 + [477] = {"477", "Void", "!!! When used, consumes all pedestal items in the room#Active item: Its effect will activate every future use of Void#↑ Passive item: Small stat upgrade to two random stats"}, [489] = {"489", "D Infinity", "Acts as any die item except for {{Collectible723}}Spindown Dice#Change the current die with the drop key#Charge time varies based on the current die and updates when used"}, -- D Infinity [491] = {"491", "Acid Baby", "Drops a random pill every 7 rooms#Using a pill poisons all enemies in the room"}, -- Acid Baby [493] = {"493", "Adrenaline", "↑ Damage up for every empty Red Heart container#Follows a formula, some examples are:#+0.3 at 1#+0.92 at 2#+1.76 at 3#+2.79 at 4#+3.98 at 5"}, -- Adrenaline @@ -1011,6 +1012,9 @@ EID.descriptions[languageCode].GlitchedItemText = { ---------- Misc. Text ---------- +-- Void stat names: Replace "Tears" with "Fire Rate" +EID.descriptions[languageCode].VoidNames[2] = EID.descriptions[languageCode].GlitchedItemText[1] + EID.descriptions[languageCode].spindownError = "Item disappears" EID.descriptions[languageCode].CraftingBagContent = "Bag:" @@ -1030,7 +1034,7 @@ EID.descriptions[languageCode].BlankCardCharge = "Blank Card charge:" EID.descriptions[languageCode].BlankCardQCard = "Teleport to I Am Error Room#Blank Card and ?-Card will be destroyed" EID.descriptions[languageCode].ClearRuneCharge = "Clear Rune charge:" EID.descriptions[languageCode].PlaceboCharge = "Placebo charge:" -EID.descriptions[languageCode].FlipItemToggleInfo = "(Hold {{ButtonSelect}} to show description)" +EID.descriptions[languageCode].FlipItemToggleInfo = "(Hold {{ButtonSelect}} (Map) to show description)" EID.descriptions[languageCode].FalsePHDHeart = "Spawns 1 Black Heart" From cb15cf56c432dc7f738cdf24368a7d0fd495858d Mon Sep 17 00:00:00 2001 From: Buurazu Date: Wed, 26 Jan 2022 04:45:41 -0500 Subject: [PATCH 15/19] fix displaying tab --- mod_config_menu.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mod_config_menu.lua b/mod_config_menu.lua index 1df7a9ec..1c182126 100644 --- a/mod_config_menu.lua +++ b/mod_config_menu.lua @@ -126,6 +126,7 @@ function EID:AddBooleanSetting(category, optionName, displayText, params) return EID.Config[optionName] end, Display = params.displayFunc or function() + if params.displayingTab then EID.MCMCompat_isDisplayingEIDTab = params.displayingTab end local onOff = params.offText or "False" if EID.Config[optionName] then onOff = params.onText or "True" @@ -581,7 +582,7 @@ if MCMLoaded then ---------------------------------Display----------------------------------- -- Simple toggles of what descriptions the user wants displayed - EID:AddBooleanSetting("Display", "DisplayItemInfo", "Collectible Infos") + EID:AddBooleanSetting("Display", "DisplayItemInfo", "Collectible Infos", {displayingTab = ""}) EID:AddBooleanSetting("Display", "DisplayTrinketInfo", "Trinket Infos") EID:AddBooleanSetting("Display", "DisplayCardInfo", "Card Infos") EID:AddBooleanSetting("Display", "DisplayPillInfo", "Pill Infos") From 281672fe0da5628b9d8c80f8f820edd1bbb618f8 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Wed, 26 Jan 2022 04:46:12 -0500 Subject: [PATCH 16/19] Void 1.0 --- main.lua | 51 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/main.lua b/main.lua index d3fb188e..c4f3a0e1 100644 --- a/main.lua +++ b/main.lua @@ -818,19 +818,34 @@ end -- Runs 30 times a second; doesn't update while paused local collSpawned = false + +EID.VoidStatIncreases = {} +EID.BlackRuneStatIncreases = {} local function VoidRNGNext(num) num = num ~ ((num >> 5) & 4294967295) num = num ~ ((num << 9) & 4294967295) num = num ~ ((num >> 7) & 4294967295) return num >> 0; end --- Speed, Fire Rate, Damage, Range, Shot Speed, Luck --- (Same order as it is on the Extra Hud) -local voidStatUps = { 0.2, 0.5, 1, 1.5, 0.2, 1 } +local function GetTwoIncreases(rng, tbl) + local statTable = {1,2,3,4,5,6} + -- perform 5 random swaps of our stat table + for i = 6, 2, -1 do + rng = VoidRNGNext(rng) + local result = (rng % i) + 1 + local temp = statTable[i] + statTable[i] = statTable[result] + statTable[result] = temp + end + -- the first two entries in the stat table get increased + tbl[statTable[1]] = tbl[statTable[1]] + 1 + tbl[statTable[2]] = tbl[statTable[2]] + 1 + return rng +end + function EID:onGameUpdate() EID.GameUpdateCount = EID.GameUpdateCount + 1 - if collSpawned then collSpawned = false local numVoidable = 0 @@ -855,29 +870,23 @@ function EID:onGameUpdate() end -- Recalculate our total Void stat-ups if a collectible spawned this frame - -- NOTE: NEED AB+ NUMBERS STILL - -- THIS COULD APPLY TO BLACK RUNE AS WELL, WHATS ITS RNG??? getplayer:getcardrng? + -- THIS COULD APPLY TO BLACK RUNE AS WELL if EID:PlayersHaveCollectible(CollectibleType.COLLECTIBLE_VOID) then local curRoomIndex = game:GetLevel():GetCurrentRoomIndex() local increases = {0, 0, 0, 0, 0, 0} + local runeIncreases = {0, 0, 0, 0, 0, 0} --CHANGE THIS TO THE PLAYER THAT HAS VOID local startRNG = Isaac.GetPlayer(0):GetCollectibleRNG(CollectibleType.COLLECTIBLE_VOID):GetSeed() - startRNG = VoidRNGNext(startRNG) - for pedestals = 1, numVoidable do - local statTable = {1,2,3,4,5,6} - -- perform 5 random swaps of our stat table - for i = 6, 2, -1 do - startRNG = VoidRNGNext(startRNG) - local result = (startRNG % i) + 1 - local temp = statTable[i] - statTable[i] = statTable[result] - statTable[result] = temp - end - -- the first two entries in the stat table get increased - increases[statTable[1]] = increases[statTable[1]] + voidStatUps[statTable[1]] - increases[statTable[2]] = increases[statTable[2]] + voidStatUps[statTable[2]] + local runeRNG = Isaac.GetPlayer(0):GetCardRNG(Card.RUNE_BLACK):GetSeed() + -- in Repentance, an additional RNG call is done before the 5 for stat ups + if REPENTANCE then startRNG = VoidRNGNext(startRNG) end + for pedestals = 1, 1 do + startRNG = GetTwoIncreases(startRNG, increases) + runeRNG = GetTwoIncreases(runeRNG, runeIncreases) + break -- only doing 1 preview for now end - for i,v in ipairs(increases) do print(v) end + EID.VoidStatIncreases = increases + EID.BlackRuneStatIncreases = runeIncreases end end From f846c6d46bd6a196cf2e8e18400e2456a09df592 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Wed, 26 Jan 2022 04:46:48 -0500 Subject: [PATCH 17/19] Void 1.0 --- eid_modifiers.lua | 140 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 104 insertions(+), 36 deletions(-) diff --git a/eid_modifiers.lua b/eid_modifiers.lua index 429215d4..20cbb65c 100644 --- a/eid_modifiers.lua +++ b/eid_modifiers.lua @@ -1,6 +1,107 @@ -if REPENTANCE then - local game = Game() +local game = Game() +-- Afterbirth+ modifiers +local collectiblesToCheck = { CollectibleType.COLLECTIBLE_VOID, } +-- Repentance modifiers +if REPENTANCE then collectiblesToCheck = { CollectibleType.COLLECTIBLE_VOID, + CollectibleType.COLLECTIBLE_BINGE_EATER, CollectibleType.COLLECTIBLE_BOOK_OF_VIRTUES, CollectibleType.COLLECTIBLE_SPINDOWN_DICE, + CollectibleType.COLLECTIBLE_TAROT_CLOTH, CollectibleType.COLLECTIBLE_MOMS_BOX, + CollectibleType.COLLECTIBLE_BLANK_CARD, CollectibleType.COLLECTIBLE_CLEAR_RUNE, CollectibleType.COLLECTIBLE_PLACEBO, + CollectibleType.COLLECTIBLE_FALSE_PHD, CollectibleType.COLLECTIBLE_ABYSS, CollectibleType.COLLECTIBLE_FLIP, +} end +local collectiblesOwned = {} +local blackRuneOwned = false +local lastCheck = 0 + +local function CheckPlayersCollectibles() + -- recheck the players' owned collectibles periodically, not every frame + if EID.GameUpdateCount >= lastCheck + 15 then + lastCheck = EID.GameUpdateCount + local numPlayers = game:GetNumPlayers() + local players = {}; for i = 0, numPlayers - 1 do players[i] = Isaac.GetPlayer(i) end + for _,v in ipairs(collectiblesToCheck) do + collectiblesOwned[v] = false + for i = 0, numPlayers - 1 do + if players[i]:HasCollectible(v) then + collectiblesOwned[v] = true + break + end + end + end + blackRuneOwned = false + for i = 0, numPlayers - 1 do + for j = 0, 1 do + if players[i]:GetCard(j) == Card.RUNE_BLACK then + blackRuneOwned = true + break + end + end + end + -- Birthright Book of Belial + -- Could this be changed to just checking for having Collectible 59? (Check interaction with Clicker etc) + if REPENTANCE then + collectiblesOwned[59] = false + for i = 0, numPlayers - 1 do + local playerType = players[i]:GetPlayerType() + if (playerType == PlayerType.PLAYER_JUDAS or playerType == PlayerType.PLAYER_BLACKJUDAS) and players[i]:HasCollectible(CollectibleType.COLLECTIBLE_BIRTHRIGHT) then + collectiblesOwned[59] = true + break + end + end + end + end +end + +-- Handle Void (the only modifier that is applied to AB+ at the moment) +-- Speed, Tears, Damage, Range, Shot Speed, Luck +local voidIntro = EID:getDescriptionEntry("VoidText") +local voidNames = EID:getDescriptionEntry("VoidNames") +local voidStatUps = { 0.2, 0.5, 1, 0.5, 0.2, 1 } +if REPENTANCE then voidStatUps[4] = 1.5 end + +local function VoidCallback(descObj) + if EID.itemConfig:GetCollectible(descObj.ObjSubType).Type ~= 3 then + EID:appendToDescription(descObj, "#{{Collectible477}} " .. voidIntro .. "#") + for i,v in ipairs(EID.VoidStatIncreases) do + if v > 0 then + EID:appendToDescription(descObj, "{{Collectible477}} +" .. v*voidStatUps[i] .. " " .. voidNames[i] .. "#") + end + end + end + return descObj +end +local function BlackRuneCallback(descObj) + EID:appendToDescription(descObj, "#{{Card41}} " .. voidIntro .. "#") + for i,v in ipairs(EID.BlackRuneStatIncreases) do + if v > 0 then + EID:appendToDescription(descObj, "{{Card41}} +" .. v*voidStatUps[i] .. " " .. voidNames[i] .. "#") + end + end + return descObj +end + +local function EIDConditionsAB(descObj) + -- currently, only pickup descriptions have modifiers + if descObj.ObjType ~= 5 then return false end + + CheckPlayersCollectibles() + + local callbacks = {} + + -- Collectible Pedestal Callbacks + if descObj.ObjVariant == PickupVariant.PICKUP_COLLECTIBLE then + if EID.Config["DisplayVoidStatInfo"] then + if collectiblesOwned[477] then table.insert(callbacks, VoidCallback) end + if blackRuneOwned then table.insert(callbacks, BlackRuneCallback) end + end + end + + return callbacks +end +EID:addDescriptionModifier("EID Afterbirth+", EIDConditionsAB, nil) + + +if REPENTANCE then -- Handle Birthright local function BirthrightCallback(descObj) descObj.Description = "" @@ -275,44 +376,11 @@ if REPENTANCE then -- This one-condition setup fixes that and can only help performance -- It also allows us to pick the order that modifiers are appended to descriptions (stats/effects first, then reroll/flip/recharge info) - local collectiblesToCheck = { CollectibleType.COLLECTIBLE_BINGE_EATER, CollectibleType.COLLECTIBLE_BOOK_OF_VIRTUES, - CollectibleType.COLLECTIBLE_SPINDOWN_DICE, CollectibleType.COLLECTIBLE_VOID, - CollectibleType.COLLECTIBLE_TAROT_CLOTH, CollectibleType.COLLECTIBLE_MOMS_BOX, - CollectibleType.COLLECTIBLE_BLANK_CARD, CollectibleType.COLLECTIBLE_CLEAR_RUNE, CollectibleType.COLLECTIBLE_PLACEBO, - CollectibleType.COLLECTIBLE_FALSE_PHD, CollectibleType.COLLECTIBLE_ABYSS, CollectibleType.COLLECTIBLE_FLIP, - } - local collectiblesOwned = {} - local lastCheck = 0 - local function EIDConditions(descObj) -- currently, only pickup descriptions have modifiers if descObj.ObjType ~= 5 then return false end - -- recheck the players' owned collectibles periodically, not every frame - if EID.GameUpdateCount >= lastCheck + 15 then - lastCheck = EID.GameUpdateCount - local numPlayers = game:GetNumPlayers() - local players = {}; for i = 0, numPlayers - 1 do players[i] = Isaac.GetPlayer(i) end - for _,v in ipairs(collectiblesToCheck) do - collectiblesOwned[v] = false - for i = 0, numPlayers - 1 do - if players[i]:HasCollectible(v) then - collectiblesOwned[v] = true - break - end - end - end - -- Birthright Book of Belial - collectiblesOwned[59] = false - for i = 0, numPlayers - 1 do - local playerType = players[i]:GetPlayerType() - if (playerType == PlayerType.PLAYER_JUDAS or playerType == PlayerType.PLAYER_BLACKJUDAS) and players[i]:HasCollectible(CollectibleType.COLLECTIBLE_BIRTHRIGHT) then - collectiblesOwned[59] = true - break - end - end - - end + CheckPlayersCollectibles() local callbacks = {} From f6c43f8ac17c277bacbfa50b56890cee67b20ec9 Mon Sep 17 00:00:00 2001 From: Xheepey87 <40490528+Xheepey87@users.noreply.github.com> Date: Wed, 26 Jan 2022 19:15:31 +0800 Subject: [PATCH 18/19] zh_cn : corrected Apple! description --- descriptions/ab+/zh_cn.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/descriptions/ab+/zh_cn.lua b/descriptions/ab+/zh_cn.lua index 63c55415..20ec1055 100644 --- a/descriptions/ab+/zh_cn.lua +++ b/descriptions/ab+/zh_cn.lua @@ -465,7 +465,7 @@ EID.descriptions[languageCode].collectibles={ {"440", "肾结石", "大约每25秒停止发射,此时可发射1个肾结石,随后的眼泪会很快速喷射#↓ -0.2移速#↓ -17射程#↑ +2.0眼泪高度"}, {"441", "超级喷射", "发射超级撒但激光15秒#激光在房间和层之间持续存在"}, {"442", "黑王子之冠", "!!! 仅有1红心时:#↑ +1.5射程#↑ +0.75射速#↑ +0.2弹速#↑ +1眼泪高度#没有红心的角色无效"}, - {"443", "苹果!", "随机发射造成四倍伤害的刀片#↑ +0.3射程"}, + {"443", "苹果!", "随机发射造成四倍伤害的刀片#↑ +0.3射速"}, {"444", "铅笔", "每发射15颗眼泪,发射一串眼泪#眼泪串中的眼泪造成双倍伤害"}, {"445", "狗牙", "↑ +0.3伤害#↑ +0.1移速#如果角色在{{SecretRoom}}{{SuperSecretRoom}}隐藏房旁则有一声狼嚎#当进入有暗门的房间时则有一声吠叫"}, {"446", "烂牙", "发射眼泪时角色周围会有绿环,在其中的敌人会中毒#伤害与角色伤害一致"}, From c92f61daf771b7df85d3e27758e477a9a2f23280 Mon Sep 17 00:00:00 2001 From: Marcx <55658162+Ma-rcx@users.noreply.github.com> Date: Wed, 26 Jan 2022 20:18:16 +0100 Subject: [PATCH 19/19] Change little baggy and starter deck descriptions --- descriptions/rep/en_us_detailed.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/descriptions/rep/en_us_detailed.lua b/descriptions/rep/en_us_detailed.lua index 8037189d..e6df7645 100644 --- a/descriptions/rep/en_us_detailed.lua +++ b/descriptions/rep/en_us_detailed.lua @@ -266,8 +266,8 @@ local repCollectibles={ {"248", "" ,"Blue spiders and flies deal 2x damage and are larger. #Also effects locusts. #Doubles the spider limit of Mom's Wig to 10. #Fly and Spider familiars become stronger, just like BFFS! #Does not stack with BFFS! "}, {"249", "" ,"Spawns an extra item after boss fights. #After choosing one, the other disappears. #The second item is always picked from the Boss Item Pool instead of whichever item pool normally used. #Does not effect the Krampus fight."}, {"250", "" ,"All bombs become 1+1 bomb pickups."}, - {"251", "" ,"Spawns a random card. #Allows the player to hold two cards. #Replaces all cards with pills. #The only exception is the single pill dropped by the item Caffeine Pill. #By default, the key to cycle between cards is Control (PC), R2 (PlayStation) or RT (XBox). #Having Little Baggy will allow both cards and pills to appear again."}, - {"252", "" ,"Spawns a random pill. #Allows the player to hold two pills. #Replaces all pills with cards. #By default, the key to cycle between pills is Control (PC), R2 (PlayStation) or RT (XBox). #Cracked Key counts as a card and will be converted. #Blowing up the skull marked with an X guarantees a telepills drop."}, + {"251", "" ,"Spawns a random card. #Allows the player to hold two cards. #Replaces all pills with cards. #The only exception is the single pill dropped by the item Caffeine Pill. #By default, the key to cycle between cards is Control (PC), R2 (PlayStation) or RT (XBox). #Having Little Baggy will allow both cards and pills to appear again."}, + {"252", "" ,"Spawns a random pill. #Allows the player to hold two pills. #Replaces all cards and runes with pills. #By default, the key to cycle between pills is Control (PC), R2 (PlayStation) or RT (XBox). #Cracked Key counts as a card and will be converted. #Blowing up the skull marked with an X guarantees a telepills drop."}, {"253", "" ,"Grants one red heart container. #+1 Luck up."}, {"254", "" ,"+1 Flat damage up.#+5 Range up.#Only applies to tears fired from the player's left eye. #Damage bonus is unaffected by any damage multipliers. #Azazel has a chance to fire a beam with the damage bonus and gains no range. #Cain has a 50% chance to fire a shot with the bonus. #Every other set of tears The Keeper fires is effected. #Stacks with Chemical Peel."}, {"255", "" ,"+0.5 Tears up.#+0.2 Shot speed up."},