예제 #1
0
    def attemptAttack(self):
        self.defender.updateHitPoints(self.defender.getConstitutionModifier())
        successfulRoll = Roll(self.attacker, self.defender,
                              self.roll).isSuccessful()

        if successfulRoll:
            Damage(self.attacker, self.defender, self.roll).applyDamage()
            self.attacker.updateCharacter()
예제 #2
0
	def __init__(self, Str=0,Con=0,Int=0,Wis=0,Agi=0,Dex=0):
		self.stats={
			"Str" : Str,# Strength - Влияет на урон оружием
			"Con" : Con,# Construction - Влияет на кол-во Hp
			"Wis" : Wis,# Wisdom - Влияет на кол-во Mp
			"Int" : Int,# Intellect - Влияет на урон магии
			"Agi" : Agi,# Agility - влияет на способность уворота и попадания по противнику
			"Dex" : Dex # Dexterity - влияет на очередность ходов
		}

		self._HpMultiplier = 10 # 1 Con даёт 10 Hp
		self._MpMultiplier = 10 # 1 Int даёт 10 Mp

		#Note: Кол-во hp и mp определяется статистиками Con и Int
		self.maxHp = self.con() * self._HpMultiplier
		self.hp = self.maxHp
		self.maxMp = self.wis() * self._MpMultiplier
		self.mp = self.maxMp

		#Note: базовое кол-во урона определяется кол-вом str
		self.damage = Damage()
예제 #3
0
	def removeStats(self, stats):#stats - that should be removed from self
		self.stats["Str"] -= stats.str()
		self.stats["Con"] -= stats.con()
		self.stats["Wis"] -= stats.wis()
		self.stats["Int"] -= stats.int()
		self.stats["Agi"] -= stats.agi()
		self.stats["Dex"] -= stats.dex()

		self.maxHp -= stats.con() * self._HpMultiplier
		self.hp -= stats.con() * self._HpMultiplier

		self.maxMp -= stats.wis() * self._MpMultiplier
		self.mp -= stats.wis() * self._MpMultiplier

		self.damage.removeDamage(Damage(stats.str(), stats.str()))
예제 #4
0
	def addStats(self, stats):#stats - that should be added to self
		self.stats["Str"] += stats.str()
		self.stats["Con"] += stats.con()
		self.stats["Wis"] += stats.wis()
		self.stats["Int"] += stats.int()
		self.stats["Agi"] += stats.agi()
		self.stats["Dex"] += stats.dex()

		self.maxHp += stats.con() * self._HpMultiplier
		self.hp += stats.con() * self._HpMultiplier

		self.maxMp += stats.wis() * self._MpMultiplier
		self.mp += stats.wis() * self._MpMultiplier

		self.damage.addDamage(Damage(stats.str(), stats.str()))
예제 #5
0
 def calculate_damage(self, other: Target) -> Damage:
     base_damage = self.__get_base_damage()
     damage_modifier = self.__get_damage_modifier()
     total_damage = round(base_damage * damage_modifier)
     soak = self.__get_soak(other, total_damage)
     return Damage(max(0, total_damage - soak))
예제 #6
0
class Stats: #TODOlater Question может N кол-во Con даёт резист? типо 10 Con +1 resist ко всему
	def __init__(self, Str=0,Con=0,Int=0,Wis=0,Agi=0,Dex=0):
		self.stats={
			"Str" : Str,# Strength - Влияет на урон оружием
			"Con" : Con,# Construction - Влияет на кол-во Hp
			"Wis" : Wis,# Wisdom - Влияет на кол-во Mp
			"Int" : Int,# Intellect - Влияет на урон магии
			"Agi" : Agi,# Agility - влияет на способность уворота и попадания по противнику
			"Dex" : Dex # Dexterity - влияет на очередность ходов
		}

		self._HpMultiplier = 10 # 1 Con даёт 10 Hp
		self._MpMultiplier = 10 # 1 Int даёт 10 Mp

		#Note: Кол-во hp и mp определяется статистиками Con и Int
		self.maxHp = self.con() * self._HpMultiplier
		self.hp = self.maxHp
		self.maxMp = self.wis() * self._MpMultiplier
		self.mp = self.maxMp

		#Note: базовое кол-во урона определяется кол-вом str
		self.damage = Damage()

	## Возвращает элементы словаря stats
	## позволяет не обращаться к словарю на прямую для вывода статистик
	def items(self):
		return self.stats.items()

	def str(self):
		return self.stats["Str"]

	def con(self):
		return self.stats["Con"]

	def wis(self):
		return self.stats["Wis"]

	def int(self):
		return self.stats["Int"]

	def agi(self):
		return self.stats["Agi"]

	def dex(self):
		return self.stats["Dex"]

	## Добавляет статистики к своим и перещитывает hp mp и damage в self
	def addStats(self, stats):#stats - that should be added to self
		self.stats["Str"] += stats.str()
		self.stats["Con"] += stats.con()
		self.stats["Wis"] += stats.wis()
		self.stats["Int"] += stats.int()
		self.stats["Agi"] += stats.agi()
		self.stats["Dex"] += stats.dex()

		self.maxHp += stats.con() * self._HpMultiplier
		self.hp += stats.con() * self._HpMultiplier

		self.maxMp += stats.wis() * self._MpMultiplier
		self.mp += stats.wis() * self._MpMultiplier

		self.damage.addDamage(Damage(stats.str(), stats.str()))

	## Отнимает статистики от своих и перещитывает hp mp и damage в self
	def removeStats(self, stats):#stats - that should be removed from self
		self.stats["Str"] -= stats.str()
		self.stats["Con"] -= stats.con()
		self.stats["Wis"] -= stats.wis()
		self.stats["Int"] -= stats.int()
		self.stats["Agi"] -= stats.agi()
		self.stats["Dex"] -= stats.dex()

		self.maxHp -= stats.con() * self._HpMultiplier
		self.hp -= stats.con() * self._HpMultiplier

		self.maxMp -= stats.wis() * self._MpMultiplier
		self.mp -= stats.wis() * self._MpMultiplier

		self.damage.removeDamage(Damage(stats.str(), stats.str()))

	## Возвращает характеристики в виде строки
	def __str__(self):
		result=""
		for statistic, value in self.items():
			result+="{0}: {1}\n".format(statistic, value)
		return result