1 | /* |
1 | /* |
2 | * This file is part of Crossfire TRT, the Multiplayer Online Role Playing Game. |
2 | * This file is part of Crossfire TRT, the Roguelike Realtime MORPG. |
3 | * |
3 | * |
4 | * Copyright (©) 2005,2006,2007 Marc Alexander Lehmann / Robin Redeker / the Crossfire TRT team |
4 | * Copyright (©) 2005,2006,2007 Marc Alexander Lehmann / Robin Redeker / the Crossfire TRT team |
5 | * Copyright (©) 2002,2007 Mark Wedel & Crossfire Development Team |
5 | * Copyright (©) 2002,2007 Mark Wedel & Crossfire Development Team |
6 | * Copyright (©) 1992,2007 Frank Tore Johansen |
6 | * Copyright (©) 1992,2007 Frank Tore Johansen |
7 | * |
7 | * |
8 | * Crossfire TRT is free software; you can redistribute it and/or modify it |
8 | * Crossfire TRT is free software: you can redistribute it and/or modify |
9 | * under the terms of the GNU General Public License as published by the Free |
9 | * it under the terms of the GNU General Public License as published by |
10 | * Software Foundation; either version 2 of the License, or (at your option) |
10 | * the Free Software Foundation, either version 3 of the License, or |
11 | * any later version. |
11 | * (at your option) any later version. |
12 | * |
12 | * |
13 | * This program is distributed in the hope that it will be useful, but |
13 | * This program is distributed in the hope that it will be useful, |
14 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY |
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16 | * for more details. |
16 | * GNU General Public License for more details. |
17 | * |
17 | * |
18 | * You should have received a copy of the GNU General Public License along |
18 | * You should have received a copy of the GNU General Public License |
19 | * with Crossfire TRT; if not, write to the Free Software Foundation, Inc. 51 |
19 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
20 | * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
|
|
21 | * |
20 | * |
22 | * The authors can be reached via e-mail to <crossfire@schmorp.de> |
21 | * The authors can be reached via e-mail to <crossfire@schmorp.de> |
23 | */ |
22 | */ |
24 | |
23 | |
25 | #include <global.h> |
24 | #include <global.h> |
… | |
… | |
103 | case MOOD_FLOOR: |
102 | case MOOD_FLOOR: |
104 | do_mood_floor (tmp, source); |
103 | do_mood_floor (tmp, source); |
105 | break; |
104 | break; |
106 | |
105 | |
107 | case TIMED_GATE: |
106 | case TIMED_GATE: |
108 | tmp->set_speed (tmp->arch->clone.speed); |
107 | tmp->set_speed (tmp->arch->speed); |
109 | tmp->value = tmp->arch->clone.value; |
108 | tmp->value = tmp->arch->value; |
110 | tmp->stats.sp = 1; |
109 | tmp->stats.sp = 1; |
111 | tmp->stats.hp = tmp->stats.maxhp; |
110 | tmp->stats.hp = tmp->stats.maxhp; |
112 | /* Handle multipart gates. We copy the value for the other parts |
111 | /* Handle multipart gates. We copy the value for the other parts |
113 | * from the head - this ensures that the data will consistent |
112 | * from the head - this ensures that the data will consistent |
114 | */ |
113 | */ |
… | |
… | |
316 | int |
315 | int |
317 | check_altar_sacrifice (const object *altar, const object *sacrifice) |
316 | check_altar_sacrifice (const object *altar, const object *sacrifice) |
318 | { |
317 | { |
319 | if (!QUERY_FLAG (sacrifice, FLAG_ALIVE) && !QUERY_FLAG (sacrifice, FLAG_IS_LINKED) && sacrifice->type != PLAYER) |
318 | if (!QUERY_FLAG (sacrifice, FLAG_ALIVE) && !QUERY_FLAG (sacrifice, FLAG_IS_LINKED) && sacrifice->type != PLAYER) |
320 | { |
319 | { |
321 | if ((ARCH_SACRIFICE (altar) == sacrifice->arch->name || |
320 | if ((ARCH_SACRIFICE (altar) == sacrifice->arch->archname |
322 | ARCH_SACRIFICE (altar) == sacrifice->name || |
321 | || ARCH_SACRIFICE (altar) == sacrifice->name |
323 | ARCH_SACRIFICE (altar) == sacrifice->slaying || |
322 | || ARCH_SACRIFICE (altar) == sacrifice->slaying |
324 | (!strcmp (ARCH_SACRIFICE (altar), query_base_name (sacrifice, 0)))) |
323 | || (!strcmp (ARCH_SACRIFICE (altar), query_base_name (sacrifice, 0)))) |
325 | && NROF_SACRIFICE (altar) <= (sacrifice->nrof ? sacrifice->nrof : 1)) |
324 | && NROF_SACRIFICE (altar) <= (sacrifice->nrof ? sacrifice->nrof : 1)) |
326 | return 1; |
325 | return 1; |
327 | |
326 | |
328 | if (strcmp (ARCH_SACRIFICE (altar), "money") == 0 |
327 | if (strcmp (ARCH_SACRIFICE (altar), "money") == 0 |
329 | && sacrifice->type == MONEY && sacrifice->nrof * sacrifice->value >= NROF_SACRIFICE (altar)) |
328 | && sacrifice->type == MONEY && sacrifice->nrof * sacrifice->value >= NROF_SACRIFICE (altar)) |
… | |
… | |
820 | object *tmp, *ret = NULL; |
819 | object *tmp, *ret = NULL; |
821 | |
820 | |
822 | /* First check the object itself. */ |
821 | /* First check the object itself. */ |
823 | if ((trig->stats.hp && (op->type == trig->stats.hp)) |
822 | if ((trig->stats.hp && (op->type == trig->stats.hp)) |
824 | || (trig->slaying && (op->slaying == trig->slaying)) |
823 | || (trig->slaying && (op->slaying == trig->slaying)) |
825 | || (trig->race && (op->arch->name == trig->race))) |
824 | || (trig->race && (op->arch->archname == trig->race))) |
826 | return op; |
825 | return op; |
827 | |
826 | |
828 | for (tmp = op->inv; tmp; tmp = tmp->below) |
827 | for (tmp = op->inv; tmp; tmp = tmp->below) |
829 | { |
828 | { |
830 | if (tmp->inv) |
829 | if (tmp->inv) |
… | |
… | |
833 | if (ret) |
832 | if (ret) |
834 | return ret; |
833 | return ret; |
835 | } |
834 | } |
836 | else if ((trig->stats.hp && (tmp->type == trig->stats.hp)) |
835 | else if ((trig->stats.hp && (tmp->type == trig->stats.hp)) |
837 | || (trig->slaying && (tmp->slaying == trig->slaying)) |
836 | || (trig->slaying && (tmp->slaying == trig->slaying)) |
838 | || (trig->race && (tmp->arch->name == trig->race))) |
837 | || (trig->race && (tmp->arch->archname == trig->race))) |
839 | return tmp; |
838 | return tmp; |
840 | } |
839 | } |
841 | return NULL; |
840 | return NULL; |
842 | } |
841 | } |
843 | |
842 | |