Following up the previous post, I think I've located the source of the error.
The adjustments for difficulty on damage is done in functions.rpy and the code that calls the get_modified_damage function in functions.rpy is located in classes.rpy. Regular damage is processed as usual as above.
Heals are also treated like damage but there's a part of code in the receive_damage function in classes.rpy that prevents the code from calling the get_modified_damage function. That part is under '#handle healing' and triggers if wtype == "Support".
In beta11 and previous betas, this function was set before the part that calls the get_modified_damage function and correctly called, thus preventing Difficulty from influencing heals.
In beta12, this '#handle healing' is:
1)set AFTER the get_modified_damage function is run
2)no return statement at the end of the #handle healing code
I cut out the #handle healing segment, including the parts that would run after triggering wtype==Support, pasting it before get_modified_damage function, leaving the else part (for cases not satisfying wtype==Support) to go through regular damage modification and hp reduction. Tried leaving out returns, seems workable still.
Final code:
#handle healing
if wtype == 'Support':
BM.battle_log.append("{0} is healed for {1} HP".format(self.name, str(int(damage))))
self.hp = increment_attribute(self,'hp',int(damage))
if self.hp > self.max_hp:
self.hp = self.max_hp
else:
#difficulty fudging
damage = get_modified_damage(damage,self.faction)
store.damage = damage #the global variant is used by the health_animation screen
BM.battle_log_insert(['attack'], "{0} inflicts {1} damage to {2}".format(attacker.name, damage, self.name))
self.hp -= damage
Retested and it seems to work now. Liberty now heals for 300, not 75 or 435. Also tested damage to make sure I didn't break something else. Seems ok.