--- deliantra/server/common/object.C 2016/11/16 23:41:59 1.360 +++ deliantra/server/common/object.C 2018/11/17 23:40:00 1.366 @@ -1,6 +1,7 @@ /* * This file is part of Deliantra, the Roguelike Realtime MMORPG. * + * Copyright (©) 2017,2018 Marc Alexander Lehmann / the Deliantra team * Copyright (©) 2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016 Marc Alexander Lehmann / Robin Redeker / the Deliantra team * Copyright (©) 2001 Mark Wedel & Crossfire Development Team * Copyright (©) 1992 Frank Tore Johansen @@ -47,13 +48,13 @@ //+GPL -short freearr_x[SIZEOFFREE] = { +int freearr_x[SIZEOFFREE] = { 0, 0, 1, 1, 1, 0, -1, -1, -1, 0, 1, 2, 2, 2, 2, 2, 1, 0, -1, -2, -2, -2, -2, -2, -1, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, -1, -2, -3, -3, -3, -3, -3, -3, -3, -2, -1 }; -short freearr_y[SIZEOFFREE] = { +int freearr_y[SIZEOFFREE] = { 0, -1, -1, 0, 1, 1, 1, 0, -1, -2, -2, -2, -1, 0, 1, 2, 2, 2, 2, 2, 1, 0, -1, -2, -2, @@ -74,22 +75,22 @@ }; const char *wall_suffix[16] = { - "0", - "1_3", - "1_4", - "2_1_2", - "1_2", - "2_2_4", - "2_2_1", - "3_1", - "1_1", - "2_2_3", - "2_2_2", - "3_3", - "2_1_1", - "3_4", - "3_2", - "4" + "0", + "1_3", + "1_4", + "2_1_2", + "1_2", + "2_2_4", + "2_2_1", + "3_1", + "1_1", + "2_2_3", + "2_2_2", + "3_3", + "2_1_1", + "3_4", + "3_2", + "4" }; static void @@ -237,7 +238,7 @@ { /* n-squared behaviour (see kv.get), but I'm hoping both * objects with lists are rare, and lists stay short. If not, use a - * different structure or at least keep the lists sorted... + * different structure or at least keep the lists sorted... */ /* For each field in wants, */ @@ -641,7 +642,7 @@ * values for the body_used info, so when items are created * for it, they can be properly equipped. */ - for (int i = NUM_BODY_LOCATIONS; i--; ) + for (int i = 0; i < NUM_BODY_LOCATIONS; ++i) slot[i].used = slot[i].info; attachable::instantiate (); @@ -755,7 +756,7 @@ || (m.move_off | op->move_off ) != m.move_off || (m.move_slow | op->move_slow) != m.move_slow /* This isn't perfect, but I don't expect a lot of objects to - * have move_allow right now. + * have move_allow right now. */ || ((m.move_block | op->move_block) & ~op->move_allow) != m.move_block m.invalidate (); @@ -845,7 +846,7 @@ /* This function removes object 'op' from the list of active * objects. - * This should only be used for style maps or other such + * This should only be used for style maps or other such * reference maps where you don't want an object that isn't * in play chewing up cpu time getting processed. * The reverse of this is to call update_ob_speed, which @@ -1090,7 +1091,7 @@ if (more) more->remove (); - /* + /* * In this case, the object to be removed is in someones * inventory. */ @@ -1405,7 +1406,7 @@ * flag contains INS_ABOVE_FLOOR_ONLY, once we find the last * floor, we want to insert above that and no further. * Also, if there are spell objects on this space, we stop processing - * once we get to them. This reduces the need to traverse over all of + * once we get to them. This reduces the need to traverse over all of * them when adding another one - this saves quite a bit of cpu time * when lots of spells are cast in one area. Currently, it is presumed * that flying non pickable objects are spell objects. @@ -1541,7 +1542,7 @@ } /* this function inserts an object in the map, but if it - * finds an object of its own type, it'll remove that one first. + * finds an object of its own type, it'll remove that one first. * op is the object to insert it under: supplies x and the map. */ void @@ -1680,7 +1681,7 @@ * This function inserts the object op in the linked list * inside the object environment. * - * The function returns now pointer to inserted item, and return value can + * The function returns now pointer to inserted item, and return value can * be != op, if items are merged. -Tero */ object * @@ -1810,7 +1811,7 @@ return 0; /* The objects have to be checked from top to bottom. - * Hence, we first go to the top: + * Hence, we first go to the top: */ for (object *next, *tmp = ms.top; tmp; tmp = next) { @@ -2004,7 +2005,7 @@ * Note - updated to take an object instead of archetype - this is necessary * because arch_blocked (now ob_blocked) needs to know the movement type * to know if the space in question will block the object. We can't use - * the archetype because that isn't correct if the monster has been + * the archetype because that isn't correct if the monster has been * customized, changed states, etc. */ int @@ -2037,7 +2038,7 @@ /* Basically, if we find a wall on a space, we cut down the search size. * In this way, we won't return spaces that are on another side of a wall. - * This mostly work, but it cuts down the search size in all directions - + * This mostly work, but it cuts down the search size in all directions - * if the space being examined only has a wall to the north and empty * spaces in all the other directions, this will reduce the search space * to only the spaces immediately surrounding the target area, and @@ -2077,7 +2078,7 @@ find_first_free_spot (const object *ob, maptile *m, int x, int y) { for (int i = 0; i < SIZEOFFREE; i++) - if (!ob->blocked (m, x + freearr_x[i], y + freearr_y[i])) + if (!ob->blocked (m, x + DIRX (i), y + DIRY (i))) return i; return -1; @@ -2098,7 +2099,7 @@ swap (arr [end], arr [rndm (end + 1)]); } -/* new function to make monster searching more efficient, and effective! +/* new function to make monster searching more efficient, and effective! * This basically returns a randomized array (in the passed pointer) of * the spaces to find monsters. In this way, it won't always look for * monsters to the north first. However, the size of the array passed @@ -2352,8 +2353,8 @@ if (dir < 0) return 0; /* exit condition: invalid direction */ - dx = x + freearr_x[dir]; - dy = y + freearr_y[dir]; + dx = x + DIRX (dir); + dy = y + DIRY (dir); mflags = get_map_flags (m, &m, dx, dy, &dx, &dy); @@ -2436,7 +2437,7 @@ } /* Zero the key_values on op, decrementing the shared-string - * refcounts and freeing the links. + * refcounts and freeing the links. */ void key_values::clear () @@ -2721,8 +2722,8 @@ object * object::force_find (shstr_tmp name) { - /* cycle through his inventory to look for the MARK we want to - * place + /* cycle through his inventory to look for the MARK we want to + * place */ for (object *tmp = inv; tmp; tmp = tmp->below) if (tmp->type == FORCE && tmp->slaying == name)