Compare commits

..
30 Commits
Author SHA1 Message Date
Wofsauge e8ad909891 Added feature to hide pilleffects till they are used at least once 2022-09-03 01:18:42 +02:00
Wofsauge 71b19d9f75 Fixed huge data-inconsistency issues when using legacy EID API features 2022-09-03 00:33:18 +02:00
Wofsauge d2ecc50c56 Added GridEntity Description feature; Reworked sacrifice spike descriptions 2022-09-01 20:20:51 +02:00
Wofsauge 81efabf913 Updated Workshop mod 2022-09-01 00:13:20 +02:00
Wofsauge ceba87a2dc Added Item Reminder for Void (absorbed active items) 2022-08-31 23:59:22 +02:00
Wofsauge 47acc42f6f EID:getObjectName() now can get entity names; Added coloring and icons to Name markup 2022-08-31 23:28:15 +02:00
Wofsauge b60439bddc Added Name-Markup. Example: {{NameC3}} -> Spoon Bender 2022-08-31 22:55:13 +02:00
Wofsauge 01706097d9 Added autodetection of tag-based transformations on modded items 2022-08-31 22:03:29 +02:00
wofsauge 786aae892c Merge pull request #505 from presaac/patch-7
ja_jp : sync with en_us & some fixes
2022-08-31 21:11:39 +02:00
wofsauge 2b1daa3533 Merge pull request #504 from presaac/patch-6
ja_jp : some fixes
2022-08-31 21:11:15 +02:00
Wofsauge 44e11223e1 Echo Chamber Reminder now supports Cards, Runes and pills 2022-08-31 21:06:53 +02:00
prefab 0479419e21 ja_jp : sync with en_us & some fixes 2022-08-31 11:20:12 +09:00
prefab 8857822788 ja_jp : some fixes 2022-08-31 11:19:37 +09:00
Wofsauge f8de2683ab Add last used pill effect info for VURP;
Added Echo Chamber itemreminder feature
2022-08-31 00:43:44 +02:00
Wofsauge 3b8e2b770e Updated Czech Translationpack (Polyphemus, Powerpill) 2022-08-23 13:30:22 +02:00
Buurazu e901db7002 revert BoC display to Recipe List by default
due to overwhelming user demand/confusion
2022-08-21 22:16:17 -04:00
Buurazu 71664c739c Merge pull request #501 from biobak64/en-fixes
en_us big rewrite
2022-08-21 05:56:54 -04:00
Buurazu 3370676b45 Merge branch 'master' into en-fixes 2022-08-21 05:56:09 -04:00
Buurazu 6c63b6c694 final check 2022-08-21 05:54:55 -04:00
Buurazu b9186d6194 oops i was wrong 2022-08-20 14:17:40 -04:00
Buurazu 6523621de8 up to book of belial buffs 2022-08-20 05:42:59 -04:00
Buurazu e9b3d51468 up to 715 2022-08-20 05:29:15 -04:00
Buurazu f0ea6bccbf lil brimstone icon 2022-08-20 05:16:26 -04:00
Buurazu f6eb4936df i like the single use !s 2022-08-20 04:17:56 -04:00
Buurazu 3921b096d8 sync wording with rep 2022-08-17 06:08:45 -04:00
Buurazu 8067072a2b up to 555 2022-08-17 06:08:18 -04:00
Buurazu 4f36033b2c done checking ab+ 2022-08-17 04:36:21 -04:00
Buurazu 20b2603ae7 checked through to trinkets 2022-08-17 01:48:24 -04:00
Buurazu e117360e4b checked up to 391 2022-08-16 06:28:22 -04:00
biobak 550b3e9878 en_us big rewrite
massive rewrite for consistency

standardized all tense usage so that descriptions are in the present tense unless the action happens in the future

standardized references to the character ("you", "the character", "the player", etc.) so that all descriptions say "Isaac" unless the description is specifically talking about characters, in which cases it becomes "the player"

Standardized "gain", "adds", "gives", etc. to "grants"

Standardized formulations to make clearer sentences ("when taking damage, gives +1 damage up" -> "taking damage grants +1 damage up")

Removed superfluous info, overly complex formulas and purely cosmetic descriptions

Made some descriptions clearer ("bomb tears" -> "isaac shoots bombs instead of tears")

Removed the word familiar from familiar descriptions ("familiar that shoots spectral tears" -> "shoots spectral tears")

Made verbs third person ("Heal a red heart" -> "Heals a red heart")

Changed Sacrifice Room and Sanguine Bond descriptions to make them easier to read

Probably a lot more too but i've been on it for a while and i forgot

might be errors in there i haven't run it  through spellcheck
2022-08-15 19:31:12 +02:00
15 changed files with 1513 additions and 1315 deletions

No files matched your search

