home · contact · privacy
Server: Use thing's .consumable as what's pushing up its .satiation.
authorChristian Heller <c.heller@plomlompom.de>
Sun, 8 Feb 2015 04:47:30 +0000 (05:47 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Sun, 8 Feb 2015 04:47:30 +0000 (05:47 +0100)
README
SERVER_COMMANDS
confserver/world
src/server/god_commands.c
src/server/thing_actions.c
src/server/things.h

diff --git a/README b/README
index 49cf3a8158a888a7299f2118ce012af0d5804910..ac0e0a37322fbbee2f2f1bac41de7bc7d23d2d87 100644 (file)
--- a/README
+++ b/README
@@ -6,11 +6,11 @@ plomlompom has insanely ambitious long-term plans).
 
 You can move around a player on an island and meet different enemies. You have 5
 hitpoints to lose before death. Enemies start with different amounts of
-hitpoints, depending on their species. Dead enemies become dirt, skeletons or
-"magic meat" -- such objects can be collected, and "magic meat" can be consumed
-to gain hitpoints (if allowed to lie on the ground for a while it may even
-multiply ...). Note that different kinds of movements/actions take different
-numbers of turns to finish.
+hitpoints, depending on their species. Dead enemies become dirt, skeletons, or
+food to consume (each turn reduces one's "satiation", and the lower it is, the
+stronger the chance of suffering from hunger and thereby losing hitpoints). Note
+that different kinds of movements/actions take different numbers of turns to
+finish.
 
 Enemies' AI is very dumb so far: Each turn, they look out for actors of
 different species to flee from (if their type starts out with more hitpoints
index a5a83a2d4bea8be6948f32cccec42ea6f6a4daa7..ef52922e6b9e8f042ca18fbcf43d7847db52a9fa 100644 (file)
@@ -190,9 +190,9 @@ change it to the lowest unused thing type ID. If thing type of ID does not exist
 yet, create it with default name "(none)", corpse ID equal to the new thing
 type's ID, and remaining thing type attributes to 0.
 
-TT_CONSUMABLE [0-255]
+TT_CONSUMABLE [0-65535]
 Set selected thing type's consumability value to argument – the number of
-lifepoints earned by consuming/using things of that type.
+.satiation score points earned by consuming/using things of that type.
 
 TT_START_NUMBER [0-255]
 Set selected thing type's number of things of type to spawn on successful
index d0a20efbebe9097dae805d479d3a71cf5b565b2b..e8cb6a460c1dce038b5e0debd5fe4c9b5c004ed7 100644 (file)
@@ -72,7 +72,7 @@ TT_START_NUMBER 1
 TT_LIFEPOINTS 0
 TT_SYMBOL m
 TT_NAME 'MAGIC MEAT'
-TT_CONSUMABLE 3
+TT_CONSUMABLE 512
 TT_PROLIFERATE 255
 
 TT_ID 0
index d785d8cb0068663d29d606ef6f8cbdeb2d31a71f..f03dcf1caa07233350d649503a763a5b933f6e54 100644 (file)
@@ -95,7 +95,7 @@ static uint8_t parse_thingtype_manipulation(char * tok0, char * tok1)
         return err_line(1, "No thing type defined to manipulate yet.");
     }
     int16_t id;
-    if (   parse_val(tok0,tok1,s[S_CMD_TT_CONSUM],'8',(char *) &tt->consumable)
+    if (   parse_val(tok0,tok1,s[S_CMD_TT_CONSUM],'u',(char *) &tt->consumable)
         || parse_val(tok0,tok1,s[S_CMD_TT_HP],'8',(char *) &tt->lifepoints)
         || parse_val(tok0,tok1,s[S_CMD_TT_STARTN],'8',(char *) &tt->start_n)
         || parse_val(tok0,tok1,s[S_CMD_TT_SYMB],'c',(char *) &tt->char_on_map)
index 839a6e36d85eaa84644e723f576c9fa069c2cf6c..a5c78ba55027a10cb094bfaffebe43ffc8356a47 100644 (file)
@@ -317,6 +317,8 @@ extern void actor_use(struct Thing * t)
             {
                 t->owns = next;
             }
+            t->satiation = t->satiation + tt->consumable > INT16_MAX ?
+                           INT16_MAX : t->satiation + tt->consumable;
             t->lifepoints = t->lifepoints + tt->consumable;
         }
     }
index 494d1a5aade2461d07c723e9f10ab53c68abc0f5..62ef90836257987f28603d9127670d7692e04ae4 100644 (file)
@@ -48,9 +48,9 @@ struct ThingType
     char char_on_map;    /* thing symbol to appear on map */
     char * name;         /* string to describe thing in game log */
     uint16_t stomach;    /* if >0, defines onset & chance of hunger suffering */
+    uint16_t consumable; /* can be eaten if !0, for so much .satiation win */
     uint8_t corpse_id;   /* type to change thing into upon destruction */
     uint8_t lifepoints;  /* default start value for thing's .lifepoints */
-    uint8_t consumable;  /* can be eaten if !0, for so much hitpoint win */
     uint8_t start_n;     /* how many of these does the map start with? */
     uint8_t proliferate; /* if >0: inverse of chance to proliferate */
 };