Scriptname _00E_A1_FlashpowderExpSC extends activemagiceffect  

Import _00E_TalentLibrary
Import Utility

Event OnEffectStart(Actor akTarget, Actor akCaster)

    If !akTarget.HasSpell(_00E_AbBleedoutSP)
        AliasFound = False
        Victim = akTarget
        PutIntoAlias(Victim)
        akTarget.SetGhost(true)
        Wait(GetWaitDuration())
        iAliasToFill.Clear()
        _00E_A2_FlashpowderGlobal.SetValueInt(0)
        akTarget.SetGhost(false)    
        akTarget.StopCombatAlarm()  
        Victim.EvaluatePackage()
    EndIf
    
EndEvent


;=====================================================================================
;                                       FUNCTIONS                                    
;=====================================================================================

Function PutIntoAlias(Actor iActor)

    if !AliasFound && !iActor.HasSpell(_00E_AbBleedoutSP)
        int iAliasIndex = A1_Flashpowder_VictimArray.Length - 1
        
        while (!AliasFound && iAliasIndex >= 0) && !(iActor.HasSpell(_00E_AbBleedoutSP))
            
            iAliasToFill = A1_Flashpowder_VictimArray[iAliasIndex]
            
            If iAliasToFill.ForceRefIfEmpty(iActor)
                AliasFound = True
            Else
                iAliasIndex -= 1
            EndIf
            
        EndWhile
        
    EndIf
    
EndFunction

float Function GetWaitDuration()

    int iDurationIndex = GetPlayerTalentLevel(_00E_Class_Manipulation_P05_Talent_Rift, _00E_Class_Manipulation_P05_Talent_Rift2, _00E_Class_Manipulation_P05_Talent_Rift3) - 1
    Float iWaitDuration = _00E_A1_FlashpowderSP.GetNthEffectDuration(iDurationIndex)
    Return iWaitDuration
    
EndFunction

;=====================================================================================
;                                       PROPERTIES                                       
;=====================================================================================

Actor Victim
bool AliasFound
ReferenceAlias iAliasToFill

Spell Property _00E_A1_FlashpowderSP Auto
Spell Property _00E_AbBleedoutSP Auto

GlobalVariable Property _00E_A2_FlashpowderGlobal Auto

Perk Property _00E_Class_Manipulation_P05_Talent_Rift Auto
Perk Property _00E_Class_Manipulation_P05_Talent_Rift2 Auto
Perk Property _00E_Class_Manipulation_P05_Talent_Rift3 Auto

ReferenceAlias[] Property A1_Flashpowder_VictimArray Auto