|
From: <gi...@cr...> - 2017-06-15 23:25:10
|
via 7b0e1919fa8630ebc5b5cb4c71ead75fafbc5805 (commit)
from 625dad4402b27f34ba25d6c9ce785eba803060cb (commit)
-----------------------------------------------------------------------
commit 7b0e1919fa8630ebc5b5cb4c71ead75fafbc5805
Author: Nicholas Feinberg <ple...@gm...>
Date: Thu Jun 15 16:21:33 2017 -0700
Ungroup same-name mons in webtiles list (11110)
Probably two orcs named 'Boldo' should get separate entries.
Note that mon-info::less_than will also have to change if we want
the same behavior for the local tiles monster list, but I'm not
sure if it's actually a problem there?
-----------------------------------------------------------------------
Summary of changes:
crawl-ref/source/tileweb.cc | 4 ++++
.../source/webserver/game_data/static/monster_list.js | 14 ++++++++++++++
2 files changed, 18 insertions(+)
diff --git a/crawl-ref/source/tileweb.cc b/crawl-ref/source/tileweb.cc
index b518870..d9df914 100644
--- a/crawl-ref/source/tileweb.cc
+++ b/crawl-ref/source/tileweb.cc
@@ -1521,6 +1521,10 @@ void TilesFramework::_send_monster(const coord_def &gc, const monster_info* m,
if (force_full || last->threat != m->threat)
json_write_int("threat", m->threat);
+ // tiebreakers for two monsters with the same custom name
+ if (m->is_named())
+ json_write_int("clientid", m->client_id);
+
json_close_object(true);
}
diff --git a/crawl-ref/source/webserver/game_data/static/monster_list.js b/crawl-ref/source/webserver/game_data/static/monster_list.js
index 4c22792..1fa9ecc 100644
--- a/crawl-ref/source/webserver/game_data/static/monster_list.js
+++ b/crawl-ref/source/webserver/game_data/static/monster_list.js
@@ -54,6 +54,20 @@ function ($, map_knowledge, cr, dungeon_renderer, options, util) {
else if (m1.type > m2.type)
return -1;
+ // don't sort two same-name monsters together
+ var m1Named = m1.hasOwnProperty("clientid");
+ var m2Named = m2.hasOwnProperty("clientid");
+ if (m1Named || m2Named)
+ {
+ if (!m2Named)
+ return -1;
+ if (!m1Named)
+ return 1;
+ if (m1.clientid < m2.clientid)
+ return -1;
+ return 1;
+ }
+
if (m1.name < m2.name)
return 1;
else if (m1.name > m2.name)
--
Dungeon Crawl Stone Soup
|