Atrinik Server  4.0
freeze.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 <toolkit/string.h>
34 #include <player.h>
35 #include <object.h>
36 
38 void command_freeze(object *op, const char *command, char *params)
39 {
40  char word[MAX_BUF];
41  size_t pos;
42  player *pl;
43  int ticks;
44 
45  pos = 0;
46 
47  if (!string_get_word(params, &pos, ' ', word, sizeof(word), '"')) {
48  draw_info(COLOR_WHITE, op, "Usage: /freeze <player> &lsqb;ticks&rsqb;");
49  return;
50  }
51 
52  pl = find_player(word);
53 
54  if (!pl) {
55  draw_info(COLOR_WHITE, op, "No such player.");
56  return;
57  }
58 
59  if (string_get_word(params, &pos, ' ', word, sizeof(word), 0) && string_isdigit(word)) {
60  ticks = atoi(word);
61  } else {
62  ticks = 100;
63  }
64 
65  draw_info(COLOR_RED, pl->ob, "You feel a mystical power binding you in place...");
66  draw_info_format(COLOR_WHITE, op, "You freeze %s for %d ticks.", pl->ob->name, ticks);
67 
68  pl->ob->speed_left = -(pl->ob->speed * ticks);
69 }
double speed_left
Definition: object.h:472
player * find_player(const char *plname)
Definition: player.c:96
object * ob
Definition: player.h:185
const char * name
Definition: object.h:168
double speed
Definition: object.h:469
void command_freeze(object *op, const char *command, char *params)
Definition: freeze.c:38