Jump to content

Temporary variable compile error


Recommended Posts

I'm getting a weird error message when trying to compile a script:

 

Attempting to add temporary variable named ::temperatureBurst_var to free list multiple times

 

 

It shows up anywhere that I reference a property a second time in a function. Here's the code in question:

function PPAKeyTapped()
	if hasUGBurster == 1 && (upperTemperature >= temperatureBurst || lowerTemperature >= temperatureBurst)
		wearer.PlaceAtMe(PPABursterExplosion, 1)
		upperTemperature = upperTemperature - deltaTempBurster
		lowerTemperature = lowerTemperature - deltaTempBurster
	elseif hasUGChiller == 1 && chillerCharges > 0
		PPAChillerSound.Play(wearer)
		upperTemperature = upperTemperature - deltaTempChiller
		lowerTemperature = lowerTemperature - deltaTempChiller
	endif
endfunction

As far as I can tell there is nothing wrong with the way the properties have been declared.

Link to comment
Share on other sites

Scriptname PPADwarvenPAActiScript extends PPAPowerArmorActiScript
 
Armor property PPADwarvenBoots auto
Armor property PPADwarvenCuirass auto
Armor property PPADwarvenGauntlets auto
Armor property PPADwarvenHelmet auto
Sound property PPAChillerSound auto
Explosion property PPABursterExplosion auto
Explosion property PPASiphonExplosion auto
MiscObject property DwarvenCenturionDynamo auto
Ingredient property IceWraithTeeth auto
MiscObject property PPACenturionDynamoDepleted auto
MiscObject property PPAUpgradeArmPistons auto
MiscObject property PPAUpgradeBatteryDwarven auto
MiscObject property PPAUpgradeBurster auto
MiscObject property PPAUpgradeChiller auto
MiscObject property PPAUpgradeEmbodimentDwarven auto
MiscObject property PPAUpgradeLegPistons auto
MiscObject property PPAUpgradeReclaimer auto
MiscObject property PPAUpgradeSiphon auto
MiscObject property PPAUpgradeTelestorageNode auto
Message property PPAMenuWorldChargeCore auto
Message property PPAMenuWorldChargeCoreChiller auto
Message property PPAMenuWorldInstallDwarvenA auto
Message property PPAMenuWorldInstallDwarvenB auto
Message property PPAMenuWorldInstallDwarvenC auto
Message property PPAMenuWorldUninstallDwarvenA auto
Message property PPAMenuWorldUninstallDwarvenB auto
Message property PPAMenuWorldUninstallDwarvenC auto
Message property PPAMenuWorldInfoArms auto
Message property PPAMenuWorldInfoBatteryDwarven auto
Message property PPAMenuWorldInfoBurster auto
Message property PPAMenuWorldInfoChiller auto
Message property PPAMenuWorldInfoEmbodiment auto
Message property PPAMenuWorldInfoLegs auto
Message property PPAMenuWorldInfoReclaimer auto
Message property PPAMenuWorldInfoSiphon auto
Message property PPAMenuWorldInfoTelestorage auto
Message property PPATemperatureMessage auto
Perk property PPADwarvenAssist auto
float property dynamoCharge = 7200.0 auto
float property dischargeRateReclaimer = 0.5 auto
float property cOut = 0.001 auto
float property temperatureRun = 100.0 auto
float property temperatureRunReclaimer = 80.0 auto
float property temperatureRunLegs = 120.0 auto
float property temperatureSprint = 150.0 auto
float property temperatureSprintReclaimer = 130.0 auto
float property temperatureSprintLegs = 170.0 auto
float property temperatureCritical = 120.0 auto
float property temperatureNormal = 60.0 auto
float property deltaTempChiller = 60.0 auto
float property deltaTempBurster = 30.0 auto
float property overheatDamageMult = 0.15 auto
float property siphonInterval = 10.0 auto
float property siphonChargeMult = 1.0 auto
int property maxChillerCharges = 20 auto


int hasUGTelestorageNode = 0
int hasUGLegs = 0
int hasUGArms = 0
int hasUGReclaimer = 0
int hasUGBurster = 0
int hasUGChiller = 0
int hasUGBattery1 = 0
int hasUGBattery2 = 0
int hasUGSiphon = 0
int hasUGEmbodiment = 0

