Scriptname SayOnHitByMagicEffectScript extends ActiveMagicEffect  
{Causes actor to say a line when hit by this spell}

Topic Property TopicToSay Auto
{Which topic has the info the target should say?}

Event OnEffectStart(Actor akTarget, Actor akCaster)

; ;	debug.trace(self + "OnEffectStart(" + akTarget + "," + akCaster + ")")

	If akTarget != Game.GetPlayer()
		If akTarget.GetCurrentScene() == None
			If GameDaysPassed.value > WICastNonHostileTimer.value
				If AllowForTeammate == 0
					If akTarget.IsCommandedActor() == 0 || akTarget.IsPlayerTeammate() == 0
						If akTarget.IsInCombat() == 0
; ;							debug.trace(self + "OnEffectStart() will call Say(" + TopicToSay + ")")
							WICastNonHostileTimer.SetValue(GameDaysPassed.GetValue() + 0.01)
							akTarget.Say(TopicToSay)
						ElseIf CombatTopicToSay != None
							WICastNonHostileTimer.SetValue(GameDaysPassed.GetValue() + 0.01)
							akTarget.Say(CombatTopicToSay)
						EndIf
					EndIf
				ElseIf akTarget.IsPlayerTeammate() == 1
; ;					debug.trace(self + "OnEffectStart() will call Say(" + TopicToSay + ")")
					WICastNonHostileTimer.SetValue(GameDaysPassed.GetValue() + 0.01)
					akTarget.Say(TopicToSay)
				EndIf
			EndIf
		EndIf
	EndIf

EndEvent


int Property AllowForTeammate = 0 Auto  

Topic Property CombatTopicToSay  Auto  

GlobalVariable Property WICastNonHostileTimer  Auto  

GlobalVariable Property GameDaysPassed  Auto