From: Christian Heller Date: Fri, 13 Mar 2015 21:20:11 +0000 (+0100) Subject: 7DRL: Show actors' health on map (for non-player only when EMPATHY set). X-Git-Url: https://plomlompom.com/repos/?p=plomrogue;a=commitdiff_plain;h=d7603ff1831633f2fc6224ed3c9d59ecc0bfd62b 7DRL: Show actors' health on map (for non-player only when EMPATHY set). --- diff --git a/SERVER_COMMANDS b/SERVER_COMMANDS index c76284f..5762ea4 100644 --- a/SERVER_COMMANDS +++ b/SERVER_COMMANDS @@ -253,4 +253,6 @@ LUMBER [0 to infinity] TOOL_0 [0 to infinity] +EMPATHY [0 to 1] + TT_TOOLS gains the arguments "axe", "carpentry", "wood". diff --git a/roguelike-server b/roguelike-server index cb6b3dd..a70b590 100755 --- a/roguelike-server +++ b/roguelike-server @@ -363,22 +363,25 @@ def try_worldstate_update(): stacksmap = bytearray(b'0' * (length ** 2)) # # for id in [id for id in world_db["Things"] # # if not world_db["Things"][id]["carried"] # # - if world_db["Things"][id]["T_LIFEPOINTS"] + if world_db["Things"][id]["T_LIFEPOINTS"] # # if world_db["Things"][0]["fovmap"][ # # world_db["Things"][id]["T_POSY"] * length # # + world_db["Things"][id]["T_POSX"]] == ord_v]: # # pos = (world_db["Things"][id]["T_POSY"] * length # # + world_db["Things"][id]["T_POSX"]) # # - stacksmap[pos] = ord('X') # # - for id in [id for id in world_db["Things"] # # - if not world_db["Things"][id]["carried"] # # - if world_db["Things"][0]["fovmap"][ # # - world_db["Things"][id]["T_POSY"] * length # # - + world_db["Things"][id]["T_POSX"]] == ord_v]: # # - pos = (world_db["Things"][id]["T_POSY"] * length # # - + world_db["Things"][id]["T_POSX"]) # # - if stacksmap[pos] < ord('2'): # # - stacksmap[pos] += 1 # # + if id == 0 or world_db["EMPATHY"]: # # + type = world_db["Things"][id]["T_TYPE"] # # + max_hp = world_db["ThingTypes"][type]["TT_LIFEPOINTS"] # # + third_of_hp = max_hp / 3 # # + hp = world_db["Things"][id]["T_LIFEPOINTS"] # # + add = 0 # # + if hp > 2 * third_of_hp: # # + add = 2 # # + elif hp > third_of_hp: # # + add = 1 # # + stacksmap[pos] = ord('a') + add # # + else: # # + stacksmap[pos] = ord('X') # # for mt in world_db["Things"][0]["T_MEMTHING"]: # # pos = mt[1] * length + mt[2] # # if stacksmap[pos] < ord('2'): # # @@ -1984,6 +1987,7 @@ commands_db = { "PLANT_1": (1, False, specialtypesetter("PLANT_1")), # # "LUMBER": (1, False, specialtypesetter("LUMBER")), # # "TOOL_0": (1, False, specialtypesetter("TOOL_0")), # # + "EMPATHY": (1, False, setter(None, "EMPATHY", 0, 1)), # # "TA_ID": (1, False, command_taid), "TA_EFFORT": (1, False, setter("ThingAction", "TA_EFFORT", 0, 255)), "TA_NAME": (1, False, command_taname), @@ -2038,6 +2042,7 @@ world_db = { "PLANT_1": 0, # # "LUMBER": 0, # # "TOOL_0": 0, # # + "EMPATHY": 0, # # "ThingActions": {}, "ThingTypes": {}, "Things": {} diff --git a/src/client/draw_wins.c b/src/client/draw_wins.c index 59ce436..989c342 100644 --- a/src/client/draw_wins.c +++ b/src/client/draw_wins.c @@ -425,6 +425,12 @@ extern void draw_win_map(struct Win * win) init_pair(12, COLOR_BLACK, COLOR_MAGENTA); // init_pair(13, COLOR_WHITE, COLOR_BLACK); // init_pair(14, COLOR_RED, COLOR_BLACK); // + init_pair(15, COLOR_WHITE, COLOR_GREEN); // + init_pair(16, COLOR_WHITE, COLOR_YELLOW); // + init_pair(17, COLOR_WHITE, COLOR_RED); // + attr_t col_health_good = COLOR_PAIR(15); // + attr_t col_health_middle = COLOR_PAIR(16); // + attr_t col_health_bad = COLOR_PAIR(17); // for (y = 0; y < world.map.length; y++) { for (x = 0; x < world.map.length; x++) @@ -477,10 +483,23 @@ extern void draw_win_map(struct Win * win) // char c = world.map.cells[y*world.map.length + x]; set_ch_on_yx(win, y, x * 2 + (y % 2), c | a); // chtype depth = ' ' | a; // - if (world.stacks_map[y * world.map.length + x] == '2') // + char stacksmapval = world.stacks_map[y*world.map.length+x]; // + if (stacksmapval == '2') // { // depth = '+' | COLOR_PAIR(13); // } // + else if (stacksmapval == 'a') // + { // + depth = ' ' | col_health_bad; // + } // + else if (stacksmapval == 'b') // + { // + depth = ' ' | col_health_middle; // + } // + else if (stacksmapval == 'c') // + { // + depth = ' ' | col_health_good; // + } // set_ch_on_yx(win, y, x * 2 + (y % 2) + 1, depth); // // set_ch_on_yx(win, y, x * 2 + (y % 2), c); // set_ch_on_yx(win, y, x * 2 + (y % 2) + 1, ' '); diff --git a/testing/ref_end b/testing/ref_end index d698ccf..d61d4fe 100644 --- a/testing/ref_end +++ b/testing/ref_end @@ -1,3 +1,4 @@ +EMPATHY 0 PLAYER_TYPE 0 PLANT_1 0 PLANT_0 8