Papyrus is being stubborn

Post » Wed Jun 20, 2012 12:59 pm

Script (it's a modification of a vanilla script):

Spoiler
scriptName powerShrineScript extends ObjectReferenceimport gameimport utilityString property graphVariable auto; //which stone are weBOOL PROPERTY bApprentice AUTOBOOL PROPERTY bAtronach AUTOBOOL PROPERTY bLady AUTOBOOL PROPERTY bLord AUTOBOOL PROPERTY bLover AUTOBOOL PROPERTY bMage AUTOBOOL PROPERTY bRitual AUTOBOOL PROPERTY bSerpent AUTOBOOL PROPERTY bShadow AUTOBOOL PROPERTY bSteed AUTOBOOL PROPERTY bThief AUTOBOOL PROPERTY bTower AUTOBOOL PROPERTY bWarrior AUTO; //list of the effectsSPELL PROPERTY pDoomApprenticeAbility AUTOSPELL PROPERTY pdoomApprenticeNegativeAbility AUTOSPELL PROPERTY pDoomAtronachAbility AUTOSPELL PROPERTY pDoomLadyAbility AUTOSPELL PROPERTY pDoomLordAbility AUTOSPELL PROPERTY pDoomLoverAbility AUTOSPELL PROPERTY pDoomMageAbility AUTOSPELL PROPERTY pDoomRitualAbility AUTOSPELL PROPERTY pDoomSerpentAbility AUTOSPELL PROPERTY pDoomShadowAbility AUTOSPELL PROPERTY pDoomSteedAbility AUTOSPELL PROPERTY pDoomThiefAbility AUTOSPELL PROPERTY pDoomTowerAbility AUTOSPELL PROPERTY pDoomWarriorAbility AUTO; //list of the messagesMESSAGE PROPERTY pDoomApprenticeMSG AUTOMESSAGE PROPERTY pDoomAtronachMSG AUTOMESSAGE PROPERTY pDoomLadyMSG AUTOMESSAGE PROPERTY pDoomLordMSG AUTOMESSAGE PROPERTY pDoomLoverMSG AUTOMESSAGE PROPERTY pDoomMageMSG AUTOMESSAGE PROPERTY pDoomRitualMSG AUTOMESSAGE PROPERTY pDoomSerpentMSG AUTOMESSAGE PROPERTY pDoomShadowMSG AUTOMESSAGE PROPERTY pDoomSteedMSG AUTOMESSAGE PROPERTY pDoomThiefMSG AUTOMESSAGE PROPERTY pDoomTowerMSG AUTOMESSAGE PROPERTY pDoomWarriorMSG AUTO; //list of Rested spells -- need to remove just for the LoverSpell Property pRested AutoSpell Property pWellRested AutoSpell Property pMarriageRested Auto; //the perk for RitualPERK PROPERTY pDoomRitualPerk AUTO; //the already have messageMESSAGE PROPERTY pDoomAlreadyHaveMSG AUTO; //the message to display if the player cannot take the stone he activatedMESSAGE PROPERTY pDoomCannotTakeMageMSG AUTOMESSAGE PROPERTY pDoomCannotTakeThiefMSG AUTOMESSAGE PROPERTY pDoomCannotTakeWarriorMSG AUTOMESSAGE PROPERTY pDoomTKCannotTakeGuardianMSG AUTO;************************************BOOL DOONCE=TRUEAuto State base        EVENT onACTIVATE(OBJECTREFERENCE obj)                ; //check to see if the player is the activator and we havent already activated        IF(doOnce && obj AS ACTOR == game.getPlayer())                        doOnce = FALSE                        ; //if we already have the power and this is the stone then kick the player out            IF(bApprentice && game.getPlayer().hasSpell(pDoomApprenticeAbility))                pDoomAlreadyHaveMSG.show()                utility.wait(2)                doOnce = TRUE            ELSEIF(bApprentice && game.getPlayer().hasSpell(pDoomMageAbility) == False)                pDoomCannotTakeMageMSG.show()                utility.wait(2)                doOnce = TRUE            ELSEIF(bAtronach && game.getPlayer().hasSpell(pDoomAtronachAbility))                pDoomAlreadyHaveMSG.show()                utility.wait(2)                doOnce = TRUE            ELSEIF(bAtronach && game.getPlayer().hasSpell(pDoomMageAbility) == False)                pDoomCannotTakeMageMSG.show()                utility.wait(2)                doOnce = TRUE            ELSEIF(bLady && game.getPlayer().hasSpell(pDoomLadyAbility))                pDoomAlreadyHaveMSG.show()                utility.wait(2)                doOnce = TRUE            ELSEIF(bLady && game.getPlayer().hasSpell(pDoomWarriorAbility) == False)                pDoomCannotTakeWarriorMSG.show()                utility.wait(2)                doOnce = TRUE            ELSEIF(bLord && game.getPlayer().hasSpell(pDoomLordAbility))                pDoomAlreadyHaveMSG.show()                utility.wait(2)                                doOnce = TRUE            ELSEIF(bLord && game.getPlayer().hasSpell(pDoomWarriorAbility) == False)                pDoomCannotTakeWarriorMSG.show()                utility.wait(2)                                doOnce = TRUE            ELSEIF(bLover && game.getPlayer().hasSpell(pDoomLoverAbility))                pDoomAlreadyHaveMSG.show()                utility.wait(2)                                doOnce = TRUE            ELSEIF(bLover && game.getPlayer().hasSpell(pDoomThiefAbility) == False)                pDoomCannotTakeThiefMSG.show()                utility.wait(2)                                doOnce = TRUE            ELSEIF(bMage && game.getPlayer().hasSpell(pDoomMageAbility))                pDoomAlreadyHaveMSG.show()                utility.wait(2)                                doOnce = TRUE            ELSEIF(bRitual && game.getPlayer().hasSpell(pDoomRitualAbility))                pDoomAlreadyHaveMSG.show()                utility.wait(2)                                doOnce = TRUE            ELSEIF(bRitual && game.getPlayer().hasSpell(pDoomMageAbility) == False)                pDoomCannotTakeMageMSG.show()                utility.wait(2)                                doOnce = TRUE            ELSEIF(bSerpent && game.getPlayer().hasSpell(pDoomSerpentAbility))                pDoomAlreadyHaveMSG.show()                utility.wait(2)                                doOnce = TRUE            ELSEIF(bShadow && game.getPlayer().hasSpell(pDoomShadowAbility))                pDoomAlreadyHaveMSG.show()                utility.wait(2)                                doOnce = TRUE            ELSEIF(bShadow && game.getPlayer().hasSpell(pDoomThiefAbility) == False)                pDoomCannotTakeThiefMSG.show()                utility.wait(2)                                doOnce = TRUE            ELSEIF(bSteed && game.getPlayer().hasSpell(pDoomSteedAbility))                pDoomAlreadyHaveMSG.show()                utility.wait(2)                                doOnce = TRUE            ELSEIF(bSteed && game.getPlayer().hasSpell(pDoomWarriorAbility) == False)                pDoomCannotTakeWarriorMSG.show()                utility.wait(2)                                doOnce = TRUE            ELSEIF(bThief && game.getPlayer().hasSpell(pDoomThiefAbility))                pDoomAlreadyHaveMSG.show()                utility.wait(2)                                doOnce = TRUE            ELSEIF(bTower && game.getPlayer().hasSpell(pDoomTowerAbility))                pDoomAlreadyHaveMSG.show()                utility.wait(2)                                doOnce = TRUE            ELSEIF(bTower && game.getPlayer().hasSpell(pDoomThiefAbility) == False)                pDoomCannotTakeThiefMSG.show()                utility.wait(2)                                doOnce = TRUE            ELSEIF(bWarrior && game.getPlayer().hasSpell(pDoomWarriorAbility))                pDoomAlreadyHaveMSG.show()                utility.wait(2)                                doOnce = TRUE            ELSEIF(bMage && (game.getPlayer().hasSpell(pDoomThiefAbility) || game.getPlayer().hasSpell(pDoomWarriorAbility)))                pDoomTKCannotTakeGuardianMSG.show()                utility.wait(2)                                doOnce = TRUE            ELSEIF(bThief && (game.getPlayer().hasSpell(pDoomMageAbility) || game.getPlayer().hasSpell(pDoomWarriorAbility)))                pDoomTKCannotTakeGuardianMSG.show()                utility.wait(2)                                doOnce = TRUE            ELSEIF(bWarrior && (game.getPlayer().hasSpell(pDoomMageAbility) || game.getPlayer().hasSpell(pDoomThiefAbility)))                pDoomTKCannotTakeGuardianMSG.show()                utility.wait(2)                                doOnce = TRUE            ELSE                                    ; // present them with the choice                IF(showSign() == 0)                    addSign()                                        SELF.playAnimation("playanim01")                                        utility.wait(15)                                        doOnce = TRUE                ELSE                    utility.wait(2)                    doOnce = TRUE                ENDIF                        ENDIF                    ENDIF    endEVENT    endStateint FUNCTION showSign()        int signHolder        IF(bApprentice)        signHolder = pDoomApprenticeMSG.show()    ELSEIF(bAtronach)        signHolder = pDoomAtronachMSG.show()    ELSEIF(bLady)        signHolder = pDoomLadyMSG.show()    ELSEIF(bLord)        signHolder = pDoomLordMSG.show()    ELSeIF(bLover)        signHolder = pDoomLoverMSG.show()    ELSEIF(bMage)        signHolder = pDoomMageMSG.show()    ELSEIF(bRitual)        signHolder = pDoomRitualMSG.show()    ELSEIF(bSerpent)        signHolder = pDoomSerpentMSG.show()    ELSEIF(bShadow)        signHolder = pDoomShadowMSG.show()    ELSEIF(bSteed)        signHolder = pDoomSteedMSG.show()    ELSEIF(bThief)        signHolder = pDoomThiefMSG.show()    ELSEIF(bTower)        signHolder = pDoomTowerMSG.show()    ELSEIF(bWarrior)        signHolder = pDoomWarriorMSG.show()    ENDIF        RETURN signHolder        endFUNCTION; //FUNCTION: addSign; //; // adds the sign of the stone to the playerFUNCTION addSign()    game.AddAchievement(29)    IF(bApprentice)        game.getPlayer().addSpell(pDoomApprenticeAbility)        game.getPlayer().addSpell(pdoomApprenticeNegativeAbility)    ELSEIF(bAtronach)        game.getPlayer().addSpell(pDoomAtronachAbility)    ELSEIF(bLady)        game.getPlayer().addSpell(pDoomLadyAbility)    ELSEIF(bLord)        game.getPlayer().addSpell(pDoomLordAbility)    ELSeIF(bLover)        game.getPlayer().removeSpell(pRested)        game.getPlayer().removeSpell(pWellRested)        game.getPlayer().removeSpell(pMarriageRested)        game.getPlayer().addSpell(pDoomLoverAbility)    ELSEIF(bMage)        game.getPlayer().addSpell(pDoomMageAbility)    ELSEIF(bRitual)        game.getPlayer().addSpell(pDoomRitualAbility)        game.getPlayer().addPerk(pdoomRitualPerk)    ELSEIF(bSerpent)        game.getPlayer().addSpell(pDoomSerpentAbility)    ELSEIF(bShadow)        game.getPlayer().addSpell(pDoomShadowAbility)    ELSEIF(bSteed)        game.getPlayer().addSpell(pDoomSteedAbility)    ELSEIF(bThief)        game.getPlayer().addSpell(pDoomThiefAbility)    ELSEIF(bTower)        game.getPlayer().addSpell(pDoomTowerAbility)    ELSEIF(bWarrior)        game.getPlayer().addSpell(pDoomWarriorAbility)    ENDIF    endFUNCTION;************************************State waiting    ;do nothingendState;************************************

My problem: the pDoomCannotTakeMSG is being displayed just fine, but for some reason, the pDoomCannotTakeGuardianMSG is not being displayed at all. And I can find absolutely no reason for it to not be displayed, it is assigned correctly in the properties and the Debug messages I inserted to check if the segments are actually running ARE being displayed.

So if I may ask, what gives?

If it helps, here' is the relevant warning from the Log:

Spoiler
[03/14/2012 - 01:49:48AM] error: Cannot call Show() on a None object, aborting function call
stack:
[ (000E7BD6)].powerShrineScript.OnActivate() - "powerShrineScript.psc" Line 175
[03/14/2012 - 01:49:48AM] warning: Assigning None to a non-object variable named "::temp5"
stack:
[ (000E7BD6)].powerShrineScript.OnActivate() - "powerShrineScript.psc" Line 175
[03/14/2012 - 01:49:53AM] error: Cannot call Show() on a None object, aborting function call
stack:
[ (000E7BD6)].powerShrineScript.OnActivate() - "powerShrineScript.psc" Line 175
[03/14/2012 - 01:49:53AM] warning: Assigning None to a non-object variable named "::temp5"
stack:

So, why is Papyrus going behind my back reassigning the property I assigned for that message with None, for no reason at all?
User avatar
Scared humanity
 
Posts: 3470
Joined: Tue Oct 16, 2007 3:41 am

Post » Wed Jun 20, 2012 11:15 am

And again, though this time in a different place. I don't know what is going on here, just that it looks like Papyrus is dropping my property definitions for some reason.

Spoiler
scriptName powerShrineScript extends ObjectReferenceimport gameimport utilityString property graphVariable auto; //which stone are weBOOL PROPERTY bApprentice AUTOBOOL PROPERTY bAtronach AUTOBOOL PROPERTY bLady AUTOBOOL PROPERTY bLord AUTOBOOL PROPERTY bLover AUTOBOOL PROPERTY bMage AUTOBOOL PROPERTY bRitual AUTOBOOL PROPERTY bSerpent AUTOBOOL PROPERTY bShadow AUTOBOOL PROPERTY bSteed AUTOBOOL PROPERTY bThief AUTOBOOL PROPERTY bTower AUTOBOOL PROPERTY bWarrior AUTO; //list of the effectsSPELL PROPERTY pDoomApprenticeAbility AUTOSPELL PROPERTY pdoomApprenticeNegativeAbility AUTOSPELL PROPERTY pDoomAtronachAbility AUTOSPELL PROPERTY pDoomLadyAbility AUTOSPELL PROPERTY pDoomLordAbility AUTOSPELL PROPERTY pDoomLoverAbility AUTOSPELL PROPERTY pDoomMageAbility AUTOSPELL PROPERTY pDoomRitualAbility AUTOSPELL PROPERTY pDoomSerpentAbility AUTOSPELL PROPERTY pDoomShadowAbility AUTOSPELL PROPERTY pDoomSteedAbility AUTOSPELL PROPERTY pDoomThiefAbility AUTOSPELL PROPERTY pDoomTowerAbility AUTOSPELL PROPERTY pDoomWarriorAbility AUTOSPELL PROPERTY pDoomSerpentPenalty AUTO; //list of the messagesMESSAGE PROPERTY pDoomApprenticeMSG AUTOMESSAGE PROPERTY pDoomAtronachMSG AUTOMESSAGE PROPERTY pDoomLadyMSG AUTOMESSAGE PROPERTY pDoomLordMSG AUTOMESSAGE PROPERTY pDoomLoverMSG AUTOMESSAGE PROPERTY pDoomMageMSG AUTOMESSAGE PROPERTY pDoomRitualMSG AUTOMESSAGE PROPERTY pDoomSerpentMSG AUTOMESSAGE PROPERTY pDoomShadowMSG AUTOMESSAGE PROPERTY pDoomSteedMSG AUTOMESSAGE PROPERTY pDoomThiefMSG AUTOMESSAGE PROPERTY pDoomTowerMSG AUTOMESSAGE PROPERTY pDoomWarriorMSG AUTO; //list of Rested spells -- need to remove just for the LoverSpell Property pRested AutoSpell Property pWellRested AutoSpell Property pMarriageRested Auto; //the perk for RitualPERK PROPERTY pDoomRitualPerk AUTO; //the already have messageMESSAGE PROPERTY pDoomAlreadyHaveMSG AUTO; //the message to display if the player cannot take the stone he activatedMESSAGE PROPERTY pDoomCannotTakeMageMSG AUTOMESSAGE PROPERTY pDoomCannotTakeThiefMSG AUTOMESSAGE PROPERTY pDoomCannotTakeWarriorMSG AUTOMESSAGE PROPERTY pDoomCannotTakeSerpentMSG AUTO; //Serpent specific property arraysSPELL[] PROPERTY SerpentAbilityList AUTOSPELL[] PROPERTY AbilityArray AUTO;************************************BOOL DOONCE=TRUEBOOL HASSERPENT = FALSEAuto State base		EVENT onACTIVATE(OBJECTREFERENCE obj)				; //check to see if the player is the activator and we havent already activated		IF(doOnce && obj AS ACTOR == game.getPlayer())						doOnce = FALSE						; //if we already have the power and this is the stone then kick the player out			; //if the player's stone selection is not a Charge of their guardian, kick him out			; //if the player has already selected a Guardian and tries to take another, kick him out			; //finally, disallow player interaction altogether if he has taken the Serpent			IF HasSerpent && (!bSerpent)				pDoomCannotTakeSerpentMSG.Show()				utility.wait(2)				doOnce = TRUE			ELSEIF(bApprentice && game.getPlayer().hasSpell(pDoomApprenticeAbility))				pDoomAlreadyHaveMSG.show()				utility.wait(2)				doOnce = TRUE			ELSEIF(bApprentice && game.getPlayer().hasSpell(pDoomMageAbility) == False)				pDoomCannotTakeMageMSG.show()				utility.wait(2)				doOnce = TRUE			ELSEIF(bAtronach && game.getPlayer().hasSpell(pDoomAtronachAbility))				pDoomAlreadyHaveMSG.show()				utility.wait(2)				doOnce = TRUE			ELSEIF(bAtronach && game.getPlayer().hasSpell(pDoomMageAbility) == False)				pDoomCannotTakeMageMSG.show()				utility.wait(2)				doOnce = TRUE			ELSEIF(bLady && game.getPlayer().hasSpell(pDoomLadyAbility))				pDoomAlreadyHaveMSG.show()				utility.wait(2)				doOnce = TRUE			ELSEIF(bLady && game.getPlayer().hasSpell(pDoomWarriorAbility) == False)				pDoomCannotTakeWarriorMSG.show()				utility.wait(2)				doOnce = TRUE			ELSEIF(bLord && game.getPlayer().hasSpell(pDoomLordAbility))				pDoomAlreadyHaveMSG.show()				utility.wait(2)								doOnce = TRUE			ELSEIF(bLord && game.getPlayer().hasSpell(pDoomWarriorAbility) == False)				pDoomCannotTakeWarriorMSG.show()				utility.wait(2)								doOnce = TRUE			ELSEIF(bLover && game.getPlayer().hasSpell(pDoomLoverAbility))				pDoomAlreadyHaveMSG.show()				utility.wait(2)								doOnce = TRUE			ELSEIF(bLover && game.getPlayer().hasSpell(pDoomThiefAbility) == False)				pDoomCannotTakeThiefMSG.show()				utility.wait(2)								doOnce = TRUE			ELSEIF(bMage && game.getPlayer().hasSpell(pDoomMageAbility))				pDoomAlreadyHaveMSG.show()				utility.wait(2)								doOnce = TRUE			ELSEIF(bRitual && game.getPlayer().hasSpell(pDoomRitualAbility))				pDoomAlreadyHaveMSG.show()				utility.wait(2)								doOnce = TRUE			ELSEIF(bRitual && game.getPlayer().hasSpell(pDoomMageAbility) == False)				pDoomCannotTakeMageMSG.show()				utility.wait(2)								doOnce = TRUE			ELSEIF(bSerpent && game.getPlayer().hasSpell(pDoomSerpentAbility))				pDoomAlreadyHaveMSG.show()				utility.wait(2)								doOnce = TRUE			ELSEIF(bShadow && game.getPlayer().hasSpell(pDoomShadowAbility))				pDoomAlreadyHaveMSG.show()				utility.wait(2)								doOnce = TRUE			ELSEIF(bShadow && game.getPlayer().hasSpell(pDoomThiefAbility) == False)				pDoomCannotTakeThiefMSG.show()				utility.wait(2)								doOnce = TRUE			ELSEIF(bSteed && game.getPlayer().hasSpell(pDoomSteedAbility))				pDoomAlreadyHaveMSG.show()				utility.wait(2)								doOnce = TRUE			ELSEIF(bSteed && game.getPlayer().hasSpell(pDoomWarriorAbility) == False)				pDoomCannotTakeWarriorMSG.show()				utility.wait(2)								doOnce = TRUE			ELSEIF(bThief && game.getPlayer().hasSpell(pDoomThiefAbility))				pDoomAlreadyHaveMSG.show()				utility.wait(2)								doOnce = TRUE			ELSEIF(bTower && game.getPlayer().hasSpell(pDoomTowerAbility))				pDoomAlreadyHaveMSG.show()				utility.wait(2)								doOnce = TRUE			ELSEIF(bTower && game.getPlayer().hasSpell(pDoomThiefAbility) == False)				pDoomCannotTakeThiefMSG.show()				utility.wait(2)								doOnce = TRUE			ELSEIF(bWarrior && game.getPlayer().hasSpell(pDoomWarriorAbility))				pDoomAlreadyHaveMSG.show()				utility.wait(2)								doOnce = TRUE			ELSEIF(bMage && (game.getPlayer().hasSpell(pDoomThiefAbility) || game.getPlayer().hasSpell(pDoomWarriorAbility)))				Debug.MessageBox("You have already selected a Guardian.")				utility.wait(2)								doOnce = TRUE			ELSEIF(bThief && (game.getPlayer().hasSpell(pDoomMageAbility) || game.getPlayer().hasSpell(pDoomWarriorAbility)))				Debug.MessageBox("You have already selected a Guardian.")				utility.wait(2)								doOnce = TRUE			ELSEIF(bWarrior && (game.getPlayer().hasSpell(pDoomMageAbility) || game.getPlayer().hasSpell(pDoomThiefAbility)))				Debug.MessageBox("You have already selected a Guardian.")				utility.wait(2)								doOnce = TRUE			ELSE									; // present them with the choice				; // Item 1 == Accept, Item 2 == Decline				IF(showSign() == 0)					addSign()										SELF.playAnimation("playanim01")										utility.wait(15)										doOnce = TRUE				ELSE					utility.wait(2)					doOnce = TRUE				ENDIF						ENDIF					ENDIF	endEVENT	endState; // Shows the sign confirmation message dialogue.int FUNCTION showSign()		int signHolder		IF(bApprentice)		signHolder = pDoomApprenticeMSG.show()	ELSEIF(bAtronach)		signHolder = pDoomAtronachMSG.show()	ELSEIF(bLady)		signHolder = pDoomLadyMSG.show()	ELSEIF(bLord)		signHolder = pDoomLordMSG.show()	ELSeIF(bLover)		signHolder = pDoomLoverMSG.show()	ELSEIF(bMage)		signHolder = pDoomMageMSG.show()	ELSEIF(bRitual)		signHolder = pDoomRitualMSG.show()	ELSEIF(bSerpent)		signHolder = pDoomSerpentMSG.show()	ELSEIF(bShadow)		signHolder = pDoomShadowMSG.show()	ELSEIF(bSteed)		signHolder = pDoomSteedMSG.show()	ELSEIF(bThief)		signHolder = pDoomThiefMSG.show()	ELSEIF(bTower)		signHolder = pDoomTowerMSG.show()	ELSEIF(bWarrior)		signHolder = pDoomWarriorMSG.show()	ENDIF		RETURN signHolder		endFUNCTION; //FUNCTION: addSign; //; // adds the sign of the stone to the playerFUNCTION addSign()	game.AddAchievement(29)	; // Standard signs	IF(bApprentice)		game.getPlayer().addSpell(pDoomApprenticeAbility)		game.getPlayer().addSpell(pdoomApprenticeNegativeAbility)	ELSEIF(bAtronach)		game.getPlayer().addSpell(pDoomAtronachAbility)	ELSEIF(bLady)		game.getPlayer().addSpell(pDoomLadyAbility)	ELSEIF(bLord)		game.getPlayer().addSpell(pDoomLordAbility)	ELSeIF(bLover)		game.getPlayer().removeSpell(pRested)		game.getPlayer().removeSpell(pWellRested)		game.getPlayer().removeSpell(pMarriageRested)		game.getPlayer().addSpell(pDoomLoverAbility)	ELSEIF(bMage)		game.getPlayer().addSpell(pDoomMageAbility)	ELSEIF(bRitual)		game.getPlayer().addSpell(pDoomRitualAbility)		game.getPlayer().addPerk(pdoomRitualPerk)	ELSEIF(bShadow)		game.getPlayer().addSpell(pDoomShadowAbility)	ELSEIF(bSteed)		game.getPlayer().addSpell(pDoomSteedAbility)	ELSEIF(bThief)		game.getPlayer().addSpell(pDoomThiefAbility)	ELSEIF(bTower)		game.getPlayer().addSpell(pDoomTowerAbility)	ELSEIF(bWarrior)		game.getPlayer().addSpell(pDoomWarriorAbility)			; //The Serpent, randomizes player signs and provides the Serpent's abilities	; //Locks the player out of the other Standing Stones permanently	ELSEIF(bSerpent)			Int i = 0		Int random1 = Utility.RandomInt(0, 8)		Int random2 = Utility.RandomInt(0, 8)		Int random3 = Utility.RandomInt(0, 8)		Int a = 0		Bool AbilitiesAdded = FALSE				Debug.Notification("Removing all Stone Abilities...")		While i < AbilityArray.Length			If game.GetPlayer().hasSpell(AbilityArray[i])				game.getPlayer().RemoveSpell(AbilityArray[i])			EndIf			i += 1		EndWhile				If game.getPlayer().hasPerk(pDoomRitualPerk)			game.getPlayer().removePerk(pDoomRitualPerk)			Debug.Notification("Player has Ritual Perk, Removing...")		EndIf				Debug.Notification("Randomizing player Stone abilities...")				game.getPlayer().addSpell(SerpentAbilityList[random1])		game.getPlayer().addSpell(SerpentAbilityList[random2])		game.getPlayer().addSpell(SerpentAbilityList[random3])						If game.getPlayer().hasSpell(pDoomApprenticeAbility)			game.getPlayer().addSpell(pDoomApprenticeNegativeAbility)			Debug.Notification("Player has Apprentice, adding penalty...")		EndIf				If game.getPlayer().hasSpell(pDoomRitualAbility)			game.getPlayer().addPerk(pDoomRitualPerk)			Debug.Notification("Player has Ritual, adding Perk...")		Endif				Debug.Notification("adding Serpent-specific abilities...")		If !AbilitiesAdded			game.getPlayer().addSpell(pDoomSerpentAbility)			game.getPlayer().addSpell(pDoomSerpentPenalty)			AbilitiesAdded == TRUE		EndIf				Debug.Notification("Serpent application complete.")		HasSerpent == TRUE	ENDIF	endFUNCTION;************************************State waiting	;do nothingendState;************************************

Spoiler
[03/14/2012 - 07:07:04AM] error: Cannot add a None spell to the actor
stack:
[ (00000014)].Actor.AddSpell() - "" Line ?
[ (000E0F55)].powerShrineScript.addSign() - "powerShrineScript.psc" Line 346
[ (000E0F55)].powerShrineScript.OnActivate() - "powerShrineScript.psc" Line 208

EDIT: Hang on, it's just that idiocy with Papyrus not updating properties in the save correctly.
User avatar
April
 
Posts: 3479
Joined: Tue Jun 20, 2006 1:33 am


Return to V - Skyrim