Jump to content

Add a check for Sanity on Grue's attack


Recommended Posts

It'd be nice if this code in grue.lua component gets changed from this current code code

Spoiler

function Grue:OnUpdate(dt)
    if self.nextHitTime ~= nil and self.nextHitTime > 0 then
        self.nextHitTime = self.nextHitTime - dt
    end

    if self.nextSoundTime ~= nil and self.nextSoundTime > 0 then
        self.nextSoundTime = self.nextSoundTime - dt

        if self.nextSoundTime <= 0 then
            if self.soundwarn ~= nil then
                self.inst.SoundEmitter:PlaySound(self.soundwarn)
            end
            self.inst:DoTaskInTime(self.warndelay, self.inst.PushEvent, "heargrue")
        end
    end

    if self.nextHitTime ~= nil and self.nextHitTime <= 0 then
        self.level = self.level + 1
        self.nextHitTime = 5 + math.random() * 6
        self.nextSoundTime = self.nextHitTime * (.4 + math.random() * .4)

        if self.soundattack ~= nil then
            self.inst.SoundEmitter:PlaySound(self.soundattack)
        end

        if self.level > (self.resistance or 0) then
            self.inst.components.combat:GetAttacked(nil, TUNING.GRUEDAMAGE, nil, "darkness")
			self.inst.components.sanity:DoDelta(-TUNING.SANITY_MEDLARGE)
            self.inst:PushEvent("attackedbygrue")
        else
            self.inst:PushEvent("resistedgrue")
        end
    end
end

to this

Spoiler

function Grue:OnUpdate(dt)
    if self.nextHitTime ~= nil and self.nextHitTime > 0 then
        self.nextHitTime = self.nextHitTime - dt
    end

    if self.nextSoundTime ~= nil and self.nextSoundTime > 0 then
        self.nextSoundTime = self.nextSoundTime - dt

        if self.nextSoundTime <= 0 then
            if self.soundwarn ~= nil then
                self.inst.SoundEmitter:PlaySound(self.soundwarn)
            end
            self.inst:DoTaskInTime(self.warndelay, self.inst.PushEvent, "heargrue")
        end
    end

    if self.nextHitTime ~= nil and self.nextHitTime <= 0 then
        self.level = self.level + 1
        self.nextHitTime = 5 + math.random() * 6
        self.nextSoundTime = self.nextHitTime * (.4 + math.random() * .4)

        if self.soundattack ~= nil then
            self.inst.SoundEmitter:PlaySound(self.soundattack)
        end

        if self.level > (self.resistance or 0) then
            self.inst.components.combat:GetAttacked(nil, TUNING.GRUEDAMAGE, nil, "darkness")
			if self.inst.components.sanity then
				self.inst.components.sanity:DoDelta(-TUNING.SANITY_MEDLARGE)
			end
            self.inst:PushEvent("attackedbygrue")
        else
            self.inst:PushEvent("resistedgrue")
        end
    end
end

Adding a check for if the entity being attacked has Sanity to remove Sanity, then if they don't have Sanity the game doesn't crash. I'm sure this would be extremely easy to add & it'd be good for any modders adding AI players (like me) which don't really need Sanity :).

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...