From 1b53128e1a3116433531e1a985f9f38158042f87 Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Tue, 10 Oct 2017 20:09:39 +0200 Subject: [PATCH] BUG 2366: Fix cansee for seen_spell regions. --- src/attributes/attributes.c | 2 +- src/attributes/attributes.h | 2 +- src/battle.c | 2 +- src/creport.c | 4 +- src/economy.c | 2 +- src/give.c | 2 +- src/guard.c | 2 +- src/kernel/build.c | 2 +- src/laws.c | 74 ++++++++++++++++++------------------- src/laws.h | 4 +- src/magic.c | 2 +- src/monsters.c | 4 +- src/move.c | 8 ++-- src/report.c | 10 ++--- src/reports.c | 11 +++--- src/reports.h | 2 +- src/reports.test.c | 19 ++++++++++ src/spells.c | 38 +++++++++---------- src/spy.c | 2 +- 19 files changed, 106 insertions(+), 86 deletions(-) diff --git a/src/attributes/attributes.c b/src/attributes/attributes.c index f003c2cde..95d4f41fc 100644 --- a/src/attributes/attributes.c +++ b/src/attributes/attributes.c @@ -114,7 +114,7 @@ static attrib *make_observer(faction *f, int perception) return a; } -int get_observer(region *r, faction *f) { +int get_observer(const region *r, const faction *f) { if (fval(r, RF_OBSERVER)) { attrib *a = a_find(r->attribs, &at_observer); while (a && a->type == &at_observer) { diff --git a/src/attributes/attributes.h b/src/attributes/attributes.h index 19b371dbb..3cd303f15 100644 --- a/src/attributes/attributes.h +++ b/src/attributes/attributes.h @@ -29,7 +29,7 @@ extern "C" { extern void register_attributes(void); void set_observer(struct region *r, struct faction *f, int perception, int turns); - int get_observer(struct region *r, struct faction *f); + int get_observer(const struct region *r, const struct faction *f); #ifdef __cplusplus } diff --git a/src/battle.c b/src/battle.c index ad1c0f8da..a60eeebb2 100644 --- a/src/battle.c +++ b/src/battle.c @@ -3847,7 +3847,7 @@ static bool start_battle(region * r, battle ** bp) /* Beginn Fehlerbehandlung */ /* Fehler: "Die Einheit wurde nicht gefunden" */ - if (!u2 || u2->number == 0 || !cansee(u->faction, u->region, u2, 0)) { + if (!u2 || u2->number == 0 || !cansee(u->faction, u->region, u2, 0, seen_battle)) { ADDMSG(&u->faction->msgs, msg_feedback(u, ord, "feedback_unit_not_found", "")); continue; diff --git a/src/creport.c b/src/creport.c index 4ec7f9b0b..c26d28963 100644 --- a/src/creport.c +++ b/src/creport.c @@ -1363,7 +1363,7 @@ static void cr_output_region(FILE * F, report_context * ctx, region * r) building *b; ship *sh; unit *u; - int stealthmod = stealth_modifier(r->seen.mode); + int stealthmod = stealth_modifier(r, f, r->seen.mode); if (r->land && r->land->display && r->land->display[0]) fprintf(F, "\"%s\";Beschr\n", r->land->display); @@ -1497,7 +1497,7 @@ static void cr_output_region(FILE * F, report_context * ctx, region * r) for (u = r->units; u; u = u->next) { if (u->building || u->ship || (stealthmod > INT_MIN - && cansee(f, r, u, stealthmod))) { + && cansee(f, r, u, stealthmod, r->seen.mode))) { cr_output_unit_compat(F, r, f, u, r->seen.mode); } } diff --git a/src/economy.c b/src/economy.c index 7c4b0efd3..73007b750 100644 --- a/src/economy.c +++ b/src/economy.c @@ -2454,7 +2454,7 @@ static void steal_cmd(unit * u, struct order *ord, request ** stealorders) } for (u2 = r->units; u2; u2 = u2->next) { - if (u2->faction == f && cansee(u->faction, r, u2, 0)) + if (u2->faction == f && cansee_depr(u->faction, r, u2, 0)) break; } diff --git a/src/give.c b/src/give.c index da75e56c5..0dab27f2f 100644 --- a/src/give.c +++ b/src/give.c @@ -614,7 +614,7 @@ bool can_give_to(unit *u, unit *u2) { return false; } if (u2 && !alliedunit(u2, u->faction, HELP_GIVE) - && !cansee(u->faction, u->region, u2, 0) && !ucontact(u2, u) + && !cansee_depr(u->faction, u->region, u2, 0) && !ucontact(u2, u) && !fval(u2, UFL_TAKEALL)) { return false; } diff --git a/src/guard.c b/src/guard.c index 118ede5fc..18281c7a0 100644 --- a/src/guard.c +++ b/src/guard.c @@ -93,7 +93,7 @@ static bool is_guardian_u(const unit * guard, unit * u) return false; if (ucontact(guard, u)) return false; - if (!cansee(guard->faction, u->region, u, 0)) + if (!cansee_depr(guard->faction, u->region, u, 0)) return false; if (!(u_race(guard)->flags & RCF_FLY) && u_race(u)->flags & RCF_FLY) return false; diff --git a/src/kernel/build.c b/src/kernel/build.c index 1f4e143df..2de25938e 100644 --- a/src/kernel/build.c +++ b/src/kernel/build.c @@ -113,7 +113,7 @@ static void destroy_road(unit * u, int nmax, struct order *ord) for (u2 = r->units; u2; u2 = u2->next) { if (u2->faction != u->faction && is_guard(u2) - && cansee(u2->faction, u->region, u, 0) + && cansee_depr(u2->faction, u->region, u, 0) && !alliedunit(u, u2->faction, HELP_GUARD)) { cmistake(u, ord, 70, MSG_EVENT); return; diff --git a/src/laws.c b/src/laws.c index f60af7f15..71309914a 100644 --- a/src/laws.c +++ b/src/laws.c @@ -1651,7 +1651,7 @@ static bool try_rename(unit *u, building *b, order *ord) { } if (owner) { - if (cansee(owner->faction, u->region, u, 0)) { + if (cansee(owner->faction, u->region, u, 0, seen_unit)) { ADDMSG(&owner->faction->msgs, msg_message("renamed_building_seen", "building renamer region", b, u, u->region)); @@ -1747,7 +1747,7 @@ int name_cmd(struct unit *u, struct order *ord) break; } } - if (cansee(f, r, u, 0)) { + if (cansee(f, r, u, 0, seen_unit)) { ADDMSG(&f->msgs, msg_message("renamed_faction_seen", "unit region", u, r)); } @@ -1794,7 +1794,7 @@ int name_cmd(struct unit *u, struct order *ord) } uo = ship_owner(sh); if (uo) { - if (cansee(uo->faction, r, u, 0)) { + if (cansee(uo->faction, r, u, 0, seen_unit)) { ADDMSG(&uo->faction->msgs, msg_message("renamed_ship_seen", "ship renamer region", sh, u, r)); } @@ -1823,7 +1823,7 @@ int name_cmd(struct unit *u, struct order *ord) unit *u2 = 0; getunit(r, u->faction, &u2); - if (!u2 || !cansee(u->faction, r, u2, 0)) { + if (!u2 || !cansee(u->faction, r, u2, 0, seen_unit)) { ADDMSG(&u->faction->msgs, msg_feedback(u, ord, "feedback_unit_not_found", "")); break; @@ -1836,7 +1836,7 @@ int name_cmd(struct unit *u, struct order *ord) break; } } - if (cansee(u2->faction, r, u, 0)) { + if (cansee(u2->faction, r, u, 0, seen_unit)) { ADDMSG(&u2->faction->msgs, msg_message("renamed_seen", "renamer renamed region", u, u2, r)); } @@ -1898,7 +1898,7 @@ int name_cmd(struct unit *u, struct order *ord) void deliverMail(faction * f, region * r, unit * u, const char *s, unit * receiver) { - if (!cansee(f, r, u, 0)) { + if (!cansee(f, r, u, 0, seen_unit)) { u = NULL; } if (!receiver) { /* BOTSCHAFT an PARTEI */ @@ -1917,7 +1917,7 @@ mailunit(region * r, unit * u, int n, struct order *ord, const char *s) { unit *u2 = findunitr(r, n); - if (u2 && cansee(u->faction, r, u2, 0)) { + if (u2 && cansee(u->faction, r, u2, 0, seen_unit)) { deliverMail(u2->faction, r, u, s, u2); /* now done in prepare_mail_cmd */ } @@ -1995,7 +1995,7 @@ int mail_cmd(unit * u, struct order *ord) n = getid(); for (u2 = r->units; u2; u2 = u2->next) { - if (u2->no == n && cansee(u->faction, r, u2, 0)) { + if (u2->no == n && cansee(u->faction, r, u2, 0, seen_unit)) { break; } } @@ -2049,7 +2049,7 @@ int mail_cmd(unit * u, struct order *ord) for (u2 = r->units; u2; u2 = u2->next) { if (u2->building == b && !fval(u2->faction, FFL_SELECT) - && cansee(u->faction, r, u2, 0)) { + && cansee(u->faction, r, u2, 0, seen_unit)) { mailunit(r, u, u2->no, ord, s); fset(u2->faction, FFL_SELECT); } @@ -2078,7 +2078,7 @@ int mail_cmd(unit * u, struct order *ord) for (u2 = r->units; u2; u2 = u2->next) { if (u2->ship == sh && !fval(u2->faction, FFL_SELECT) - && cansee(u->faction, r, u2, 0)) { + && cansee(u->faction, r, u2, 0, seen_unit)) { mailunit(r, u, u2->no, ord, s); fset(u2->faction, FFL_SELECT); } @@ -4281,10 +4281,9 @@ void update_subscriptions(void) * Es muss auch niemand aus f in der region sein, wenn sie vom Turm * erblickt wird */ bool -cansee(const faction * f, const region * r, const unit * u, int modifier) +cansee(const faction * f, const region * r, const unit * u, int modifier, seen_mode mode) { int stealth, rings; - unit *u2 = r->units; if (u->faction == f || omniscient(f)) { return true; @@ -4303,44 +4302,45 @@ cansee(const faction * f, const region * r, const unit * u, int modifier) } } - if (leftship(u)) - return true; - - while (u2 && u2->faction != f) - u2 = u2->next; - if (u2 == NULL) - return false; - - /* simple visibility, just gotta have a unit in the region to see 'em */ - if (is_guard(u) || usiege(u) || u->building || u->ship) { + /* simple visibility, just gotta have a viewer in the region to see 'em */ + if (leftship(u) || is_guard(u) || usiege(u) || u->building || u->ship) { return true; } rings = invisible(u, NULL); stealth = eff_stealth(u, r) - modifier; - while (u2) { - if (rings < u->number || invisible(u, u2) < u->number) { - if (skill_enabled(SK_PERCEPTION)) { - int observation = effskill(u2, SK_PERCEPTION, 0); + if (mode > seen_unit) { + return (rings <= 0 || stealth <= 0); + } + else { + unit *u2; + for (u2 = r->units; u2; u2 = u2->next) { + if (u2->faction == f) { + if (rings < u->number || invisible(u, u2) < u->number) { + if (skill_enabled(SK_PERCEPTION)) { + int observation = effskill(u2, SK_PERCEPTION, 0); - if (observation >= stealth) { - return true; + if (observation >= stealth) { + return true; + } + } + else { + return true; + } } } - else { - return true; - } } - - /* find next unit in our faction */ - do { - u2 = u2->next; - } while (u2 && u2->faction != f); } return false; } +bool +cansee_depr(const faction * f, const region * r, const unit * u, int modifier) +{ + return cansee(f, r, u, modifier, seen_unit); +} + bool cansee_unit(const unit * u, const unit * target, int modifier) /* target->region kann != u->region sein, wenn es um durchreisen geht */ { @@ -4427,7 +4427,7 @@ bool seefaction(const faction * f, const region * r, const unit * u, int modifier) { if (((f == u->faction) || !fval(u, UFL_ANON_FACTION)) - && cansee(f, r, u, modifier)) + && cansee(f, r, u, modifier, seen_unit)) return true; return false; } diff --git a/src/laws.h b/src/laws.h index 7f1385483..32a5b4ef3 100755 --- a/src/laws.h +++ b/src/laws.h @@ -98,7 +98,9 @@ extern "C" { void nmr_warnings(void); - bool cansee(const struct faction *f, const struct region *r, + bool cansee(const struct faction * f, const struct region * r, + const struct unit *u, int modifier, seen_mode mode); + bool cansee_depr(const struct faction *f, const struct region *r, const struct unit *u, int modifier); bool cansee_durchgezogen(const struct faction *f, const struct region *r, const struct unit *u, int modifier); diff --git a/src/magic.c b/src/magic.c index f83e31a7d..d05c87b80 100644 --- a/src/magic.c +++ b/src/magic.c @@ -1621,7 +1621,7 @@ order * ord) if (u->region != r) u = NULL; else if (sp->sptyp & TESTCANSEE) { - if (!cansee(mage->faction, r, u, 0) && !ucontact(u, mage)) { + if (!cansee_depr(mage->faction, r, u, 0) && !ucontact(u, mage)) { u = NULL; } } diff --git a/src/monsters.c b/src/monsters.c index 115759d29..39186ae91 100644 --- a/src/monsters.c +++ b/src/monsters.c @@ -159,7 +159,7 @@ static order *monster_attack(unit * u, const unit * target) { assert(u->region == target->region); assert(u->faction != target->faction); - if (!cansee(u->faction, u->region, target, 0)) + if (!cansee_depr(u->faction, u->region, target, 0)) return NULL; if (monster_is_waiting(u)) return NULL; @@ -199,7 +199,7 @@ int monster_attacks(unit * monster, bool rich_only) int money = 0; for (u2 = r->units; u2; u2 = u2->next) { - if (u2->faction != monster->faction && cansee(monster->faction, r, u2, 0) && !in_safe_building(u2, monster)) { + if (u2->faction != monster->faction && cansee_depr(monster->faction, r, u2, 0) && !in_safe_building(u2, monster)) { int m = get_money(u2); if (u_race(monster) == rc_serpent) { /* attack bigger ships only */ diff --git a/src/move.c b/src/move.c index 3f899ac22..117ef266a 100644 --- a/src/move.c +++ b/src/move.c @@ -912,7 +912,7 @@ static void caught_target(region * r, unit * u) target, u)); } else if (!alliedunit(target, u->faction, HELP_ALL) - && cansee(target->faction, r, u, 0)) { + && cansee_depr(target->faction, r, u, 0)) { ADDMSG(&target->faction->msgs, msg_message("followdetect", "unit follower", target, u)); } @@ -1185,7 +1185,7 @@ static void init_transportation(void) continue; } if (!transport(ut, u)) { - if (cansee(u->faction, r, ut, 0)) { + if (cansee_depr(u->faction, r, ut, 0)) { cmistake(u, u->thisorder, 286, MSG_MOVE); } else { @@ -2093,7 +2093,7 @@ static const region_list *travel_i(unit * u, const region_list * route_begin, } } if (!found) { - if (cansee(u->faction, u->region, ut, 0)) { + if (cansee_depr(u->faction, u->region, ut, 0)) { cmistake(u, ord, 90, MSG_MOVE); } else { @@ -2604,7 +2604,7 @@ void follow_unit(unit * u) u2 = a->data.v; } - if (!u2 || (!followship && (u2->region != r || !cansee(u->faction, r, u2, 0)))) { + if (!u2 || (!followship && (u2->region != r || !cansee_depr(u->faction, r, u2, 0)))) { return; } diff --git a/src/report.c b/src/report.c index c23a9466c..311cd98b2 100644 --- a/src/report.c +++ b/src/report.c @@ -2269,7 +2269,7 @@ report_plaintext(const char *filename, report_context * ctx, anyunits = 0; for (r = ctx->first; r != ctx->last; r = r->next) { - int stealthmod = stealth_modifier(r->seen.mode); + int stealthmod = stealth_modifier(r, f, r->seen.mode); building *b = r->buildings; ship *sh = r->ships; @@ -2314,14 +2314,12 @@ report_plaintext(const char *filename, report_context * ctx, newline(out); report_travelthru(out, r, f); } - /* Statistik */ if (wants_stats && r->seen.mode >= seen_unit) statistics(out, r, f); /* Nachrichten an REGION in der Region */ - - if (r->seen.mode == seen_unit || r->seen.mode == seen_travel) { + if (r->seen.mode >= seen_travel) { message_list *mlist = r_getmessages(r, f); if (mlist) { struct mlist **split = merge_messages(mlist, r->msgs); @@ -2350,8 +2348,8 @@ report_plaintext(const char *filename, report_context * ctx, } } while (u && !u->ship) { - if (stealthmod > INT_MIN) { - if (u->faction == f || cansee(f, r, u, stealthmod)) { + if (stealthmod > INT_MIN && r->seen.mode >= seen_unit) { + if (u->faction == f || cansee(f, r, u, stealthmod, r->seen.mode)) { nr_unit(out, f, u, 4, r->seen.mode); } } diff --git a/src/reports.c b/src/reports.c index 1182f89c9..e6021134a 100644 --- a/src/reports.c +++ b/src/reports.c @@ -960,15 +960,16 @@ struct message *msg_curse(const struct curse *c, const void *obj, objtype_t typ, const struct unit *ucansee(const struct faction *f, const struct unit *u, const struct unit *x) { - if (cansee(f, u->region, u, 0)) + if (cansee_depr(f, u->region, u, 0)) return u; return x; } -int stealth_modifier(seen_mode mode) +int stealth_modifier(const region *r, const faction *f, seen_mode mode) { switch (mode) { case seen_spell: + return get_observer(r, f); case seen_unit: return 0; case seen_lighthouse: @@ -1061,14 +1062,14 @@ void get_addresses(report_context * ctx) } for (; r != NULL; r = r->next) { - int stealthmod = stealth_modifier(r->seen.mode); + int stealthmod = stealth_modifier(r, ctx->f, r->seen.mode); if (r->seen.mode == seen_lighthouse) { unit *u = r->units; for (; u; u = u->next) { faction *sf = visible_faction(ctx->f, u); if (lastf != sf) { if (u->building || u->ship || (stealthmod > INT_MIN - && cansee(ctx->f, r, u, stealthmod))) { + && cansee_depr(ctx->f, r, u, stealthmod))) { add_seen_faction_i(&flist, sf); lastf = sf; } @@ -1086,7 +1087,7 @@ void get_addresses(report_context * ctx) if (u->faction != ctx->f) { faction *sf = visible_faction(ctx->f, u); bool ballied = sf && sf != ctx->f && sf != lastf - && !fval(u, UFL_ANON_FACTION) && cansee(ctx->f, r, u, stealthmod); + && !fval(u, UFL_ANON_FACTION) && cansee_depr(ctx->f, r, u, stealthmod); if (ballied || is_allied(ctx->f, sf)) { add_seen_faction_i(&flist, sf); lastf = sf; diff --git a/src/reports.h b/src/reports.h index 083248fd9..a4850a0c7 100644 --- a/src/reports.h +++ b/src/reports.h @@ -70,7 +70,7 @@ extern "C" { const struct unit *ucansee(const struct faction *f, const struct unit *u, const struct unit *x); - int stealth_modifier(seen_mode seen_mode); + int stealth_modifier(const struct region *r, const struct faction *f, seen_mode mode); typedef struct report_context { struct faction *f; diff --git a/src/reports.test.c b/src/reports.test.c index 7c6e8ccf4..0c9cf2b78 100644 --- a/src/reports.test.c +++ b/src/reports.test.c @@ -762,6 +762,24 @@ static void test_report_far_vision(CuTest *tc) { test_cleanup(); } +static void test_stealth_modifier(CuTest *tc) { + region *r; + faction *f; + + test_setup(); + f = test_create_faction(NULL); + r = test_create_region(0, 0, NULL); + CuAssertIntEquals(tc, 0, stealth_modifier(r, f, seen_unit)); + CuAssertIntEquals(tc, -1, stealth_modifier(r, f, seen_travel)); + CuAssertIntEquals(tc, -2, stealth_modifier(r, f, seen_lighthouse)); + CuAssertIntEquals(tc, -1, stealth_modifier(r, f, seen_spell)); + + set_observer(r, f, 10, 1); + CuAssertIntEquals(tc, 10, stealth_modifier(r, f, seen_spell)); + CuAssertIntEquals(tc, -1, stealth_modifier(r, NULL, seen_spell)); + test_cleanup(); +} + CuSuite *get_reports_suite(void) { CuSuite *suite = CuSuiteNew(); @@ -782,6 +800,7 @@ CuSuite *get_reports_suite(void) SUITE_ADD_TEST(suite, test_report_far_vision); SUITE_ADD_TEST(suite, test_reorder_units); SUITE_ADD_TEST(suite, test_seen_faction); + SUITE_ADD_TEST(suite, test_stealth_modifier); SUITE_ADD_TEST(suite, test_regionid); SUITE_ADD_TEST(suite, test_sparagraph); SUITE_ADD_TEST(suite, test_sparagraph_long); diff --git a/src/spells.c b/src/spells.c index c9e914904..2fc21ffff 100644 --- a/src/spells.c +++ b/src/spells.c @@ -362,11 +362,11 @@ int report_action(region * r, unit * actor, message * msg, int flags) if (view == ACTION_CANSEE) { /* Bei Fernzaubern sieht nur die eigene Partei den Magier */ show = show || (r == actor->region - && cansee(u->faction, r, actor, 0)); + && cansee_depr(u->faction, r, actor, 0)); } else if (view == ACTION_CANNOTSEE) { show = !show && !(r == actor->region - && cansee(u->faction, r, actor, 0)); + && cansee_depr(u->faction, r, actor, 0)); } else { /* the unliely (or lazy) case */ @@ -1328,7 +1328,7 @@ static int sp_rosthauch(castorder * co) "mage target amount", mage, u, ironweapon)); ADDMSG(&u->faction->msgs, msg_message("rust_effect", "mage target amount", - cansee(u->faction, r, mage, 0) ? mage : NULL, u, ironweapon)); + cansee_depr(u->faction, r, mage, 0) ? mage : NULL, u, ironweapon)); success += ironweapon; } else { @@ -1405,7 +1405,7 @@ static int sp_kaelteschutz(castorder * co) u)); if (u->faction != mage->faction) ADDMSG(&u->faction->msgs, msg_message("heat_effect", "mage target", - cansee(u->faction, r, mage, 0) ? mage : NULL, u)); + cansee_depr(u->faction, r, mage, 0) ? mage : NULL, u)); i = cast_level; } /* Erstattung? */ @@ -1825,7 +1825,7 @@ static int sp_treewalkenter(castorder * co) m = NULL; for (u2 = r->units; u2; u2 = u2->next) { if (!fval(u2->faction, FFL_SELECT)) { - if (cansee(u2->faction, r, u, 0)) { + if (cansee_depr(u2->faction, r, u, 0)) { fset(u2->faction, FFL_SELECT); if (!m) m = msg_message("astral_disappear", "unit", u); @@ -1842,7 +1842,7 @@ static int sp_treewalkenter(castorder * co) m = NULL; for (u2 = rt->units; u2; u2 = u2->next) { if (!fval(u2->faction, FFL_SELECT)) { - if (cansee(u2->faction, rt, u, 0)) { + if (cansee_depr(u2->faction, rt, u, 0)) { fset(u2->faction, FFL_SELECT); if (!m) m = msg_message("astral_appear", "unit", u); @@ -1971,7 +1971,7 @@ static int sp_treewalkexit(castorder * co) m = NULL; for (u2 = r->units; u2; u2 = u2->next) { if (!fval(u2->faction, FFL_SELECT)) { - if (cansee(u2->faction, r, u, 0)) { + if (cansee_depr(u2->faction, r, u, 0)) { fset(u2->faction, FFL_SELECT); if (!m) m = msg_message("astral_disappear", "unit", u); @@ -1989,7 +1989,7 @@ static int sp_treewalkexit(castorder * co) m = NULL; for (u2 = rt->units; u2; u2 = u2->next) { if (!fval(u2->faction, FFL_SELECT)) { - if (cansee(u2->faction, rt, u, 0)) { + if (cansee_depr(u2->faction, rt, u, 0)) { fset(u2->faction, FFL_SELECT); if (!m) m = msg_message("astral_appear", "unit", u); @@ -2954,7 +2954,7 @@ static int sp_deathcloud(castorder * co) if (!fval(u->faction, FFL_SELECT)) { fset(u->faction, FFL_SELECT); ADDMSG(&u->faction->msgs, msg_message("deathcloud_effect", - "mage region", cansee(u->faction, r, mage, 0) ? mage : NULL, r)); + "mage region", cansee_depr(u->faction, r, mage, 0) ? mage : NULL, r)); } } @@ -3848,7 +3848,7 @@ static int sp_song_of_peace(castorder * co) if (!fval(u->faction, FFL_SELECT)) { message *m = NULL; fset(u->faction, FFL_SELECT); - if (cansee(u->faction, r, mage, 0)) { + if (cansee_depr(u->faction, r, mage, 0)) { if (msg[0] == NULL) msg[0] = msg_message("song_of_peace_effect_0", "mage", mage); m = msg[0]; @@ -3905,7 +3905,7 @@ static int sp_generous(castorder * co) if (!fval(u->faction, FFL_SELECT)) { message *m = NULL; fset(u->faction, FFL_SELECT); - if (cansee(u->faction, r, mage, 0)) { + if (cansee_depr(u->faction, r, mage, 0)) { if (msg[0] == NULL) msg[0] = msg_message("generous_effect_0", "mage", mage); m = msg[0]; @@ -5040,7 +5040,7 @@ int sp_enterastral(castorder * co) m = NULL; for (u2 = r->units; u2; u2 = u2->next) { if (!fval(u2->faction, FFL_SELECT)) { - if (cansee(u2->faction, r, u, 0)) { + if (cansee_depr(u2->faction, r, u, 0)) { fset(u2->faction, FFL_SELECT); if (!m) m = msg_message("astral_disappear", "unit", u); @@ -5058,7 +5058,7 @@ int sp_enterastral(castorder * co) m = NULL; for (u2 = rt->units; u2; u2 = u2->next) { if (!fval(u2->faction, FFL_SELECT)) { - if (cansee(u2->faction, rt, u, 0)) { + if (cansee_depr(u2->faction, rt, u, 0)) { fset(u2->faction, FFL_SELECT); if (!m) m = msg_message("astral_appear", "unit", u); @@ -5184,7 +5184,7 @@ int sp_pullastral(castorder * co) m = NULL; for (u2 = r->units; u2; u2 = u2->next) { if (!fval(u2->faction, FFL_SELECT)) { - if (cansee(u2->faction, r, u, 0)) { + if (cansee_depr(u2->faction, r, u, 0)) { fset(u2->faction, FFL_SELECT); if (!m) m = msg_message("astral_disappear", "unit", u); @@ -5202,7 +5202,7 @@ int sp_pullastral(castorder * co) m = NULL; for (u2 = rt->units; u2; u2 = u2->next) { if (!fval(u2->faction, FFL_SELECT)) { - if (cansee(u2->faction, rt, u, 0)) { + if (cansee_depr(u2->faction, rt, u, 0)) { fset(u2->faction, FFL_SELECT); if (!m) m = msg_message("astral_appear", "unit", u); @@ -5315,7 +5315,7 @@ int sp_leaveastral(castorder * co) m = NULL; for (u2 = r->units; u2; u2 = u2->next) { if (!fval(u2->faction, FFL_SELECT)) { - if (cansee(u2->faction, r, u, 0)) { + if (cansee_depr(u2->faction, r, u, 0)) { fset(u2->faction, FFL_SELECT); if (!m) m = msg_message("astral_disappear", "unit", u); @@ -5333,7 +5333,7 @@ int sp_leaveastral(castorder * co) m = NULL; for (u2 = rt->units; u2; u2 = u2->next) { if (!fval(u2->faction, FFL_SELECT)) { - if (cansee(u2->faction, rt, u, 0)) { + if (cansee_depr(u2->faction, rt, u, 0)) { fset(u2->faction, FFL_SELECT); if (!m) m = msg_message("astral_appear", "unit", u); @@ -5443,7 +5443,7 @@ int sp_fetchastral(castorder * co) m = NULL; for (u2 = ro->units; u2; u2 = u2->next) { if (!fval(u2->faction, FFL_SELECT)) { - if (cansee(u2->faction, ro, u, 0)) { + if (cansee_depr(u2->faction, ro, u, 0)) { fset(u2->faction, FFL_SELECT); if (!m) m = msg_message("astral_disappear", "unit", u); @@ -5460,7 +5460,7 @@ int sp_fetchastral(castorder * co) m = NULL; for (u2 = rt->units; u2; u2 = u2->next) { if (!fval(u2->faction, FFL_SELECT)) { - if (cansee(u2->faction, rt, u, 0)) { + if (cansee_depr(u2->faction, rt, u, 0)) { fset(u2->faction, FFL_SELECT); if (!m) m = msg_message("astral_appear", "unit", u); diff --git a/src/spy.c b/src/spy.c index 210be63e4..4039e8a8a 100644 --- a/src/spy.c +++ b/src/spy.c @@ -193,7 +193,7 @@ static bool can_set_factionstealth(const unit * u, const faction * f) if (ru->number) { faction *fv = visible_faction(f, ru); if (fv == f) { - if (cansee(f, lastr, ru, 0)) + if (cansee_depr(f, lastr, ru, 0)) return true; } }