Atrinik Server  4.0
weapon.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 
37 
39 static int
41  object **ret,
42  int difficulty,
43  treasure_affinity_t *affinity,
44  int flags)
45 {
46  HARD_ASSERT(op != NULL);
47  HARD_ASSERT(difficulty > 0);
48 
49  /* Avoid processing if the item is not special. */
50  if (!process_treasure_is_special(op)) {
52  }
53 
54  /* Only handle adding a slaying race for weapons of assassination or
55  * slaying. */
56  if (op->slaying != shstr_cons.none) {
58  }
59 
60  ob_race *race = race_get_random();
61  if (race != NULL) {
62  FREE_AND_COPY_HASH(op->slaying, race->name);
63  }
64 
65  return OBJECT_METHOD_OK;
66 }
67 
72 {
74  OBJECT_METHODS(WEAPON)->process_treasure_func = process_treasure_func;
75 }
OBJECT_TYPE_INIT_DEFINE(weapon)
Definition: weapon.c:71
#define FREE_AND_COPY_HASH(_sv_, _nv_)
Definition: global.h:100
static int process_treasure_func(object *op, object **ret, int difficulty, treasure_affinity_t *affinity, int flags)
Definition: weapon.c:40
const char * slaying
Definition: object.h:180
#define OBJECT_METHOD_UNHANDLED
shstr * name
Definition: race.h:40
Definition: race.h:36
bool process_treasure_is_special(object *op)
int object_apply_item(object *op, object *applier, int aflags)
Definition: apply.c:110
shstr_constants shstr_cons
Definition: init.c:58
#define WEAPON
Definition: define.h:178
#define OBJECT_METHODS(type)
ob_race * race_get_random(void)
Definition: race.c:175
#define OBJECT_METHOD_OK