float temperature
float siphonTimer = 0.0
float tempMessageTimer = 0.0

int chillerCharges = 0

function ArmorUpdated(float deltaTime, int moveMode, float deltaCharge)
;	Qout = (temperature - temperatureNormal) * Cout * dt
;	Qgen = Cgen * dt
;	Tss - temperatureNormal = Cgen / Cout
;	Cgen = (Tss - temperatureNormal) * Cout
;	dT = Qgen - Qout = (Tss - temperatureNormal) * Cout * dt - (temperature - temperatureNormal) * Cout * dt
;	temperature = temperature + dt * Cout * (Tss - temperature)
	float Tss = temperatureNormal
	if wearer.HasPerk(PPADwarvenAssist)
		if (hasUGReclaimer == 1 && hasUGLegs == 1) || (hasUGReclaimer == 0 && hasUGLegs == 0)
			if moveMode == 1
				Tss = temperatureRun
			elseif moveMode == 2
				Tss = temperatureSprint
			endif
		elseif hasUGLegs == 1
			if moveMode == 1
				Tss = temperatureRunLegs
			elseif moveMode == 2
				Tss = temperatureSprintLegs
			endif
		else
			if moveMode == 1
				Tss = temperatureRunReclaimer
			elseif moveMode == 2
				Tss = temperatureSprintReclaimer
			endif
		endif
		if hasUGSiphon == 1
			if wearer.IsInCombat()
				if siphonTimer <= 0.0
					siphonTimer = siphonInterval
					wearer.PlaceAtMe(PPASiphonExplosion, 1)
				else
					siphonTimer = siphonTimer - deltaTime
				endif
			else
				siphonTimer = 0.0
			endif
		endif
		wearer.RestoreActorValue("Stamina", 100.0)
	endif
	temperature = temperature + deltaTime * cOut * (Tss - temperature)
	float temperatureDamage = temperatureCritical - temperature
	if (temperatureDamage > 0.0)
		wearer.DamageAV("Health", temperatureDamage * deltaTime * overheatDamageMult)
	endif
	if tempMessageTimer <= 0.0
		tempMessageTimer = 10.0
		PPATemperatureMessage.Show(temperature)
	else
		tempMessageTimer = tempMessageTimer - deltaTime
	endif
endfunction

function PPAKeyTapped()
	if hasUGBurster == 1 && temperature > temperatureCritical
		wearer.PlaceAtMe(PPABursterExplosion, 1)
		temperature = temperature - deltaTempBurster
	elseif hasUGChiller == 1 && chillerCharges > 0
		PPAChillerSound.Play(wearer)
		temperature = temperature - deltaTempChiller
	endif
endfunction

function ChargeArmor()
	if wearer.GetItemCount(DwarvenCenturionDynamo) > 0
		wearer.RemoveItem(DwarvenCenturionDynamo, 1)
		wearer.AddItem(PPACenturionDynamoDepleted, 1)
		AddCharge(dynamoCharge)
	endif
endfunction

function ChargeDepleted()
	if wearer.HasPerk(PPADwarvenAssist) == true
		wearer.RemovePerk(PPADwarvenAssist)
	endif
endfunction

function ChargeRestored()
	if wearer.HasPerk(PPADwarvenAssist) == false
		wearer.AddPerk(PPADwarvenAssist)
	endif
endfunction

function ArmorEquipped()
	armorContainer.RemoveItem(PPADwarvenCuirass, 1, true, wearer)
	wearer.EquipItem(PPADwarvenCuirass, true, true)
	armorContainer.RemoveItem(PPADwarvenHelmet, 1, true, wearer)
	wearer.EquipItem(PPADwarvenHelmet, true, true)
	armorContainer.RemoveItem(PPADwarvenGauntlets, 1, true, wearer)
	wearer.EquipItem(PPADwarvenGauntlets, true, true)
	armorContainer.RemoveItem(PPADwarvenBoots, 1, true, wearer)
	wearer.EquipItem(PPADwarvenBoots, true, true)

	temperature = temperatureNormal

	if charge > 0
		wearer.AddPerk(PPADwarvenAssist)
	endif
endfunction

