Update/rework of the ATTACK part's hitback damage


  • Dev Team

    @mrfaul Honestly I tend to agree with this one.

    ☺


  • Honestly, I think we used "honestly" to much in this thread 🤣


  • TMB

    I agree with that thread overall.
    Alternative strike back rules that'd come to my mind are :

    • Full strike back output is split across all attacking creeps. The more there are, the less they individually take.
    • No strike back if the creep is already attacking or performs another blocking action. (E.g healing)


  • @mrfaul How do you implement a version of it using the event log? Currently you can hitback e.g. 3 creeps on the same tick (and attack 1), and I don't see how using the event log can replicate this functionality.



  • @wtfrank I mean: pick the target that bugs you the most. If you don't react, your fault.
    I don't like that the creep is able to deal damage to multiple creeps in one tick by doing nothing.
    It results in former mentioned instant death situations, and those don't feel fair.
    Besides this should also come with a significant amount of callbacks who eat performance and may leave leaks/runaways.

    Regardless this is definitely a mechanic that needs a revisit.
    I personally root for its removal since I don't like the former mentioned nerfs either.
    If this gets nerfed I'd like suggest the echo would be equal in strength if the attacked creep has the necessary amount of attack parts.(Orlets solution)



  • @mrfaul said in Update/rework of the ATTACK part's hitback damage:

    It results in former mentioned instant death situations, and those don't feel fair.

    Why's that not fair? Doesn't it just mean that you made a decision to attack a creep with melee parts and you got the calculation wrong, or didn't do the calculation correctly? Just the same as if you walk towards a tower but die because you fail to calculate correctly the damage that you'll take or the healing that you'll receive?



  • @wtfrank It doesn't feel fair because the enemy creep is able to deal a multitude of damage in a single tick.
    And it is kinda unintuitiv since most of all actions can only be done once, however this mechanic sidesteps this completely by saying it's the attackers fault.



  • @mrfaul Damage reflection is a really common mechanic E.G. power banks in this game, Path of Exile, World of Warcraft, hundreds of other games...

    Should we nerf power banks too...



  • @tigga well I was aiming at more extreme examples, the lower the difference in individual creep power, the lesser the effect is. But let's do some math, shall we?

    The Setup:

    • Attackers: 3× 10m10a creeps. 2000 hits each, 300 hits per attack.
    • Defender: 1× 30m30a creep. 6000 hits, 900 hits per attack.

    The Now:

    1. Attackers hit defender for 3×300 hits, 900 total, each taking 900 hits of damage back. Defender hits one of the attackers, dealing 900 hits of damage more, receiving extra 300 back. Now we have 2× attackers at 1100 hits (full attack power), and one at 200 hits (down to 60 hits attack). Defender is down to 4800 hits (6000-1200), full attack power. 2.Attackers hit defender again, for 2×300 hits + 1×60 hits, 660 hits total, each taking 900 hits of damage back. One attacker dies in the process, other two get reduced to 200 hits and 60 hits attack power. Defender hits and kills another attacker, getting 60 more damage in return. We now have defender down to 4080 hits (still full attack power), one attacker at 200 hits (60 hits attack power), and 2× tombstones.
    2. Last attacker valiantly .attack()s the defender, hitting for 60 more hits, receiving 900 hits hitback and dying in a blaze of glory. Defender is now down to 4020 hits (full attack power) and is surrounded by nothing but tombstones.

    With Change:

    1. Attackers hit defender for 3×300 hits, 900 total, each taking min(300, 900) = 300 hits of damage back. Defender hits one of the attackers, dealing 900 hits of damage more, receiving extra 300 back. Now we have 2× attackers at 1700 hits (full attack power), and one at 800 hits (down to 240 hits attack). Defender is down to 4800 hits (6000-1200), full attack power.
    2. Attackers .attack() again, hitting for 2×300 hits + 1×240 hits, taking 300 hits of hit-back damage. One attacker is now down to 500 hits (150 hits attack power). Defender attacks the same creep again, dealing 900 hits more damage and taking 150 hits of hit-back damage, but killing it in the process. Now the attackers are down to 2× creeps at 1400 hits (full attack power), one defender at 3810 hits (full attack power), and 1× tombstone.
    3. Attackers hit defenders once more for 2×300 hits, and taking 300 hits of damage back. Defending creep hits one of the attacking creeps for 900 hits and takes 300 more damage. Attackers are now down to 1 creep at 1100 hits (full power) and one at 200 hits (60 hits attack power). Defender is down to 2910 hits (and 870 attack power, due to chipping into ATTACK parts now).
    4. Attackers continue, hitting for 300 + 60 hits, and taking 870 hits of damage back. One attacker dies, another one goes down to 800 hits and 240 attack power. Attacker is down to 2550 hits (750 attack power), it hits the remaining creep for 750 hits and takes 240 damage back. The end result is one attacker at 50 hits and 0 attack power, defender at 2310 hits (690 attack), and 2× tombstones.
    5. Defender finishes off the last of the attackers.

    Once again, in the second scenario the larger creep suffered more damage but still emerged victorious with a sufficient buffer of hits to warrant its size.

    @MrFaul I did entertain this idea, however, I feel like completely scrapping the hit-back mechanic of ATTACK part would detract from the variety of the game, and break a lot of code that relies on its existence (point brought up by @Tigga and @wtfrank on slack during discussions). Changing the cap would still have those tactics viable (but might require some tweaking in the code).



  • Honestly :), I'm OK with the idea of scrapping hitback from ATTACK parts.

    Another option. Add a new creep intent called .defend() that enables hitback, then keep the current behavior and values. I'm not sure whether this should be concurrent with .attack(). This feels more fair as the attacked creep is no longer getting free damage. It might help the devs too as the new intent should lighten server load.

    Currently I only count on hitback for SK mining (theoretically, I don't actually run that code) and on healers so naive attackers will eventually kill themselves. The .defend() is only a little more code for my healers. Assuming concurrent .defend() and .attack() the SK creeps should keep working, though they will cost more intents which is why I and others don't run them in the first place.



  • @deft-code said in Update/rework of the ATTACK part's hitback damage:

    Honestly :), I'm OK with the idea of scrapping hitback from ATTACK parts.

    RIP a lot of people's source-keeper killers for minimal benefit



  • @wtfrank said in Update/rework of the ATTACK part's hitback damage:

    @mrfaul Damage reflection is a really common mechanic E.G. power banks in this game, Path of Exile, World of Warcraft, hundreds of other games...

    Should we nerf power banks too...

    First creeps are not a powerbank (and those deal only half the attack dmg),
    second I can't remember any RTS game that had a damage reflection besides for some special/unique hero characters and third,
    most damage reflection items I know deal only very weak damage and not your total attack power,
    mostly only a percentage of the attackers dmg. (granted those insta-kill the low level stuff but last time I checked screeps wasn't a dungeon crawler)

    deft-codes suggestion of the defend intend is also a viable option. I just don't like the fact that the bigger creep is able to attack multiple targets for free.
    I don't care that SK rooms are broken with that change, you are supposed to work for that stuff anyway.



  • After reading through this thread I had a couple of ideas as well.

    1. Modification to Orlet's proposal - Cap the amount of parts used for hitting back based on total amount of atk parts the defending creep carries. Example: 3x 3m3a creeps attacking a single 7m7a creep. The first creep would get hit back with 3 attack parts, the second would get hit back with 3 attack parts and the third would only get hit back with 1 attack part. The creep is unable to hit back with more attack parts than it carries. It can still perform an attack action with all 7 parts.

    2. Different Modification to Orlet's proposal - Keep the cap of limiting attack parts based on the defenders total attack parts carried but only allow them to attack with the left over parts. In the above example the defending creep would not be able to attack anything because all of it's attack parts are busy hitting back. Say our defending creep was bumped up to a 10m11a creep though. The first creep would get hit back with 3 attack, the second creep would get hit back with 3 attack, and the third would get hit back with 3 attack, leaving only 2 attack parts left for the creep to use wherever it wants.

    3. Make hitting back exclusive with Attacking - Add the hit back mechanic into the priority list of simultaneous execution of creep actions. I would put it in between "Harvest" and "Attack". This way you have to choose between attacking or defending yourself. An argument could be made for hitting back with all attack parts or having them limited like Orlet's suggestion or my modifications of it.

    4. Re-purpose the Tough Body Part - With this suggestion we would remove the hit back of attack parts entirely and move that over to the Tough body part. This would function like the "Thorns" stat in Diablo and other similar games/mechanics. This could hit back every target or limit it to the number of Tough body parts the creep owns similar to my suggestion 2. Obviously cost and damage values would need to be tweaked.

    The idea behind these suggestions is that you shouldn't get something for nothing in this game. Currently the hit back mechanic is free damage for no CPU cost, and it highly favors the larger creep.



  • @kyralee said in Update/rework of the ATTACK part's hitback damage:

    Currently the hit back mechanic is free damage for no CPU cost, and it highly favors the larger creep.

    Well your opponent is paying cpu cost to receive the damage 😆



  • @wtfrank I can't tell are you just trolling right now?
    But I guess you see now my gripe with this approach.

    The only people who you should pay to hit you, are working in the oldest trade in the world.
    Well... only if that floats your boat 😆



  • There's something I think doesn't make sense about the hit back mechanic. Either attack parts double as passive damage parts (like thorns) or hitting back is the attacked creep actively counter attacking. If it's passive, then the damage should be proportional to the attacker's damage (i.e. the harder you punch a thorn, the more it hurts you). If it's active, then it should be limited to one per tick. You don't get 9 times faster at punching people because there are 8 people punching you. Whether it's worth making a breaking change to this mechanic and whether that change would improve the game, i don't know.

    👍


  • @kyralee said in Update/rework of the ATTACK part's hitback damage:

    1. Re-purpose the Tough Body Part - With this suggestion we would remove the hit back of attack parts entirely and move that over to the Tough body part. This would function like the "Thorns" stat in Diablo and other similar games/mechanics. This could hit back every target or limit it to the number of Tough body parts the creep owns similar to my suggestion 2. Obviously cost and damage values would need to be tweaked.

    Newbie, here, but FWIW I like this idea of ATTACK doing only what it says on the tin, and either turning TOUGH turning into THORNS, or adding a new part that reflects, say, 10% of damage (at a greater cost than TOUGH).