Schall Modules


Various additions and changes about modules that may improve gameplay. Options including allow using productivity and quality modules with beacons, efficiency modules buff, enable multicomponent modules, etc. Multicomponent modules are expensive but powerful. Each of them offers the combined effects of multiple constituent modules, while still using only one single slot. (Locale: English, Deutsch, 正體中文, Português Brasileiro)

Content
1 year, 3 months ago
0.18 - 2.0
3.48K
Manufacturing

b [Pending] Effects not being applied correctly

1 year, 3 months ago

The new modules only apply the quality effect on the level 2 modules.
And I also found out that in some modules the efficiency effect does not alter with quality.
Meaning the effect on a normal module is the same with a legendary module.

1 year, 2 months ago

Can you list some specific examples (with numbers) for your statement?

This mod performs very simple summation up effects of component modules, and put a discounted sum in their resultant module.
This mod has absolutely no code to interfere what a legendary module being differed from epic or normal module. This part is purely handled by game engine.

Or are you using some mods that are messing up with quality tiers directly? That is the only possible way to cause that. (Where none of my mods have touched quality tiers yet.)

11 months ago

Sorry for the late reply.

The SE module 1 has no quality on energy consumption.
The SE module 2 has no energy consumption itself.
The EP module 1,2 and 3 have no energy consumption itself.
The SEP module 1,2 and 3 have no quality on energy consumption.
The SQ module 1 and 3 have no quality itself.
The SEQ module 1 has no quality on energy consumption and no quality itself.
The SEQ module 2 has no energy consumption itself.
The SEQ module 3 has no quality itself.
The EPQ module 1,2 and 3 have no energy consumption.
The SPQ module 1 and 3 have no quality itself.
The SPEQ module 1 and 3 have no quality on energy consumption an quality itself.
The SPEQ module 2 has no quality on energy consumption.

16 days ago
(updated 16 days ago)

i can confirm this is see the same result.

seems the math the mod uses to combine the modules results in +/-0%,
therefore its sets the bonus to 0 and causes the module to not have that effect.

in example of the SE modules the bonus and malus on quality just cancel each other out on tier 1 and 3 while tier 2 has a 1% higher bonus than the Speed mudules malus. making the modules basically pointless.

this happens for every module where the boni and mali cancel each other out.

to fix this the math would need to change or a general buff for combined modules that have a specific type in them.

Edit: further about quality: Since only positive* (negative for energy and pollution) values get boosted by higher rarities
a SQ module tier 3 only gets their speed boosted.
A SQ module 3 on legandary should have +70% Energy, +170% speed , 12.4% Quality.
(Quality module 3 : -5%speed, +17.4% quality, Speed moldule 3 : +70% energy + 175% speed -5% quality)
with the current approach it only has +70% Energy +157% speed.

in conclusion Quality throws a Big fat Wrench into this mod.

16 days ago
(updated 16 days ago)

i dont know if you want to have this but i wrote a different combine effects function for your MDlib and then replaced the corresponding snippet in MDpt.lua:
----------------MDlib.lua addition:-----------------------------------
function MDlib.combine_effects_advanced(effects_list)
local bucket = {}

for _, eff in pairs(effects_list) do
for stat, val in pairs(eff) do
if not bucket[stat] then bucket[stat] = {} end
table.insert(bucket[stat], val)
end
end

local final = {}

for stat, values in pairs(bucket) do
local pos_sum = 0
local neg_sum = 0

for _, v in pairs(values) do
  if v > 0 then
    pos_sum = pos_sum + v
  elseif v < 0 then
    neg_sum = neg_sum + v
  end
end

local penalty_factor = 0.25

if stat == "quality" then
  penalty_factor = 0.10
elseif stat == "consumption" or stat == "pollution" then
  penalty_factor = 1.0
end

final[stat] = pos_sum + penalty_factor * neg_sum

end

return final
end


----------------------------Change in MDpt.lua:----------------------------------
--this:
local effects_list = {}
for _, vm in pairs(components) do
if drm[vm] and drm[vm].effect then
table.insert(effects_list, drm[vm].effect)
end
end
item.effect = MDlib.combine_effects_advanced(effects_list)

--Replaces this: (line 100+)
for _, vm in pairs(components) do
if drm[vm] then
MDlib.add_module_effect_bonus(item.effect, drm[vm].effect)
end
end


just above
MDlib.multiply_module_effect_bonus(item.effect, efficiency)
return item


This gets pretty "close" to Vanilla combined stats with some losses (in my opinion acceptable since we have multiple "modules" in one module slot.
the goal was to create a method that "preserves" the main idea behind each module and have them stay positive so it can scale with rarity.

New response