function ArmorUnequipped()
	wearer.UnequipItem(PPADwarvenCuirass, false, true)
	wearer.RemoveItem(PPADwarvenCuirass, 1, true, armorContainer)
	wearer.UnequipItem(PPADwarvenHelmet, false, true)
	wearer.RemoveItem(PPADwarvenHelmet, 1, true, armorContainer)
	wearer.UnequipItem(PPADwarvenGauntlets, false, true)
	wearer.RemoveItem(PPADwarvenGauntlets, 1, true, armorContainer)
	wearer.UnequipItem(PPADwarvenBoots, false, true)
	wearer.RemoveItem(PPADwarvenBoots, 1, true, armorContainer)

	if wearer.HasPerk(PPADwarvenAssist) == true
		wearer.RemovePerk(PPADwarvenAssist)
	endif
endfunction

function ArmorInitialized()
	armorContainer.AddItem(PPADwarvenCuirass, 1)
	armorContainer.AddItem(PPADwarvenHelmet, 1)
	armorContainer.AddItem(PPADwarvenGauntlets, 1)
	armorContainer.AddItem(PPADwarvenBoots, 1)
endfunction

bool function ShowChargeMenu()
	while true
		if hasUGChiller == 1
			int response = PPAMenuWorldChargeCoreChiller.Show(charge, 100.0 * charge / maxCharge, dynamoCharge, chillerCharges, maxChillerCharges, maxChillerCharges)
			if response == 0	; back
				return false
			elseif response == 1
				ChargeArmor()
			elseif response == 2
				PlayerREF.RemoveItem(IceWraithTeeth, 1)
				chillerCharges = maxChillerCharges
			endif
		else
			int response = PPAMenuWorldChargeCore.Show(charge, 100.0 * charge / maxCharge, dynamoCharge)
			if response == 0	; back
				return false
			elseif response == 1
				ChargeArmor()
			endif
		endif
	endwhile
endfunction

bool function ShowUpgradeMenuInstalled()
	int menuTab = 0
	int response
	while true
		SetUpgradeConditionals()
		if menuTab == 0
			response = PPAMenuWorldUninstallDwarvenA.Show()
			if response == 0	; back
				return false
			elseif response == 1	; soul siphon
				ShowInstallInfoSiphon()
			elseif response == 2	; battery 1
				ShowInstallInfoBattery1()
			elseif response == 3	; battery 2
				ShowInstallInfoBattery2()
			elseif response == 4	; embodiment
				ShowInstallInfoEmbodiment()
			elseif response == 5	; next
				menuTab = 1
			endif
		elseif menuTab == 1
			response = PPAMenuWorldUninstallDwarvenB.Show()
			if response == 0	; back
				return false
			elseif response == 1	; previous
				menuTab = 0
			elseif response == 2	; telestorage
				ShowInstallInfoTelestorage()
			elseif response == 3	; arms
				ShowInstallInfoArms()
			elseif response == 4	; legs
				ShowInstallInfoLegs()
			elseif response == 5	; next
				menuTab = 2
			endif
		elseif menuTab == 2
			response = PPAMenuWorldUninstallDwarvenC.Show()
			if response == 0	; back
				return false
			elseif response == 1	; previous
				menuTab = 1
			elseif response == 2	; chiller
				ShowInstallInfoChiller()
			elseif response == 3	; burster
				ShowInstallInfoBurster()
			elseif response == 4	; reclaimer
				ShowInstallInfoReclaimer()
			endif
		endif
	endwhile
endfunction

bool function ShowUpgradeMenuCompatible()
	int menuTab = 0
	int response
	while true
		SetUpgradeConditionals()
		if menuTab == 0
			response = PPAMenuWorldInstallDwarvenA.Show()
			if response == 0	; back
				return false
			elseif response == 1	; soul siphon
				ShowInstallInfoSiphon()
			elseif response == 2	; battery 1
				ShowInstallInfoBattery1()
			elseif response == 3	; battery 2
				ShowInstallInfoBattery2()
			elseif response == 4	; embodiment
				ShowInstallInfoEmbodiment()
			elseif response == 5	; next
				menuTab = 1
			endif
		elseif menuTab == 1
			response = PPAMenuWorldInstallDwarvenB.Show()
			if response == 0	; back
				return false
			elseif response == 1	; previous
				menuTab = 0
			elseif response == 2	; telestorage
				ShowInstallInfoTelestorage()
			elseif response == 3	; arms
				ShowInstallInfoArms()
			elseif response == 4	; legs
				ShowInstallInfoLegs()
			elseif response == 5	; next
				menuTab = 2
			endif
		elseif menuTab == 2
			response = PPAMenuWorldInstallDwarvenC.Show()
			if response == 0	; back
				return false
			elseif response == 1	; previous
				menuTab = 1
			elseif response == 2	; chiller
				ShowInstallInfoChiller()
			elseif response == 3	; burster
				ShowInstallInfoBurster()
			elseif response == 4	; reclaimer
				ShowInstallInfoReclaimer()
			endif
		endif
	endwhile