+2 -2
View File
@@ -188,7 +188,7 @@ EID.descriptions[languageCode].collectibles={
{"166", "D20", "Zamíchá pickupy"},
{"167", "Harlekýnské Dítě", "Vystřelí dvě slzy ve tvaru písmene V#Uděluje 4 poškození za střelu"},
{"168", "Epický Zárodek", "Kontrolovatelný nálet místo slz#Uděluje 20násobek tvého poškození"},
{"169", "Polyfémos", "↑ {{Damage}} +100% Větší Poškození#↑ {{Damage}} +4 dodatečné Větší Poškození#↓ {{Tears}} Méně Slz#Slzy pokračují i po zabití nepřítele"},
{"169", "Polyfémos", "↑ {{Damage}} +100% Větší Poškození#↑ {{Damage}} +4 dodatečné Větší Poškození#↓ {{Tears}} Méně Slz#Slzy pokračují i ​​po zabití nepřítele"},
{"170", "Taťka Dlouhonožka", "Dupe na nepřátele#Uděluje 40 poškození za sekundu"},
{"171", "Pavoučí Prdel", "Zpomalí nepřátele na 4 sekundy#10 poškození všem nepřátelům"},
{"172", "Obětní Dýka", "Orbitální dýka#Blokuje nepřátelské střely#Uděluje 225 poškození za sekundu"},
@@ -804,7 +804,7 @@ EID.descriptions[languageCode].pills={
{"33", "Jedna Tě Zmenší", "Zmenšení#Tvůj hitbox je menší"},
{"34", "Zamoření!", "Vytvoří 1 modrého pavouka za každé hovno v místnosti"},
{"35", "Zamoření?", "Vytvoří 1 modrého pavouka za každého nepřítele v místnosti#Vytvoří 1-3 modré pavouky, když se v místnosti žádný nepřítel nenachází"},
{"36", "Power Pilulka!", "Krátká nesmrtelnost#Udělujete kontaktní poškození"},
{"36", "Power Pilulka!", "Krátká nesmrtelnost#Uděluješ kontaktní poškození"},
{"37", "Retro Vize", "Rozpixeluje obrazovku po dobu 30 sekund"},
{"38", "Přátelé až do Konce!", "Vytvoří 3 modré mouchy"},
{"39", "X-Lax", "Vytvoří za tebou klouzavou hovnovou kaluž"},
+530 -530
View File
File diff suppressed because it is too large. Load diff
+5 -5
View File
@@ -271,7 +271,7 @@ EID.descriptions[languageCode].collectibles={
{"249", "There's Options", "ボスアイテムを2つの 候補から選択できる"},
{"250", "Bogo Bombs", "全ての爆弾がダブル バージョンに置き換わる"},
{"251", "Starter Deck", "カードを2枚まで 保持可能になる#全てのピルをカードに 置き変える#取得時、ランダムな カードを1枚スポーン"},
{"252", "Little Baggy", "ピルを2枚まで 保持可能になる#全てのカードをピルに 置き変える#取得時、ランダムな ピルを1個スポーン"},
{"252", "Little Baggy", "ピルを2個まで 保持可能になる#全てのカードをピルに 置き変える#取得時、ランダムな ピルを1個スポーン"},
{"253", "Magic Scab", "↑ 運    +1#↑ 最大体力 +1"},
{"254", "Blood Clot", "左目のみに適用:#↑ 攻撃力 +1#↑ 射程  +5"},
{"255", "Screw", "↑ 連射速度 +0.5#↑ 弾速   +0.2"},
@@ -393,7 +393,7 @@ EID.descriptions[languageCode].collectibles={
{"369", "Continuum", "↑ 射程   +2.25#↑ 涙の高さ +1.5#涙に透過効果を付与#涙が画面の端と端で ループするようになる"},
{"370", "Mr. Dolly", "↑ 連射速度 +0.7#↑ 射程   +5.25#↑ 涙の高さ +0.5#取得時、ランダムな ハートを3個スポーン"},
{"371", "Curse of the Tower", "ダメージを受けるたび 6個のトロル爆弾がスポーン#この効果で生成された トロル爆弾は爆弾強化 アイテムの特殊効果を 引き継ぐ"},
{"372", "Charged Baby", "バトル中、30秒おきに、#{{Blank}} \7 電池のスポーン#{{Blank}} \7 チャージの追加#{{Blank}} \7 敵を1.5秒間石化#{{Blank}} のいずれかを行う使い魔"},
{"372", "Charged Baby", "バトル中、30秒おきに、#{{Blank}} \7 電池のスポーン#{{Blank}} \7 チャージの追加#{{Blank}} \7 敵を1.5秒間石化#{{Blank}} のいずれかを行う使い魔#電池とチャージ効果は 一部屋2回まで有効"},
{"373", "Dead Eye", "↑ 涙が敵に当たるたび 攻撃力 +25%(最大100%)#涙が外れると一定確率で 攻撃力がリセットされる"},
{"374", "Holy Light", "一定確率で聖なる涙が 発射され、衝突すると 近くの敵に光線が降り注ぐ#光線は攻撃力x4の ダメージを与える#確率:運0=9%、9=50%"},
{"375", "Host Hat", "爆発耐性を付与#敵の弾を25%の確率で ブロックし、跳ね返す"},
@@ -556,7 +556,7 @@ EID.descriptions[languageCode].collectibles={
{"532", "Lachryphagy", "涙が徐々に減速しながら 飛ぶようになり、停止か 衝突すると破裂して涙を 拡散する#涙が他の涙を吸収し、 サイズとダメージを 増加させるようになる#涙が5つ吸収されると、 即座に破裂する"},
{"533", "Trisagion", "涙が貫通効果を持つ 短い光線に置き換わる#光線は攻撃力x0.33の ダメージを複数回与える"},
{"534", "Schoolbag", "アクティブアイテムを 2つ保持可能になる#ドロップボタンで切替え"},
{"535", "Blanket", "青ハート +1#体力を1回復#ボス部屋に入った時、 一度だけダメージを 無効化するシールド を付与  "},
{"535", "Blanket", "青ハート +1#体力を1回復#ボス部屋に入った時、 一度だけダメージを 無効化するシールドを付与"},
{"536", "Sacrificial Altar", "!!! 使い切りアイテム !!!#使い魔をランダムに最大 2体生贄に捧げ、等しい 数の悪魔部屋アイテムを スポーンする#所有する青ハエ/クモが コインに変換される"},
{"537", "Lil Spewer", "アイザックの攻撃に連動 してチャージを溜め、 解放時に有害な液体を 床に吐き出す使い魔#ピルを使用するたびに 液体の効果がランダムに 変化する#取得時、ランダムな ピルを1個スポーン"},
{"538", "Marbles", "取得時、ランダムな トリンケットを3つ スポーンする#ダメージを受けた時、 5%の確率で保持中の トリンケットが吸収 され、効果が永続化する"},
@@ -775,7 +775,7 @@ EID.descriptions[languageCode].pills={
{"2", "Balls of Steel", "青ハート +2"},
{"3", "Bombs are Key", "爆弾と鍵の所持数を 入れ替える"},
{"4", "Explosive Diarrhea", "アイザックの尻から 点火済みの爆弾が 5連続スポーンする"},
{"5", "体力全回復", "体力全回復"},
{"5", "Full Health", "体力全回復"},
{"6", "Health Down", "↓ 最大体力 -1#最大体力が1以下の 場合、HPアップに変化"},
{"7", "Health Up", "↑ 最大体力 +1"},
{"8", "I Found Pills", "効果なし"},
@@ -881,7 +881,7 @@ EID.descriptions[languageCode].CollectionPageInfo = "コレクションページ
EID.descriptions[languageCode].MCM = {
DemoObjectName = "Demo Object Name",
DemoObjectTransformation = "Demo Transformation",
DemoObjectText = "日本語の表示サンプル#↑ 行間 +0.5#↓ 文字のサイズ +0.25#説明文は、単語間の半角 スペースで自動的に改行 されます#!!! 日本語はスペースを使用 しないので、改行位置に 半角スペースを決め打ち しています 表示幅をデフォルトから 変更すると表示が崩れる 可能性があります#デフォルトの表示幅:130 全角13文字が一行の限界#最終更新日:2022-08-04",
DemoObjectText = "日本語の表示サンプル#↑ 行間 +0.5#↓ 文字のサイズ +0.25#説明文は、単語間の半角 スペースで自動的に改行 されます#!!! 日本語はスペースを使用 しないので、改行位置に 半角スペースを決め打ち しています 表示幅をデフォルトから 変更すると表示が崩れる 可能性があります#デフォルトの表示幅:130 全角13文字が一行の限界",
}
EID.descriptions[languageCode].HoldMapTitle = "アイテムリマインダー"
+1 -1
View File
@@ -74,7 +74,7 @@ local repCollectibles={
[155] = {"155", "Kukadlo", "Poletuje po místnosti#Uděluje 17.1 kontaktního poškození za sekundu#↑ {{Damage}} Slzy vystřelené z Izákova levého oka způsobí o 34 % větší poškození"}, -- The Peeper
[158] = {"158", "Křišťálová Koule", "Odhalí celou mapu#{{SoulHeart}} Vytvoří duševní srdce#{{Card}} náhodnou kartu#{{Rune}} či runu#Při držení :#{{PlanetariumChance}} +15% šance na Planetárium#100% šance pokud {{TreasureRoom}} Pokladnice byla přeskočena"}, -- Crystal Ball
[161] = {"161", "Ankh", "{{Player4}} Znovuzrodiš se jako ??? (Blue Baby) po smrti#{{Player25}} Poskvrněný ??? se sám oživí"}, -- Ankh
[169] = {"169", "Polyfémos", "↑ {{Damage}} +100% Větší Poškození#↑ {{Damage}} +4 dodatečné Větší Poškození#↓ {{Tears}} -58% Méně Slz#Slzy pokračují i po zabití nepřítele"},
[169] = {"169", "Polyfémos", "↑ {{Damage}} +100% Větší Poškození#↑ {{Damage}} +4 dodatečné Větší Poškození#↓ {{Tears}} -58% Méně Slz#Slzy pokračují i ​​po zabití nepřítele"},
[171] = {"171", "Pavoučí Prdel", "{{Slow}} Zpomalí nepřátele na 4 sekundy#10 poškození všem nepřátelům#Zabití nepřátelé vytvoří modré pavouky"}, -- Spider Butt
[172] = {"172", "Obětní Dýka", "Orbitální nůž#Blokuje nepřátelské střely#Udává 112.5 poškození za sekundu"}, -- Sacrificial Dagger
[176] = {"176", "Kmenové Buňky", "↑ {{Heart}} +1 Zvýšení Zdraví#↑ {{Shotspeed}} +0.16 Vyšší Rychlost Střel#{{Heart}} Vyléčí 1 červené srdce"}, -- Stem Cells
+530 -540
View File
File diff suppressed because it is too large. Load diff
+11 -19
View File
@@ -2,7 +2,7 @@
----- Basic Japanese descriptions -----
---------------------------------------
-- Last Update: 2022-08-11
-- Last Update: 2022-08-31
-- FORMAT: Item ID | Name| Description
-- '#' = starts new line of text
@@ -97,7 +97,7 @@ local repCollectibles={
[223] = {"223", "Pyromaniac", "爆風を浴びると 体力が0.5回復する#爆弾 +5"}, -- Pyromaniac
[224] = {"224", "Cricket's Body", "衝突した涙が四つに分裂する#分裂した涙はダメージ量が 半減する#↑ 連射速度 +0.5 ※上限を突破できる#↓ 射程   -20%"}, -- Cricket's Body
[228] = {"228", "Mom's Perfume", "一定確率で涙に 恐怖効果を付与#確率:運0=12%、85=100%#↑ 連射速度 +0.5 ※上限を突破できる"}, -- Mom's Perfume
[229] = {"229", "Monstro's Lung", "涙をチャージ式に置き換え、 一度に14発の涙を同時発射 できるようになる#↓ 連射速度 -77%"}, --Monstro's Lung
[229] = {"229", "Monstro's Lung", "涙をチャージ式に置き換え、 一度に14発の涙を同時発射 できるようになる#↓ 連射速度 -77%"}, --Monstro's Lung
[230] = {"230", "Abaddon", "↑ 攻撃力  +1.5#↑ 移動速度 +0.2#一定確率で涙に 恐怖効果を付与#赤ハートを同数の 黒ハートに置き換える#黒ハート +2"}, -- Abaddon
[232] = {"232", "Stop Watch", "全ての敵の移動速度と 攻撃速度が20%ダウン#↑ 移動速度 +0.3"}, -- Stop Watch
[233] = {"233", "Tiny Planet", "涙がアイザックを周回 して飛ぶようになる#↑ 射程 +6.5#涙に透過効果を付与"}, -- Tiny Planet
@@ -128,6 +128,8 @@ local repCollectibles={
[294] = {"294", "Butter Bean", "おならで近くの敵と弾を ノックバックさせる#この効果で壁や障害物に 衝突した敵はダメージを 受ける "}, -- Butter Bean
[295] = {"295", "Magic Fingers", "1コイン消費し、部屋の 全ての敵に攻撃力x2+10の ダメージを与える"}, -- Magic Fingers
[296] = {"296", "Converter", "青/黒ハートを1個消費し、 最大体力を1個増やす"}, -- Converter
--NOTE FOR LOCALIZERS: There is code to highlight the text of your current floor
--For it to work, only use line breaks or semicolons to separate floor details, and use the same order as English
[297] = {"297", "Pandora's Box", "{{Warning}} 使い切りアイテム#使用フロアで効果が変化:#B1:青ハート 2個#B2:爆弾と鍵 各2個#C1:ボスアイテム 1個#C2:B1+C1#D1:青ハート 4個#D2:コイン 20枚#W1:ボスアイテム 2個#W2:{{Collectible33}} 聖書#???/Void:なし#Sheol:悪魔部屋アイテム1個    黒ハート 1個#Cat:天使部屋アイテム 1個   白ハート 1個#DarkRoom:{{Collectible523}}お引越し用の箱       をアンロック#Chest:コイン 1枚#Home:{{Collectible580}}レッドキー"}, -- Pandora's Box
[300] = {"300", "Aries", "↑ 移動速度 +0.25#素早く敵に衝突すると、 敵に25のダメージを与える#この時、アイザックは ダメージを受けない"}, -- Aries
[307] = {"307", "Capricorn", "↑ 最大体力 +1#↑ 攻撃力  +0.5#↑ 移動速度 +0.1#↑ 射程   +0.75#↑ 連射速度 +0.5#コイン・爆弾・鍵 +1"}, -- Capricorn
@@ -154,12 +156,11 @@ local repCollectibles={
[354] = {"354", "Crack Jacks", "↑ 最大体力 +1#取得時、トリンケットを ランダムに1個スポーン#体力を1回復"}, -- Crack Jacks
[355] = {"355", "Mom's Pearls", "↑ 射程 +0.38#↑ 運  +1#青ハート +1"}, -- Mom's Pearls
[360] = {"360", "Incubus", "アイザックの涙をコピー して攻撃する使い魔#リリス以外のキャラで 使う場合、ダメージが 25%減少する"}, -- Incubus
[365] = {"365", "Lost Fly", "壁や障害物に沿って 移動する使い魔#毎秒56の接触ダメージ#近くの敵を追尾攻撃する"}, -- Lost Fly
[365] = {"365", "Lost Fly", "壁や障害物に沿って 移動する使い魔#毎秒56の接触ダメージ#近くの敵を引き付け、 アイザックの代わりに 攻撃対象となる"}, -- Lost Fly
[366] = {"366", "Scatter Bombs", "爆弾 +5#爆弾から4~5個の小さな 爆弾が分裂する"}, -- Scatter Bombs
[368] = {"368", "Epiphora", "同一方向に攻撃し続けると 連射速度が上昇していき、 最大200%アップする#攻撃の停止・方向変更で 連射速度がリセットされる"}, -- Epiphora
[369] = {"369", "Continuum", "↑ 射程 +3#涙に透過効果を付与#涙が画面の端と端で ループするようになる"}, -- Continuum
[370] = {"370", "Mr. Dolly", "↑ 連射速度 +0.7#↑ 射程   +1.5#取得時、ランダムな ハートを3個スポーン"}, -- Mr. Dolly
[372] = {"372", "Charged Baby", "バトル中、30秒おきに、#{{Blank}} \7 電池のスポーン#{{Blank}} \7 チャージの追加#{{Blank}} \7 敵を1.5秒間石化#{{Blank}} のいずれかを行う使い魔"}, -- Charged Baby
[374] = {"374", "Holy Light", "一定確率で聖なる涙が 発射され、衝突すると 近くの敵に光線が降り注ぐ#光線は攻撃力x3の ダメージを与える#確率:運0=9%、9=50%"}, -- Holy Light
[375] = {"375", "Host Hat", "爆発耐性を付与#敵の弾を25%の確率で ブロックし、跳ね返す#頭上に落下してくる弾を ブロックする"}, -- Host hat
[376] = {"376", "Restock", "お店で商品を購入すると 新しい商品が補充される#補充されるたびに商品が 値上がりする"}, -- Restock
@@ -224,7 +225,6 @@ local repCollectibles={
[523] = {"523", "Moving Box", "部屋のピックアップと アイテムを、10個まで 保存して運べる#保存した状態で再使用 すると、中身をそこに 展開する"}, -- Moving Box
[524] = {"524", "Technology Zero", "涙同士が電気ビームで つながり、触れた敵に 攻撃力x0.3のダメージ を秒間15回与える"}, -- Technology Zero
[531] = {"531", "Haemolacria", "涙が弧を描いて飛び、 衝突すると破裂して 小さな涙が拡散する#↑ 攻撃力  +50%#↑ 攻撃力  +1#↓ 連射速度 -67%#↓ 射程   -20%"}, -- Haemolacria
[535] = {"535", "Blanket", "青ハート +1#体力を1回復#{{HolyMantle}} ボス部屋に入った時、 一度だけダメージを 無効化するシールドを付与"},
[543] = {"543", "Hallowed Ground", "ダメージを受けると 白いうんちがスポーン#うんちオーラの範囲内:#↑ 攻撃力  +20%#↑ 連射速度 +150%#涙にホーミング効果を付与#一定確率でダメージ無効化"}, -- Hallowed Ground
[549] = {"549", "Brittle Bones", "最大体力を0にし、6個の 骨ハートに置き換える#骨ハートを失うと:#8方向に骨が飛び散る#↑ 連射速度 +0.4(永続)"}, -- Brittle Bones
[552] = {"552", "Mom's Shovel", "次のフロアにつながる トラップドアを生成#装飾のある床の上で 使用するとクロール スペースを生成する (草やゴミがある床)#!!! ある場所で使うと…?"}, -- Mom's Shovel
@@ -252,7 +252,7 @@ local repCollectibles={
[574] = {"574", "Monstrance", "アイザックがオーラを 放ち、範囲内の敵に ダメージを与える#オーラの中心に近付く ほどダメージ量が増加"}, -- Monstrance
[575] = {"575", "The Intruder", "クモが頭に寄生し、スロー 効果付き涙で敵を攻撃する#ダメージを受けた時、 一定確率で頭から飛び出す"}, -- The Intruder
[576] = {"576", "Dirty Mind", "敵のうんちが味方になる#うんちを壊すと1~4匹の うんち使い魔がスポーン#特殊なうんちは特殊な うんち使い魔をスポーン#一定確率で岩がうんちに 置き換わる"}, -- Dirty Mind
[577] = {"577", "Damocles", "{{Warning}} 使い切りアイテム {{Warning}}#頭上に吊るされた剣が 一定の確率で落下し、 アイザックが即死する#剣が吊るされている間、 アイテムは倍になって スポーンする#お店、宝箱、悪魔取引の アイテムは倍にならない#即死効果は無敵状態で 回避できる#落下確率は15分で50%"}, -- Damocles
[577] = {"577", "Damocles", "{{Warning}} 使い切りアイテム {{Warning}}#使うと、アイザックの 頭上に剣が吊るされ、 以降、アイテムが倍に なってスポーンする#お店、宝箱、悪魔取引の アイテムは倍にならない#{{Warning}} ダメージを受けた後、 剣が一定確率で落下し、 アイザックが即死する#即死効果は無敵状態で 回避できる#落下確率は15分で50%"}, -- Damocles
[578] = {"578", "Free Lemonade", "床にレモネードが広がり、 敵に毎秒24のダメージを 与える"}, -- Free Lemonade
[579] = {"579", "Spirit Sword", "涙を剣による近接攻撃に 置き換える#剣は攻撃力x3のダメージを 与え、総体力が十分な時、 ビームを放つ#フルチャージするとスピン アタックとビームを放つ"}, -- Spirit Sword
[580] = {"580", "Red Key", "赤いドアの輪郭が表示 された壁に対して使用 すると、新しい部屋を 生成できる#10%の確率で特殊部屋が 生成される#13x13の範囲外に生成   すると、I AM ERRORに つながる  "}, -- Red Key
@@ -328,10 +328,10 @@ local repCollectibles={
[650] = {"650", "Plum Flute", "ベビープラムが召喚され、 10秒間敵と戦う"}, -- Plum Flute
[651] = {"651", "Star of Bethlehem", "ボス部屋に向かって自律 移動し、到達すると停止 する使い魔#使い魔の範囲内:#↑ 攻撃力 +1#↑ 攻撃力 +20%#↑ 連射速度アップ#涙にホーミング効果を付与#一定確率でダメージ無効"}, -- Star of Bethlehem
[652] = {"652", "Cube Baby", "接触した敵にダメージと スロー効果を与え、敵を 倒した場合は凍結させる 使い魔  #自ら動けず、アイザック との接触や、敵の弾の ブロックでスライドする"}, -- Cube Baby
[653] = {"653", "Vade Retro", "保持中、倒された敵が 赤い幽霊を残す#アイテムを使用すると 赤い幽霊が爆発し、 敵にダメージを与える"}, -- Vade Retro
[653] = {"653", "Vade Retro", "保持中、倒された敵が 赤い幽霊を残す#アイテムを使用すると 赤い幽霊が爆発し、 敵にダメージを与える#残り体力が50%以下の、 幽霊タイプの敵を即死 させる(ボスを含む)"}, -- Vade Retro
[654] = {"654", "False PHD", "黒ハート +1#全てのピルが識別される#良性のピルを悪性に変換#ステータスを下げるピルを 飲むと攻撃力が0.6増加し、 それ以外の場合黒ハートを スポーンする"}, -- False PHD
[655] = {"655", "Spin to Win", "コマがアイザックを周回 し、敵に接触ダメージを 与え、弾をブロックする#毎秒10.5の接触ダメージ#使用すると、コマと他の 使い魔が高速で周回し、 接触ダメージが強化され、 移動速度が0.5アップする"}, -- Spin to Win
[656] = {"656", "Damocles", "頭上に吊るされた剣が 一定の確率で落下し、 アイザックが即死する#剣が吊るされている間、 アイテムは倍になって スポーンする#お店、宝箱、悪魔取引の アイテムは倍にならない#即死効果は無敵状態で 回避できる#落下確率は15分で50%"}, -- Damocles
[656] = {"656", "Damocles", "使うと、アイザックの 頭上に剣が吊るされ、 以降、アイテムが倍に なってスポーンする#お店、宝箱、悪魔取引の アイテムは倍にならない#{{Warning}} ダメージを受けた後、 剣が一定確率で落下し、 アイザックが即死する#即死効果は無敵状態で 回避できる#落下確率は15分で50%"}, -- Damocles
[657] = {"657", "Vasculitis", "倒された敵が涙を拡散する#拡散する涙はアイザックの 持つ特殊効果を引き継ぐ"}, -- Vasculitis
[658] = {"658", "Giant Cell", "ダメージを受けるたびに マイクロ・アイザックが スポーンし、近くの敵を 追いかけ攻撃する"}, -- Giant Cell
[659] = {"659", "Tropicamide", "↑ 射程 +1.5#↑ 涙のサイズ"}, -- Tropicamide
@@ -524,7 +524,7 @@ EID.descriptions[languageCode].bookOfVirtuesWisps = {
[42] = "7.5%の確率で{{Collectible149}}吐き気薬", -- Bob's Rotten Head
[44] = "涙が10%の確率で敵を テレポートさせる#5秒おきに姿を消す", -- Teleport!
[45] = "倒した敵が20%の確率で 赤ハートを落とす", -- Yum Heart
[47] = "0.5倍ダメージ#使用時、照準地点に 2発の爆発涙を発射する", -- Doctor's Remote
[47] = "0.5倍ダメージ#使用時、照準地点に 3発の爆発涙を発射する", -- Doctor's Remote
[49] = "涙攻撃なし#使用時、同時にレーザー 攻撃を放つ", -- Shoop da Whoop!
[56] = "短射程・高速連射の涙#レモン汁を床に垂らし、 敵にダメージを与える", -- Lemon Mishap
[58] = "敵の弾で破壊されない", -- Book of Shadows
@@ -826,7 +826,6 @@ EID.descriptions[languageCode].goldenTrinketEffects = {
local repCards={
[2] = {"2", "I - The Magician", "その部屋に居る間、涙に ホーミング効果を付与#↑ 射程 +3"}, -- I - The Magician
[4] = {"4", "III - The Empress", "その部屋に居る間:#↑ 攻撃力  +2.35#↑ 移動速度 +0.3"},
[12] = {"12", "XI - Strength", "その部屋に居る間:#↑ 最大体力 +1#↑ 攻撃力  +0.3#↑ 攻撃力  +50%#↑ 射程   +1.5#↑ 移動速度 +0.3"}, -- XI - Strength
[16] = {"16", "XV - The Devil", "その部屋に居る間:#↑ 攻撃力 +2"},
[18] = {"18", "XVII - The Stars", "{{TreasureRoom}} トレジャールームに テレポート#{{Planetarium}} プラネタリウムがある場合、 そちらにテレポート"},
@@ -839,7 +838,6 @@ local repCards={
[42] = {"42", "Chaos Card", "移動方向にカードを投げ、 触れた敵を即死させる#デリリウムとビーストは 即死無効"}, -- Chaos Card
[51] = {"51", "Holy Card", "一度だけダメージを 無効化するシールドを 付与する   #効果は次のダメージを 受けるまで持続"}, -- Holy Card
[52] = {"52", "Huge Growth", "その部屋に居る間:#↑ 攻撃力 +7#↑ 射程  +3#障害物破壊能力を付与#アイザックのサイズ拡大"}, -- Huge Growth
[54] = {"54", "Era Walk", "その部屋に居る間:#全ての敵をスロー状態に#↑ 移動速度 +0.5#↓ 弾速   -1"},
[55] = {"55", "Rune Shard", "ランダムなルーンの 効果を発動する#通常のルーンよりも 効果は弱体化される"}, -- Rune Shard
[56] = {"56", "0 - The Fool?", "所持するピックアップと ハートを全て床に落とし、 残り体力を半ハートにする#一定数以上のコインと 爆弾は、{{Collectible74}}クォーターか {{Collectible19}}ドカーン!に変化して 落とされる"}, -- 0 - The Fool?
[57] = {"57", "I - The Magician?", "敵と弾を跳ね返すオーラを 1分間付与する"}, -- I - The Magician?
@@ -927,12 +925,6 @@ local repPills={
[4] = {"3", "Bombs are Key", "爆弾と鍵の所持数を 入れ替える#金爆弾/金鍵の場合、 金効果も入れ替わる"}, -- Bombs are Key
[12] = {"11", "Range Down", "↓ 射程 -0.6"}, -- Range Down
[13] = {"12", "Range Up", "↑ 射程 +0.75"}, -- Range Up
[14] = {"13", "Speed Down", "↓ 移動速度 -0.12"},
[15] = {"14", "Speed Up", "↑ 移動速度 +0.15"},
[16] = {"15", "Tears Down", "↓ 連射速度 -0.28"},
[17] = {"16", "Tears Up", "↑ 連射速度 +0.35"},
[18] = {"17", "Luck Down", "↓ 運 -1"},
[19] = {"18", "Luck Up", "↑ 運 +1"},
[38] = {"37", "Retro Vision", "ゲーム画面が30秒間 ピクセル加工される"},
[42] = {"41", "I'm Drowsy...", "部屋の全ての敵と アイザックを スロー状態にする"}, -- I'm Drowsy...
[43] = {"42", "I'm Excited!!!", "部屋の全ての敵と アイザックを 加速状態にする#30秒後と60秒後にも 効果が発動する"}, -- I'm Excited!!!
@@ -1083,10 +1075,10 @@ EID.descriptions[languageCode].CraftingBagQuality = "バッグ品質:"
EID.descriptions[languageCode].CraftingBestQuality = "最高品質:"
EID.descriptions[languageCode].CraftingHideKey = "非表示:"
EID.descriptions[languageCode].CraftingPreviewKey = "プレビュー"
EID.descriptions[languageCode].CraftingPreviewKey = "プレビュー:"
EID.descriptions[languageCode].CraftingPreviewBackup = "!!! アンロックされていない場合"
EID.descriptions[languageCode].CraftingResults = "スクロール:#{{Blank}} {{CONFIG_BoC_Toggle}} 押下中に {{ButtonY}} or {{ButtonA}}#固定: {{ButtonX}} 更新: {{ButtonB}}#バッグリセット:{{ButtonRB}} 長押し"
EID.descriptions[languageCode].CraftingResults = "レシピのスクロール:#{{Blank}} マップ表示ボタン押下中#{{Blank}} {{ButtonY}} or {{ButtonA}}#レシピの固定: {{ButtonX}}#レシピの更新: {{ButtonB}}#バッグリセット:{{ButtonRB}} 長押し"
EID.descriptions[languageCode].BlankCardCharge = "白紙のカードチャージ:"
EID.descriptions[languageCode].BlankCardQCard = "I AM ERRORにテレポート#白紙のカードと?カード 両方が消失する"
+153 -14
View File
@@ -2,22 +2,39 @@
if not __eidItemDescriptions then
__eidItemDescriptions = {}
end
setmetatable(__eidItemDescriptions,
{ __newindex = function(_, k, v) EID:addCollectible(k, v) end })
if not __eidTrinketDescriptions then
__eidTrinketDescriptions = {}
end
setmetatable(__eidTrinketDescriptions,
{ __newindex = function(_, k, v) EID:addTrinket(k, v) end })
if not __eidCardDescriptions then
__eidCardDescriptions = {}
end
setmetatable(__eidCardDescriptions,
{ __newindex = function(_, k, v) EID:addCard(k, v) end })
if not __eidPillDescriptions then
__eidPillDescriptions = {}
end
setmetatable(__eidPillDescriptions,
{ __newindex = function(_, k, v) EID:addPill(k, v) end })
if not __eidItemTransformations then
__eidItemTransformations = {}
end
setmetatable(__eidItemTransformations,
{ __newindex = function(_, k, v) EID:assignTransformation("collectible", k, v) end })
if not __eidEntityDescriptions then
__eidEntityDescriptions = {}
end
setmetatable(__eidEntityDescriptions,
{ __newindex = function(_, k, v)
local entityID = {}
for id in string.gmatch(k, "([^.]+)") do
table.insert(entityID, id)
end
EID:addEntity(entityID[1], entityID[2], entityID[3], v[1], v[2])
end })
---------------------------------------------------------------------------
-------------------------Handle API Functions -----------------------------
local nullVector = Vector(0,0)
@@ -146,6 +163,29 @@ function EID:assignTransformation(targetType, targetIdentifier, transformationSt
EID:removeEntryFromString(EID.CustomTransformRemovals, entryID, transformationString)
end
-- Try to automatically assign vanilla transformations to the entity
function EID:tryAutodetectTransformationsCollectible(collectibleID)
if not REPENTANCE then return end
local config = EID.itemConfig:GetCollectible(collectibleID)
local transformations = {}
transformations[EID.TRANSFORMATION.ANGEL] = config:HasTags(ItemConfig.TAG_ANGEL) or nil
transformations[EID.TRANSFORMATION.BOB] = config:HasTags(ItemConfig.TAG_BOB) or nil
transformations[EID.TRANSFORMATION.BOOKWORM] = config:HasTags(ItemConfig.TAG_BOOK) or nil
transformations[EID.TRANSFORMATION.CONJOINED] = config:HasTags(ItemConfig.TAG_BABY) or nil
transformations[EID.TRANSFORMATION.GUPPY] = config:HasTags(ItemConfig.TAG_GUPPY) or nil
transformations[EID.TRANSFORMATION.LEVIATHAN] = config:HasTags(ItemConfig.TAG_DEVIL) or nil
transformations[EID.TRANSFORMATION.LORD_OF_THE_FLIES] = config:HasTags(ItemConfig.TAG_FLY) or nil
transformations[EID.TRANSFORMATION.MOM] = config:HasTags(ItemConfig.TAG_MOM) or nil
transformations[EID.TRANSFORMATION.MUSHROOM] = config:HasTags(ItemConfig.TAG_MUSHROOM) or nil
transformations[EID.TRANSFORMATION.POOP] = config:HasTags(ItemConfig.TAG_POOP) or nil
transformations[EID.TRANSFORMATION.SPIDERBABY] = config:HasTags(ItemConfig.TAG_SPIDER) or nil
transformations[EID.TRANSFORMATION.SPUN] = config:HasTags(ItemConfig.TAG_SYRINGE) or nil
-- these dont have a tag : ADULT, STOMPY, SUPERBUM
for k, _ in pairs(transformations) do
EID:assignTransformation("collectible", collectibleID, k)
end
end
-- Removes a transformation of an entity
-- valid target types: [collectible, trinket, card, pill, entity]
-- when type = entity, targetIdentifier must be in the format "ID.Variant.subtype". for any other type, it can just be the id
@@ -427,6 +467,8 @@ function EID:getAdjustedSubtype(Type, Variant, SubType)
if SubType > 32768 then
return SubType - 32768
end
elseif tableName == "sacrifice" then
return math.min(#EID.descriptions["en_us"].sacrifice, SubType)
elseif tableName == "pills" or tableName == "horsepills" then
-- The effect of a pill varies depending on what player is looking at it in co-op
-- EID.pillPlayer is a way to recheck a pill for what different players will turn it into
@@ -510,24 +552,37 @@ function EID:getObjectName(Type, Variant, SubType)
return name or (not string.find(vanillaName, "^#") and vanillaName) or EID.descriptions["en_us"][tableName][SubType][2] or vanillaName
elseif tableName == "pills" or tableName == "horsepills" then
local adjustedSubtype = EID:getAdjustedSubtype(Type, Variant, SubType)
local vanillaName = ""
if adjustedSubtype == 9999 then
vanillaName = "Golden Pill" -- only used for languages that haven't defined a Golden Pill name
else
vanillaName = EID.itemConfig:GetPillEffect(adjustedSubtype - 1).Name
end
name = name or (not string.find(vanillaName, "^#") and vanillaName) or EID.descriptions["en_us"][tableName][adjustedSubtype][2] or vanillaName
return string.gsub(name,"I'm Excited!!!","I'm Excited!!") -- prevent markup trigger
return EID:getPillName(adjustedSubtype, tableName == "horsepills")
elseif tableName == "sacrifice" then
return EID:getDescriptionEntry("sacrificeHeader")
return EID:getDescriptionEntry("sacrificeHeader").." ("..SubType.."/"..#EID.descriptions["en_us"].sacrifice..")"
elseif tableName == "dice" then
return EID:getDescriptionEntry("diceHeader").." ("..SubType..")"
elseif tableName == "custom" then
return name or Type.."."..Variant.."."..SubType
local xmlName = EID.XMLEntityNames[Type.."."..Variant] or EID.XMLEntityNames[Type.."."..Variant.."."..SubType]
return name or xmlName or Type.."."..Variant.."."..SubType
end
return Type.."."..Variant.."."..SubType
end
-- returns the name of a pill based on the pilleffect id
function EID:getPillName(pillID, isHorsepill)
local moddedDesc = EID:getDescriptionEntry("custom", "5.70."..pillID)
local legacyModdedDescription = EID:getLegacyModDescription(5, 70, pillID)
local tableName = isHorsepill and "horsepills" or "pills"
local defaultDesc = EID:getDescriptionEntry(tableName, pillID)
local name = moddedDesc or legacyModdedDescription or defaultDesc
local vanillaName = ""
if pillID == 9999 then
vanillaName = "Golden Pill" -- only used for languages that haven't defined a Golden Pill name
else
vanillaName = EID.itemConfig:GetPillEffect(pillID - 1).Name
end
name = name and name[2] or (not string.find(vanillaName, "^#") and vanillaName) or EID.descriptions["en_us"][tableName][pillID][2] or vanillaName
return string.gsub(name,"I'm Excited!!!","I'm Excited!!") -- prevent markup trigger
end
-- tries to get the ingame description of an object, based on their description in the XML files
function EID:getXMLDescription(Type, Variant, SubType)
local tableName = EID:getTableName(Type, Variant, SubType)
@@ -545,6 +600,16 @@ end
-- check if an entity is part of the describable entities
function EID:hasDescription(entity)
if entity and EID:IsGridEntity(entity) then
if entity and EID.GridEntityWhitelist[entity:GetType()] then
for _, func in ipairs(EID.GridEntityWhitelist[entity:GetType()]) do
if func(entity) then
return true
end
end
end
return false
end
local isAllowed = false
local entityString = entity.Type .. "." .. entity.Variant .. "." .. entity.SubType
@@ -584,6 +649,33 @@ function EID:replaceShortMarkupStrings(text)
return text
end
-- Replaces name markup objects with the actual name
function EID:replaceNameMarkupStrings(text)
for word in string.gmatch(text, "{{Name.-}}") do
local strTrimmed = string.gsub(word, "{{Name(.-)}}", function(a) return a end)
local indicator = string.sub(strTrimmed, 1, 1)
local id = tonumber(string.sub(strTrimmed, 2, -1))
local name = ""
if tonumber(indicator) then
local entityID = {}
for e in string.gmatch(strTrimmed, "([^.]*)") do
table.insert(entityID, tonumber(e))
end
name = EID:getObjectName(entityID[1], entityID[2], entityID[3])
elseif indicator == "C" then -- Collectible
name = "{{Collectible"..id.."}}"..EID:getObjectName(5, 100, id)
elseif indicator == "T" then -- Trinket
name = "{{Trinket"..id.."}}"..EID:getObjectName(5, 350, id)
elseif indicator == "P" then -- Pills
name = "{{Pill"..id.."}}"..EID:getPillName(id, false)
elseif indicator == "K" then -- Card
name = "{{Card"..id.."}}"..EID:getObjectName(5, 300, id)
end
text = string.gsub(text, word, "{{ColorYellow}}"..name.."{{CR}}", 1)
end
return text
end
-- Generates a string with the defined pixel-length using a custom 1px wide character
-- This will only work for this specific custom font
function EID:generatePlaceholderString(length)
@@ -1284,7 +1376,7 @@ function EID:getScreenSize()
end
function EID:getEntityData(entity, str)
if entity ~= nil and entity:GetData() ~= nil then
if entity ~= nil and not EID:IsGridEntity(entity) and entity:GetData() ~= nil then
return entity:GetData()[str]
end
return nil
@@ -1561,9 +1653,8 @@ local hadQueuedItem = {}
function EID:evaluateQueuedItems()
--initialize the interactions table for all players if it isn't already
for i = 0, game:GetNumPlayers() - 1 do
local player = Isaac.GetPlayer(i)
if not EID.PlayerItemInteractions[i] then
EID.PlayerItemInteractions[i] = {LastTouch = 0, actives = {}, pills = {}, altActives = {}, altPills = {}}
EID.PlayerItemInteractions[i] = {LastTouch = 0, actives = {}, pills = {}, altActives = {}, altPills = {}, pickupHistory = {}}
end
EID.RecentlyTouchedItems[i] = EID.RecentlyTouchedItems[i] or {}
end
@@ -1650,4 +1741,52 @@ end
-- Set a pilleffect to be permanently unidentifyable by EID
function EID:SetPillEffectUnidentifyable(pillEffectID, isUnidentifyable)
EID.UnidentifyablePillEffects[pillEffectID + 1] = isUnidentifyable or nil
end
-- Add pickup usage to history of pickups used by the player
function EID:AddPickupToHistory(pickupType, effectID, player, useFlags)
if REPENTANCE and useFlags & UseFlag.USE_MIMIC == UseFlag.USE_MIMIC then return end -- dont add mimic pills to history
local playerID = EID:getPlayerID(player)
if not EID.PlayerItemInteractions[playerID].pickupHistory then
EID.PlayerItemInteractions[playerID].pickupHistory = {}
end
local historyTable = EID.PlayerItemInteractions[playerID].pickupHistory
-- pickupType = ["pill","card"], playerTypeID, effectID, hadEchoChamberWhenUsed
table.insert(historyTable, 1, {pickupType, player:GetPlayerType(), effectID, REPENTANCE and player:HasCollectible(700)})
end
-- Render a sprite of an entity
function EID:RenderEntity(entity, sprite, position)
if entity.Type == 5 and entity.Variant == 100 then
sprite:RenderLayer(1, position, nullVector, nullVector)
elseif entity.Type == 6 and entity.Variant == 16 then -- Crane Game
sprite:RenderLayer(2, position, nullVector, nullVector)
else
sprite:Render(position, nullVector, nullVector)
end
end
-- Tries to get the Vanilla transformations of modded items based on Tags
function EID:GetTransformationsOfModdedItems()
if not REPENTANCE then return end
local numCollectibles = EID:GetMaxCollectibleID()
for i = 733, numCollectibles, 1 do
EID:tryAutodetectTransformationsCollectible(i)
end
end
-- Returns true if a given entity is a grid entity
function EID:IsGridEntity(entity)
return entity.Type == nil
end
-- returns true if the given pilleffect id was used at least once by the current player
function EID:WasPillUsed(pillEffectID)
local playerID = EID:getPlayerID(EID.player)
local pillsTable = EID.PlayerItemInteractions[playerID].pills
if EID.player:GetPlayerType() == 38 then
pillsTable = EID.PlayerItemInteractions[playerID].altPills or pillsTable
end
return pillsTable[tostring(pillEffectID)] ~= nil
end
+8 -3
View File
@@ -245,6 +245,10 @@ EID.UserConfig = {
-- REPENTANCE ONLY!!!
-- Default = true
["DisplayPillInfoOptions?"] = true,
-- Keeps pilleffect descriptions unidentified, until the player has used the pill at least once in the run.
-- This ignores effects caused by PHD and False PHD
-- Default = false
["OnlyShowPillWhenUsedAtLeastOnce"] = false,
-- Toggle display of description for Pills that haven't been identified yet
-- Default = false
["ShowUnidentifiedPillDescriptions"] = false,
@@ -341,8 +345,8 @@ EID.UserConfig = {
-- No Recipes shows percentages of what item you might get from your bag / best option on the floor, for a more intended experience
-- Pickups Only just shows the room/floor pickup count
-- (No Recipes is recommended if you have modded items)
-- Default = "No Recipes"
["BagOfCraftingDisplayMode"] = "No Recipes",
-- Default = "Recipe List"
["BagOfCraftingDisplayMode"] = "Recipe List",
-- Hide the recipe list when in battle
-- Default = true
["BagOfCraftingHideInBattle"] = true,
@@ -521,6 +525,7 @@ EID.DefaultConfig = {
["DisplayPillInfoShop"] = true,
["DisplayPillInfoOptions?"] = true,
["DisplayObstructedPillInfo"] = false,
["OnlyShowPillWhenUsedAtLeastOnce"] = false,
["ShowUnidentifiedPillDescriptions"] = false,
["DisplayGlitchedItemInfo"] = debug and true or false,
["DisplaySacrificeInfo"] = true,
@@ -536,7 +541,7 @@ EID.DefaultConfig = {
["BagOfCraftingDisplayNames"] = false,
["BagOfCraftingDisplayIcons"] = false,
["BagOfCraftingHideInBattle"] = true,
["BagOfCraftingDisplayMode"] = "No Recipes",
["BagOfCraftingDisplayMode"] = "Recipe List",
["BagOfCraftingModdedRecipes"] = true,
["CraftingHideKey"] = Keyboard.KEY_F3,
["CraftingHideButton"] = -1,
+16
View File
@@ -21,6 +21,22 @@ EID.effectList = {
["161"] = true,
}
-- Grid entity types to be detected by EID
-- Add functions to the list to further filter the entries
EID.GridEntityWhitelist = {
[GridEntityType.GRID_SPIKES] = {
function(gridEntity)
return Game():GetRoom():GetType() == RoomType.ROOM_SACRIFICE and
EID.Config["DisplaySacrificeInfo"]
end,
function(gridEntity)
return REPENTANCE and EID.Config["DisplaySanguineInfo"] and
Game():GetRoom():GetType() == RoomType.ROOM_DEVIL and
EID:PlayersHaveCollectible(CollectibleType.COLLECTIBLE_SANGUINE_BOND)
end,
},
}
--maps the Player transformation from the enum PlayerForm to the internal transformation table
-- Possible usages: EID.TRANSFORMATION[ PlayerForm.PLAYERFORM_MUSHROOM ]
-- EID.TRANSFORMATION.MUSHROOM
+1 -1
View File
@@ -161,7 +161,7 @@ EID.InlineIcons["Test"] = {"pickups", -1, 9, 9, -1, 0, dummySprite3}
__eidItemDescriptions[3] = "{{Bomb}} Emote {{Key}} Test {{Test}}{{TestIcon}} {{ColorBlackBlink}}description {{SomeInvalidInnerStuff}} cool" -- 5.100.2 = Inner Eye
__eidItemDescriptions[6] = "This item as Inline Icon {{Collectible6}}#And here are others {{Collectible69}} {{Collectible16}} {{Collectible323}} {{Collectible345}} {{Collectible223}}#And some trinket sprites {{Trinket12}} {{Trinket22}} {{Trinket1}} {{Trinket55}} {{Trinket100}} {{Trinket123}}" -- 5.100.2 = Inner Eye
__eidItemDescriptions[6] = "This item as Inline Icon {{Collectible6}}#And here are others {{Collectible69}} {{Collectible16}} {{Collectible323}} {{Collectible345}} {{Collectible223}}#And some trinket sprites {{Trinket12}} {{Trinket22}} {{Trinket1}} {{Trinket55}} {{Trinket100}} {{Trinket123}}#And some names {{NameC3}},{{NameT23}} test {{Name3.54.0}}" -- 5.100.2 = Inner Eye
EID:addIgnoredEntity(5,100,10) -- Ignore "Halo of flies" collectible entity
+45
View File
@@ -40,6 +40,7 @@ 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 }
function EID:getHoldMapDescription(player, checkingTwin)
EID.InsideItemReminder = true
-- Starting Blacklist: Recall, Hold
@@ -65,6 +66,29 @@ function EID:getHoldMapDescription(player, checkingTwin)
append("{{PoopSpell" .. nextPoop .. "}}", poopInfo[nextPoop][1], poopInfo[nextPoop][2])
end
end
-- Echo Chamber Description
if REPENTANCE and player:HasCollectible(700) then
local playerID = player:GetPlayerType()
local pickupHistory = EID.PlayerItemInteractions[playerID].pickupHistory
if pickupHistory then
local pickupNames = ""
for i = 1, math.min(3, #pickupHistory) do
if pickupHistory[i][2] == playerID and pickupHistory[i][4] then -- Echo chamber is owned
if pickupHistory[i][1] == "pill" then
local name = EID:getPillName(pickupHistory[i][3], false)
pickupNames = pickupNames .. "{{Pill}} " .. name .. "#"
else
local name = EID:getObjectName(5, 300, pickupHistory[i][3])
pickupNames = pickupNames .. "{{Card" .. pickupHistory[i][3] .. "}} " .. name .. "#"
end
end
end
if pickupNames ~= "" then
append("{{Collectible700}}", EID:getObjectName(5, 100, 700), pickupNames)
end
end
end
-- Recently Acquired Item Descriptions
if EID.Config["ItemReminderShowRecentItem"] > 0 then
@@ -101,12 +125,33 @@ function EID:getHoldMapDescription(player, checkingTwin)
elseif heldActive == 419 and not EID.isMirrorRoom then
blacklist["5.100.419"] = true
append("{{Collectible419}}", EID:getObjectName(5,100,419) .. EID:getDescriptionEntry("HoldMapHeader"), EID:Teleport2Prediction())
-- D Infinity
elseif heldActive == 489 then
blacklist["5.100.489"] = true
addObjectDesc(5, 100, EID:CurrentDInfinity(getSeed(489), currentPlayer), "{{Collectible489}}")
-- D1
elseif heldActive == 476 and EID.Config["ItemReminderShowRNGCheats"] then
blacklist["5.100.476"] = true
append("{{Collectible476}}", EID:getObjectName(5,100,476) .. EID:getDescriptionEntry("HoldMapHeader"), EID:D1Prediction(getSeed(476)))
-- Void
elseif heldActive == 477 then
blacklist["5.100.477"] = true
local absorbedActives = ""
local absorbedItems = EID.absorbedItems[tostring(EID:getPlayerID(player))]
local countItems = 0
for _, _ in pairs(absorbedItems) do
countItems = countItems + 1
end
if countItems > 5 then
absorbedActives = "{{Blank}} "
end
for k, _ in pairs(absorbedItems) do
absorbedActives = absorbedActives .. "{{Collectible" .. k .. "}} "
if countItems <= 5 then
absorbedActives = absorbedActives .. " " .. EID:getObjectName(5, 100, tonumber(k)) .. "#"
end
end
append("{{Collectible477}}", EID:getObjectName(5, 100, 477), absorbedActives)
else
addObjectDesc(5, 100, heldActive)
end
+1
View File
@@ -361,6 +361,7 @@ if MCMLoaded then
EID:AddBooleanSetting("General", "DisableOnAltPath", "Show Hidden Alt-Path Item", {offText = "True", onText = "False",
repOnly = true, infoText = "Show the description for the blind item in Downpour/Mines/etc."})
EID:AddBooleanSetting("General", "OnlyShowPillWhenUsedAtLeastOnce", "Show pill effect after one use", {infoText = "Keeps pilleffect descriptions unidentified, until the player has used the pill at least once in the run. This ignores effects caused by PHD and False PHD"})
EID:AddBooleanSetting("General", "ShowUnidentifiedPillDescriptions", "Show Unidentified Pill Effects")
EID:AddBooleanSetting("General", "HideInBattle", "Hide in Battle", {infoText = "Hides the descriptions when in a fight"})
+31 -1
View File
@@ -217,8 +217,8 @@ end
-- Handle Sacrifice room payout
local function SacrificeRoomCallback(descObj)
local curCounter = descObj.ObjSubType or 1
descObj.Name = descObj.Name.." ("..curCounter.."/12)"
if curCounter <= 2 then
--Remove B1 Bomb drop info when not on B1
if game:GetLevel():GetAbsoluteStage() > 1 then
local splitPoint = string.find(descObj.Description, '#', 1)
descObj.Description = descObj.Description:sub(1,splitPoint-1)
@@ -462,6 +462,35 @@ if REPENTANCE then
return descObj
end
-- Handle VURP description addition
local function VurpCallback(descObj)
local adjustedID = EID:getAdjustedSubtype(descObj.ObjType, descObj.ObjVariant, descObj.ObjSubType)
if adjustedID - 1 ~= PillEffect.PILLEFFECT_VURP then return descObj end
local playerID = EID.player:GetPlayerType()
local pickupHistory = EID.PlayerItemInteractions[playerID].pickupHistory
if pickupHistory then
local lastUsedPill = nil
local i = 1
while (i <= #pickupHistory) do
local entry = pickupHistory[i]
if entry[1] == "pill" and entry[2] == playerID and entry[3] ~= PillEffect.PILLEFFECT_VURP + 1 then
lastUsedPill = entry[3]
break
end
i = i + 1
end
if lastUsedPill then
local tableName = EID:getTableName(descObj.ObjType, descObj.ObjVariant, descObj.ObjSubType)
local name = EID:getPillName(lastUsedPill, tableName == "horsepills")
EID:appendToDescription(descObj, "#{{Pill}} {{ColorSilver}}" .. name)
end
end
return descObj
end
-- Handle False PHD description addition
local function FalsePHDCallback(descObj)
local adjustedID = EID:getAdjustedSubtype(descObj.ObjType, descObj.ObjVariant, descObj.ObjSubType)
@@ -578,6 +607,7 @@ if REPENTANCE then
elseif descObj.ObjVariant == PickupVariant.PICKUP_PILL then
if EID.collectiblesOwned[654] then table.insert(callbacks, FalsePHDCallback) end
if EID.collectiblesOwned[348] then table.insert(callbacks, PlaceboCallback) end
table.insert(callbacks, VurpCallback)
if EID.pillPlayer == nil and #EID.coopAllPlayers > 1 then
table.insert(callbacks, CoopPillCallback)
+178 -198
View File
@@ -9,7 +9,7 @@ local game = Game()
require("eid_config")
EID.Config = EID.UserConfig
EID.Config.Version = "3.2" -- note: changing this will reset everyone's settings to default!
EID.ModVersion = "4.36"
EID.ModVersion = "4.37"
EID.DefaultConfig.Version = EID.Config.Version
EID.isHidden = false
EID.player = nil -- The primary Player Entity of Player 1
@@ -29,20 +29,18 @@ EID.isDisplayingPermanent = false
EID.permanentDisplayTextObj = nil
EID.lastDescriptionEntity = nil
EID.lineHeight = 11
EID.sacrificeCounter = {}
local spikePos = Vector(320, 280)
EID.itemConfig = Isaac.GetItemConfig()
EID.itemUnlockStates = {}
EID.CraneItemType = {}
EID.absorbedItems = {}
EID.CollectedItems = {}
EID.IgnoredEntities = {}
EID.CurrentRoomGridEntities = {}
EID.UnidentifyablePillEffects = {} -- List of pilleffects that are always unidentifyable
local pathsChecked = {}
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.DInfinityState = {}
@@ -174,10 +172,9 @@ if not success then
end
---------------------------------------------------------------------------
-------------Handle Sacrifice Room & Resetting Floor Trackers--------------
-------------Handle Resetting Floor Trackers--------------
function EID:onNewFloor()
pathsChecked = {}
EID.sacrificeCounter = {}
if REPENTANCE then
EID.BoC.RoomQueries = {}
EID.BoC.FloorQuery = {}
@@ -188,19 +185,6 @@ function EID:onNewFloor()
end
EID:AddCallback(ModCallbacks.MC_POST_NEW_LEVEL, EID.onNewFloor)
function EID:onSacrificeDamage(_, _, flags, source)
if EID.Config["DisplaySacrificeInfo"] and game:GetRoom():GetType() == RoomType.ROOM_SACRIFICE and source.Type == 0 and flags & DamageFlag.DAMAGE_SPIKES == DamageFlag.DAMAGE_SPIKES then
local curRoomIndex = game:GetLevel():GetCurrentRoomDesc().ListIndex
if EID.sacrificeCounter[curRoomIndex] == nil then
EID.sacrificeCounter[curRoomIndex] = 1
end
if EID.sacrificeCounter[curRoomIndex] < 12 then
EID.sacrificeCounter[curRoomIndex] = EID.sacrificeCounter[curRoomIndex] + 1
end
end
end
EID:AddCallback(ModCallbacks.MC_ENTITY_TAKE_DMG, EID.onSacrificeDamage, EntityType.ENTITY_PLAYER)
---------------------------------------------------------------------------
------------------------Handle ALT FLOOR CHOICE----------------------------
@@ -711,6 +695,7 @@ end
function EID:printBulletPoints(description, renderPos)
local textboxWidth = tonumber(EID.Config["TextboxWidth"])
local textScale = Vector(EID.Scale, EID.Scale)
description = EID:replaceNameMarkupStrings(description)
description = EID:replaceShortMarkupStrings(description)
description = EID:replaceMarkupSize(description)
for line in string.gmatch(description, "([^#]+)") do
@@ -770,18 +755,16 @@ end
function EID:onNewRoom()
EID.RecentlyTouchedItems = {}
local curRoomIndex = game:GetLevel():GetCurrentRoomDesc().ListIndex
preHourglassStatus = {}
preHourglassStatus.SacrificeCounter = EID.sacrificeCounter[curRoomIndex]
EID.CurrentRoomGridEntities = {}
local room = game:GetRoom()
for i = 1, room:GetGridSize(), 1 do
local gridEntity = room:GetGridEntity(i)
if gridEntity and EID:hasDescription(gridEntity) then
EID.CurrentRoomGridEntities[i] = gridEntity
end
end
end
EID:AddCallback(ModCallbacks.MC_POST_NEW_ROOM, EID.onNewRoom)
function EID:WatchForGlowingHourglass()
local curRoomIndex = game:GetLevel():GetCurrentRoomDesc().ListIndex
EID.sacrificeCounter[curRoomIndex] = preHourglassStatus.SacrificeCounter
end
EID:AddCallback(ModCallbacks.MC_PRE_USE_ITEM, EID.WatchForGlowingHourglass, CollectibleType.COLLECTIBLE_GLOWING_HOUR_GLASS)
---------------------------------------------------------------------------
---------------------------Handle Rendering--------------------------------
@@ -838,11 +821,11 @@ function EID:renderIndicator(entity, playerNum)
ArrowOffset = Vector(0, -62)
end
local arrowPos = Isaac.WorldToScreen(entity.Position + ArrowOffset)
if entity:GetData() and entity:GetData()["EID_RenderOffset"] then
if not EID:IsGridEntity(entity) and entity:GetData() and entity:GetData()["EID_RenderOffset"] then
entityPos = entityPos + entity:GetData()["EID_RenderOffset"]
end
-- Move highlights a bit to fit onto the alt Item layout of Flip / Tainted Laz
if REPENTANCE then
if REPENTANCE and not EID:IsGridEntity(entity) then
if entity.Variant == 100 and EID.player:HasCollectible(CollectibleType.COLLECTIBLE_FLIP) and EID:getEntityData(entity, "EID_FlipItemID") then
entityPos = entityPos + Vector(2.5,2.5)
elseif entity.Type == 6 and entity.Variant == 16 then
@@ -865,16 +848,17 @@ function EID:renderIndicator(entity, playerNum)
ArrowSprite:RenderLayer(playerNum-1, arrowPos, nullVector, nullVector)
else
local colorMult = {1,1,1}
local framecount = entity.FrameCount or game:GetFrameCount()
if EID.isMultiplayer then colorMult = playerRGB[playerNum] end
if EID.Config["Indicator"] == "blink" then
local c = 255 - math.floor(255 * ((entity.FrameCount % 40) / 40))
local c = 255 - math.floor(255 * ((framecount % 40) / 40))
local r, g, b = math.floor(c*colorMult[1]), math.floor(c*colorMult[2]), math.floor(c*colorMult[3])
sprite.Color = Color(1, 1, 1, 1, r/repDiv, g/repDiv, b/repDiv)
EID:renderEntity(entity, sprite, entityPos)
EID:RenderEntity(entity, sprite, entityPos)
sprite.Color = Color(1, 1, 1, 1, 0, 0, 0)
else
if EID.Config["Indicator"] == "highlight" then
local c = 255 - math.floor(255 * ((entity.FrameCount % 40) / 40))
local c = 255 - math.floor(255 * ((framecount % 40) / 40))
local r, g, b = math.floor(c*colorMult[1]), math.floor(c*colorMult[2]), math.floor(c*colorMult[3])
sprite.Color = Color(1, 1, 1, 1, r/repDiv, g/repDiv, b/repDiv)
elseif EID.Config["Indicator"] == "border" then
@@ -882,12 +866,12 @@ function EID:renderIndicator(entity, playerNum)
local r, g, b = math.floor(c*colorMult[1]), math.floor(c*colorMult[2]), math.floor(c*colorMult[3])
sprite.Color = Color(1, 1, 1, 1, r/repDiv, g/repDiv, b/repDiv)
end
EID:renderEntity(entity, sprite, entityPos + Vector(0, 1))
EID:renderEntity(entity, sprite, entityPos + Vector(0, -1))
EID:renderEntity(entity, sprite, entityPos + Vector(1, 0))
EID:renderEntity(entity, sprite, entityPos + Vector(-1, 0))
EID:RenderEntity(entity, sprite, entityPos + Vector(0, 1))
EID:RenderEntity(entity, sprite, entityPos + Vector(0, -1))
EID:RenderEntity(entity, sprite, entityPos + Vector(1, 0))
EID:RenderEntity(entity, sprite, entityPos + Vector(-1, 0))
sprite.Color = Color(1, 1, 1, 1, 0, 0, 0)
EID:renderEntity(entity, sprite, entityPos)
EID:RenderEntity(entity, sprite, entityPos)
end
end
if EID.isMirrorRoom then
@@ -908,9 +892,6 @@ function EID:PositionLocalMode(entity)
local screenCenter = EID:getScreenSize()/2
EID.UsedPosition.X = EID.UsedPosition.X - (EID.UsedPosition-screenCenter).X * 2
end
if entity:ToPickup() and entity:ToPickup():IsShopItem() then
EID:alterTextPos(Isaac.WorldToScreen(entity.Position + textPosOffset))
end
else
EID.Scale = EID.Config["Size"]
EID.CurrentScaleType = "Size"
@@ -918,17 +899,6 @@ function EID:PositionLocalMode(entity)
end
end
function EID:renderEntity(entity, sprite, position)
if entity.Type == 5 and entity.Variant == 100 then
sprite:RenderLayer(1, position, nullVector, nullVector)
elseif entity.Type == 6 and entity.Variant == 16 then -- Crane Game
sprite:RenderLayer(2, position, nullVector, nullVector)
else
sprite:Render(position, nullVector, nullVector)
end
end
function EID:renderHUDLocationIndicators()
local mousePos = Isaac.WorldToRenderPosition(Input.GetMousePosition(true)) * 2
Isaac.RenderScaledText("Mouse pos X:"..mousePos.X.." Y:"..mousePos.Y, 100, 10, 0.5, 0.5, 1 ,1 ,1 ,1 )
@@ -1313,11 +1283,9 @@ local function onRender(t)
elseif EID.Config["PairedPlayerDescriptions"] then
playerSearch = EID.players
end
local playerNearSacrificeSpikes = false
-- Check for descriptions to print per player
for i,player in ipairs(playerSearch) do
for _,player in ipairs(playerSearch) do
local displayedDesc = false
-- Check if this player has the Bag of Crafting
@@ -1344,7 +1312,7 @@ local function onRender(t)
end
for _, entitySearch in ipairs(searchGroups) do
for i, entity in ipairs(entitySearch) do
for _, entity in ipairs(entitySearch) do
if EID:hasDescription(entity) and entity.FrameCount > 0 and not EID.entitiesToPrint[GetPtrHash(entity)] then
table.insert(inRangeEntities, entity)
local diff = entity.Position:__sub(sourcePos)
@@ -1359,11 +1327,16 @@ local function onRender(t)
end
end
end
-- Test if the player is closer to the center of the room (Sacrifice/Sanguine Spikes) than any other entity
-- If there's more Grid Positions we want to check in the future, this could for example be generalized to a gridPosToCheck table which sets closeToGridPos flags
local spikeDiff = spikePos:__sub(sourcePos)
if EID.lastDist ~= 10000 and spikeDiff:Length() < EID.lastDist then
playerNearSacrificeSpikes = true
for _, gridEntity in pairs(EID.CurrentRoomGridEntities) do
if EID:hasDescription(gridEntity) then
table.insert(inRangeEntities, gridEntity)
local diff = gridEntity.Position:__sub(sourcePos)
if diff:Length() < EID.lastDist then
EID.lastDescriptionEntity = gridEntity
EID.lastDist = diff:Length()
end
end
end
if EID.Config["DisplayAllNearby"] then
@@ -1380,158 +1353,156 @@ local function onRender(t)
end
for _,closest in ipairs(inRangeEntities) do
--Handle GetData Entities (specific)
if EID.Config["EnableEntityDescriptions"] and EID:getEntityData(closest, "EID_Description") then
local desc = EID:getEntityData(closest, "EID_Description")
local origDesc = EID:getDescriptionObjByEntity(closest)
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
else
origDesc.Description = desc
end
EID:addDescriptionToPrint(origDesc)
-- 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 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})
if not EID:IsGridEntity(closest) then
--Handle GetData Entities (specific)
if EID.Config["EnableEntityDescriptions"] and EID:getEntityData(closest, "EID_Description") then
local desc = EID:getEntityData(closest, "EID_Description")
local origDesc = EID:getDescriptionObjByEntity(closest)
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
else
origDesc.Description = desc
end
end
local glitchedObj = EID:getDescriptionObj(closest.Type, closest.Variant, closest.SubType, closest)
local glitchedDesc = EID:getXMLDescription(closest.Type, closest.Variant, closest.SubType)
EID:addDescriptionToPrint(origDesc)
-- force the default glitchy description if option is off
if not EID.Config["DisplayGlitchedItemInfo"] then
glitchedObj.Description = glitchedDesc
-- grab the Item Config info if eid_tmtrainer.lua hasn't taken care of it, and it hasn't been done before
elseif not debug and glitchedObj.Description == glitchedDesc then
EID:addCollectible(closest.SubType, EID:CheckGlitchedItemConfig(closest.SubType) .. glitchedDesc)
glitchedObj = EID:getDescriptionObj(closest.Type, closest.Variant, closest.SubType, closest)
end
EID:addDescriptionToPrint(glitchedObj)
-- Handle Dice Room Floor
elseif closest.Type == 1000 and closest.Variant == 76 then
EID:addDescriptionToPrint(EID:getDescriptionObj(closest.Type, closest.Variant, closest.SubType+1, closest))
-- Handle Card Reading Portals
elseif closest.Type == 1000 and closest.Variant == 161 and closest.SubType <= 2 then
local subtypeToCard = {18, 5, 19}
-- Reuse the descriptions of The Emperor/Stars/Moon, so no localization needed
local descriptionObj = EID:getDescriptionObj(5, 300, subtypeToCard[closest.SubType+1], closest, false)
-- Card Reading's name
descriptionObj.Name = EID:getObjectName(5, 100, 660)
-- Only keep the first line of the description
descriptionObj.Description = string.sub(descriptionObj.Description, 1, string.find(descriptionObj.Description, "#"))
EID:addDescriptionToPrint(descriptionObj)
-- Handle Crane Game
elseif closest.Type == 6 and closest.Variant == 16 then
if EID.CraneItemType[tostring(closest.InitSeed)] or EID.CraneItemType[closest.InitSeed.."Drop"..closest.DropSeed] then
-- 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 EID.Config["DisableOnCurse"]) 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
local collectibleID = EID.CraneItemType[closest.InitSeed.."Drop"..closest.DropSeed] or EID.CraneItemType[tostring(closest.InitSeed)]
local descriptionObj = EID:getDescriptionObj(5, 100, collectibleID, closest)
local glitchedObj = EID:getDescriptionObj(closest.Type, closest.Variant, closest.SubType, closest)
local glitchedDesc = EID:getXMLDescription(closest.Type, closest.Variant, closest.SubType)
-- force the default glitchy description if option is off
if not EID.Config["DisplayGlitchedItemInfo"] then
glitchedObj.Description = glitchedDesc
-- grab the Item Config info if eid_tmtrainer.lua hasn't taken care of it, and it hasn't been done before
elseif not debug and glitchedObj.Description == glitchedDesc then
EID:addCollectible(closest.SubType, EID:CheckGlitchedItemConfig(closest.SubType) .. glitchedDesc)
glitchedObj = EID:getDescriptionObj(closest.Type, closest.Variant, closest.SubType, closest)
end
EID:addDescriptionToPrint(glitchedObj)
-- Handle Dice Room Floor
elseif closest.Type == 1000 and closest.Variant == 76 then
EID:addDescriptionToPrint(EID:getDescriptionObj(closest.Type, closest.Variant, closest.SubType+1, closest))
-- Handle Card Reading Portals
elseif closest.Type == 1000 and closest.Variant == 161 and closest.SubType <= 2 then
local subtypeToCard = {18, 5, 19}
-- Reuse the descriptions of The Emperor/Stars/Moon, so no localization needed
local descriptionObj = EID:getDescriptionObj(5, 300, subtypeToCard[closest.SubType+1], closest, false)
-- Card Reading's name
descriptionObj.Name = EID:getObjectName(5, 100, 660)
-- Only keep the first line of the description
descriptionObj.Description = string.sub(descriptionObj.Description, 1, string.find(descriptionObj.Description, "#"))
EID:addDescriptionToPrint(descriptionObj)
-- Handle Crane Game
elseif closest.Type == 6 and closest.Variant == 16 then
if EID.CraneItemType[tostring(closest.InitSeed)] or EID.CraneItemType[closest.InitSeed.."Drop"..closest.DropSeed] then
if EID:getEntityData(closest, "EID_DontHide") ~= true then
if (EID:hasCurseBlind() and EID.Config["DisableOnCurse"]) or (game.Challenge == Challenge.CHALLENGE_APRILS_FOOL and EID.Config["DisableOnAprilFoolsChallenge"]) then
EID:addDescriptionToPrint({ Description = "QuestionMark", Entity = closest})
end
end
local collectibleID = EID.CraneItemType[closest.InitSeed.."Drop"..closest.DropSeed] or EID.CraneItemType[tostring(closest.InitSeed)]
local descriptionObj = EID:getDescriptionObj(5, 100, collectibleID, closest)
EID:addDescriptionToPrint(descriptionObj)
end
elseif closest.Variant == 110 then
--Handle Broken Shovel
local descriptionObj = EID:getDescriptionObj(5, 100, 550, closest)
EID:addDescriptionToPrint(descriptionObj)
elseif closest.Variant == PickupVariant.PICKUP_TRINKET then
--Handle Trinkets
local descriptionObj = EID:getDescriptionObjByEntity(closest)
EID:addDescriptionToPrint(descriptionObj)
end
elseif closest.Variant == 110 then
--Handle Broken Shovel
local descriptionObj = EID:getDescriptionObj(5, 100, 550, closest)
EID:addDescriptionToPrint(descriptionObj)
elseif closest.Variant == PickupVariant.PICKUP_TRINKET then
--Handle Trinkets
local descriptionObj = EID:getDescriptionObjByEntity(closest)
EID:addDescriptionToPrint(descriptionObj)
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 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})
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 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
local descriptionObj = EID:getDescriptionObjByEntity(closest)
EID:addDescriptionToPrint(descriptionObj)
elseif closest.Variant == PickupVariant.PICKUP_TAROTCARD then
--Handle Cards & Runes
if EID:getEntityData(closest, "EID_DontHide") ~= true then
local isSoulstone = closest.SubType >= 81 and closest.SubType <= 97
local hideinShop = closest:ToPickup():IsShopItem() and ((not isSoulstone and not EID.Config["DisplayCardInfoShop"]) or (isSoulstone and not EID.Config["DisplaySoulstoneInfoShop"]))
local isOptionsSpawn = REPENTANCE and not EID.Config["DisplayCardInfoOptions?"] and closest:ToPickup().OptionsPickupIndex > 0
local obstructed = ((not isSoulstone and not EID.Config["DisplayObstructedCardInfo"]) or
(not EID.Config["DisplayObstructedSoulstoneInfo"] and isSoulstone)) and
(not pathsChecked[closest.InitSeed] and not attemptPathfind(closest))
if isOptionsSpawn or hideinShop or obstructed or (REPENTANCE and game.Challenge == Challenge.CHALLENGE_CANTRIPPED) then
EID:addDescriptionToPrint({ Description = "QuestionMark", Entity = closest})
end
end
local descriptionObj = EID:getDescriptionObjByEntity(closest)
EID:addDescriptionToPrint(descriptionObj)
elseif closest.Variant == PickupVariant.PICKUP_PILL then
--Handle Pills
if EID:getEntityData(closest, "EID_DontHide") ~= true then
local hideinShop = closest:ToPickup():IsShopItem() and not EID.Config["DisplayPillInfoShop"]
local isOptionsSpawn = REPENTANCE and not EID.Config["DisplayPillInfoOptions?"] and closest:ToPickup().OptionsPickupIndex > 0
local obstructed = not EID.Config["DisplayObstructedPillInfo"] and
(not pathsChecked[closest.InitSeed] and not attemptPathfind(closest))
if isOptionsSpawn or hideinShop or obstructed then
EID:addDescriptionToPrint({ Description = "QuestionMark", Entity = closest})
end
end
local pillColor = closest.SubType
local pool = game:GetItemPool()
local identified = pool:IsPillIdentified(pillColor) and not EID.Config["OnlyShowPillWhenUsedAtLeastOnce"]
if REPENTANCE and pillColor % PillColor.PILL_GIANT_FLAG == PillColor.PILL_GOLD then identified = true end
local pillEffectID = EID:getAdjustedSubtype(closest.Type, closest.Variant, pillColor)
local wasUsed = EID:WasPillUsed(pillEffectID)
if (identified or wasUsed or EID.Config["ShowUnidentifiedPillDescriptions"]) and not EID.UnidentifyablePillEffects[pillEffectID] then
local descEntry = EID:getDescriptionObj(closest.Type, closest.Variant, pillColor, closest)
EID:addDescriptionToPrint(descEntry)
else
EID:addDescriptionToPrint({ Description = "UnidentifiedPill", Entity = closest})
end
elseif EID.Config["EnableEntityDescriptions"] then
--Handle Entities (omni)
local descriptionEntry = EID:getDescriptionObjByEntity(closest)
if descriptionEntry ~= nil then
EID:addDescriptionToPrint(descriptionEntry)
end
end
local descriptionObj = EID:getDescriptionObjByEntity(closest)
EID:addDescriptionToPrint(descriptionObj)
elseif closest.Variant == PickupVariant.PICKUP_TAROTCARD then
--Handle Cards & Runes
if (not EID.Config["DisplayObstructedCardInfo"] or not EID.Config["DisplayObstructedSoulstoneInfo"]) and closest.FrameCount < 3 then
-- small delay when having obstruction enabled & entering the room to prevent spoilers
--return
end
if EID:getEntityData(closest, "EID_DontHide") ~= true then
local isSoulstone = closest.SubType >= 81 and closest.SubType <= 97
local hideinShop = closest:ToPickup():IsShopItem() and ((not isSoulstone and not EID.Config["DisplayCardInfoShop"]) or (isSoulstone and not EID.Config["DisplaySoulstoneInfoShop"]))
local isOptionsSpawn = REPENTANCE and not EID.Config["DisplayCardInfoOptions?"] and closest:ToPickup().OptionsPickupIndex > 0
local obstructed = ((not isSoulstone and not EID.Config["DisplayObstructedCardInfo"]) or
(not EID.Config["DisplayObstructedSoulstoneInfo"] and isSoulstone)) and
(not pathsChecked[closest.InitSeed] and not attemptPathfind(closest))
if isOptionsSpawn or hideinShop or obstructed or (REPENTANCE and game.Challenge == Challenge.CHALLENGE_CANTRIPPED) then
EID:addDescriptionToPrint({ Description = "QuestionMark", Entity = closest})
else -- Grid entities
local room = game:GetRoom()
if closest:GetType() == GridEntityType.GRID_SPIKES then
if room:GetType() == RoomType.ROOM_SACRIFICE and EID.Config["DisplaySacrificeInfo"] then
local desc = EID:getDescriptionObj(-999, -1, closest.VarData + 1, closest)
EID:addDescriptionToPrint(desc)
elseif REPENTANCE and EID.Config["DisplaySanguineInfo"] and room:GetType() == RoomType.ROOM_DEVIL and
EID:PlayersHaveCollectible(CollectibleType.COLLECTIBLE_SANGUINE_BOND) then
local desc = EID:getDescriptionObj(5, 100, 692, closest, false)
desc.Description = EID:trimSanguineDesc(desc)
if desc.Description ~= "" then
EID:addDescriptionToPrint(desc)
end
end
end
local descriptionObj = EID:getDescriptionObjByEntity(closest)
EID:addDescriptionToPrint(descriptionObj)
elseif closest.Variant == PickupVariant.PICKUP_PILL then
--Handle Pills
if EID:getEntityData(closest, "EID_DontHide") ~= true then
local hideinShop = closest:ToPickup():IsShopItem() and not EID.Config["DisplayPillInfoShop"]
local isOptionsSpawn = REPENTANCE and not EID.Config["DisplayPillInfoOptions?"] and closest:ToPickup().OptionsPickupIndex > 0
local obstructed = not EID.Config["DisplayObstructedPillInfo"] and
(not pathsChecked[closest.InitSeed] and not attemptPathfind(closest))
if isOptionsSpawn or hideinShop or obstructed then
EID:addDescriptionToPrint({ Description = "QuestionMark", Entity = closest})
end
end
local pillColor = closest.SubType
local pool = game:GetItemPool()
local identified = pool:IsPillIdentified(pillColor)
if REPENTANCE and pillColor % PillColor.PILL_GIANT_FLAG == PillColor.PILL_GOLD then identified = true end
local pillEffectID = EID:getAdjustedSubtype(closest.Type, closest.Variant, pillColor)
if (identified or EID.Config["ShowUnidentifiedPillDescriptions"]) and not EID.UnidentifyablePillEffects[pillEffectID] then
local descEntry = EID:getDescriptionObj(closest.Type, closest.Variant, pillColor, closest)
EID:addDescriptionToPrint(descEntry)
else
EID:addDescriptionToPrint({ Description = "UnidentifiedPill", Entity = closest})
end
elseif EID.Config["EnableEntityDescriptions"] then
--Handle Entities (omni)
local descriptionEntry = EID:getDescriptionObjByEntity(closest)
if descriptionEntry~=nil then
EID:addDescriptionToPrint(descriptionEntry)
end
end
end
end
end
-- if no entities to display, or we're close to the spikes, display Sacrifice Room information
-- it will be last priority for the main spot if DisplayAllNearby is on and we aren't near them
if (#EID.descriptionsToPrint == 0 or playerNearSacrificeSpikes) or EID.Config["DisplayAllNearby"] then
if game:GetRoom():GetType() == RoomType.ROOM_SACRIFICE and EID.Config["DisplaySacrificeInfo"] then
local curRoomIndex = game:GetLevel():GetCurrentRoomDesc().ListIndex
local curCounter = EID.sacrificeCounter[curRoomIndex] or 1
local sacrificeDesc = EID:getDescriptionObj(-999, -1, curCounter)
EID:addDescriptionToPrint(sacrificeDesc, playerNearSacrificeSpikes and 1 or nil)
elseif REPENTANCE and EID.Config["DisplaySanguineInfo"] and game:GetRoom():GetType() == RoomType.ROOM_DEVIL and EID:PlayersHaveCollectible(CollectibleType.COLLECTIBLE_SANGUINE_BOND) then
local sanguineDesc = EID:getDescriptionObj(5, 100, 692, nil, false)
sanguineDesc.Description = EID:trimSanguineDesc(sanguineDesc)
if sanguineDesc.Description ~= "" then EID:addDescriptionToPrint(sanguineDesc, playerNearSacrificeSpikes and 1 or nil) end
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
local demoDescObj = EID:getDescriptionObj(-999, -1, 1)
@@ -1551,7 +1522,7 @@ local function AddActiveItemProgress(player, isD4)
EID.ForceRefreshCache = true
local playerID = EID:getPlayerID(player)
if not EID.PlayerItemInteractions[playerID] then
EID.PlayerItemInteractions[playerID] = {LastTouch = 0, actives = {}, pills = {}, altActives = {}, altPills = {}}
EID.PlayerItemInteractions[playerID] = {LastTouch = 0, actives = {}, pills = {}, altActives = {}, altPills = {}, pickupHistory = {}}
end
-- Dead Tainted Lazarus exceptions
local activesTable = EID.PlayerItemInteractions[playerID].actives
@@ -1580,6 +1551,7 @@ local function CheckAllActiveItemProgress()
end
local function OnGameStartGeneral(_,isSave)
EID:GetTransformationsOfModdedItems()
EID:buildTransformationTables()
if not isSave then
EID.PlayerItemInteractions = {}
@@ -1604,11 +1576,12 @@ if REPENTANCE then
EID:AddCallback(ModCallbacks.MC_USE_ITEM, OnUseGenesis, CollectibleType.COLLECTIBLE_GENESIS)
end
function EID:OnUsePill(pillEffectID, player)
function EID:OnUsePill(pillEffectID, player, useFlags)
player = player or EID.player --AB+ doesn't receive player in callback arguments!
local playerID = EID:getPlayerID(player)
-- Dead Tainted Lazarus exceptions
local pillsTable = EID.PlayerItemInteractions[playerID].pills
if player:GetPlayerType() == 38 then
pillsTable = EID.PlayerItemInteractions[playerID].altPills or pillsTable
end
@@ -1617,9 +1590,16 @@ function EID:OnUsePill(pillEffectID, player)
pillsTable[effectID] = 0
end
pillsTable[effectID] = pillsTable[effectID] + 1
EID:AddPickupToHistory("pill", pillEffectID+1, player, useFlags)
end
EID:AddCallback(ModCallbacks.MC_USE_PILL, EID.OnUsePill)
function EID:OnUseCard(cardID, player, useFlags)
player = player or EID.player --AB+ doesn't receive player in callback arguments!
EID:AddPickupToHistory("card", cardID, player, useFlags)
end
EID:AddCallback(ModCallbacks.MC_USE_CARD, EID.OnUseCard)
-- only save and load configs when using MCM. Otherwise Config file changes arent valid
if EID.MCMLoaded or REPENTANCE then
+1 -1
View File
@@ -114,7 +114,7 @@ https://moddingofisaac.com/mod/1079/external-item-descriptions
- prefab for the incredible [b]Japanese[/b] language pack
- David Kapitančik. Picus and domcizzz for the cool [b]Czech[/b] language pack
- [url=https://steamcommunity.com/id/whytefang/]adc[/url] for creating an awesome new Languagepack and providing ideas for new functionalities</description>
<version>4.36</version>
<version>4.37</version>
<visibility>Public</visibility>
<tag id="Lua"/>
<tag id="Items"/>