You can try something like that:
add boolean instance variable to object "Caster" (eg "SeePlayer" default false)
Caster has LOS Player AND caster boolean instance variable "SeePlayer" is false (use invert)
---> Caster set boolean "SeePlayer" true
Caster has NOT (use invert) LOS Player AND caster boolean instance variable "SeePlayer" is true
---> Caster set boolean "SeePlayer" true
Pick Caster boolean "SeePlayer" is true
---> Caster action (whatever you want Caster must do)
You could improve this with adding timer for reload time or using functions