endfunction


function ShowInstallInfoSiphon()
	int response = PPAMenuWorldInfoSiphon.Show()
	if response == 1		; install
		hasUGSiphon = 1
		PlayerREF.RemoveItem(PPAUpgradeSiphon, 1)
	elseif response == 2	; uninstall
		hasUGSiphon = 0
		PlayerREF.AddItem(PPAUpgradeSiphon, 1)
	endif
endfunction

function ShowInstallInfoBattery1()
	int response = PPAMenuWorldInfoBatteryDwarven.Show()
	if response == 1		; install
		hasUGBattery1 = 1
		maxCharge = dynamoCharge * 2.0
		PlayerREF.RemoveItem(PPAUpgradeBatteryDwarven, 1)
	elseif response == 2	; uninstall
		hasUGBattery1 = 0
		maxCharge = dynamoCharge * 1.0
		if charge > maxCharge
			charge = maxCharge
			PlayerREF.AddItem(PPACenturionDynamoDepleted, 1)
		endif
		PlayerREF.AddItem(PPAUpgradeBatteryDwarven, 1)
	endif
endfunction

function ShowInstallInfoBattery2()
	int response = PPAMenuWorldInfoBatteryDwarven.Show()
	if response == 1		; install
		hasUGBattery2 = 1
		maxCharge = dynamoCharge * 3.0
		PlayerREF.RemoveItem(PPAUpgradeBatteryDwarven, 1)
	elseif response == 2	; uninstall
		hasUGBattery2 = 0
		maxCharge = dynamoCharge * 2.0
		if charge > maxCharge
			charge = maxCharge
			PlayerREF.AddItem(PPACenturionDynamoDepleted, 1)
		endif
		PlayerREF.AddItem(PPAUpgradeBatteryDwarven, 1)
	endif
endfunction

function ShowInstallInfoEmbodiment()
	int response = PPAMenuWorldInfoEmbodiment.Show()
	if response == 1		; install
		hasUGEmbodiment = 1
		PlayerREF.RemoveItem(PPAUpgradeEmbodimentDwarven, 1)
	elseif response == 2	; uninstall
		hasUGEmbodiment = 0
		PlayerREF.AddItem(PPAUpgradeEmbodimentDwarven, 1)
	endif
endfunction

function ShowInstallInfoTelestorage()
	int response = PPAMenuWorldInfoTelestorage.Show()
	if response == 1		; install
		hasUGTelestorageNode = 1
		PlayerREF.RemoveItem(PPAUpgradeTelestorageNode, 1)
	elseif response == 2	; uninstall
		hasUGTelestorageNode = 0
		PlayerREF.AddItem(PPAUpgradeTelestorageNode, 1)
	endif
endfunction

function ShowInstallInfoArms()
	int response = PPAMenuWorldInfoArms.Show()
	if response == 1		; install
		hasUGArms = 1
		PlayerREF.RemoveItem(PPAUpgradeArmPistons, 1)
	elseif response == 2	; uninstall
		hasUGArms = 0
		PlayerREF.AddItem(PPAUpgradeArmPistons, 1)
	endif
endfunction

function ShowInstallInfoLegs()
	int response = PPAMenuWorldInfoLegs.Show()
	if response == 1		; install
		hasUGLegs = 1
		PlayerREF.RemoveItem(PPAUpgradeLegPistons, 1)
	elseif response == 2	; uninstall
		hasUGLegs = 0
		PlayerREF.AddItem(PPAUpgradeLegPistons, 1)
	endif
endfunction

function ShowInstallInfoChiller()
	int response = PPAMenuWorldInfoChiller.Show()
	if response == 1		; install
		hasUGChiller = 1
		PlayerREF.RemoveItem(PPAUpgradeChiller, 1)
	elseif response == 2	; uninstall
		hasUGChiller = 0
		PlayerREF.AddItem(PPAUpgradeChiller, 1)
	endif
