--*********************************************************** --** THE INDIE STONE ** --*********************************************************** require "TimedActions/ISBaseTimedAction" ISSmashVehicleWindow = ISBaseTimedAction:derive("ISSmashVehicleWindow") function ISSmashVehicleWindow:isValid() return self.window and self.window:isHittable() end function ISSmashVehicleWindow:waitToStart() self.character:faceThisObject(self.vehicle) return self.character:shouldBeTurning() end function ISSmashVehicleWindow:update() -- if self.character:pressedMovement() then -- self:forceStop() -- return -- end -- self.character:faceThisObject(self.vehicle) -- local weapon = self.character:getPrimaryHandItem() -- -- TODO: different animations when inside vehicle -- if instanceof(weapon, "HandWeapon") and weapon:getSwingAnim() and not weapon:isRanged() then -- self.character:PlayAnimUnlooped("Attack_" .. weapon:getSwingAnim()) -- else -- self.character:PlayAnimUnlooped("WindowSmash") -- end -- local spriteDef = self.character:getSpriteDef() -- spriteDef:setFrameSpeedPerFrame(0.18) -- local frame = spriteDef:getFrame() -- if self.frame < 5 and frame >= 5 then -- self.window:hit(self.character) -- end -- self.frame = frame -- if self.character:getSpriteDef():isFinished() then -- self:forceComplete() -- end self.character:setMetabolicTarget(Metabolics.UsingTools); end function ISSmashVehicleWindow:start() -- self.action:setBlockMovementEtc(true) -- self.frame = 0 -- TODO: set Finished=false if already playing Attack_ animation end function ISSmashVehicleWindow:stop() ISBaseTimedAction.stop(self) end function ISSmashVehicleWindow:perform() self.character:smashCarWindow(self.part) -- needed to remove from queue / start next. ISBaseTimedAction.perform(self) end function ISSmashVehicleWindow:new(character, part, open) local o = {} setmetatable(o, self) self.__index = self o.character = character o.vehicle = part:getVehicle() o.part = part o.window = part:getWindow() o.open = open o.maxTime = 0 return o end