Fliegende Einheiten ertrinken

Aussserdem: Verschieben der Astralraumänderungen (wg. schwerem Magiepatzer)
This commit is contained in:
Enno Rehling 2005-07-01 22:54:14 +00:00
parent 61e063cb66
commit b125e84ada
6 changed files with 12 additions and 16 deletions

View File

@ -3733,7 +3733,7 @@ monthly_healing(void)
if (fval(u, UFL_HUNGER)) continue;
if (fspecial(u->faction, FS_UNDEAD)) continue;
if (rterrain(r)==T_OCEAN && u->ship==NULL && !canswim(u)) continue;
if (rterrain(r)==T_OCEAN && u->ship==NULL && !(canswim(u) || canfly(u))) continue;
if(fspecial(u->faction, FS_REGENERATION)) {
u->hp = umhp;

View File

@ -737,7 +737,7 @@ drown(region *r)
ADDMSG(&u->faction->msgs, new_message(u->faction,
"drown_amphibian_nodead%u:unit%r:region",u, r));
}
} else if (!canswim(u)) {
} else if (!(canswim(u) || canfly(u))) {
scale_number(u, 0);
ADDMSG(&u->faction->msgs, new_message(u->faction,
"drown%u:unit%r:region", u, r));

View File

@ -356,10 +356,6 @@ canwalk(unit * u)
boolean
canfly(unit *u)
{
if (get_movement(&u->attribs, MV_CANNOTMOVE)) return false;
if (get_item(u, I_HORSE) || get_item(u, I_UNICORN)) return false;
if (get_item(u, I_PEGASUS) >= u->number && effskill(u, SK_RIDING) >= 4)
return true;
@ -373,10 +369,6 @@ canfly(unit *u)
boolean
canswim(unit *u)
{
if (get_movement(&u->attribs, MV_CANNOTMOVE)) return false;
if (get_item(u, I_HORSE) || get_item(u, I_UNICORN)) return false;
if (get_item(u, I_DOLPHIN) >= u->number && effskill(u, SK_RIDING) >= 4)
return true;
@ -1247,11 +1239,14 @@ travel_route(unit * u, region_list * route_begin, region_list * route_end, order
/* Ozeanfelder können nur von Einheiten mit Schwimmen und ohne
* Pferde betreten werden. */
if (rterrain(next) == T_OCEAN && !canswim(u)) {
ADDMSG(&u->faction->msgs, msg_message("detectocean",
"unit region", u, next));
break;
if (rterrain(next) == T_OCEAN) {
if (!(canswim(u) || canfly(u))) {
ADDMSG(&u->faction->msgs, msg_message("detectocean",
"unit region", u, next));
break;
}
}
}
/* movement blocked by a wall */

View File

@ -55,6 +55,7 @@ extern void run_to(struct unit * u, struct region * to);
extern struct unit *is_guarded(struct region * r, struct unit * u, unsigned int mask);
extern int enoughsailors(const struct ship * sh, const struct region * r);
extern boolean canswim(struct unit *u);
extern boolean canfly(struct unit *u);
extern struct unit *get_captain(const struct ship * sh);
extern void travelthru(const struct unit * u, struct region * r);
extern struct ship * move_ship(struct ship * sh, struct region * from, struct region * to, struct region_list * route);

View File

@ -5553,7 +5553,7 @@ sp_sweetdreams(castorder *co)
/* Zieleinheit */
u = pa->param[n]->data.u;
if (!ucontact(u, mage, HELP_GUARD)) {
if (!ucontact(u, mage)) {
cmistake(mage, co->order, 40, MSG_EVENT);
continue;
}

View File

@ -37,7 +37,7 @@
#define HUNGER_REDUCES_SKILL /* Hunger reduziert den Talentwert
auf die Hälfte */
#define ASTRAL_ITEM_RESTRICTIONS /* keine grossen dinge im astralraum */
#undef ASTRAL_ITEM_RESTRICTIONS /* keine grossen dinge im astralraum */
#define MUSEUM_MODULE
#define ARENA_MODULE