diff --git a/scripts/eressea/equipment.lua b/scripts/eressea/equipment.lua index 71fe78727..7d92d43c9 100644 --- a/scripts/eressea/equipment.lua +++ b/scripts/eressea/equipment.lua @@ -6,6 +6,10 @@ local function equip_first(u) equip_unit(u, name, 255) end +local function equip_demon(u) + u.race_name = 'human' +end + local mysets = { ['first_unit'] = { ['items'] = { @@ -77,7 +81,8 @@ local mysets = { ['seed_demon'] = { ['skills'] = { ['stamina'] = 15 - } + }, + ['callback'] = equip_demon }, ['seed_insect'] = { ['items'] = { diff --git a/src/kernel/faction.c b/src/kernel/faction.c index 81f2d42b1..7c46ab798 100755 --- a/src/kernel/faction.c +++ b/src/kernel/faction.c @@ -258,11 +258,14 @@ unit *addplayer(region * r, faction * f) const char * name; assert(r->land); + assert(f->units == NULL); if (rpeasants(r) < PEASANT_MIN) { rsetpeasants(r, PEASANT_MIN + rng_int() % (PEASANT_MAX - PEASANT_MIN)); } + if (rtrees(r, TREE_TREE) < 50) { + rsettrees(r, TREE_TREE, 50); + } - assert(f->units == NULL); faction_setorigin(f, 0, r->x, r->y); u = create_unit(r, f, 1, f->race, 0, NULL, NULL); u->status = ST_FLEE; diff --git a/src/orderfile.c b/src/orderfile.c index 12cb05834..5a3497b8e 100644 --- a/src/orderfile.c +++ b/src/orderfile.c @@ -232,20 +232,22 @@ typedef struct parser_state { static void handle_faction(void *userData, int no, const char *password) { parser_state *state = (parser_state *)userData; - faction * f = state->f = findfaction(no); + faction * f = findfaction(no); if (!f) { log_debug("orders for unknown faction %s", itoa36(no)); } else { + state->u = NULL; + state->next_order = NULL; + state->f = NULL; if (checkpasswd(f, password)) { + state->f = f; f->lastorders = turn; } else { log_debug("invalid password for faction %s", itoa36(no)); ADDMSG(&f->msgs, msg_message("wrongpasswd", "password", password)); } - state->u = NULL; - state->next_order = NULL; } }