end end end
ACTIONS.DIG.fn = function(act)
if act.target.components.workable and act.target.components.workable.action == ACTIONS.DIG then
local numworks = 1
if act.invobject and act.invobject.components.tool then
numworks = act.invobject.components.tool:GetEffectiveness(ACTIONS.DIG) elseif act.doer and act.doer.components.worker then
numworks = act.doer.components.worker:GetEffectiveness(ACTIONS.DIG) end
act.target.components.workable:WorkedBy(act.doer, numworks) end
return true end
ACTIONS.PICK.fn = function(act)
if act.target.components.pickable then
act.target.components.pickable:Pick(act.doer) return true end end
ACTIONS.FORCEATTACK.fn = function(act)
act.doer.components.combat:SetTarget(act.target) act.doer.components.combat:ForceAttack() return true end
ACTIONS.ATTACK.fn = function(act) if act.target.components.combat then
act.doer.components.combat:SetTarget(act.target) --act.doer.components.combat:TryAttack() return true end end
ACTIONS.ATTACK.strfn = function(act) local targ = act.target or act.invobject
if targ and targ:HasTag(\
return \ end end
ACTIONS.COOK.fn = function(act) if act.target.components.cooker then local ingredient = act.doer.components.inventory:RemoveItem(act.invobject)
if ingredient.components.health and ingredient.components.combat then act.doer:PushEvent(\ end local product = act.target.components.cooker:CookItem(ingredient, act.doer) if product then act.doer.components.inventory:GiveItem(product,nil,
Vector3(TheSim:GetScreenPos(act.target.Transform:GetWorldPosition()) )) return true end
elseif act.target.components.stewer then act.target.components.stewer:StartCooking() return true end end
ACTIONS.DRY.fn = function(act) if act.target.components.dryer then local ingredient = act.doer.components.inventory:RemoveItem(act.invobject) if not act.target.components.dryer:StartDrying(ingredient) then act.doer.components.inventory:GiveItem(product,nil,
Vector3(TheSim:GetScreenPos(act.target.Transform:GetWorldPosition()) )) return false end
return true end end
ACTIONS.ADDFUEL.fn = function(act) if act.doer.components.inventory then local fuel = act.doer.components.inventory:RemoveItem(act.invobject) if fuel then if act.target.components.fueled:TakeFuelItem(fuel) then return true else
print(\ act.doer.components.inventory:GiveItem(fuel) end end end end
ACTIONS.GIVE.fn = function(act) if act.target.components.trader then act.target.components.trader:AcceptGift(act.doer, act.invobject) return true end end
ACTIONS.GIVE.strfn = function(act) local targ = act.target or act.invobject
if targ and targ:HasTag(\ if targ.enabled then return \ else
return \ end end end
ACTIONS.STORE.fn = function(act)
if act.target.components.container and act.invobject.components.inventoryitem and act.doer.components.inventory then
if not act.target.components.container:CanTakeItemInSlot(act.invobject) then return false, \ end local item = act.invobject.components.inventoryitem:RemoveFromOwner(act.target.components.container.acceptsstacks)
if item then if not act.target.components.inventoryitem then act.target.components.container:Open(act.doer) end
if not act.target.components.container:GiveItem(item,nil,nil,false) then if TheInput:ControllerAttached() then
act.doer.components.inventory:GiveItem(item) else
act.doer.components.inventory:GiveActiveItem(item) end return false end return true end elseif act.target.components.occupiable and act.invobject act.invobject.components.occupier
act.target.components.occupiable:CanOccupy(act.invobject) then local item = act.invobject.components.inventoryitem:RemoveFromOwner() return act.target.components.occupiable:Occupy(item) end end
ACTIONS.STORE.strfn = function(act)
if act.target and act.target.components.stewer then return \
elseif act.target and act.target.components.occupiable then return \ end end
ACTIONS.BUILD.fn = function(act) if act.doer.components.builder then if act.doer.components.builder:DoBuild(act.recipe, act.pos) then return true end end end
ACTIONS.PLANT.fn = function(act)
if act.doer.components.inventory then local seed = act.doer.components.inventory:RemoveItem(act.invobject) if seed then if act.target.components.grower:PlantItem(seed) then return true else act.doer.components.inventory:GiveItem(seed) end end
and
and
end end
ACTIONS.HARVEST.fn = function(act) if act.target.components.crop then return act.target.components.crop:Harvest(act.doer) elseif act.target.components.harvestable then
return act.target.components.harvestable:Harvest(act.doer) elseif act.target.components.stewer then return act.target.components.stewer:Harvest(act.doer) elseif act.target.components.dryer then return act.target.components.dryer:Harvest(act.doer)
elseif act.target.components.occupiable and act.target.components.occupiable:IsOccupied() then local item =act.target.components.occupiable:Harvest(act.doer) if item then act.doer.components.inventory:GiveItem(item) return true end end end
ACTIONS.HARVEST.strfn = function(act)
if act.target and act.target.components.occuipable then return \ end end
ACTIONS.LIGHT.fn = function(act)
if act.invobject and act.invobject.components.lighter then act.invobject.components.lighter:Light(act.target) return true end end
ACTIONS.SLEEPIN.fn = function(act) local bag = nil if act.target and act.target.components.sleepingbag then bag = act.target end if act.invobject and act.invobject.components.sleepingbag then bag = act.invobject end if bag and act.doer then bag.components.sleepingbag:DoSleep(act.doer)