it seems like start damage modification does not wish to work with the ‘last created entity’ value, or at least i havent been able to make it work in my code.
i cut out the relevant code of my project and uploaded it here: PEV09
i added some debug code which will spawn a torb bot. if start damage modification would work, you should be able to do 10x damage to the bot, instantly killing it
There appears to be a something like a sync problem when you use Last Created Entity in some actions that have optional reevaluation (such as Start Damage Modification, Create HUD Text or Create In-World Text) and possibly in other actions (I’ve only tested those three).
If you temporarily store Last Created Entity in a variable, and then use that variable instead of Last Created Entity, it works for the damage modification actions (with reevaluation disabled).
In the objects that use strings, Last Created Entity will be displayed as empty string or as “Invalid String Arguments” when used as part of a string. (The same strings would display “0” when referring directly to Last Created Entity without storing it in a variable, because of the sync issue).
It seems to me, that - for dummy bots - Last Created Entity returns an entity type (and not a player type) that will be treated like a player type in some cases/actions, but not in others (that’s a separate issue on top of the sync issue).
The sync problem appears to be worse for Create In-World Text (compared to the other two actions I tested):
Setting the variable that stores Last Created Entity to False immediately after running a Start Damage Modification or Create HUD Text action (as the following action in the same rule) does not cause any sync problems (the data that is passed in is still Last Created Entity).
However, for the Create In-World Text action, there appears to be a short delay before the data is passed in, so the text object receives False instead of Last Created Entity (even though the action that sets the variable to False follows the Create In-World Text action in the action list).
I tested all this in a very simple script (things may behave differently in a more complex script).
Thank you for your answer. Ill try and test your fix right now!
EDIT: yes, this worked! for anyone reading this in the future, there is one issue:
this will NOT work when you save the dummy bot inside its own variables. saving variables to a dummy bot using ‘last created entity’ works fine, but it seems loading does not!
on that note… is it correct that 0% damage modification does not make one unable to damage another? it seems to lessen the damage but not remove it
EDIT EDIT: some testing seems to prove that 50% is the maximum for some reason… can anyone confirm this?
In most cases, setting it to 0% should set the damage to 0: no damage is dealt, Player Dealt Damage events won’t trigger and you won’t hear the usual hit sound when hitting an enemy, plus there is no feedback anymore whether a hit was a crit or not.
However, there is an internal minimum damage received value for all heroes that are under the effect of a default Overwatch damage reduction ability, such as Bastion’s Sentry or Tank configuration, Orisa’s Fortify, or the Nanoboost buff.
Unlike Set Damage Dealt, Start Damage Modification does not handle the damage modification purely on the damage dealt side and handles at least part of it on the damage received side where the hidden internal cap is applied.
Edit: A simple test script that shows the problem using Bastion’s Sentry mode and Ana’s Nanoboost as examples: 4Q4PZ
Is there any way to bypass this hidden cap?
For context, im spawning a bastion bot that has to go into sentry, and it needs to deal no damage to its creator and vice versa.
It would seem like damage modifications should be the solution but alas 
The only one I can think of in this case is healing the Bastion by Event Damage amount when it took damage from its creator.
Bastion’s passive, Ironclad, overrides damage modifications. This is a known bug.
this is not ideal, as damage is calculated first (meaning if the bastion is low enough he is killed by his owner instead). furthermore, this gives the owner ultimate charge.
but i suppose there is no other way around…
EDIT: i found a way around it. i make the bastion unkillable (1 hp remaining) then only kill it if a enemy dealt the damage
thank you for bringing that up! i hope its gotten to the attention of the developers and gets fixed soon 