diff --git a/descriptions/ab+/en_us.lua b/descriptions/ab+/en_us.lua index dc210421..84fe6fb2 100644 --- a/descriptions/ab+/en_us.lua +++ b/descriptions/ab+/en_us.lua @@ -151,7 +151,7 @@ EID.descriptions[languageCode].collectibles={ {"128", "Forever Alone", "Long range fly orbital#Deals 30 contact damage per second"}, -- Forever Alone {"129", "Bucket of Lard", "↑ {{EmptyHeart}} +2 Empty heart containers#↓ {{Speed}} -0.2 Speed#{{HalfHeart}} Heals half a heart"}, -- Bucket of Lard {"130", "A Pony", "While held:#{{Speed}} Sets your Speed to at least 1.5#Flight#Upon use, dashes in the direction of Isaac's movement"}, -- A Pony - {"131", "Bomb Bag", "{{Bomb}} Spawns 1 bomb pickup every 2-3 rooms"}, -- Bomb Bag + {"131", "Bomb Bag", "{{Bomb}} Spawns 1 bomb pickup every 3 rooms"}, -- Bomb Bag {"132", "A Lump of Coal", "{{Damage}} Tears deal more damage the further they travel"}, -- A Lump of Coal {"133", "Guppy's Paw", "{{SoulHeart}} Converts 1 heart container into 3 Soul Hearts"}, -- Guppy's Paw {"134", "Guppy's Tail", "{{Chest}} 33% chance to replace the room clear reward with a chest#33% chance to spawn no room clear reward"}, -- Guppy's Tail @@ -164,7 +164,7 @@ EID.descriptions[languageCode].collectibles={ {"141", "Pageant Boy", "{{Coin}} Spawns 7 random coins"}, -- Pageant Boy {"142", "Scapular", "{{SoulHeart}} Isaac gains 1 Soul Heart when damaged down to half a heart#Can only happen once per room#Exiting and re-entering the room allows the effect to trigger again"}, -- Scapular {"143", "Speed Ball", "↑ {{Speed}} +0.3 Speed#↑ {{Shotspeed}} +0.2 Shot speed"}, -- Speed Ball - {"144", "Bum Friend", "{{Coin}} Picks up nearby coins#Spawns random pickups in return"}, -- Bum Friend + {"144", "Bum Friend", "{{Coin}} Picks up nearby coins#Spawns random pickups every 3-4 coins"}, -- Bum Friend {"145", "Guppy's Head", "Spawns 2-4 blue flies"}, -- Guppy's Head {"146", "Prayer Card", "{{EternalHeart}} +1 Eternal Heart"}, -- Prayer Card {"147", "Notched Axe", "{{Timer}} For the room, Isaac can break rocks and Secret Room walls by walking into them"}, -- Notched Axe @@ -175,7 +175,7 @@ EID.descriptions[languageCode].collectibles={ {"152", "Technology 2", "↓ {{Tears}} x0.5 Tears multiplier#↓ {{Damage}} x0.65 Damage multiplier#Replaces Isaac's right eye tears with a continuous laser#{{Damage}} The laser deals 3x Isaac's damage per second"}, -- Technology 2 {"153", "Mutant Spider", "↓ {{Tears}} x0.48 Tears multiplier#↓ {{Tears}} +3 Tear delay#Isaac shoots 4 tears at once"}, -- Mutant Spider {"154", "Chemical Peel", "↑ {{Damage}} +2 Damage for the left eye"}, -- Chemical Peel - {"155", "The Peeper", "Floats around the room#Deals 17.1 contact damage per second"}, -- The Peeper + {"155", "The Peeper", "Floats around the room#Deals 17 contact damage per second"}, -- The Peeper {"156", "Habit", "{{Battery}} Taking damage adds 1 charge to the active item"}, -- Habit {"157", "Bloody Lust", "↑ {{Damage}} Taking damage grants a damage up#Applies up to 6 times per floor#Lasts for the whole floor"}, -- Bloody Lust {"158", "Crystal Ball", "Spawns a {{SoulHeart}} Soul Heart, {{Rune}} rune or {{Card}} card#{{Timer}} Full mapping effect for the floor (except {{SuperSecretRoom}} Super Secret Room)"}, -- Crystal Ball @@ -291,7 +291,7 @@ EID.descriptions[languageCode].collectibles={ {"268", "Rotten Baby", "Spawns blue flies when Isaac shoots"}, -- Rotten Baby {"269", "Headless Baby", "Leaves creep which deals 6 damage per second"}, -- Headless Baby {"270", "Leech", "Chases enemies#{{HalfHeart}} Heals Isaac for half a heart when it kills an enemy#Deals 3.2 damage per second"}, -- Leech - {"271", "Mystery Sack", "Spawns a random pickup every few rooms"}, -- Mystery Sack + {"271", "Mystery Sack", "Spawns a random pickup every 5-6 rooms"}, -- Mystery Sack {"272", "BBF", "Friendly exploding fly#The explosion deals 60 damage#{{Warning}} The explosion can hurt Isaac"}, -- BBF {"273", "Bob's Brain", "Dashes in the direction Isaac is shooting#Explodes when it hits an enemy#{{Poison}} The explosion deals 60 damage and poisons enemies#{{Warning}} The explosion can hurt Isaac"}, -- Bob's Brain {"274", "Best Bud", "Taking damage spawns one midrange orbital for the room#The orbital deals 75 damage per second"}, -- Best Bud @@ -341,10 +341,10 @@ EID.descriptions[languageCode].collectibles={ {"316", "Cursed Eye", "Charged wave of 4 tears#{{Warning}} Taking damage while partially charged teleports Isaac to a random room"}, -- Cursed Eye {"317", "Mysterious Liquid", "Isaac's tears leave creep#The creep deals 30 damage per second"}, -- Mysterious Liquid {"318", "Gemini", "Close combat familiar#Deals 6 contact damage per second"}, -- Gemini - {"319", "Cain's Other Eye", "Bounces around the room#Shoots towards Isaac#{{Damage}} Deals the same damage as Isaac"}, -- Cain's Other Eye + {"319", "Cain's Other Eye", "Bounces around the room#Low accuracy tears that deal Isaac's damage"}, -- Cain's Other Eye {"320", "???'s Only Friend", "Controllable fly#Deals 37.5 contact damage per second"}, -- ???'s Only Friend {"321", "Samson's Chains", "Draggable ball that can destroy rocks#Deals 10.7 contact damage per second"}, -- Samson's Chains - {"322", "Mongo Baby", "Mimics one of your familiars tears#Cycles through which familiar to mimic every shot"}, -- Mongo Baby + {"322", "Mongo Baby", "Mimics your baby familiars' tears#If you have none, shoots normal 3.5 damage tears"}, -- Mongo Baby {"323", "Isaac's Tears", "Shoots 8 tears in all directions#The tears copy Isaac's tear effects#Recharges by shooting tears"}, -- Isaac's Tears {"324", "Undefined", "Teleports Isaac to the {{TreasureRoom}} Treasure, {{SecretRoom}} Secret, {{SuperSecretRoom}} Super Secret or {{ErrorRoom}} I AM ERROR Room"}, -- Undefined {"325", "Scissors", "{{Timer}} Isaac's head turns into a stationary familiar for the room#The body is controlled separately"}, -- Scissors @@ -384,7 +384,7 @@ EID.descriptions[languageCode].collectibles={ {"359", "8 Inch Nails", "↑ {{Damage}} +1.5 Damage#Increases knockback"}, -- 8 Inch Nails {"360", "Incubus", "Shoots tears with the same tear rate, damage and effects as Isaac"}, -- Incubus {"361", "Fate's Reward", "Shoots tears with the same damage and effects as Isaac#Shoots at half the rate of other familiars"}, -- Fate's Reward - {"362", "Lil Chest", "Spawns a random pickup every few rooms"}, -- Lil Chest + {"362", "Lil Chest", "35% chance to spawn a pickup every room"}, -- Lil Chest {"363", "Sworn Protector", "Orbital#Deals 105 contact damage per second#Blocks and attracts enemy shots#{{EternalHeart}} Blocking 10 shots in one room spawns an Eternal Heart"}, -- Sworn Protector {"364", "Friend Zone", "Midrange fly orbital#Deals 45 contact damage per second"}, -- Friend Zone {"365", "Lost Fly", "Moves along walls/obstacles#Deals 105 contact damage per second"}, -- Lost Fly @@ -492,7 +492,7 @@ EID.descriptions[languageCode].collectibles={ {"467", "Finger!", "{{Damage}} Constantly deals 10% of Isaac's damage in the direction it points"}, -- Finger! {"468", "Shade", "Follows Isaac's movement on a 1 second delay#Deals 30 contact damage per second#After it deals 600 damage, it is absorbed by Isaac, increasing his contact damage"}, -- Shade {"469", "Depression", "Leaves a trail of creep#The creep deals 6 damage per second#Enemies that touch the cloud can be hit by a holy light beam"}, -- Depression - {"470", "Hushy", "Bounces around the room#Deals contact damage#Stops moving when Isaac shoots#Blocks projectiles when stopped"}, -- Hushy + {"470", "Hushy", "Bounces around the room#Deals 30 contact damage per second#Stops moving when Isaac shoots#Blocks projectiles when stopped"}, -- Hushy {"471", "Lil Monstro", "{{Chargeable}} Charges a shotgun attack similar to {{Collectible229}} Monstro's Lung#Each tear deals 3.5 damage"}, -- Lil Monstro {"472", "King Baby", "Other familiars follow it#Stops moving when Isaac shoots#Teleports back to Isaac when he stops shooting"}, -- King Baby {"473", "Big Chubby", "Very slowly charges forwards#Blocks shots#Deals 40.5 contact damage per second"}, -- Big Chubby @@ -546,8 +546,8 @@ EID.descriptions[languageCode].collectibles={ {"521", "Coupon", "Makes one random item in the {{Shop}} Shop or {{DevilRoom}} Devil Room free#Holding the item guarantees one Shop item is on sale"}, -- Coupon {"522", "Telekinesis", "Stops all enemy projectiles that come close to Isaac for 3 seconds and throws them away from him afterwards"}, -- Telekinesis {"523", "Moving Box", "Stores all pickups and items from the current room#Using the item again drops everything back on the floor#Allows Isaac to move things between rooms"}, -- Moving Box - {"524", "Technology Zero", "Isaac's tears are connected with beams of electricity#The beams deal the same damage as Isaac"}, -- Technology Zero - {"525", "Leprosy", "Taking damage spawns a projectile blocking orbital#Caps at 3 orbitals#Orbitals are destroyed if they take too much damage"}, -- Leprosy + {"524", "Technology Zero", "Isaac's tears are connected with beams of electricity#The beams deal Isaac's damage"}, -- Technology Zero + {"525", "Leprosy", "Taking damage spawns a projectile blocking orbital#Caps at 3 orbitals#They deal 35 contact damage per second#Orbitals are destroyed if they take too much damage"}, -- Leprosy {"526", "7 Seals", "Spawns a small horseman familiar that spawns locusts#The horseman and its locust changes every 10 seconds"}, -- 7 Seals {"527", "Mr. ME!", "Displays a movable cursor for a few seconds, then summons a ghost that will, depending on the cursor position:#Open doors or chests#Fetch an item#50% chance to steal from the Shop / Devil#Attack an enemy until it dies#Explode walls, rocks, shopkeepers, angel statues, machines, beggars"}, -- Mr. ME! {"528", "Angelic Prism", "Orbital prism#Friendly tears hitting it split into 4"}, -- Angelic Prism @@ -644,6 +644,88 @@ EID.descriptions[languageCode].carBattery = { [550] = "Stops stomps for two rooms (or Boss Rush waves)", -- Broken Shovel } +-- Effect of BFFS! on Familiars +EID.descriptions[languageCode].BFFSSynergies = { + ["No Effect"] = "No effect", + ["5.100.8"] = {3.5, 7}, -- Brother Bobby + ["5.100.57"] = {75, 150}, -- Distant Admiration + ["5.100.67"] = {3.5, 7}, -- Sister Maggy + ["5.100.73"] = "Damage doubled", -- Cube of Meat + ["5.100.88"] = {52.5, 105}, -- Little Chubby + ["5.100.94"] = {"2", "1-2"}, -- Sack of Pennies + ["5.100.95"] = {3.5, 7}, -- Robo-Baby + ["5.100.96"] = {"3", "2-3"}, -- Little C.H.A.D. + ["5.100.98"] = {"5-6", "4-5"}, -- The Relic + ["5.100.99"] = {3.5, 7}, -- Little Gish + ["5.100.99"] = {3.5, 7}, -- Little Steven + ["5.100.112"] = {105, 210}, -- Guardian Angel + ["5.100.113"] = {3, 6}, -- Demon Baby + ["5.100.128"] = {30, 60}, -- Forever Alone + ["5.100.131"] = {"3", "2-3"}, -- Bomb Bag + ["5.100.144"] = {"3-4", "3"}, -- Bum Friend + ["5.100.155"] = {17, 34}, -- The Peeper + ["5.100.163"] = {3.5, 7}, -- Ghost Baby + ["5.100.167"] = {4, 8}, -- Harlequin Baby + ["5.100.170"] = {40, 80}, -- Daddy Longlegs + ["5.100.172"] = {225, 450}, -- Sacrificial Dagger + ["5.100.174"] = {"3-5", "6-10"}, -- Rainbow Baby + ["5.100.187"] = "Damage doubled", -- Guppy's Hairball + ["5.100.188"] = {3.5, 7, 7.5, 15}, -- Abel (includes Cain's Rep synergy) + ["5.100.206"] = {105, 210}, -- Guillotine + ["5.100.207"] = "Damage doubled", -- Ball of Bandages + ["5.100.264"] = {22.5, 45}, -- Smart Fly + ["5.100.266"] = "Spawns an extra Blue Spider", -- Juicy Sack + ["5.100.267"] = {3.5, 7}, -- Robo-Baby 2.0 + ["5.100.270"] = {3.2, 6.4}, -- Leech + ["5.100.271"] = {"5-6", "4-5"}, -- Mystery Sack + ["5.100.272"] = {60, 85}, -- BBF + ["5.100.273"] = {60, 85}, -- Bob's Brain + ["5.100.274"] = {75, 150}, -- Best Bud + ["5.100.275"] = {31.5, 63}, -- Lil Brimstone + ["5.100.277"] = {4, 8}, -- Lil Haunt + ["5.100.279"] = {30, 60}, -- Big Fan + ["5.100.318"] = {6, 12}, -- Gemini + ["5.100.319"] = {"Isaac's damage", "double {{CR}}Isaac's damage"}, -- Cain's Other Eye + ["5.100.320"] = {37.5, 75}, -- ???'s Only Friend + ["5.100.321"] = {10.7, 21.4}, -- Samson's Chains + ["5.100.322"] = {3.5, 7}, -- Mongo Baby + ["5.100.360"] = "Damage doubled", -- Incubus + ["5.100.361"] = "Damage doubled", -- Fate's Reward + ["5.100.362"] = {35, 44}, -- Lil Chest + ["5.100.363"] = {105, 210}, -- Sworn Protector + ["5.100.364"] = {45, 90}, -- Friend Zone + ["5.100.365"] = {105, 210}, -- Lost Fly + ["5.100.372"] = "Higher chance to spawn batteries", -- Charged Baby + ["5.100.384"] = {"5-90", "10-180"}, -- Lil Gurdy + ["5.100.385"] = "Damage doubled", -- Bumbo + ["5.100.388"] = "Spawns chests more often", -- Key Bum + ["5.100.389"] = {"5-6", "4-5"}, -- Rune Bag + ["5.100.390"] = {10, 20}, -- Seraphim + ["5.100.403"] = "Higher chance to spawn batteries", -- Spider Mod + ["5.100.405"] = {120, 240}, -- GB Bug + ["5.100.417"] = "The damaging aura gets bigger, but the damage up aura doesn't", -- Succubus + ["5.100.426"] = {30, 60}, -- Obsessed Fan + ["5.100.430"] = {"Isaac's damage", "double {{CR}}Isaac's damage"}, -- Papa Fly + ["5.100.435"] = {3.5, 7}, -- Lil Loki + ["5.100.468"] = {30, 60}, -- Shade + ["5.100.470"] = {30, 60}, -- Hushy + ["5.100.471"] = {3.5, 7}, -- Lil Monstro + ["5.100.473"] = {40.5, 81}, -- Big Chubby + ["5.100.491"] = {"3", "2-3"}, -- Acid Baby + ["5.100.500"] = {"5-6", "4-5"}, -- Sack of Sacks + ["5.100.508"] = {3, 6}, -- Mom's Razor + ["5.100.509"] = {3.5, 7, 30, 60}, -- Bloodshot Eye + ["5.100.511"] = {30, 60}, -- Angry Fly + ["5.100.518"] = "Damage doubled", -- Buddy in a Box + ["5.100.519"] = "Damage doubled", -- Lil Delirium + ["5.100.525"] = {35, 70}, -- Leprosy + ["5.100.526"] = "Horseman contact damage is doubled", -- 7 Seals + ["5.100.537"] = "Increases creep size, but not damage", -- Lil Spewer + ["5.100.539"] = "Spawns a champion variant of the enemy", -- Mystery Egg + ["5.100.544"] = {6, 12}, -- Pointy Rib + ["5.100.548"] = {7, 14}, -- Jaw Bone +} + ---------- Trinkets ---------- EID.descriptions[languageCode].trinkets={ @@ -836,6 +918,39 @@ EID.descriptions[languageCode].cards={ {"54", "Era Walk", "{{Timer}} Receive for the room:#↑ {{Speed}} +0.5 Speed#↓ {{Shotspeed}} -1 Shot speed#{{Slow}} Slow down enemies"}, -- Era Walk } +--[[ Card Buffs caused by Tarot Cloth (separate table from Rep due to how different they are) +-- Strings will be appended to the original description (with line breaks replaced with a Tarot Cloth icon) +-- Tables with one entry will completely replace the original description +-- Tables with two or more entries are find-replace pairs (the new text will be colored Shiny Purple) ]] +EID.descriptions[languageCode].tarotClothBuffsAB = { + [4] = {0.3, 0.6, 1.5, 3}, -- III - The Empress + [6] = {2, 4}, -- V - The Hierophant + [7] = {2, 4}, -- VI - The Lovers + [8] = {6, 12}, -- VII - The Chariot + [9] = {"Spawns {{ColorShinyPurple}}2{{CR}} random {{UnknownHeart}} hearts, {{Coin}} coins, {{Bomb}} bombs and {{Key}} keys"}, -- VIII - Justice + [11] = {" a ", " 2 ", "Machine", "{{CR}}Machines", "Machine", "{{CR}}Machines"}, -- X - Wheel of Fortune + [12] = {1, 2, 0.3, 0.6, 0.3, 0.6, 5.25, 10.5}, -- XI - Strength + [14] = {40, 80}, -- XIII - Death + [15] = {" a ", " 2 ", "Machine", "{{CR}}Machines", "Devil Beggar", "{{CR}}Devil Beggars"}, -- XIV - Temperance (+ Greed version) + [17] = {6, 12}, -- XVI - The Tower + [20] = {100, 200}, -- XIX - The Sun + [21] = {" a ", " 2 ", "Beggar", "{{CR}}Beggars", "Devil Beggar", "{{CR}}Devil Beggars"}, -- XX - Judgement + [23] = {"Doubles", "Quadruples"}, -- 2 of Clubs + [24] = {"Doubles", "Quadruples"}, -- 2 of Diamonds + [25] = {"Doubles", "Quadruples"}, -- 2 of Spades + [26] = {"Doubles", "Quadruples"}, -- 2 of Hearts + [33] = {"Doubles", "Quadruples"}, -- Jera + [35] = {1, 2}, -- Dagaz + [37] = "Rerolls twice", -- Perthro + [38] = {3, 6, 3, 6}, -- Berkano + [39] = {30, 60}, -- Algiz + [40] = "Triggers 2 rune effects and tries to duplicate itself twice", -- Blank Rune + [41] = {40, 80}, -- Black Rune + [46] = {10, 20}, -- Suicide King + [48] = "Uses it twice", -- ? Card + [53] = {3, 6}, -- Ancient Recall +} + ---------- Pills ---------- EID.descriptions[languageCode].unidentifiedPill = "Unidentified Pill" @@ -890,6 +1005,32 @@ EID.descriptions[languageCode].pills={ {"46", "Vurp!", "Spawns the last pill used before Vurp!"}, -- Vurp! } +---------- Character Info ---------- +-- TODO: make these more consistent with other descs, add icons, and is there any traits of the characters missing? +-- Soon, these descriptions, along with their starting item descriptions, will be in a tab in the Item Reminder +-- The character names here are also used in getPlayerName to provide localized character names +-- The numbers are provided to make this a quick reference for Player IDs +EID.descriptions[languageCode].CharacterInfo = { + [0] = {"Isaac", ""}, + [1] = {"Magdalene", ""}, + [2] = {"Cain", ""}, + [3] = {"Judas", ""}, + [4] = {"???", "Can't have Red Hearts"}, + [5] = {"Eve", "Eve's Whore of Babylon triggers at 1 Red Heart or less"}, --this could just be desc modifier? + [6] = {"Samson", ""}, + [7] = {"Azazel", "Flight#Short range Brimstone instead of tears"}, + [8] = {"Lazarus", "When you die, resurrect as Lazarus Risen with 1 Red Heart container"}, + [9] = {"Eden", "Start with random stats and items each run"}, + [10] = {"The Lost", "Flight#Spectral tears#No health#One devil deal per room can be taken for free"}, + [11] = {"Lazarus Risen", "Increased stats and x1.2 damage multiplier"}, + [12] = {"Dark Judas", "x2 Damage multiplier"}, + [13] = {"Lilith", "Cannot shoot tears"}, + [14] = {"Keeper", "Heal by picking up coins#Heart pickups are turned into Blue Flies"}, + [15] = {"Apollyon", ""}, + [16] = {"The Forgotten", "You have a melee attack#Can have up to 6 Bone Hearts#Press {{ButtonRT}} to switch to The Soul#The Soul can have up to 6 Soul/Black Hearts and has flight and spectral tears#The Soul is chained to The Forgotten, and can only move in a small radius around him"}, + [17] = {"The Forgotten Soul", "You have a melee attack#Can have up to 6 Bone Hearts#Press {{ButtonRT}} to switch to The Soul#The Soul can have up to 6 Soul/Black Hearts and has flight and spectral tears#The Soul is chained to The Forgotten, and can only move in a small radius around him"}, +} + ---------- Sacrifice Room ---------- EID.descriptions[languageCode].sacrificeHeader = "[Next Sacrifice Room payout]" @@ -969,7 +1110,8 @@ EID.descriptions[languageCode].ItemReminder = { Actives = "Held active items", Pockets = "Held pocket items", Trinkets = "Held Trinkets", - Passives = "Held passive items" + Passives = "Held passive items", + Character = "Character Info" } } @@ -1010,40 +1152,7 @@ EID.descriptions[languageCode].PickupNames = { } --- Card Buffs caused by Tarot Cloth (separate table from Rep due to how different they are) --- Strings will be appended to the original description (with line breaks replaced with a Tarot Cloth icon) --- Tables with one entry will completely replace the original description --- Tables with two or more entries are find-replace pairs (the new text will be colored Shiny Purple) -EID.descriptions[languageCode].tarotClothBuffsAB = { - [4] = {0.3, 0.6, 1.5, 3}, -- III - The Empress - [6] = {2, 4}, -- V - The Hierophant - [7] = {2, 4}, -- VI - The Lovers - [8] = {6, 12}, -- VII - The Chariot - [9] = {"Spawns {{ColorShinyPurple}}2{{CR}} random {{UnknownHeart}} hearts, {{Coin}} coins, {{Bomb}} bombs and {{Key}} keys"}, -- VIII - Justice - [11] = {" a ", " 2 ", "Machine", "{{CR}}Machines", "Machine", "{{CR}}Machines"}, -- X - Wheel of Fortune - [12] = {1, 2, 0.3, 0.6, 0.3, 0.6, 5.25, 10.5}, -- XI - Strength - [14] = {40, 80}, -- XIII - Death - [15] = {" a ", " 2 ", "Machine", "{{CR}}Machines", "Devil Beggar", "{{CR}}Devil Beggars"}, -- XIV - Temperance (+ Greed version) - [17] = {6, 12}, -- XVI - The Tower - [20] = {100, 200}, -- XIX - The Sun - [21] = {" a ", " 2 ", "Beggar", "{{CR}}Beggars", "Devil Beggar", "{{CR}}Devil Beggars"}, -- XX - Judgement - [23] = {"Doubles", "Quadruples"}, -- 2 of Clubs - [24] = {"Doubles", "Quadruples"}, -- 2 of Diamonds - [25] = {"Doubles", "Quadruples"}, -- 2 of Spades - [26] = {"Doubles", "Quadruples"}, -- 2 of Hearts - [33] = {"Doubles", "Quadruples"}, -- Jera - [35] = {1, 2}, -- Dagaz - [37] = "Rerolls twice", -- Perthro - [38] = {3, 6, 3, 6}, -- Berkano - [39] = {30, 60}, -- Algiz - [40] = "Triggers 2 rune effects and tries to duplicate itself twice", -- Blank Rune - [41] = {40, 80}, -- Black Rune - [46] = {10, 20}, -- Suicide King - [48] = "Uses it twice", -- ? Card - [53] = {3, 6}, -- Ancient Recall -} - --- Conditional descriptions +-- Conditional descriptions - DO NOT TRANSLATE THE FIRST PART IN ["BRACKETS"] -- Strings will be appended to the original description -- Tables with one entry will completely replace the original description -- Tables with two or more entries are find-replace pairs @@ -1051,15 +1160,17 @@ EID.descriptions[languageCode].tarotClothBuffsAB = { EID.descriptions[languageCode].ConditionalDescs = { ["Overridden"] = "Overridden by {1}", ["Overrides"] = "Overrides {1}", + ["Almost No Effect"] = "Little to no effect for {1}", ["No Effect"] = "No effect for {1}", ["Can't Charge"] = "Can't charge {1}", ["Can't Be Charged"] = "Can't be charged by {1}", ["No Effect (Greed)"] = "{{GreedMode}} No effect in Greed Mode", + ["No Effect (Copies)"] = "No additional effect from multiple copies", -- Having the item already, or having Diplopia while looking at a pedestal ["No Red"] = "No effect for characters that can't have Red Hearts", ["5.100.81"] = "Characters that can't have Red Hearts get set to 1 Soul/Black Heart", -- Dead Cat - ["5.100.7"] = "x1.5 Damage multiplier while \"The Book of Belial\" or \"XV - The Devil\" effect is active", -- Blood of the Martyr + ["5.100.7"] = "x1.5 Damage multiplier while {1} effect is active", -- Blood of the Martyr ["5.100.34"] = "x1.5 Damage multiplier", -- Book of Belial ["5.300.16"] = "x1.5 Damage multiplier", -- XV - The Devil @@ -1088,42 +1199,10 @@ EID.descriptions[languageCode].ConditionalDescs = { ["1 Room"] = "15 Second recharge while in an uncleared room", -- Actives + 9 Volt ["Timed"] = "Charge starts half full after use", -- Actives + 9 Volt ["5.100.208"] = {20, 35, 5, 20}, -- Champion Belt + Hard Mode + + ["Suicide 1"] = "{1} can't prevent the death", -- Plan C, Damocles, Suicide King + ["Suicide 2"] = "Does not prevent death by {1}", -- Plan C, Damocles, Suicide King } -EID.descriptions[languageCode].BFFSSynergies = { - ["NoEffect"] = "No effect", - ["DoubleDamage"] = "Damage doubled", - ["5.100.94"] = "Drops coins in a repeating pattern of 1, 2, 2 then 2 rooms", -- Sack of Pennies - ["5.100.131"] = "Drops bombs in a repeating pattern of 2, 2 then 3 rooms", -- Bomb Bag - ["5.100.273"] = "Doubles impact damage and increases explosive damage by 25", -- Bob's Brain - ["5.100.266"] = "Spawns an extra Blue Spider", -- Juicy Sack - ["5.100.360"] = "Shoots tears that deal 200% of your damage", -- Incubus - ["5.100.417"] = "Increases radius, but not damage", -- Succubus - ["5.100.537"] = "Increases pool size, but not damage", -- Lil Spewer - ["5.100.539"] = "Spawns a champion variant of the enemy", -- Mystery Egg -} --- TODO: make these more consistent with other descs, add icons, and is there any traits of the characters missing? --- Soon, these descriptions, along with their starting item descriptions, will be in a tab in the Item Reminder --- The character names here are also used in getPlayerName to provide localized character names --- The numbers are provided to make this a quick reference for Player IDs -EID.descriptions[languageCode].CharacterInfo = { - [0] = {"Isaac", ""}, - [1] = {"Magdalene", ""}, - [2] = {"Cain", ""}, - [3] = {"Judas", ""}, - [4] = {"???", "Can't have Red Hearts"}, - [5] = {"Eve", "Eve's Whore of Babylon triggers at 1 Red Heart or less"}, --this could just be desc modifier? - [6] = {"Samson", ""}, - [7] = {"Azazel", "Flight#Short range Brimstone instead of tears"}, - [8] = {"Lazarus", "When you die, resurrect as Lazarus Risen with 1 Red Heart container"}, - [9] = {"Eden", "Start with random stats and items each run"}, - [10] = {"The Lost", "Flight#Spectral tears#No health#One devil deal per room can be taken for free"}, - [11] = {"Lazarus Risen", "Increased stats and x1.2 damage multiplier"}, - [12] = {"Dark Judas", "x2 Damage multiplier"}, - [13] = {"Lilith", "Cannot shoot tears"}, - [14] = {"Keeper", "Heal by picking up coins#Heart pickups are turned into Blue Flies"}, - [15] = {"Apollyon", ""}, - [16] = {"The Forgotten", "You have a melee attack#Can have up to 6 Bone Hearts#Press {{ButtonRT}} to switch to The Soul#The Soul can have up to 6 Soul/Black Hearts and has flight and spectral tears#The Soul is chained to The Forgotten, and can only move in a small radius around him"}, - [17] = {"The Forgotten Soul", "You have a melee attack#Can have up to 6 Bone Hearts#Press {{ButtonRT}} to switch to The Soul#The Soul can have up to 6 Soul/Black Hearts and has flight and spectral tears#The Soul is chained to The Forgotten, and can only move in a small radius around him"}, -} + diff --git a/descriptions/ab+/fr.lua b/descriptions/ab+/fr.lua index 92fcc71b..88e249dd 100644 --- a/descriptions/ab+/fr.lua +++ b/descriptions/ab+/fr.lua @@ -1014,7 +1014,7 @@ EID.descriptions[languageCode].ConditionalDescs = { } EID.descriptions[languageCode].BFFSSynergies = { - ["NoEffect"] = "Aucun effet", + ["No Effect"] = "Aucun effet", ["DoubleDamage"] = "Double les dégâts infligés", ["5.100.273"] = "Augmente les dégâts de contact et de l'explosion", -- Bob's Brain ["5.100.266"] = "Invoque une araignée bleue supplémentaire", -- Juicy Sack @@ -1022,4 +1022,4 @@ EID.descriptions[languageCode].BFFSSynergies = { ["5.100.417"] = "Augmente la taille de l'aura mais pas ses dégâts", -- Succubus ["5.100.537"] = "Augmente la taille de la flaque mais pas ses dégâts", -- Lil Spewer ["5.100.539"] = "L'ennemi invoqué est un ennemi d'élite", -- Mystery Egg -} \ No newline at end of file +} diff --git a/descriptions/ab+/ko_kr.lua b/descriptions/ab+/ko_kr.lua index d8c2aa88..d1b40fae 100644 --- a/descriptions/ab+/ko_kr.lua +++ b/descriptions/ab+/ko_kr.lua @@ -1107,7 +1107,7 @@ EID.descriptions[languageCode].ConditionalDescs = { } EID.descriptions[languageCode].BFFSSynergies = { - ["NoEffect"] = "(효과 없음)", + ["No Effect"] = "(효과 없음)", ["DoubleDamage"] = "피해량 x2", ["5.100.94"] = "요구되는 방 클리어 수 감소 (1 > 2 > 2 > 2 순환)", -- Sack of Pennies ["5.100.96"] = "요구되는 방 클리어 수 감소 (2 > 2 > 3 순환)", -- Little C.H.A.D. @@ -1146,4 +1146,4 @@ EID.descriptions[languageCode].CharacterInfo = { [15] = {"Apollyon", ""}, [16] = {"The Forgotten", "{{Chargeable}} 공격 키로 뼈를 휘두르며 충전 시 충전 거리만큼 뼈다귀를 부메랑처럼 던질 수 있습니다.#{{BoneHeart}} 최대 체력 = 뼈하트의 보정을 받으며 6칸의 상한을 가집니다.#{{ButtonRT}} (Ctrl)키로 영혼과 교체할 수 있으며 영혼은 지형 관통 눈물을 발사합니다.{{SoulHeart}} 최대 체력 = 소울하트의 보정을 받으며 6칸의 상한을 가집니다.#영혼은 날아다닐 수 있으나 본체로부터 멀리 떨어질 수 없습니다."}, [17] = {"The Forgotten Soul", "{{Chargeable}} 공격 키로 뼈를 휘두르며 충전 시 충전 거리만큼 뼈다귀를 부메랑처럼 던질 수 있습니다.#{{BoneHeart}} 최대 체력 = 뼈하트의 보정을 받으며 6칸의 상한을 가집니다.#{{ButtonRT}} (Ctrl)키로 영혼과 교체할 수 있으며 영혼은 지형 관통 눈물을 발사합니다.{{SoulHeart}} 최대 체력 = 소울하트의 보정을 받으며 6칸의 상한을 가집니다.#영혼은 날아다닐 수 있으나 본체로부터 멀리 떨어질 수 없습니다."}, -} \ No newline at end of file +} diff --git a/descriptions/rep/en_us.lua b/descriptions/rep/en_us.lua index 7eced84c..fd6947aa 100644 --- a/descriptions/rep/en_us.lua +++ b/descriptions/rep/en_us.lua @@ -33,7 +33,7 @@ local repCollectibles={ [41] = {"41", "Mom's Pad", "{{Fear}} Fears all enemies in the room for 5 seconds#Spawns a blue fly"}, -- Mom's Pad [42] = {"42", "Bob's Rotten Head", "Using the item and firing in a direction throws the head#{{Poison}} The head explodes where it lands and creates a poison cloud#Deals Isaac's damage + 185"}, -- Bob's Rotten Head [46] = {"46", "Lucky Foot", "↑ {{Luck}} +1 Luck#Better chance to win while gambling#Increases room clearing drop chance#Turns bad pills into good ones"}, -- Lucky Foot - [49] = {"49", "Shoop da Whoop!", "The next shot is replaced with a beam#{{Damage}} It deals 24x Isaac's damage over 0.83 seconds"}, -- Shoop da Whoop! + [49] = {"49", "Shoop da Whoop!", "The next shot is replaced with a beam#It deals 24x Isaac's damage over 0.83 seconds"}, -- Shoop da Whoop! [52] = {"52", "Dr. Fetus", "↓ {{Tears}} x0.4 Fire rate multiplier#{{Bomb}} Isaac shoots bombs instead of tears#{{Damage}} Those bombs deal 10x Isaac's tear damage#If that results in over 60 damage, they instead deal 5x damage +30"}, -- Dr. Fetus [53] = {"53", "Magneto", "Pickups are attracted to Isaac#Opens chests from 2 tiles away, ignoring damage of Spike Chests"}, -- Magneto [55] = {"55", "Mom's Eye", "50% chance to shoot an extra tear backwards#{{Luck}} 100% chance at 5 luck"}, -- Mom's Eye @@ -84,7 +84,6 @@ local repCollectibles={ [182] = {"182", "Sacred Heart", "↑ {{Heart}} +1 Health#↑ {{Damage}} x2.3 Damage multiplier#↑ {{Damage}} +1 Damage#↓ {{Tears}} -0.4 Tears#↓ {{Shotspeed}} -0.25 Shot speed#{{Heart}} Full health#Homing tears"}, -- Sacred Heart [184] = {"184", "Holy Grail", "↑ {{Heart}} +1 Health#{{Heart}} Heals 1 heart#Flight"}, -- Holy Grail [186] = {"186", "Blood Rights", "Deals 40 damage to every enemy#{{Warning}} Deals 1 heart of damage to Isaac#After the first use in a room, deals half a heart instead#{{Heart}} Removes Red Hearts first"}, -- Blood Rights - [188] = {"188", "Abel", "Mirrors Isaac's movement#Shoots towards Isaac#Deals 3.5 damage per tear"}, -- Abel [189] = {"189", "SMB Super Fan", "↑ {{Heart}} +1 Health#↑ {{Speed}} +0.2 Speed#↑ {{Tears}} +0.2 Tears#↑ {{Damage}} +0.3 Damage#↑ {{Range}} +2.5 Range#{{Heart}} Full health"}, -- SMB Super Fan [192] = {"192", "Telepathy for Dummies", "{{Timer}} Receive for the room:#↑ {{Range}} +3 Range#Homing tears"}, -- Telepathy for Dummies [193] = {"193", "MEAT!", "↑ {{Heart}} +1 Health#↑ {{Damage}} +0.3 Damage#{{Heart}} Heals 1 heart"}, -- MEAT! @@ -92,7 +91,7 @@ local repCollectibles={ [197] = {"197", "Jesus Juice", "↑ {{Damage}} +0.5 Damage#↑ {{Range}} +1.5 Range"}, -- Jesus Juice [203] = {"203", "Humbleing Bundle", "Pickups have a 50% chance to be doubled"}, -- Humbleing Bundle [205] = {"205", "Sharp Plug", "{{Battery}} Using an uncharged active item fully recharges it at the cost of half a heart per missing charge#{{Heart}} Removes Red Hearts first"}, -- Sharp Plug - [206] = {"206", "Guillotine", "↑ {{Tears}} +0.5 Fire rate#↑ {{Damage}} +1 Damage#Isaac's head becomes an orbital that shoots, doesn't take damage and deals 65 contact damage per second"}, -- Guillotine + [206] = {"206", "Guillotine", "↑ {{Tears}} +0.5 Fire rate#↑ {{Damage}} +1 Damage#Isaac's head becomes an orbital that shoots, doesn't take damage and deals 56 contact damage per second"}, -- Guillotine [211] = {"211", "Spiderbaby", "Taking damage spawns 3-5 blue spiders"}, -- Spiderbaby [214] = {"214", "Anemic", "↑ {{Range}} +1.5 Range#{{Timer}} When taking damage Isaac leaves a trail of blood creep for the room"}, -- Anemic [218] = {"218", "Placenta", "↑ {{Heart}} +1 Health#{{Heart}} Heals 1 heart#{{HalfHeart}} 50% chance to heal half a heart every minute"}, -- Placenta @@ -115,9 +114,10 @@ local repCollectibles={ [262] = {"262", "Missing Page 2", "{{BlackHeart}} +1 Black Heart#Taking damage down to 1 heart damages all enemies in the room#{{Collectible35}} Black Hearts and Necronomicon-like effects deal double damage"}, -- Missing Page 2 [263] = {"263", "Clear Rune", "{{Rune}} Spawns 1 rune on pickup#{{Rune}} Triggers the effect of the rune Isaac holds without using it"}, -- Clear Rune (Repentance item) [264] = {"264", "Smart Fly", "Orbital#Attacks enemies when Isaac takes damage#Deals 6.5 damage per second"}, -- Smart Fly + [272] = {"272", "BBF", "Friendly exploding fly#The explosion deals 100 damage#{{Warning}} The explosion can hurt Isaac"}, -- BBF [273] = {"273", "Bob's Brain", "Dashes in the direction Isaac is shooting#Explodes when it hits an enemy#{{Poison}} The explosion deals 100 damage, ignores boss armor and poisons enemies#{{Warning}} The explosion can hurt Isaac"}, -- Bob's Brain [274] = {"274", "Best Bud", "Taking damage spawns one midrange orbital for the room#The orbital deals 150 damage per second"}, -- Best Bud - [275] = {"275", "Lil Brimstone", "{{Chargeable}} Familiar that charges and shoots a {{Collectible118}} blood beam#Deals 3 damage per tick, for a total of 24 damage"}, -- Lil Brimstone + [275] = {"275", "Lil Brimstone", "{{Chargeable}} Familiar that charges and shoots a {{Collectible118}} blood beam#It deals 24 damage over 0.63 seconds"}, -- Lil Brimstone [276] = {"276", "Isaac's Heart", "Isaac becomes invincible#Spawns a heart familiar that follows Isaac#The heart charges up when Isaac fires and releases a burst of tears when he stops#{{Warning}} If the heart familiar gets hit, Isaac takes damage"}, -- Isaac's Heart [278] = {"278", "Dark Bum", "{{Heart}} Picks up nearby Red Hearts#Spawns a Black Heart, rune, card, pill, or spider for every 1.5 hearts picked up"}, -- Dark Bum [280] = {"280", "Sissy Longlegs", "Randomly spawns blue spiders in hostile rooms#{{Charm}} Charms enemies it comes in contact with"}, -- Sissy Longlegs @@ -140,7 +140,7 @@ local repCollectibles={ [307] = {"307", "Capricorn", "↑ {{Heart}} +1 Health#↑ {{Speed}} +0.1 Speed#↑ {{Tears}} +0.5 Fire rate#↑ {{Damage}} +0.5 Damage#↑ {{Range}} +0.75 Range#+1 {{Coin}} coin, {{Bomb}} bomb and {{Key}} key"}, -- Capricorn [308] = {"308", "Aquarius", "Isaac leaves a trail of creep#{{Damage}} The creep deals 66% of Isaac's damage per second and inherits his tear effects"}, -- Aquarius [309] = {"309", "Pisces", "↑ {{Tears}} +0.5 Fire rate#↑ {{Tearsize}} +0.12 Tear size#Increases tear knockback"}, -- Pisces - [310] = {"310", "Eve's Mascara", "↑ {{Damage}} x2 Damage multiplier#↓ {{Tears}} x0.66 Tear multiplier#↓ {{Shotspeed}} -0.5 Shot speed"}, -- Eve's Mascara + [310] = {"310", "Eve's Mascara", "↑ {{Damage}} x2 Damage multiplier#↓ {{Tears}} x0.66 Tears multiplier#↓ {{Shotspeed}} -0.5 Shot speed"}, -- Eve's Mascara [314] = {"314", "Thunder Thighs", "↑ {{Heart}} +1 Health#↓ {{Speed}} -0.4 Speed#{{Heart}} Heals 1 heart#Isaac can destroy rocks by walking into them"}, -- Thunder Thighs [315] = {"315", "Strange Attractor", "Isaac's tears attract enemies, pickups and trinkets#The attraction effect is much stronger at the end of the tears' path"}, -- Strange Attractor [316] = {"316", "Cursed Eye", "Charged wave of 5 tears#{{Warning}} Taking damage while partially charged teleports Isaac to a random room"}, -- Cursed Eye @@ -165,7 +165,7 @@ local repCollectibles={ [365] = {"365", "Lost Fly", "Moves along walls/obstacles in the room#Deals 30 contact damage per second#Nearby enemies target the fly"}, -- Lost Fly [366] = {"366", "Scatter Bombs", "{{Bomb}} +5 Bombs#Isaac's bombs scatter into 4-5 tiny bombs"}, -- Scatter Bombs [367] = {"367", "Sticky Bombs", "{{Bomb}} +5 Bombs#{{Slow}} Isaac's bombs stick to enemies and leave white slowing creep#Killing an enemy with a bomb spawns blue spiders"}, -- Sticky Bombs - [368] = {"368", "Epiphora", "↑ {{Tears}} Shooting in one direction gradually increases fire rate up to 200%"}, -- Epiphora + [368] = {"368", "Epiphora", "↑ {{Tears}} Shooting in one direction gradually increases fire rate up to 200% and decreases accuracy"}, -- Epiphora [369] = {"369", "Continuum", "↑ {{Range}} +3 Range#Spectral tears#Tears can travel through one side of the screen and come out the other side"}, -- Continuum [370] = {"370", "Mr. Dolly", "↑ {{Tears}} +0.7 Tears#↑ {{Range}} +2.5 Range#{{UnknownHeart}} Spawns 3 random hearts"}, -- Mr. Dolly [374] = {"374", "Holy Light", "10% chance to shoot holy tears, which spawn a beam of light on hit#{{Luck}} 50% chance at 9 luck#{{Damage}} The beams deals 3x Isaac's damage"}, -- Holy Light @@ -173,7 +173,7 @@ local repCollectibles={ [376] = {"376", "Restock", "Buying an item from a Shop restocks it instantly#Restocked items increase in price each time"}, -- Restock [380] = {"380", "Pay To Play", "{{Coin}} +5 Coins#Locked blocks, doors and chests must be opened with coins instead of keys"}, -- Pay To Play [382] = {"382", "Friendly Ball", "Can be thrown at enemies to capture them#Using the item after capturing an enemy spawns the capture as a friendly companion#Walking over the ball after a capture instantly recharges the item"}, -- Friendly Ball - [384] = {"384", "Lil Gurdy", "{{Chargeable}} Launches and bounces around the room with speed based on charge amount#Deals 5-25 contact damage per hit depending on speed"}, -- Lil Gurdy + [384] = {"384", "Lil Gurdy", "{{Chargeable}} Launches and bounces around the room with speed based on charge amount#Deals 5-20 contact damage per hit depending on speed"}, -- Lil Gurdy [386] = {"386", "D12", "Rerolls any obstacle into another random obstacle (e.g. poop, pots, TNT, red poop, stone blocks etc.)#Small chance to reroll obstacles into buttons, killswitches, crawlspaces or trapdoors"}, -- D12 [389] = {"389", "Rune Bag", "{{Rune}} Spawns a random rune or Soul Stone every 7-8 rooms"}, -- Rune Bag [391] = {"391", "Betrayal", "Enemies can hit each other with their projectiles, and start infighting"}, -- Betrayal @@ -181,12 +181,12 @@ local repCollectibles={ [394] = {"394", "Marked", "↑ {{Tears}} +0.7 Tears#↑ {{Range}} +3 Range#Isaac automatically shoots tears at a movable red target on the ground#Familiars shoot towards the target too#You can stop shooting and reset the target's location by pressing the drop button ({{ButtonRT}})"}, -- Marked [395] = {"395", "Tech X", "Isaac's tears are replaced by a chargeable laser ring#Ring size and damage increases up to 100% with charge time"}, -- Tech X [397] = {"397", "Tractor Beam", "↑ {{Tears}} +1 Fire rate#↑ {{Range}} +2.5 Range#↑ {{Shotspeed}} +0.16 Shot speed#Isaac's tears always travel along a beam of light in front of him"}, -- Tractor Beam - [399] = {"399", "Maw of the Void", "{{Chargeable}} Firing tears for 2.35 seconds and releasing the fire button creates a black brimstone ring around Isaac"}, -- Maw of the Void + [399] = {"399", "Maw of the Void", "{{Chargeable}} Firing tears for 2.35 seconds and releasing the fire button creates a black brimstone ring around Isaac#It deals 30x Isaac's damage over 2 seconds"}, -- Maw of the Void [401] = {"401", "Explosivo", "25% chance to shoot sticky tears#Sticky tears grow and explode after a few seconds, dealing Isaac's damage +60"}, -- Explosivo [404] = {"404", "Farting Baby", "Blocks projectiles#When hit, 10% chance to fart and {{Charm}} charm, {{Poison}} poison or knockback enemies#The farts deal 5-6 damage"}, -- Farting Baby [405] = {"405", "GB Bug", "{{Throwable}} Throwable (double-tap shoot)#Rerolls enemies and pickups it comes in contact with"}, -- GB Bug [407] = {"407", "Purity", "↑ Boosts one of Isaac's stats depending on the color of the aura#Taking damage removes the effect, and grants a new effect in the next room#{{ColorYellow}}Yellow{{CR}} = ↑ {{Speed}} +0.5 Speed#{{ColorBlue}}Blue{{CR}} = ↑ {{Tears}} +2 Fire rate#{{ColorRed}}Red{{CR}} = ↑ {{Damage}} +4 Damage#{{ColorOrange}}Orange{{CR}} = ↑ {{Range}} +3 Range"}, -- Purity - [408] = {"408", "Athame", "25% chance for a black brimstone ring to spawn around killed enemies#{{Luck}} +2.5% chance per luck"}, -- Athame + [408] = {"408", "Athame", "25% chance for a black brimstone ring to spawn around killed enemies#It deals 30x Isaac's damage over 2 seconds#{{Luck}} +2.5% chance per luck"}, -- Athame [415] = {"415", "Crown Of Light", "{{SoulHeart}} +2 Soul Hearts#If Isaac has no damaged heart containers:#↑ {{Damage}} x2 Damage multiplier#↓ {{Shotspeed}} -0.3 Shot speed#Taking any damage removes the effect for the room"}, -- Crown Of Light [416] = {"416", "Deep Pockets", "{{Coin}} If clearing a room would yield no reward, spawns 1-3 coins#{{Coin}} Increases the coin cap to 999"}, -- Deep Pockets [417] = {"417", "Succubus", "Bounces around the room surrounded by a damaging aura that deals 7.5-10 damage per second#↑ {{Damage}} x1.5 Damage multiplier while standing in the aura"}, -- Succubus @@ -211,7 +211,7 @@ local repCollectibles={ [459] = {"459", "Sinus Infection", "20% chance to shoot a sticky booger#{{Damage}} Boogers deal Isaac's damage once a second and stick for 10 seconds#{{Luck}} Not affected by luck"}, -- Sinus Infection [462] = {"462", "Eye of Belial", "↑ {{Range}} +1.5 Range#Piercing tears#Hitting an enemy makes the tear homing and doubles its damage"}, -- Eye of Belial [464] = {"464", "Glyph of Balance", "{{SoulHeart}} +2 Soul Hearts#Room clear rewards and champion enemy drops become whatever pickup Isaac needs the most"}, -- Glyph of Balance - [468] = {"468", "Shade", "Follows Isaac's movement on a 1 second delay#Deals 75 contact damage per second#After it deals 666 damage, it is absorbed by Isaac, increasing his contact damage"}, -- Shade + [468] = {"468", "Shade", "Follows Isaac's movement on a 0.66 second delay#Deals 75 contact damage per second#After it deals 666 damage, it is absorbed by Isaac, increasing his contact damage"}, -- Shade [472] = {"472", "King Baby", "Other familiars follow it and automatically shoot at enemies#Stops moving when Isaac shoots#Teleports back to Isaac when he stops shooting"}, -- King Baby [474] = {"474", "Broken Glass Cannon", "Using the item turns it back into Glass Cannon"}, -- Broken Glass Cannon [476] = {"476", "D1", "Duplicates a random pickup in the room#Duplicated pickups may not be identical to the original"}, -- D1 @@ -224,6 +224,7 @@ local repCollectibles={ [495] = {"495", "Ghost Pepper", "8.33% chance to shoot a blue fire that blocks enemy shots and deals contact damage#{{Luck}} 50% chance at 10 luck#Fires shrink and disappear after 2 seconds"}, -- Ghost Pepper [496] = {"496", "Euthanasia", "3.33% chance to shoot a needle#{{Luck}} 25% chance at 13 luck#Needles kill normal enemies instantly, bursting them into 10 tears#{{Damage}} Needles deal 3x Isaac's damage against bosses"}, -- Euthanasia [497] = {"497", "Camo Undies", "{{Confusion}} Entering a room camouflages Isaac and confuses all enemies until a tear is shot#↑ {{Speed}} +0.5 Speed while cloaked#Uncloaking deals damage around Isaac and grants a very brief fire rate and damage up"}, -- Camo Undies + [500] = {"500", "Sack of Sacks", "Spawns a sack every 7-8 rooms"}, -- Sack of Sacks [501] = {"501", "Greed's Gullet", "{{Heart}} +1 Heart container for every 25 coins Isaac has"}, -- Greed's Gullet [503] = {"503", "Little Horn", "5% chance to shoot a tear that summons a Big Horn hand#{{Luck}} 20% chance at 15 luck#The hand instantly kills enemies and deals 36 damage to bosses#Isaac deals 7 contact damage per second"}, -- Little Horn [504] = {"504", "Brown Nugget", "Spawns a fly that shoots at enemies#Each shot deals 3.5 damage"}, -- Brown Nugget @@ -262,9 +263,9 @@ local repCollectibles={ [572] = {"572", "Eye of the Occult", "↑ {{Damage}} +1 Damage#↑ {{Range}} +2 Range#↓ {{Shotspeed}} -0.16 Shot speed#Isaac's tears can be controlled in mid-air"}, -- Eye of the Occult [573] = {"573", "Immaculate Heart", "↑ {{Heart}} +1 Health#↑ {{Damage}} x1.2 Damage multiplier#{{Heart}} Full health#20% chance to shoot an extra orbiting spectral tear"}, -- Immaculate Heart [574] = {"574", "Monstrance", "Isaac is surrounded by a damaging aura#The closer enemies are to Isaac, the more damage the aura deals to them"}, -- Monstrance - [575] = {"575", "The Intruder", "{{Slow}} Buries itself in Isaac's head and shoots 4 extra slowing tears#Taking damage can make the spider exit the head and chase enemies"}, -- The Intruder + [575] = {"575", "The Intruder", "{{Slow}} Buries itself in Isaac's head and shoots 4 extra slowing tears that deal 1.5 damage#Taking damage can make the spider exit the head and chase enemies"}, -- The Intruder [576] = {"576", "Dirty Mind", "All Dip (small poop) enemies are friendly#Destroying poop spawns 1-4 Dips#Dip type depends on the poop type#Rocks may be replaced with poop"}, -- Dirty Mind - [577] = {"577", "Damocles", "{{Warning}} SINGLE USE {{Warning}}#Hangs a sword above Isaac's head, which doubles all pedestal items#Does not double items that have a price or come from chests#{{Warning}} After taking any damage, the sword has an extremely low chance to instantly kill Isaac every frame"}, -- Damocles + [577] = {"577", "Damocles", "{{Warning}} SINGLE USE {{Warning}}#Hangs a sword above Isaac's head, which doubles all pedestal items#Does not double items that have a price or come from chests#{{Warning}} After taking any damage, the sword has an extremely low chance to instantly kill Isaac every frame#Invincibility effects can prevent the death"}, -- Damocles [578] = {"578", "Free Lemonade", "Creates a large pool of yellow creep#The creep deals 24 damage per second"}, -- Free Lemonade [579] = {"579", "Spirit Sword", "Instead of shooting tears, Isaac swings a sword#{{Damage}} The sword deals 3x Isaac's damage +3.5 and swings as fast as the fire button is tapped#{{Chargeable}} Charging does a spin attack + projectile shot#Shoots projectiles with normal swings at full health#{{Tears}} Tears effect the charge time and how often a projectile is shot at full health"}, -- Spirit Sword [580] = {"580", "Red Key", "Creates a red room adjacent to a regular room, indicated by a door outline#Red Rooms can be special rooms#{{ErrorRoom}} Entering a room outside the 13x13 floor map teleports Isaac to the I AM ERROR room"}, -- Red Key @@ -292,12 +293,12 @@ local repCollectibles={ [602] = {"602", "Member Card", "{{Shop}} Opens a trapdoor in every Shop#The trapdoor leads to an underground shop that sells trinkets, runes, cards, special hearts and items from any pool"}, -- Member Card [603] = {"603", "Battery Pack", "{{Battery}} Spawns 2-4 batteries#{{Battery}} Fully recharges the active item"}, -- Battery Pack [604] = {"604", "Mom's Bracelet", "Allows Isaac to pick up and throw rocks, TNT, poops, friendly Dips, Hosts and other obstacles#Allows carrying them between rooms"}, -- Mom's Bracelet - [605] = {"605", "The Scooper", "↑ {{Damage}} x1.35 Damage multiplier for the right eye#{{Timer}} Summons a Peeper familiar for the room, which leaves a trail of red creep"}, -- The Scooper + [605] = {"605", "The Scooper", "↑ {{Damage}} x1.35 Damage multiplier for the right eye#{{Timer}} Summons a Peeper familiar for the room, which leaves a trail of red creep and deals 36 contact damage per second"}, -- The Scooper [606] = {"606", "Ocular Rift", "5% chance to shoot tears that create rifts where they land#{{Luck}} 20% chance at 15 luck#Rifts do 3x Isaac's damage per second and pull in nearby enemies, pickups, and projectiles"}, -- Ocular Rift - [607] = {"607", "Boiled Baby", "Shoots chaotic bursts of tears in all directions#Deals 3.5 or 5.3 damage per tear"}, -- Boiled Baby - [608] = {"608", "Freezer Baby", "Shoots petrifying tears#{{Freezing}} Freezes enemies upon killing them"}, -- Freezer Baby + [607] = {"607", "Boiled Baby", "Shoots chaotic bursts of tears in all directions#Deals 3.5 or 5.25 damage per tear"}, -- Boiled Baby + [608] = {"608", "Freezer Baby", "Shoots petrifying tears that deal 3.5 damage#{{Freezing}} Freezes enemies upon killing them"}, -- Freezer Baby [609] = {"609", "Eternal D6", "Rerolls all pedestal items in the room#Has a 25% chance to delete items instead of rerolling them"}, -- Eternal D6 - [610] = {"610", "Bird Cage", "Leaps on the enemy that deals the first damage to Isaac in a room#Deals 45 damage and releases a rock wave#Chases enemies afterwards"}, -- Bird Cage + [610] = {"610", "Bird Cage", "Leaps on the enemy that deals the first damage to Isaac in a room#Deals 45 damage and releases a rock wave#Chases enemies afterwards for 6.5 contact damage per second"}, -- Bird Cage [611] = {"611", "Larynx", "Isaac screams, damages and knocks back nearby enemies#The scream gets stronger the more charges the item has"}, -- Larynx [612] = {"612", "Lost Soul", "Dies in one hit and respawns at the start of the next floor#If it is brought alive to the next floor, it can spawn:#{{SoulHeart}} 3 Soul Hearts#{{EternalHeart}} 2 Eternal Hearts#{{TreasureRoom}} A Treasure Room item#{{AngelRoom}} An Angel Room item"}, -- Lost Soul [613] = {"613", "", ""}, @@ -313,10 +314,10 @@ local repCollectibles={ [623] = {"623", "Sharp Key", "{{Key}} +5 Keys#Throws one of Isaac's keys in the direction he shoots#Thrown keys deal damage, destroy obstacles, and open doors#Enemies killed with keys can spawn the contents of a chest, including items"}, -- Sharp Key [624] = {"624", "Booster Pack", "{{Card}} Spawns 5 random cards"}, -- Booster Pack [625] = {"625", "Mega Mush", "Gigantifies Isaac and grants:#↑ {{Damage}} x4 Damage multiplier#↑ {{Range}} +2 Range#↓ {{Tears}} -1.9 Tears#Invincibility#Ability to crush enemies and obstacles#{{Timer}} Lasts for 30 seconds and persists between rooms and floors"}, -- Mega Mush - [626] = {"626", "Knife Piece 1", "Turns into a throwable knife when combined with {{Collectible627}} Knife Piece 2#The knife can open a door made of flesh"}, -- Knife Piece 1 - [627] = {"627", "Knife Piece 2", "Turns into a throwable knife when combined with {{Collectible626}} Knife Piece 1#The knife can open a door made of flesh"}, -- Knife Piece 2 + [626] = {"626", "Knife Piece 1", "Turns into a throwable knife that deals 25 damage when combined with {{Collectible627}} Knife Piece 2#The knife can open a door made of flesh"}, -- Knife Piece 1 + [627] = {"627", "Knife Piece 2", "Turns into a throwable knife that deals 25 damage when combined with {{Collectible626}} Knife Piece 1#The knife can open a door made of flesh"}, -- Knife Piece 2 [628] = {"628", "Death Certificate", "{{Warning}} SINGLE USE {{Warning}}#Teleports Isaac to a floor that contains every item in the game#Choosing an item from this floor teleports Isaac back to the room he came from"}, -- Death Certificate - [629] = {"629", "Bot Fly", "Shoots shielded tears to destroy enemy projectiles"}, -- Bot Fly + [629] = {"629", "Bot Fly", "Shoots shielded tears to destroy enemy projectiles#Deals 3 contact damage per second"}, -- Bot Fly [630] = {"630", "", ""}, [631] = {"631", "Meat Cleaver", "Splits all enemies in the room into 2 smaller versions with 40% health#Enemies that naturally split (like Envy) take enough damage to split instead#Deals 25 damage to enemies that can't be split"}, -- Meat Cleaver [632] = {"632", "Evil Charm", "↑ {{Luck}} +2 Luck#Immune to {{Burning}} burn, {{Confusion}} confusion, {{Fear}} fear, and {{Poison}} poison effects"}, -- Evil Charm @@ -338,12 +339,12 @@ local repCollectibles={ [648] = {"648", "", ""}, [649] = {"649", "Fruity Plum", "Propels herself diagonally around the room, firing tears in her path that deal 3 damage#Deals 6 contact damage per second"}, -- Fruity Plum [650] = {"650", "Plum Flute", "{{Timer}} Summons a friendly Baby Plum in the room for 10 seconds"}, -- Plum Flute - [651] = {"651", "Star of Bethlehem", "Slowly travels from the first room of the floor to the {{BossRoom}} Boss Room#Moves faster if you're ahead of it, and slower if you're behind it#Standing in its aura grants:#↑ {{Tears}} x2.5 Tear multiplier#↑ {{Damage}} x1.8 Damage multiplier#Homing tears#50% chance to ignore damage"}, -- Star of Bethlehem + [651] = {"651", "Star of Bethlehem", "Slowly travels from the first room of the floor to the {{BossRoom}} Boss Room#Moves faster if you're ahead of it, and slower if you're behind it#Standing in its aura grants:#↑ {{Tears}} x2.5 Tears multiplier#↑ {{Damage}} x1.8 Damage multiplier#Homing tears#50% chance to ignore damage"}, -- Star of Bethlehem [652] = {"652", "Cube Baby", "Can be kicked around by walking into it#{{Freezing}} Afflicts slowness, deals contact damage, and freezes enemies it kills"}, -- Cube Baby [653] = {"653", "Vade Retro", "Holding the item causes non-ghost enemies to spawn small red ghosts on death#Using the item causes the ghosts to explode#Using the item also kills any ghost enemies (including bosses) that have less than 50% HP left"}, -- Vade Retro [654] = {"654", "False PHD", "{{BlackHeart}} +1 Black Heart#{{Pill}} Identifies all pills#Converts all good pills into bad pills#↑ {{Damage}} Eating a stat down pill grants +0.6 damage#{{BlackHeart}} Eating other bad pills spawns a Black Heart"}, -- False PHD [655] = {"655", "Spin to Win", "Passively grants an orbital that blocks enemy shots and deals 10.5 contact damage per second#Using the item grants:#↑ {{Speed}} +0.5 Speed#Greatly increases the rotation speed of orbitals"}, -- Spin to Win - [656] = {"656", "Damocles", "Hangs a sword above Isaac's head, which doubles all pedestal items#Does not double items that have a price or come from chests#{{Warning}} After taking any damage, the sword has an extremely low chance to instantly kill Isaac every frame"}, -- Damocles (hidden passive version) + [656] = {"656", "Damocles", "Hangs a sword above Isaac's head, which doubles all pedestal items#Does not double items that have a price or come from chests#{{Warning}} After taking any damage, the sword has an extremely low chance to instantly kill Isaac every frame#Invincibility effects can prevent the death"}, -- Damocles (hidden passive version) [657] = {"657", "Vasculitis", "Enemies explode into tears upon death, which inherit the effects of Isaac's tears"}, -- Vasculitis [658] = {"658", "Giant Cell", "Taking damage spawns a Minisaac#Minisaacs chase and shoot at nearby enemies"}, -- Giant Cell [659] = {"659", "Tropicamide", "↑ {{Range}} +2.5 Range#↑ {{Tearsize}} +0.22 Tear size"}, -- Tropicamide @@ -366,7 +367,7 @@ local repCollectibles={ [676] = {"676", "Empty Heart", "{{EmptyHeart}} +1 Empty heart container when at 1 Red Heart or less at the start of a new floor"}, -- Empty Heart [677] = {"677", "Astral Projection", "{{Timer}} Taking damage in an uncleared room grants for the fight:#Spectral tears#Flight#Negates the next damage taken#Stops time for 2 seconds#Greatly increases speed and fire rate for 2 seconds"}, -- Astral Projection [678] = {"678", "C Section", "{{Chargeable}} Replaces Isaac's tears with a charge attack that shoots homing, spectral fetus tears#{{Damage}} Fetus tears deal about 2.8x Isaac's damage per second"}, -- C Section - [679] = {"679", "Lil Abaddon", "{{Collectible399}} Familiar that charges and unleashes a Maw of the Void circle"}, -- Lil Abaddon + [679] = {"679", "Lil Abaddon", "{{Collectible399}} Familiar that charges and unleashes a Maw of the Void circle#It deals 52 damage over 1 second"}, -- Lil Abaddon [680] = {"680", "Montezuma's Revenge", "{{Chargeable}} Firing charges up a short-ranged high damage backwards beam#Does not replace Isaac's tears"}, -- Montezuma's Revenge [681] = {"681", "Lil Portal", "Deals contact damage and flies forward#Consumes pickups in its path#Each pickup consumed increases its size, damage, and spawns a blue fly#Consuming four pickups spawns a portal to an unexplored room"}, -- Lil Portal [682] = {"682", "Worm Friend", "Sometimes bursts out of the ground and grabs an enemy#Grabbed enemies take damage, are slowed and cannot move"}, -- Worm Friend @@ -393,7 +394,7 @@ local repCollectibles={ [703] = {"703", "Esau Jr.", "Swaps between the current character and Esau Jr.#Esau Jr. has {{BlackHeart}} 3 Black Hearts, {{Damage}} +2 Damage, flight, and random items equal to the number of items the player has the first time this item is used#Characters have independent items and health#{{Warning}} Dying as either character ends the run"}, -- Esau Jr. [704] = {"704", "Berserk!", "{{Battery}} Charges with damage dealt#{{Timer}} Receive for 5 seconds:#↑ {{Speed}} +0.4 Speed#↓ {{Tears}} x0.5 Fire rate multiplier#↑ {{Tears}} +2 Fire rate#↑ {{Damage}} +3 Damage#Restricts attacks to a melee that reflects shots#{{Timer}} Each kill increases the duration by 1 second and grants brief invincibility"}, -- Berserk! [705] = {"705", "Dark Arts", "{{Timer}} Receive for 1 second (or until shooting):↑ {{Speed}} +1 Speed#Isaac can pass through enemies/projectiles and paralyzes them#When the effect ends, damages paralyzed enemies, removes paralyzed projectiles and creates a blast at Isaac's location#The attacks and blast are more powerful the more enemies/projectiles have been hit"}, -- Dark Arts - [706] = {"706", "Abyss", "Consumes all item pedestals in the room and spawns an attack fly familiar for each one#Some items spawn a special fly when consumed"}, -- Abyss + [706] = {"706", "Abyss", "Consumes all item pedestals in the room and spawns a locust familiar for each one#Locusts deal Isaac's damage 2-3 times an attack#Some items spawn a special locust when consumed"}, -- Abyss [707] = {"707", "Supper", "↑ {{Heart}} +1 Health#{{Heart}} Heals 1 heart"}, -- Supper [708] = {"708", "Stapler", "↑ {{Damage}} +1 Damage#All of Isaac's tears are shot from the right eye"}, -- Stapler [709] = {"709", "Suplex!", "Isaac dashes in the direction he moves#Dashing into an enemy or boss picks it up and slams it into the ground#Slam deals damage and spawns rock waves based on Isaac's size#You're invincible during the dash and slam"}, -- Suplex! @@ -425,50 +426,6 @@ EID:updateDescriptionsViaTable(repCollectibles, EID.descriptions[languageCode].c ---------- Modifiers ---------- -EID.descriptions[languageCode].birthright ={ - {"Isaac", "", "All item pedestals cycle between two options"}, - {"Magdalene", "", "↑ {{Heart}} +1 Health#The max amount of heart containers is raised to 18"}, - {"Cain", "", "↑ {{Luck}} +1 Luck#{{Arcade}} All future floors will contain an upgraded Arcade Room (except for Dark Room and Chest)#{{Collectible46}} Greatly increases Lucky Foot's chances of winning effect"}, - {"Judas", "", "{{Collectible34}} The Book of Belial becomes a passive item similar to {{Collectible584}} Book of Virtues#{{Collectible34}} Grants The Book of Belial if Judas is not currently holding it#↑ {{Damage}} The damage boost it grants scales with the amount of charges the active item combined with it has#Grants special effects for certain active items"}, - {"???", "", "{{SoulHeart}} Soul Hearts gained from health upgrades are doubled"}, - {"Eve", "", "{{Collectible122}} Whore of Babylon is active regardless of health#{{Collectible117}} Dead Bird is always active"}, - {"Samson", "", "{{Collectible157}} Bloody Lust can trigger 4 more times per floor, up to +14 damage after 10 triggers"}, - {"Azazel", "", "Azazel's Brimstone beam becomes much wider#Does not increase damage"}, - {"Lazarus", "", "↑ Resurrecting as Lazarus Risen grants {{Damage}} +7.2 damage#{{Timer}} Damage up wears off over 60 seconds#{{Blank}} Killing enemies while the effect is active extends it"}, - {"Eden", "", "Spawns 3 random items from random item pools#Only one can be taken"}, - {"The Lost", "", "Prevents items useless to The Lost from spawning#Examples: items that only give health, flight, spectral tears, or activate upon taking damage"}, - {"Lazarus Risen", "", "↑ {{Damage}} +7.2 Damage#Damage up wears off over 60 seconds#Killing enemies while the effect is active extends it#The effect triggers each time Lazarus revives as Lazarus Risen"}, - {"Black Judas", "", "{{Collectible34}} The Book of Belial becomes a passive item similar to {{Collectible584}} Book of Virtues#{{Collectible34}} Grants The Book of Belial if Judas is not currently holding it#↑ {{Damage}} The damage boost it grants scales with the amount of charges the active item combined with it has#Grants special effects for certain active items"}, - {"Lilith", "", "Familiars are positioned in front of Lilith's face"}, - {"Keeper", "", "↑ {{CoinHeart}} +1 Health#The max amount of Coin Heart containers is raised to 4"}, - {"Apollyon", "", "{{Collectible477}} Using Void has a chance to spawn an item that was previously voided#Does not remove the stat bonuses#The more items voided, the higher the chance for an item to spawn upon use"}, - {"The Forgotten", "", "Removes the chain binding The Soul to The Forgotten"}, - {"The Forgotten Soul", "", "Removes the chain binding The Soul to The Forgotten"}, - {"Bethany", "", "{{Battery}} Activating an item using soul charges is sometimes free"}, - {"Jacob", "", "The character who picks up the item gains copies of three of the other character's passive items"}, - {"Esau", "", "The character who picks up the item gains copies of three of the other character's passive items"}, - {"Tainted Isaac", "", "Adds 4 passive item slots#Does not consume a slot itself"}, - {"Tainted Magdalene", "", "{{Heart}} Adds 1 heart container that doesn't drain"}, - {"Tainted Cain", "", "Doubles the amount of pickups dropped from collecting an item"}, - {"Tainted Judas", "", "{{Collectible705}} Increases the range in which Dark Arts hits enemies and tears"}, - {"Tainted ???", "", "{{PoopPickup}} Increases the maximum number of poops that can be carried to 29"}, - {"Tainted Eve", "", "{{HalfHeart}} Red Heart clots spawn half Red Hearts on death that disappear after 2 seconds"}, - {"Tainted Samson", "", "{{Collectible704}} Killing an enemy adds 3 seconds to the Berserk! timer instead of 1"}, - {"Tainted Azazel", "", "{{Collectible726}} Doubles the size of Tainted Azazel's Hemoptysis sneeze attack"}, - {"Tainted Lazarus", "", "The non-active form of Tainted Lazarus appears as a ghostly second character#He is invincible and deals 25% damage#Both forms receive the Birthright item"}, - {"Tainted Eden", "", "Any items obtained before Birthright can no longer be rerolled#Active items can be rerolled again if they are dropped and picked back up"}, - {"Tainted Lost", "", "Grants an extra life that revives Tainted Lost in the same room and deals 200 damage to nearby enemies"}, - {"Tainted Lilith", "", "{{Collectible728}} Familiars that normally follow Tainted Lilith follow her Gello instead#The melee attack gains +3 damage per familiar"}, - {"Tainted Keeper", "", "{{Coin}} Strongly attracts the coins dropped by defeating enemies#No effect on other coins"}, - {"Tainted Apollyon", "", "Locusts continuously damage enemies without returning while the fire button is held"}, - {"Tainted Forgotten", "", "{{Collectible714}} Tainted Soul gains the Recall ability to retrieve Tainted Forgotten from a distance#The Soul is invincible while the Forgotten is returning"}, - {"Tainted Bethany", "", "Spawns four random item wisps of Quality {{Quality3}} and {{Quality4}} with significantly higher HP than normal"}, - {"Tainted Jacob", "", "Dark Esau splits into two, creating a shadowy clone of itself#Both Esaus always charge at the same time#{{Collectible722}} Using Anima Sola chains both Esaus"}, - {"Dead Tainted Lazarus", "", "The non-active form of Tainted Lazarus appears as a ghostly second character#He is invincible and deals 25% damage#Both forms receive the Birthright item"}, - {"Tainted Jacob 2", "", "Dark Esau splits into two, creating a shadowy clone of itself#Both Esaus always charge at the same time#{{Collectible722}} Using Anima Sola chains both Esaus"}, - {"Tainted Forgotten Soul", "", "{{Collectible714}} Tainted Soul gains the Recall ability to retrieve Tainted Forgotten from a distance#The Soul is invincible while the Forgotten is returning"}, -} - -- Buffs caused by Binge Eater -- Note: "#" will be replaced with "#{{Collectible664}} " automatically, in order to add Binge eater icon in front of each buff-bulletpoint EID.descriptions[languageCode].bingeEaterBuffs = { @@ -705,8 +662,8 @@ EID.descriptions[languageCode].abyssSynergies = { [257] = "Orange, burning locust that sets enemies on fire", -- Fire Mind [305] = "Green locust that poisons enemies", -- Scorpio [374] = "Cyan, glowing locust that can spawn beams of light that deal deal 3x Isaac's damage", -- Holy Light - [494] = "Light blue locust with arcs of electricity that deal 0.1 damage per tick", -- Jacob's Ladder - [559] = "Light blue locust with arcs of electricity that deal 0.1 damage per tick", -- 120 Volt + [494] = "Light blue locust with arcs of electricity that deal 0.1 damage per arc", -- Jacob's Ladder + [559] = "Light blue locust with arcs of electricity that deal 0.1 damage per arc", -- 120 Volt } -- Effect of Car battery on Active Items @@ -750,6 +707,52 @@ local repCarBattery = { } EID:updateDescriptionsViaTable(repCarBattery, EID.descriptions[languageCode].carBattery) +-- Effect of BFFS!/Hive Mind on Familiars +local repBFFSSynergies = { + ["5.100.67"] = {6, 12}, -- Sister Maggy + ["5.100.98"] = {"7-8", "6"}, -- The Relic + ["5.100.172"] = {112.5, 225}, -- Sacrificial Dagger + ["5.100.178"] = {7, 14, "Spawns a blue flame at point of impact"}, -- Holy Water + ["5.100.206"] = {56, 112}, -- Guillotine + ["5.100.264"] = {6.5, 13}, -- Smart Fly + ["5.100.272"] = {100, 125}, -- BBF + ["5.100.273"] = {100, 125}, -- Bob's Brain + ["5.100.274"] = {150, 300}, -- Best Bud + ["5.100.275"] = {24, 48}, -- Lil Brimstone + ["5.100.276"] = "Fires additional shots in random directions and leaves a larger puddle of creep", -- Isaac's Heart + ["5.100.319"] = {75, 150}, -- Cain's Other Eye + ["5.100.320"] = {15, 30}, -- ???'s Only Friend + ["5.100.365"] = {30, 60}, -- Lost Fly + ["5.100.360"] = {75, 150, 100, 200}, -- Incubus (+ Lilith exception) + ["5.100.384"] = {"5-20", "10-40"}, -- Lil Gurdy + ["5.100.389"] = {"7-8", "6"}, -- Rune Bag + ["5.100.467"] = {10, 20}, -- Finger! + ["5.100.468"] = {75, 150}, -- Shade + ["5.100.491"] = {"7", "6"}, -- Acid Baby + ["5.100.500"] = {"7-8", "6"}, -- Sack of Sacks + ["5.100.504"] = {3.5, 7}, -- Brown Nugget + ["5.100.508"] = {1.5, 3}, -- Mom's Razor + ["5.100.509"] = {3.5, 7, 20, 40}, -- Bloodshot Eye + + ["5.100.565"] = "Double damage while friendly", -- Blood Puppy + ["5.100.569"] = "If triggered, grants additional damage and speed", -- Blood Oath + ["5.100.575"] = {1.5, 3}, -- The Intruder + ["5.100.581"] = {15, 30}, -- Psy Fly + ["5.100.584"] = "Doubles wisp tear and contact damage", -- Book of Virtues + ["5.100.605"] = {36, 72}, -- The Scooper + ["5.100.607"] = {3.5, 7, 5.25, 10.5}, -- Boiled Baby + ["5.100.608"] = {3.5, 7}, -- Freezer Baby + ["5.100.610"] = {45, 90, "a rock wave", "4 {{CR}}rock waves", 6.5, 13}, -- Bird Cage + ["5.100.612"] = "Gives the Lost Soul a Holy Mantle effect", -- Lost Soul + ["5.100.626"] = {25, 50}, -- Knife Piece 1 + ["5.100.627"] = {25, 50}, -- Knife Piece 2 + ["5.100.629"] = {3, 6}, -- Bot Fly + ["5.100.635"] = "On use, shoots 8 tears from the player's position", -- Stitches + + --TODO: check familiars 645, 649, 651, 652, 656, 667, 679, 681, 682, 697, 698; work on hive mind support +} +EID:updateDescriptionsViaTable(repBFFSSynergies, EID.descriptions[languageCode].BFFSSynergies) + ---------- Trinkets ---------- local repTrinkets={ @@ -830,7 +833,7 @@ local repTrinkets={ [175] = {"175", "Strange Key", "Opens the door to the Hush floor regardless of the timer#Using {{Collectible297}} Pandora's Box consumes the key and spawns 6 items from random pools"}, -- Strange Key [176] = {"176", "Lil Clot", "Spawns a blood clot that mimics Isaac's movement#Copies Isaac's stats, tear effects and 35% of his damage#Respawns each room"}, -- Lil Clot [177] = {"177", "Temporary Tattoo", "{{Chest}} Clearing a {{ChallengeRoom}} Challenge Room spawns a chest#Clearing a {{BossRushRoom}} Boss Challenge Room spawns an item"}, -- Temporary Tattoo - [178] = {"178", "Swallowed M80", "Taking damage has a 50% chance for Isaac to explode"}, -- Swallowed M80 + [178] = {"178", "Swallowed M80", "Taking damage has a 50% chance for Isaac to explode#Doesn't destroy Blood Donation Machines or Confessionals, while spawning pickups as if it did"}, -- Swallowed M80 [179] = {"179", "RC Remote", "Familiars mimic Isaac's movement#Hold the drop button ({{ButtonRT}}) to keep the familiars in place"}, -- RC Remote [180] = {"180", "Found Soul", "Follows Isaac's movement and shoots spectral tears#Copies Isaac's stats, tear effects and 50% of his damage#Dies in one hit#Respawns each floor"}, -- Found Soul [181] = {"181", "Expansion Pack", "Using an active item triggers the effect of an additional 1-2 charge active item"}, -- Expansion Pack @@ -1085,6 +1088,85 @@ EID.descriptions[languageCode].horsepills={ [9999] = {"", "Golden Pill", "Random horse pill effect#Has a chance to destroy itself with each use"}, -- Golden Pill } +---------- Character Info ---------- +-- TODO: make these more consistent with other descs, add icons, and is there any traits of the characters missing? +local repCharacterInfo = { + [4] = {"???", "Can't have Red Hearts#Devil deals that would cost 1 or 2 Red Hearts will cost 1 or 2 Soul Hearts instead#Destroying poop spawns 1 blue fly"}, + [8] = {"Lazarus", "Once per floor, when you die:#Resurrect as Lazarus Risen#Lose 1 Red Heart container#↑ {{Damage}} 0.5 Damage up"}, + [11] = {"Lazarus Risen", "Increased stats and 1.4x damage multiplier#When entering a new floor, turn back into Lazarus"}, + [12] = {"Dark Judas", "Can't have Red Hearts#Health ups grant Black Hearts#2x Damage multiplier"}, + [14] = {"Keeper", "Heal by picking up coins#Heart pickups are turned into Blue Flies#Devil deals cost 15 or 30 coins"}, + [18] = {"Bethany", "Use Soul Hearts to charge your active item#Can't use Soul Hearts as health#The first Devil room is guaranteed to be an Angel room instead"}, + [19] = {"Jacob", "Control Jacob and Esau at the same time#Both characters drop a bomb when one is used#Esau stays in place while holding {{ButtonRT}}#When there's a choice between items, Jacob and Esau can grab two simultaneously"}, + [20] = {"Esau", ""}, + + [21] = {"Tainted Isaac", "Item pedestals cycle between 2 options#You can only carry 8 passive items#Cycle which item will be dropped for a 9th item with {{ButtonRT}}"}, + [22] = {"Tainted Magdalene", "Health above 2 Red Hearts will slowly drain#On contact, do a melee swing#Chance for enemies to drop Half Red Hearts that disappear in 2 seconds#Drop is guaranteed on melee kill#Heal twice as much from non-pickup sources#Damage taken to draining hearts doesn't affect Devil Deal chance"}, + [23] = {"Tainted Cain", "Touching an item pedestal turns it into a variety of pickups#Gain collectibles by crafting 8 pickups together in the Bag of Crafting#The Bag's contents can be shifted with {{ButtonRT}} to replace specific pickups when full"}, + [24] = {"Tainted Judas", "Can't have Red Hearts#Health ups grant Black Hearts"}, + [25] = {"Tainted ???", "Bombs are replaced with Poop Spells#Doing damage spawns poop pickups#The HUD has a preview of your upcoming poop spells#You can store the next spell for later by using Hold#Can't have Red Hearts"}, + [26] = {"Tainted Eve", "Holding Fire will convert your hearts into Clot familiars#Different Heart types spawn Clots with more health and tear effects#Clots lose health over time#Using Sumptorium will absorb the Clots back into your health, if possible#Clots stay in place while holding {{ButtonRT}}"}, + [27] = {"Tainted Samson", "Dealing or taking damage builds up Berserk mode#{{Timer}} When you go berserk, receive for 5 seconds:#↑ {{Speed}} +0.4 Speed#↓ {{Tears}} x0.5 Fire rate multiplier#↑ {{Tears}} +2 Fire rate#↑ {{Damage}} +3 Damage#Restricts attacks to a melee that reflects shots#{{Timer}} Each kill increases the duration by 1 second and grants brief invincibility"}, + [28] = {"Tainted Azazel", "When you start charging, you sneeze blood#Hitting an enemy with the sneeze halves your charge time#The sneeze deals 1.5x Azazel's damage#{{BrimstoneCurse}} Affected enemies take extra damage from Brimstone beams#On death, cursed enemies explode and pass on the curse to nearby enemies"}, + [29] = {"Tainted Lazarus", "Lazarus has two states, each with their own items and health#Whenever you clear a room/wave or use Flip, you're switched to the other state"}, + [30] = {"Tainted Eden", "When you take damage, reroll your stats, items, trinket, and consumables#Items reroll into an item from the same item pool#Self-damage doesn't reroll"}, + [31] = {"Tainted Lost", "Cards that spawn have a 10% chance to be Holy Card#Quality {{Quality2}} or less items have a 20% chance to be rerolled#Only \"offensive\" items can spawn"}, + [32] = {"Tainted Lilith", "Pressing Fire launches a short-range fetus melee attack that does 3x damage#Holding Fire keeps the fetus out shooting tears"}, + [33] = {"Tainted Keeper", "Enemies drop coins that disappear in 2 seconds#Most item pedestals cost 15 coins#Devil deals and Angel items cost 15 or 30 coins#Shops don't require a key and have increased stock"}, + [34] = {"Tainted Apollyon", ""}, + [35] = {"Tainted Forgotten", "The Forgotten is an immobile bone pile that is picked up and thrown by The Soul for 3x damage#Only The Soul can take damage#Bombs are placed at Forgotten's location#Can't have Red Hearts"}, + [36] = {"Tainted Bethany", "Use Red Hearts to charge your active item#Can't have Red Hearts"}, + [37] = {"Tainted Jacob", "Dark Esau chases you, charging towards you when close#Anima Sola will chain Dark Esau down briefly, charging at you after 5 seconds or on using Anima Sola again#Dark Esau's charge does a lot of damage to enemies and ignores Boss Armor#If he hits you, you turn into a ghost that dies in one hit for the rest of the floor#While a ghost, one devil deal per room can be taken for free"}, + [38] = {"Dead Tainted Lazarus", "Lazarus has two states, each with their own items and health#Whenever you clear a room/wave or use Flip, you're switched to the other state"}, + [39] = {"Tainted Jacob 2", ""}, + [40] = {"Tainted Forgotten Soul", "The Forgotten is an immobile bone pile that is picked up and thrown by The Soul for 3x damage#Only The Soul can take damage#Bombs are placed at Forgotten's location#Can't have Red Hearts"}, +} +EID:updateDescriptionsViaTable(repCharacterInfo, EID.descriptions[languageCode].CharacterInfo) + +EID.descriptions[languageCode].birthright ={ + {"Isaac", "", "All item pedestals cycle between two options"}, + {"Magdalene", "", "↑ {{Heart}} +1 Health#The max amount of heart containers is raised to 18"}, + {"Cain", "", "↑ {{Luck}} +1 Luck#{{Arcade}} All future floors will contain an upgraded Arcade Room (except for Dark Room and Chest)#{{Collectible46}} Greatly increases Lucky Foot's chances of winning effect"}, + {"Judas", "", "{{Collectible34}} The Book of Belial becomes a passive item similar to {{Collectible584}} Book of Virtues#{{Collectible34}} Grants The Book of Belial if Judas is not currently holding it#↑ {{Damage}} The damage boost it grants scales with the amount of charges the active item combined with it has#Grants special effects for certain active items"}, + {"???", "", "{{SoulHeart}} Soul Hearts gained from health upgrades are doubled"}, + {"Eve", "", "{{Collectible122}} Whore of Babylon is active regardless of health#{{Collectible117}} Dead Bird is always active"}, + {"Samson", "", "{{Collectible157}} Bloody Lust can trigger 4 more times per floor, up to +14 damage after 10 triggers"}, + {"Azazel", "", "Azazel's Brimstone beam becomes much wider#Does not increase damage"}, + {"Lazarus", "", "↑ Resurrecting as Lazarus Risen grants {{Damage}} +7.2 damage#{{Timer}} Damage up wears off over 60 seconds#{{Blank}} Killing enemies while the effect is active extends it"}, + {"Eden", "", "Spawns 3 random items from random item pools#Only one can be taken"}, + {"The Lost", "", "Prevents items useless to The Lost from spawning#Examples: items that only give health, flight, spectral tears, or activate upon taking damage"}, + {"Lazarus Risen", "", "↑ {{Damage}} +7.2 Damage#Damage up wears off over 60 seconds#Killing enemies while the effect is active extends it#The effect triggers each time Lazarus revives as Lazarus Risen"}, + {"Black Judas", "", "{{Collectible34}} The Book of Belial becomes a passive item similar to {{Collectible584}} Book of Virtues#{{Collectible34}} Grants The Book of Belial if Judas is not currently holding it#↑ {{Damage}} The damage boost it grants scales with the amount of charges the active item combined with it has#Grants special effects for certain active items"}, + {"Lilith", "", "Familiars are positioned in front of Lilith's face"}, + {"Keeper", "", "↑ {{CoinHeart}} +1 Health#The max amount of Coin Heart containers is raised to 4"}, + {"Apollyon", "", "{{Collectible477}} Using Void has a chance to spawn an item that was previously voided#Does not remove the stat bonuses#The more items voided, the higher the chance for an item to spawn upon use"}, + {"The Forgotten", "", "Removes the chain binding The Soul to The Forgotten"}, + {"The Forgotten Soul", "", "Removes the chain binding The Soul to The Forgotten"}, + {"Bethany", "", "{{Battery}} Activating an item using soul charges is sometimes free"}, + {"Jacob", "", "The character who picks up the item gains copies of three of the other character's passive items"}, + {"Esau", "", "The character who picks up the item gains copies of three of the other character's passive items"}, + {"Tainted Isaac", "", "Adds 4 passive item slots#Does not consume a slot itself"}, + {"Tainted Magdalene", "", "{{Heart}} Adds 1 heart container that doesn't drain"}, + {"Tainted Cain", "", "Doubles the amount of pickups dropped from collecting an item"}, + {"Tainted Judas", "", "{{Collectible705}} Increases the range in which Dark Arts hits enemies and tears"}, + {"Tainted ???", "", "{{PoopPickup}} Increases the maximum number of poops that can be carried to 29"}, + {"Tainted Eve", "", "{{HalfHeart}} Red Heart clots spawn half Red Hearts on death that disappear after 2 seconds"}, + {"Tainted Samson", "", "{{Collectible704}} Killing an enemy adds 3 seconds to the Berserk! timer instead of 1"}, + {"Tainted Azazel", "", "{{Collectible726}} Doubles the size of Tainted Azazel's Hemoptysis sneeze attack"}, + {"Tainted Lazarus", "", "The non-active form of Tainted Lazarus appears as a ghostly second character#He is invincible and deals 25% damage#Both forms receive the Birthright item"}, + {"Tainted Eden", "", "Any items obtained before Birthright can no longer be rerolled#Active items can be rerolled again if they are dropped and picked back up"}, + {"Tainted Lost", "", "Grants an extra life that revives Tainted Lost in the same room and deals 200 damage to nearby enemies"}, + {"Tainted Lilith", "", "{{Collectible728}} Familiars that normally follow Tainted Lilith follow her Gello instead#The melee attack gains +3 damage per familiar"}, + {"Tainted Keeper", "", "{{Coin}} Strongly attracts the coins dropped by defeating enemies#No effect on other coins"}, + {"Tainted Apollyon", "", "Locusts continuously damage enemies without returning while the fire button is held"}, + {"Tainted Forgotten", "", "{{Collectible714}} Tainted Soul gains the Recall ability to retrieve Tainted Forgotten from a distance#The Soul is invincible while the Forgotten is returning"}, + {"Tainted Bethany", "", "Spawns four random item wisps of Quality {{Quality3}} and {{Quality4}} with significantly higher HP than normal"}, + {"Tainted Jacob", "", "Dark Esau splits into two, creating a shadowy clone of itself#Both Esaus always charge at the same time#{{Collectible722}} Anima Sola's cooldown is reduced to 10 seconds#Using Anima Sola chains both Esaus for 6.67 seconds"}, + {"Dead Tainted Lazarus", "", "The non-active form of Tainted Lazarus appears as a ghostly second character#He is invincible and deals 25% damage#Both forms receive the Birthright item"}, + {"Tainted Jacob 2", "", ""}, + {"Tainted Forgotten Soul", "", "{{Collectible714}} Tainted Soul gains the Recall ability to retrieve Tainted Forgotten from a distance#The Soul is invincible while the Forgotten is returning"}, +} + ---------- Glitched Item Descriptions ---------- EID.descriptions[languageCode].GlitchedItemText = { @@ -1143,8 +1225,30 @@ EID.descriptions[languageCode].GlitchedItemText = { grants = "Grants ", } +---------- Bag of Crafting Text ---------- +EID.descriptions[languageCode].CraftingBagContent = "Bag:" +EID.descriptions[languageCode].CraftingRoomContent = "Room:" +EID.descriptions[languageCode].CraftingFloorContent = "Floor:" +EID.descriptions[languageCode].CraftingSearch = "Search:" +EID.descriptions[languageCode].CraftingBagQuality = "Bag Quality:" +EID.descriptions[languageCode].CraftingBestQuality = "Best Quality:" +EID.descriptions[languageCode].CraftingHideKey = "Hide:" +EID.descriptions[languageCode].CraftingPreviewKey = "Preview:" +-- {1} will be converted to the number of recipes +EID.descriptions[languageCode].CraftingMore = "...+{1} more" +-- {1} will be converted into the number of available items +EID.descriptions[languageCode].CraftingNumAvailableItems = "{1} of 8 items available" +EID.descriptions[languageCode].CraftingWarningAvailableItems = "Needs at least 8 to show crafting recipes!" +-- {1} will be converted into the name of the key that toggles the BoC visibility +EID.descriptions[languageCode].CraftingIsHidden = "Currently Hidden (Unhide with {1})" +-- {1} will be converted into the name of the key that toggles the BoC Search +EID.descriptions[languageCode].CraftingResults = "(Scroll: Hold {{CONFIG_BoC_Toggle}} + {{ButtonY}} {{ButtonA}}, Lock: {{ButtonX}}, Refresh: {{ButtonB}}, Reset Bag: Hold {{ButtonRB}}, Search: {1})" + ---------- Misc. Text ---------- +EID.descriptions[languageCode].ResultsWithX = "(Results with {1})" +EID.descriptions[languageCode].VariableCharge = "{1} charge:" + EID.descriptions[languageCode].poopSpells = { {"Poop", "Normal poop that can drop pickups"}, {"Corny Poop", "Spawns blue flies while intact"}, @@ -1170,29 +1274,7 @@ EID.descriptions[languageCode].VoidNames[2] = "{1} Fire rate" EID.descriptions[languageCode].spindownError = "Item disappears" -EID.descriptions[languageCode].CraftingBagContent = "Bag:" -EID.descriptions[languageCode].CraftingRoomContent = "Room:" -EID.descriptions[languageCode].CraftingFloorContent = "Floor:" -EID.descriptions[languageCode].CraftingSearch = "Search:" - -EID.descriptions[languageCode].CraftingBagQuality = "Bag Quality:" -EID.descriptions[languageCode].CraftingBestQuality = "Best Quality:" - -EID.descriptions[languageCode].CraftingHideKey = "Hide:" -EID.descriptions[languageCode].CraftingPreviewKey = "Preview:" --- {1} will be converted to the number of recipes -EID.descriptions[languageCode].CraftingMore = "...+{1} more" --- {1} will be converted into the number of available items -EID.descriptions[languageCode].CraftingNumAvailableItems = "{1} of 8 items available" -EID.descriptions[languageCode].CraftingWarningAvailableItems = "Needs at least 8 to show crafting recipes!" --- {1} will be converted into the name of the key that toggles the BoC visibility -EID.descriptions[languageCode].CraftingIsHidden = "Currently Hidden (Unhide with {1})" - --- {1} will be converted into the name of the key that toggles the BoC Search -EID.descriptions[languageCode].CraftingResults = "(Scroll: Hold {{CONFIG_BoC_Toggle}} + {{ButtonY}} {{ButtonA}}, Lock: {{ButtonX}}, Refresh: {{ButtonB}}, Reset Bag: Hold {{ButtonRB}}, Search: {1})" - EID.descriptions[languageCode].BlankCardEffect = "Blank Card effect:" -EID.descriptions[languageCode].VariableCharge = "{1} charge:" EID.descriptions[languageCode].FlipItemToggleInfo = "(Hold {{CONFIG_BoC_Toggle}} to show description)" @@ -1209,33 +1291,33 @@ EID.descriptions[languageCode].PandorasBoxStrangeKeyEffect = "Instead, consumes EID.descriptions[languageCode].AchievementWarningTitle = "{{ColorYellow}}{{Warning}} WARNING {{Warning}}" EID.descriptions[languageCode].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)#(This warning can be disabled in the config)" - EID.descriptions[languageCode].OldGameVersionWarningText = "EID is updated for the newest Steam version#Your game version is not officially supported, so some descriptions and features will be inaccurate#(This warning can be disabled in the config)" - EID.descriptions[languageCode].ModdedRecipesWarningText = "Modded items could make the crafting recipe calculation inaccurate!#Install REPENTOGON for improved modded recipe support#(This warning can be disabled in the config)" -EID.descriptions[languageCode].ResultsWithX = "(Results with {1})" --- Conditional descriptions +-- Conditional descriptions - DO NOT TRANSLATE THE FIRST PART IN ["BRACKETS"] -- Strings will be appended to the original description -- Tables with one entry will completely replace the original description -- Tables with two or more entries are find-replace pairs -local repConditions={ +local repConditions = { ["Tainted Revive"] = "{1} simply revives", ["5.100.135 (Hard Mode)"] = {"1-2 coins", "1 coin", "2-3 coins", "2 coins"}, -- IV Bag Hard Mode (modify the PHD text too) - ["5.100.642"] = "Single use for {1}", -- Magic Skin - ["5.100.240"] = "{1} keeps the stat changes when he drops it", -- Experimental Treatment - ["5.100.644"] = "{1} keeps the stat increase when he drops it", -- Consolation Prize + ["5.100.642"] = "Single use for {1}", -- Magic Skin + Lost + ["5.100.240"] = "{1} keeps the stat changes when he drops it", -- Experimental Treatment + Tainted Isaac + ["5.100.644"] = "{1} keeps the stat increase when he drops it", -- Consolation Prize + Tainted Isaac ["5.100.549"] = "{1} simply gets ↑ {{Tears}} +0.4 Fire rate on pickup", -- Brittle Bones (Keeper+Lost) - ["5.100.694"] = "Works for {1}, letting him survive 4 hits", -- Heartbreak + ["5.100.694"] = "Works for {1}, letting him survive 4 hits", -- Heartbreak + Losts + ["5.100.694 (Keeper)"] = "{1} gains 1 Broken Heart, fatal hits grant 1 Broken Heart, and he dies at 3 Broken Hearts", -- Heartbreak + Normal Keeper + ["5.100.694 (Tainted Keeper)"] = "{1} gains 1 Broken Heart and dies at 2 Broken Hearts#{{Warning}} {1} will die in one hit after taking this item", -- Heartbreak + Tainted Keeper - ["5.100.201"] = "Refills {1}'s charge on pickup", --Iron Bar - ["5.350.172"] = "{1} removes the teleportation effect", -- Cursed Penny + ["5.100.201"] = "Refills {1}'s charge on pickup", -- Iron Bar + Notched Axe + ["5.350.172"] = "{1} removes the teleportation effect", -- Cursed Penny + Black Candle ["5.100.188"] = "Deals 7.5 damage as {1}", -- Cain + Abel ["5.100.360"] = "Deals 100% damage as {1}", -- Lilith + Incubus - ["5.100.501 (Deep Pockets)"] = "+1 Heart container for every 100 coins past 99", -- Greed's Gullet + Deep Pockets + ["5.100.501"] = "{1} can gain additional coin containers#Health up items can grant an extra container per 25 coins", -- Greed's Gullet (Health up bug) + ["5.100.501 (Deep Pockets)"] = "+1 container for every 100 coins past 99", -- Greed's Gullet + Deep Pockets ["5.350.156"] = "+1 Coin container for {1}", -- Mother's Kiss ["5.100.230 (Keeper)"] = "{1} is left with 1 coin container", -- Abaddon ["5.100.230 (Bethany)"] = "{1} is left with half a heart", -- Abaddon @@ -1255,52 +1337,6 @@ local repConditions={ } EID:updateDescriptionsViaTable(repConditions, EID.descriptions[languageCode].ConditionalDescs) -local repBFFSSynergies = { - ["5.100.178"] = "Double water damage and spawns a blue flame at point of impact", -- Holy Water - ["5.100.276"] = "Fires additional shots in random directions and leaves a larger puddle of creep", -- Isaac's Heart - ["5.100.360"] = "Shoots tears that deal 150% of your damage. 200% for Lilith", -- Incubus - ["5.100.569"] = "+2 full hearts when health is drained", -- Blood Oath - ["5.100.610"] = "Spawns 4 rock waves in an x pattern. Doubles bird damage. Damage of waves unaffected.", -- Bird Cage - ["5.100.612"] = "Gives the Lost Soul a Holy Mantle effect", -- Lost Soul - ["5.100.635"] = "On use, fires 8 tears from the players position that have the same effects as his tears", -- Stitches -} -EID:updateDescriptionsViaTable(repBFFSSynergies, EID.descriptions[languageCode].BFFSSynergies) - --- TODO: make these more consistent with other descs, add icons, and is there any traits of the characters missing? -local repCharacterInfo = { - [4] = {"???", "Can't have Red Hearts#Devil deals that would cost 1 or 2 Red Hearts will cost 1 or 2 Soul Hearts instead#Destroying poop spawns 1 blue fly"}, - [8] = {"Lazarus", "Once per floor, when you die:#Resurrect as Lazarus Risen#Lose 1 Red Heart container#↑ {{Damage}} 0.5 Damage up"}, - [11] = {"Lazarus Risen", "Increased stats and 1.4x damage multiplier#When entering a new floor, turn back into Lazarus"}, - [12] = {"Dark Judas", "Can't have Red Hearts#Health ups grant Black Hearts#2x Damage multiplier"}, - [14] = {"Keeper", "Heal by picking up coins#Heart pickups are turned into Blue Flies#Devil deals cost 15 or 30 coins"}, - [18] = {"Bethany", "Use Soul Hearts to charge your active item#Can't use Soul Hearts as health#The first Devil room is guaranteed to be an Angel room instead"}, - [19] = {"Jacob", "Control Jacob and Esau at the same time#Both characters drop a bomb when one is used#Esau stays in place while holding {{ButtonRT}}#When there's a choice between items, Jacob and Esau can grab two simultaneously"}, - [20] = {"Esau", ""}, - - [21] = {"Tainted Isaac", "Item pedestals cycle between 2 options#You can only carry 8 passive items#Cycle which item will be dropped for a 9th item with {{ButtonRT}}"}, - [22] = {"Tainted Magdalene", "Health above 2 Red Hearts will slowly drain#On contact, do a melee swing#Chance for enemies to drop Half Red Hearts that disappear in 2 seconds#Drop is guaranteed on melee kill#Heal twice as much from non-pickup sources#Damage taken to draining hearts doesn't affect Devil Deal chance"}, - [23] = {"Tainted Cain", "Touching an item pedestal turns it into a variety of pickups#Gain collectibles by crafting 8 pickups together in the Bag of Crafting#The Bag's contents can be shifted with {{ButtonRT}} to replace specific pickups when full"}, - [24] = {"Tainted Judas", "Can't have Red Hearts#Health ups grant Black Hearts"}, - [25] = {"Tainted ???", "Bombs are replaced with Poop Spells#Doing damage spawns poop pickups#The HUD has a preview of your upcoming poop spells#You can store the next spell for later by using Hold#Can't have Red Hearts"}, - [26] = {"Tainted Eve", "Holding Fire will convert your hearts into Clot familiars#Different Heart types spawn Clots with more health and tear effects#Clots lose health over time#Using Sumptorium will absorb the Clots back into your health, if possible#Clots stay in place while holding {{ButtonRT}}"}, - [27] = {"Tainted Samson", "Dealing or taking damage builds up Berserk mode#{{Timer}} When you go berserk, receive for 5 seconds:#↑ {{Speed}} +0.4 Speed#↓ {{Tears}} x0.5 Fire rate multiplier#↑ {{Tears}} +2 Fire rate#↑ {{Damage}} +3 Damage#Restricts attacks to a melee that reflects shots#{{Timer}} Each kill increases the duration by 1 second and grants brief invincibility"}, - [28] = {"Tainted Azazel", "When you start charging, you sneeze blood#Hitting an enemy with the sneeze halves your charge time#The sneeze deals 1.5x Azazel's damage#{{BrimstoneCurse}} Affected enemies take extra damage from Brimstone beams#On death, cursed enemies explode and pass on the curse to nearby enemies"}, - [29] = {"Tainted Lazarus", "Lazarus has two states, each with their own items and health#Whenever you clear a room/wave or use Flip, you're switched to the other state"}, - [30] = {"Tainted Eden", "When you take damage, reroll your stats, items, trinket, and consumables#Items reroll into an item from the same item pool#Self-damage doesn't reroll"}, - [31] = {"Tainted Lost", "Cards that spawn have a 10% chance to be Holy Card#Quality {{Quality2}} or less items have a 20% chance to be rerolled#Only \"offensive\" items can spawn"}, - [32] = {"Tainted Lilith", "Pressing Fire launches a short-range fetus melee attack that does 3x damage#Holding Fire keeps the fetus out shooting tears"}, - [33] = {"Tainted Keeper", "Enemies drop coins that disappear in 2 seconds#Most item pedestals cost 15 coins#Devil deals and Angel items cost 15 or 30 coins#Shops don't require a key and have increased stock"}, - [34] = {"Tainted Apollyon", ""}, - [35] = {"Tainted Forgotten", "The Forgotten is an immobile bone pile that is picked up and thrown by The Soul for 3x damage#Only The Soul can take damage#Bombs are placed at Forgotten's location#Can't have Red Hearts"}, - [36] = {"Tainted Bethany", "Use Red Hearts to charge your active item#Can't have Red Hearts"}, - [37] = {"Tainted Jacob", "Dark Esau chases you, charging towards you when close#Anima Sola will chain Dark Esau down briefly, charging at you after 5(?) seconds or on using Anima Sola again#Dark Esau's charge does a lot of damage to enemies and ignores Boss Armor#If he hits you, you turn into a ghost that dies in one hit for the rest of the floor#While a ghost, one devil deal per room can be taken for free"}, - [38] = {"Dead Tainted Lazarus", "Lazarus has two states, each with their own items and health#Whenever you clear a room/wave or use Flip, you're switched to the other state"}, - [39] = {"Tainted Jacob 2", ""}, - [40] = {"Tainted Forgotten Soul", "The Forgotten is an immobile bone pile that is picked up and thrown by The Soul for 3x damage#Only The Soul can take damage#Bombs are placed at Forgotten's location#Can't have Red Hearts"}, -} -EID:updateDescriptionsViaTable(repCharacterInfo, EID.descriptions[languageCode].CharacterInfo) - - diff --git a/features/eid_api.lua b/features/eid_api.lua index 7cf3fb1c..a402a8e5 100644 --- a/features/eid_api.lua +++ b/features/eid_api.lua @@ -301,6 +301,7 @@ function EID:getTableName(Type, Variant, SubType) end elseif idString == "-999.-1" then return "sacrifice" elseif idString == "1000.76" then return "dice" + elseif idString == "1.0" then return "players" else return "custom" end end @@ -610,6 +611,8 @@ function EID:getObjectName(Type, Variant, SubType) return EID:getDescriptionEntry("sacrificeHeader").." ("..SubType.."/"..#EID.descriptions["en_us"].sacrifice..")" elseif tableName == "dice" then return EID:getDescriptionEntry("diceHeader").." ("..SubType..")" + elseif tableName == "players" then + return EID:getPlayerName(SubType) elseif tableName == "custom" then local xmlName = EID:GetEntityXMLName(Type, Variant, SubType) return name or xmlName or Type.."."..Variant.."."..SubType @@ -733,7 +736,12 @@ function EID:replaceNameMarkupStrings(text) for e in string.gmatch(strTrimmed, "([^.]*)") do table.insert(entityID, tonumber(e)) end - name = EID:getObjectName(entityID[1], entityID[2], entityID[3]) + local iconText = "" + if showIcon then + if entityID[1] == 1 then iconText = "{{Player" .. entityID[3] .. "}} " + else iconText = "{{" .. EID:GetIconNameByVariant(entityID[2]) .. entityID[3] .. "}} " end + end + name = iconText .. EID:getObjectName(entityID[1], entityID[2], entityID[3]) elseif indicator == "C" then -- Collectible name = (showIcon and "{{Collectible"..id.."}} " or "")..EID:getObjectName(5, 100, id) elseif indicator == "T" then -- Trinket @@ -780,9 +788,24 @@ end -- Tries to read special markup used to generate icons for all Collectibles/Trinkets and the default Cards/Pills -- Returns an inlineIcon Object or nil if no parsing was possible function EID:createItemIconObject(str) - local collID,numReplace = string.gsub(str, "Collectible", "") local item = nil local subTypeIdentifier = 0 + + -- Check for {{Item#.##.###}} markup; easiest way to handle it is to just call this function again + local itemID,numReplaceGeneric = string.gsub(str, "Item", "") + if numReplaceGeneric > 0 and itemID ~= "" then + local Type, Var, Sub = EID:SplitTVS(itemID) + if Type == 1 then return EID:getIcon("Player" .. Sub) + elseif Type == 5 then + if Var == 100 then return EID:createItemIconObject("Collectible" .. Sub) + elseif Var == 350 then return EID:createItemIconObject("Trinket" .. Sub) + elseif Var == 300 then return EID:createItemIconObject("Card" .. Sub) + elseif Var == 70 then return EID:createItemIconObject("Pill" .. Sub) + end + end + end + + local collID,numReplace = string.gsub(str, "Collectible", "") if numReplace > 0 and collID ~= "" and tonumber(collID) ~= nil then item = EID.itemConfig:GetCollectible(tonumber(collID)) subTypeIdentifier = tonumber(collID) @@ -1163,38 +1186,137 @@ function EID:updateDescriptionsViaTable(changeTable, tableToUpdate) end end +-- Converts e.g. "5.100.69" format strings into 5, 100, and 69; returns 0 for any not included +function EID:SplitTVS(tvsString) + local Type, Var, Sub = 0, 0, 0 + local tvsTable = {} + for i in string.gmatch(tvsString, "[^.]+") do table.insert(tvsTable, tonumber(i)) end + Type = tvsTable[1] or Type; Var = tvsTable[2] or Var; Sub = tvsTable[3] or Sub; + return Type, Var, Sub +end + +-- Checks if any player has a given item ID (or anyone is a given player ID) +function EID:PlayersHaveItem(Type, Var, Sub) + -- convert "5.100.69" format strings into type, var, sub + if type(Type) == "string" then + Type, Var, Sub = EID:SplitTVS(Type) + -- assume collectible if only Type was given + elseif Var == nil then Sub = Type; Type = 5; Var = 100 end + if Type == 1 then return EID:PlayersHaveCharacter(Sub) + elseif Type == 5 then + if Var == 100 then return EID:PlayersHaveCollectible(Sub) + elseif Var == 350 then return EID:PlayersHaveTrinket(Sub) + elseif Var == 300 then return EID:PlayersHaveCard(Sub) + elseif Var == 70 then return EID:PlayersHavePill(Sub) + end + end + return false +end + +-- Checks if the given player has the given item ID (or is the given player ID) +function EID:PlayerHasItem(player, Type, Var, Sub) + -- convert "5.100.69" format strings into type, var, sub + if type(Type) == "string" then + Type, Var, Sub = EID:SplitTVS(Type) + -- assume collectible if only Type was given + elseif Var == nil then Sub = Type; Type = 5; Var = 100 end + if Type == 1 then return player:GetPlayerType() == Sub + elseif Type == 5 then + if Var == 100 then return player:HasCollectible(Sub) + elseif Var == 350 then return player:HasTrinket(Sub) + elseif Var == 300 then return EID:PlayerHasCard(player, Sub) + elseif Var == 70 then return EID:PlayerHasPill(player, Sub) + end + end + return false +end + -- Checks if any player has a given collectible ID, for modifiers function EID:PlayersHaveCollectible(collectibleID) for i = 0, game:GetNumPlayers() - 1 do local player = Isaac.GetPlayer(i) if player:HasCollectible(collectibleID) then - return true, player + return true, player, i end end return false end +function EID:PlayersVoidedCollectible(collectibleID) + for i = 0, game:GetNumPlayers() - 1 do + local player = Isaac.GetPlayer(i) + if player:HasCollectible(477) and EID.absorbedItems[tostring(i)] and EID.absorbedItems[tostring(i)][tostring(collectibleID)] then + return true, player, i + end + end + return false +end +function EID:PlayerVoidedCollectible(player, collectibleID) + local i = EID:getPlayerID(player) + if player:HasCollectible(477) and EID.absorbedItems[tostring(i)] and EID.absorbedItems[tostring(i)][tostring(collectibleID)] then + return true + end +end + -- Checks if any player has a given trinket ID, for modifiers function EID:PlayersHaveTrinket(trinketID) for i = 0, game:GetNumPlayers() - 1 do local player = Isaac.GetPlayer(i) if player:HasTrinket(trinketID) then - return true, player + return true, player, i end end return false end +function EID:PlayersHaveCard(cardID) + for i = 0, game:GetNumPlayers() - 1 do + local player = Isaac.GetPlayer(i) + for j = 0, (EID.isRepentance and 3 or 1) do + if player:GetCard(j) == cardID then + return true, player, i + end + end + end + return false +end +function EID:PlayerHasCard(player, cardID) + for j = 0, (EID.isRepentance and 3 or 1) do + if player:GetCard(j) == cardID then + return true + end + end +end + +function EID:PlayersHavePill(pillID) + for i = 0, game:GetNumPlayers() - 1 do + local player = Isaac.GetPlayer(i) + for j = 0, (EID.isRepentance and 3 or 1) do + if player:GetPill(j) == pillID then + return true, player, i + end + end + end + return false +end +function EID:PlayerHasPill(player, pillID) + for j = 0, (EID.isRepentance and 3 or 1) do + if player:GetPill(j) == pillID then + return true + end + end +end + -- Checks if someone is playing as a certain character, for modifiers -- includeTainted means we don't care if the player is Tainted or not (for things that, say, apply to Lost/Tainted Lost) function EID:PlayersHaveCharacter(playerType, includeTainted) for i = 0, game:GetNumPlayers() - 1 do local player = Isaac.GetPlayer(i) if player:GetPlayerType() == playerType then - return true, player + return true, player, i end if includeTainted and EID.isRepentance and EID.TaintedToRegularID[player:GetPlayerType()] == playerType then - return true, player + return true, player, i end end return false diff --git a/features/eid_conditionals.lua b/features/eid_conditionals.lua index a64d84d8..478a1a42 100644 --- a/features/eid_conditionals.lua +++ b/features/eid_conditionals.lua @@ -19,12 +19,13 @@ Argument 4: Optional table that can define a variety of different settings -- General conditions -- Tarot Cloth (AB+ and Rep) (fallback to English because most are just find+replace) if not EID.isRepentance then - EID:AddCollectibleConditional("5.300", 451, nil, {locTable = "tarotClothBuffsAB", replaceColor = "ColorShinyPurple", noFallback = false}) -else EID:AddCollectibleConditional("5.300", 451, nil, {locTable = "tarotClothBuffs", replaceColor = "ColorShinyPurple", noFallback = false}) end -EID:AddCollectibleConditional("5.100", 356, EID.CheckForCarBattery, {locTable = "carBattery", replaceColor = "BlinkYellowGreen", noFallback = false}) -- Car Battery + EID:AddItemConditional("5.300", 451, nil, {locTable = "tarotClothBuffsAB", replaceColor = "ColorShinyPurple", noFallback = false}) +else EID:AddItemConditional("5.300", 451, nil, {locTable = "tarotClothBuffs", replaceColor = "ColorShinyPurple", noFallback = false}) end +EID:AddItemConditional("5.100", 356, EID.CheckForCarBattery, {locTable = "carBattery", replaceColor = "BlinkYellowGreen", noFallback = false}) -- Car Battery +EID:AddItemConditional("5.100", 247, EID.CheckForBFFS, {locTable = "BFFSSynergies", replaceColor = "BlinkPink", noFallback = false}) -- BFFS! -- IV Bag conditions (need to be applied in a specific order) -EID:AddCollectibleConditional(135, 75, "PHD") -- PHD improves IV Bag +EID:AddItemConditional(135, 75, "PHD") -- PHD improves IV Bag EID:AddPlayerConditional(135, 14, "Keeper 0-1") -- Keeper gets 0-1 coins if EID.isRepentance then EID:AddConditional(135, EID.IsHardMode, "Hard Mode") end -- Hard Mode pays out less @@ -55,10 +56,13 @@ EID:AddPlayerConditional(501, 14) -- Keeper + Greed's Gullet EID:AddPlayerConditional(230, 14, "Keeper") -- Keeper + Abaddon -- Item Synergies -EID:AddSynergyConditional(7, 34) -- Martyr + Book of Belial/The Devil -EID:AddCollectibleConditional("5.300.16", 7) -- Martyr + Book of Belial/The Devil +EID:AddSynergyConditional(7, {34, "5.300.16"}) -- Martyr + Book of Belial/The Devil EID:AddSynergyConditional(316, 260) -- Black Candle + Cursed Eye -EID:AddCollectibleConditional("5.300.48", 286, nil, { lineColor = "ColorSilver" }) -- Blank Card + ? Card +EID:AddItemConditional("5.300.48", 286, nil, { lineColor = "ColorSilver" }) -- Blank Card + ? Card + +EID:AddSynergyConditional({475, "5.300.46"}, {210}, "Suicide 1", "Suicide 2") -- Plan C + Gnawed Leaf +EID:AddSynergyConditional({475, "5.300.46"}, {276, 313}, "Suicide 1", "Suicide 2") -- Plan C, Suicide King + Isaac's Heart, Holy Mantle +EID:AddSynergyConditional(368, {69, 118, 316, 229, 395, 114, 329}, "Almost No Effect") -- Epiphora + Charge Shots / Ludovico -- 9 Volt + 1 Room/Timed Charges -- This got a bit complicated, since it looks at a trait of every collectible + you having another, but hey, it's compact @@ -67,24 +71,37 @@ EID:AddConditional(116, function() return EID:CheckPlayersForActiveChargeType(ni EID:AddConditional("5.100", function(descObj) return EID:PlayersHaveCollectible(116) and EID:CheckActiveChargeType(descObj.ObjSubType, 1) end, "1 Room", { bulletpoint = "Collectible116" }) EID:AddConditional("5.100", function(descObj) return EID:PlayersHaveCollectible(116) and EID:CheckActiveChargeType(descObj.ObjSubType, nil, 1) end, "Timed", { bulletpoint = "Collectible116" }) --- Overridden by Brimstone +-- Items that have no effect from multiple copies (AddSelfConditional adds it when holding Diplopia automatically) +-- 3 Dollar Bill, +EID:AddSelfConditional({191}, "No Effect (Copies)") +if not EID.isRepentance then + -- Anti-Gravity, + EID:AddSelfConditional({222}, "No Effect (Copies)") +end +if EID.isRepentance then + -- 2Spooky, + EID:AddSelfConditional({554}, "No Effect (Copies)") +end + +-- Overridden / Overrides by Epic Fetus, Brimstone, Mom's Knife -- Haven't done it yet but I'm sure preparing the system for it --- Remember most of these will be AB+ only (not EID.isRepentance) +-- Remember some of these will be AB+ only (not EID.isRepentance) -- AB+ only conditionals if not EID.isRepentance then - EID:AddCollectibleConditional(205, {116, 276}, "No Effect") -- Sharp Plug + 9 Volt, Isaac's Heart - EID:AddCollectibleConditional(205, 108, "Wafer") -- Sharp Plug + The Wafer + EID:AddItemConditional(205, {116, 276}, "No Effect") -- Sharp Plug + 9 Volt, Isaac's Heart + EID:AddItemConditional(205, 108, "Wafer") -- Sharp Plug + The Wafer EID:AddSynergyConditional(205, 441, "Can't Charge", "Can't Be Charged") -- Sharp Plug + Mega Blast EID:AddConditional(208, function() return EID:IsHardMode() end) -- Champion Belt end +-- Rep only conditionals if EID.isRepentance then -- General conditions - EID:AddCollectibleConditional("5.100", 706, nil, { locTable = "abyssSynergies", lineColor = "ColorRed" }, false) -- Abyss (no item reminder) - EID:AddCollectibleConditional("5.100", 59, nil, { locTable = "bookOfBelialBuffs" }) -- Belial Birthright - EID:AddCollectibleConditional("5.100", 664, nil, { locTable = "bingeEaterBuffs" }) -- Binge Eater + EID:AddItemConditional("5.100", 706, nil, { locTable = "abyssSynergies", lineColor = "ColorRed" }, false) -- Abyss (no item reminder) + EID:AddItemConditional("5.100", 59, nil, { locTable = "bookOfBelialBuffs" }) -- Belial Birthright + EID:AddItemConditional("5.100", 664, nil, { locTable = "bingeEaterBuffs" }) -- Binge Eater -- Co-op friendly items -- todo: which? (extension cord) @@ -107,6 +124,8 @@ if EID.isRepentance then EID:AddPlayerConditional(360, 13) -- Incubus + Lilith EID:AddPlayerConditional({ 240, 644 }, 21) -- Tainted Isaac + Experimental Treatment, Consolation Prize EID:AddPlayerConditional({ 642, 694 }, 10) -- Lost + Magic Skin, Heartbreak + EID:AddPlayerConditional(694, 14, "Keeper", nil, false) -- Keeper + Heartbreak + EID:AddPlayerConditional(694, 33, "Tainted Keeper") -- Tainted Keeper + Heartbreak EID:AddPlayerConditional("5.350.156", 14) -- Keeper + Mother's Kiss EID:AddPlayerConditional(230, 18, "Bethany", nil, false) -- Bethany + Abaddon EID:AddPlayerConditional(230, 36, "Tainted Bethany") -- Tainted Bethany + Abaddon @@ -115,15 +134,16 @@ if EID.isRepentance then EID:AddPlayerConditional(205, 22, "Tainted Magdalene")-- Tainted Magdalene + Sharp Plug -- Item Synergies - EID:AddCollectibleConditional(201, 147) -- Iron Bar refills Notched Axe - EID:AddCollectibleConditional("5.350.172", 260) -- Black Candle + Cursed Penny - EID:AddCollectibleConditional(501, 416) -- Greed's Gullet + Deep Pockets + EID:AddItemConditional(201, 147) -- Iron Bar refills Notched Axe + EID:AddItemConditional("5.350.172", 260) -- Black Candle + Cursed Penny + EID:AddItemConditional(501, 416) -- Greed's Gullet + Deep Pockets EID:AddSynergyConditional(245, { 2, 153, 169 }, nil, "20/20") -- 20/20 + The Inner Eye, Mutant Spider, Polyphemus EID:AddSynergyConditional(330, 561, "Overridden", "Overrides") -- Soy Milk + Almond Milk - --TODO: SYNERGY CONDITIONAL DOESN'T WORK WITH TRINKETS YET, nothing I have works with trinkets yet really. need to detect trinket strings and handle them properly, and make a ConditionalTrinketCheck or something - --EID:AddSynergyConditional(596, {"5.350.118", 704, 62, "5.350.60", 520, 411, 621, "5.350.58", "5.350.189", 657}, "Ice Tears") -- Uranus + On Kill Effects - EID:AddSynergyConditional(596, {704, 62, 520, 411, 621, 657}, "Ice Tears") -- Uranus + On Kill Effects + EID:AddSynergyConditional({577, 656}, {276, 313}, "Suicide 1", "Suicide 2") -- Damocles + Isaac's Heart, Holy Mantle + EID:AddSynergyConditional({577, 656, 475, "5.300.46"}, {674, 694}, "Suicide 1", "Suicide 2") -- Damocles, Plan C, Suicide King + Spirit Shackles, Heartbreak + + EID:AddSynergyConditional(596, {"5.350.118", 704, 62, "5.350.60", 520, 411, 621, "5.350.58", "5.350.189", 657}, "Ice Tears") -- Uranus + On Kill Effects EID:AddPlayerConditional(596, 27, "Ice Tears") -- Uranus + Tainted Samson -- 9 Volt, Sharp Plug + Special Charge Actives diff --git a/features/eid_conditionals_funcs.lua b/features/eid_conditionals_funcs.lua index 844a38e6..12fe6983 100644 --- a/features/eid_conditionals_funcs.lua +++ b/features/eid_conditionals_funcs.lua @@ -44,28 +44,41 @@ function EID:AddConditional(IDs, funcText, modText, extraTable, insertPoint) end end --- Easy to use functions for conditionals that rely on having a specific collectible/character --- By default, they'll have a bulletpoint for the coll/char, and {1} becomes the coll/char's name +-- Easy to use functions for conditionals that rely on having a specific item/character +-- By default, they'll have a bulletpoint for the item/char, and {1} becomes the item/char's name -- checkInReminder is for if a synergy is no longer relevant once the item isn't obtainable (e.g. Abyss locusts) (true by default) -function EID:AddCollectibleConditional(IDs, ownedIDs, modText, extraTable, checkInReminder) +function EID:AddItemConditional(IDs, ownedIDs, modText, extraTable, checkInReminder) if type(ownedIDs) ~= "table" then ownedIDs = { ownedIDs } end if checkInReminder == nil then checkInReminder = true end extraTable = extraTable or {} for _, ownedID in ipairs(ownedIDs) do EID.collectiblesToCheck[ownedID] = true local newTable = {}; for k, v in pairs(extraTable) do newTable[k] = v end - if newTable.variableText == nil then newTable.variableText = "{{NameOnlyC" .. ownedID .. "}}" end - if newTable.bulletpoint == nil then newTable.bulletpoint = "Collectible" .. ownedID end - EID:AddConditional(IDs, function() return EID:ConditionalCollCheck(ownedID, checkInReminder) end, modText, newTable) + local tvs = ownedID; if type(ownedID) == "number" then tvs = "5.100." .. ownedID end + + if newTable.variableText == nil then newTable.variableText = "{{NameOnly" .. tvs .. "}}" end + if newTable.bulletpoint == nil then newTable.bulletpoint = "Item" .. tvs end + EID:AddConditional(IDs, function() return EID:ConditionalItemCheck(ownedID, checkInReminder) end, modText, newTable) end end -- For adding pairs of abilities to collectibles; you can define a different modifier text for each of them -- example: EID:AddSynergyConditional({list of IDs overridden by Brimstone}, Brimstone, "Overridden", "Overrides") function EID:AddSynergyConditional(IDs, ownedIDs, modText1, modText2, extraTable1, extraTable2, checkInReminder) - EID:AddCollectibleConditional(IDs, ownedIDs, modText1, extraTable1, checkInReminder) - EID:AddCollectibleConditional(ownedIDs, IDs, modText2 or modText1, extraTable2 or extraTable1, checkInReminder) + EID:AddItemConditional(IDs, ownedIDs, modText1, extraTable1, checkInReminder) + EID:AddItemConditional(ownedIDs, IDs, modText2 or modText1, extraTable2 or extraTable1, checkInReminder) +end + +-- For adding a conditional that looks at owning itself; item reminder is of course disabled +-- Holding Diplopia should probably also trigger this type of conditional, so it's included by default +function EID:AddSelfConditional(ownedIDs, modText, extraTable, includeDiplopia) + if type(ownedIDs) ~= "table" then ownedIDs = { ownedIDs } end + if includeDiplopia == nil then includeDiplopia = true end + for _, ownedID in ipairs(ownedIDs) do + if includeDiplopia then EID:AddItemConditional(ownedID, {ownedID, 347}, modText, extraTable, false) + else EID:AddItemConditional(ownedID, ownedID, modText, extraTable, false) end + end end -- includeTainted is for if you want to check the normal and tainted version of a character (true by default) @@ -84,47 +97,36 @@ end ----- Evaluation Functions ----- +function EID:ConditionalItemCheck(itemID, checkInReminder) + if EID.InsideItemReminder then + if not checkInReminder then return false end + local player = EID.ItemReminderPlayerEntity + if EID:PlayerHasItem(player, itemID) or EID:PlayerVoidedCollectible(player, itemID) then return true end + else + return EID.collectiblesOwned[itemID] or EID.collectiblesAbsorbed[itemID] + end +end + function EID:ConditionalCharCheck(playerType, includeTainted) -- We don't want to display irrelevant item info inside the Item Reminder if EID.InsideItemReminder then - local player = EID:ItemReminderGetAllPlayers()[EID.ItemReminderSelectedPlayer + 1] or EID.player + local player = EID.ItemReminderPlayerEntity if player:GetPlayerType() == playerType then return true elseif includeTainted and EID.isRepentance and EID.TaintedToRegularID[player:GetPlayerType()] == playerType then return true - else - return false end else return EID:PlayersHaveCharacter(playerType, includeTainted) end end -function EID:ConditionalCollCheck(collectibleID, checkInReminder) - -- We don't want to display irrelevant item info inside the Item Reminder - if EID.InsideItemReminder then - if not checkInReminder then return false end - local player = EID:ItemReminderGetAllPlayers()[EID.ItemReminderSelectedPlayer + 1] or EID.player - if player:HasCollectible(collectibleID) then return true end - -- Check for the item being inside the Item Reminder player's Void (not sure if this is ever relevant...) - if player:HasCollectible(477) then - local playerID = EID:getPlayerID(player) - if EID.absorbedItems[tostring(playerID)] and EID.absorbedItems[tostring(playerID)][tostring(collectibleID)] then - return true - end - end - else - return EID.collectiblesOwned[collectibleID] or EID.collectiblesAbsorbed[collectibleID] - end - return false -end - function EID:IsGreedMode() return game:IsGreedMode() end function EID:IsGreedModePlusTarot() - return game:IsGreedMode() and EID:ConditionalCollCheck(451, true) + return game:IsGreedMode() and EID:ConditionalItemCheck(451, true) end function EID:IsHardMode() @@ -156,6 +158,22 @@ function EID:CheckForCarBattery(descObj) else return descObj.ObjSubType end end +function EID:CheckForBFFS(descObj) + local config = EID.itemConfig:GetCollectible(descObj.ObjSubType) + -- Check for no effect, then the table of synergies (will we end up not doing the defualt "double damage" text?) + if EID.BFFSNoSynergy[descObj.ObjSubType] then return "No Effect" end + + if config ~= nil and config.Type == ItemType.ITEM_FAMILIAR then + return descObj.fullItemString + end + return "N/A" +end + +function EID:CheckForHiveMind(descObj) + if EID.HiveMindFamiliars[descObj.ObjSubType] then return descObj.fullItemString end + return "N/A" +end + -- Check for a player having an active item with a specific quantity of charges, or charge type -- 0 = normal, 1 = timed, 2 = special function EID:CheckPlayersForActiveChargeType(maxCharge, chargeType) @@ -236,7 +254,7 @@ function EID:applyConditionals(descObj) local typeVar = descObj.ObjType.."."..descObj.ObjVariant -- for general conditions (Tarot Cloth, Book of Virtues) local typeVarSub = descObj.fullItemString -- for specific conditions - -- Combine general+specific conditions into one table + -- Combine specific+generic conditions into one table (in that order) local conds = {} if EID.DescriptionConditions[typeVarSub] then TableConcat(conds, EID.DescriptionConditions[typeVarSub]) end if EID.DescriptionConditions[typeVar] then TableConcat(conds, EID.DescriptionConditions[typeVar]) end @@ -286,24 +304,33 @@ function EID:applyConditionals(descObj) -- Table with 2+ entries = find and replace pairs -- Entry 1 is replaced with entry 2, entry 3 is replaced with entry 4, etc. + -- If there's an odd number of entries, the last one is appended else local pos = 1 while pos < #text do local toFind = text[pos] - local replaceWith = EID:ReplaceVariableStr(text[pos + 1], 1, variableText) - if cond.replaceColor then replaceWith = "{{" .. cond.replaceColor .. "}}" .. replaceWith .. "{{CR}}" end - --"%d*%.?%d+" will grab every number group (1, 10, 0.5), this will allow us to not replace the "1" in "10" erroneously - if (type(toFind) == "number") then - local count = 0 - descObj.Description = string.gsub(descObj.Description, "%d*%.?%d+", function(s) - if (s == tostring(toFind) and count == 0) then - count = count + 1 - return replaceWith - end - end) - -- Basic find+replace for non-numbers + if text[pos + 1] then + local replaceWith = EID:ReplaceVariableStr(text[pos + 1], 1, variableText) + if cond.replaceColor then replaceWith = "{{" .. cond.replaceColor .. "}}" .. replaceWith .. "{{CR}}" end + --"%d*%.?%d+" will grab every number group (1, 10, 0.5), this will allow us to not replace the "1" in "10" erroneously + if (type(toFind) == "number") then + local count = 0 + descObj.Description = string.gsub(descObj.Description, "%d*%.?%d+", function(s) + if (s == tostring(toFind) and count == 0) then + count = count + 1 + return replaceWith + end + end) + -- Basic find+replace for non-numbers + else + descObj.Description = replace(descObj.Description, tostring(toFind), replaceWith, 1) + end else - descObj.Description = replace(descObj.Description, tostring(toFind), replaceWith, 1) + toFind = EID:ReplaceVariableStr(toFind, 1, variableText) + local iconStr = "#" + if bulletpoint then iconStr = iconStr .. "{{" .. bulletpoint .. "}} " end + if cond.lineColor then iconStr = iconStr .. "{{" .. cond.lineColor .. "}}" end + EID:appendToDescription(descObj, iconStr .. toFind:gsub("#", iconStr)) end pos = pos + 2 end diff --git a/features/eid_data.lua b/features/eid_data.lua index 1ae70a93..537e630a 100644 --- a/features/eid_data.lua +++ b/features/eid_data.lua @@ -731,6 +731,11 @@ EID.InlineColors = { local c = EID.InlineColors return SwagColors({c["ColorYellow"], c["ColorRed"]}) end, + -- Pink for BFFs <3, the two shades come from Nancy Bombs and Eraser + ["BlinkPink"] = function(_) + local c = EID.InlineColors + return SwagColors({KColor(1, 0.698, 0.886, 1), KColor(1, 0.5, 1, 1)}) + end, -- Shiny purple color effect ["ColorShinyPurple"] = function(_) return SwagColors({KColor(0.812, 0.627, 1, 1), KColor(0.62, 0.251, 1, 1)}, 40) @@ -940,17 +945,21 @@ if EID.isRepentance then end -- Familiars that have no effect from BFFS! -EID.BFFSNoSynergy = { [11] = true, [81] = true, [238] = true, [239] = true, [243] = true, [265] = true, [268] = true, [269] = true, [278] = true, [280] = true, [281] = true, [387] = true, [404] = true, [405] = true, [431] = true, [436] = true, [469] = true, [472] = true, [492] = true, [516] = true, [528] = true, [542] = true, [543] = true } --- todo: this table is wrong, for instance brown nugget didnt have one and then got one +EID.BFFSNoSynergy = { [10] = true, [11] = true, [81] = true, [178] = true, [238] = true, [239] = true, [243] = true, [265] = true, [268] = true, [269] = true, [276] = true, [278] = true, [280] = true, [281] = true, [387] = true, [404] = true, [431] = true, [433] = true, [436] = true, [467] = true, [469] = true, [472] = true, [492] = true, [504] = true, [516] = true, [528] = true, [542] = true, [543] = true } if EID.isRepentance then - EID.BFFSNoSynergy[504] = true -- Brown Nugget + EID.BFFSNoSynergy[178] = false -- Holy Water + EID.BFFSNoSynergy[276] = false -- Isaac's Heart + EID.BFFSNoSynergy[405] = true -- GB Bug + EID.BFFSNoSynergy[467] = false -- Finger! + EID.BFFSNoSynergy[504] = false -- Brown Nugget EID.BFFSNoSynergy[567] = true -- Paschal Candle + EID.BFFSNoSynergy[615] = true -- Lil Dumpy (I couldn't notice any change anyway) EID.BFFSNoSynergy[651] = true -- Star of Bethlehem EID.BFFSNoSynergy[697] = true -- Vanishing Twin end --- Familiars that have a BFFS! effect from Hive Mind -EID.HiveMindFamiliars = {} +-- Familiars that count for Hive Mind in Repentance (although it could give them No Effect if it just increases size) +EID.HiveMindFamiliars = { [10] = true, [57] = true, [128] = true, [170] = true, [264] = true, [272] = true, [274] = true, [279] = true, [320] = true, [364] = true, [365] = true, [403] = true, [426] = true, [430] = true, [504] = true, [511] = true, [575] = true, [581] = true, [629] = true, } -- Tainted character's respective normal version ID, for conditionals that apply to both versions of the character -- To help with other character pairs, Esau = Jacob, Dead Tainted Lazarus = Tainted Lazarus, Tainted Soul = Tainted Forgotten @@ -971,6 +980,10 @@ EID.blankCardHidden = {[32]=true,[33]=true,[34]=true,[35]=true,[36]=true,[37]=tr -- Cards that are treated as runes EID.runeIDs = {[32]=true,[33]=true,[34]=true,[35]=true,[36]=true,[37]=true,[38]=true,[39]=true,[40]=true,[41]=true,[55]=true,[81]=true,[82]=true,[83]=true,[84]=true,[85]=true,[86]=true,[87]=true,[88]=true,[89]=true,[90]=true,[91]=true,[92]=true,[93]=true,[94]=true,[95]=true,[96]=true,[97]=true,} +-- "Evil" item IDs for Black Feather +EID.blackFeatherItems = {[215]=true,[216]=true,[230]=true,[260]=true,[262]=true,[339]=true,[344]=true} +if EID.isRepentance then EID.blackFeatherItems[654] = true end +EID.blackFeatherTrinkets = {[17]=true,[22]=true} ---------------- BAG OF CRAFTING DATA ------------------ diff --git a/features/eid_holdmapdesc.lua b/features/eid_holdmapdesc.lua index 2b49b13e..2993bde4 100644 --- a/features/eid_holdmapdesc.lua +++ b/features/eid_holdmapdesc.lua @@ -12,6 +12,7 @@ EID.ItemReminderSelectedCategory = 0 -- Currently selected category EID.ItemReminderSelectedPlayer = 0 -- Currently selected player EID.ItemReminderSelectedItem = 0 -- Currently selected Item EID.InsideItemReminder = false -- Disable some modifiers, when building the Item Reminder description +EID.ItemReminderPlayerEntity = nil -- for description modifiers to reference -- TODO: -- crooked penny cheats. 404/liberty cap/broken syringe/etc. "what item is it" @@ -72,7 +73,6 @@ EID.ItemReminderDescriptionModifier = { ---------------- Passive Items ---------------- ["5.100.392"] = { -- Zodiac isHiddenInfo = true, - isRepentance = true, modifierFunction = function(descObj, player) local zodiacItem = player:GetZodiacEffect() if zodiacItem > 0 then @@ -121,11 +121,10 @@ EID.ItemReminderDescriptionModifier = { ["5.100.44"] = { -- Teleport! location isCheat = true, - isRepentance = true, - -- The result preview changes as soon as we activate Teleport, which looks awkward, so try to not display the result while mid-teleport. - -- Doesn't work perfectly and only in Rep modifierFunction = function(descObj, player) - if player:GetSprite():GetAnimation() ~= "TeleportUp" then + -- The result preview changes as soon as we activate Teleport, which looks awkward, so try to not display the result while mid-teleport. + -- Doesn't work perfectly and only in Rep + if not EID.isRepentance or player:GetSprite():GetAnimation() ~= "TeleportUp" then EID:ItemReminderAddResultHeaderSuffix(descObj) descObj.Description = EID:Teleport1Prediction(EID:GetItemSeed(player, 44)) end @@ -310,10 +309,12 @@ function EID:ItemReminderAddDescription(player, entityType, variant, subType, ex local specialDesc = EID.ItemReminderDescriptionModifier[objectID] if specialDesc and type(specialDesc.modifierFunction) == "function" then - -- dont add, if description modifier is a cheat and cheats are disabled - local evalShowCheat = not (specialDesc.isCheat and not EID.Config["ItemReminderShowRNGCheats"]) - local evalShowHidden = not (specialDesc.isHidden and not EID.Config["ItemReminderShowHiddenInfo"]) - if evalShowCheat or evalShowHidden then + -- don't add, if description modifier is a cheat and cheats are disabled + local evaluateFunction = true + if (specialDesc.isCheat and not EID.Config["ItemReminderShowRNGCheats"]) then evaluateFunction = false end + if (specialDesc.isHiddenInfo and not EID.Config["ItemReminderShowHiddenInfo"]) then evaluateFunction = false end + if (specialDesc.isRepentance and not EID.isRepentance) then evaluateFunction = false end + if evaluateFunction then specialDesc.modifierFunction(descObj, player) end end @@ -598,6 +599,7 @@ function EID:ItemReminderGetDescription() for key, _ in pairs(EID.ItemReminderBlacklist) do currentBlacklist[key] = true end local player = EID:ItemReminderGetAllPlayers()[EID.ItemReminderSelectedPlayer + 1] or EID.player -- use main player as fallback + EID.ItemReminderPlayerEntity = player -- for description modifiers to reference if EID.ItemReminderSelectedCategory == 0 or EID.Config["ItemReminderDisplayMode"] == "Classic" then -- execute all functions defined per category diff --git a/features/eid_modifiers.lua b/features/eid_modifiers.lua index f8acef4c..db0278a6 100644 --- a/features/eid_modifiers.lua +++ b/features/eid_modifiers.lua @@ -3,12 +3,12 @@ local game = Game() EID.TabPreviewID = 0 -- Modifiers switching the previewed description can cause infinite loops or undesired text, use this to help prevent it EID.inModifierPreview = false --- The "Hold Map Helper" needs to know if it shouldn't display because we're in a Hold Tab desc +-- The "Item Reminder" needs to know if it shouldn't display because we're in a Hold Tab desc EID.TabDescThisFrame = false -- List of collectible IDs for us to check if a player owns them; feel free to add to this in mods that add description modifiers! EID.collectiblesToCheck[CollectibleType.COLLECTIBLE_VOID] = true -EID.collectiblesToCheck[CollectibleType.COLLECTIBLE_BFFS] = true +EID.collectiblesToCheck["5.300.41"] = true -- Black Rune local maxSlot = 1 -- Repentance modifiers if EID.isRepentance then @@ -25,9 +25,6 @@ if EID.isRepentance then end EID.collectiblesOwned = {} EID.collectiblesAbsorbed = {} -EID.blackRuneOwned = false -EID.blackFeatherItems = {[215]=true,[216]=true,[230]=true,[260]=true,[262]=true,[339]=true,[344]=true,[654]=true,} -EID.blackFeatherTrinkets = {[17]=true,[22]=true} EID.LastCollectibleCheck = 0 function EID:CheckPlayersCollectibles() @@ -35,30 +32,17 @@ function EID:CheckPlayersCollectibles() -- (has to be checked regularly due to mechanics like D4 / Tainted Eden) if EID.GameUpdateCount >= EID.LastCollectibleCheck + 15 then EID.LastCollectibleCheck = EID.GameUpdateCount - local numPlayers = game:GetNumPlayers() - local players = {}; for i = 0, numPlayers - 1 do players[i] = Isaac.GetPlayer(i) end for v,_ in pairs(EID.collectiblesToCheck) do EID.collectiblesOwned[v] = false EID.collectiblesAbsorbed[v] = false - for i = 0, numPlayers - 1 do - if players[i]:HasCollectible(v) then - EID.collectiblesOwned[v] = i - break - -- Check for the item being inside this player's Void - -- note: currently Absorb checks are only done as a backup, will always be false if it's owned legitimately - elseif EID.absorbedItems[tostring(i)] and EID.absorbedItems[tostring(i)][tostring(v)] and players[i]:HasCollectible(477) then - EID.collectiblesAbsorbed[v] = i - end - end - end - -- other Card in inventory checks could be done in this loop here if ever desired - EID.blackRuneOwned = false - for i = 0, numPlayers - 1 do - for j = 0, maxSlot do - if players[i]:GetCard(j) == Card.RUNE_BLACK then - EID.blackRuneOwned = i - break - end + -- Check for any player having the item, set collectiblesOwned to that player's ID + local result, player, playerNum = EID:PlayersHaveItem(v) + if result then EID.collectiblesOwned[v] = playerNum + -- Check for the item being inside a player's Void if it's a collectible + -- note: currently Absorb checks are only done as a backup, will always be false if it's owned legitimately + elseif type(v) == "number" then + result, player, playerNum = EID:PlayersVoidedCollectible(v) + if result then EID.collectiblesAbsorbed[v] = playerNum end end end end @@ -93,7 +77,7 @@ local function VoidCallback(descObj, isRune) if EID.GameUpdateCount >= lastVoidCheck + 30 or EID.RecheckVoid then EID:VoidRoomCheck() if EID.collectiblesOwned[477] then EID:VoidRNGCheck(Isaac.GetPlayer(EID.collectiblesOwned[477]), false) end - if EID.blackRuneOwned then EID:VoidRNGCheck(Isaac.GetPlayer(EID.blackRuneOwned), true) end + if EID.collectiblesOwned["5.300.41"] then EID:VoidRNGCheck(Isaac.GetPlayer(EID.collectiblesOwned["5.300.41"]), true) end lastVoidCheck = EID.GameUpdateCount EID.RecheckVoid = false end @@ -229,24 +213,25 @@ local function SacrificeRoomCallback(descObj) return descObj end +-- Handle Black Feather dynamic damage up text +-- TODO: Make this co-op friendly, add conditionals to the black feather items local function BlackFeatherCallback(descObj) local itemCounter = 0 for itemID, _ in pairs(EID.blackFeatherItems) do itemCounter = itemCounter + EID.player:GetCollectibleNum(itemID) end for trinketID, _ in pairs(EID.blackFeatherTrinkets) do - -- in AB+, GetTrinketMultiplier doesn't take an ID, it's just 1 (or 2 with Mom's Box) if EID.isRepentance then itemCounter = itemCounter + EID.player:GetTrinketMultiplier(trinketID) else - if EID.player:GetTrinket(0) == trinketID then itemCounter = itemCounter + EID.player:GetTrinketMultiplier() end - if EID.player:GetTrinket(1) == trinketID then itemCounter = itemCounter + EID.player:GetTrinketMultiplier() end + if EID.player:HasTrinket(trinketID) then itemCounter = itemCounter + 1 end end end - local hasBox = EID.collectiblesOwned[439] + local hasBox = EID.player:HasCollectible(439) local isGolden = EID.isRepentance and ((descObj.ObjSubType & TrinketType.TRINKET_GOLDEN_FLAG) == TrinketType.TRINKET_GOLDEN_FLAG) - local damageMultiplied = 0.5 * itemCounter * (hasBox and 2 or 1) * (isGolden and 2 or 1) + local base = EID.isRepentance and 0.5 or 0.2 + local damageMultiplied = base * itemCounter * (hasBox and 2 or 1) * (isGolden and 2 or 1) local dmgColor = (hasBox or isGolden) and "ColorGold" or "ColorLime" local description = EID:getDescriptionEntry("BlackFeatherInformation") @@ -257,18 +242,6 @@ local function BlackFeatherCallback(descObj) return descObj end -local function BFFSSynergiesCallback(descObj) - local description = EID:getDescriptionEntry("BFFSSynergies", descObj.fullItemString, true) - if EID.BFFSNoSynergy[descObj.ObjSubType] then - description = EID:getDescriptionEntry("BFFSSynergies", "NoEffect") - elseif description == nil then - description = EID:getDescriptionEntry("BFFSSynergies", "DoubleDamage") - end - - EID:appendToDescription(descObj, "#{{Collectible247}} {{ColorOrange}}" .. description .. "{{CR}}") - return descObj -end - if EID.isRepentance then -- Handle Birthright local function BirthrightCallback(descObj) @@ -804,16 +777,9 @@ local function EIDConditionsAB(descObj) if EID.Config["DisplayVoidStatInfo"] then if EID.collectiblesOwned[477] then table.insert(callbacks, VoidCallback) end - if EID.blackRuneOwned then table.insert(callbacks, BlackRuneCallback) end - end - - -- BFF Synergy check - if EID.collectiblesOwned[247] then - local config = EID.itemConfig:GetCollectible(descObj.ObjSubType) - if config ~= nil and config.Type == ItemType.ITEM_FAMILIAR then - table.insert(callbacks, BFFSSynergiesCallback) - end + if EID.collectiblesOwned["5.300.41"] then table.insert(callbacks, BlackRuneCallback) end end + elseif descObj.ObjVariant == PickupVariant.PICKUP_TRINKET then if descObj.ObjSubType == 80 then table.insert(callbacks, BlackFeatherCallback) end end