mirror of
				https://github.com/ErikasKontenis/SabrehavenServer.git
				synced 2025-10-30 19:56:22 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			100 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| local foodCondition = Condition(CONDITION_REGENERATION, CONDITIONID_DEFAULT)
 | |
| 
 | |
| function Player.feed(self, food)
 | |
| 	local condition = self:getCondition(CONDITION_REGENERATION, CONDITIONID_DEFAULT)
 | |
| 	if condition then
 | |
| 		condition:setTicks(condition:getTicks() + (food * 1000))
 | |
| 	else
 | |
| 		local vocation = self:getVocation()
 | |
| 		if not vocation then
 | |
| 			return nil
 | |
| 		end
 | |
| 
 | |
| 		foodCondition:setTicks(food * 1000)
 | |
| 		foodCondition:setParameter(CONDITION_PARAM_HEALTHGAIN, vocation:getHealthGainAmount())
 | |
| 		foodCondition:setParameter(CONDITION_PARAM_HEALTHTICKS, vocation:getHealthGainTicks() * 1000)
 | |
| 		foodCondition:setParameter(CONDITION_PARAM_MANAGAIN, vocation:getManaGainAmount())
 | |
| 		foodCondition:setParameter(CONDITION_PARAM_MANATICKS, vocation:getManaGainTicks() * 1000)
 | |
| 
 | |
| 		self:addCondition(foodCondition)
 | |
| 	end
 | |
| 	return true
 | |
| end
 | |
| 
 | |
| function Player.getClosestFreePosition(self, position, extended)
 | |
| 	if self:getAccountType() >= ACCOUNT_TYPE_GOD then
 | |
| 		return position
 | |
| 	end
 | |
| 	return Creature.getClosestFreePosition(self, position, extended)
 | |
| end
 | |
| 
 | |
| function Player.getDepotItems(self, depotId)
 | |
| 	return self:getDepotChest(depotId, true):getItemHoldingCount()
 | |
| end
 | |
| 
 | |
| function Player.isNoVocation(self)
 | |
| 	return self:getVocation():getId() == 0
 | |
| end
 | |
| 
 | |
| function Player.isSorcerer(self)
 | |
| 	return self:getVocation():getId() == 1 or self:getVocation():getId() == 5
 | |
| end
 | |
| 
 | |
| function Player.isDruid(self)
 | |
| 	return self:getVocation():getId() == 2 or self:getVocation():getId() == 6
 | |
| end
 | |
| 
 | |
| function Player.isPaladin(self)
 | |
| 	return self:getVocation():getId() == 3 or self:getVocation():getId() == 7
 | |
| end
 | |
| 
 | |
| function Player.isKnight(self)
 | |
| 	return self:getVocation():getId() == 4 or self:getVocation():getId() == 8
 | |
| end
 | |
| 
 | |
| function Player.isPremium(self)
 | |
| 	return self:getPremiumDays() > 0 or configManager.getBoolean(configKeys.FREE_PREMIUM)
 | |
| end
 | |
| 
 | |
| function Player.sendCancelMessage(self, message)
 | |
| 	if type(message) == "number" then
 | |
| 		message = Game.getReturnMessage(message)
 | |
| 	end
 | |
| 	return self:sendTextMessage(MESSAGE_STATUS_SMALL, message)
 | |
| end
 | |
| 
 | |
| function Player.isUsingOtClient(self)
 | |
| 	return self:getClient().os >= CLIENTOS_OTCLIENT_LINUX
 | |
| end
 | |
| 
 | |
| function Player.sendExtendedOpcode(self, opcode, buffer)
 | |
| 	if not self:isUsingOtClient() then
 | |
| 		return false
 | |
| 	end
 | |
| 
 | |
| 	local networkMessage = NetworkMessage()
 | |
| 	networkMessage:addByte(0x32)
 | |
| 	networkMessage:addByte(opcode)
 | |
| 	networkMessage:addString(buffer)
 | |
| 	networkMessage:sendToPlayer(self)
 | |
| 	networkMessage:delete()
 | |
| 	return true
 | |
| end
 | |
| 
 | |
| APPLY_SKILL_MULTIPLIER = true
 | |
| local addSkillTriesFunc = Player.addSkillTries
 | |
| function Player.addSkillTries(...)
 | |
| 	APPLY_SKILL_MULTIPLIER = false
 | |
| 	local ret = addSkillTriesFunc(...)
 | |
| 	APPLY_SKILL_MULTIPLIER = true
 | |
| 	return ret
 | |
| end
 | |
| 
 | |
| local addManaSpentFunc = Player.addManaSpent
 | |
| function Player.addManaSpent(...)
 | |
| 	APPLY_SKILL_MULTIPLIER = false
 | |
| 	local ret = addManaSpentFunc(...)
 | |
| 	APPLY_SKILL_MULTIPLIER = true
 | |
| 	return ret
 | |
| end
 | 
