v0.6
This commit is contained in:
1 parent
e2cd42f1f2
commit
e1bb22a722
1 file changed
+86
-20
+86
-20
@@ -21,18 +21,26 @@ local logCursor = 0
|
|||||||
local debugLogLocation = os.getenv("SYSTEMDRIVE") .. "/Users/" .. os.getenv("USERNAME") .. "/Documents/My Games/Binding of Isaac Repentance/tmtrainerlog.txt"
|
local debugLogLocation = os.getenv("SYSTEMDRIVE") .. "/Users/" .. os.getenv("USERNAME") .. "/Documents/My Games/Binding of Isaac Repentance/tmtrainerlog.txt"
|
||||||
local debugLog = io.open(debugLogLocation, "w+")
|
local debugLog = io.open(debugLogLocation, "w+")
|
||||||
|
|
||||||
|
-- all possible attributes
|
||||||
|
--local itemConfigItemAttributes = { "AchievementID", "AddBlackHearts", "AddBombs", "AddCoins", "AddHearts", "AddKeys", "AddMaxHearts", "AddSoulHearts", "CacheFlags", "ChargeType", "ClearEffectsOnRemove", "Costume", "Description", "DevilPrice", "Discharged", "GfxFileName", "Hidden", "ID", "InitCharge", "MaxCharges", "MaxCooldown", "Name", "PassiveCache", "PersistentEffect", "Quality", "ShopPrice", "Special", "Tags", "Type" }
|
||||||
|
-- the traits here will be listed in this order
|
||||||
|
local itemConfigItemAttributes = { "AddMaxHearts", "AddHearts", "AddSoulHearts", "AddBlackHearts", "AddBombs", "AddCoins", "AddKeys", "CacheFlags" }
|
||||||
|
local cacheFlagNames = { [0] = "Damage", "Fire Delay", "Shot Speed", "Range", "Speed", "Tear Effects", "Tear Color", "Flying", "Weapon", "Familiars", "Luck", "Size", "Color", "Pickup Vision", [16] = "All Stats" }
|
||||||
|
|
||||||
|
-- cache flags: math.pow(2, i) | flags ~= 0
|
||||||
|
|
||||||
--currently english only
|
--currently english only
|
||||||
local attributeConversions = {
|
local attributeConversions = {
|
||||||
--chain = "Then: ",
|
--chain = "Then: ",
|
||||||
chain = "",
|
chain = "",
|
||||||
active = "On use:",
|
active = "On use:",
|
||||||
pickup_collected = "When you collect a pickup:",
|
pickup_collected = "When you collect a pickup:", --chance to?
|
||||||
enemy_kill = "On kill, chance to:",
|
enemy_kill = "On kill, chance to:",
|
||||||
damage_taken = "When you take damage:",
|
damage_taken = "When you take damage:", --chance to?
|
||||||
entity_spawned = "When a {{ColorGray}}{T1}{{ColorText}} is spawned, chance to:",
|
entity_spawned = "When a {{ColorGray}}{T1}{{ColorText}} is spawned, chance to:",
|
||||||
tear_fire = "When you fire a tear, chance to:",
|
tear_fire = "When you fire a tear, chance to:",
|
||||||
enemy_hit = "On hitting an enemy, chance to:",
|
enemy_hit = "On hitting an enemy, chance to:",
|
||||||
room_clear = "On room clear:",
|
room_clear = "On room clear:", --chance to?
|
||||||
|
|
||||||
area_damage = "Deal {1} damage in an area around you",
|
area_damage = "Deal {1} damage in an area around you",
|
||||||
add_temporary_effect = "Gain {1} for the room",
|
add_temporary_effect = "Gain {1} for the room",
|
||||||
@@ -40,34 +48,52 @@ local attributeConversions = {
|
|||||||
use_active_item = "Use {1}",
|
use_active_item = "Use {1}",
|
||||||
spawn_entity = "Spawn a {{ColorGray}}{1}{{ColorText}}",
|
spawn_entity = "Spawn a {{ColorGray}}{1}{{ColorText}}",
|
||||||
fart = "Fart with size {1}",
|
fart = "Fart with size {1}",
|
||||||
|
|
||||||
|
AddBlackHearts = "{1} Black Heart",
|
||||||
|
AddBombs = "{1} Bomb",
|
||||||
|
AddCoins = "{1} Coin",
|
||||||
|
AddHearts = "Heals {1} Red Heart",
|
||||||
|
AddKeys = "{1} Key",
|
||||||
|
AddMaxHearts = "{1} Heart Container",
|
||||||
|
AddSoulHearts = "{1} Soul Heart",
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
--999.-1?
|
--999.-1?
|
||||||
|
--1000.50: Laser Impact? It couldn't find that?
|
||||||
local genericEntityNames = {
|
local genericEntityNames = {
|
||||||
["4.-1"] = "lit Bombs",
|
["2.-1"] = "tear",
|
||||||
["5.-1"] = "pickups",
|
["4.-1"] = "lit Bomb",
|
||||||
["5.10"] = "Hearts",
|
["5.-1"] = "pickup",
|
||||||
["5.20"] = "Coins",
|
["5.10"] = "Heart",
|
||||||
["5.30"] = "Keys",
|
["5.20"] = "Coin",
|
||||||
["5.40"] = "Bomb pickups",
|
["5.30"] = "Key",
|
||||||
["5.70"] = "Pills",
|
["5.40"] = "Bomb pickup",
|
||||||
["5.300"] = "Cards",
|
["5.69"] = "Grab Bag",
|
||||||
|
["5.70"] = "Pill",
|
||||||
|
["5.300"] = "Card",
|
||||||
|
|
||||||
["9.-1"] = "projectiles",
|
["9.-1"] = "projectile",
|
||||||
["1000.-1"] = "effects",
|
["999.-1"] = "grid-aligned object",
|
||||||
|
["1000.0"] = "effect",
|
||||||
}
|
}
|
||||||
|
|
||||||
local lastEffectTrigger = "chain"
|
local lastEffectTrigger = "chain"
|
||||||
|
|
||||||
local function entityToName(e)
|
local function entityToName(e, plural)
|
||||||
--local name = ""
|
-- -1 is often used as an "any of this type", so converting it to 0 can help
|
||||||
local name = genericEntityNames[e] or EID.XMLEntityNames[e] or "NO NAME"
|
local eWithZero = string.gsub(e, "-1", "0")
|
||||||
|
plural = plural or false
|
||||||
|
local name = genericEntityNames[e] or EID.XMLEntityNames[e] or genericEntityNames[eWithZero] or EID.XMLEntityNames[eWithZero] or "NO NAME"
|
||||||
if name == "NO NAME" then
|
if name == "NO NAME" then
|
||||||
debugLog:write(e .. " (" .. name .. ")\n")
|
debugLog:write(e .. "\n")
|
||||||
debugLog:flush()
|
debugLog:flush()
|
||||||
|
print(e)
|
||||||
|
elseif plural then
|
||||||
|
name = name .. "s"
|
||||||
end
|
end
|
||||||
--if name == "" then return e end
|
if name == "NO NAME" then return e end
|
||||||
return genericEntityNames[e] or EID.XMLEntityNames[e] or name
|
return name
|
||||||
end
|
end
|
||||||
|
|
||||||
local function parseEffectLine(raw)
|
local function parseEffectLine(raw)
|
||||||
@@ -102,7 +128,7 @@ local function parseEffectLine(raw)
|
|||||||
|
|
||||||
replacements[1] = "{{Collectible" .. Isaac.GetItemIdByName(name) .. "}}" .. name
|
replacements[1] = "{{Collectible" .. Isaac.GetItemIdByName(name) .. "}}" .. name
|
||||||
elseif effectType == "convert_entities" then
|
elseif effectType == "convert_entities" then
|
||||||
replacements[1] = entityToName(words[6])
|
replacements[1] = entityToName(words[6], true)
|
||||||
replacements[2] = entityToName(words[8])
|
replacements[2] = entityToName(words[8])
|
||||||
elseif effectType == "spawn_entity" then
|
elseif effectType == "spawn_entity" then
|
||||||
replacements[1] = entityToName(words[6])
|
replacements[1] = entityToName(words[6])
|
||||||
@@ -152,6 +178,46 @@ local function CheckLogForItems(_)
|
|||||||
if numEffects == 0 then
|
if numEffects == 0 then
|
||||||
-- Glowing Hour Glass type effects will cause the game to reload all items, check if our desc is equal to the first one
|
-- Glowing Hour Glass type effects will cause the game to reload all items, check if our desc is equal to the first one
|
||||||
if (EID:getDescriptionObj(5, 100, maxNumber - 1).Description == eidDesc) then spawnedItems = 1 end
|
if (EID:getDescriptionObj(5, 100, maxNumber - 1).Description == eidDesc) then spawnedItems = 1 end
|
||||||
|
|
||||||
|
-- check for the item's ItemConfig attributes
|
||||||
|
local config = Isaac.GetItemConfig()
|
||||||
|
local item = config:GetCollectible(maxNumber - spawnedItems)
|
||||||
|
print(item)
|
||||||
|
debugLog:write((maxNumber - spawnedItems) .. "\n")
|
||||||
|
local attributes = ""
|
||||||
|
for k,v in ipairs(itemConfigItemAttributes) do
|
||||||
|
local attrib = item[v]
|
||||||
|
if attrib ~= 0 then
|
||||||
|
if (v == "CacheFlags") then
|
||||||
|
local flagString = "Might affect "
|
||||||
|
if attrib == CacheFlag.CACHE_ALL then
|
||||||
|
flagString = flagString .. cacheFlagNames[16]
|
||||||
|
else
|
||||||
|
for i=0, 13 do
|
||||||
|
if 2^i & attrib ~= 0 then
|
||||||
|
flagString = flagString .. cacheFlagNames[i] .. ", "
|
||||||
|
end
|
||||||
|
end
|
||||||
|
flagString = string.sub(flagString, 0, -3)
|
||||||
|
end
|
||||||
|
attributes = attributes .. flagString .. "#"
|
||||||
|
else
|
||||||
|
-- the Add Heart attributes count half a heart as 1, so divide the value in half
|
||||||
|
if string.find(v, "Hearts") then attrib = attrib / 2 end
|
||||||
|
-- the g flag removes .0 in numbers like 1.0 (caused by the hearts division)
|
||||||
|
local s = string.format("%.4g",attrib)
|
||||||
|
if attrib > 0 then s = "+" .. s end
|
||||||
|
attributes = attributes .. string.gsub(attributeConversions[v], "{1}", s)
|
||||||
|
--things like this don't localize well at all...
|
||||||
|
if attrib > 1 or attrib < -1 then attributes = attributes .. "s" end
|
||||||
|
attributes = attributes .. "#"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
debugLog:write(v .. ": " .. tostring(item[v]) .. "\n")
|
||||||
|
end
|
||||||
|
eidDesc = attributes .. eidDesc
|
||||||
|
debugLog:flush()
|
||||||
|
|
||||||
EID:addCollectible(maxNumber - spawnedItems, eidDesc)
|
EID:addCollectible(maxNumber - spawnedItems, eidDesc)
|
||||||
--print("adding " .. (maxNumber - spawnedItems))
|
--print("adding " .. (maxNumber - spawnedItems))
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in new issue
Block a user