Just tested it using damage_args.
This behaves the same as the posted bug. Source is a different game_action_causer than the FortChar this is being applied to
FortChar.Damage(damage_args{Source:=option{NPCSource},Amount:=Value})
This does not work when the Agent is a custom NPC (damage is not even applied to the FortChar). Custom NPCs dont have instigators?
FortChar.Damage(damage_args{Source:=option{NPCSource}, Instigator:=option{NPCAgent.GetInstigator()},Amount:=Value})