forked from github/server
"FOLGEnde Einheiten reiten, können aber nicht folgen" - fixed a bug in reporting travelthru that was caused by that fix Issue: 1438
This commit is contained in:
parent
310fa1e3f2
commit
a5d17f6c24
3 changed files with 33 additions and 28 deletions
|
@ -38,6 +38,7 @@
|
|||
#include "race.h"
|
||||
#include "region.h"
|
||||
#include "render.h"
|
||||
#include "reports.h"
|
||||
#include "save.h"
|
||||
#include "ship.h"
|
||||
#include "skill.h"
|
||||
|
@ -1325,6 +1326,25 @@ enum {
|
|||
TRAVEL_RUNNING
|
||||
};
|
||||
|
||||
static arg_regions *
|
||||
var_copy_regions(const region_list * begin, int size)
|
||||
{
|
||||
const region_list * rsrc;
|
||||
|
||||
if (size>0) {
|
||||
int i = 0;
|
||||
arg_regions * dst = (arg_regions *)malloc(sizeof(arg_regions) + sizeof(region*) * size);
|
||||
dst->nregions = size;
|
||||
dst->regions = (region**)(dst+1);
|
||||
for (rsrc = begin; i!=size; rsrc=rsrc->next) {
|
||||
dst->regions[i++] = rsrc->data;
|
||||
}
|
||||
return dst;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
static const region_list *
|
||||
travel_route(unit * u, const region_list * route_begin, const region_list * route_end, order * ord, int mode)
|
||||
{
|
||||
|
@ -1469,8 +1489,9 @@ travel_route(unit * u, const region_list * route_begin, const region_list * rout
|
|||
/* Berichte über Durchreiseregionen */
|
||||
|
||||
if (mode!=TRAVEL_TRANSPORTED) {
|
||||
arg_regions * ar = var_copy_regions(route_begin, steps-1);
|
||||
ADDMSG(&u->faction->msgs, msg_message("travel",
|
||||
"unit mode start end regions", u, walkmode, r, current, route_begin->next?route_begin:NULL));
|
||||
"unit mode start end regions", u, walkmode, r, current, ar));
|
||||
}
|
||||
|
||||
mark_travelthru(u, r, route_begin, iroute);
|
||||
|
|
|
@ -1432,31 +1432,6 @@ var_free_resources(variant x)
|
|||
x.v = 0;
|
||||
}
|
||||
|
||||
static variant
|
||||
var_copy_regions(variant x)
|
||||
{
|
||||
region_list * rsrc;
|
||||
int size = 0;
|
||||
|
||||
for (rsrc = (region_list*)x.v; rsrc!=NULL; rsrc=rsrc->next) {
|
||||
++size;
|
||||
}
|
||||
|
||||
if (size>0) {
|
||||
arg_regions * dst = (arg_regions *)malloc(sizeof(arg_regions) + sizeof(region*) * size);
|
||||
dst->nregions = size;
|
||||
dst->regions = (region**)(dst+1);
|
||||
size = 0;
|
||||
for (rsrc = (region_list*)x.v; rsrc!=NULL; rsrc=rsrc->next) {
|
||||
dst->regions[size++] = rsrc->data;
|
||||
}
|
||||
x.v = dst;
|
||||
} else {
|
||||
x.v = NULL;
|
||||
}
|
||||
return x;
|
||||
}
|
||||
|
||||
static void
|
||||
var_free_regions(variant x)
|
||||
{
|
||||
|
@ -1844,6 +1819,10 @@ eval_trail(struct opstack ** stack, const void * userdata) /* order -> string */
|
|||
size_t size = sizeof(buf) - 1;
|
||||
variant var;
|
||||
char * bufp = buf;
|
||||
#ifdef _SECURECRT_ERRCODE_VALUES_DEFINED
|
||||
/* stupid MS broke snprintf */
|
||||
int eold = errno;
|
||||
#endif
|
||||
|
||||
if (regions!=NULL) {
|
||||
end = regions->nregions-1;
|
||||
|
@ -1866,6 +1845,11 @@ eval_trail(struct opstack ** stack, const void * userdata) /* order -> string */
|
|||
*bufp = 0;
|
||||
var.v = strcpy(balloc(bufp-buf+1), buf);
|
||||
opush(stack, var);
|
||||
#ifdef _SECURECRT_ERRCODE_VALUES_DEFINED
|
||||
if (errno==ERANGE) {
|
||||
errno = eold;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1929,7 +1913,7 @@ reports_init(void)
|
|||
register_argtype("order", var_free_order, var_copy_order, VAR_VOIDPTR);
|
||||
register_argtype("resources", var_free_resources, NULL, VAR_VOIDPTR);
|
||||
register_argtype("items", var_free_resources, var_copy_items, VAR_VOIDPTR);
|
||||
register_argtype("regions", var_free_regions, var_copy_regions, VAR_VOIDPTR);
|
||||
register_argtype("regions", var_free_regions, NULL, VAR_VOIDPTR);
|
||||
|
||||
/* register functions that turn message contents to readable strings */
|
||||
add_function("alliance", &eval_alliance);
|
||||
|
|
|
@ -61,7 +61,7 @@ function process(orders)
|
|||
-- loadscript("eressea/multis.lua")
|
||||
|
||||
-- run the turn:
|
||||
set_encoding("utf8")
|
||||
-- set_encoding("utf8")
|
||||
if read_orders(orders) ~= 0 then
|
||||
print("could not read " .. orders)
|
||||
return -1
|
||||
|
|
Loading…
Reference in a new issue