Thorium



  • Thorium

    Purpose of feature

    Bring interesting mechanic of Season5 into mmo, while keeping balance, and adding new interesting tactics for players to utilize. It's designed to have minimal-to-none impact on existing bots. Numbers are not always backed by math, and are proposed values.

    Thorium

    What is it ?

    A new Mineral that randomly spawns in all rooms.
    Every tick its mineralAmount decays at rate Math.ceil(mineralAmount / 1000)
    Possible to be lucky and have multiple Thorium nodes.

    Where is it ?

    Spawns inside walls at the depth 3+.
    (optional - deeper in wall it is, bigger its initial mineralAmount)
    Can be found via existing FIND_MINERALS constant.
    Players need to build tunnels to extract it.

    Potentially it can "break" bots that use .find(FIND_MINERALS)[0] - still - not permanently given Thorium mineral would decay over time.

    Why like this:

    requires more advanced code to obtain it, does not break existing bots, introduces new mechanics, energy sink

    What is special about thorium ?

    As in Season 5 :
    Both creeps and decayable structures, such as roads and containers, experience accelerated aging and decay. The formula used to calculate this increased decay is Math.floor(Math.log10([total Thorium on the tile]))

    Additionally, it cannot be transferred by Terminal in any form.
    .send() and .createOrder() method return ERR_INVALID_ARGS if Thorium is passed as resource

    What thorium is for ?

    Refined in Factory to Refined Thorium

    Refined Thorium

    What is special about Refined Thorium ?

    Additionally to aging and decay, it also causes everything on shared tile take direct damage to hits, equal to: Math.floor(Math.log10([total Refined Thorium on the tile]))

    Scenario-1 : creep carries 1000 Refined Thorium on road under rampart:
    - creep takes 3dmg to hits and loses additional 3TTL
    - road takes 3dmg to hits and its decay timer is decreased by 3
    - rampart takes 3dmg to hits and its decay timer is decreased by 3
    
    Scenario-2 : Storage with 1000 Refined Thorium with Rampart on-top:
    - storage takes 3dmg to hits
    - rampart takes 3dmg to hits and its decay timer is decreased by 3
    

    Additionally, it cannot be transferred by Terminal in any form.
    .send() and .createOrder() method return ERR_INVALID_ARGS if Refined Thorium is passed as resource

    How to get it ?

    Factory takes 5 Batteries and 1 Thorium to output 1 Refined Thorium, at 10 cooldown.
    The more Thorium in facory, the bigger the output of produce() according to
    For every 5 000 Thorium in factory the output is increased by 1, with ceiling of 5.
    Factory also receives direct dmg to hits equal to 5 * output

    What that means:

    On a tick which Factory with 25010 Thorium stored, produces Refined Thorium
    - Factory produces 5 Refined Thorium out of 1 Thorium and 5 Batteries
    - Factory gets 5 * 5 dmg directly to its hits as result of .produce()
    - Factory gets 4 dmg due to stored Thorium
    

    Why like this:

    more advanced production chain, sink for energy, requires more code to prevent factory Meltdown

    What Refined Thorium is for ?

    Can be used to boost creeps with Labs

    • Labs take damage to hits if they contain Refined Thorium
    • All creep body is boosted by Refined Thorium
    • boosting cost is equal to 3 Refined Thorium and 10 energy per bodypart
    • if there is not enough Refined Thorium / Energy - creep is not boosted
    • every bodypart has it's effectiveness increased by 40% (on-top of boosts, except TOUGH)
    • every creep bodypart takes dmg calculated by (1 * applied_boost_name_length)
    • damage is applied AFTER preheal BEFORE any other damage
    example.
    Creep with 10 T3 MOVE, 10 T2 HEAL, 10 T1 RANGED_ATTACK, 10 TOUGH and 10 T0 ATTACK
    
    It takes every tick:
    1 * Math.max(1, XZHO2.length) dmg to MOVE parts
    (5dmg per part, 50dmg evenly across 10 parts)
    
    1 * Math.max(1, LHO2.length) dmg to HEAL parts
    (4dmg per part, 40dmg evenly across 10 parts)
    
    1 * Math.max(1, KO.length) dmg to RA parts
    (2dmg per part, 20dmg evenly across 10 parts)
    
    1 Math.max(1, ''.length) dmg to ATTACK parts
    (1dmg per part, 10dmg evenly across 10 parts)
    
    TOUGH parts do not take any damage
    

    Why like this:

    Backwards-compatible, adds another layer to explore for players, by allowing creeps to be more performant at the cost of Refined Thorium and hits. While combat performance is boosted, attacker needs to take into account damage that every bodypart receives. Same for creeps that will try to outrepair damage. It Should help break the "Defender" advantage but more calculation would be needed. It can be also utilized for "peaceful" purposes as normal-boost alternative, for haulers/miners/etc

    Can put into Nuker instead of Ghodium

    Nuker:

    • takes dmg to hits due to containing Refined Thorium

    Nuke:

    • Original nuke behavior applies, except for modification to damage and area
    • Damage and area are modified to
    20m in center
    1m in 3x3
    100k in 5x5
    20k in 6x6
    5k in 7x7
    
    • Additionally : Thorium pile is left on remains of killed creeps, equal to Math.floor(creep.hitsMax/100) (50 Thorium max per creep)
    • Additionally : Room receives decay status which, for 200 ticks, causes every structure/creep take dmg and decay equal to 1k Refined Thorium being in its tile (3dmg/tick). Multiple nukes stack both damage and duration

    Why like this:

    Backwards-compatible, makes nuke stronger for impact-center but not game-breaking, can makes breaking room easier due to damage-over-time that is applied to structures, makes rebuilding ramparts not possible during that time



  • I think this idea is really good and well thought out. I'd agree we might want someone to math-hammer some of the numbers for balance, but I think you've captured the essence of how thorium could be cool.

    I'd like to add that we could have the REACTOR structure from the season, that provides some kind of economic boost. Most of your above use cases are military.

    Maybe the reactor produces power/energy. or maybe it buffs all your structures. Hard to not have a cross-over with power creeps here though.

    I also think that the nuker should still need Ghodium as this is a boost. It might also be easier to add to existing store code, to have 3 resource slots instead of 1 special slot that holds G/T.



  • for now i want to keep it as simple as possible - hence using Factory instead of introducing new structure.

    I'm bit wary of the Thorium -> Energy conversion, since it's really easy to overflow it (energy) at later rcls, and adding yet-another way is imo pointless.

    uses are not entirely military ones, because if someone is having too much of Refined thorium, it can be used to increase Upgrade/Harvest/Carry/Move/Build.

    For Nuker - could be as addition, but that complicates logic.
    You'd need either
    300k energy and 5k ghodium and no Refined Thorium
    or
    300k energy and 5k ghodium and 5k Refined Thorium
    meaning nuke with 1 Refined Thorium should not launch or would launch "normal" nuke


  • TMB

    It's a cool concept, well thought out, and yet I really don't like it.

    Nukes are already really powerful for what they are: they need to be nerfed, not buffed. The whole thing with nukes is that they are absurdly easy to code for, and in a coding game, that should be punished.

    Plus adding another mineral would break like 90% of people's base planning and mineral harvesting code. This isn't just potential, and the fact that it decays does little to quell the harm. I'm all for changing the game, but if you're adding new stuff, make sure only zombies (very inactive players) are the ones who get harmed.



  • @marvintmb it is true that nukes are simple for attack code. However, obtaining and managing thorium does appear risky, and for inexperienced coders, it is going to lead to factories blowing up, buildings getting destroyed etc. Therein lies a challenge.

    maybe it could be less of a code break to make it a deposit, not a mineral


  • TMB

    I'd be alright if it becomes a deposit. I think that is a good solution 🙂



  • @marvintmb for a new nuke you'd need code to:

    • build tunnels in time to manage to harvest Thorium (min 150k energy, depending on Thorium mineralAmount it might need build and harvest boosts)
    • store Thorium somewhere (afaik you cannot build container in wall, so poor miner will have to have carry, cutting his TTL by half)
    • buy Batteries/process energy in factory
    • process Thorium in factory without breaking it
    • store Refined Thorium somewhere without it breaking the structure

    Since you cannot obtain thorium in any other way one has to code for all that. You cannot just pop a nuker, buy ghodium/minerals for it and throw into labs.

    This should also prevent new-players from just spamming new nukes - and to utilize them properly would also require more advanced code than send nuke and follow-with quad, since said quad would also get the decay once entered the room.

    Deposits were meant for highways only, but if that would make it less-breaking then ok.

    Plus adding another mineral would break like 90% of people's base planning and mineral harvesting code that's because ppl were lazy with assuming there will be always one mineral despite find() always returning array (which was a case in Season 5). Zombies would/should hobble-around with maybe building a road into a wall, active players should be able to survive with a simple change given month-or-three notice before