endfunction

function ShowInstallInfoBurster()
	int response = PPAMenuWorldInfoBurster.Show()
	if response == 1		; install
		hasUGBurster = 1
		PlayerREF.RemoveItem(PPAUpgradeBurster, 1)
	elseif response == 2	; uninstall
		hasUGBurster = 0
		PlayerREF.AddItem(PPAUpgradeBurster, 1)
	endif
endfunction

function ShowInstallInfoReclaimer()
	int response = PPAMenuWorldInfoReclaimer.Show()
	if response == 1		; install
		hasUGReclaimer = 1
		dischargeRateCurrent = dischargeRateReclaimer
		PlayerREF.RemoveItem(PPAUpgradeReclaimer, 1)
	elseif response == 2	; uninstall
		hasUGReclaimer = 0
		dischargeRateCurrent = dischargeRate
		PlayerREF.AddItem(PPAUpgradeReclaimer, 1)
	endif
endfunction

function SetUpgradeConditionals()
	PPAMenuConditionsQuest.hasUGTelestorageNode = hasUGTelestorageNode
	PPAMenuConditionsQuest.hasUGLegs = hasUGLegs
	PPAMenuConditionsQuest.hasUGArms = hasUGArms
	PPAMenuConditionsQuest.hasUGReclaimer = hasUGReclaimer
	PPAMenuConditionsQuest.hasUGBurster = hasUGBurster
	PPAMenuConditionsQuest.hasUGChiller = hasUGChiller
	PPAMenuConditionsQuest.hasUGBattery1 = hasUGBattery1
	PPAMenuConditionsQuest.hasUGBattery2 = hasUGBattery2
	PPAMenuConditionsQuest.hasUGSiphon = hasUGSiphon
	PPAMenuConditionsQuest.hasUGEmbodiment = hasUGEmbodiment
endfunction

function ApplyDeathSiphon(float baseHealth)
	if hasUGSiphon == 1
		AddCharge(baseHealth * siphonChargeMult)
	endif
endFunction

Here it is in it's current form. I've changed the code to avoid referencing any properties more than once back to back in a function, but you can see the property declarations there.

Link to comment
Share on other sites

Here's the script it extends:

Scriptname PPAPowerArmorActiScript extends ObjectReference  

Actor property PlayerREF auto
PPAMainQuestScript property PPAMainQuest auto
PPAMenuConditions property PPAMenuConditionsQuest auto
ObjectReference property PPAStorageREF auto
Message property PPAMenuWorldBase auto
Message property PPAMenuMainBase auto
Message property PPAMenuWorldUpgrade auto
Container property PPAArmorChest auto
ReferenceAlias property Follower auto
Float property scaleIncrease = -1.0 auto
Float property maxCharge = 7200.0 auto
Float property dischargeRate = 1.0 auto
Float property dischargeRateCurrent = 1.0 auto hidden
Float property updateInterval = 0.5 autoreadonly
Float property keyHeldTime = 1.0 autoreadonly
float property effortRun = 1.5 auto
float property effortSprint = 2.5 auto

Int property menuKeyCode = 25 auto hidden
Float property charge = 0.0 auto hidden
Actor property wearer = none auto hidden

ReferenceAlias property owningAlias = none auto hidden
ObjectReference property miscREF auto hidden
ObjectReference property armorREF auto hidden
ObjectReference property bootsREF auto hidden
ObjectReference property gauntletsREF auto hidden
ObjectReference property helmetREF auto hidden
ObjectReference property storageContainer auto hidden
ObjectReference property armorContainer auto hidden

bool keyDownPA = false
float keyDownPATimer = 0.0
float wearerScale
bool equipped = false

event OnActivate(ObjectReference akActionRef)
	if akActionRef == PlayerREF
		ShowWorldMenu()
	endif
endevent

