Scriptname _60E_FS_Mystical_ThoughtImplosionSC extends ActiveMagicEffect  

;=====================================================================================
;              							EVENTS                  					 
;=====================================================================================

Event OnEffectStart(Actor akTarget, Actor akCaster)
	Int iChance = Utility.RandomInt(1, 100)
	
	If iChance < 33
		; Do nothing
	ElseIf iChance < 66 || akTarget.HasMagicEffect(_00E_FS_PsychosisWeaknessVisualME)
		PushBack(akTarget)
	Else
		Weaken(akTarget)
	EndIf
EndEvent

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

Function PushBack(Actor Target)
	MAGAlterationTelekinesisThrow.Play(Target)

	Float fPushStrength = PlayerREF.GetActorValue("Illusion") / 10.0
	If fPushStrength < 4
		_00E_FS_PsionicPushStaggerSP.Cast(Target, Target)
	Else
		PlayerREF.PushActorAway(Target, fPushStrength)
	EndIf
EndFunction

Function Weaken(Actor Target)
	Spell weaknessSpell
	If PlayerREF.HasPerk(_00E_Class_Sinistrope_P08_C_Illusionist)
		weaknessSpell = _00E_FS_PsychosisWeaknessSP
	Else
		weaknessSpell = _00E_FS_PsychosisWeaknessSP_NoSlow
	EndIf

	_00E_FS_Psychosis_Weakened.Show()
	
	Float fResist = PlayerREF.GetActorValue("Illusion") * 0.5
	
	weaknessSpell.SetNthEffectMagnitude(0, fResist)
	weaknessSpell.SetNthEffectMagnitude(1, fResist)
	weaknessSpell.SetNthEffectMagnitude(2, fResist)
	weaknessSpell.SetNthEffectMagnitude(3, fResist)
	weaknessSpell.SetNthEffectMagnitude(4, fResist)
	weaknessSpell.SetNthEffectMagnitude(5, fResist)
	
	weaknessSpell.Cast(Target, Target)

	Target.RemoveSpell(_00E_FS_PsychosisCounter_01_SP)
	Target.RemoveSpell(_00E_FS_PsychosisCounter_02_SP)
EndFunction

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

Actor Property PlayerREF Auto

Spell Property _00E_FS_PsionicPushStaggerSP Auto

Sound Property MAGAlterationTelekinesisThrow Auto

Message Property _00E_FS_Psychosis_Weakened Auto

Perk Property _00E_Class_Sinistrope_P08_C_Illusionist Auto
Spell Property _00E_FS_PsychosisWeaknessSP Auto
Spell Property _00E_FS_PsychosisWeaknessSP_NoSlow Auto
MagicEffect Property _00E_FS_PsychosisWeaknessVisualME Auto

Spell Property _00E_FS_PsychosisCounter_01_SP Auto
Spell Property _00E_FS_PsychosisCounter_02_SP Auto