--- deliantra/server/common/compat.C 2010/04/04 04:58:46 1.7 +++ deliantra/server/common/compat.C 2010/04/29 17:43:26 1.12 @@ -36,7 +36,6 @@ #include "define.h" #include "path.h" - /* buf_overflow() - we don't want to exceed the buffer size of * buf1 by adding on buf2! Returns true if overflow will occur. */ @@ -59,26 +58,6 @@ ///////////////////////////////////////////////////////////////////////////// -static const char *const fatalmsgs[80] = { - "Failed to allocate memory", - "Failed repeatedly to load maps", - "Hashtable for archetypes is too small", - "Too many errors" -}; - -/* - * fatal() is meant to be called whenever a fatal signal is intercepted. - * It will call the emergency_save and the clean_tmp_files functions. - */ -void -fatal (const char *msg) -{ - LOG (llevError, "FATAL: %s\n", msg); - cleanup (msg, 1); -} - -///////////////////////////////////////////////////////////////////////////// - /* * The random functions here take luck into account when rolling random * dice or numbers. This function has less of an impact the larger the @@ -95,7 +74,7 @@ * not the recipient (ie, the poor slob getting hit). [garbled 20010916] */ int -random_roll (int r_min, int r_max, const object *op, int goodbad) +random_roll (int r_min, int r_max, const object *op, bool prefer_high) { r_max = max (r_min, r_max); @@ -119,34 +98,35 @@ * for exp loss calculations for players changing religions. */ sint64 -random_roll64 (sint64 r_min, sint64 r_max, const object *op, int goodbad) +random_roll64 (sint64 r_min, sint64 r_max, const object *op, bool prefer_high) { - sint64 omin = r_min; sint64 range = max (0, r_max - r_min + 1); int base = range > 2 ? 20 : 50; /* d2 and d3 are corner cases */ /* - * Make a call to get two 32 bit unsigned random numbers, and just to + * Make a call to get two 32 bit unsigned random numbers, and just do * a little bitshifting. */ sint64 ran = (sint64) rndm.next () ^ ((sint64) rndm.next () << 31); - if (op->type != PLAYER) - return ((ran % range) + r_min); - - int luck = op->stats.luck; - - if (rndm (base) < min (10, abs (luck))) + if (op->stats.luck) { - /* we have a winner */ - ((luck > 0) ? (luck = 1) : (luck = -1)); - range -= luck; - if (range < 1) - return (omin); /*check again */ + int luck = op->stats.luck; + + if (rndm (base) < min (10, abs (luck))) + { + /* we have a winner */ + luck = luck > 0 ? 1 : -1; + + range -= luck; + if (range < 1) + return r_min; /*check again */ - ((goodbad) ? (r_min += luck) : (range)); + if (prefer_high) + r_min += luck; - return (max (omin, min (r_max, (ran % range) + r_min))); + return clamp (ran % range + r_min, r_min, r_max); + } } return ran % range + r_min; @@ -160,7 +140,7 @@ * The args are num D size (ie 4d6) [garbled 20010916] */ int -die_roll (int num, int size, const object *op, int goodbad) +die_roll (int num, int size, const object *op, bool prefer_high) { int min_roll, luck, total, i, gotlucky; @@ -171,7 +151,7 @@ if (size < 2 || diff < 1) { - LOG (llevError, "Calling die_roll with num=%d size=%d\n", num, size); + LOG (llevError | logBacktrace, "Calling die_roll with num=%d size=%d\n", num, size); return num; /* avoids a float exception */ } @@ -188,7 +168,7 @@ diff -= luck; if (diff < 1) return (num); /*check again */ - ((goodbad) ? (min_roll += luck) : (diff)); + ((prefer_high) ? (min_roll += luck) : (diff)); total += max (1, min (size, rndm (diff) + min_roll)); } else @@ -316,67 +296,12 @@ return (path); } -/** - * open_and_uncompress() first searches for the original filename. If it exist, - * then it opens it and returns the file-pointer. - */ -FILE * -open_and_uncompress (const char *name, int flag, int *compressed) -{ - *compressed = 0; - return fopen (name, "r"); -} - -/* - * See open_and_uncompress(). - */ - -void -close_and_delete (FILE * fp, int compressed) -{ - fclose (fp); -} - -/* - * Strip out the media tags from a String. - * Warning the input string will contain the result string - */ -void -strip_media_tag (char *message) -{ - int in_tag = 0; - char *dest; - char *src; - - src = dest = message; - while (*src != '\0') - { - if (*src == '[') - { - in_tag = 1; - } - else if (in_tag && (*src == ']')) - in_tag = 0; - else if (!in_tag) - { - *dest = *src; - dest++; - } - src++; - } - *dest = '\0'; -} - #define EOL_SIZE (sizeof("\n")-1) void strip_endline (char *buf) { - if (strlen (buf) < sizeof ("\n")) - { - return; - } - if (!strcmp (buf + strlen (buf) - EOL_SIZE, "\n")) - buf[strlen (buf) - EOL_SIZE] = '\0'; + if (*buf && buf [strlen (buf) - 1] == '\n') + buf [strlen (buf) - 1] = '\0'; } /**