|
@@ -2895,6 +2895,9 @@ ACMD_FUNC(recall) {
|
|
|
clif_displaymessage(fd, msg_txt(1020)); // You are not authorized to warp this player from their map.
|
|
|
return -1;
|
|
|
}
|
|
|
+ if (pl_sd->bl.m == sd->bl.m && pl_sd->bl.x == sd->bl.x && pl_sd->bl.y == sd->bl.y) {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
pc_setpos(pl_sd, sd->mapindex, sd->bl.x, sd->bl.y, CLR_RESPAWN);
|
|
|
sprintf(atcmd_output, msg_txt(46), pl_sd->status.name); // %s recalled!
|
|
|
clif_displaymessage(fd, atcmd_output);
|
|
@@ -3577,6 +3580,8 @@ ACMD_FUNC(recallall)
|
|
|
{
|
|
|
if (sd->status.account_id != pl_sd->status.account_id && pc_get_group_level(sd) >= pc_get_group_level(pl_sd))
|
|
|
{
|
|
|
+ if (pl_sd->bl.m == sd->bl.m && pl_sd->bl.x == sd->bl.x && pl_sd->bl.y == sd->bl.y)
|
|
|
+ continue; // Don't waste time warping the character to the same place.
|
|
|
if (pl_sd->bl.m >= 0 && map[pl_sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE))
|
|
|
count++;
|
|
|
else {
|
|
@@ -3638,8 +3643,8 @@ ACMD_FUNC(guildrecall)
|
|
|
{
|
|
|
if (sd->status.account_id != pl_sd->status.account_id && pl_sd->status.guild_id == g->guild_id)
|
|
|
{
|
|
|
- if (pc_get_group_level(pl_sd) > pc_get_group_level(sd))
|
|
|
- continue; //Skip GMs greater than you.
|
|
|
+ if (pc_get_group_level(pl_sd) > pc_get_group_level(sd) || (pl_sd->bl.m == sd->bl.m && pl_sd->bl.x == sd->bl.x && pl_sd->bl.y == sd->bl.y))
|
|
|
+ continue; // Skip GMs greater than you... and chars already on the cell
|
|
|
if (pl_sd->bl.m >= 0 && map[pl_sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE))
|
|
|
count++;
|
|
|
else
|
|
@@ -3697,8 +3702,8 @@ ACMD_FUNC(partyrecall)
|
|
|
{
|
|
|
if (sd->status.account_id != pl_sd->status.account_id && pl_sd->status.party_id == p->party.party_id)
|
|
|
{
|
|
|
- if (pc_get_group_level(pl_sd) > pc_get_group_level(sd))
|
|
|
- continue; //Skip GMs greater than you.
|
|
|
+ if (pc_get_group_level(pl_sd) > pc_get_group_level(sd) || (pl_sd->bl.m == sd->bl.m && pl_sd->bl.x == sd->bl.x && pl_sd->bl.y == sd->bl.y))
|
|
|
+ continue; // Skip GMs greater than you... and chars already on the cell
|
|
|
if (pl_sd->bl.m >= 0 && map[pl_sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE))
|
|
|
count++;
|
|
|
else
|