Adding comments as you suggest in the post above seems to make sense - I started to do this as I added more conditions, but got quite confused - going by this I think I have too many conditions that I'm checking on for the script to work correctly.
I now have the script working to also check if the player has ever been a vampire or werewolf, and have added a check for number of daedra killed before granting the blessing - if the player has killed less than 25, he is granted the usual blessing and pays 25 gold. If the player has killed more than 25 daedra, he receives the blessing but does not pay the 25 gold. If the player has killed more than 50 daedra, he receives a superior version of the blessing and does not pay the 25 gold.
If the player has the gold, everything works exactly as it should in-game, and the conditions behave correctly.
However, the way the script is set up at the moment, if the player doesn't have the gold but has killed enough daedra, he still doesn't get the option to get his "free" blessing, as the script checks for gold first. I tried getting around this by adding sub-conditions to the branch if player has less than 25 gold, but of course that doesn't work because at that stage it's not checking that he hasn't completed any daedric quests/been vampire etc. I'd then need to add sub-sub conditions for each and every potential situation - and I'm sure there's a more sensible way to do it than that!
Worse-case scenario, I could just argue that the gold requires you to want to offer the gold, and therefore to have it to offer, before he tells you he won't accept it on this occasion - but from a scripting point-of-view I'd like to solve this if possible.
This is the code that works fine as long as the player has the gold:
Scriptname ShrineDonationStendarr extends ObjectReferenceMiscObject Property Gold001 AutoSpell Property TempleBlessing AutoSpell Property TempleBlessingSuperior AutoMessage Property BlessingMessage AutoMessage Property AltarRemoveMsg AutoActor property PlayerRef autoimport debugEvent OnActivate(ObjectReference akActionRef) if akActionRef == PlayerRef ;We don't want NPCs activating this If PlayerRef.GetItemCount(Gold001) < 25 debug.messagebox("You need at least 25 gold to offer a donation!") ;(make the transaction fail) ;<===Convert to message object ElseIf (Game.QueryStat("Daedric Quests Completed") != 0) debug.messagebox("You have consorted with daedra and Stendarr has rejected your offering!") ;(make the transaction fail) ;<===Convert to message object ElseIf (Game.QueryStat("Days as a Vampire") != 0) debug.messagebox("You have been corrupted by vampirism & Stendarr has rejected your offering!") ;(make the transaction fail) ;<===Convert to message object ElseIf (Game.QueryStat("Days as a Werewolf") != 0) debug.messagebox("You have been corrupted by lycanthropy & Stendarr has rejected your offering!") ;(make the transaction fail) ;<===Convert to message object Else If (Game.QueryStat("Daedra Killed") > 50) TempleBlessingSuperior.Cast(akActionRef, akActionRef) AltarRemoveMsg.Show() BlessingMessage.Show() debug.messagebox("You are pure of soul and have killed more than 50 daedra - Stendarr grants a superior blessing for free") ElseIf (Game.QueryStat("Daedra Killed") > 25) TempleBlessing.Cast(akActionRef, akActionRef) AltarRemoveMsg.Show() BlessingMessage.Show() debug.messagebox("You are pure of soul and have killed more than 25 daedra - Stendarr grants your blessing for free") Else PlayerRef.RemoveItem(Gold001, 25) TempleBlessing.Cast(akActionRef, akActionRef) AltarRemoveMsg.Show() BlessingMessage.Show() debug.messagebox("You are pure of soul and Stendarr accepts your offering!") Endif Endif endifEndEvent