Why won't my EOC increase the intensity of the effect it's supposed to?

So, I have an EOC that checks to see if a mutation is active.

If the mutation is active, then the player is supposed to gain a stacking effect and a morale boost. The EOC procs every 5 minutes to check that the effect is still active. The morale boost happens. The message displays.

But for some reason, the stacking never seems to happen, and I can’t figure out why.

The intensity_add_val is 1
The intensity_decay_tick is 900

There should be a slow but steady increase of the intensity to its max of 6 over time… but for some reason, only that part of the EOC doesn’t seem to function as expected.

Does anybody know why that might be? The only thing I can think of is that in the EOC, the effect give is listed as having a duration of permanent. Is that overriding the ability of the effect to increase or naturally decay?

Permanent will disable all duration changes, but I’m pretty sure you can still increment intensoty. Can you post the effect + EoC JSON?

Well, crap. I’m going to have to go back to the drawing board on durations… but that’s fine. I can just math out the appropriate numbers once I figure out how to make the darn thing work. I’ve been overusing PERMANENT a lot, anyway, I think.

Anyhow, this is the EOC I’ve been testing on:

{
“type”: “effect_on_condition”,
“id”: “dh_testeffect_controler”,
“recurrence”: “5 minutes”,
“global”: true,
“run_on_npcs”: true,
“condition”: “condition”: { “or”: [
{ “u_has_trait”: “DH_TEST_MUTATION_A” },
{ “u_has_trait”: “DH_TEST_MUTATION2_A” }
],
“effect”: [
{ “u_message”: “Testing in progress. Please stand by.” },
{ “u_add_effect”: “DH_Example_Effect” , “intensity”: 1, “duration”: “PERMANENT” },
{ “u_add_morale”: “morale_feeling_good”, “bonus”: 10, “max_bonus”: 100, “duration”: “30 minutes” }
],
“deactivate_condition”: { “not”: { “u_has_trait”: “DH_TEST_TRAIT_X” }
},

And then this is the testing effect:

{
“id”: “DH_Example_Effect”,
“type”: “effect_type”,
“name”: [ “Stage 1”, “Stage 2”, “Stage 3”, “Stage 4”, “Stage 5”, “Stage 6”, ],
“desc”: [ “It begins”, “It continues”, “It continues on”, “It continues continuing”, “Continuation ensues”, “The continuest” ],
“show_intensity”: true,
“max_intensity”: 6,
“int_add_val”: 1,
“int_decay_step”: -1,
“int_decay_tick”: 900,
“int_decay_remove”: true,
“base_mods”: {
“per_mod”: [ 0 ],
“int_mod”: [ 0 ]
},
“scaling_mods”: {
“per_mod”: [ -1 ],
“int_mod”: [ 1 ]
},
“rating”: “mixed”
},

A lot of my project requires me getting this particular condition/effect combo to cause a building effect managed by mutation use… so any help figuring out why the effect’s intensity doesn’t increase would be appreciated.

I’m going to kick myself if it turns out to be something as simple as the darn permanent duration…

I should probably state, for the record, that I have almost entirely learned how to do any of this by cannibalizing and reverse engineering other JSON files, as well as periodic skimming of the available online resources for how to use certain things.

I am extremely inexperienced and unfamiliar with what I’m doing… the fact I got it to work at all has been very exciting.

This is the way. Though do read the actual y’know, documentation in the /doc folder on github :stuck_out_tongue:

At a glance that looks like it should do what you want it to, so permanent would be my hunch. If you want the effect to stick around you can also just remove int_decay_remove, that way it will persist on the lowest level until the duration runs out. The other possibility is that EoC effect adding overwrites the intensity instead of causing stacks, in that case you need to redo it using int_dur_val (or something like that, the argument to calculate the intensity directly from the remaining duration).