Hello. I have the next python class for playable and npc characters:
class Character:

    def __init__(self, char_data):
        self.name = char_data["name"]
        self.hp = char_data["hp"]
        self.damage = char_data["damage"]  

I want you to implement Action class which will take response for different interactions between characters (like heal, dealing damage and etc.). We are using data-drive approach, so class should be very general and powered by some config files.
Example of actions we may like to implement:
1. Deal damage to target.
2. Heal actor.
3. Heal target.
4. Deal damage to target based on portion of target's health.
5. Deal damage to target based on portion of actor's health. Actor should take some damage too.
6. Deal damage to target and heal actor for portion of that damage (life leech)
Theese are not all actions we are going to implement, just an example of how general should be action class and how powerful should be our configuration system.
Feel free to implement simple DSL if needed to solve this task