--- deliantra/server/server/apply.C 2010/04/16 23:32:07 1.259 +++ deliantra/server/server/apply.C 2010/04/24 04:03:31 1.260 @@ -2063,6 +2063,8 @@ { static int recursion_depth = 0; + trap = trap->head_ (); + /* Only exits affect DMs. */ if (victim->flag [FLAG_WIZPASS] && trap->type != EXIT && trap->type != SIGN) return; @@ -2070,6 +2072,7 @@ /* move_apply() is the most likely candidate for causing unwanted and * possibly unlimited recursion. */ + /* The following was changed because it was causing perfectly correct * maps to fail. 1) it's not an error to recurse: * rune detonates, summoning monster. monster lands on nearby rune. @@ -2084,8 +2087,6 @@ } recursion_depth++; - if (trap->head) - trap = trap->head; if (!INVOKE_OBJECT (MOVE_TRIGGER, trap, ARG_OBJECT (victim), ARG_OBJECT (originator))) switch (trap->type) @@ -2105,8 +2106,7 @@ * above with some objects have zero speed, and thus the player * getting permanently paralyzed. */ - if (victim->speed_left < -50.f) - victim->speed_left = -50.f; + victim->speed_left = max (-50.f, victim->speed_left); /* LOG(llevDebug, "apply, playermove, player speed_left=%f\n", victim->speed_left); */ } break;