From 288d17d90b02d8648f6629b814c9e6d699a371c1 Mon Sep 17 00:00:00 2001 From: Christian Heller Date: Thu, 12 Mar 2015 15:52:26 +0100 Subject: [PATCH] Replace TT_CONSUMABLE with more general TT_TOOL (type) and TT_TOOLPOWER. --- SERVER_COMMANDS | 11 +++++++--- confserver/world | 19 ++++++++-------- roguelike-server | 57 +++++++++++++++++++++++++++++------------------- testing/ref_end | 45 +++++++++++++++++++++++--------------- testing/start | 21 +++++++++--------- 5 files changed, 90 insertions(+), 63 deletions(-) diff --git a/SERVER_COMMANDS b/SERVER_COMMANDS index 3763bb7..b8385d3 100644 --- a/SERVER_COMMANDS +++ b/SERVER_COMMANDS @@ -194,9 +194,14 @@ 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, symbol "?", and remaining thing type attributes to 0. -TT_CONSUMABLE [0-65535] -Set selected thing type's consumability value to argument – the number of -.satiation score points earned by consuming/using things of that type. +TT_TOOL [|food] +(May be left empty.) Defines the way things of the selected type can be used. +The only options so far that is interpreted is "food" (may be consumed). + +TT_TOOLPOWER [0 to 65535] +Set selected thing type's tool power value to argument. If its tool type is +"food", this sets the number of .satiation score points earned by consuming +things of that type. TT_START_NUMBER [0-255] Set selected thing type's number of things of type to spawn on successful diff --git a/confserver/world b/confserver/world index 676dfe2..669c088 100644 --- a/confserver/world +++ b/confserver/world @@ -26,7 +26,7 @@ TT_START_NUMBER 1 TT_LIFEPOINTS 30 TT_SYMBOL @ TT_NAME HUMAN -TT_CONSUMABLE 0 +TT_TOOLPOWER 0 TT_STORAGE 5 TT_ID 1 @@ -34,14 +34,14 @@ TT_START_NUMBER 0 TT_LIFEPOINTS 0 TT_SYMBOL 0 TT_NAME GLOBE -TT_CONSUMABLE 9001 +TT_TOOLPOWER 9001 TT_ID 2 TT_START_NUMBER 27 TT_LIFEPOINTS 6 TT_SYMBOL a TT_NAME ANT -TT_CONSUMABLE 0 +TT_TOOLPOWER 0 TT_STORAGE 1 TT_ID 3 @@ -49,7 +49,7 @@ TT_START_NUMBER 9 TT_LIFEPOINTS 18 TT_SYMBOL d TT_NAME DOG -TT_CONSUMABLE 0 +TT_TOOLPOWER 0 TT_STORAGE 1 TT_ID 4 @@ -57,7 +57,7 @@ TT_START_NUMBER 3 TT_LIFEPOINTS 54 TT_SYMBOL b TT_NAME BEAR -TT_CONSUMABLE 0 +TT_TOOLPOWER 0 TT_STORAGE 3 TT_ID 5 @@ -65,22 +65,23 @@ TT_START_NUMBER 9 TT_LIFEPOINTS 0 TT_SYMBOL $ TT_NAME DIRT -TT_CONSUMABLE 0 +TT_TOOLPOWER 0 TT_ID 6 TT_START_NUMBER 5 TT_LIFEPOINTS 0 TT_SYMBOL m TT_NAME 'MAGIC MEAT' -TT_CONSUMABLE 1024 +TT_TOOLPOWER 1024 TT_PROLIFERATE 0 +TT_TOOL food TT_ID 7 TT_START_NUMBER 10 TT_LIFEPOINTS 0 TT_SYMBOL '#' TT_NAME 'PLANT #1' -TT_CONSUMABLE 0 +TT_TOOLPOWER 0 TT_PROLIFERATE 192 TT_ID 8 @@ -88,7 +89,7 @@ TT_START_NUMBER 1 TT_LIFEPOINTS 0 TT_SYMBOL % TT_NAME 'PLANT #2' -TT_CONSUMABLE 0 +TT_TOOLPOWER 0 TT_PROLIFERATE 512 TT_ID 0 diff --git a/roguelike-server b/roguelike-server index 5c60188..40bfcb8 100755 --- a/roguelike-server +++ b/roguelike-server @@ -311,7 +311,7 @@ def try_worldstate_update(): def draw_visible_Things(map, run): for id in world_db["Things"]: type = world_db["Things"][id]["T_TYPE"] - consumable = world_db["ThingTypes"][type]["TT_CONSUMABLE"] + consumable = world_db["ThingTypes"][type]["TT_TOOL"] == "food" alive = world_db["ThingTypes"][type]["TT_LIFEPOINTS"] if (0 == run and not consumable and not alive) \ or (1 == run and consumable and not alive) \ @@ -358,7 +358,7 @@ def try_worldstate_update(): mem = world_db["Things"][0]["T_MEMMAP"][:] for i in range(2): for mt in world_db["Things"][0]["T_MEMTHING"]: - consumable = world_db["ThingTypes"][mt[0]]["TT_CONSUMABLE"] + consumable = world_db["ThingTypes"][mt[0]]["TT_TOOL"] == "food" if (i == 0 and not consumable) or (i == 1 and consumable): c = world_db["ThingTypes"][mt[0]]["TT_SYMBOL"] mem[(mt[1] * length) + mt[2]] = ord(c) @@ -798,14 +798,16 @@ def actor_pick_up(t): nutritious = 0 for id in ids: type = world_db["Things"][id]["T_TYPE"] - if world_db["ThingTypes"][type]["TT_CONSUMABLE"] > nutritious: - nutritious = world_db["ThingTypes"][type]["TT_CONSUMABLE"] + if world_db["ThingTypes"][type]["TT_TOOL"] == "food" \ + and world_db["ThingTypes"][type]["TT_TOOLPOWER"] > nutritious: + nutritious = world_db["ThingTypes"][type]["TT_TOOLPOWER"] highest_id = id world_db["Things"][highest_id]["carried"] = True - if (t != world_db["Things"][0] and # # - world_db["Things"][highest_id]["T_PLAYERDROP"]): # # - x = world_db["Things"][highest_id]["T_TYPE"] - score = world_db["ThingTypes"][x]["TT_CONSUMABLE"] / 32 # # + type = world_db["Things"][highest_id]["T_TYPE"] # # + if (t != world_db["Things"][0] # # + and world_db["Things"][highest_id]["T_PLAYERDROP"] # # + and world_db["ThingTypes"][type]["TT_TOOL"] == "food"): # # + score = world_db["ThingTypes"][type]["TT_TOOLPOWER"] / 32 # # add_gods_favor(score) # # world_db["Things"][highest_id]["T_PLAYERDROP"] = 0 # # t["T_CARRIES"].append(highest_id) @@ -850,10 +852,10 @@ def actor_use(t): + "Island God laughs.\n") # # t["T_LIFEPOINTS"] = 1 # # decrement_lifepoints(t) # # - elif world_db["ThingTypes"][type]["TT_CONSUMABLE"]: + elif world_db["ThingTypes"][type]["TT_TOOL"] == "food": t["T_CARRIES"].remove(id) del world_db["Things"][id] - t["T_SATIATION"] += world_db["ThingTypes"][type]["TT_CONSUMABLE"] + t["T_SATIATION"] += world_db["ThingTypes"][type]["TT_TOOLPOWER"] if t == world_db["Things"][0]: strong_write(io_db["file_out"], "LOG You consume this object.\n") @@ -988,7 +990,7 @@ def get_dir_to_target(t, filter): for mt in t["T_MEMTHING"]: if ' ' != chr(t["T_MEMMAP"][(mt[1] * world_db["MAP_LENGTH"]) + mt[2]]) \ - and world_db["ThingTypes"][mt[0]]["TT_CONSUMABLE"]: + and world_db["ThingTypes"][mt[0]]["TT_TOOL"] == "food": return True return False @@ -1040,7 +1042,7 @@ def get_dir_to_target(t, filter): if ord_blank != t["T_MEMMAP"][mt[1] * world_db["MAP_LENGTH"] + mt[2]] - if world_db["ThingTypes"][mt[0]]["TT_CONSUMABLE"]]: + if world_db["ThingTypes"][mt[0]]["TT_TOOL"] == "food"]: set_map_score(mt[1] * world_db["MAP_LENGTH"] + mt[2], 0) elif "s" == filter: zero_score_map_where_char_on_memdepthmap(mem_depth_c[0]) @@ -1126,26 +1128,27 @@ def get_dir_to_target(t, filter): return dir_to_target -def standing_on_consumable(t): +def standing_on_food(t): """Return True/False whether t is standing on a consumable.""" for id in [id for id in world_db["Things"] if world_db["Things"][id] != t if world_db["Things"][id]["T_POSY"] == t["T_POSY"] if world_db["Things"][id]["T_POSX"] == t["T_POSX"] if world_db["ThingTypes"][world_db["Things"][id]["T_TYPE"]] - ["TT_CONSUMABLE"]]: + ["TT_TOOL"] == "food"]: return True return False def get_inventory_slot_to_consume(t): """Return slot Id of strongest consumable in t's inventory, else -1.""" - cmp_consumability = 0 + cmp_food = 0 selection = -1 i = 0 for id in t["T_CARRIES"]: type = world_db["Things"][id]["T_TYPE"] - if world_db["ThingTypes"][type]["TT_CONSUMABLE"] > cmp_consumability: - cmp_consumability = world_db["ThingTypes"][type]["TT_CONSUMABLE"] + if world_db["ThingTypes"][type]["TT_TOOL"] == "food" \ + and world_db["ThingTypes"][type]["TT_TOOLPOWER"] > cmp_food: + cmp_food = world_db["ThingTypes"][type]["TT_TOOLPOWER"] selection = i i += 1 return selection @@ -1172,7 +1175,7 @@ def ai(t): if world_db["ThingActions"][id]["TA_NAME"] == "use"][0] t["T_ARGUMENT"] = sel - elif standing_on_consumable(t) \ + elif standing_on_food(t) \ and (len(t["T_CARRIES"]) < # # world_db["ThingTypes"][t["T_TYPE"]]["TT_STORAGE"]): # # t["T_COMMAND"] = [id for id in world_db["ThingActions"] @@ -1697,19 +1700,21 @@ def setter_tpos(axis): def command_ttid(id_string): """Set ID of ThingType to manipulate. ID unused? Create new one. - Default new ThingType's TT_SYMBOL to "?", TT_CORPSE_ID to self, others: 0. + Default new ThingType's TT_SYMBOL to "?", TT_CORPSE_ID to self, TT_TOOL to + "", others: 0. """ id = id_setter(id_string, "ThingTypes", command_ttid) if None != id: world_db["ThingTypes"][id] = { "TT_NAME": "(none)", - "TT_CONSUMABLE": 0, + "TT_TOOLPOWER": 0, "TT_LIFEPOINTS": 0, "TT_PROLIFERATE": 0, "TT_START_NUMBER": 0, "TT_STORAGE": 0, # # "TT_SYMBOL": "?", - "TT_CORPSE_ID": id + "TT_CORPSE_ID": id, + "TT_TOOL": "" } @@ -1722,6 +1727,12 @@ def command_ttname(name): world_db["ThingTypes"][command_ttid.id]["TT_NAME"] = name +@test_ThingType_id +def command_tttool(name): + """Set TT_TOOL of selected ThingType.""" + world_db["ThingTypes"][command_ttid.id]["TT_TOOL"] = name + + @test_ThingType_id def command_ttsymbol(char): """Set TT_SYMBOL of selected ThingType. """ @@ -1815,10 +1826,10 @@ commands_db = { "TA_NAME": (1, False, command_taname), "TT_ID": (1, False, command_ttid), "TT_NAME": (1, False, command_ttname), + "TT_TOOL": (1, False, command_tttool), "TT_SYMBOL": (1, False, command_ttsymbol), "TT_CORPSE_ID": (1, False, command_ttcorpseid), - "TT_CONSUMABLE": (1, False, setter("ThingType", "TT_CONSUMABLE", - 0, 65535)), + "TT_TOOLPOWER": (1, False, setter("ThingType", "TT_TOOLPOWER", 0, 65535)), "TT_START_NUMBER": (1, False, setter("ThingType", "TT_START_NUMBER", 0, 255)), "TT_PROLIFERATE": (1, False, setter("ThingType", "TT_PROLIFERATE", diff --git a/testing/ref_end b/testing/ref_end index 84516c9..d5560ea 100644 --- a/testing/ref_end +++ b/testing/ref_end @@ -86,77 +86,86 @@ TA_ID 5 TA_EFFORT 45 TA_NAME "use" TT_ID 0 -TT_SYMBOL "@" TT_START_NUMBER 1 +TT_SYMBOL "@" +TT_TOOLPOWER 0 TT_NAME "HUMAN" TT_PROLIFERATE 0 TT_STORAGE 5 TT_LIFEPOINTS 30 -TT_CONSUMABLE 0 +TT_TOOL "" TT_ID 1 -TT_SYMBOL "0" TT_START_NUMBER 0 +TT_SYMBOL "0" +TT_TOOLPOWER 9001 TT_NAME "GLOBE" TT_PROLIFERATE 0 TT_STORAGE 0 TT_LIFEPOINTS 0 -TT_CONSUMABLE 9001 +TT_TOOL "" TT_ID 2 -TT_SYMBOL "a" TT_START_NUMBER 27 +TT_SYMBOL "a" +TT_TOOLPOWER 0 TT_NAME "ANT" TT_PROLIFERATE 0 TT_STORAGE 1 TT_LIFEPOINTS 6 -TT_CONSUMABLE 0 +TT_TOOL "" TT_ID 3 -TT_SYMBOL "d" TT_START_NUMBER 9 +TT_SYMBOL "d" +TT_TOOLPOWER 0 TT_NAME "DOG" TT_PROLIFERATE 0 TT_STORAGE 1 TT_LIFEPOINTS 18 -TT_CONSUMABLE 0 +TT_TOOL "" TT_ID 4 -TT_SYMBOL "b" TT_START_NUMBER 3 +TT_SYMBOL "b" +TT_TOOLPOWER 0 TT_NAME "BEAR" TT_PROLIFERATE 0 TT_STORAGE 3 TT_LIFEPOINTS 54 -TT_CONSUMABLE 0 +TT_TOOL "" TT_ID 5 -TT_SYMBOL "$" TT_START_NUMBER 9 +TT_SYMBOL "$" +TT_TOOLPOWER 0 TT_NAME "DIRT" TT_PROLIFERATE 0 TT_STORAGE 0 TT_LIFEPOINTS 0 -TT_CONSUMABLE 0 +TT_TOOL "" TT_ID 6 -TT_SYMBOL "m" TT_START_NUMBER 5 +TT_SYMBOL "m" +TT_TOOLPOWER 1024 TT_NAME "MAGIC MEAT" TT_PROLIFERATE 0 TT_STORAGE 0 TT_LIFEPOINTS 0 -TT_CONSUMABLE 1024 +TT_TOOL "food" TT_ID 7 -TT_SYMBOL "#" TT_START_NUMBER 10 +TT_SYMBOL "#" +TT_TOOLPOWER 0 TT_NAME "PLANT #1" TT_PROLIFERATE 192 TT_STORAGE 0 TT_LIFEPOINTS 0 -TT_CONSUMABLE 0 +TT_TOOL "" TT_ID 8 -TT_SYMBOL "%" TT_START_NUMBER 1 +TT_SYMBOL "%" +TT_TOOLPOWER 0 TT_NAME "PLANT #2" TT_PROLIFERATE 512 TT_STORAGE 0 TT_LIFEPOINTS 0 -TT_CONSUMABLE 0 +TT_TOOL "" TT_ID 0 TT_CORPSE_ID 6 TT_ID 1 diff --git a/testing/start b/testing/start index 455d49d..adefeb3 100644 --- a/testing/start +++ b/testing/start @@ -92,7 +92,7 @@ TT_NAME "HUMAN" TT_PROLIFERATE 0 TT_STORAGE 5 TT_LIFEPOINTS 30 -TT_CONSUMABLE 0 +TT_TOOLPOWER 0 TT_ID 1 TT_SYMBOL "0" TT_START_NUMBER 0 @@ -100,7 +100,7 @@ TT_NAME "GLOBE" TT_PROLIFERATE 0 TT_STORAGE 0 TT_LIFEPOINTS 0 -TT_CONSUMABLE 9001 +TT_TOOLPOWER 9001 TT_ID 2 TT_SYMBOL "a" TT_START_NUMBER 27 @@ -108,7 +108,7 @@ TT_NAME "ANT" TT_PROLIFERATE 0 TT_STORAGE 1 TT_LIFEPOINTS 6 -TT_CONSUMABLE 0 +TT_TOOLPOWER 0 TT_ID 3 TT_SYMBOL "d" TT_START_NUMBER 9 @@ -116,7 +116,7 @@ TT_NAME "DOG" TT_PROLIFERATE 0 TT_STORAGE 1 TT_LIFEPOINTS 18 -TT_CONSUMABLE 0 +TT_TOOLPOWER 0 TT_ID 4 TT_SYMBOL "b" TT_START_NUMBER 3 @@ -124,7 +124,7 @@ TT_NAME "BEAR" TT_PROLIFERATE 0 TT_STORAGE 3 TT_LIFEPOINTS 54 -TT_CONSUMABLE 0 +TT_TOOLPOWER 0 TT_ID 5 TT_SYMBOL "$" TT_START_NUMBER 9 @@ -132,7 +132,7 @@ TT_NAME "DIRT" TT_PROLIFERATE 0 TT_STORAGE 0 TT_LIFEPOINTS 0 -TT_CONSUMABLE 0 +TT_TOOLPOWER 0 TT_ID 6 TT_SYMBOL "m" TT_START_NUMBER 5 @@ -140,7 +140,8 @@ TT_NAME "MAGIC MEAT" TT_PROLIFERATE 0 TT_STORAGE 0 TT_LIFEPOINTS 0 -TT_CONSUMABLE 1024 +TT_TOOLPOWER 1024 +TT_TOOL food TT_ID 7 TT_SYMBOL "#" TT_START_NUMBER 10 @@ -148,7 +149,7 @@ TT_NAME "PLANT #1" TT_PROLIFERATE 192 TT_STORAGE 0 TT_LIFEPOINTS 0 -TT_CONSUMABLE 0 +TT_TOOLPOWER 0 TT_ID 8 TT_SYMBOL "%" TT_START_NUMBER 1 @@ -156,7 +157,7 @@ TT_NAME "PLANT #2" TT_PROLIFERATE 512 TT_STORAGE 0 TT_LIFEPOINTS 0 -TT_CONSUMABLE 0 +TT_TOOLPOWER 0 TT_ID 0 TT_CORPSE_ID 6 TT_ID 1 @@ -954,4 +955,4 @@ T_POSX 39 T_PROGRESS 0 T_SATIATION 0 SEED_RANDOMNESS 2875680865 -WORLD_ACTIVE 1 \ No newline at end of file +WORLD_ACTIVE 1 -- 2.30.2