event OnUpdate()
	if keyDownPA
		keyDownPATimer -= updateInterval
		if keyDownPATimer <= 0 && !Utility.IsInMenuMode()
			ShowEquippedMenu()
		endif
	endif
	
	int moveMode = GetMoveMode()
	if charge > 0
		float effort = GetEffort(moveMode)
		float deltaCharge = effort * dischargeRate * updateInterval
		if deltaCharge > charge
			deltaCharge = charge
		endif
		RemoveCharge(deltaCharge)
		ArmorUpdated(updateInterval, moveMode, deltaCharge)
	else
		ArmorUpdated(updateInterval, moveMode, 0.0)
	endif
	if equipped
		RegisterForSingleUpdate(updateInterval)
	endif
endevent

int function GetMoveMode()
	if wearer.IsSprinting()
		return 2
	elseif wearer.IsRunning()
		return 1
	else
		return 0
	endif
endfunction

float function GetEffort(int moveMode)
	if moveMode == 0
		return 1.0
	elseif moveMode == 1
		return effortRun
	elseif moveMode == 2
		return effortSprint
	endif
endfunction

event OnKeyDown(int keyCode)
	if keyCode == menuKeyCode && !Utility.IsInMenuMode()
		keyDownPA = true
		keyDownPATimer = keyHeldTime
	endif
endevent

event OnKeyUp(int keyCode, float holdTime)
	if keyCode == menuKeyCode
		keyDownPA = false
		if holdtime < keyHeldTime
			if !Utility.IsInMenuMode()
				PPAKeyTapped()
			endif
		endif
	endif
endevent

event OnMenuOpen(string menuName)
	if menuName == "Crafting Menu"
		armorContainer.RemoveItem(armorREF, 1, PlayerREF)
		armorContainer.RemoveItem(helmetREF, 1, PlayerREF)
		armorContainer.RemoveItem(gauntletsREF, 1, PlayerREF)
		armorContainer.RemoveItem(bootsREF, 1, PlayerREF)
	endif
endevent

event OnMenuClose(string menuName)
	if menuName == "Crafting Menu"
		PlayerREF.RemoveItem(armorREF, 1, armorContainer)
		PlayerREF.RemoveItem(helmetREF, 1, armorContainer)
		PlayerREF.RemoveItem(gauntletsREF, 1, armorContainer)
		PlayerREF.RemoveItem(bootsREF, 1, armorContainer)
	endif
endevent

function InitializeArmor(ObjectReference akArmorMiscREF)
;	if owningAlias == none
;		owningAlias = PPAMainQuest.RegisterArmor(self)
;		if owningAlias != none
			miscREF = akArmorMiscREF
			SetMotionType(4, true)
			storageContainer = PPAStorageREF.PlaceAtMe(PPAArmorChest)
			armorContainer = PPAStorageREF.PlaceAtMe(PPAArmorChest)
			charge = maxCharge
			dischargeRateCurrent = dischargeRate
			ArmorInitialized()
;		endif
;	endif
endfunction

function ShowWorldMenu()
	SetHasFollower()
	bool exitMenu = false
	while exitMenu == false
		SetUpgradeConditionals()
		int response = PPAMenuWorldBase.Show(charge, 100.0 * charge / maxCharge)
		if (response == 0)		; exit
			exitMenu = true
		elseif response == 1	; equip
			EquipOnActor(PlayerREF)
			exitMenu = true
		elseif response == 2	; follower equip
			if Follower.GetActorReference() != none
				EquipOnActor(Follower.GetActorReference())
				exitMenu = true
			endif
		elseif response == 3	; charge
			exitMenu = ShowChargeMenu()
		elseif response == 4	; storage
			OpenArmorStorage()
			exitMenu = true
		elseif response == 5	; upgrades
			exitMenu = ShowUpgradeMenu()
		elseif response == 6	; store
			PlayerREF.AddItem(miscREF, 1)
			MoveTo(PPAStorageREF)
			exitMenu = true
		endif
	endwhile
endfunction

bool function ShowUpgradeMenu()
	bool exitMenu = false
	while exitMenu == false
		int response = PPAMenuWorldUpgrade.Show()
		if response == 0		; back
			return false
		elseif response == 1	; installed
			exitMenu = ShowUpgradeMenuInstalled()
		elseif response == 2	; compatible
			exitMenu = ShowUpgradeMenuCompatible()
		endif
	endwhile
endfunction

