Atrinik Server  4.0
key.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 <object_methods.h>
34 #include <object.h>
35 #include <key.h>
36 
47 object *
48 key_match (object *op, const object *locked)
49 {
50  HARD_ASSERT(op != NULL);
51  HARD_ASSERT(locked != NULL);
52 
53  FOR_INV_PREPARE(op, tmp) {
54  if ((tmp->type == KEY || tmp->type == FORCE) &&
55  tmp->slaying == locked->slaying) {
56  return tmp;
57  }
58 
59  if (tmp->type == CONTAINER && tmp->inv != NULL) {
60  object *key = key_match(tmp, locked);
61  if (key != NULL) {
62  return key;
63  }
64  }
65  } FOR_INV_FINISH();
66 
67  return NULL;
68 }
69 
74 {
75 }
object * key_match(object *op, const object *locked)
Definition: key.c:48
#define FOR_INV_PREPARE(op_, it_)
Definition: define.h:1691
#define FOR_INV_FINISH()
Definition: define.h:1698
const char * slaying
Definition: object.h:180
#define CONTAINER
Definition: define.h:493
OBJECT_TYPE_INIT_DEFINE(key)
Definition: key.c:73
#define KEY
Definition: define.h:198
#define FORCE
Definition: define.h:465