+
+ def proceed(self):
+ super().proceed()
+ if self.drunk >= 0:
+ self.drunk -= 1
+ if self.tripping >= 0:
+ self.tripping -= 1
+ if self.need_for_toilet > 0:
+ terrain = self.game.maps[self.position[0]][self.position[1]]
+ if terrain in self.game.terrains:
+ terrain_type = self.game.terrains[terrain]
+ if 'toilet' in terrain_type.tags:
+ self.send_msg('CHAT "You use the toilet. What a relief!"')
+ self.need_for_toilet = 0
+ if self.need_for_toilet > 0:
+ if random.random() > 0.9999:
+ self.need_for_toilet += 1
+ self.game.changed = True
+ if 100000 * random.random() < self.need_for_toilet:
+ self.send_msg('CHAT "You need to go to a toilet."')
+ if self.need_for_toilet > 100:
+ self.send_msg('CHAT "You pee into your pants. Eww!"')
+ self.need_for_toilet = 0
+ self.game.changed = True
+ if self.drunk == 0:
+ self.send_msg('CHAT "You sober up."')
+ self.invalidate('fov')
+ self.game.changed = True
+ if self.tripping == 0:
+ self.send_msg('DEFAULT_COLORS')
+ self.send_msg('CHAT "You sober up."')
+ self.game.changed = True
+ elif self.tripping > 0 and self.tripping % 250 == 0:
+ self.send_msg('RANDOM_COLORS')
+ self.game.changed = True
+ if random.random() > 0.9999:
+ if self.standing:
+ self.energy -= 1
+ else:
+ self.energy += 1
+ if self.energy < 0 and self.energy % 5 == 0:
+ self.send_msg('CHAT "All that walking or standing uses up '
+ 'your energy, which makes you slower. Find a'
+ ' place to sit or lie down to regain it."')
+ self.game.changed = True
+ if self.dancing and random.random() > 0.99 and not self.next_task[0]:
+ self.dancing -= 1
+ direction = random.choice(self.game.map_geometry.directions)
+ self.set_next_task('MOVE', [direction])
+ if random.random() > 0.9:
+ self.energy -= 1
+ self.game.changed = True
+ if 1000000 * random.random() < self.energy:
+ self.send_msg('CHAT "Your body tries to '
+ 'dance off its energy surplus."')
+ self.dancing = 50
+ self.game.changed = True
+
+ def send_msg(self, msg):
+ for c_id in self.game.sessions:
+ if self.game.sessions[c_id]['thing_id'] == self.id_:
+ self.game.io.send(msg, c_id)
+ break
+
+ def uncarry(self):
+ t = self.carrying
+ t.carried = False
+ self.carrying = None
+ return t
+
+ def add_cookie_char(self, c):
+ if not self.name in self.game.players_hat_chars:
+ self.game.players_hat_chars[self.name] = ' #' # default
+ if not c in self.game.players_hat_chars[self.name]:
+ self.game.players_hat_chars[self.name] += c
+
+ def get_cookie_chars(self):
+ chars = ' #' # default
+ if self.name in self.game.players_hat_chars:
+ chars = self.game.players_hat_chars[self.name]
+ chars_split = list(chars)
+ chars_split.sort()
+ return ''.join(chars_split)