"Meldung über aus dem Astralraum auftauchende Einheit erscheint nicht bei allen Parteien"

Meldung erschien in der falschen Region, und aehnliche auch bzw. nicht gut genug verborgen bei Tarnung.
This commit is contained in:
Enno Rehling 2007-02-12 19:11:35 +00:00
parent cb4037dd56
commit d5999eaa21
1 changed files with 31 additions and 8 deletions

View File

@ -1790,6 +1790,8 @@ sp_treewalkenter(castorder *co)
ADDMSG(&mage->faction->msgs, msg_feedback(mage, co->order, "feedback_no_contact", "target", u));
} else {
int w;
message * m = NULL;
unit * u2;
if (!can_survive(u, rt)) {
cmistake(mage, co->order, 231, MSG_MAGIC);
@ -1810,7 +1812,17 @@ sp_treewalkenter(castorder *co)
ADDMSG(&r->msgs, msg_message("astral_disappear", "unit", u));
/* Meldungen in der Zielregion */
ADDMSG(&rt->msgs, msg_message("astral_appear", "unit", u));
for (u2 = rt->units; u2; u2 = u2->next) freset(u2->faction, FL_DH);
for (u2 = rt->units; u2; u2 = u2->next ) {
if (!fval(u2->faction, FL_DH)) {
if (cansee(u2->faction, rt, u, 0)) {
fset(u2->faction, FL_DH);
if (!m) m = msg_message("astral_appear", "unit", u);
r_addmessage(rt, u2->faction, m);
}
}
}
if (m) msg_release(m);
}
}
return erfolg;
@ -1934,13 +1946,13 @@ sp_treewalkexit(castorder *co)
/* Meldungen in der Zielregion */
for (u2 = r->units; u2; u2 = u2->next) freset(u2->faction, FL_DH);
for (u2 = rt->units; u2; u2 = u2->next) freset(u2->faction, FL_DH);
for (u2 = rt->units; u2; u2 = u2->next ) {
if (!fval(u2->faction, FL_DH)) {
if (cansee(u2->faction, rt, u, 0)) {
fset(u2->faction, FL_DH);
if (!m) m = msg_message("astral_appear", "unit", u);
r_addmessage(r, u2->faction, m);
r_addmessage(rt, u2->faction, m);
}
}
}
@ -5733,7 +5745,7 @@ sp_enterastral(castorder *co)
if (cansee(u2->faction, rt, u, 0)) {
fset(u2->faction, FL_DH);
if (!m) m = msg_message("astral_appear", "unit", u);
r_addmessage(r, u2->faction, m);
r_addmessage(rt, u2->faction, m);
}
}
}
@ -5853,7 +5865,7 @@ sp_pullastral(castorder *co)
if (cansee(u2->faction, rt, u, 0)) {
fset(u2->faction, FL_DH);
if (!m) m = msg_message("astral_appear", "unit", u);
r_addmessage(r, u2->faction, m);
r_addmessage(rt, u2->faction, m);
}
}
}
@ -5966,7 +5978,7 @@ sp_leaveastral(castorder *co)
if (cansee(u2->faction, rt, u, 0)) {
fset(u2->faction, FL_DH);
if (!m) m = msg_message("astral_appear", "unit", u);
r_addmessage(r, u2->faction, m);
r_addmessage(rt, u2->faction, m);
}
}
}
@ -6002,8 +6014,9 @@ sp_fetchastral(castorder *co)
/* für jede Einheit in der Kommandozeile */
for (n=0; n!=pa->length; ++n) {
unit * u = pa->param[n]->data.u;
unit * u2, * u = pa->param[n]->data.u;
int w;
message * m = NULL;
if (pa->param[n]->flag & TARGET_NOTFOUND) continue;
@ -6065,7 +6078,17 @@ sp_fetchastral(castorder *co)
ADDMSG(&ro->msgs, msg_message("astral_disappear", "unit", u));
/* Meldungen in der Zielregion */
ADDMSG(&rt->msgs, msg_message("astral_appear", "unit", u));
for (u2 = rt->units; u2; u2 = u2->next) freset(u2->faction, FL_DH);
for (u2 = rt->units; u2; u2 = u2->next ) {
if (!fval(u2->faction, FL_DH)) {
if (cansee(u2->faction, rt, u, 0)) {
fset(u2->faction, FL_DH);
if (!m) m = msg_message("astral_appear", "unit", u);
r_addmessage(rt, u2->faction, m);
}
}
}
if (m) msg_release(m);
}
if (rtl!=NULL) free_regionlist(rtl);
return cast_level;