forked from github/server
Bugfix crashbug bei Astraler Wirbel
This commit is contained in:
parent
53d6b4c2b8
commit
7d927094dd
|
@ -3849,8 +3849,12 @@ eval_direction(struct opstack ** stack, const void * userdata)
|
|||
{
|
||||
const faction * report = (const faction*)userdata;
|
||||
int i = opop(stack, int);
|
||||
|
||||
const char * c = LOC(report->locale, directions[i]);
|
||||
const char * c;
|
||||
if (i>=0) {
|
||||
c = LOC(report->locale, directions[i]);
|
||||
} else {
|
||||
c = LOC(report->locale, "unknown_direction");
|
||||
}
|
||||
opush(stack, strcpy(balloc(strlen(c)+1), c));
|
||||
}
|
||||
|
||||
|
|
|
@ -37,20 +37,20 @@ extern "C" {
|
|||
/* #define MSG_LEVELS -- msg-levels active */
|
||||
|
||||
/* basic types used in the eressea "kernel" */
|
||||
typedef unsigned char order_t;
|
||||
typedef char terrain_t;
|
||||
typedef char direction_t;
|
||||
typedef int race_t;
|
||||
typedef int magic_t;
|
||||
typedef short order_t;
|
||||
typedef short terrain_t;
|
||||
typedef short direction_t;
|
||||
typedef short race_t;
|
||||
typedef short magic_t;
|
||||
typedef short skill_t;
|
||||
typedef short typ_t;
|
||||
typedef int herb_t;
|
||||
typedef int potion_t;
|
||||
typedef int luxury_t;
|
||||
typedef int weapon_t;
|
||||
typedef int item_t;
|
||||
typedef int resource_t;
|
||||
typedef int spellid_t;
|
||||
typedef short herb_t;
|
||||
typedef short potion_t;
|
||||
typedef short luxury_t;
|
||||
typedef short weapon_t;
|
||||
typedef short item_t;
|
||||
typedef short resource_t;
|
||||
typedef short spellid_t;
|
||||
|
||||
struct plane;
|
||||
struct spell;
|
||||
|
|
|
@ -1058,7 +1058,7 @@ travel(region * first, unit * u, region * next, int flucht)
|
|||
direction_t dir = reldirection(current, next);
|
||||
border * b = get_borders(current, next);
|
||||
|
||||
while (b) {
|
||||
while (b!=NULL) {
|
||||
if (b->type==&bt_wisps) {
|
||||
wall_data * wd = (wall_data*)b->data;
|
||||
if (wd->active) {
|
||||
|
@ -1081,15 +1081,17 @@ travel(region * first, unit * u, region * next, int flucht)
|
|||
k -= BP_NORMAL;
|
||||
if (k<0) break;
|
||||
/* r2 -> Zielregion, r3 -> Momentane Region */
|
||||
if (move_blocked(u, current, reldirection(current, next))
|
||||
if (dir>=0 && move_blocked(u, current, dir)
|
||||
|| curse_active(get_curse(current->attribs, fogtrap_ct)))
|
||||
{
|
||||
ADDMSG(&u->faction->msgs, msg_message("leavefail",
|
||||
"unit region", u, next));
|
||||
"unit region",
|
||||
u, next));
|
||||
}
|
||||
if (!entrance_allowed(u, next)) {
|
||||
if (!entrance_allowed(u, next)) {
|
||||
ADDMSG(&u->faction->msgs, msg_message("regionowned",
|
||||
"unit region target", u, current, next));
|
||||
"unit region target",
|
||||
u, current, next));
|
||||
break;
|
||||
}
|
||||
if ((wache = bewegung_blockiert_von(u, current)) != (unit *) NULL
|
||||
|
@ -1116,10 +1118,9 @@ travel(region * first, unit * u, region * next, int flucht)
|
|||
|
||||
if (rterrain(next) == T_OCEAN && !canswim(u)) {
|
||||
plane *pl = getplane(next);
|
||||
if(pl && fval(pl, PFL_NOCOORDS)) {
|
||||
if (pl!=NULL && fval(pl, PFL_NOCOORDS)) {
|
||||
add_message(&u->faction->msgs, new_message(u->faction,
|
||||
"detectoceandir%u:unit%i:direction", u,
|
||||
reldirection(current, next)));
|
||||
"detectoceandir%u:unit%i:direction", u, dir));
|
||||
} else {
|
||||
add_message(&u->faction->msgs, new_message(u->faction,
|
||||
"detectocean%u:unit%r:region", u, next));
|
||||
|
@ -1131,7 +1132,7 @@ travel(region * first, unit * u, region * next, int flucht)
|
|||
plane *pl = getplane(next);
|
||||
if(pl && fval(pl, PFL_NOCOORDS)) {
|
||||
add_message(&u->faction->msgs, new_message(u->faction,
|
||||
"detectforbiddendir%u:unit%i:direction", u, reldirection(current, next)));
|
||||
"detectforbiddendir%u:unit%i:direction", u, dir));
|
||||
} else {
|
||||
add_message(&u->faction->msgs, new_message(u->faction,
|
||||
"detectforbidden%u:unit%r:region", u, next));
|
||||
|
|
Loading…
Reference in New Issue