--*********************************************************** --** ROBERT JOHNSON ** --*********************************************************** require "TimedActions/ISBaseTimedAction" ISMedicalCheckAction = ISBaseTimedAction:derive("ISMedicalCheckAction"); ISMedicalCheckAction.HealthWindows = {} function ISMedicalCheckAction.getHealthWindowForPlayer(playerObj) return ISMedicalCheckAction.HealthWindows[playerObj] end function ISMedicalCheckAction:isValid() return self.character:getAccessLevel() ~= "None" or (self.otherPlayerX == self.otherPlayer:getX() and self.otherPlayerY == self.otherPlayer:getY()); end function ISMedicalCheckAction:waitToStart() if self.character:isSeatedInVehicle() then return false end self.character:faceThisObject(self.otherPlayer) return self.character:shouldBeTurning() end function ISMedicalCheckAction:update() self.character:faceThisObject(self.otherPlayer) end function ISMedicalCheckAction:start() self:setActionAnim("MedicalCheck") end function ISMedicalCheckAction:stop() ISBaseTimedAction.stop(self); end function ISMedicalCheckAction:perform() local playerNum = self.character:getPlayerNum() local x = getPlayerScreenLeft(playerNum) + 70 local y = getPlayerScreenTop(playerNum) + 50 local healthPanel = nil local healthWindow = ISMedicalCheckAction.getHealthWindowForPlayer(self.otherPlayer) if healthWindow then healthPanel = healthWindow.nested healthWindow:addToUIManager() healthWindow:setVisible(true) else healthPanel = ISHealthPanel:new(self.otherPlayer, x, y, 400, 400) healthPanel:initialise() local title = getText("IGUI_health_playerHealth", self.otherPlayer:getDescriptor():getForename().." "..self.otherPlayer:getDescriptor():getSurname()) if isClient() then title = getText("IGUI_health_playerHealth", self.otherPlayer:getUsername()) end local wrap = healthPanel:wrapInCollapsableWindow(title); wrap:setResizable(false) wrap:addToUIManager(); wrap.visibleTarget = self; ISMedicalCheckAction.HealthWindows[self.otherPlayer] = wrap end healthPanel.doctorLevel = self.character:getPerkLevel(Perks.Doctor); healthPanel:setOtherPlayer(self.character) -- self.otherPlayer:setFullHealthRemote(true); if JoypadState.players[playerNum+1] then JoypadState.players[playerNum+1].focus = healthPanel updateJoypadFocus(JoypadState.players[playerNum+1]) end if self.otherPlayer then self.character:startReceivingBodyDamageUpdates(self.otherPlayer) end -- needed to remove from queue / start next. ISBaseTimedAction.perform(self); end function ISMedicalCheckAction:new(character, otherPlayer) local o = {} setmetatable(o, self) self.__index = self o.character = character; o.otherPlayer = otherPlayer; o.otherPlayerX = otherPlayer:getX(); o.otherPlayerY = otherPlayer:getY(); o.stopOnWalk = true; o.stopOnRun = true; o.maxTime = 150 - (character:getPerkLevel(Perks.Doctor) * 2.5); o.forceProgressBar = true; if character:isTimedActionInstant() then o.maxTime = 1; end return o; end