self.behavior = None
self.behaviorData = {}
+ def check(self):
+ badValues = [k for k, v in self.stats.iteritems() if v < 0]
+ if badValues:
+ logging.debug("%s died by bad genes: %s", self, badValues)
+
def addGene(self, gene):
self.genes.append(gene)
gene.apply(self)
+ self.check()
return self
def getGenes(self):
class Gene(object):
def __init__(self):
self.name = self.__class__.__name__
- self.attribute = ""
- self.modifier = 0
+
+ def modifyStat(self, entity, attribute, value):
+ stat = entity.stats.setdefault(attribute, 0)
+ entity.stats["stat"] = stat + value
def apply(self, entity):
- stat = entity.stats.setdefault(self.attribute, 0)
- if stat + self.modifier >= 0:
- entity.stats[self.attribute] = stat + self.modifier
return self
def __repr__(self):
class LongLegs(Gene):
- def __init__(self):
- super(LongLegs, self).__init__()
- self.attribute = "speed"
- self.modifier = 1
+ def apply(self, entity):
+ self.modifyStat(entity, "speed", 0.5)
class ShortLegs(Gene):
- def __init__(self):
- super(ShortLegs, self).__init__()
- self.attribute = "speed"
- self.modifier = -1
+ def apply(self, entity):
+ self.modifyStat(entity, "speed", 0.5)
class ClassicBeauty(Gene):
- def __init__(self):
- super(ClassicBeauty, self).__init__()
- self.attribute = "charisma"
- self.modifier = 1
+ def apply(self, entity):
+ self.modifyStat(entity, "charisma", 0.5)
class ExoticBeauty(Gene):
- def __init__(self):
- super(ExoticBeauty, self).__init__()
- self.attribute = "charisma"
- self.modifier = 2
+ def apply(self, entity):
+ self.modifyStat(entity, "charisma", 1)
class Eyes(Gene):
- def __init__(self):
- super(Eyes, self).__init__()
- self.attribute = "perception"
- self.modifier = 2
+ def apply(self, entity):
+ self.modifyStat(entity, "perception", 2)
import inspect, sys