Address exploit of container dump module#1550
Address exploit of container dump module#1550RedRafe wants to merge 2 commits intoRefactorio:developfrom
Conversation
| local cause = event.cause | ||
| if not (cause and cause.valid and cause.force and cause.force.name == 'player') then | ||
| return | ||
| end | ||
|
|
||
| local handler = cause_by_type[cause.type] | ||
| local actor = handler and handler(cause) | ||
| if not (actor and actor.valid) then | ||
| return | ||
| end | ||
|
|
||
| local character = actor.character | ||
| if not (character and character.valid) then | ||
| return | ||
| end | ||
|
|
||
| actor.print('The ore fights back!', { color = { 255, 128, 0 } }) | ||
| character.die(game.forces.neutral) |
There was a problem hiding this comment.
I wonder if the dying part should be configurable. This seems more like a diggy danger ore issue than a regular danger ore issue. Part of me feels that killing the player is quite harsh, but the only alternative I can think of is spilling the items instead. Though I suppose it's odd for players to accidentally destroy containers, outside of using explosives to kill biters and the container getting caught in the crossfire.
There was a problem hiding this comment.
Experience of the last X months is: in regular DO almost no-one ever kills a container (mainly because ppl know it would spawn "useless" coal to mine, and also because there's no real need to get rid of stuff to make room). So feature is pretty much irrelevant.
For Diggy, the infinite resource loop is a more relevant concern. We had in DO the powered-warehouses, and they would start spilling content on ground when left unpowered. That made everyone angry at the mechanic cuz it punished the whole party rather than the single griefer/offender.
IMO, neither killing nor spawning ore on a 1x1 or NxN area is an harsh punishment, as respawning is a matter of 10s and mining out the ore tiles is more an annoyance than a real issue.
It only acts as a "warning" after 1st attempt, since it wastes a bit of player time and cannot be automated, players wont do it again ever after.
I dont think this feature is triggered enough to cause any issues among regular players. Maybe griefers would be the only ones experiencing a few deaths from time to time, but it's still unusual to get kills in DO or to see players blow up chest at all. A game can easily finish with 0 deaths total (no trains, peaceful,...).
If so, we can still revert the change again and turn it down a notch.
There was a problem hiding this comment.
Experience of the last X months is: in regular DO almost no-one ever kills a container (mainly because ppl know it would spawn "useless" coal to mine, and also because there's no real need to get rid of stuff to make room). So feature is pretty much irrelevant.
As in the feature works in it's current form and doesn't need changing for DO?
IMO, neither killing nor spawning ore on a 1x1 or NxN area is an harsh punishment, as respawning is a matter of 10s and mining out the ore tiles is more an annoyance than a real issue.
For large maps it can be more than a 10s inconvenience as it's also the time to get back to your corpse. Plus it would interrupt what you are doing if you are in the middle of building something while clearing chests. Maybe I am over reacting about killing the player. But it sets the tone for the map, particularly for new players. I could imagine a new player to DO would naturally try to destroy containers to take advantage of the DO game mechanics. Staying alive makes it easier to see/notice the spawned ore. I'd be more accepting of killing players in diggy as that is inherently a more dangerous map (DO normally has bitters to peaceful).
Though thinking about this again, there are some other solutions we could explore.
- Don't use the container module for diggy DO. The mechanic of the map are different for diggy around clearing space and resource scarcity. So maybe this feature just isn't needed.
- For diggy DO lower the amount of coal spawned to make the exploit not viable. Again as the mechanics for diggy are different a fraction of the ore spawn is still inconvenient without being able to exploit freeing space as that happens mostly through mining rocks.
- Change the market ratio to make the expolit not viable.
- Combination of 2 and 3.
There was a problem hiding this comment.
For once, I find myself in disagreement with the concerns raised.
I'll try to explain the issue so a better solution can be found:
-
Fo regular DO, this feature in any of it's implementations has little to no impact as no chests are ever killed in a DO run. Neither to make space, nor to exchange resources to coal, nor by accident.
-
For DiggyDO, Diggy used a separate DO logic, but for the sake of reusing and maintaining, it was switched to use DO's files & implementation around when both scenarios got heavily refractored at the end of 1.1 and 2.0 porting.
The issue with Diggy is that long lasting maps generate absurd resource imbalance and players started to blow up chests of whatever was overflowing to keep the base running. To address this mechanic, 3 features were added back in few versions ago:
- disabling mining prod (from DO)
- container dump (from DO)
- market chest (new diggy feature)
The combination of those 3 was meant to incentivize players into using all resources as best as possible; and then if really needed, trade excess at bad ratios instead of voiding it in chests (instead of storing 420M ores in bot network).
Players later realized that without mining prod, diggy needed a lot of expansion and manual work to feed the factory. So the exploit to kill chest of cables, mine coal, exchange for copper &brevraft in cable loop was found to generate infinite stream of resources.
For latest Diggy version, exchange rates have been raised from 2:1 to 5:1 to offset the prod3s chain already - however - since constantly expanding manually was deemed too tedious for large SPM goals - mining prod has been introduced back. Now no value of exchange rate can offset the productivity gained from all the steps involved. So I nerfed the infinite loop by basically debouncing the loop by killing poster when it destroys a chest.
Lore-wise, I personally found it very fitting with the danger of ores theme, and penalty was not received as too harsh neither in discussion with players nor in tests with public server.
However, if a better solution can be found, I'm open to it. I haven't quite found a fix to address all these issues so far
Issue:
Container dump module of Danger Ores can lead to endgame exploit to generate infinite resources from nothing by:
Solution: