From: Christian Heller <c.heller@plomlompom.de>
Date: Thu, 17 Dec 2020 00:29:55 +0000 (+0100)
Subject: Add stimulants, which boost energy.
X-Git-Url: https://plomlompom.com/repos/%7B%7B%20web_path%20%7D%7D/decks/calendar?a=commitdiff_plain;h=cf2a7a164c24e82a5efc4cfe9c56c4b4f2c442df;p=plomrogue2

Add stimulants, which boost energy.
---

diff --git a/plomrogue/tasks.py b/plomrogue/tasks.py
index cc37527..4a0e147 100644
--- a/plomrogue/tasks.py
+++ b/plomrogue/tasks.py
@@ -247,7 +247,7 @@ class Task_INTOXICATE(Task):
     def check(self):
         if self.thing.carrying is None:
             raise PlayError('carrying nothing to consume')
-        if self.thing.carrying.type_ not in {'Bottle', 'Cookie', 'Psychedelic'}:
+        if not self.thing.carrying.consumable:
             raise PlayError('cannot consume this kind of thing')
         if self.thing.carrying.type_ == 'Bottle' and\
            not self.thing.carrying.full:
@@ -259,11 +259,11 @@ class Task_INTOXICATE(Task):
             self.thing.carrying.empty()
             self.thing.send_msg('CHAT "You are drunk now."')
             self.thing.need_for_toilet += 1
-            self.thing.drunk = 10000
+            self.thing.drunk += 10000
             self.thing.invalidate('fov')
             self.thing.game.record_change(self.thing.position, 'other')
         elif self.thing.carrying.type_ == 'Psychedelic':
-            self.thing.tripping = 10000
+            self.thing.tripping += 10000
             self.thing.send_msg('CHAT "You start tripping."')
             self.thing.send_msg('RANDOM_COLORS')
             eaten = self.thing.uncarry()
@@ -273,6 +273,11 @@ class Task_INTOXICATE(Task):
             self.thing.add_cookie_char(self.thing.carrying.thing_char)
             eaten = self.thing.uncarry()
             self.thing.game.remove_thing(eaten)
+        elif self.thing.carrying.type_ == 'Stimulant':
+            self.thing.send_msg('CHAT "You feel a flash of energy."')
+            self.thing.energy += 100
+            eaten = self.thing.uncarry()
+            self.thing.game.remove_thing(eaten)
 
 
 
diff --git a/plomrogue/things.py b/plomrogue/things.py
index c538a23..6dbe8ef 100644
--- a/plomrogue/things.py
+++ b/plomrogue/things.py
@@ -28,6 +28,7 @@ class Thing(ThingBase):
     commandable = False
     cookable = False
     carried = False
+    consumable = False
 
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)
@@ -208,6 +209,7 @@ class Thing_Psychedelic(Thing):
     symbol_hint = 'P'
     portable = True
     cookable = True
+    consumable = True
 
 
 
@@ -224,6 +226,7 @@ class Thing_Bottle(Thing):
     thing_char = '~'
     spinnable = True
     cookable = True
+    consumable = True
 
     def empty(self):
         self.thing_char = '_'
@@ -435,9 +438,24 @@ class Thing_BottleDeposit(Thing):
 
 
 
+class Thing_Stimulant(Thing):
+    symbol_hint = 'e'
+    cookable = True
+    portable = True
+    consumable = True
+
+
+
+class Thing_StimulantSpawner(ThingSpawner):
+    symbol_hint = 'e'
+    child_type = 'Stimulant'
+
+
+
 class Thing_Cookie(Thing):
     symbol_hint = 'c'
     portable = True
+    consumable = True
 
     def __init__(self, *args, **kwargs):
         import string
diff --git a/rogue_chat.py b/rogue_chat.py
index 1fe4c91..b22decb 100755
--- a/rogue_chat.py
+++ b/rogue_chat.py
@@ -28,7 +28,8 @@ from plomrogue.things import (Thing_Player, Thing_Item, Thing_ItemSpawner,
                               Thing_MusicPlayer, Thing_Hat, Thing_HatRemixer,
                               Thing_Cookie, Thing_CookieSpawner, Thing_Psychedelic,
                               Thing_PsychedelicSpawner, Thing_DoorKey,
-                              Thing_Crate, Thing_CrateSpawner)
+                              Thing_Crate, Thing_CrateSpawner, Thing_Stimulant,
+                              Thing_StimulantSpawner)
 
 from plomrogue.config import config
 game = Game(config['savefile'])
@@ -107,6 +108,8 @@ game.register_thing_type(Thing_Psychedelic)
 game.register_thing_type(Thing_PsychedelicSpawner)
 game.register_thing_type(Thing_Crate)
 game.register_thing_type(Thing_CrateSpawner)
+game.register_thing_type(Thing_Stimulant)
+game.register_thing_type(Thing_StimulantSpawner)
 game.read_savefile()
 game.io.start_loop()
 for port in config['servers']: