Scriptname _00E_FS_DreameaterSC extends activemagiceffect  

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

Event OnEffectStart(Actor akTarget, Actor akCaster)
	Float fMagnitude = Self.GetMagnitude()
	Float fBonusDamage = fMagnitude * akCaster.GetActorValue("Illusion") / 3.0
	If fBonusDamage < fMagnitude
		fBonusDamage = fMagnitude
	EndIf

	; Sneak bonus
	If IsExtraDamageApplicable(akTarget, akCaster)
		Float fStealthModifier = Game.GetGameSettingFloat("fCombatSneakBowMult")
		If akCaster.HasPerk(_00E_Class_Infiltrator_P03_B_HeartShot)
			fStealthModifier = fStealthModifier * _00E_Class_Infiltrator_P03_B_HeartShot.GetNthEntryValue(0, 0)
		EndIf
		If akCaster == PlayerREF
			_00E_FS_FakeStealthMsg.Show(fStealthModifier)
			UISneakAttackM.Play(akCaster)
		EndIf
		fBonusDamage = fBonusDamage * fStealthModifier
	EndIf

	; Target's magic resistance
	Float fMagicResist = akTarget.GetAV("MagicResist")
	If fMagicResist > 0
		fBonusDamage = fBonusDamage * (100.0 - fMagicResist) / 100.0
	EndIf
	
	
	akTarget.DamageAV("Health", fBonusDamage)

	If akTarget.HasMagicEffect(_00E_FS_PsychosisWeaknessVisualME)
		akTarget.DispelSpell(_00E_FS_PsychosisWeaknessSP)
		akTarget.DispelSpell(_00E_FS_PsychosisWeaknessSP_NoSlow)
	EndIf
EndEvent

Bool Function IsExtraDamageApplicable(Actor akTarget, Actor akCaster)
	If akTarget.HasMagicEffect(_00E_FS_PsychosisWeaknessVisualME)
		Return True
	EndIf

	If akCaster.IsDetectedBy(akTarget) == False
		akTarget.GetCombatState()
		If akTarget.GetCombatState() != 1
			Return True
		EndIf
	EndIf

	Return False
EndFunction


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

Actor Property PlayerREF Auto

Perk Property _00E_Class_Infiltrator_P03_B_HeartShot Auto ; 2.5

MagicEffect Property _00E_FS_PsychosisWeaknessVisualME Auto

Message Property _00E_FS_FakeStealthMsg Auto

Sound Property UISneakAttackM Auto

Spell Property _00E_FS_PsychosisWeaknessSP Auto
Spell Property _00E_FS_PsychosisWeaknessSP_NoSlow Auto