--- deliantra/server/common/compat.C 2010/04/04 04:59:20 1.8 +++ deliantra/server/common/compat.C 2010/04/29 15:59:09 1.11 @@ -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. */ @@ -60,20 +59,6 @@ ///////////////////////////////////////////////////////////////////////////// /* - * fatal() is meant to be called whenever a fatal signal is intercepted. - * It will call the emergency_save and the clean_tmp_files functions. - */ -//TODO: only one caller left -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 * difference becomes in the random numbers. IE, the effect is lessened @@ -89,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); @@ -113,34 +98,36 @@ * 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 omin; /*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, omin, r_max); + } } return ran % range + r_min; @@ -154,7 +141,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; @@ -182,7 +169,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 @@ -310,67 +297,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'; } /**