function ShowEquippedMenu()
	bool exitMenu = false
	int menuLevel = 0
	while exitMenu == false
		if menuLevel == 0
			SetUpgradeConditionals()
			int response = PPAMenuMainBase.Show(charge, 100.0 * charge / maxCharge)
			if (response == 0)		; exit
				exitMenu = true
			elseif response == 1	; charge
				exitMenu = ShowChargeMenu()
			elseif response == 2	; storage
				OpenArmorStorage()
				exitMenu = true
			elseif response == 3	; unequip
				UnequipFromWearer(false)
				exitMenu = true
			elseif response == 4	; store
				UnequipFromWearer(true)
			endif
		endif
	endwhile
endfunction

function EquipOnActor(Actor akActor)
	MoveTo(PPAStorageREF)
	armorContainer.AddItem(miscREF, 1)
	wearer = akActor
	ArmorEquipped()
	;if scaleIncrease > 0
	;	wearerScale = wearer.GetScale()
	;	wearer.SetScale(scaleIncrease)
	;endif
	if akActor == PlayerREF
		RegisterForKey(25)
	endif
	equipped = true
	RegisterForSingleUpdate(updateInterval)
endfunction

function UnequipFromWearer(bool store)
	equipped = false
	UnregisterForUpdate()
	if (wearer == PlayerREF)
		UnregisterForKey(menuKeyCode)
	endif
	if store
		PlayerREF.AddItem(miscREF, 1)
	else
		SpawnAtRef(wearer)
	endif
	ArmorUnequipped()
	;if wearerScale > 0
	;	wearer.SetScale(wearerScale)
	;endif
	wearer = none
endfunction

function OpenArmorStorage()
	storageContainer.Activate(PlayerREF)
endfunction

function AddCharge(float chargeAdded)
	if chargeAdded > 0
		charge = charge + chargeAdded
		if charge > maxCharge
			charge = maxCharge
		endif
		ChargeRestored()
	endif
endfunction

function RemoveCharge(float chargeRemoved)
	if chargeRemoved > 0
		charge = charge - chargeRemoved
		if charge <= 0
			charge = 0
			ChargeDepleted()
		endif
	endif
endfunction

function SpawnAtRef(ObjectReference akSpawnRef)
	armorContainer.AddItem(miscREF)
	MoveTo(akSpawnRef)
endfunction

function MiscRefOnPlayer(bool onPlayer)
	if onPlayer
		RegisterForMenu("Crafting Menu")
	else
		UnregisterForMenu("Crafting Menu")
	endif
endfunction

function SetHasFollower()
	if Follower.GetReference() == none
		PPAMenuConditionsQuest.hasFollower = 0
	else
		PPAMenuConditionsQuest.hasFollower = 1
	endif
endfunction

;_______________________________________________
; Abstract Functions
;-----------------------------------------------
function ArmorUpdated(float deltaTime, int moveMode, float deltaCharge)
endfunction

function PPAKeyTapped()
endfunction

function ChargeArmor()
endfunction

function ChargeDepleted()
endfunction

function ChargeRestored()
endfunction

function ArmorEquipped()
endfunction

function ArmorUnequipped()
endfunction

function ArmorInitialized()
endfunction

bool function ShowChargeMenu()
	return false
endfunction

bool function ShowUpgradeMenuInstalled()
	return false
endfunction

bool function ShowUpgradeMenuCompatible()
	return false
endfunction

function SetUpgradeConditionals()
endfunction

function ApplyDeathSiphon(float baseHealth)
endFunction

Link to comment
Share on other sites

I don't think there's any problem with referencing a property multiple times in a function, this must be something else.

What variable gives the error now that "temperatureBurst" doesn't exist?

 

Also, the code tag for some reason adds alternating white background to the lines which makes it very uncomfortable to read.

Edited by FrankFamily
Link to comment
Share on other sites

  • 3 weeks later...

Thanks for taking a look. I'm back to working on this part of the mod, and apparently there's another part to the problem. For the properties involved, they act like they have the default value (0.0 for floats) rather than their assigned value. I tested this by changing line 126 in the first script to show Tss instead of temperature (it reported -0 instead of 60). Changing that line to report temperatureNormal results in the compile error I've been getting (temperatureNormal already gets accessed on line 84). Changing those float properties from auto to autoreadonly fixes both problems, but that's kind of limiting.

 

Sorry about the code tag. Changing your theme from Underground to White (the button is in the lower left corner of the page) makes it readable, though it looks kind of funny after seeing a black background here for so many years.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...