Hello!Great mod!I would like to translate the required attributes and skills in the description of the items, could you tell me what exactly needs to be rewritten in the files?I found the items in the formulas.lua file that are responsible for the text display of information, but when translating them into another language, the formula breaks.
so, I created a mage whose bonus skill is short blades (default)
and he can't equip the starting iron dagger because he lacks the skill
brilliant
to equip a longbow (0-20 damage) you need 60 strength
to equip a crossbow (20-20 damage) you need 30 strength
I could go on like this for so long because the MCM settings don't work correctly
I REALLY like the idea of the mod, but if you made it disable for each category and select options separately for each category, it would solve a lot of problems at once
Hi. Is it possible to implement an "alternate mode" like in Equipment Requirements whereby you can wear but receive penalties for equipment you do not meet the skill requirements for?
Hello again :) I hope I am not annoying. I have a question and a code suggestion. Question: do you have github repository for this mod ? I was hoping to fork it (repository, not the mod) and use a local repo for experiments.
Code suggestion: There is a 4NM total overhaul and it stand-alone part Grip of Death, that allows to use two-handed weapons as one-handed, and vice versa. Coincidentially, that allows one to use one-handed spears. For that to work, spears are converted to Long blades upon equipping. And EIRO then sets requirements as if for long blade. The code below fixes the issue - method 'normalizeItem' converts nm4 item to original one. It is not that specific to NM4, any mod that uses similar scheme can be supported the same way.
-- compatibility option with NM4 overhaul and/or Grip of Death -- and potentially for any other mod that uses same mechanics -- (Grip of death is standalone part of NM4 overhaul) local function normalizeItem(item) -- get rid of the corner case if not item then return item end local wid = item.id --print("weapon id: ", wid) -- if config. nm4 compatibility enabled -- we can make some toggles for compatibility options -- but for now, that will do (because I have no idea how to create anything in mod UI) if wid:sub(1,2) == "4_" then -- this means it is NM4-converted weapon --print("NM4 weapon recognized") local Original = tes3.getObject(wid:sub(3)) -- get original if Original then return Original end print("failed to get original") end
-- by default, return item itself return item end
and then in your functions
local function onEquip(e) local item = normalizeItem(e.item) local itemId = item.id ..... code ....
functionlocal reqTooltip(e) local object = normalizeItem(e.object) .... code ....
Thank you for your constructive feedback and useful code snippets.
I don't have a public repo for the mod but ALL Lua/MSWE mods can be found here: github (the link takes you right to mine)
You have my full permission to modify and republish EIRO as you see fit. I built it for the community and its 100% open for extension and modification. You can even publish EIRO 2 if you want, I'll download it and play it!
I think you have great suggestions so I encourage you to grab this mod I created with much love and care and expand it, change it, enhance it as much as you want.
I really liked the idea and things seem to be quite balanced with armor\weapons. But mentor ring requires 310 personality, with both Clothing and Personality sliders set to -500 :( The ring is good, but not that good (( And attributes are capped at 100 anyway.
I wish there were a toggle(s) to simply enable\disable requirements for specific group of items or for attributes. It seems that -500 (twice) is sometimes just not enough.
Another suggestion is to have a rangeand then map requirement score to this scale. E.g in vanilla attribute limit is 100. Lets say we set range max to 120 (100 naturally + 20 from enchated items). Then all requirements are mapped non-lineary to this scale, say tanh(x/100) * 120. This way item will never require more than range max. https://www.desmos.com/calculator/mex1w5tudb
local function tahn(x) -- lua deprecated hyperbolic functions -- code is from http://lua-users.org/wiki/HyperbolicFunctions if x == 0 then return 0.0 end local neg = false if x < 0 then x = -x; neg = true end if x < 0.54930614433405 then local y = x * x x = x + x * y * ((-0.96437492777225469787e0 * y + -0.99225929672236083313e2) * y + -0.16134119023996228053e4) / (((0.10000000000000000000e1 * y + 0.11274474380534949335e3) * y + 0.22337720718962312926e4) * y + 0.48402357071988688686e4) else x = math.exp(x) x = 1.0 - 2.0 / (x * x + 1.0) end if neg then x = -x end return x end
local function cappedAttribute(attribute) local cap = 120 -- tahn is good because it is basically y=x close to zero and then it nicely compresses range. return tahn(attribute / 100) * cap end
-- main.lua:74 for attrName, attrValue in pairs(attributes) do attributes[attrName] = formulaHelpers.cappedAttribute(attrValue) end
There is also a bugfix - personality slider doesn't affect clothing -- formulas.lua clothing = function(item) local Personality Personality = rFPN(math.ceil(item.value / 10) + 10 + getConfig().Other.clothing + getConfig().Attributes.personality) -- added getConfig().Attributes.personality return { Personality = Personality } end,
I think that it would have been better to apply getConfig().X.Y modifiers after capping requirements. This way there is a common reference point: my requirements will be between 0 and X, and afterwards I shift them by Y points. One way to do this is to change rFPN function, but it is used in a lot of places. Another way is to rewrite most of the formulas.lua, manually decorating attributes computation with call to cappedAttribute.
I wish there were a toggle(s) to simply enable\disable requirements for specific group of items or for attributes. It seems that -500 (twice) is sometimes just not enough.
I like this suggestion a lot. Formulas aside, being able to toggle what needs requirements and what doesn't sounds really good.
I'll fold in your feedback in the next mod update.
I have a question, I recently got the Black Jinx and noticed it had a "Willpower: 134" so I lowered the values of attributes to deal with it cause my setup doesn't let my character get over 100 on any attributes, but nothing changed, I lowered the willpower attribute value and everything still stayed the same. Am I going to the correct part to change the values for rings?
37 comments
Please consider having
block.paddingAllSides = 0
by default to keep UI neat and concise.
and he can't equip the starting iron dagger because he lacks the skill
brilliant
to equip a longbow (0-20 damage) you need 60 strength
to equip a crossbow (20-20 damage) you need 30 strength
I could go on like this for so long because the MCM settings don't work correctly
I REALLY like the idea of the mod, but if you made it disable for each category and select options separately for each category, it would solve a lot of problems at once
I hope I am not annoying. I have a question and a code suggestion.
Question: do you have github repository for this mod ? I was hoping to fork it (repository, not the mod) and use a local repo for experiments.
Code suggestion: There is a 4NM total overhaul and it stand-alone part Grip of Death, that allows to use two-handed weapons as one-handed, and vice versa. Coincidentially, that allows one to use one-handed spears. For that to work, spears are converted to Long blades upon equipping. And EIRO then sets requirements as if for long blade.
The code below fixes the issue - method 'normalizeItem' converts nm4 item to original one. It is not that specific to NM4, any mod that uses similar scheme can be supported the same way.
-- compatibility option with NM4 overhaul and/or Grip of Death
-- and potentially for any other mod that uses same mechanics
-- (Grip of death is standalone part of NM4 overhaul)
local function normalizeItem(item)
-- get rid of the corner case
if not item then
return item
end
local wid = item.id
--print("weapon id: ", wid)
-- if config. nm4 compatibility enabled -- we can make some toggles for compatibility options
-- but for now, that will do (because I have no idea how to create anything in mod UI)
if wid:sub(1,2) == "4_" then -- this means it is NM4-converted weapon
--print("NM4 weapon recognized")
local Original = tes3.getObject(wid:sub(3)) -- get original
if Original then
return Original
end
print("failed to get original")
end
-- by default, return item itself
return item
end
and then in your functions
local function onEquip(e)
local item = normalizeItem(e.item)
local itemId = item.id
..... code ....
functionlocal reqTooltip(e)
local object = normalizeItem(e.object)
.... code ....
Thank you for your constructive feedback and useful code snippets.
I don't have a public repo for the mod but ALL Lua/MSWE mods can be found here:
github (the link takes you right to mine)
You have my full permission to modify and republish EIRO as you see fit. I built it for the community and its 100% open for extension and modification. You can even publish EIRO 2 if you want, I'll download it and play it!
I think you have great suggestions so I encourage you to grab this mod I created with much love and care and expand it, change it, enhance it as much as you want.
Thank you Eniarnel, I look forward to your mod!
I wish there were a toggle(s) to simply enable\disable requirements for specific group of items or for attributes. It seems that -500 (twice) is sometimes just not enough.
Another suggestion is to have a rangeand then map requirement score to this scale. E.g in vanilla attribute limit is 100. Lets say we set range max to 120 (100 naturally + 20 from enchated items). Then all requirements are mapped non-lineary to this scale, say tanh(x/100) * 120. This way item will never require more than range max.
https://www.desmos.com/calculator/mex1w5tudb
-- formula helpers: (anywhere)
local function tahn(x)
-- lua deprecated hyperbolic functions
-- code is from http://lua-users.org/wiki/HyperbolicFunctions
if x == 0 then return 0.0 end
local neg = false
if x < 0 then x = -x; neg = true end
if x < 0.54930614433405 then
local y = x * x
x = x + x * y *
((-0.96437492777225469787e0 * y +
-0.99225929672236083313e2) * y +
-0.16134119023996228053e4) /
(((0.10000000000000000000e1 * y +
0.11274474380534949335e3) * y +
0.22337720718962312926e4) * y +
0.48402357071988688686e4)
else
x = math.exp(x)
x = 1.0 - 2.0 / (x * x + 1.0)
end
if neg then x = -x end
return x
end
local function cappedAttribute(attribute)
local cap = 120
-- tahn is good because it is basically y=x close to zero and then it nicely compresses range.
return tahn(attribute / 100) * cap
end
-- main.lua:74
for attrName, attrValue in pairs(attributes) do
attributes[attrName] = formulaHelpers.cappedAttribute(attrValue)
end
There is also a bugfix - personality slider doesn't affect clothing
-- formulas.lua
clothing = function(item)
local Personality
Personality = rFPN(math.ceil(item.value / 10) + 10 + getConfig().Other.clothing + getConfig().Attributes.personality) -- added getConfig().Attributes.personality
return { Personality = Personality }
end,
I think that it would have been better to apply getConfig().X.Y modifiers after capping requirements. This way there is a common reference point: my requirements will be between 0 and X, and afterwards I shift them by Y points. One way to do this is to change rFPN function, but it is used in a lot of places. Another way is to rewrite most of the formulas.lua, manually decorating attributes computation with call to cappedAttribute.
I like this suggestion a lot.
Formulas aside, being able to toggle what needs requirements and what doesn't sounds really good.
I'll fold in your feedback in the next mod update.