Crossfire Server, Trunk
player_changer.cpp
Go to the documentation of this file.
1 /*
2  * Crossfire -- cooperative multi-player graphical RPG and adventure game
3  *
4  * Copyright (c) 1999-2014 Mark Wedel and the Crossfire Development Team
5  * Copyright (c) 1992 Frank Tore Johansen
6  *
7  * Crossfire is free software and comes with ABSOLUTELY NO WARRANTY. You are
8  * welcome to redistribute it under certain conditions. For details, please
9  * see COPYING and LICENSE.
10  *
11  * The authors can be reached via e-mail at <crossfire@metalforge.org>.
12  */
13 
18 #include "global.h"
19 
20 #include <string.h>
21 
22 #include "ob_methods.h"
23 #include "ob_types.h"
24 #include "sounds.h"
25 #include "sproto.h"
26 
28 
34 }
35 
49  object *player;
50  char c;
51 
52  if (!op->above || !EXIT_PATH(op))
53  return METHOD_OK;
54 
55  /* This isn't all that great - means that the player_mover
56  * needs to be on top.
57  */
58  if (op->above->type == PLAYER) {
59  if (events_execute_object_event(op, EVENT_TRIGGER, op->above, NULL, NULL, SCRIPT_FIX_NOTHING) != 0)
60  return METHOD_OK;
61  player = op->above;
62  FOR_INV_PREPARE(op, walk)
65 
67  esrv_send_inventory(op->above, op->above);
68  esrv_update_item(UPD_FACE, op->above, op->above);
69 
70  /* update players death & WoR home-position */
71  sscanf(EXIT_PATH(op), "%c", &c);
72  if (c == '/') {
74  sizeof(player->contr->savebed_map));
75  player->contr->bed_x = EXIT_X(op);
76  player->contr->bed_y = EXIT_Y(op);
77  } else
78  LOG(llevDebug, "WARNING: destination '%s' in player_changer must be an absolute path!\n", EXIT_PATH(op));
79 
80  enter_exit(op->above, op);
81  save_player(player, 1);
82  }
83 
84  return METHOD_OK;
85 }
apply_changes_to_player
void apply_changes_to_player(object *pl, object *change, int limit_stats)
Definition: apply.cpp:1672
player::bed_y
int16_t bed_y
Definition: player.h:111
PLAYER
@ PLAYER
Definition: object.h:112
global.h
UPD_FACE
#define UPD_FACE
Definition: newclient.h:306
safe_strncpy
#define safe_strncpy
Definition: compat.h:27
LOG
void LOG(LogLevel logLevel, const char *format,...)
Definition: logger.cpp:51
player
Definition: player.h:105
esrv_send_inventory
void esrv_send_inventory(object *pl, object *op)
Definition: item.cpp:316
c
static event_registration c
Definition: citylife.cpp:425
player::bed_x
int16_t bed_x
Definition: player.h:111
METHOD_OK
#define METHOD_OK
Definition: ob_methods.h:15
EXIT_PATH
#define EXIT_PATH(xyz)
Definition: define.h:439
player::savebed_map
char savebed_map[MAX_BUF]
Definition: player.h:110
fix_object
void fix_object(object *op)
Definition: living.cpp:1125
register_process
void register_process(int ob_type, process_func method)
Definition: ob_types.cpp:71
events_execute_object_event
int events_execute_object_event(object *op, int eventcode, object *activator, object *third, const char *message, int fix)
Definition: events.cpp:292
EVENT_TRIGGER
#define EVENT_TRIGGER
Definition: events.h:34
FOR_INV_FINISH
#define FOR_INV_FINISH()
Definition: define.h:677
sproto.h
EXIT_X
#define EXIT_X(xyz)
Definition: define.h:441
method_ret
char method_ret
Definition: ob_methods.h:14
ob_types.h
sounds.h
SCRIPT_FIX_NOTHING
#define SCRIPT_FIX_NOTHING
Definition: global.h:389
PLAYER_CHANGER
@ PLAYER_CHANGER
Definition: object.h:167
enter_exit
void enter_exit(object *op, object *exit_ob)
Definition: server.cpp:734
AC_PLAYER_STAT_LIMIT
#define AC_PLAYER_STAT_LIMIT
Definition: define.h:596
give.op
op
Definition: give.py:33
player_changer_type_process
static method_ret player_changer_type_process(object *op)
Definition: player_changer.cpp:48
esrv_update_item
void esrv_update_item(int flags, object *pl, object *op)
Definition: main.cpp:359
EXIT_Y
#define EXIT_Y(xyz)
Definition: define.h:442
player
the faster the spell may be cast there are several other common only the caster may be affected by the spell The most common spell range is that of touch This denotes that the caster much touch the recipient of the spell in order to release the spell or wall For cone it usually denotes that the range depends on some such as the caster s Wisdom level If this is the it will be stated in the long spell description or the standard duration for the spell expires Only one protection or change player attribute spell may be in effect on a player at any one time If another such spell is cast upon a player
Definition: spell-info.txt:68
save_player
int save_player(object *op, int flag)
Definition: login.cpp:230
init_type_player_changer
void init_type_player_changer(void)
Definition: player_changer.cpp:32
ob_methods.h
FOR_INV_PREPARE
#define FOR_INV_PREPARE(op_, it_)
Definition: define.h:670
llevDebug
@ llevDebug
Definition: logger.h:13