Atrinik Server  4.0
follow.c
Go to the documentation of this file.
1 /*************************************************************************
2  * Atrinik, a Multiplayer Online Role Playing Game *
3  * *
4  * Copyright (C) 2009-2014 Alex Tokar and Atrinik Development Team *
5  * *
6  * Fork from Crossfire (Multiplayer game for X-windows). *
7  * *
8  * This program is free software; you can redistribute it and/or modify *
9  * it under the terms of the GNU General Public License as published by *
10  * the Free Software Foundation; either version 2 of the License, or *
11  * (at your option) any later version. *
12  * *
13  * This program is distributed in the hope that it will be useful, *
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
16  * GNU General Public License for more details. *
17  * *
18  * You should have received a copy of the GNU General Public License *
19  * along with this program; if not, write to the Free Software *
20  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
21  * *
22  * The author can be reached at admin@atrinik.org *
23  ************************************************************************/
24 
32 #include <global.h>
33 #include <player.h>
34 #include <object.h>
35 
37 void
38 command_follow (object *op, const char *command, char *params)
39 {
40  player *pl = CONTR(op);
41 
42  if (params == NULL) {
43  if (pl->followed_player == NULL) {
44  /* Not following anyone. */
45  draw_info(COLOR_WHITE, op, "Usage: /follow <player>");
46  return;
47  }
48 
49  player *followed = find_player_sh(pl->followed_player);
50  if (!IS_INVISIBLE(op, followed->ob)) {
51  draw_info_format(COLOR_WHITE, followed->ob,
52  "%s is no longer following you.",
53  op->name);
54  }
55 
56  draw_info_format(COLOR_WHITE, op,
57  "You stop following %s.",
58  pl->followed_player);
60 
61  return;
62  }
63 
64  player *followed = find_player(params);
65  if (followed == NULL) {
66  draw_info(COLOR_WHITE, op, "No such player.");
67  return;
68  }
69 
70  if (!IS_INVISIBLE(op, followed->ob)) {
71  draw_info_format(COLOR_GREEN, followed->ob,
72  "%s is now following you.",
73  op->name);
74  }
75 
76  pl->followed_player = add_string(params);
77  draw_info_format(COLOR_GREEN, op,
78  "You are now following %s.",
79  pl->followed_player);
80 }
void command_follow(object *op, const char *command, char *params)
Definition: follow.c:38
player * find_player_sh(shstr *plname)
Definition: player.c:116
player * find_player(const char *plname)
Definition: player.c:96
object * ob
Definition: player.h:185
const char * name
Definition: object.h:168
#define IS_INVISIBLE(__ob_, __player_)
Definition: define.h:1356
shstr * followed_player
Definition: player.h:165
#define FREE_AND_CLEAR_HASH(_nv_)
Definition: global.h:130