scriptName defaultFakeHarvestableScript extends objectReference
;
;This script is added on an activator to fake an object being harvestable
;		it mimics the normal harvest behavior
;==============================================================


ingredient property IngredientHarvested auto
{ingredient added when harvested}

potion property PotionHarvested auto
{potion added when harvested}

bool property deleteSelfOnHarvest = false auto
{if true, delete this object when harvested}

message property HarvestMessage auto
{Message that appears when you have successfully harvested something}

message property FailureMessage auto
{Message that appears when you fail to harvest something}

globalVariable property DaysToResetFakeHarvest auto
{The amount of game days that it takes to become reharvestable}

float property lastHarvestedDay auto Hidden
{the game day this was last successfuly harvested, used to know when to respawn}

sound property HarvestSound auto
{Sounds played on harvest}

;===================================================================
;;STATE BLOCK
;===================================================================

auto state readyForHarvest
	event onActivate(objectReference akActivator)
		goToState("waitingToRespawn")
		fakeHarvest(akActivator)
		if deleteSelfOnHarvest
			disable()
			delete()
		endif
	endEvent
endState

state waitingToRespawn
	event onBeginState()
		lastHarvestedDay = utility.getCurrentGameTime()
	endEvent

	event onActivate(objectReference akActivator)
		FailureMessage.show()
	endEvent

	event onCellLoad()
		if (lastHarvestedDay + DaysToResetFakeHarvest.getValue()) <= utility.getCurrentGameTime()
			goToState("readyForHarvest")
		endif
	endEvent
endState

;===================================================================
;;FUNCTION BLOCK
;===================================================================

function fakeHarvest(objectReference akActivator)
	if (akActivator as actor)
		HarvestMessage.show()
		HarvestSound.play(self)
		if IngredientHarvested
			(akActivator as actor).addItem(IngredientHarvested, 1, true)
		endif
		
		if PotionHarvested
			(akActivator as actor).addItem(PotionHarvested, 1, true)
		endif
	endif
endFunction