Atrinik Server  4.0
savebed.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 
30 #include <global.h>
31 #include <player.h>
32 #include <object.h>
33 #include <object_methods.h>
34 
36 static int
37 apply_func (object *op, object *applier, int aflags)
38 {
39  HARD_ASSERT(op != NULL);
40  HARD_ASSERT(applier != NULL);
41 
42  if (applier->type != PLAYER) {
43  return OBJECT_METHOD_OK;
44  }
45 
46  /* Update respawn position. */
47  snprintf(VS(CONTR(applier)->savebed_map), "%s", applier->map->path);
48  CONTR(applier)->bed_x = applier->x;
49  CONTR(applier)->bed_y = applier->y;
50 
51  draw_info(COLOR_WHITE, applier,
52  "You save and your save bed location is updated.");
53  hiscore_check(applier, 0);
54  player_save(applier);
55 
56  return OBJECT_METHOD_OK;
57 }
58 
63 {
64  OBJECT_METHODS(SAVEBED)->apply_func = apply_func;
65 }
#define SAVEBED
Definition: define.h:441
shstr * path
Definition: map.h:568
#define PLAYER
Definition: define.h:122
OBJECT_TYPE_INIT_DEFINE(savebed)
Definition: savebed.c:62
int16_t y
Definition: object.h:276
struct mapdef * map
Definition: object.h:139
void hiscore_check(object *op, int quiet)
Definition: hiscore.c:332
int16_t x
Definition: object.h:273
uint8_t type
Definition: object.h:360
#define OBJECT_METHODS(type)
static int apply_func(object *op, object *applier, int aflags)
Definition: savebed.c:37
#define OBJECT_METHOD_OK
void player_save(object *op)
Definition: player.c:2379