Luninariel

Python Monsters - WIP

Oct 17th, 2019
283
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 8.12 KB | None | 0 0
  1. class Monster:
  2.     """parent class for all Monsters"""
  3.     def __init__(self, name, weight, health = 30):
  4.         """initialies an Animal instance"""
  5.         self.__name = name
  6.         self.__weight = weight
  7.         self.__health = health
  8.  
  9.     #Standard Damage Taking, Health - Damage
  10.     def takeDamage(self, damage):
  11.         if (damage < self.__health):
  12.             healthRemaining = self.__health - damage
  13.             print("%s Has Taken Damage! Health Remaining: %d"  %(self.__name,healthRemaining))
  14.             self.__health = healthRemaining
  15.        
  16.  
  17.         else:
  18.             print("Critical Blow! %s is defeated!"%(self.__name))
  19.             self.__health = 0
  20.  
  21.     #Returns whether a monster is Alive or Not
  22.     def isAlive(self):
  23.         return self.__health > 0
  24.  
  25.     #Returns the health of a monster
  26.     def getHealth(self):
  27.         return self.__health
  28.  
  29.     @property
  30.     def weight(self):
  31.         return self.__weight
  32.  
  33.     @property
  34.     def name(self):
  35.         return self.__name
  36.  
  37.     #Allows a Monster to recover Health
  38.     def recoverHealth(self, recovery):
  39.         newHealth = self.__health + recovery
  40.         self.__health = newHealth
  41.         print(" %s Recovered Health! New Health: %d" %(self.__name, self.__health))
  42.  
  43.  
  44.  
  45. #ArmoredMonster, a subclass of Monster
  46. class ArmoredMonster(Monster):
  47.     def __init__(self, name, weight, health, armor = 30):
  48.         super().__init__(name, weight, health)
  49.         self.__armor = armor
  50.  
  51.     #Returns an armored monsters Armor
  52.     def getArmor(self):
  53.         return self.__armor
  54.  
  55.     #Armored Monster Taking Damage. ArmoredMonsters take damage to Armor first, then their health.
  56.     def takeDamage(self, damage):
  57.         if(damage <= self.__armor ):
  58.             remainingArmor = self.__armor - damage
  59.             print("%s Has Taken Damage! Armor Remaining: %d" %(self._Monster__name,remainingArmor))
  60.             self.__armor = remainingArmor
  61.            
  62.         elif(damage < self._Monster__health+self.__armor):
  63.             remainingArmor = self.__armor - damage
  64.             self.__armor = remainingArmor
  65.             remainingHealth = remainingArmor + self._Monster__health
  66.             print("%s Has Taken Damage! Health Remaining: %d" %(self._Monster__name,remainingHealth))
  67.             self._Monster__health = remainingHealth
  68.             self.__armor = 0
  69.  
  70.         else:
  71.             self.__armor = 0
  72.             self._Monster__health = 0
  73.             print("Critical Blow! %s is defeated!" %(self._Monster__name))
  74.            
  75.  
  76.     #Allows an Armored Monster to repair its armor
  77.     def repairArmor(self, repair):
  78.         newArmor = self.__armor + repair
  79.         self.__armor = newArmor
  80.         print("%s Repaired Their Armor! New Armor: %d" %(self._Monster__name, self.__armor))
  81.  
  82. #ShieldedMonster, a subclass of Monster
  83. class ShieldedMonster(Monster):
  84.     def __init__(self, name, weight, health, shield = 50, resistance = "arc"):
  85.         super().__init__(name, weight, health)
  86.         self.__shield = shield
  87.         self.__resistance = resistance
  88.  
  89.     #Returns a shielded Monsters Shield value
  90.     def getShield(self):
  91.         return self.__shield
  92.  
  93.     #Returns the Resistance of a Shielded Monsters Shield
  94.     def getResistance(self):
  95.         return self.__resistance
  96.  
  97.  
  98.     #Since Shielded Monsters must take damage to their shield first, we must determine if the elements match first, then use that to determine damage
  99.     def takeDamage(self, damage, element = "none"):
  100.         if(element.lower() == self.__resistance.lower()):
  101.             shieldDamage = (damage * 2)
  102.         else:
  103.             shieldDamage = (damage * 0.5)
  104.  
  105.  
  106.         if(shieldDamage <= self.__shield ):
  107.             remainingShield = self.__shield - shieldDamage
  108.             print("%s Has Taken Damage! Shield Remaining: %d" %(self._Monster__name,remainingShield))
  109.             self.__shield = remainingShield
  110.            
  111.         elif(shieldDamage < self._Monster__health + self.__shield):
  112.             remainingShield = self.__shield - shieldDamage
  113.             self.__shield = remainingShield
  114.             remainingHealth = remainingShield + self._Monster__health
  115.             print("%s Has Taken Damage! Health Remaining: %d" %(self._Monster__name,remainingHealth))
  116.             self._Monster__health = remainingHealth
  117.             self.__armor = 0
  118.  
  119.         else:
  120.             self.__shield = 0
  121.             self._Monster__health = 0
  122.             print("Critical Blow! %s is defeated!" %(self._Monster__name))
  123.  
  124. #A Cabal, A classification of Monster    
  125. class Cabal(Monster):
  126.     def __init__(self,name,weight, health):
  127.         super().__init__(name, weight, health)
  128.        
  129.  
  130.     #Returns the Title of a Cabal based on their Weight classification.
  131.     def getTitle(self):
  132.         if(self._Monster__weight > 1000):
  133.             self.__title = "Emperor"
  134.         elif(self._Monster__weight > 900):
  135.             self.__title = "Dominus"
  136.         elif(self._Monster__weight > 800):
  137.             self.__title = "Colossus"
  138.         elif(self._Monster__weight > 700):
  139.             self.__title = "Centurion"
  140.         elif(self._Monster__weight > 600):
  141.             self.__title = "Gladiator"
  142.         elif(self._Monster__weight > 500):
  143.             self.__title = "Incendior"
  144.         elif(self._Monster__weight > 400):
  145.             self.__title = "Phalanx"
  146.         elif(self._Monster__weight > 300):
  147.             self.__title = "Legionary"
  148.         elif(self._Monster__weight > 200):
  149.             self.__title = "Psion"
  150.         elif(self._Monster__weight > 100):
  151.             self.__title = "War Beast"
  152.         else:
  153.             self.__title = "Unworthy"
  154.        
  155.  
  156.         return self.__title
  157.            
  158.  
  159. #A Fallen, a Classification of Shielded Monster
  160. class Fallen(ShieldedMonster):
  161.     def __init__(self, name, weight, health, shield = 50, resistance = "arc"):
  162.         super().__init__(name, weight, health, shield, resistance)
  163.  
  164.  
  165.     #Assigns the Title of the Fallen based on their Shield Capacity
  166.         if(self._ShieldedMonster__shield > 700):
  167.             self.__title= "Kell"
  168.         elif(self._ShieldedMonster__shield > 600):
  169.             self.__title = "Archon"
  170.         elif(self._ShieldedMonster__shield > 500):
  171.             self.__title = "Servitor"
  172.         elif(self._ShieldedMonster__shield > 400):
  173.             self.__title = "Captain"
  174.         elif(self._ShieldedMonster__shield > 300):
  175.             self.__title = "Vandal"
  176.         elif(self._ShieldedMonster__shield > 200):
  177.             self.__title = "Dreg"
  178.         elif(self._ShieldedMonster__shield > 100):
  179.             self.__title = "Shank"
  180.         else:
  181.             self.__title = "Hatchling"
  182.  
  183. #Returns the title of a Fallen
  184.     def getTitle(self):
  185.         return self.__title
  186.  
  187.  
  188. #A Hive, a Classification of Armored Monster
  189. class Hive(ArmoredMonster):
  190.     def __init__(self, name, weight, health, armor = 30):
  191.         super().__init__(name, weight, health, armor)
  192.  
  193.         if(self._ArmoredMonster__armor > 600):
  194.             self.__title = "Blood of Oryx"
  195.         elif(self._ArmoredMonster__armor > 500):
  196.             self.__title = "Captain"
  197.         elif(self._ArmoredMonster__armor > 400):
  198.             self.__title = "Knight"
  199.         elif(self._ArmoredMonster__armor > 300):
  200.             self.__title = "Adherent"
  201.         elif(self._ArmoredMonster__armor > 200):
  202.             self.__title = "Acolyte"
  203.         elif(self._ArmoredMonster__armor > 100):
  204.             self.__title = "Thrall"
  205.         else:
  206.             self.__title = "Larva"
  207.  
  208.     #Returns the Title of the Hive
  209.     def getTitle(self):
  210.         return self.__title
Advertisement
Add Comment
Please, Sign In to add comment