Jump to content

AddComponentPostInit


Recommended Posts

so I tried several approaches, it seems functions are not firing at all.
my first try :

Spoiler



local function addmissingpushevents(act)
  if stacksize > 1 then
    for i = 2, stacksize do
      act.doer:PushEvent("killed", {victim = murdered})
    end
  end
end 

AddComponentPostInit("ACTIONS.MURDER",addmissingpushevents)

 

In the above I was trying to see if the environment is kept. (e.g. in the original ACTIONS.MURDER there's a stacksize variable... )

2nd Try :

Spoiler

local function giveadditionalnaughtiness(victim)
  print("givenaughtiness")
  if victim and victim.prefab then
    local stacksize = 0
    if victim.components.stackable then
      print("stack")
      stacksize = victim.components.stackable.stacksize - 1 -- the game should have added the naughtiness already once
      print(stacksize)
      if stacksize > 0 then
        if victim.prefab == "pigman" then
          if not victim.components.werebeast or not victim.components.werebeast:IsInWereState() then
            self:OnNaughtyAction(3 * stacksize)
          end
        elseif victim.prefab == "babybeefalo" then
          self:OnNaughtyAction(6 * stacksize)
        elseif victim.prefab == "teenbird" then
          self:OnNaughtyAction(2 * stacksize)
        elseif victim.prefab == "smallbird" then
          self:OnNaughtyAction(6 * stacksize)
        elseif victim.prefab == "beefalo" then
          self:OnNaughtyAction(4 * stacksize)
        elseif victim.prefab == "crow" then
          self:OnNaughtyAction(1 * stacksize)
        elseif victim.prefab == "robin" then
          self:OnNaughtyAction(2 * stacksize)
        elseif victim.prefab == "robin_winter" then
          self:OnNaughtyAction(2 * stacksize)
        elseif victim.prefab == "butterfly" then
          self:OnNaughtyAction(1 * stacksize)
        elseif victim.prefab == "rabbit" then
          self:OnNaughtyAction(1 * stacksize)
        elseif victim.prefab == "tallbird" then
          self:OnNaughtyAction(2 * stacksize)
        elseif victim.prefab == "bunnyman" then
          self:OnNaughtyAction(3 * stacksize)
        elseif victim.prefab == "penguin" then
          self:OnNaughtyAction(2 * stacksize)
        end
      end
    end
  end
end

AddComponentPostInit("onkilledother",giveadditionalnaughtiness)

 

the component I was trying to add postinit for were :

ACTIONS.MURDER from actions.lua or kramped:onkilledother from kramped.lua

Link to comment
Share on other sites

You entirely misunderstand:

  • Component - code that can be given to any entity without having to be rewritten
  • Action - just that, something a creature can do actively, is determined by components
  • Event - something that happens in or to an entity, can be listened for to trigger a function when it happens
Link to comment
Share on other sites

So this would be the way to do it:

AddComponentPostInit("kramped",
    function(self, inst)
        local onkilledother_old = self.onkilledother
        self.onkilledother = function(self, victim)
            if(victim)
            then
                if(victim.prefab=="crow")
                then
                    self:OnNaughtyAction(100)
                else
                    if(onkilledother_old)
                    then
                        onkilledother_old(self, victim)
                    end
                end
            end
        end
    end
)

This is for Don't Starve and not DST.  DST has a bad conforming file.

Link to comment
Share on other sites

@Mobbstar I get that I'm missing something however I'm not sure what xD & I'm sorry to say your explanation doesn't enlighten me much. Still thanks for trying to help me out :)

Thanks Carl

I think I get what I was missing. I thought the addcomponentpostinit could be used on functions inside the component xD

EDIT: SUCCESS ;) now getting the right amount of naughtiness when murdering stacks.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

Please be aware that the content of this thread may be outdated and no longer applicable.

×
  • Create New...