def combatEndCheck(self):
removalList = []
follow = False
playerCounter = 0
for figther in self.listing:
removeFlag = self.listing[figther].deathCheck()
if removeFlag == True:
removalList.append(figther)
i = 0
for thing in self.order:
if thing[0] == figther:
break
i += 1
self.order.pop(i)
continue
if isinstance(self.listing[figther], Monster):
follow = True
if isinstance(self.listing[figther], PlayableCharacter) and self.listing[figther].currentHealth > 0:
playerCounter += 1
for body in removalList:
self.exp = self.exp + self.listing[body].experience
self.listing.pop(body)
if playerCounter <= 0:
follow = False
return follow
This is the final function we need to discuss for Combat(). It takes no parameters and it returns bool depending on whether or not combat ends.
The rundown
removalList = []
follow = False
playerCounter = 0
These variables will be used to do a good chunk of the work. removalList will be used to remove dead monsters from listing and order. Follow will hold the bool which we return at the end. Lastly, playercounter will be used to keep track of how many playable characters are still standing.
for figther in self.listing:
removeFlag = self.listing[figther].deathCheck()
if removeFlag == True:
removalList.append(figther)
i = 0
for thing in self.order:
if thing[0] == figther:
break
i += 1
self.order.pop(i)
continue
if isinstance(self.listing[figther], Monster):
follow = True
if isinstance(self.listing[figther], PlayableCharacter) and self.listing[figther].currentHealth > 0:
playerCounter += 1
This loop goes over all the characters in listing. I save the bool from deathCheck() to removeFlag. If removeflag is true then we add them to the removalList and remove them from order. Then I check if it is a monster or playable character. In case of a monster we make follow true. In the case of playable character, we check to see if they have more than zero hp and if they do, we increase the playercounter by 1.
for body in removalList:
self.exp = self.exp + self.listing[body].experience
self.listing.pop(body)
This loop takes the names in removalList and
removes them and their corresponding objects from listing.
if playerCounter <= 0:
follow = False
return follow
Lastly, I check the playercounter. If it’s less than 1 we will set
follow false. Afterward, we return follow.
Comments
Post a Comment