Bug #558 ยป 0002-Don-t-establish-player-contact-via-flagless-units.patch
server/citytools.c | ||
---|---|---|
return;
|
||
}
|
||
maybe_make_contact(utile, to_player);
|
||
unit_make_contact(punit, utile, to_player);
|
||
}
|
||
unit_change_homecity_handling(punit, tocity, rehome);
|
||
}
|
server/plrhand.c | ||
---|---|---|
make_contact(pplayer, city_owner(pcity), ptile);
|
||
}
|
||
unit_list_iterate_safe(tile1->units, punit) {
|
||
if (unit_has_type_flag(punit, UTYF_FLAGLESS)) {
|
||
continue; /* Flagless unit can't make contact */
|
||
}
|
||
make_contact(pplayer, unit_owner(punit), ptile);
|
||
} unit_list_iterate_safe_end;
|
||
} square_iterate_end;
|
server/unithand.c | ||
---|---|---|
* distant target tile and maybe some contacts. */
|
||
map_show_circle(pplayer, tgt_tile,
|
||
unit_type_get(act_unit)->vision_radius_sq);
|
||
maybe_make_contact(tgt_tile, pplayer);
|
||
unit_make_contact(act_unit, tgt_tile, pplayer);
|
||
}
|
||
if (act_unit->hp > 0) {
|
server/unittools.c | ||
---|---|---|
unit_list_prepend(pplayer->units, punit);
|
||
unit_list_prepend(ptile->units, punit);
|
||
maybe_make_contact(ptile, unit_owner(punit));
|
||
unit_make_contact(punit, ptile, nullptr);
|
||
if (pcity && !unit_has_type_flag(punit, UTYF_NOHOME)) {
|
||
fc_assert(punit->homecity == pcity->id);
|
||
fc_assert(city_owner(pcity) == pplayer);
|
||
... | ... | |
char victim_link[MAX_LEN_LINK];
|
||
map_show_circle(pplayer, ptile, act_utype->vision_radius_sq);
|
||
maybe_make_contact(ptile, pplayer);
|
||
unit_make_contact(punit, ptile, pplayer);
|
||
notify_player(pplayer, ptile, E_UNIT_LOST_MISC, ftc_server,
|
||
_("Your %s was killed by enemy units at the "
|
||
"paradrop destination."),
|
||
... | ... | |
if (unit_lives) {
|
||
wakeup_neighbor_sentries(punit);
|
||
}
|
||
maybe_make_contact(pdesttile, pplayer);
|
||
unit_make_contact(punit, pdesttile, pplayer);
|
||
if (unit_lives) {
|
||
/* Special checks for ground units in the ocean. */
|
||
... | ... | |
game.server.random_move_time = NULL;
|
||
}
|
||
/**********************************************************************//**
|
||
Make contact between a player and everyone adjacent to a tile via a unit
|
||
moving to that tile. Tile and player default to the unit's location and
|
||
owner if nullptr, but they may be different.
|
||
**************************************************************************/
|
||
void unit_make_contact(const struct unit *punit,
|
||
struct tile *ptile, struct player *pplayer) {
|
||
fc_assert_ret(punit != nullptr);
|
||
if (unit_has_type_flag(punit, UTYF_FLAGLESS)) {
|
||
return; /* Flagless unit can't make contact */
|
||
}
|
||
maybe_make_contact(ptile ? ptile : unit_tile(punit),
|
||
pplayer ? pplayer : unit_owner(punit));
|
||
}
|
server/unittools.h | ||
---|---|---|
enum unit_activity *activity,
|
||
struct extra_type **target);
|
||
void unit_forget_last_activity(struct unit *punit);
|
||
void unit_make_contact(const struct unit *punit,
|
||
struct tile *ptile, struct player *pplayer);
|
||
/* creation/deletion/upgrading */
|
||
void transform_unit(struct unit *punit, const struct unit_type *to_unit,
|