public UniquePowerModifierInfoData GetInfo()
    {
        UniquePowerModifierConfig uniquePowerModifierConfig = uniquePowerModifierData.GetUniquePowerModifierConfig();

        return(new UniquePowerModifierInfoData
        {
            name = uniquePowerModifierConfig.DisplayName,
            description = uniquePowerModifierConfig.Description,
            additionalInfo = new string[] {
                "Power: " + Math.Abs(uniquePowerModifierData.CurrentPower),
                "Duration: " + uniquePowerModifierData.DurationLeft + "/" + uniquePowerModifierConfig.UpmDurationMax,
                "Origin: " + uniquePowerModifierData.GetOriginDisplayName() + " " + uniquePowerModifierData.UniquePowerModifierID.modifierOrigin
            }
        });
    }
    //public override void Apply(InventoryItem inventoryItem, PartyUnit dstPartyUnit, UniquePowerModifierConfig uniquePowerModifierConfig, UniquePowerModifierID uniquePowerModifierID)
    //{
    //    throw new System.NotImplementedException();
    //}

    public override void Trigger(PartyUnit dstPartyUnit, UniquePowerModifierData uniquePowerModifierData)
    {
        Debug.Log("Trigger " + uniquePowerModifierData.GetOriginDisplayName() + " UPM");
        // Apply DoT (UPM) current power as damage to destination unit
        dstPartyUnit.UnitHealthCurr += uniquePowerModifierData.CurrentPower; // current power is negative if it is damage dealing ability
        // Decrement DoT current duration
        uniquePowerModifierData.DurationLeft -= 1;
        // note: order is important. Trigger should be last, because it may also remove UPM status icon
        // Trigger on duration changed event
        //uniquePowerModifierDurationHasChangedEvent.Raise(uniquePowerModifierData);
        Events.DurationHasChangedEvent.Raise(uniquePowerModifierData);
        // Trigger on UPM has been triggered
        //uniquePowerModifierHasBeenTriggeredEvent.Raise(uniquePowerModifierData);
        Events.HasBeenTriggeredEvent.Raise(uniquePowerModifierData);
    }
 public override void Trigger(PartyUnit dstPartyUnit, UniquePowerModifierData uniquePowerModifierData)
 {
     Debug.Log("Trigger " + uniquePowerModifierData.GetOriginDisplayName() + " UPM");
     // .. just in case
     ValidateTriggerCondition(uniquePowerModifierData);
     // Decrement current duration
     uniquePowerModifierData.DurationLeft -= 1;
     // note: order is important. Trigger should be last, because it may also remove UPM status icon
     // Trigger on duration changed event
     //uniquePowerModifierDurationHasChangedEvent.Raise(uniquePowerModifierData);
     Events.DurationHasChangedEvent.Raise(uniquePowerModifierData);
     // Trigger on UPM has been triggered
     //uniquePowerModifierHasBeenTriggeredEvent.Raise(uniquePowerModifierData);
     Events.HasBeenTriggeredEvent.Raise(uniquePowerModifierData);
 }
 public override void Trigger(PartyUnit dstPartyUnit, UniquePowerModifierData uniquePowerModifierData)
 {
     Debug.Log("Trigger " + uniquePowerModifierData.GetOriginDisplayName() + " UPM");
     // Apply upm current power to destination unit
     dstPartyUnit.UnitHealthCurr += uniquePowerModifierData.CurrentPower; // current power is negative if it is damage dealing ability
 }