Refactoring: Item Reminder feature
- Added Categories - Added Scrollability - Refactoring for modularity
This commit is contained in:
1 parent
dc9e18b592
commit
0adf6487f4
18 files changed
+568
-300
No files matched your search
@@ -885,9 +885,10 @@ EID.descriptions[languageCode].MCM = {
|
||||
DemoObjectText = "Това е текст на български#Много яко и дълго описание, автоматично се разпределя на няколко реда заради максималната ширина на кутията!#{{Collectible4}} И това е готин ред#{{Heart}} Този ред те обича#{{AngelDevilChance}} Този ред може да ти е ангел или дявол#\1 {{Damage}} +1 промяна на характеристика",
|
||||
}
|
||||
|
||||
EID.descriptions[languageCode].HoldMapTitle = "Напомняне за вещ"
|
||||
-- the Hold Map description will predict the abilities of items with a header like "Item Name Result"
|
||||
EID.descriptions[languageCode].HoldMapHeader = " (резултат)" -- this string applies after the item name for example on Teleport 2.0
|
||||
EID.descriptions[languageCode].ItemReminder = {
|
||||
ResultHeader = " (резултат)",
|
||||
}
|
||||
|
||||
-- https://wofsauge.github.io/IsaacDocs/rep/enums/RoomType.html
|
||||
-- Includes Repentance room types for localization convenience
|
||||
|
||||
@@ -890,9 +890,10 @@ EID.descriptions[languageCode].MCM = {
|
||||
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",
|
||||
}
|
||||
|
||||
EID.descriptions[languageCode].HoldMapTitle = "Υπενθύμιση Αντικειμένου"
|
||||
-- the Hold Map description will predict the abilities of items with a header like "Item Name Result"
|
||||
EID.descriptions[languageCode].HoldMapHeader = " Αποτέλεσμα"
|
||||
EID.descriptions[languageCode].ItemReminder = {
|
||||
ResultHeader = " Αποτέλεσμα",
|
||||
}
|
||||
|
||||
-- https://wofsauge.github.io/IsaacDocs/rep/enums/RoomType.html
|
||||
-- Includes Repentance room types for localization convenience
|
||||
|
||||
@@ -915,9 +915,18 @@ EID.descriptions[languageCode].MCM = {
|
||||
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",
|
||||
}
|
||||
|
||||
EID.descriptions[languageCode].HoldMapTitle = "Item Reminder"
|
||||
-- the Hold Map description will predict the abilities of items with a header like "Item Name Result"
|
||||
EID.descriptions[languageCode].HoldMapHeader = " Result"
|
||||
-- the ItemReminder description will predict the abilities of items with a header like "Item Name Result"
|
||||
EID.descriptions[languageCode].ItemReminder = {
|
||||
ResultHeader = " Result",
|
||||
CategoryNames = {
|
||||
Overview = "Inventory Overview",
|
||||
Special = "Special",
|
||||
Actives = "Held active items",
|
||||
Pockets = "Held pocket items",
|
||||
Trinkets = "Held Trinkets",
|
||||
Passives = "Held passive items"
|
||||
}
|
||||
}
|
||||
|
||||
-- https://wofsauge.github.io/IsaacDocs/rep/enums/RoomType.html
|
||||
-- Includes Repentance room types for localization convenience
|
||||
|
||||
+20
-19
@@ -21,7 +21,7 @@ EID.descriptions[languageCode].languageName = "French"
|
||||
-- Fonts to be used with this language pack
|
||||
EID.descriptions[languageCode].fonts = {{name="default", textboxWidth = 135}, {name="inverted", textboxWidth = 135}, {name="borderless", textboxWidth = 135}}
|
||||
|
||||
EID.descriptions["fr"].collectibles={
|
||||
EID.descriptions[languageCode].collectibles={
|
||||
{"1", "Oignon Triste", "↑ Débit {{ColorLime}}+0.7"},
|
||||
{"2", "Troisième Œil", "Triple tir#↓ Débit diminué"},
|
||||
{"3", "Cuillère Tordue", "Larmes autoguidées"},
|
||||
@@ -642,7 +642,7 @@ EID.descriptions[languageCode].carBattery = {
|
||||
}
|
||||
|
||||
---------- Trinkets ----------
|
||||
EID.descriptions["fr"].trinkets={
|
||||
EID.descriptions[languageCode].trinkets={
|
||||
{"1", "Pièce Avalée", "Subir un dégât fait apparaître une pièce"},
|
||||
{"2", "Caca Pétrifié", "Détruire un caca a 50% de chances de faire apparaître une ressource"},
|
||||
{"3", "Pile AAA", "Termine de charger l'objet activable s'il lui manque une charge"},
|
||||
@@ -774,7 +774,7 @@ EID.descriptions["fr"].trinkets={
|
||||
}
|
||||
|
||||
---------- Cards ----------
|
||||
EID.descriptions["fr"].cards={
|
||||
EID.descriptions[languageCode].cards={
|
||||
{"1", "0 - Le Mat", "Téléporte Isaac dans la première salle de l'étage"},
|
||||
{"2", "I - Le Bateleur", "Larmes autoguidées#{{Timer}} L'effet dure une salle"},
|
||||
{"3", "II - La Papesse", "Le pied de {{ColorCyan}}Mom{{ColorWhite}} écrase l'ennemi de la salle avec le plus de PV#Dans une salle vide, le pied écrase Isaac"},
|
||||
@@ -834,9 +834,9 @@ EID.descriptions["fr"].cards={
|
||||
|
||||
---------- Pills ----------
|
||||
|
||||
EID.descriptions["fr"].unidentifiedPill = "Pilule non identifiée"
|
||||
EID.descriptions[languageCode].unidentifiedPill = "Pilule non identifiée"
|
||||
|
||||
EID.descriptions["fr"].pills={
|
||||
EID.descriptions[languageCode].pills={
|
||||
{"0", "Flatulences", "Fait apparaître un nuage de gaz qui inflige 5 dégâts de contact et empoisonne les ennemis"},
|
||||
{"1", "Coup dur", "Inflige 1 cœur de dégâts à Isaac"},
|
||||
{"2", "Digoxine", "{{SoulHeart}} +2 cœurs d'âme"},
|
||||
@@ -887,9 +887,9 @@ EID.descriptions["fr"].pills={
|
||||
}
|
||||
|
||||
---------- Sacrifice Room ----------
|
||||
EID.descriptions["fr"].sacrificeHeader = "Récompense du prochain sacrifice"
|
||||
EID.descriptions[languageCode].sacrificeHeader = "Récompense du prochain sacrifice"
|
||||
|
||||
EID.descriptions["fr"].sacrifice={
|
||||
EID.descriptions[languageCode].sacrifice={
|
||||
{"1", "", "1 pièce {{ColorSilver}}(50%)#Rien {{ColorSilver}}(50%)#1 bombe {{ColorSilver}}(100% au premier étage si le boss a été battu en moins d'une minute)"},
|
||||
{"2", "", "1 pièce {{ColorSilver}}(50%)#Rien {{ColorSilver}}(50%)#1 bombe {{ColorSilver}}(100% au premier étage si le boss a été battu en moins d'une minute)"},
|
||||
{"3", "", "Augmente les chances d'ouvrir le Refuge des Anges {{ColorSilver}}(67%)#Rien {{ColorSilver}}(33%)"},
|
||||
@@ -904,9 +904,9 @@ EID.descriptions["fr"].sacrifice={
|
||||
{"12", "", "Téléportation à la {{ColorTransform}}Chambre Noire {{ColorSilver}}(50%)#Rien {{ColorSilver}}(50%)"},
|
||||
}
|
||||
---------- Dice Room ----------
|
||||
EID.descriptions["fr"].diceHeader = "[Effet de dé]"
|
||||
EID.descriptions[languageCode].diceHeader = "[Effet de dé]"
|
||||
|
||||
EID.descriptions["fr"].dice={
|
||||
EID.descriptions[languageCode].dice={
|
||||
{"1", "", "Rejoue tous les objets d'Isaac"},
|
||||
{"2", "", "Rejoue toutes les ressources de la salle"},
|
||||
{"3", "", "Rejoue toutes les ressources de l'étage"},
|
||||
@@ -916,7 +916,7 @@ EID.descriptions["fr"].dice={
|
||||
}
|
||||
|
||||
---------- Transformations ----------
|
||||
EID.descriptions["fr"].transformations={
|
||||
EID.descriptions[languageCode].transformations={
|
||||
"", -- 0 = none
|
||||
"Guppy", -- 1
|
||||
"Fan de Spore", -- 2
|
||||
@@ -938,28 +938,29 @@ EID.descriptions["fr"].transformations={
|
||||
|
||||
---------- MISC ----------
|
||||
|
||||
EID.descriptions["fr"].VoidText = "Si absorbé :"
|
||||
EID.descriptions["fr"].VoidNames = {"Vitesse {{ColorLime}}{1}", "Débit {{ColorLime}}{1}", "Dégâts {{ColorLime}}{1}", "Portée {{ColorLime}}{1}", "Vitesse des tirs {{ColorLime}}{1}", "Chance {{ColorLime}}{1}"}
|
||||
EID.descriptions[languageCode].VoidText = "Si absorbé :"
|
||||
EID.descriptions[languageCode].VoidNames = {"Vitesse {{ColorLime}}{1}", "Débit {{ColorLime}}{1}", "Dégâts {{ColorLime}}{1}", "Portée {{ColorLime}}{1}", "Vitesse des tirs {{ColorLime}}{1}", "Chance {{ColorLime}}{1}"}
|
||||
|
||||
EID.descriptions["fr"].CollectionPageInfo = "Cet objet n'a encore jamais été ramassé !"
|
||||
EID.descriptions[languageCode].CollectionPageInfo = "Cet objet n'a encore jamais été ramassé !"
|
||||
|
||||
EID.descriptions["fr"].MCM = {
|
||||
EID.descriptions[languageCode].MCM = {
|
||||
DemoObjectName = "Nom de l'objet test",
|
||||
DemoObjectTransformation = "Transformation de test",
|
||||
DemoObjectText = "Ceci est un texte en français#Une description longue trop cool pour tester les retours à la ligne automatiques !!#{{Collectible4}} Super ligne ici aussi#{{Heart}} Cette ligne t'adore#{{AngelDevilChance}} Cette ligne peut être ton petit ange ou ton petit diable#\1 {{Damage}} {{ColorLime}}+1{{ColorWhite}} statistique",
|
||||
}
|
||||
|
||||
EID.descriptions["fr"].HoldMapTitle = "Objets tenus"
|
||||
-- the Hold Map description will predict the abilities of items with a header like "Item Name Result"
|
||||
EID.descriptions["fr"].HoldMapHeader = " Résultat"
|
||||
-- the ItemReminder description will predict the abilities of items with a header like "Item Name Result"
|
||||
EID.descriptions[languageCode].ItemReminder = {
|
||||
ResultHeader = " Résultat",
|
||||
}
|
||||
|
||||
-- https://wofsauge.github.io/IsaacDocs/rep/enums/RoomType.html
|
||||
-- Includes Repentance room types for localization convenience
|
||||
EID.descriptions["fr"].RoomTypeNames = { "Salle normale", "Boutique", "Salle I AM ERROR", "Salle du Trésor", "Salle de Boss", "Salle de Mini-boss", "Salle Secrète", "Salle Super Secrète", "Salle d'Arcade", "Salle Maudite", "Salle de Défi", "Bibliothèque", "Salle de Sacrifice", "Antre du Diable", "Refuge des Anges", "Souterrain", "Ruée des Boss", "Chambre d'Isaac", "Chambre Abandonnée", "Coffre-Fort", "Salle de Dé", "Marché Noir", "Sas de Sortie", "Planétarium", "Téléporteur (Départ)", "Téléporteur (Arrivée)", "Sortie Secrète", "Salle de l'Utérus Bleu", "Salle Ultra Secrète",
|
||||
EID.descriptions[languageCode].RoomTypeNames = { "Salle normale", "Boutique", "Salle I AM ERROR", "Salle du Trésor", "Salle de Boss", "Salle de Mini-boss", "Salle Secrète", "Salle Super Secrète", "Salle d'Arcade", "Salle Maudite", "Salle de Défi", "Bibliothèque", "Salle de Sacrifice", "Antre du Diable", "Refuge des Anges", "Souterrain", "Ruée des Boss", "Chambre d'Isaac", "Chambre Abandonnée", "Coffre-Fort", "Salle de Dé", "Marché Noir", "Sas de Sortie", "Planétarium", "Téléporteur (Départ)", "Téléporteur (Arrivée)", "Sortie Secrète", "Salle de l'Utérus Bleu", "Salle Ultra Secrète",
|
||||
-- Not technically room types but still potentially useful to have localized
|
||||
[666] = "Antre du Diable / Refuge des Anges", [1024] = "Salle Rouge", [1025] = "Salle Rouge Spéciale" }
|
||||
-- currently used for D1
|
||||
EID.descriptions["fr"].PickupNames = {
|
||||
EID.descriptions[languageCode].PickupNames = {
|
||||
["5.0"] = "Aucun",
|
||||
|
||||
["5.10"] = "{{Heart}} Cœur",
|
||||
|
||||
@@ -948,9 +948,10 @@ EID.descriptions[languageCode].MCM = {
|
||||
DemoObjectText = "日本語の表示サンプル {{Collectible36}}{{Collectible36}}{{Collectible36}}{{Collectible36}}{{Collectible36}}{{Collectible36}}{{Collectible36}}{{Collectible36}}{{Collectible36}}#↑ おすすめ設定#アイテム名の言語切替: General→NameLanguage 日本語/英語/ 日本語+英語を選べます#戦闘中のみ説明非表示: General→HideInBattle",
|
||||
}
|
||||
|
||||
EID.descriptions[languageCode].HoldMapTitle = "アイテムリマインダー"
|
||||
-- the Hold Map description will predict the abilities of items with a header like "Item Name Result"
|
||||
EID.descriptions[languageCode].HoldMapHeader = " 結果"
|
||||
-- the ItemReminder description will predict the abilities of items with a header like "Item Name Result"
|
||||
EID.descriptions[languageCode].ItemReminder = {
|
||||
ResultHeader = " 結果",
|
||||
}
|
||||
|
||||
-- https://wofsauge.github.io/IsaacDocs/rep/enums/RoomType.html
|
||||
-- Includes Repentance room types for localization convenience
|
||||
|
||||
@@ -973,9 +973,11 @@ EID.descriptions[languageCode].MCM={
|
||||
DemoObjectText = "이 설명은 한국어로 작성되었습니다.#!!! 간단 설정 방법:#{{Collectible182}} 폰트: Visuals→Font Type#{{Freezing}} 텍스트박스 너비: General→Textbox Width#\1 {{Damage}}테스트 공격력 +1#{{AngelDevilChance}} 악마와 천사, 당신의 선택은?#{{DeliriumSmall}} 모두가 싫어하는 델리리움",
|
||||
}
|
||||
|
||||
EID.descriptions[languageCode].HoldMapTitle = "리마인더"
|
||||
-- the Hold Map description will predict the abilities of items with a header like "Item Name Result"
|
||||
EID.descriptions[languageCode].HoldMapHeader = " 예상 결과"
|
||||
-- the ItemReminder description will predict the abilities of items with a header like "Item Name Result"
|
||||
EID.descriptions[languageCode].ItemReminder = {
|
||||
ResultHeader = " 예상 결과",
|
||||
}
|
||||
|
||||
-- includes Planetarium even though it's unused in AB+ for convenience
|
||||
-- Includes Repentance room types for localization convenience
|
||||
EID.descriptions[languageCode].RoomTypeNames = { "일반방", "상점", "I AM ERROR (오류방)", "보물방", "보스방", "미니보스방", "비밀방", "일급비밀방", "오락실", "저주방", "도전방/보스도전방", "책방", "희생방", "악마방", "천사방", "사다리방", "보스러시", "깨끗한 침대방", "더러운 침대방", "금고방", "주사위방", "블랙마켓", "출구방", "천체관", "텔레포터 입구", "텔레포터 출구", "대체 루트 입구", "파란 방", "특급비밀방",
|
||||
|
||||
@@ -887,9 +887,10 @@ EID.descriptions[languageCode].MCM = {
|
||||
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",
|
||||
}
|
||||
|
||||
EID.descriptions[languageCode].HoldMapTitle = "Item Reminder"
|
||||
-- the Hold Map description will predict the abilities of items with a header like "Item Name Result"
|
||||
EID.descriptions[languageCode].HoldMapHeader = " Result"
|
||||
-- the ItemReminder description will predict the abilities of items with a header like "Item Name Result"
|
||||
EID.descriptions[languageCode].ItemReminder = {
|
||||
ResultHeader = " Resultat",
|
||||
}
|
||||
|
||||
-- https://wofsauge.github.io/IsaacDocs/rep/enums/RoomType.html
|
||||
-- Includes Repentance room types for localization convenience
|
||||
|
||||
@@ -884,8 +884,10 @@ EID.descriptions[languageCode].MCM = {
|
||||
DemoObjectText = "Este texto está em Português brasileiro#Uma descrição muito legal e longa para simular quebras de linha causadas pela largura da caixa de texto do EID!#{{Collectible4}} Esta também é uma linha legal#{{Heart}} Esta linha ama você#{{AngelDevilChance}} Esta linha pode ser seu anjo ou demônio#\1 {{Damage}} +1 Mudança de Status",
|
||||
}
|
||||
|
||||
-- the Hold Map description will predict the abilities of items with a header like "Item Name Result"
|
||||
EID.descriptions[languageCode].HoldMapHeader = " Resultado"
|
||||
-- the ItemReminder description will predict the abilities of items with a header like "Item Name Result"
|
||||
EID.descriptions[languageCode].ItemReminder = {
|
||||
ResultHeader = " Resultado",
|
||||
}
|
||||
-- includes Planetarium even though it's unused in AB+ for convenience
|
||||
EID.descriptions[languageCode].Teleport2RoomNames = { "Sala Normal","Sala do Chefe","Sala Super Secreta","Loja","Sala do Tesouro","Sala de Sacrifício","Sala do Dado","Biblioteca","Sala da Maldição","Sala do Mini-Chefe","Sala do Desafio/Desafio do Chefe","Sala do Isaac","Sala Estéril","Sala do Jogos","Sala do Baú","Planetário","Sala Secreta","Sala Vermelha Especial","Sala do Anjo/Diabo","Sala I AM ERROR" }
|
||||
EID.descriptions[languageCode].Teleport2GreedRoomNames = { "Sala Principal", "Sala do Chefe", "Loja", "Sala do Tesouro Prateada/Dourada", "Sala da Maldição", "Sala da Saída", "Sala Super Secreta", "Sala do Anjo/Diabo", "Sala I AM ERROR" }
|
||||
@@ -879,9 +879,10 @@ EID.descriptions[languageCode].MCM = {
|
||||
|
||||
EID.descriptions[languageCode].CollectionPageInfo = "¡Debes tomar este objeto para completar la pagina de colección!"
|
||||
|
||||
EID.descriptions[languageCode].HoldMapTitle = "Recordatorio"
|
||||
-- the Hold Map description will predict the abilities of items with a header like "Item Name Result"
|
||||
EID.descriptions[languageCode].HoldMapHeader = " Resultado"
|
||||
-- the ItemReminder description will predict the abilities of items with a header like "Item Name Result"
|
||||
EID.descriptions[languageCode].ItemReminder = {
|
||||
ResultHeader = " Resultado",
|
||||
}
|
||||
|
||||
-- currently used for D1
|
||||
EID.descriptions[languageCode].PickupNames = {
|
||||
|
||||
@@ -914,9 +914,10 @@ EID.descriptions[languageCode].MCM = {
|
||||
DemoObjectText = "Це текст українською#Дуже крутий та довгий опис предмета для симуляції переходів на інший рядок, спричинених шириною текстового поля в EID!#{{Collectible4}} Це також крутий рядок#{{Heart}} Цей рядок любить тебе і Україну#{{AngelDevilChance}} Цей рядок може бути ще тим чортиком чи ангелом#\1 {{Damage}} +1 Характеристику збільшено",
|
||||
}
|
||||
|
||||
EID.descriptions[languageCode].HoldMapTitle = "Нагадування"
|
||||
-- the Hold Map description will predict the abilities of items with a header like "Item Name Result"
|
||||
EID.descriptions[languageCode].HoldMapHeader = " Результат"
|
||||
-- the ItemReminder description will predict the abilities of items with a header like "Item Name Result"
|
||||
EID.descriptions[languageCode].ItemReminder = {
|
||||
ResultHeader = " Результат",
|
||||
}
|
||||
|
||||
-- https://wofsauge.github.io/IsaacDocs/rep/enums/RoomType.html
|
||||
-- Includes Repentance room types for localization convenience
|
||||
|
||||
@@ -915,9 +915,10 @@ EID.descriptions[languageCode].MCM = {
|
||||
DemoObjectText = "这份文本是中文的#这是一条非常酷的长文本,用来模拟EID文本框自动分行功能!#\1 这也是一条非常酷的文本#祝使用愉快{{Heart}}",
|
||||
}
|
||||
|
||||
EID.descriptions[languageCode].HoldMapTitle = "道具提示"
|
||||
-- 长按地图键会以"道具名称的结果"为描述预测结果
|
||||
EID.descriptions[languageCode].HoldMapHeader = "的结果"
|
||||
EID.descriptions[languageCode].ItemReminder = {
|
||||
ResultHeader = " 的结果",
|
||||
}
|
||||
|
||||
-- https://wofsauge.github.io/IsaacDocs/rep/enums/RoomType.html
|
||||
-- 为本地化方便也添加了忏悔的房间类型
|
||||
|
||||
@@ -1152,9 +1152,10 @@ end
|
||||
|
||||
EID.descriptions[languageCode].ResultsWithX = "(Výsledky s {1})"
|
||||
|
||||
EID.descriptions[languageCode].HoldMapTitle = "Item Reminder"
|
||||
-- the Hold Map description will predict the abilities of items with a header like "Item Name Result"
|
||||
EID.descriptions[languageCode].HoldMapHeader = " Result"
|
||||
-- the ItemReminder description will predict the abilities of items with a header like "Item Name Result"
|
||||
EID.descriptions[languageCode].ItemReminder = {
|
||||
ResultHeader = " Result",
|
||||
}
|
||||
|
||||
-- https://wofsauge.github.io/IsaacDocs/rep/enums/RoomType.html
|
||||
-- Includes Repentance room types for localization convenience
|
||||
|
||||
@@ -1163,8 +1163,11 @@ end
|
||||
-- Pandora Box and Strange Key
|
||||
EID.descriptions[languageCode].PandorasBoxStrangeKeyEffect = "En su lugar, la llave es usada para generar 6 objetos de pools aleatorias"
|
||||
-- Pandora Box and Strange Key end
|
||||
-- the Hold Map description will predict the abilities of items with a header like "Item Name Result"
|
||||
EID.descriptions[languageCode].HoldMapHeader = " Resultado"
|
||||
|
||||
-- the ItemReminder description will predict the abilities of items with a header like "Item Name Result"
|
||||
EID.descriptions[languageCode].ItemReminder = {
|
||||
ResultHeader = " Resultado",
|
||||
}
|
||||
|
||||
EID.descriptions[languageCode].ResultsWithX = "(Resultado con {1})"
|
||||
|
||||
|
||||
+33
-1
@@ -764,12 +764,15 @@ end
|
||||
function EID:createItemIconObject(str)
|
||||
local collID,numReplace = string.gsub(str, "Collectible", "")
|
||||
local item = nil
|
||||
local subTypeIdentifier = 0
|
||||
if numReplace > 0 and collID ~= "" and tonumber(collID) ~= nil then
|
||||
item = EID.itemConfig:GetCollectible(tonumber(collID))
|
||||
subTypeIdentifier = tonumber(collID)
|
||||
end
|
||||
local trinketID,numReplace2 = string.gsub(str, "Trinket", "")
|
||||
if numReplace2 > 0 and trinketID ~= "" and tonumber(trinketID) ~= nil then
|
||||
item = EID.itemConfig:GetTrinket(tonumber(trinketID))
|
||||
subTypeIdentifier = tonumber(trinketID)
|
||||
end
|
||||
local cardID,numReplace3 = string.gsub(str, "Card", "")
|
||||
if numReplace3 > 0 and cardID ~= "" and tonumber(cardID) ~= nil then
|
||||
@@ -791,7 +794,7 @@ function EID:createItemIconObject(str)
|
||||
spriteDummy:Load("gfx/eid_inline_icons.anm2", true)
|
||||
spriteDummy:ReplaceSpritesheet(1, item.GfxFileName)
|
||||
spriteDummy:LoadGraphics()
|
||||
local newDynamicSprite = {"ItemIcon", 0, 11, 8, -2, -2, spriteDummy}
|
||||
local newDynamicSprite = {"ItemIcon", subTypeIdentifier, 11, 8, -2, -2, spriteDummy}
|
||||
dynamicSpriteCache[str] = newDynamicSprite
|
||||
return newDynamicSprite
|
||||
end
|
||||
@@ -1933,3 +1936,32 @@ end
|
||||
function EID:GetEntityXMLName(Type, Variant, SubType)
|
||||
return EID.XMLEntityNames[Type.."."..Variant] or EID.XMLEntityNames[Type.."."..Variant.."."..SubType]
|
||||
end
|
||||
|
||||
-- Get an item's RNG seed. We have no use for the RNG object itself because every other function it can do will advance the item's RNG, altering the game state
|
||||
function EID:GetItemSeed(player, id, variant)
|
||||
if player == nil then return game:GetSeeds():GetStartSeed()
|
||||
elseif variant == nil or variant == 100 then return player:GetCollectibleRNG(id):GetSeed()
|
||||
elseif variant == 350 then return player:GetTrinketRNG(id):GetSeed()
|
||||
elseif variant == 300 then return player:GetCardRNG(id):GetSeed()
|
||||
elseif variant == 70 then return player:GetPillRNG(id):GetSeed() end
|
||||
end
|
||||
|
||||
local variantToName = { [70] = "Pill", [100] = "Collectible", [300] = "Card", [350] = "Trinket" }
|
||||
function EID:GetIconNameByVariant(variant)
|
||||
return variantToName[variant]
|
||||
end
|
||||
|
||||
function EID:GetIconStringByDescriptionObject(descObj)
|
||||
if descObj and descObj.Icon then
|
||||
if type(descObj.Icon) == "table" then
|
||||
local iconName = EID:GetIconNameByVariant(descObj.ObjVariant)
|
||||
if iconName == "Card" or iconName == "Pill" then
|
||||
return "{{" .. iconName .. (descObj.Icon[2] + 1) .. "}}"
|
||||
end
|
||||
return "{{" .. iconName .. descObj.Icon[2] .. "}}"
|
||||
elseif type(descObj.Icon) == "string" then
|
||||
return descObj.Icon
|
||||
end
|
||||
end
|
||||
return "{{Blank}}"
|
||||
end
|
||||
@@ -318,10 +318,24 @@ EID.UserConfig = {
|
||||
-- Enable/Disable item reminder feature.
|
||||
-- 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,
|
||||
-- Display all important descriptions in a single overview category
|
||||
-- Default = true
|
||||
["ItemReminderShowOverview"] = true,
|
||||
-- Disable inputs while Item Reminder is visible
|
||||
-- Default = true
|
||||
["ItemReminderDisableInputs"] = 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,
|
||||
-- Set the keybinding that is used to scroll thru the categories in the left direction
|
||||
-- Look into the AB+ or Repentance documentation for the key names here: https://wofsauge.github.io/IsaacDocs/rep/enums/ButtonAction.html
|
||||
-- Default = ButtonAction.ACTION_SHOOTLEFT
|
||||
["ItemReminderNavigateLeftButton"] = ButtonAction.ACTION_SHOOTLEFT,
|
||||
-- Set the keybinding that is used to scroll thru the categories in the right direction
|
||||
-- Look into the AB+ or Repentance documentation for the key names here: https://wofsauge.github.io/IsaacDocs/rep/enums/ButtonAction.html
|
||||
-- Default = ButtonAction.ACTION_SHOOTLEFT
|
||||
["ItemReminderNavigateRightButton"] = ButtonAction.ACTION_SHOOTRIGHT,
|
||||
-- Show recently acquired item descriptions in the Item Reminder (good for Curse of the Blind!)
|
||||
-- Default = 1
|
||||
["ItemReminderShowRecentItem"] = 1,
|
||||
@@ -585,7 +599,11 @@ EID.DefaultConfig = {
|
||||
["CraftingResultButton"] = -1,
|
||||
|
||||
["ItemReminderEnabled"] = true,
|
||||
["ItemReminderShowOverview"] = true,
|
||||
["ItemReminderDisableInputs"] = true,
|
||||
["BagOfCraftingToggleKey"] = ButtonAction.ACTION_MAP,
|
||||
["ItemReminderNavigateLeftButton"] = ButtonAction.ACTION_SHOOTLEFT,
|
||||
["ItemReminderNavigateRightButton"] = ButtonAction.ACTION_SHOOTRIGHT,
|
||||
["ItemReminderShowRecentItem"] = 1,
|
||||
["ItemReminderShowActiveDesc"] = 1,
|
||||
["ItemReminderShowPocketDesc"] = 1,
|
||||
|
||||
+419
-242
@@ -1,88 +1,79 @@
|
||||
local game = Game()
|
||||
local blacklist
|
||||
local holdMapDesc
|
||||
local currentPlayer
|
||||
EID.InsideItemReminder = false
|
||||
local GLITCH_ITEM_FLAG = 4294967296
|
||||
local currentBlacklist
|
||||
local lastInputTime = 0
|
||||
local lastScrollDirection = 1 -- used for automatic scroll feature, if no description is visible for a category
|
||||
|
||||
-- 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
|
||||
EID.ItemReminderBlacklist = { ["5.100.714"] = true, ["5.100.715"] = true } -- Dont display these in the Item reminder view
|
||||
EID.ItemReminderTempDescriptions = {} -- Temporary stores descriptions that will be displayed after everythng got evaluated
|
||||
EID.ItemReminderSelectedCategory = 0 -- Currently selected category
|
||||
EID.InsideItemReminder = false -- Disable some modifiers, when building the Item Reminder description
|
||||
|
||||
-- Simple function to quickly get an item's RNG seed. We have no use for the RNG object itself because every other function it can do will advance the item's RNG, altering the game state
|
||||
local function getSeed(id, variant)
|
||||
if variant == nil or variant == 100 then return currentPlayer:GetCollectibleRNG(id):GetSeed()
|
||||
elseif variant == 350 then return currentPlayer:GetTrinketRNG(id):GetSeed()
|
||||
elseif variant == 300 then return currentPlayer:GetCardRNG(id):GetSeed()
|
||||
elseif variant == 70 then return currentPlayer:GetPillRNG(id):GetSeed() end
|
||||
end
|
||||
-- TODO:
|
||||
-- crooked penny cheats. 404/liberty cap/broken syringe/etc. "what item is it"
|
||||
-- pandora's box? it shows the whole desc which is kinda useful but too big
|
||||
|
||||
-- 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
|
||||
|
||||
-- Data Tables --
|
||||
-- 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 }
|
||||
|
||||
-- Format : Table of { id = "Category Name", entryGenerators = table of functions to generate descriptions }
|
||||
-- Execution order is handles by the order of the table entries.
|
||||
-- Category name is interpreted as a lookup for the "EID.descriptions.ItemReminder.CategoryNames" table. If no translation is found, use english or the lookup value
|
||||
EID.ItemReminderCategories = {
|
||||
{ id = "Overview", entryGenerators = {} }, -- special handling for Overview category
|
||||
{ id = "Special", entryGenerators = { function(player) EID:ItemReminderHandlePoopSpells(player) end, } },
|
||||
{ id = "Actives", entryGenerators = { function(player) EID:ItemReminderHandleActiveItems(player) end, } },
|
||||
{ id = "Pockets", entryGenerators = {
|
||||
function(player) EID:ItemReminderHandleDiceBag(player) end,
|
||||
function(player) EID:ItemReminderHandlePocketActive(player) end,
|
||||
function(player) EID:ItemReminderHandlePocketItems(player) end } },
|
||||
{ id = "Trinkets", entryGenerators = {
|
||||
function(player) EID:ItemReminderHandleTrinkets(player) end,
|
||||
function(player) EID:ItemReminderHandleGulpedModelingClay(player) end } },
|
||||
{ id = "Passives", entryGenerators = {
|
||||
function(player) -- Passive item: Zodiac
|
||||
if EID.isRepentance and player:HasCollectible(392) then
|
||||
EID:ItemReminderAddDescription(player, 5, 100, 392)
|
||||
end
|
||||
end,
|
||||
function(player) -- Passive item: Echo Chamber
|
||||
if EID.isRepentance and player:HasCollectible(700) then
|
||||
EID:ItemReminderAddDescription(player, 5, 100, 700)
|
||||
end
|
||||
end,
|
||||
function(player) EID:ItemReminderHandleRecentItems(player) end } },
|
||||
}
|
||||
|
||||
function EID:getHoldMapDescription(player, checkingTwin)
|
||||
EID.InsideItemReminder = true
|
||||
-- Starting Blacklist: Recall, Hold
|
||||
blacklist = { ["5.100.714"] = true, ["5.100.715"] = true, }
|
||||
holdMapDesc = ""
|
||||
|
||||
currentPlayer = player
|
||||
|
||||
-- TODO:
|
||||
-- crooked penny cheats. 404/liberty cap/broken syringe/etc. "what item is it"
|
||||
-- pandora's box? it shows the whole desc which is kinda useful but too big
|
||||
|
||||
-- Tainted ??? Poop Descriptions
|
||||
if EID.isRepentance 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
|
||||
|
||||
-- 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)
|
||||
-- Format: ItemID = table
|
||||
-- modifierFunction = function that modifies the original description object of the item
|
||||
-- isCheat = Only evaluate, if the "ItemReminderShowRNGCheats" config option is enabled
|
||||
-- isHiddenInfo = Only evaluate, if the "ItemReminderShowHiddenInfo" config option is enabled
|
||||
-- isRepentance = Only evaluate, if Repentance is installed
|
||||
EID.ItemReminderDescriptionModifier = {
|
||||
---------------- Passive Items ----------------
|
||||
["5.100.392"] = { -- Zodiac
|
||||
isHiddenInfo = true,
|
||||
isRepentance = true,
|
||||
modifierFunction = function(descObj, player)
|
||||
local zodiacItem = player:GetZodiacEffect()
|
||||
if zodiacItem > 0 then
|
||||
local demoDescObj = EID:getDescriptionObj(5, 100, zodiacItem)
|
||||
EID:ItemReminderAddResultHeaderSuffix(descObj, demoDescObj.Name)
|
||||
descObj.Icon = demoDescObj.Icon
|
||||
descObj.Description = demoDescObj.Description
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Echo Chamber Description
|
||||
if EID.isRepentance and player:HasCollectible(700) then
|
||||
local playerID = EID:getPlayerID(player)
|
||||
local pickupHistory = EID.PlayerItemInteractions[playerID].pickupHistory
|
||||
-- Dead Tainted Lazarus exception
|
||||
if player:GetPlayerType() == 38 then
|
||||
pickupHistory = EID.PlayerItemInteractions[playerID].altPickupHistory or pickupHistory
|
||||
end
|
||||
if pickupHistory then
|
||||
},
|
||||
["5.100.700"] = { -- Echo Chamber
|
||||
isRepentance = true,
|
||||
modifierFunction = function(descObj, player)
|
||||
local playerID = EID:getPlayerID(player)
|
||||
local pickupHistory = EID.PlayerItemInteractions[playerID].pickupHistory
|
||||
-- Dead Tainted Lazarus exception
|
||||
if player:GetPlayerType() == 38 then
|
||||
pickupHistory = EID.PlayerItemInteractions[playerID].altPickupHistory or pickupHistory
|
||||
end
|
||||
if not pickupHistory then return end
|
||||
local pickupNames = ""
|
||||
local pickupsToPrint = 3
|
||||
for i = 1, #pickupHistory do
|
||||
@@ -101,213 +92,399 @@ function EID:getHoldMapDescription(player, checkingTwin)
|
||||
end
|
||||
end
|
||||
if pickupNames ~= "" then
|
||||
append("{{Collectible700}}", EID:getObjectName(5, 100, 700), pickupNames)
|
||||
EID:ItemReminderAddResultHeaderSuffix(descObj)
|
||||
descObj.Description = pickupNames
|
||||
end
|
||||
end
|
||||
end
|
||||
},
|
||||
|
||||
-- Bag of Crafting
|
||||
if EID.isRepentance and player:HasCollectible(710) then
|
||||
local floorQuery = EID.BoC.FloorOverride or EID.BoC.FloorQuery
|
||||
local inventoryQuery= EID.BoC.InventoryOverride or EID.BoC.InventoryQuery
|
||||
local bagItems = EID.BoC.BagItemsOverride or EID.BoC.BagItems
|
||||
local total = #floorQuery + #inventoryQuery+#bagItems
|
||||
local text = total.." of 8 items available"
|
||||
if total < 8 then text = text .. "#{{Warning}} Needs at least 8 to show crafting recipes!" end
|
||||
blacklist["5.100.710"] = true
|
||||
append("{{Collectible710}}", EID:getObjectName(5,100,710), text)
|
||||
end
|
||||
---------------- Active Items ----------------
|
||||
|
||||
-- Active Item Descriptions
|
||||
if EID.Config["ItemReminderShowActiveDesc"] > 0 then
|
||||
for i = 0, EID.Config["ItemReminderShowActiveDesc"]-1 do
|
||||
-- the modulo is to convert negative IDs (glitched items) to positive IDs
|
||||
local heldActive = player:GetActiveItem(i) % 4294967296
|
||||
if heldActive > 0 and not blacklist["5.100." .. heldActive] then
|
||||
-- Metronome result
|
||||
if heldActive == 488 and EID.Config["ItemReminderShowRNGCheats"] then
|
||||
blacklist["5.100.488"] = true
|
||||
addObjectDesc(5, 100, EID:MetronomePrediction(getSeed(488)), "{{Collectible488}}")
|
||||
-- Teleport! location
|
||||
elseif heldActive == 44 and EID.Config["ItemReminderShowRNGCheats"] then
|
||||
blacklist["5.100.44"] = true
|
||||
-- The result preview changes as soon as we activate Teleport, which looks awkward, so try to not display the result while mid-teleport. Doesn't work perfectly and only in Rep
|
||||
if not EID.isRepentance or player:GetSprite():GetAnimation() ~= "TeleportUp" then
|
||||
append("{{Collectible44}}", EID:getObjectName(5,100,44) .. EID:getDescriptionEntry("HoldMapHeader"), EID:Teleport1Prediction(getSeed(44)))
|
||||
["5.100.44"] = { -- Teleport! location
|
||||
isCheat = true,
|
||||
isRepentance = true,
|
||||
-- The result preview changes as soon as we activate Teleport, which looks awkward, so try to not display the result while mid-teleport.
|
||||
-- Doesn't work perfectly and only in Rep
|
||||
modifierFunction = function(descObj, player)
|
||||
if player:GetSprite():GetAnimation() ~= "TeleportUp" then
|
||||
EID:ItemReminderAddResultHeaderSuffix(descObj)
|
||||
descObj.Description = EID:Teleport1Prediction(EID:GetItemSeed(player, 44))
|
||||
end
|
||||
end,
|
||||
},
|
||||
["5.100.419"] = { -- Teleport 2.0 location
|
||||
modifierFunction = function(descObj, _)
|
||||
EID:ItemReminderAddResultHeaderSuffix(descObj)
|
||||
descObj.Description = EID:Teleport2Prediction()
|
||||
end
|
||||
},
|
||||
["5.100.476"] = { -- D1
|
||||
isCheat = true,
|
||||
modifierFunction = function(descObj, player)
|
||||
EID:ItemReminderAddResultHeaderSuffix(descObj)
|
||||
descObj.Description = EID:D1Prediction(EID:GetItemSeed(player, 476))
|
||||
end
|
||||
},
|
||||
["5.100.477"] = { -- Void
|
||||
modifierFunction = function(descObj, player)
|
||||
local absorbedItems = EID.absorbedItems[tostring(EID:getPlayerID(player))]
|
||||
if absorbedItems then
|
||||
local descriptionText = ""
|
||||
local countItems = 0
|
||||
for _, _ in pairs(absorbedItems) do
|
||||
countItems = countItems + 1
|
||||
end
|
||||
if countItems > 0 then
|
||||
if countItems > 5 then
|
||||
descriptionText = "{{Blank}} "
|
||||
end
|
||||
-- Teleport 2.0 location
|
||||
elseif heldActive == 419 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), player), "{{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
|
||||
local absorbedActives = ""
|
||||
local printNormalDesc = true
|
||||
local absorbedItems = EID.absorbedItems[tostring(EID:getPlayerID(player))]
|
||||
if absorbedItems then
|
||||
local countItems = 0
|
||||
for _, _ in pairs(absorbedItems) do
|
||||
countItems = countItems + 1
|
||||
end
|
||||
if countItems > 0 then
|
||||
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
|
||||
blacklist["5.100.477"] = true
|
||||
append("{{Collectible477}}", EID:getObjectName(5, 100, 477) .. EID:getDescriptionEntry("HoldMapHeader"), absorbedActives)
|
||||
printNormalDesc = false
|
||||
for k, _ in pairs(absorbedItems) do
|
||||
descriptionText = descriptionText .. "{{Collectible" .. k .. "}} "
|
||||
if countItems <= 5 then
|
||||
descriptionText = descriptionText .. EID:getObjectName(5, 100, tonumber(k)) .. "#"
|
||||
end
|
||||
end
|
||||
if printNormalDesc then addObjectDesc(5, 100, heldActive) end
|
||||
else
|
||||
addObjectDesc(5, 100, heldActive)
|
||||
EID:ItemReminderAddResultHeaderSuffix(descObj)
|
||||
descObj.Description = descriptionText
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
},
|
||||
["5.100.488"] = { -- Metronome
|
||||
modifierFunction = function(descObj, player)
|
||||
local predictionItem = EID:MetronomePrediction(EID:GetItemSeed(player, 488))
|
||||
local demoDescObj = EID:getDescriptionObj(5, 100, predictionItem)
|
||||
EID:ItemReminderAddResultHeaderSuffix(descObj, demoDescObj.Name)
|
||||
descObj.Icon = demoDescObj.Icon
|
||||
descObj.Description = demoDescObj.Description
|
||||
end
|
||||
},
|
||||
["5.100.489"] = { -- D Infinity
|
||||
modifierFunction = function(descObj, player)
|
||||
local predictionItem = EID:CurrentDInfinity(EID:GetItemSeed(player, 489), player)
|
||||
local demoDescObj = EID:getDescriptionObj(5, 100, predictionItem)
|
||||
EID:ItemReminderAddResultHeaderSuffix(descObj, demoDescObj.Name)
|
||||
descObj.Icon = demoDescObj.Icon
|
||||
descObj.Description = demoDescObj.Description
|
||||
end
|
||||
},
|
||||
["5.100.710"] = { -- Bag of Crafting
|
||||
isRepentance = true,
|
||||
modifierFunction = function(descObj, _)
|
||||
local floorQuery = EID.BoC.FloorOverride or EID.BoC.FloorQuery
|
||||
local inventoryQuery = EID.BoC.InventoryOverride or EID.BoC.InventoryQuery
|
||||
local bagItems = EID.BoC.BagItemsOverride or EID.BoC.BagItems
|
||||
local total = #floorQuery + #inventoryQuery + #bagItems
|
||||
local text = total .. " of 8 items available"
|
||||
if total < 8 then text = text .. "#{{Warning}} Needs at least 8 to show crafting recipes!" end
|
||||
descObj.Description = text
|
||||
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
|
||||
-- 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 = EID.isRepentance and player:GetActiveItem(3) or 0
|
||||
local pocketPrinted = false
|
||||
local pocketActive = EID.isRepentance 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 EID.isRepentance 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!
|
||||
---------------- TRINKETS ----------------
|
||||
|
||||
["5.350.4"] = { -- Broken Remote has two possible effects depending on if its doubled
|
||||
modifierFunction = function(descObj, player)
|
||||
local originalName = descObj.Name
|
||||
if player:GetTrinketMultiplier(4) > 1 then
|
||||
-- Teleport 2.0
|
||||
local demoDescObj = EID:getDescriptionObj(5, 100, 419)
|
||||
EID.ItemReminderDescriptionModifier["5.100.419"].modifierFunction(descObj, player)
|
||||
descObj.Name = originalName
|
||||
EID:ItemReminderAddResultHeaderSuffix(descObj, demoDescObj.Name)
|
||||
elseif EID.Config["ItemReminderShowRNGCheats"] then
|
||||
-- Teleport
|
||||
local demoDescObj = EID:getDescriptionObj(5, 100, 44)
|
||||
EID.ItemReminderDescriptionModifier["5.100.44"].modifierFunction(descObj, player)
|
||||
descObj.Name = originalName
|
||||
EID:ItemReminderAddResultHeaderSuffix(descObj, demoDescObj.Name)
|
||||
end
|
||||
end
|
||||
end
|
||||
},
|
||||
["5.350.64"] = { -- Rainbow Worm
|
||||
isHiddenInfo = true,
|
||||
modifierFunction = function(descObj, _)
|
||||
-- Rainbow Worm's trinket IDs it grants, in order
|
||||
local rainbowWormEffects = { [0] = 9, 11, 65, 27, 10, 12, 26, 66, 96, 144 }
|
||||
local trinketID = rainbowWormEffects[math.floor(game.TimeCounter / 30 / 3) % (EID.isRepentance and 10 or 8)]
|
||||
local demoDescObj = EID:getDescriptionObj(5, 350, trinketID)
|
||||
EID:ItemReminderAddResultHeaderSuffix(descObj, demoDescObj.Name)
|
||||
descObj.Icon = demoDescObj.Icon
|
||||
descObj.Description = demoDescObj.Description
|
||||
end
|
||||
},
|
||||
["5.350.75"] = { -- 404 Error
|
||||
isHiddenInfo = true,
|
||||
isRepentance = true, -- HasTrinket can't differentiate between real and fake trinkets in AB+
|
||||
modifierFunction = function(descObj, player)
|
||||
-- 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
|
||||
|
||||
-- Trinket Descriptions
|
||||
if EID.Config["ItemReminderShowTrinketDesc"] > 0 then
|
||||
for t = 0, EID.Config["ItemReminderShowTrinketDesc"]-1 do
|
||||
-- account for Golden Trinket IDs
|
||||
local heldTrinketTrue = player:GetTrinket(t)
|
||||
local heldTrinket = heldTrinketTrue
|
||||
if EID.isRepentance then heldTrinket = heldTrinketTrue & TrinketType.TRINKET_ID_MASK end
|
||||
if heldTrinket > 0 and not blacklist["5.350." .. heldTrinket] then
|
||||
if heldTrinket == 4 then
|
||||
-- Broken Remote has two possible effects depending on if its doubled
|
||||
if player:GetTrinketMultiplier(heldTrinket) > 1 then
|
||||
-- Teleport 2.0
|
||||
blacklist["5.350.4"] = true
|
||||
append("{{Trinket4}}", EID:getObjectName(5,350,4) .. EID:getDescriptionEntry("HoldMapHeader"), EID:Teleport2Prediction())
|
||||
elseif EID.Config["ItemReminderShowRNGCheats"] then
|
||||
-- Teleport (requires cheating option on)
|
||||
blacklist["5.350.4"] = true
|
||||
if not EID.isRepentance or player:GetSprite():GetAnimation() ~= "TeleportUp" then
|
||||
append("{{Trinket4}}", EID:getObjectName(5,350,4) .. EID:getDescriptionEntry("HoldMapHeader"), EID:Teleport1Prediction(getSeed(44)))
|
||||
end
|
||||
end
|
||||
-- Rainbow Worm
|
||||
elseif EID.Config["ItemReminderShowHiddenInfo"] and heldTrinket == 64 then
|
||||
blacklist["5.350.64"] = true
|
||||
local rainbowWormEffect = rainbowWormEffects[math.floor(game.TimeCounter / 30 / 3) % (EID.isRepentance 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 EID.isRepentance and heldTrinket == 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 = player:HasTrinket(i, true) ~= player:HasTrinket(i, false)
|
||||
if tempTrinketFound and (not mysteriousPaperBlacklist[i] or not hasPaper) then
|
||||
addObjectDesc(5, 350, i, "{{Trinket75}}")
|
||||
end
|
||||
end
|
||||
-- Modeling Clay
|
||||
elseif heldTrinket == 166 then
|
||||
local modelingClayItem = player:GetModelingClayEffect()
|
||||
if modelingClayItem > 0 then
|
||||
addObjectDesc(5, 100, modelingClayItem, "{{Trinket166}}")
|
||||
blacklist["5.350.166"] = true
|
||||
else
|
||||
addObjectDesc(5, 350, heldTrinketTrue) -- currently no effect applied
|
||||
end
|
||||
else
|
||||
addObjectDesc(5, 350, heldTrinketTrue)
|
||||
-- Don't display Mysterious Paper's 1-frame temporary trinket granting
|
||||
local hasPaper = player:HasTrinket(21)
|
||||
-- Mysterious Paper does not play well with displaying Error 404's effect
|
||||
local mysteriousPaperBlacklist = { [23] = true, [48] = true }
|
||||
for i = 1, TrinketType.NUM_TRINKETS - 1 do
|
||||
local tempTrinketFound = player:HasTrinket(i, true) ~= player:HasTrinket(i, false)
|
||||
if tempTrinketFound and (not mysteriousPaperBlacklist[i] or not hasPaper) then
|
||||
local demoDescObj = EID:getDescriptionObj(5, 350, i)
|
||||
EID:ItemReminderAddResultHeaderSuffix(descObj, demoDescObj.Name)
|
||||
descObj.Icon = demoDescObj.Icon
|
||||
descObj.Description = demoDescObj.Description
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
-- Gulped/unslotted Modeling Clay
|
||||
-- (Hidden information, because Modeling Clay does not visually show its item when gulped)
|
||||
if EID.isRepentance and EID.Config["ItemReminderShowHiddenInfo"] and not blacklist["5.350.166"] and player:GetModelingClayEffect() > 0 then
|
||||
},
|
||||
["5.350.166"] = { -- Modeling Clay
|
||||
isRepentance = true,
|
||||
modifierFunction = function(descObj, player)
|
||||
local modelingClayItem = player:GetModelingClayEffect()
|
||||
if modelingClayItem > 0 then
|
||||
addObjectDesc(5, 100, modelingClayItem, "{{Trinket166}}")
|
||||
blacklist["5.350.166"] = true
|
||||
local demoDescObj = EID:getDescriptionObj(5, 100, modelingClayItem)
|
||||
EID:ItemReminderAddResultHeaderSuffix(descObj, demoDescObj.Name)
|
||||
descObj.Icon = "{{Collectible" .. modelingClayItem .. "}}"
|
||||
descObj.Description = demoDescObj.Description
|
||||
end
|
||||
end
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
|
||||
-- Simple function to help with adding properly formatted sections to the reminder description
|
||||
function EID:ItemReminderAddTempDescriptionEntry(icon, title, newDesc)
|
||||
table.insert(EID.ItemReminderTempDescriptions, { icon or "{{Blank}}", title, newDesc })
|
||||
end
|
||||
|
||||
-- Adds a formatted "Result" text to the item name
|
||||
function EID:ItemReminderAddResultHeaderSuffix(descObj, newName)
|
||||
if newName then
|
||||
local iconString = EID:GetIconStringByDescriptionObject(descObj)
|
||||
descObj.Name = newName ..
|
||||
" (" .. iconString .. " " .. descObj.Name .. EID:getDescriptionEntry("ItemReminder", "ResultHeader") .. ")"
|
||||
else
|
||||
descObj.Name = descObj.Name .. EID:getDescriptionEntry("ItemReminder", "ResultHeader")
|
||||
end
|
||||
end
|
||||
|
||||
-- Add item description for a given entity to the reminder. Also tries to apply special modifiers if present
|
||||
function EID:ItemReminderAddDescription(player, entityType, variant, subType, extraIcon)
|
||||
local objectID = entityType .. "." .. variant .. "." .. subType
|
||||
if currentBlacklist[objectID] then return end
|
||||
|
||||
local descObj = EID:getDescriptionObj(entityType, variant, subType)
|
||||
|
||||
local specialDesc = EID.ItemReminderDescriptionModifier[objectID]
|
||||
if specialDesc and type(specialDesc.modifierFunction) == "function" then
|
||||
-- dont add, if description modifier is a cheat and cheats are disabled
|
||||
local evalShowCheat = not (specialDesc.isCheat and not EID.Config["ItemReminderShowRNGCheats"])
|
||||
local evalShowHidden = not (specialDesc.isHidden and not EID.Config["ItemReminderShowHiddenInfo"])
|
||||
if evalShowCheat or evalShowHidden then
|
||||
specialDesc.modifierFunction(descObj, player)
|
||||
end
|
||||
end
|
||||
|
||||
-- Zodiac's effect for the current floor
|
||||
if EID.Config["ItemReminderShowHiddenInfo"] and player:HasCollectible(CollectibleType.COLLECTIBLE_ZODIAC) then
|
||||
local zodiacItem = player:GetZodiacEffect()
|
||||
if zodiacItem > 0 then
|
||||
addObjectDesc(5, 100, zodiacItem, "{{Collectible392}}")
|
||||
blacklist["5.100.392"] = true
|
||||
currentBlacklist[objectID] = true
|
||||
local iconString = extraIcon or EID:GetIconStringByDescriptionObject(descObj)
|
||||
EID:ItemReminderAddTempDescriptionEntry(iconString, descObj.Name, descObj.Description)
|
||||
end
|
||||
|
||||
-- Recently Acquired Item Descriptions
|
||||
function EID:ItemReminderHandleRecentItems(player)
|
||||
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] % GLITCH_ITEM_FLAG
|
||||
EID:ItemReminderAddDescription(player, 5, 100, recentID)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Active Item Descriptions
|
||||
function EID:ItemReminderHandleActiveItems(player)
|
||||
-- limit number of active item descriptions to 2, since Slot 3 and 4 are handled seperately
|
||||
for i = 0, math.min(EID.Config["ItemReminderShowActiveDesc"], 2) - 1 do
|
||||
-- the modulo is to convert negative IDs (glitched items) to positive IDs
|
||||
local heldActive = player:GetActiveItem(i) % GLITCH_ITEM_FLAG
|
||||
if heldActive > 0 then
|
||||
EID:ItemReminderAddDescription(player, 5, 100, heldActive)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- pocket active
|
||||
function EID:ItemReminderHandlePocketActive(player)
|
||||
if not EID.isRepentance then return end
|
||||
|
||||
local pocketActive = player:GetActiveItem(2) or 0
|
||||
if pocketActive > 0 then
|
||||
EID:ItemReminderAddDescription(player, 5, 100, pocketActive)
|
||||
end
|
||||
end
|
||||
|
||||
-- dice bag
|
||||
function EID:ItemReminderHandleDiceBag(player)
|
||||
if not EID.isRepentance then return end
|
||||
|
||||
local diceBag = player:GetActiveItem(3) or 0
|
||||
if diceBag > 0 then
|
||||
EID:ItemReminderAddDescription(player, 5, 100, diceBag, "{{Trinket154}}")
|
||||
end
|
||||
end
|
||||
|
||||
-- Pocket Item Descriptions
|
||||
function EID:ItemReminderHandlePocketItems(player)
|
||||
for i = 0, EID.Config["ItemReminderShowPocketDesc"] - 1 do
|
||||
local heldCard = player:GetCard(i)
|
||||
local heldPill = player:GetPill(i)
|
||||
if heldCard > 0 then
|
||||
EID:ItemReminderAddDescription(player, 5, 300, heldCard)
|
||||
elseif heldPill > 0 then
|
||||
-- Check if our held pill is identified
|
||||
EID.pillPlayer = player
|
||||
local identified = game:GetItemPool():IsPillIdentified(heldPill)
|
||||
if EID.isRepentance and heldPill % PillColor.PILL_GIANT_FLAG == PillColor.PILL_GOLD then identified = true end
|
||||
if (identified or EID.Config["ShowUnidentifiedPillDescriptions"]) then
|
||||
EID:ItemReminderAddDescription(player, 5, 70, heldPill)
|
||||
end
|
||||
EID.pillPlayer = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Trinket Descriptions
|
||||
function EID:ItemReminderHandleTrinkets(player)
|
||||
for t = 0, EID.Config["ItemReminderShowTrinketDesc"] - 1 do
|
||||
-- account for Golden Trinket IDs
|
||||
local heldTrinketTrue = player:GetTrinket(t)
|
||||
local heldTrinket = heldTrinketTrue
|
||||
if EID.isRepentance then heldTrinket = heldTrinketTrue & TrinketType.TRINKET_ID_MASK end
|
||||
if heldTrinket > 0 then
|
||||
EID:ItemReminderAddDescription(player, 5, 350, heldTrinketTrue)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Gulped/unslotted Modeling Clay
|
||||
-- (Hidden information, because Modeling Clay does not visually show its item when gulped)
|
||||
function EID:ItemReminderHandleGulpedModelingClay(player)
|
||||
if EID.isRepentance and EID.Config["ItemReminderShowHiddenInfo"] and player:GetModelingClayEffect() > 0 then
|
||||
EID:ItemReminderAddDescription(player, 5, 350, 166)
|
||||
end
|
||||
end
|
||||
|
||||
-- Tainted ??? Poop Descriptions
|
||||
function EID:ItemReminderHandlePoopSpells(player)
|
||||
if EID.isRepentance and EID.Config["ItemReminderShowPoopDesc"] > 0 and player:GetPlayerType() == 25 then
|
||||
local poopInfo = EID:getDescriptionEntry("poopSpells")
|
||||
for i = 0, EID.Config["ItemReminderShowPoopDesc"] - 1 do
|
||||
local nextPoop = player:GetPoopSpell(i)
|
||||
EID:ItemReminderAddTempDescriptionEntry("{{PoopSpell" .. nextPoop .. "}}", poopInfo[nextPoop][1],
|
||||
poopInfo[nextPoop][2])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Handle scroll inputs
|
||||
function EID:ItemReminderHandleInputs()
|
||||
if EID.Config["ItemReminderEnabled"] and EID.holdTabCounter >= 30 and EID.TabDescThisFrame == false and EID.holdTabPlayer ~= nil then
|
||||
if EID.Config["ItemReminderDisableInputs"] then EID.holdTabPlayer.ControlsCooldown = 2 end
|
||||
|
||||
if Input.IsActionTriggered(EID.Config["ItemReminderNavigateLeftButton"], EID.holdTabPlayer.ControllerIndex) and Isaac.GetTime() - lastInputTime > 50 then
|
||||
EID.ItemReminderSelectedCategory = (EID.ItemReminderSelectedCategory - 1) % #EID.ItemReminderCategories
|
||||
if not EID.Config["ItemReminderShowOverview"] and EID.ItemReminderSelectedCategory == 0 then
|
||||
EID.ItemReminderSelectedCategory = #EID.ItemReminderCategories
|
||||
end
|
||||
|
||||
EID.ForceRefreshCache = true
|
||||
lastInputTime = Isaac.GetTime()
|
||||
lastScrollDirection = -1
|
||||
elseif Input.IsActionTriggered(EID.Config["ItemReminderNavigateRightButton"], EID.holdTabPlayer.ControllerIndex) and Isaac.GetTime() - lastInputTime > 50 then
|
||||
EID.ItemReminderSelectedCategory = (EID.ItemReminderSelectedCategory + 1) % #EID.ItemReminderCategories
|
||||
if not EID.Config["ItemReminderShowOverview"] and EID.ItemReminderSelectedCategory == 0 then EID.ItemReminderSelectedCategory = 1 end
|
||||
|
||||
EID.ForceRefreshCache = true
|
||||
lastInputTime = Isaac.GetTime()
|
||||
lastScrollDirection = 1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function EID:ItemReminderGetTitle()
|
||||
local category = EID.ItemReminderCategories[EID.ItemReminderSelectedCategory + 1]
|
||||
|
||||
local translatedTitle = EID:getDescriptionEntry("ItemReminder", "CategoryNames")
|
||||
local translatedTitleEnglish = EID:getDescriptionEntryEnglish("ItemReminder", "CategoryNames")
|
||||
local title = translatedTitle and translatedTitle[category.id] or
|
||||
translatedTitleEnglish and translatedTitleEnglish[category.id] or category.id
|
||||
return "{{ButtonDLeft}}{{ColorText}} " .. title .. " {{CR}}{{ButtonDRight}}"
|
||||
end
|
||||
|
||||
function EID:ItemReminderGetDescription(player, checkingTwin)
|
||||
EID.InsideItemReminder = true
|
||||
EID.ItemReminderTempDescriptions = {}
|
||||
-- empty blacklist and fill with default values
|
||||
currentBlacklist = {}
|
||||
for key, _ in pairs(EID.ItemReminderBlacklist) do currentBlacklist[key] = true end
|
||||
if EID.Config["ItemReminderShowOverview"] and EID.ItemReminderSelectedCategory == 0 then
|
||||
-- execute all functions defined per category
|
||||
for _, category in ipairs(EID.ItemReminderCategories) do
|
||||
for _, func in ipairs(category.entryGenerators) do
|
||||
func(player)
|
||||
end
|
||||
end
|
||||
else
|
||||
local category = EID.ItemReminderCategories[EID.ItemReminderSelectedCategory + 1]
|
||||
for _, func in ipairs(category.entryGenerators) do
|
||||
func(player)
|
||||
end
|
||||
end
|
||||
|
||||
-- Skip category if nothing is in it
|
||||
if #EID.ItemReminderTempDescriptions == 0 and EID.ItemReminderSelectedCategory <= #EID.ItemReminderCategories then
|
||||
EID.ItemReminderSelectedCategory = (EID.ItemReminderSelectedCategory + lastScrollDirection) %
|
||||
#EID.ItemReminderCategories
|
||||
if not EID.Config["ItemReminderShowOverview"] and EID.ItemReminderSelectedCategory == 0 then
|
||||
EID.ItemReminderSelectedCategory = lastScrollDirection % #EID.ItemReminderCategories
|
||||
end
|
||||
return EID:ItemReminderGetDescription(player, checkingTwin)
|
||||
end
|
||||
-- put descriptions into one long description
|
||||
local finalHoldMapDesc = ""
|
||||
for _, entry in ipairs(EID.ItemReminderTempDescriptions) do
|
||||
finalHoldMapDesc = finalHoldMapDesc .. entry[1] .. " {{ColorEIDObjName}}" .. entry[2] .. "#" .. entry[3] .. "#"
|
||||
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 EID.isRepentance and not checkingTwin then
|
||||
local twin = player:GetOtherTwin()
|
||||
local mainTwinDesc = holdMapDesc
|
||||
local mainTwinDesc = finalHoldMapDesc
|
||||
local otherTwinDesc = ""
|
||||
if twin then otherTwinDesc = EID:getHoldMapDescription(twin, true) end
|
||||
if twin then otherTwinDesc = EID:ItemReminderGetDescription(twin, true) end
|
||||
if otherTwinDesc ~= "" then
|
||||
-- Only the other twin had a desc
|
||||
if mainTwinDesc == "" then holdMapDesc = otherTwinDesc
|
||||
if mainTwinDesc == "" then
|
||||
finalHoldMapDesc = 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
|
||||
finalHoldMapDesc = (EID:getIcon("Player" .. player:GetPlayerType()) ~= EID.InlineIcons["ERROR"] and "{{Player" .. player:GetPlayerType() .. "}}" or "{{CustomTransformation}}") ..
|
||||
" {{ColorGray}}" .. player:GetName() .. "#" .. mainTwinDesc .. "#"
|
||||
finalHoldMapDesc = finalHoldMapDesc ..
|
||||
(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
|
||||
finalHoldMapDesc = mainTwinDesc
|
||||
end
|
||||
end
|
||||
finalHoldMapDesc = "{{Blank}}#" .. finalHoldMapDesc
|
||||
|
||||
EID.InsideItemReminder = false
|
||||
return holdMapDesc
|
||||
return finalHoldMapDesc
|
||||
end
|
||||
+17
-4
@@ -574,14 +574,29 @@ if MCMLoaded then
|
||||
---------------------------------------------------------------------------
|
||||
------------------------------Item Reminder--------------------------------
|
||||
|
||||
EID:AddBooleanSetting("Reminder", "ItemReminderEnabled", "Item Reminder Description", {displayingTab = "",offText = "Disabled", onText = "Enabled", infoText = "Hold Map to show your active item's effect, recently picked up items, and much more"})
|
||||
EID:AddBooleanSetting("Reminder", "ItemReminderEnabled", "Item Reminder", {displayingTab = "",offText = "Disabled", onText = "Enabled", infoText = "Hold Map to show your active item's effect, recently picked up items, and much more"})
|
||||
|
||||
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)" }
|
||||
|
||||
MCM.AddSpace("EID", "Reminder")
|
||||
MCM.AddText("EID", "Reminder", "Options")
|
||||
EID:AddBooleanSetting("Reminder", "ItemReminderShowOverview", "Show Overview Category", { infoText = "Show category with an overview of items in your inventory"})
|
||||
EID:AddBooleanSetting("Reminder", "ItemReminderDisableInputs", "Disable Player Inputs", { infoText = "Prevents the player from doing inputs when item reminder is visible"})
|
||||
EID:AddBooleanSetting("Reminder", "ItemReminderShowHiddenInfo", "Show Hidden Information", { infoText = "Items like Error (404) or Rainbow Worm can have their current granted item revealed in the Item Reminder"})
|
||||
EID:AddBooleanSetting("Reminder", "ItemReminderShowRNGCheats", "Show RNG Predictions", { infoText = "Some items can have their next random result predicted and shown in the Item Reminder"})
|
||||
|
||||
MCM.AddSpace("EID", "Reminder")
|
||||
MCM.AddText("EID", "Reminder", "Controls")
|
||||
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("Reminder", "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)" }
|
||||
EID:AddNumberSetting("Reminder", "ItemReminderNavigateLeftButton", "Navigate Left", 0, 13, {displayTable = actionToName,
|
||||
infoText = {"Keybinding that is used to scroll thru the categories in the left direction"}})
|
||||
|
||||
EID:AddNumberSetting("Reminder", "ItemReminderNavigateRightButton", "Navigate Right", 0, 13, {displayTable = actionToName,
|
||||
infoText = {"Keybinding that is used to scroll thru the categories in the left direction"}})
|
||||
|
||||
MCM.AddSpace("EID", "Reminder")
|
||||
MCM.AddText("EID", "Reminder", "Item Descriptions")
|
||||
@@ -593,8 +608,6 @@ if MCMLoaded then
|
||||
|
||||
EID:AddNumberSetting("Reminder", "ItemReminderShowPoopDesc", "Poop Spells", 0, 6, { repOnly = true, displayTable = itemSlotReminders, infoText = "Show Tainted ???'s next Poop Spell descriptions in the Item Reminder"})
|
||||
|
||||
EID:AddBooleanSetting("Reminder", "ItemReminderShowHiddenInfo", "Show Hidden Information", { infoText = "Items like Error (404) or Rainbow Worm can have their current granted item revealed in the Item Reminder"})
|
||||
EID:AddBooleanSetting("Reminder", "ItemReminderShowRNGCheats", "Show RNG Predictions", { infoText = "Some items can have their next random result predicted and shown in the Item Reminder"})
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1316,6 +1316,8 @@ function EID:OnRender()
|
||||
end
|
||||
end
|
||||
|
||||
EID:ItemReminderHandleInputs()
|
||||
|
||||
if EID.ForceRefreshCache then
|
||||
EID:ResetDescCache()
|
||||
end
|
||||
@@ -1574,11 +1576,12 @@ function EID:OnRender()
|
||||
|
||||
-- handle showing the Hold Map Helper description
|
||||
if EID.Config["ItemReminderEnabled"] and EID.holdTabCounter >= 30 and EID.TabDescThisFrame == false and EID.holdTabPlayer ~= nil then
|
||||
EID:ItemReminderHandleInputs()
|
||||
local demoDescObj = EID:getDescriptionObj(-999, -1, 1)
|
||||
demoDescObj.Name = EID:getDescriptionEntry("HoldMapTitle")
|
||||
demoDescObj.PermanentTextEnglish = EID:getDescriptionEntryEnglish("HoldMapTitle")
|
||||
demoDescObj.PermanentTextEnglish = EID:getDescriptionEntryEnglish("ItemReminder", "Title")
|
||||
-- check for scrolling being enabled here and append scroll controls to the title?
|
||||
demoDescObj.Description = EID:getHoldMapDescription(EID.holdTabPlayer)
|
||||
demoDescObj.Description = EID:ItemReminderGetDescription(EID.holdTabPlayer)
|
||||
demoDescObj.Name = EID:ItemReminderGetTitle()
|
||||
if (demoDescObj.Description ~= "") then EID:addDescriptionToPrint(demoDescObj, 1) end
|
||||
end
|
||||
|
||||
|
||||
Reference in new issue
Block a user