Merge pull request #473 from Buurazu/master

Hold Map/Tab Description
This commit is contained in:
wofsauge authored and GitHub committed 2022-06-13 14:17:40 +02:00
commit 2ad2bfff61
13 files changed
+504 -66

No files matched your search

+14 -8
View File
@@ -234,7 +234,7 @@ EID.descriptions[languageCode].collectibles={
{"212", "Guppy's Collar", "50% chance to revive with half a heart on death"},
{"213", "Lost Contact", "Shielded tears#Tears block enemy shots#↓ {{Shotspeed}} -0.15 Shot Speed down"},
{"214", "Anemic", "↑ {{Range}} +5 Range up#Leave a trail of damaging creep after taking damage"},
{"215", "Goat Head", "{{AngelDevilChance}} 100% chance for Devil/Angel Rooms"},
{"215", "Goat Head", "{{AngelDevilChance}} 100% chance for Devil/Angel Rooms to spawn"},
{"216", "Ceremonial Robes", "↑ {{Damage}} +1 Damage up#{{BlackHeart}} +3 Black Hearts"},
{"217", "Mom's Wig", "Random chance to spawn blue spider when shooting tears#{{Heart}} Heals 1 Red Heart"},
{"218", "Placenta", "↑ {{Heart}} +1 Health up#{{HalfHeart}} Chance to heal half a heart every minute"},
@@ -256,7 +256,7 @@ EID.descriptions[languageCode].collectibles={
{"234", "Infestation 2", "Spawn spiders when you kill an enemy"},
{"235", "", "<item does not exist>"},
{"236", "E. Coli", "On touch, turn enemies into poop"},
{"237", "Death's Touch", "Scythe tears!#↑ +1.5 Damage up#↓ -0.3 Tears down#Piercing tears"},
{"237", "Death's Touch", "Scythe tears!#↑ +1.5 Damage up#↑ Tear size up#↓ -0.3 Tears down#Piercing tears"},
{"238", "Key Piece 1", "!!! Key piece for Mega Satan door!#{{AngelChance}} 25% higher Angel Room chance"},
{"239", "Key Piece 2", "!!! Key piece for Mega Satan door!#{{AngelChance}} 25% higher Angel Room chance"},
{"240", "Experimental Treatment", "All Stats ↑/↓ a random number"},
@@ -345,7 +345,7 @@ EID.descriptions[languageCode].collectibles={
{"321", "Samson's Chains", "Draggable ball that can destroy rocks#Deals 10.7 contact damage per second"},
{"322", "Mongo Baby", "Copies the effect of one of your familiars#Deals double its damage"},
{"323", "Isaac's Tears", "Shoot 8 tears in all directions when used#Recharges by shooting"},
{"324", "Undefined", "Teleports you to the {{TreasureRoom}} Treasure, {{SecretRoom}} Secret, {{SuperSecretRoom}} Super Secret or I AM ERROR Room"},
{"324", "Undefined", "Teleports you to the {{TreasureRoom}} Treasure, {{SecretRoom}} Secret, {{SuperSecretRoom}} Super Secret or {{ErrorRoom}} I AM ERROR Room"},
{"325", "Scissors", "Cut off your head#Head turns into stationary familiar#Control your body separately"},
{"326", "Breath of Life", "Hold down space until chargebar is empty for invincibility#!!! Don't hold it for too long or you will start taking damage!"},
{"327", "The Polaroid", "Invincibility when getting hit and at half a Red Heart or none"},
@@ -440,7 +440,7 @@ EID.descriptions[languageCode].collectibles={
{"416", "Deep Pockets", "Allows you to carry two cards/pills/runes"},
{"417", "Succubus", "Bounces around the room with a damaging aura, dealing 129% of your damage every second#↑ {{Damage}} +50% Damage while standing in the aura"},
{"418", "Fruit Cake", "Gives you a different tear effect with every tear that you fire"},
{"419", "Teleport 2.0", "Teleports you to another random room that has not been cleared yet#Hierarchy: {{Room}}>{{BossRoom}}>{{SuperSecretRoom}}>{{Shop}}>{{TreasureRoom}}>{{SacrificeRoom}}> {{DiceRoom}}>{{Library}}>{{CursedRoom}}>{{MiniBoss}}>{{ChallengeRoom}}>{{IsaacsRoom}}> {{ArcadeRoom}}>{{ChestRoom}}>{{SecretRoom}}>{{DevilRoom}}{{AngelRoom}}> Error-Room"},
{"419", "Teleport 2.0", "Teleports you to another random room that has not been cleared yet#Hierarchy: {{Room}}>{{BossRoom}}>{{SuperSecretRoom}}>{{Shop}}>{{TreasureRoom}}>{{SacrificeRoom}}> {{DiceRoom}}>{{Library}}>{{CursedRoom}}>{{MiniBoss}}>{{ChallengeRoom}}{{BossRushRoom}}>{{IsaacsRoom}}{{BarrenRoom}}> {{ArcadeRoom}}>{{ChestRoom}}>{{SecretRoom}}>{{DevilRoom}}{{AngelRoom}}>{{ErrorRoom}}"},
{"420", "Black Powder", "Walking in a circle will spawn a pentagram symbol on the floor, which deals 10 damage per tick"},
{"421", "Kidney Bean", "{{Charm}} Applies charm effect to any enemies in close range and deals 5 damage to them"},
{"422", "Glowing Hour Glass", "Rewind time and put you back in the previous room, in the same state you were in at that moment"},
@@ -508,7 +508,7 @@ EID.descriptions[languageCode].collectibles={
{"484", "Wait What?", "Upon use, pushes enemies away and spawn a wave of rocks#Can open rooms and break rocks"},
{"485", "Crooked Penny", "50% chance to double all items, consumables and chests in room#50% chance to remove items / pickups in room and spawn 1 coin"},
{"486", "Dull Razor", "Hurts you without damaging you#Can trigger item effects"},
{"487", "Potato Peeler", "Removes one Red Heart Container and gives you: #↑ {{Damage}} +0.2 Damage#{{Collectible73}} A Cube of Meat"},
{"487", "Potato Peeler", "Removes one Red Heart Container and gives you: #↑ {{Damage}} +0.2 Damage up#{{Collectible73}} A Cube of Meat#↑ {{Range}} +5 Range and leave a trail of blood creep for the current room"},
{"488", "Metronome", "Grants a random item's effect for the current room"},
{"489", "D Infinity", "Random dice effect each use"},
{"490", "Eden's Soul", "!!! SINGLE USE !!!#Spawns 2 random items depending on the current room's item pool#Starts with no charges"},
@@ -520,7 +520,7 @@ EID.descriptions[languageCode].collectibles={
{"496", "Euthanasia", "3.33% chance to shoot needles#100% chance at 15 Luck#Needles kill normal enemies instantly, bursting them into 10 tears#Needles deal 3x damage against bosses"},
{"497", "Camo Undies", "When you enter a room, camouflage yourself and confuse all enemies until you start shooting"},
{"498", "Duality", "{{AngelDevilChance}} If an Angel or Devil room would spawn, both will spawn#When entering one, the other disappears"},
{"499", "Eucharist", "{{AngelChance}} 100% chance to find an {{AngelRoom}}Angel Room"},
{"499", "Eucharist", "{{AngelChance}} 100% chance for Angel Rooms to spawn"},
{"500", "Sack of Sacks", "Spawns a sack every 5-6 rooms"},
{"501", "Greed's Gullet", "Gain 1 Heart Container for every 25 coins you gain after picking up Greed's Gullet#{{Player14}} Keeper can gain additional Coin Hearts"},
{"502", "Large Zit", "While firing, occasionally shoot a white creep tear that deals double damage#Shoot a white creep tear when damaged"},
@@ -751,7 +751,7 @@ EID.descriptions[languageCode].cards={
{"39", "Algiz", "Invincibility for 30 seconds"},
{"40", "Blank Rune", "Random rune effect#25% chance to drop itself again"},
{"41", "Black Rune", "Deals 40 damage to all enemies#Converts all pedestal items in the room into random stat ups#Converts all pickups in the room into blue flies"},
{"42", "Chaos Card", "Throwable instant kill-card"},
{"42", "Chaos Card", "Upon use, throw the card in the direction you're moving#Instantly kills ANY enemy it touches (except Delirium)"},
{"43", "Credit Card", "Removes the price from all items in the current {{Shop}} shop or {{DevilRoom}} Devil deal, making everything free"},
{"44", "Rules Card", "Displays \"helpful\" tips on use"},
{"45", "A Card Against Humanity", "Fills the whole room with poop"},
@@ -789,7 +789,7 @@ EID.descriptions[languageCode].pills={
{"16", "Tears Up", "↑ {{Tears}} +0.35 Tears up"},
{"17", "Luck Down", "↓ {{Luck}} -1 Luck down"},
{"18", "Luck Up", "↑ {{Luck}} +1 Luck up"},
{"19", "Telepills", "Teleports you to a random room#Small chance to teleport you to the I AM ERROR room"},
{"19", "Telepills", "Teleports you to a random room#{{ErrorRoom}} Small chance to teleport you to the I AM ERROR room"},
{"20", "48 Hour Energy!", "Fully recharges your active item#Drops 1-2 batteries"},
{"21", "Hematemesis", "Drains all but one heart container#Spawns 1-4 Red Hearts"},
{"22", "Paralysis", "You can't move for 2 seconds"},
@@ -882,3 +882,9 @@ EID.descriptions[languageCode].MCM = {
DemoObjectTransformation = "Demo Transformation",
DemoObjectText = "This text is in english#A very cool and long description to simulate linebreaks caused by EID textbox width!#{{Collectible4}} This is also a cool line#{{Heart}} This line loves you#{{AngelDevilChance}} This line can be your angel or your devil#\1 {{Damage}} +1 Stat Change up",
}
-- the Hold Map description will predict the abilities of items with a header like "Item Name Result"
EID.descriptions[languageCode].HoldMapHeader = " Result"
-- includes Planetarium even though it's unused in AB+ for convenience
EID.descriptions[languageCode].Teleport2RoomNames = { "Normal Room","Boss Room","Super Secret Room","Shop","Treasure Room","Sacrifice Room","Dice Room","Library","Curse Room","Miniboss Room","Challenge/Boss Challenge Room","Isaac's Room","Barren Room","Arcade Room","Chest Room","Planetarium","Secret Room","Special Red Room","Angel/Devil Room","I AM ERROR Room" }
EID.descriptions[languageCode].Teleport2GreedRoomNames = { "Main Room", "Boss Room", "Shop", "Silver/Gold Treasure Room", "Curse Room", "Exit Room", "Super Secret Room", "Angel/Devil Room", "I AM ERROR Room" }
+28 -13
View File
@@ -177,7 +177,7 @@ local repCollectibles={
[415] = {"415", "Crown Of Light", "{{SoulHeart}} +2 Soul Hearts#If you don't have any damaged Red Heart containers:#↑ {{Damage}} +100% Damage up#↑ {{Range}} +1.5 Range up#↓ {{Shotspeed}} -0.3 Shot Speed down#Deactivates for the current room when damaged at all"}, -- Crown Of Light
[416] = {"416", "Deep Pockets", "Spawns 1-3 coins if a room didn't yield a reward#{{Coin}} Increases coin cap to 999"}, -- Deep Pockets
[417] = {"417", "Succubus", "Bounces around the room with a damaging aura, dealing 7.5-10 damage every second#↑ {{Damage}} +50% Damage while standing in the aura"}, -- Succubus
[419] = {"419", "Teleport 2.0", "Teleports you to another random room that has not been cleared yet#Hierarchy: {{Room}}>{{BossRoom}}>{{SuperSecretRoom}}>{{Shop}}>{{TreasureRoom}}>{{SacrificeRoom}}> {{DiceRoom}}>{{Library}}>{{CursedRoom}}>{{MiniBoss}}>{{ChallengeRoom}}>{{IsaacsRoom}}> {{ArcadeRoom}}>{{ChestRoom}}>{{Planetarium}}>{{SecretRoom}}>{{DevilRoom}}{{AngelRoom}}> Error-Room"}, -- Teleport 2.0
[419] = {"419", "Teleport 2.0", "Teleports you to another random room that has not been cleared yet#Hierarchy: {{Room}}>{{BossRoom}}>{{SuperSecretRoom}}>{{Shop}}>{{TreasureRoom}}>{{SacrificeRoom}}> {{DiceRoom}}>{{Library}}>{{CursedRoom}}>{{MiniBoss}}>{{ChallengeRoom}}{{BossRushRoom}}>{{IsaacsRoom}}{{BarrenRoom}}> {{ArcadeRoom}}>{{ChestRoom}}>{{Planetarium}}>{{SecretRoom}}>{{DevilRoom}}{{AngelRoom}}>{{ErrorRoom}}"}, -- Teleport 2.0
[421] = {"421", "Kidney Bean", "{{Charm}} Applies charm effect to any enemies in close range"}, -- Kidney Bean
[426] = {"426", "Obsessed Fan", "Follows your exact movement on a 0.66 second delay#Deals 30 contact damage per second"}, -- Obsessed Fan
[430] = {"430", "Papa Fly", "Follows your movement pattern on a 0.66 second delay#Fires tears at nearby enemies that deal damage equal to your damage"}, -- Papa Fly
@@ -199,6 +199,7 @@ local repCollectibles={
[474] = {"474", "Broken Glass Cannon", "Turns into Glass Cannon when used"}, -- Broken Glass Cannon
[476] = {"476", "D1", "Duplicates 1 random pickup in the current room#Duplicated pickups may not be identical to the original"}, -- D1
[477] = {"477", "Void", "!!! When used, consumes all pedestal items in the room#Active item: Its effect will activate every future use of Void#↑ Passive item: Small stat upgrade to two random stats"},
[487] = {"487", "Potato Peeler", "Removes one Red Heart Container and gives you: #↑ {{Damage}} +0.2 Damage up#{{Collectible73}} A Cube of Meat#↑ {{Range}} +1.5 Range and leave a trail of blood creep for the current room"},
[489] = {"489", "D Infinity", "Acts as any die item except for {{Collectible723}} Spindown Dice#Change the current die with {{ButtonRT}}#Charge time varies based on the current die and updates when used"}, -- D Infinity
[491] = {"491", "Acid Baby", "{{Pill}} Drops a random pill every 7 rooms#Using a pill poisons all enemies in the room"}, -- Acid Baby
[493] = {"493", "Adrenaline", "↑ {{Damage}} Damage up for every empty Red Heart container#Follows a formula, some examples are:#+0.3 at 1#+0.92 at 2#+1.76 at 3#+2.79 at 4#+3.98 at 5"}, -- Adrenaline
@@ -249,16 +250,16 @@ local repCollectibles={
[577] = {"577", "Damocles", "{{Warning}} SINGLE USE {{Warning}}#Spawns a sword above your head, which doubles all item pedestals#Does not double Shop, Chest, or Devil deal items#!!! Kills you at a random time after taking damage from an enemy"}, -- Damocles
[578] = {"578", "Free Lemonade", "Creates a large pool of yellow creep"}, -- Free Lemonade
[579] = {"579", "Spirit Sword", "Instead of tears, Isaac swings a sword#Deals 3x your damage#{{Chargeable}} Does a spin attack + projectile shot on charge up#Fire projectiles with normal swings on full health"}, -- Spirit Sword
[580] = {"580", "Red Key", "Creates a new room adjacent to a viable wall, indicated by an outline of a door#Rooms can be special rooms#A room outside the 13x13 floor map will teleport you to the I AM ERROR room"}, -- Red Key
[580] = {"580", "Red Key", "Creates a new room adjacent to a viable wall, indicated by an outline of a door#Rooms can be special rooms#{{ErrorRoom}} A room outside the 13x13 floor map will teleport you to the I AM ERROR room"}, -- Red Key
[581] = {"581", "Psy Fly", "Fly orbital familiar#Chases and deflects projectiles#Deals 15 contact damage per second"}, -- Psy Fly
[582] = {"582", "Wavy Cap", "↑ {{Tears}} +0.75 Fire Rate up#↓ {{Speed}} -0.03 Speed down#Distorts the screen#Effect can be stacked"}, -- Wavy Cap
[583] = {"583", "Rocket in a Jar", "{{Bomb}} +5 bombs#If shooting, placed bombs turn into rockets that fire in the shooting direction"}, -- Rocket in a Jar
[584] = {"584", "Book of Virtues", "Spawns an orbital wisp familiar that fires spectral tears but can be destroyed#Can be combined with a second active item to create themed wisps#{{DevilRoom}} Turns the first Devil Room into an {{AngelRoom}} Angel Room#{{AngelChance}} 12.5% higher Angel Room chance#{{AngelChance}} Allows Angel Rooms to spawn even if you've taken a Devil deal"}, -- Book of Virtues
[585] = {"585", "Alabaster Box", "Upon use, Spawns: #{{SoulHeart}} Three Soul Hearts#{{AngelRoom}} Two Angel Room items#{{SoulHeart}} Must be charged by picking up Soul Hearts#{{DevilRoom}} Only spawns 2 Soul Hearts and 1 Angel item if a Devil deal was taken previously"}, -- Alabaster Box
[585] = {"585", "Alabaster Box", "Upon use, spawns: #{{SoulHeart}} Three Soul Hearts#{{AngelRoom}} Two Angel Room items#Must be charged by picking up Soul Hearts#{{DevilRoom}} Only spawns 2 Soul Hearts and 1 Angel item if a Devil deal was taken previously"}, -- Alabaster Box
[586] = {"586", "The Stairway", "Spawns a ladder at the start of every floor#It leads to a unique {{AngelRoom}} Angel Room shop with items and consumables"}, -- The Stairway
[587] = {"587", "Menorah (Unused but scripted)", "<Item does not exist>"}, -- Menorah (Unused but scripted)
[588] = {"588", "Sol", "{{BossRoom}} Reveals the location of the Boss Room#Upon defeating a boss, for the rest of the floor: #{{Card20}} Activates The Sun#{{Battery}} Fully recharges your active item#{{CurseBlind}} Removes any Curses#↑ {{Damage}} +3 Damage#↑ {{Luck}} +1 Luck"}, -- Sol
[589] = {"589", "Luna", "Adds an extra {{SecretRoom}} Secret Room and {{SuperSecretRoom}} Super Secret Room to each floor#{{SecretRoom}} Secret Rooms contain a beam of light that give: #{{Tears}} Tears up for the current floor#{{HalfSoulHeart}} Half soul heart#{{SecretRoom}} Reveals one Secret Room each floor"}, -- Luna
[589] = {"589", "Luna", "Adds an extra {{SecretRoom}} Secret Room and {{SuperSecretRoom}} Super Secret Room to each floor#Reveals one Secret Room each floor#Secret Rooms contain a beam of light that give:#{{HalfSoulHeart}} A Half Soul Heart#↑ {{Tears}} +0.5 Fire Rate up for the current floor#↑ {{Tears}} Additional +0.5 Fire Rate up from the first beam per floor"}, -- Luna
[590] = {"590", "Mercurius", "↑ {{Speed}} +0.4 Speed up#Doors stay open after entering a room"}, -- Mercurius
[591] = {"591", "Venus", "↑ {{Heart}} +1 Health up#{{Heart}} Heals 1 Red Heart#{{Charm}} Close enemies become charmed"}, -- Venus
[592] = {"592", "Terra", "↑ {{Damage}} +1 Damage up#Replaces tears with rocks#They deal variable damage#Can destroy obstacles#Increased knockback"}, -- Terra
@@ -361,7 +362,7 @@ local repCollectibles={
[689] = {"689", "Glitched Crown", "Item pedestals quickly cycle between 5 random items"}, -- Glitched Crown
[690] = {"690", "Belly Jelly", "Causes enemies to bounce off of Isaac#Bouncing them against obstacles deals damage#50% chance that Isaac ignores contact damage#50% chance to deflect enemy projectiles"}, -- Belly Jelly
[691] = {"691", "Sacred Orb", "Prevents Quality {{Quality0}}/{{Quality1}} items from spawning#33% chance to reroll items with Quality {{Quality2}} to Quality {{Quality3}} or {{Quality4}}"}, -- Sacred Orb
[692] = {"692", "Sanguine Bond", "Spawns a set of spikes in the {{DevilRoom}}Devil Room#Taking damage from the spikes can grant a reward:#35%: Nothing#33%: ↑ {{Damage}} +0.5 Damage up#15%: {{Coin}} 6 pennies#10%: {{BlackHeart}} 2 Black Hearts#5%: {{DevilRoom}} Random Devil item#2%: Leviathan transformation"}, -- Sanguine Bond //PERCENTAGES NOT CONFIRMED, updated in patch, taken from Wiki
[692] = {"692", "Sanguine Bond", "Spawns a set of spikes in the {{DevilRoom}}Devil Room#Take damage on the spikes to get a reward:#35%: Nothing#33%: ↑ {{Damage}} +0.5 Damage up#15%: {{Coin}} 6 pennies#10%: {{BlackHeart}} 2 Black Hearts#5%: {{DevilRoom}} Random Devil item#2%: Leviathan transformation"}, -- Sanguine Bond
[693] = {"693", "The Swarm", "Grants 8 orbital flies which turn into Blue Flies after they block a shot#Spawns a new fly every room cleared"}, -- The Swarm
[694] = {"694", "Heartbreak", "{{BrokenHeart}} Grants 3 broken hearts#↑ {{Damage}} +0.25 Damage for every broken heart#Every fatal hit will add 2 more broken hearts#You die at 12 broken hearts"}, -- Heartbreak
[695] = {"695", "Bloody Gust", "When taking damage, gain {{Speed}} speed and {{Tears}} tears up for the current floor#Up to +1.02 Speed and +3 Fire Rate possible"}, -- Bloody Gust
@@ -373,7 +374,7 @@ local repCollectibles={
[701] = {"701", "Isaac's Tomb", "Spawns an {{DirtyChest}} Old Chest at the start of every floor which requires a key to unlock#Can contain {{SoulHeart}} Soul Hearts, trinkets or items#Items are from the {{AngelRoom}} Angel Room pool and Mom and Dad themed"}, -- Isaac's Tomb
[702] = {"702", "Vengeful Spirit", "After taking damage, spawns an orbital wisp that lasts for the entire floor#Maximum of 6#They fire tears but do not block shots"}, -- Vengeful Spirit
[703] = {"703", "Esau Jr.", "Swaps between the current character and Esau Jr., who has {{BlackHeart}} 3 Black Hearts, {{Damage}} +2 Damage and flight#Characters have independent items and health#On first use, he gains random passive items equal to how many you have#{{Warning}} Dying as either character ends the run"}, -- Esau Jr.
[704] = {"704", "Berserk!", "On use, enter Berserk mode for 5 seconds:#↑ {{Speed}} +0.4 Speed up#↑ {{Tears}} Tears up#↑ {{Damage}} +3 Damage up#Restricts attacks to a melee weapon"}, -- Berserk!
[704] = {"704", "Berserk!", "Item charges by dealing damage#On use, go berserk for 5 seconds:#↑ {{Speed}} +0.4 Speed up#↑ {{Damage}} +3 Damage up#Restricts attacks to a melee weapon#Kills while berserk increase its duration by 1 second"}, -- Berserk!
[705] = {"705", "Dark Arts", "On use, gain {{Speed}} +1 Speed and walk through enemies and bullets for 1 second#On touch, deal 2x your damage + 3.5 damage per touched enemy#Explosion on effect end that deals damage equal to how much you dealt"}, -- Dark Arts
[706] = {"706", "Abyss", "Destroys all items in the room and spawns an attack fly familiar for each#Effects of fly depends on the items"}, -- Abyss
[707] = {"707", "Supper", "↑ {{Heart}} +1 Health up#{{Heart}} Heals 1 Red Heart"}, -- Supper
@@ -384,7 +385,7 @@ local repCollectibles={
[712] = {"712", "Lemegeton", "Spawns an orbital wisp familiar that grants an item's effect but can be destroyed#The items have a 25% chance to be from the current room's item pool, or from the Treasure, Boss or Shop pools otherwise"}, -- Lemegeton
[713] = {"713", "Sumptorium", "Removes half a heart and creates a Clot familiar#Each type of heart generates a Clot with different HP, damage and tear effect"}, -- Sumptorium
[714] = {"714", "Recall", "Retrieves the Forgotten's body from any distance"}, -- Recall
[715] = {"715", "Hold", "Preserves one poop bomb inside that can be used later"}, -- Hold
[715] = {"715", "Hold", "Preserves one Poop spell inside that can be used later"}, -- Hold
[716] = {"716", "Keeper's Sack", "Spawns {{Coin}} 3 random coins and {{Key}} 1 key#{{Shop}} Every 3 coins spent when buying items gives one of the following:#↑ {{Damage}} +0.5 Damage up#↑ {{Range}} +0.25 Range up#↑ {{Speed}} +0.03 Speed up"}, -- Keeper's Sack
[717] = {"717", "Keeper's Kin", "Rocks and props spawn 2 blue spiders when destroyed#Rocks can occasionally spawn blue spiders when in a hostile room"}, -- Keeper's Kin
[718] = {"718", "Keeper's Rope (Cut item)", "<Item does not exist>"}, -- Keepers Rope (Cut item)
@@ -830,11 +831,12 @@ local repCards={
[30] = {"30", "Ace of Hearts", "{{Heart}} Turns all pickups, chests and non-boss enemies into hearts"}, -- Ace of Hearts
[34] = {"34", "Ehwaz", "Spawns a trapdoor to the next floor#Spawns a {{LadderRoom}} crawlspace if used on a decorative floor tile (grass, small rocks, papers, gems, etc.)"},
[39] = {"39", "Algiz", "Invincibility for 20 seconds"}, -- Algiz
[42] = {"42", "Chaos Card", "Upon use, throw the card in the direction you're moving#Instantly kills ANY enemy it touches (except Delirium or The Beast)"}, -- Chaos Card
[51] = {"51", "Holy Card", "{{HolyMantle}} Grants the Holy Mantle effect#(Prevents damage once)#Effect lasts until damage is taken"}, -- Holy Card
[52] = {"52", "Huge Growth", "↑ {{Damage}} +7 Damage up#↑ {{Range}} +3 Range up#Destroy rocks when walking over them#Size up#Effect lasts for current room"}, -- Huge Growth
[54] = {"54", "Era Walk", "{{Slow}} Slow down enemies#↑ {{Speed}} +0.5 Speed up#↓ {{Shotspeed}} -1 Shot Speed down#Effect lasts for current room"},
[55] = {"55", "Rune Shard", "{{Rune}} Activates a random rune effect#The rune effect is weaker"}, -- Rune Shard
[56] = {"56", "0 - The Fool?", "Drops all your hearts and pickups on the floor, leaving you with half a heart#Coins and bombs may be dropped as {{Collectible74}}The Quarter or {{Collectible19}}Boom! if possible"}, -- 0 - The Fool?
[56] = {"56", "0 - The Fool?", "Drops all your hearts and pickups on the floor, leaving you with half a heart#Coins and bombs are dropped as {{Collectible74}}The Quarter or {{Collectible19}}Boom! if possible"}, -- 0 - The Fool?
[57] = {"57", "I - The Magician?", "Grants an aura that repels enemies and projectiles for 1 minute"}, -- I - The Magician?
[58] = {"58", "II - The High Priestess?", "Mom's Foot stomps down repeatedly for 1 minute"}, -- II - The High Priestess?
[59] = {"59", "III - The Empress?", "Grants for 1 minute: #↑ {{Heart}} +2 Health up#↑ {{Tears}} +1.35 Tears up"}, -- III - The Empress?
@@ -865,7 +867,7 @@ local repCards={
[84] = {"84", "Soul of Judas", "Turns Isaac into a phantom that can pass through enemies to paralyze them#After a few seconds, will attack them all, gaining damage bonus per target"}, -- Soul of Judas
[85] = {"85", "Soul of ???", "{{Poison}} Causes 8 poison farts with brown creep#Then plants trail of 7 Butt Bombs#Standing in the creep gives: # {{Tears}} +1.35 Tears#↑ {{Damage}} +1 Damage"}, -- Soul of ???
[86] = {"86", "Soul of Eve", "14 Dead Bird familiars fly in and attack enemies# Lasts for current room"}, -- Soul of Eve
[87] = {"87", "Soul of Samson", "Turn into a berserk Samson with melee attack for 10 seconds#↑ +0.4 Speed up#↑ Tears up#↑ +3 Damage up"}, -- Soul of Samson
[87] = {"87", "Soul of Samson", "Go berserk for 10 seconds:#↑ {{Speed}} +0.4 Speed up#↑ {{Damage}} +3 Damage up#Restricts attacks to a melee weapon#Kills while berserk increase its duration by 1 second"}, -- Soul of Samson
[88] = {"88", "Soul of Azazel", "{{Collectible441}} Activates Mega Blast for 7.5 seconds"}, -- Soul of Azazel
[89] = {"89", "Soul of Lazarus", "Die and immediately revive at half a heart with some invincibility time#Item is automatically used upon taking fatal damage (like an extra life)"}, -- Soul of Lazarus
[90] = {"90", "Soul of Eden", "Rerolls pedestals and pickups in current room#The rerolled items use random pools"}, -- Soul of Eden
@@ -962,7 +964,7 @@ EID.descriptions[languageCode].horsepills={
{"22", "Paralysis", "You can't move for 4 seconds"}, -- Paralysis
{"23", "I can see forever!", "{{SecretRoom}} Opens secret room entrances on current floor#Grants full mapping"}, -- I can see forever!
{"24", "Pheromones", "{{Charm}} Turns every enemy in the room permanently friendly"}, -- Pheromones
{"25", "Amnesia", "Hides the floor map"}, -- Amnesia
{"25", "Amnesia", "{{CurseLost}} Hides the floor map"}, -- Amnesia
{"26", "Lemon Party", "Spawns room filling puddle on the ground which damages enemies"}, -- Lemon Party
{"27", "R U a Wizard?", "Shoot diagonally for 60 seconds"}, -- R U a Wizard?
{"28", "Percs!", "Take only half the damage for current room"}, -- Percs!
@@ -973,7 +975,7 @@ EID.descriptions[languageCode].horsepills={
{"33", "One makes you small", "You get a lot smaller#Your hitbox gets smaller"}, -- One makes you small
{"34", "Infested!", "Spawn 2 blue spiders per poop in room"}, -- Infested!
{"35", "Infested?", "Spawn 2 blue spiders per enemy in room#Spawns 2-6 blue spiders when no enemy is in the room"}, -- Infested?
{"36", "Power Pill!", "Short invincibility effect#↑ {{Damage}} 7 Damage up#↑ {{Range}} +3 Range up#Persists for current room"}, -- Power Pill!
{"36", "Power Pill!", "Short invincibility effect#↑ {{Damage}} +7 Damage up#↑ {{Range}} +3 Range up#Persists for current room"}, -- Power Pill!
{"37", "Retro Vision", "Pixelates the screen for 90 seconds"}, -- Retro Vision
{"38", "Friends Till The End!", "Spawns 6 blue flies"}, -- Friends Till The End!
{"39", "X-Lax", "Spawn pool of long lasting slippery creep"}, -- X-Lax
@@ -1048,11 +1050,24 @@ EID.descriptions[languageCode].GlitchedItemText = {
---------- Misc. Text ----------
EID.descriptions[languageCode].poopSpells = {
{"Poop", "Normal poop that can drop pickups"},
{"Corny Poop", "Spawns blue flies while intact"},
{"Burning Poop", "Deals contact damage while intact#Leaves a fire behind when destroyed"},
{"Stone Poop", "Can deal damage 3 times when thrown#Takes a lot of hits to destroy"},
{"Stinky Poop", "Emits a toxic cloud#!!! The cloud will explode if it touches fire!"},
{"Black Poop", "Creates slowing creep#Deals 10 damage and confuses all enemies when destroyed"},
{"Holy Poop", "{{Collectible543}} Create a white poop#While inside the poop's aura:#↑ {{Damage}} +20% Damage up#↑ {{Tears}} +150% Fire Rate up#Homing tears#Chance to block damage"},
{"Brown Creep", "Leave a trail of creep#Standing on the creep increases your fire rate and damage#If the creep is touching other poops, it gains their attribute"},
{"Fart", "Push nearby enemies and bullets back, and spawn a toxic cloud#!!! The cloud will explode if it touches fire!"},
{"Bomb", "Normal throwable bomb"},
{"Explosive Diarrhea", "Spawn 5 lit bombs at your position over the next few seconds"},
}
EID.descriptions[languageCode].VoidShopText = "If absorbed right after pickup, gain:"
EID.descriptions[languageCode].VoidOptionText = " will be absorbed instead"
EID.descriptions[languageCode].VoidNames = {"Speed up", "Fire Rate up", "Damage up", "Range up", "Shot Speed up", "Luck up"}
EID.descriptions[languageCode].spindownError = "Item disappears"
EID.descriptions[languageCode].CraftingBagContent = "Bag:"
@@ -1072,7 +1087,7 @@ EID.descriptions[languageCode].BlankCardCharge = "Blank Card charge:"
EID.descriptions[languageCode].BlankCardQCard = "Teleport to I AM ERROR Room#Blank Card and ?-Card will be destroyed"
EID.descriptions[languageCode].ClearRuneCharge = "Clear Rune charge:"
EID.descriptions[languageCode].PlaceboCharge = "Placebo charge:"
EID.descriptions[languageCode].FlipItemToggleInfo = "(Hold {{ButtonSelect}} (Map) to show description)"
EID.descriptions[languageCode].FlipItemToggleInfo = "(Hold {{CONFIG_BoC_Toggle}} to show description)"
EID.descriptions[languageCode].FalsePHDHeart = "{{BlackHeart}} Spawns 1 Black Heart"
+30 -21
View File
@@ -30,7 +30,7 @@ local dynamicSpriteCache = {} -- used to store sprite objects of collectible ico
function EID:addCollectible(id, description, itemName, language)
itemName = itemName or nil
language = language or "en_us"
modName = EID._currentMod
local modName = EID._currentMod
-- Glitched Items exception so they don't have a mod name
if id > 4294960000 then modName = nil end
EID.descriptions[language].custom["5.100." .. id] = {id, itemName, description, modName}
@@ -1519,8 +1519,8 @@ end
-- Returns true if any player is pressing the given button (you can also specify any of the input functions)
function EID:PlayersActionPressed(button, inputFunc)
inputFunc = inputFunc or Input.IsActionPressed
for k,_ in pairs(EID.controllerIndexes) do
if inputFunc(button, k) then return true end
for k,v in pairs(EID.controllerIndexes) do
if inputFunc(button, k) then return true, v end
end
return false
end
@@ -1624,7 +1624,9 @@ function EID:evaluateTransformationProgress(transformation)
end
-- Watch for a player's queued item (holding an item over their head) to track active item touches
-- Used for Transformation Progress and for tracking Recently Touched Items
EID.PlayerItemInteractions = {}
EID.RecentlyTouchedItems = {}
local hadQueuedItem = {}
function EID:evaluateQueuedItems()
--initialize the interactions table for all players if it isn't already
@@ -1633,6 +1635,7 @@ function EID:evaluateQueuedItems()
if not EID.PlayerItemInteractions[i] then
EID.PlayerItemInteractions[i] = {LastTouch = 0, actives = {}, pills = {}, altActives = {}, altPills = {}}
end
EID.RecentlyTouchedItems[i] = EID.RecentlyTouchedItems[i] or {}
end
for i = 0, game:GetNumPlayers() - 1 do
local player = Isaac.GetPlayer(i)
@@ -1647,25 +1650,31 @@ function EID:evaluateQueuedItems()
else
EID.PlayerItemInteractions[i].LastTouch = 0
end
if not player.QueuedItem.Touched and player.QueuedItem.Item and player.QueuedItem.Item.Type == ItemType.ITEM_ACTIVE then
local itemID = tostring(player.QueuedItem.Item.ID)
-- A new active item was touched; initiate its touch count to 0 for all players
-- (Fixes co-op bugs, compared to only initiating it for the toucher)
for j = 0, game:GetNumPlayers() - 1 do
local player = Isaac.GetPlayer(j)
EID.PlayerItemInteractions[j].actives[itemID] = EID.PlayerItemInteractions[j].actives[itemID] or 0
EID.PlayerItemInteractions[j].altActives[itemID] = EID.PlayerItemInteractions[j].altActives[itemID] or 0
end
-- Dead Tainted Lazarus exceptions
local activesTable = EID.PlayerItemInteractions[i].actives
if player:GetPlayerType() == 38 then
activesTable = EID.PlayerItemInteractions[i].altActives or activesTable
end
EID.ForceRefreshCache = true
activesTable[itemID] = activesTable[itemID] + 1
if not player.QueuedItem.Touched and player.QueuedItem.Item then
EID.PlayerItemInteractions[i].LastTouch = game:GetFrameCount()
if player.QueuedItem.Item.Type == ItemType.ITEM_ACTIVE then
local itemID = tostring(player.QueuedItem.Item.ID)
-- A new active item was touched; initiate its touch count to 0 for all players
-- (Fixes co-op bugs, compared to only initiating it for the toucher)
for j = 0, game:GetNumPlayers() - 1 do
local player = Isaac.GetPlayer(j)
EID.PlayerItemInteractions[j].actives[itemID] = EID.PlayerItemInteractions[j].actives[itemID] or 0
EID.PlayerItemInteractions[j].altActives[itemID] = EID.PlayerItemInteractions[j].altActives[itemID] or 0
end
-- Dead Tainted Lazarus exceptions
local activesTable = EID.PlayerItemInteractions[i].actives
if player:GetPlayerType() == 38 then
activesTable = EID.PlayerItemInteractions[i].altActives or activesTable
end
EID.ForceRefreshCache = true
activesTable[itemID] = activesTable[itemID] + 1
elseif player.QueuedItem.Item.Type ~= ItemType.ITEM_TRINKET then
-- Put non-active item pickups into the recent item list, for printing in the Item Reminder
table.insert(EID.RecentlyTouchedItems[i], player.QueuedItem.Item.ID)
end
end
end
end
+2
View File
@@ -610,6 +610,7 @@ end)
--Tainted Cain "hold to craft" check
local holdCounter = 0
local icount = 0
local function trackBagHolding()
if not IsTaintedCain() then return end
local isCardHold = Input.IsActionPressed(ButtonAction.ACTION_PILLCARD, EID.bagPlayer.ControllerIndex)
@@ -907,6 +908,7 @@ function EID:handleBagOfCraftingUpdating()
-- Check for Hold Tab key inputs
if displayingRecipeList and Input.IsActionPressed(EID.Config["BagOfCraftingToggleKey"], EID.bagPlayer.ControllerIndex) then
EID.TabDescThisFrame = true
EID.bagPlayer.ControlsCooldown = 2
if Input.IsActionTriggered(ButtonAction.ACTION_SHOOTDOWN, EID.bagPlayer.ControllerIndex) then
bagOfCraftingOffset = math.min(numResults-(numResults%EID.Config["BagOfCraftingResults"]), bagOfCraftingOffset + EID.Config["BagOfCraftingResults"])
+43 -6
View File
@@ -281,7 +281,38 @@ EID.UserConfig = {
-- Toggle display of what stats will increase on Void absorption
-- Default = false
["DisplayVoidStatInfo"] = false,
---------- Item Reminder Description ------------
--Hold Map (or the button action chosen below) to show a description of your active item's effect, recently picked up items, and things like Teleport 2.0's destination and Void's absorbed items
["ItemReminderEnabled"] = true,
-- Set the keybinding that's held to show the Item Reminder description, Flip/Spindown Dice preview descriptions, and interacting with the Bag of Crafting recipe list
-- Look into the AB+ or Repentance documentation for the key names here: https://wofsauge.github.io/IsaacDocs/rep/enums/ButtonAction.html
-- Default = ButtonAction.ACTION_MAP
["BagOfCraftingToggleKey"] = ButtonAction.ACTION_MAP,
-- Show recently acquired item descriptions in the Item Reminder (good for Curse of the Blind!)
-- Default = 1
["ItemReminderShowRecentItem"] = 1,
-- Show your active item description(s) in the Item Reminder
-- Default = 1, max = 2
["ItemReminderShowActiveDesc"] = 1,
-- Show your pocket item (card, pill, active) description in the Item Reminder
-- Default = 1, max = 4 (2 in AB+)
["ItemReminderShowPocketDesc"] = 1,
-- Show your trinket description(s) in the Item Reminder
-- Default = 2, max = 2
["ItemReminderShowTrinketDesc"] = 2,
-- Show your next Poop Spell's description in the Item Reminder
-- REPENTANCE ONLY!!!
-- Default = 1, max = 6
["ItemReminderShowPoopDesc"] = 1,
-- Items that grant you items without saying what they are (like Zodiac, Liberty Cap) can have their current granted item revealed in the Item Reminder
-- Default = false
["ItemReminderShowHiddenInfo"] = false,
-- Some items (like Crooked Penny) can have their next result predicted and shown in the Item Reminder
-- Default = false
["ItemReminderShowRNGCheats"] = false,
---------- Bag of Crafting ------------
-- REPENTANCE ONLY!!!
@@ -315,10 +346,6 @@ EID.UserConfig = {
-- Higher numbers will cause lag spikes on new pickup sets!
-- Default = 400
["BagOfCraftingRandomResults"] = 400,
-- Set the keybinding to toggle the scroll feature of the Bag of Crafting descriptions
-- Look into the AB+ or Repentance documentation for the key names here: https://wofsauge.github.io/IsaacDocs/rep/enums/ButtonAction.html
-- Default = ButtonAction.ACTION_MAP
["BagOfCraftingToggleKey"] = ButtonAction.ACTION_MAP,
-- Display craftable item names, moving the recipe to a new line
-- Default = false
["BagOfCraftingDisplayNames"] = false,
@@ -492,7 +519,6 @@ EID.DefaultConfig = {
["BagOfCraftingResults"] = 7,
["BagOfCraftingCombinationMax"] = 12,
["BagOfCraftingRandomResults"] = 400,
["BagOfCraftingToggleKey"] = ButtonAction.ACTION_MAP,
["BagOfCraftingDisplayNames"] = false,
["BagOfCraftingDisplayIcons"] = false,
["BagOfCraftingHideInBattle"] = true,
@@ -502,6 +528,17 @@ EID.DefaultConfig = {
["CraftingHideButton"] = -1,
["CraftingResultKey"] = Keyboard.KEY_F4,
["CraftingResultButton"] = -1,
["ItemReminderEnabled"] = true,
["BagOfCraftingToggleKey"] = ButtonAction.ACTION_MAP,
["ItemReminderShowRecentItem"] = 1,
["ItemReminderShowActiveDesc"] = 1,
["ItemReminderShowPocketDesc"] = 1,
["ItemReminderShowTrinketDesc"] = 2,
["ItemReminderShowPoopDesc"] = 1,
["ItemReminderShowHiddenInfo"] = false,
["ItemReminderShowRNGCheats"] = false,
["SpindownDiceResults"] = 3,
["SpindownDiceDisplayID"] = false,
["SpindownDiceDisplayName"] = false,
+15
View File
@@ -278,6 +278,7 @@ EID.InlineIcons = {
["HolyChestRoomIcon"] = {"roomicons", 32, 6, 9, 0, 4},
["WoodenChestRoomIcon"] = {"roomicons", 33, 6, 9, 0, 4},
["Teleporter"] = {"roomicons", 34, 9, 9, 0, 2},
["ErrorRoom"] = {"roomicons", 35, 9, 9, 0, 2},
-- Roomshape Icons
["Room"] = {"roomshape", 0, 10, 9, 0, 2},
@@ -292,6 +293,7 @@ EID.InlineIcons = {
["RoomLTopLeft"] = {"roomshape", 9, 11, 10, 0, 1},
["RoomLBottomLeft"] = {"roomshape", 10, 11, 10, 0, 1},
["RoomLBottomRight"] = {"roomshape", 11, 11, 10, 0, 1},
["RedRoom"] = {"roomshape", 12, 10, 9, 0, 2},
-- Transformation Icons
["CustomTransformation"] = {"TransformationCustom", 0, 16, 16, -5, -1, EID.IconSprite},
@@ -371,6 +373,19 @@ EID.InlineIcons = {
["Crafting29"] = {"Crafting", 29, 14, 16, 0, -1},
["Crafting30"] = {"Crafting", 30, 14, 16, 0},
--Poop Spells
["PoopSpell1"] = {"PoopSpells", 1, 16, 16, -2, -2}, --Normal
["PoopSpell2"] = {"PoopSpells", 2, 16, 16, -2, -2}, --Corn
["PoopSpell3"] = {"PoopSpells", 3, 16, 16, -2, -2}, --Burning
["PoopSpell4"] = {"PoopSpells", 4, 16, 16, -2, -2}, --Stone
["PoopSpell5"] = {"PoopSpells", 5, 16, 16, -2, -2}, --Stinky
["PoopSpell6"] = {"PoopSpells", 6, 16, 16, -2, -2}, --Black
["PoopSpell7"] = {"PoopSpells", 7, 16, 16, -2, -2}, --Holy
["PoopSpell8"] = {"PoopSpells", 8, 16, 16, -2, -2}, --Creep
["PoopSpell9"] = {"PoopSpells", 9, 16, 16, -2, -2}, --Fart
["PoopSpell10"] = {"PoopSpells", 10, 16, 16, -2, -2}, --Bomb
["PoopSpell11"] = {"PoopSpells", 11, 16, 16, -2, -2}, --Explosive Diarrhea
-- Use the Stat Icon name without REP or AB to display the stat icon for the dlc the user is using right now. Example: {{Damage}}
-- Stats (Repentance)
["DamageREP"] = {"Stats", 0, 12, 16, 0, -1},
+264
View File
@@ -0,0 +1,264 @@
local game = Game()
local level
local currentRoom
local blacklist
local holdMapDesc
-- Rainbow Worm's trinket IDs it grants, in order
local rainbowWormEffects = { [0] = 9, 11, 65, 27, 10, 12, 26, 66, 96, 144 }
-- Mysterious Paper does not play well with displaying Error 404's effect
local mysteriousPaperBlacklist = { [23] = true, [48] = true }
-- Simple function to help with adding properly formatted sections to the desc
local function append(icon, title, newDesc)
holdMapDesc = holdMapDesc .. (icon or "{{Blank}}") .. " {{ColorEIDObjName}}" .. title .. "#" .. newDesc .. "#"
end
-- Helper function to easily add an item's stock description to the desc
-- Don't use if you need to customize the desc! (Like Sanguine Bond's result highlighting)
-- extraIcon is for when we want a special icon before the line (like {{Dice Bag Icon}} {{Dice Item Icon}})
local variantToName = { [70] = "Pill", [100] = "Collectible", [300] = "Card", [350] = "Trinket" }
local function addObjectDesc(type, variant, subtype, extraIcon)
local objectID = type .. "." .. variant .. "." .. subtype
if not blacklist[objectID] then
blacklist[objectID] = true
local demoDescObj = EID:getDescriptionObj(type, variant, subtype)
local iconString = "{{" .. variantToName[variant] .. subtype .. "}}"
if extraIcon then iconString = extraIcon .. " " .. iconString end
append(iconString, demoDescObj.Name, demoDescObj.Description)
end
end
-- General RNG functions for RNG predicting
local function RNGNext(num, shift1, shift2, shift3)
num = num ~ ((num >> shift1) & 4294967295)
num = num ~ ((num << shift2) & 4294967295)
num = num ~ ((num >> shift3) & 4294967295)
return num >> 0;
end
local function SeedToFloat(seed)
local multi = 2.3283061589829401E-10;
return seed * multi;
end
-- Teleport 2 Destination Prediction --
local teleport2Order = { 1,5,8,2,4,13,21,12,10,6,11,18,19,9,20,24,7,666,14,3 }
local teleport2GreedOrder = { 1,5,2,4,10,23,8,14,3 }
local teleport2Icons = { "{{Room}}","{{BossRoom}}","{{SuperSecretRoom}}","{{Shop}}","{{TreasureRoom}}","{{SacrificeRoom}}","{{DiceRoom}}","{{Library}}","{{CursedRoom}}","{{MiniBoss}}","{{ChallengeRoom}}","{{IsaacsRoom}}","{{BarrenRoom}}","{{ArcadeRoom}}","{{ChestRoom}}","{{Planetarium}}","{{SecretRoom}}","{{RedRoom}}","{{AngelDevilChance}}","{{ErrorRoom}}" }
local teleport2GreedIcons = { "{{RoomLongVertical}}","{{BossRoom}}","{{Shop}}","{{TreasureRoom}}","{{CursedRoom}}","{{Room}}","{{SuperSecretRoom}}","{{AngelDevilChance}}","{{ErrorRoom}}" }
local function teleport2Prediction()
local level = game:GetLevel()
local rooms = level:GetRooms()
--I AM ERROR Room always considered uncleared
local unclearedTypes = {[3] = true}
for i = 0, rooms.Size - 1 do
local room = rooms:Get(i)
if not room.Clear then
-- Check for Special Red Rooms, which get ordered differently than their non-red version
if REPENTANCE and room.Data.Type ~= 1 and room.Flags & 1024 == 1024 then unclearedTypes[666] = true
else unclearedTypes[room.Data.Type] = true end
end
end
--Angel/Devil Room check (it lives off the map)
if not level:GetRoomByIdx(-1).Clear then unclearedTypes[14] = true end
local greed = game:IsGreedMode()
local roomOrder = (greed and teleport2GreedOrder) or teleport2Order
local roomIcons = (greed and teleport2GreedIcons) or teleport2Icons
local roomNames = (greed and EID:getDescriptionEntry("Teleport2GreedRoomNames")) or EID:getDescriptionEntry("Teleport2RoomNames")
for i,v in ipairs(roomOrder) do
if unclearedTypes[v] then
append("{{Collectible419}}", EID:getObjectName(5, 100, 419) .. EID:getDescriptionEntry("HoldMapHeader"), roomIcons[i] .. " " .. roomNames[i])
return
end
end
end
-- Sanguine Bond Chance Display / Prediction --
--order of checking: 15% Pennies, 48% Damage, 58% Hearts, 63% Item, 65% Leviathan, 100% Nothing
local sanguineResults = { { 0.15, 3 }, { 0.48, 2 }, { 0.58, 4 }, { 0.63, 5 }, { 0.65, 6 }, { 1, 1 } }
local function sanguinePrediction()
local spikes = currentRoom:GetGridEntity(67)
if not spikes then return end -- don't display anything if we can't find the spikes!
local cheatResult = nil
if spikes and EID.Config["ItemReminderShowRNGCheats"] then
local spikeSeed = currentRoom:GetGridEntity(67):GetRNG():GetSeed()
spikeSeed = RNGNext(spikeSeed, 5, 9, 7)
spikeSeed = RNGNext(spikeSeed, 1, 5, 0x13)
local nextFloat = SeedToFloat(spikeSeed)
for _,v in ipairs(sanguineResults) do
if nextFloat < v[1] then cheatResult = v[2] break end
end
end
local descObj = EID:getDescriptionObj(5, 100, 692)
local resultsDesc = ""
local lineCount = 0
-- separate sanguine's description by # or semicolons
for w in string.gmatch(descObj.Description, "([^#;]+)") do
-- we only care about groups that contain a percent sign
if string.find(w,"%%") then
lineCount = lineCount + 1
if cheatResult == lineCount then resultsDesc = resultsDesc .. "{{ColorBagComplete}}" end
resultsDesc = resultsDesc .. w .. "#"
end
end
append("{{Collectible692}}", descObj.Name, resultsDesc)
end
function EID:getHoldMapDescription(player, checkingTwin)
-- Starting Blacklist: Recall, Hold
blacklist = { ["5.100.714"] = true, ["5.100.715"] = true, }
holdMapDesc = ""
level = game:GetLevel()
currentRoom = level:GetCurrentRoom()
-- TODO:
-- D1, crooked penny cheats. 404/liberty cap/etc. "what item is it"
-- (Zodiac and Modeling Clay have functions for it?)
-- pandora's box? it shows the whole desc which is kinda useful but too big
-- Void's absorbed items list
-- D Infinity current dice; track our Drop presses and resync it each time D Infinity is used by watching for the next dice effect triggered (Predict its next dice in AB+?)
-- Tainted ??? Poop Descriptions
if REPENTANCE and EID.Config["ItemReminderShowPoopDesc"] > 0 and player:GetPlayerType() == 25 then
for i = 0, EID.Config["ItemReminderShowPoopDesc"]-1 do
local poopInfo = EID:getDescriptionEntry("poopSpells")
local nextPoop = player:GetPoopSpell(i)
append("{{PoopSpell" .. nextPoop .. "}}", poopInfo[nextPoop][1], poopInfo[nextPoop][2])
end
end
-- Sanguine Bond Possible Results
if REPENTANCE and player:HasCollectible(CollectibleType.COLLECTIBLE_SANGUINE_BOND) and game:GetRoom():GetType() == RoomType.ROOM_DEVIL then
sanguinePrediction()
end
-- Teleport 2.0 location
if player:HasCollectible(CollectibleType.COLLECTIBLE_TELEPORT_2) and not EID.isMirrorRoom then
blacklist["5.100.419"] = true
teleport2Prediction()
end
-- Recently Acquired Item Descriptions
if EID.Config["ItemReminderShowRecentItem"] > 0 then
local printedItems = 0
local playerNum = EID:getPlayerID(player)
if EID.RecentlyTouchedItems[playerNum] then
for i = #EID.RecentlyTouchedItems[playerNum], 1, -1 do
if printedItems >= EID.Config["ItemReminderShowRecentItem"] then break end
printedItems = printedItems + 1
local recentID = EID.RecentlyTouchedItems[playerNum][i] % 4294967296
addObjectDesc(5, 100, recentID)
end
end
end
-- Active Item Descriptions
if EID.Config["ItemReminderShowActiveDesc"] > 0 then
for i = 0, EID.Config["ItemReminderShowActiveDesc"]-1 do
local heldActive = player:GetActiveItem(i) % 4294967296
if heldActive > 0 then
addObjectDesc(5, 100, heldActive)
end
end
end
-- Pocket Item Descriptions
-- Annoying because there's no easy way to just get the info of a slot
if EID.Config["ItemReminderShowPocketDesc"] > 0 then
local numPrinted = 0
-- I don't think we can actually know what slot the player is on, so, save these to display (if they exist) for when Card and Pill in a slot are both 0, to attempt to always show them in slot order
local dicePrinted = false
local diceBag = REPENTANCE and player:GetActiveItem(3) or 0
local pocketPrinted = false
local pocketActive = REPENTANCE and player:GetActiveItem(2) or 0
for i = 0, EID.Config["ItemReminderShowPocketDesc"]-1 do
local heldCard = player:GetCard(i)
local heldPill = player:GetPill(i)
if heldCard > 0 then
addObjectDesc(5, 300, heldCard)
elseif heldPill > 0 then
-- Check if our held pill is identified
EID.pillPlayer = player
local identified = game:GetItemPool():IsPillIdentified(heldPill)
if REPENTANCE and heldPill % PillColor.PILL_GIANT_FLAG == PillColor.PILL_GOLD then identified = true end
if (identified or EID.Config["ShowUnidentifiedPillDescriptions"]) then
addObjectDesc(5, 70, heldPill)
end
EID.pillPlayer = nil
elseif diceBag > 0 and not dicePrinted then
dicePrinted = true
addObjectDesc(5, 100, diceBag, "{{Trinket154}}")
elseif pocketActive > 0 and not pocketPrinted then
pocketPrinted = true
addObjectDesc(5, 100, pocketActive)
-- we'll have to add tainted char specific text for their actives with unique effects for that character!
end
end
end
-- Trinket Descriptions
if EID.Config["ItemReminderShowTrinketDesc"] > 0 then
for i = 0, EID.Config["ItemReminderShowTrinketDesc"]-1 do
local heldActive = player:GetTrinket(i)
if heldActive > 0 and not blacklist["5.350." .. heldActive] then
-- Rainbow Worm
if EID.Config["ItemReminderShowHiddenInfo"] and heldActive == 64 then
blacklist["5.350.64"] = true
local rainbowWormEffect = rainbowWormEffects[math.floor(game.TimeCounter / 30 / 3) % (REPENTANCE and 10 or 8)]
addObjectDesc(5, 350, rainbowWormEffect, "{{Trinket64}}")
-- 404 Error
-- Unfortunately, includes other temporary trinket givers, such as Glitched Items. We'd need to predict 404's result using RNG to actually know which it specifically is granting
-- And unfortunately, HasTrinket can't differentiate between real and fake trinkets in AB+
elseif EID.Config["ItemReminderShowHiddenInfo"] and REPENTANCE and heldActive == 75 then
blacklist["5.350.75"] = true
-- Don't display Mysterious Paper's 1-frame temporary trinket granting
local hasPaper = player:HasTrinket(21)
for i = 1, TrinketType.NUM_TRINKETS - 1 do
local tempTrinketFound = EID.player:HasTrinket(i, true) ~= EID.player:HasTrinket(i, false)
if tempTrinketFound and (not mysteriousPaperBlacklist[i] or not hasPaper) then
addObjectDesc(5, 350, i, "{{Trinket75}}")
end
end
else
addObjectDesc(5, 350, heldActive)
end
end
end
end
--
-- Finally, check the twin player of this controller
-- If both twins have a desc, show their player icon / name to separate the two descs
if REPENTANCE and not checkingTwin then
local twin = player:GetOtherTwin()
local mainTwinDesc = holdMapDesc
local otherTwinDesc = ""
if twin then otherTwinDesc = EID:getHoldMapDescription(twin, true) end
if otherTwinDesc ~= "" then
-- Only the other twin had a desc
if mainTwinDesc == "" then holdMapDesc = otherTwinDesc
else
-- Both twins had a desc; merge them with player icon headers
holdMapDesc = (EID:getIcon("Player"..player:GetPlayerType()) ~= EID.InlineIcons["ERROR"] and "{{Player"..player:GetPlayerType().."}}" or "{{CustomTransformation}}") .. " {{ColorGray}}" .. player:GetName() .. "#" .. mainTwinDesc .. "#"
holdMapDesc = holdMapDesc .. (EID:getIcon("Player"..twin:GetPlayerType()) ~= EID.InlineIcons["ERROR"] and "{{Player"..twin:GetPlayerType().."}}" or "{{CustomTransformation}}") .. " {{ColorGray}}" .. twin:GetName() .. "#" .. otherTwinDesc
end
else
-- Only the main twin had a desc
holdMapDesc = mainTwinDesc
end
end
return holdMapDesc
end
+30 -1
View File
@@ -389,9 +389,38 @@ if MCMLoaded then
---------------------------------------------------------------------------
---------------------------------Display-----------------------------------
-- Item Reminder Settings --
EID:AddBooleanSetting("Display", "ItemReminderEnabled", "Item Reminder Description", {offText = "Disabled", onText = "Enabled", infoText = "Hold Map to show your active item's effect, recently picked up items, and much more"})
local actionToName = { [0] = "Move Left", "Move Right", "Move Up", "Move Down", "Shoot Left", "Shoot Right", "Shoot Up", "Shoot Down", "Bomb", "Item", "Pill/Card", "Drop", "Pause", "Map" }
EID:AddNumberSetting("Display", "BagOfCraftingToggleKey", "Hold to Show", 8, 13, {displayTable = actionToName,
infoText = {"Hold this key to display the Item Reminder description, show Flip/Spindown previews and control the Bag of Crafting recipe list"}})
local itemSlotReminders = { [0] = "No", "Yes (max 1)", "Yes (max 2)", "Yes (max 3)", "Yes (max 4)", "Yes (max 5)",
"Yes (max 6)", "Yes (max 7)", "Yes (max 8)" }
-- should these be organized in the order they're shown in the map desc code?
EID:AddNumberSetting("Display", "ItemReminderShowRecentItem", "Recent Item Descriptions", 0, 4, { displayTable = itemSlotReminders, infoText = {"Show recently acquired item descriptions in the Item Reminder (good for Curse of the Blind!)"}})
EID:AddNumberSetting("Display", "ItemReminderShowActiveDesc", "Active Item Descriptions", 0, 2, { displayTable = itemSlotReminders, infoText = "Show your active item descriptions in the Item Reminder"})
EID:AddNumberSetting("Display", "ItemReminderShowPocketDesc", "Pocket Item Descriptions", 0, 4, { displayTable = itemSlotReminders, infoText = "Show your pocket item (card, pill, active) descriptions in the Item Reminder"})
EID:AddNumberSetting("Display", "ItemReminderShowTrinketDesc", "Trinket Descriptions", 0, 2, { displayTable = itemSlotReminders, infoText = "Show your trinket descriptions in the Item Reminder"})
EID:AddNumberSetting("Display", "ItemReminderShowPoopDesc", "Poop Descriptions", 0, 6, { repOnly = true, displayTable = itemSlotReminders, infoText = "Show Tainted ???'s next Poop Spell descriptions in the Item Reminder"})
EID:AddBooleanSetting("Display", "ItemReminderShowHiddenInfo", "Show Hidden Information", { infoText = "Items like 404 Error can have their current granted item revealed in the Item Reminder"})
EID:AddBooleanSetting("Display", "ItemReminderShowRNGCheats", "Show RNG Predictions", { infoText = "Some items can have their next result predicted and shown in the Item Reminder"})
MCM.AddSpace("EID", "Display")
--
local refreshRateSteps = {1, 2, 3, 4, 6, 10, 12, 15, 20, 30, 60}
EID:AddScrollSetting("Display", "RefreshRate", "Description Refresh Rate", refreshRateSteps,
{infoText = "How many times per second that EID updates what description to show"})
{displayingTab = "", infoText = "How many times per second that EID updates what description to show"})
EID:AddBooleanSetting("Display", "CoopDescriptions", "Co-op Player Descriptions",
{infoText = "Allow Players 2, 3, and 4 to display descriptions in Co-op"})
EID:AddBooleanSetting("Display", "PairedPlayerDescriptions", "Paired Player Descriptions", {repOnly = true,
+8 -1
View File
@@ -3,6 +3,8 @@ 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
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, }
@@ -60,8 +62,11 @@ function EID:CheckPlayersCollectibles()
end
end
-- Handle description changes that occur while holding Map
local function TabCallback(descObj)
if EID.TabPreviewID == 0 then return descObj end
EID.TabDescThisFrame = true
EID.inModifierPreview = true
local descEntry = EID:getDescriptionObj(5, 100, EID.TabPreviewID)
EID.inModifierPreview = false
@@ -476,6 +481,8 @@ if REPENTANCE then
-- Handle co-op players seeing different pill effects
local function CoopPillCallback(descObj)
-- Don't do this check when holding Tab for pill effects
if not descObj.Entity then return descObj end
local printedDescs = { [descObj.Name] = true }
for i = 1,#EID.coopAllPlayers do
@@ -614,7 +621,7 @@ EID:addDescriptionModifier("EID Afterbirth+", EIDConditionsAB, nil)
-- should this be done differently so that mods can add tab previews? (tab conditions is done last, but would be done before callbacks mods add, maybe tab should be checked in EID:getDescriptionObj
local function TabConditions(descObj)
if EID:PlayersActionPressed(ButtonAction.ACTION_MAP) and not EID.inModifierPreview then return true end
if EID:PlayersActionPressed(EID.Config["BagOfCraftingToggleKey"]) and not EID.inModifierPreview then return true end
EID.TabPreviewID = 0
return false
end
+1
View File
@@ -113,6 +113,7 @@ local function CheckLogForItems(_)
local eidDesc = ""
local theLog = io.open(logLocation, "r")
if theLog == nil then return end
theLog:seek("set", logCursor)
local line = theLog:read()
+42 -15
View File
@@ -41,6 +41,8 @@ local altPathItemChecked = {}
local alwaysUseLocalMode = false -- set to true after drawing a non-local mode description this frame
EID.ForceRefreshCache = false -- set to true to force-refresh descriptions, currently used for potential transformation text changes
local preHourglassStatus = {}
EID.holdTabPlayer = 0
EID.holdTabCounter = 0
EID.GameUpdateCount = 0
EID.GameRenderCount = 0
@@ -103,6 +105,7 @@ require("eid_data")
require("eid_xmldata")
require("eid_api")
require("eid_modifiers")
require("eid_holdmapdesc")
-- load Repentence descriptions
if REPENTANCE then
@@ -460,10 +463,11 @@ local function resetDescCache()
end
function EID:addDescriptionToPrint(desc)
function EID:addDescriptionToPrint(desc, insertLoc)
if desc.Entity and EID.entitiesToPrint[GetPtrHash(desc.Entity)] then return end
if #EID.descriptionsToPrint == EID.Config["MaxDescriptionsToDisplay"] then return end
table.insert(EID.descriptionsToPrint, desc)
if insertLoc then table.insert(EID.descriptionsToPrint, insertLoc, desc)
else table.insert(EID.descriptionsToPrint, desc) end
if desc.Entity then EID.entitiesToPrint[GetPtrHash(desc.Entity)] = true end
end
@@ -666,9 +670,10 @@ function EID:printDescription(desc, cachedID)
EID:evaluateTransformationProgress(transform)
transformationName = transformationName .. " "
for _, player in ipairs(EID.coopAllPlayers) do
if player:GetPlayerType() ~= PlayerType.PLAYER_THESOUL_B then
local playerType = player:GetPlayerType()
if playerType ~= PlayerType.PLAYER_THESOUL_B and player:GetBabySkin() == -1 then
if #EID.coopAllPlayers > 1 then
local playerIcon = EID:getIcon("Player"..player.SubType) ~= EID.InlineIcons["ERROR"] and "{{Player"..player.SubType.."}}" or "{{CustomTransformation}}"
local playerIcon = EID:getIcon("Player"..playerType) ~= EID.InlineIcons["ERROR"] and "{{Player"..playerType.."}}" or "{{CustomTransformation}}"
transformationName = transformationName .. playerIcon
end
local numCollected = EID.TransformationProgress[EID:getPlayerID(player)] and EID.TransformationProgress[EID:getPlayerID(player)][transform] or 0
@@ -726,8 +731,8 @@ function EID:printBulletPoints(description, renderPos)
end
---------------------------------------------------------------------------
----------------------------Handle New Room--------------------------------
local isMirrorRoom = false
local isDeathCertRoom = false
EID.isMirrorRoom = false
EID.isDeathCertRoom = false
if REPENTANCE then
function EID:AssignFlipItems()
EID.flipMaxIndex = -1
@@ -745,8 +750,8 @@ if REPENTANCE then
end
function EID:onNewRoomRep()
local level = game:GetLevel()
isMirrorRoom = level:GetCurrentRoom():IsMirrorWorld()
isDeathCertRoom = EID:GetDimension(level) == 2
EID.isMirrorRoom = level:GetCurrentRoom():IsMirrorWorld()
EID.isDeathCertRoom = EID:GetDimension(level) == 2
-- Handle Flip Item
initialItemNext = false
@@ -758,6 +763,8 @@ end
-- On new room, save the status of any variables that need to be rewound upon Glowing Hourglass usage
function EID:onNewRoom()
EID.RecentlyTouchedItems = {}
local curRoomIndex = game:GetLevel():GetCurrentRoomIndex()
preHourglassStatus = {}
@@ -840,7 +847,7 @@ function EID:renderIndicator(entity, playerNum)
local sprite = entity:GetSprite()
if REPENTANCE then
repDiv = 255
if isMirrorRoom then
if EID.isMirrorRoom then
local screenCenter = EID:getScreenSize()/2
entityPos.X = entityPos.X - (entityPos-screenCenter).X * 2
arrowPos.X = arrowPos.X - (arrowPos-screenCenter).X * 2
@@ -878,7 +885,7 @@ function EID:renderIndicator(entity, playerNum)
EID:renderEntity(entity, sprite, entityPos)
end
end
if isMirrorRoom then
if EID.isMirrorRoom then
sprite.FlipX = false
end
end
@@ -891,7 +898,7 @@ function EID:PositionLocalMode(entity)
local textBoxWidth = EID.Config["LocalModeCentered"] and tonumber(EID.Config["TextboxWidth"])/2 * EID.Scale or -30
local textPosOffset = Vector(-textBoxWidth, 20)
EID:alterTextPos(Isaac.WorldToScreen(entity.Position + textPosOffset))
if isMirrorRoom then
if EID.isMirrorRoom then
EID:alterTextPos(Isaac.WorldToScreen(entity.Position + textPosOffset * Vector(-1,0)))
local screenCenter = EID:getScreenSize()/2
EID.UsedPosition.X = EID.UsedPosition.X - (EID.UsedPosition-screenCenter).X * 2
@@ -969,6 +976,7 @@ function EID:setPlayer()
EID.coopMainPlayers = { EID.player }
EID.coopAllPlayers = EID.players
EID.controllerIndexes[p.ControllerIndex] = 1
EID.isMultiplayer = false
return
end
@@ -1203,6 +1211,7 @@ local function onRender(t)
end
end
EID.TabPreviewID = 0
EID.TabDescThisFrame = false
-- If MCM is open, don't show anything unless we're in a tab labeled as "Visuals" or "Crafting"
if ModConfigMenu and ModConfigMenu.IsVisible and ModConfigMenu.Config["Mod Config Menu"].HideHudInMenu and EID.MCMCompat_isDisplayingEIDTab ~= "Visuals" and EID.MCMCompat_isDisplayingEIDTab ~= "Crafting" then
@@ -1244,6 +1253,15 @@ local function onRender(t)
return
end
local tabHeld, playerHoldingTab = EID:PlayersActionPressed(EID.Config["BagOfCraftingToggleKey"])
if tabHeld then
EID.holdTabPlayer = EID.coopMainPlayers[playerHoldingTab]
EID.holdTabCounter = EID.holdTabCounter + 1
else
EID.holdTabPlayer = nil
EID.holdTabCounter = 0
end
if EID.ForceRefreshCache then
resetDescCache()
end
@@ -1326,7 +1344,7 @@ local function onRender(t)
inRangeEntities = { EID.lastDescriptionEntity }
end
-- Only display the indicator for the primary (closest / crafting) description
if EID.lastDescriptionEntity and not displayedCrafting then
if EID.lastDescriptionEntity then
EID:renderIndicator(EID.lastDescriptionEntity, EID.controllerIndexes[player.ControllerIndex] or 1)
table.insert(EID.CachedIndicators, {EID.lastDescriptionEntity, EID.controllerIndexes[player.ControllerIndex]})
end
@@ -1337,7 +1355,7 @@ local function onRender(t)
if EID.Config["EnableEntityDescriptions"] and EID:getEntityData(closest, "EID_Description") then
local desc = EID:getEntityData(closest, "EID_Description")
local origDesc = EID:getDescriptionObjByEntity(closest)
if type(desc) == "table" then
if desc ~= nil and type(desc) == "table" then
origDesc.Description = desc.Description or origDesc.Description
origDesc.Name = desc.Name or origDesc.Name
origDesc.Transformation = desc.Transformation or origDesc.Transformation
@@ -1349,7 +1367,7 @@ local function onRender(t)
-- Handle Glitched Items
elseif closest.Type == 5 and closest.Variant == 100 and closest.SubType > 4294960000 then
if EID:getEntityData(closest, "EID_DontHide") ~= true then
if (EID:hasCurseBlind() and not closest:ToPickup().Touched and EID.Config["DisableOnCurse"] and not isDeathCertRoom) or (EID.Config["DisableOnAltPath"] and not closest:ToPickup().Touched and EID:IsAltChoice(closest)) or (game.Challenge == Challenge.CHALLENGE_APRILS_FOOL and EID.Config["DisableOnAprilFoolsChallenge"]) then
if (EID:hasCurseBlind() and not closest:ToPickup().Touched and EID.Config["DisableOnCurse"] and not EID.isDeathCertRoom) or (EID.Config["DisableOnAltPath"] and not closest:ToPickup().Touched and EID:IsAltChoice(closest)) or (game.Challenge == Challenge.CHALLENGE_APRILS_FOOL and EID.Config["DisableOnAprilFoolsChallenge"]) then
EID:addDescriptionToPrint({ Description = "QuestionMark", Entity = closest})
end
end
@@ -1407,7 +1425,7 @@ local function onRender(t)
elseif closest.Variant == PickupVariant.PICKUP_COLLECTIBLE then
--Handle Collectibles
if EID:getEntityData(closest, "EID_DontHide") ~= true then
if (EID:hasCurseBlind() and not closest:ToPickup().Touched and EID.Config["DisableOnCurse"] and not isDeathCertRoom) or (EID.Config["DisableOnAltPath"] and not closest:ToPickup().Touched and EID:IsAltChoice(closest)) or (game.Challenge == Challenge.CHALLENGE_APRILS_FOOL and EID.Config["DisableOnAprilFoolsChallenge"]) then
if (EID:hasCurseBlind() and not closest:ToPickup().Touched and EID.Config["DisableOnCurse"] and not EID.isDeathCertRoom) or (EID.Config["DisableOnAltPath"] and not closest:ToPickup().Touched and EID:IsAltChoice(closest)) or (game.Challenge == Challenge.CHALLENGE_APRILS_FOOL and EID.Config["DisableOnAprilFoolsChallenge"]) then
EID:addDescriptionToPrint({ Description = "QuestionMark", Entity = closest})
end
end
@@ -1482,6 +1500,15 @@ local function onRender(t)
end
end
-- handle showing the Hold Map Helper description
if EID.Config["ItemReminderEnabled"] and EID.holdTabCounter >= 30 and EID.TabDescThisFrame == false and EID.holdTabPlayer ~= nil then
--have we done anything that makes AB+ get angry? still need to test AB+!
local demoDescObj = EID:getDescriptionObj(-999, -1, 1)
demoDescObj.Name = ""
demoDescObj.Description = EID:getHoldMapDescription(EID.holdTabPlayer)
if (demoDescObj.Description ~= "") then EID:addDescriptionToPrint(demoDescObj, 1) end
end
EID:printDescriptions()
end
+27 -1
View File
@@ -1,5 +1,5 @@
<AnimatedActor>
<Info CreatedBy="Unknown" CreatedOn="3/23/2022 6:30:33 AM" Version="183" Fps="30"/>
<Info CreatedBy="Unknown" CreatedOn="6/5/2022 1:39:49 AM" Version="187" Fps="30"/>
<Content>
<Spritesheets>
<Spritesheet Path="eid_inline_icons.png" Id="0"/>
@@ -191,6 +191,7 @@
<Frame XPosition="0" YPosition="0" XPivot="0" YPivot="0" XCrop="209" YCrop="256" Width="5" Height="4" XScale="100" YScale="100" Delay="1" Visible="true" RedTint="255" GreenTint="255" BlueTint="255" AlphaTint="255" RedOffset="0" GreenOffset="0" BlueOffset="0" Rotation="0" Interpolated="false"/>
<Frame XPosition="0" YPosition="0" XPivot="0" YPivot="0" XCrop="215" YCrop="261" Width="5" Height="4" XScale="100" YScale="100" Delay="1" Visible="true" RedTint="255" GreenTint="255" BlueTint="255" AlphaTint="255" RedOffset="0" GreenOffset="0" BlueOffset="0" Rotation="0" Interpolated="false"/>
<Frame XPosition="0" YPosition="0" XPivot="0" YPivot="0" XCrop="33" YCrop="68" Width="8" Height="7" XScale="100" YScale="100" Delay="1" Visible="true" RedTint="255" GreenTint="255" BlueTint="255" AlphaTint="255" RedOffset="0" GreenOffset="0" BlueOffset="0" Rotation="0" Interpolated="false"/>
<Frame XPosition="0" YPosition="0" XPivot="0" YPivot="0" XCrop="149" YCrop="67" Width="9" Height="8" XScale="100" YScale="100" Delay="1" Visible="true" RedTint="255" GreenTint="255" BlueTint="255" AlphaTint="255" RedOffset="0" GreenOffset="0" BlueOffset="0" Rotation="0" Interpolated="false"/>
</LayerAnimation>
<LayerAnimation LayerId="1" Visible="true"/>
</LayerAnimations>
@@ -241,6 +242,7 @@
<Frame XPosition="0" YPosition="0" XPivot="0" YPivot="0" XCrop="100" YCrop="78" Width="10" Height="10" XScale="100" YScale="100" Delay="1" Visible="true" RedTint="255" GreenTint="255" BlueTint="255" AlphaTint="255" RedOffset="0" GreenOffset="0" BlueOffset="0" Rotation="0" Interpolated="false"/>
<Frame XPosition="0" YPosition="0" XPivot="0" YPivot="0" XCrop="111" YCrop="78" Width="10" Height="10" XScale="100" YScale="100" Delay="1" Visible="true" RedTint="255" GreenTint="255" BlueTint="255" AlphaTint="255" RedOffset="0" GreenOffset="0" BlueOffset="0" Rotation="0" Interpolated="false"/>
<Frame XPosition="0" YPosition="0" XPivot="0" YPivot="0" XCrop="122" YCrop="78" Width="10" Height="10" XScale="100" YScale="100" Delay="1" Visible="true" RedTint="255" GreenTint="255" BlueTint="255" AlphaTint="255" RedOffset="0" GreenOffset="0" BlueOffset="0" Rotation="0" Interpolated="false"/>
<Frame XPosition="0" YPosition="0" XPivot="0" YPivot="0" XCrop="133" YCrop="78" Width="9" Height="9" XScale="100" YScale="100" Delay="1" Visible="true" RedTint="255" GreenTint="255" BlueTint="255" AlphaTint="255" RedOffset="0" GreenOffset="0" BlueOffset="0" Rotation="0" Interpolated="false"/>
</LayerAnimation>
<LayerAnimation LayerId="1" Visible="true"/>
</LayerAnimations>
@@ -601,5 +603,29 @@
<NullAnimations/>
<Triggers/>
</Animation>
<Animation Name="PoopSpells" FrameNum="1" Loop="false">
<RootAnimation>
<Frame XPosition="0" YPosition="0" XScale="100" YScale="100" Delay="1" Visible="true" RedTint="255" GreenTint="255" BlueTint="255" AlphaTint="255" RedOffset="0" GreenOffset="0" BlueOffset="0" Rotation="0" Interpolated="false"/>
</RootAnimation>
<LayerAnimations>
<LayerAnimation LayerId="0" Visible="true">
<Frame XPosition="0" YPosition="0" XPivot="0" YPivot="0" XCrop="0" YCrop="285" Width="16" Height="16" XScale="100" YScale="100" Delay="1" Visible="false" RedTint="255" GreenTint="255" BlueTint="255" AlphaTint="255" RedOffset="0" GreenOffset="0" BlueOffset="0" Rotation="0" Interpolated="false"/>
<Frame XPosition="0" YPosition="0" XPivot="0" YPivot="0" XCrop="0" YCrop="285" Width="16" Height="16" XScale="100" YScale="100" Delay="1" Visible="true" RedTint="255" GreenTint="255" BlueTint="255" AlphaTint="255" RedOffset="0" GreenOffset="0" BlueOffset="0" Rotation="0" Interpolated="false"/>
<Frame XPosition="0" YPosition="0" XPivot="0" YPivot="0" XCrop="16" YCrop="285" Width="16" Height="16" XScale="100" YScale="100" Delay="1" Visible="true" RedTint="255" GreenTint="255" BlueTint="255" AlphaTint="255" RedOffset="0" GreenOffset="0" BlueOffset="0" Rotation="0" Interpolated="false"/>
<Frame XPosition="0" YPosition="0" XPivot="0" YPivot="0" XCrop="32" YCrop="285" Width="16" Height="16" XScale="100" YScale="100" Delay="1" Visible="true" RedTint="255" GreenTint="255" BlueTint="255" AlphaTint="255" RedOffset="0" GreenOffset="0" BlueOffset="0" Rotation="0" Interpolated="false"/>
<Frame XPosition="0" YPosition="0" XPivot="0" YPivot="0" XCrop="48" YCrop="285" Width="16" Height="16" XScale="100" YScale="100" Delay="1" Visible="true" RedTint="255" GreenTint="255" BlueTint="255" AlphaTint="255" RedOffset="0" GreenOffset="0" BlueOffset="0" Rotation="0" Interpolated="false"/>
<Frame XPosition="0" YPosition="0" XPivot="0" YPivot="0" XCrop="64" YCrop="285" Width="16" Height="16" XScale="100" YScale="100" Delay="1" Visible="true" RedTint="255" GreenTint="255" BlueTint="255" AlphaTint="255" RedOffset="0" GreenOffset="0" BlueOffset="0" Rotation="0" Interpolated="false"/>
<Frame XPosition="0" YPosition="0" XPivot="0" YPivot="0" XCrop="80" YCrop="285" Width="16" Height="16" XScale="100" YScale="100" Delay="1" Visible="true" RedTint="255" GreenTint="255" BlueTint="255" AlphaTint="255" RedOffset="0" GreenOffset="0" BlueOffset="0" Rotation="0" Interpolated="false"/>
<Frame XPosition="0" YPosition="0" XPivot="0" YPivot="0" XCrop="96" YCrop="285" Width="16" Height="16" XScale="100" YScale="100" Delay="1" Visible="true" RedTint="255" GreenTint="255" BlueTint="255" AlphaTint="255" RedOffset="0" GreenOffset="0" BlueOffset="0" Rotation="0" Interpolated="false"/>
<Frame XPosition="0" YPosition="0" XPivot="0" YPivot="0" XCrop="112" YCrop="285" Width="16" Height="16" XScale="100" YScale="100" Delay="1" Visible="true" RedTint="255" GreenTint="255" BlueTint="255" AlphaTint="255" RedOffset="0" GreenOffset="0" BlueOffset="0" Rotation="0" Interpolated="false"/>
<Frame XPosition="0" YPosition="0" XPivot="0" YPivot="0" XCrop="0" YCrop="301" Width="16" Height="16" XScale="100" YScale="100" Delay="1" Visible="true" RedTint="255" GreenTint="255" BlueTint="255" AlphaTint="255" RedOffset="0" GreenOffset="0" BlueOffset="0" Rotation="0" Interpolated="false"/>
<Frame XPosition="0" YPosition="0" XPivot="0" YPivot="0" XCrop="16" YCrop="301" Width="16" Height="16" XScale="100" YScale="100" Delay="1" Visible="true" RedTint="255" GreenTint="255" BlueTint="255" AlphaTint="255" RedOffset="0" GreenOffset="0" BlueOffset="0" Rotation="0" Interpolated="false"/>
<Frame XPosition="0" YPosition="0" XPivot="0" YPivot="0" XCrop="32" YCrop="301" Width="16" Height="16" XScale="100" YScale="100" Delay="1" Visible="true" RedTint="255" GreenTint="255" BlueTint="255" AlphaTint="255" RedOffset="0" GreenOffset="0" BlueOffset="0" Rotation="0" Interpolated="false"/>
</LayerAnimation>
<LayerAnimation LayerId="1" Visible="true"/>
</LayerAnimations>
<NullAnimations/>
<Triggers/>
</Animation>
</Animations>
</AnimatedActor>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 29 KiB