ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/server/time.C
(Generate patch)

Comparing deliantra/server/server/time.C (file contents):
Revision 1.52 by root, Tue May 22 10:50:01 2007 UTC vs.
Revision 1.57 by root, Thu Jun 28 05:50:31 2007 UTC

1/* 1/*
2 * CrossFire, A Multiplayer game 2 * This file is part of Crossfire TRT, the Roguelike Realtime MORPG.
3 * 3 *
4 * Copyright (C) 2005, 2006, 2007 Marc Lehmann & Crossfire+ Development Team 4 * Copyright (©) 2005,2006,2007 Marc Alexander Lehmann / Robin Redeker / the Crossfire TRT team
5 * Copyright (C) 2002 Mark Wedel & Crossfire Development Team 5 * Copyright (©) 2002,2007 Mark Wedel & Crossfire Development Team
6 * Copyright (C) 1992 Frank Tore Johansen 6 * Copyright (©) 1992,2007 Frank Tore Johansen
7 * 7 *
8 * This program is free software; you can redistribute it and/or modify 8 * Crossfire TRT is free software; you can redistribute it and/or modify it
9 * it under the terms of the GNU General Public License as published by 9 * under the terms of the GNU General Public License as published by the Free
10 * the Free Software Foundation; either version 2 of the License, or 10 * Software Foundation; either version 2 of the License, or (at your option)
11 * (at your option) any later version. 11 * any later version.
12 * 12 *
13 * This program is distributed in the hope that it will be useful, 13 * This program is distributed in the hope that it will be useful, but
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16 * GNU General Public License for more details. 16 * for more details.
17 * 17 *
18 * You should have received a copy of the GNU General Public License 18 * You should have received a copy of the GNU General Public License along
19 * along with this program; if not, write to the Free Software 19 * with Crossfire TRT; if not, write to the Free Software Foundation, Inc. 51
20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 20 * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 * 21 *
22 * The authors can be reached via e-mail at <crossfire@schmorp.de> 22 * The authors can be reached via e-mail to <crossfire@schmorp.de>
23 */ 23 */
24 24
25/* 25/*
26 * Routines that is executed from objects based on their speed have been 26 * Routines that is executed from objects based on their speed have been
27 * collected in this file. 27 * collected in this file.
235 if (op->value) 235 if (op->value)
236 { 236 {
237 if (--op->stats.wc <= 0) 237 if (--op->stats.wc <= 0)
238 { /* Reached bottom, let's stop */ 238 { /* Reached bottom, let's stop */
239 op->stats.wc = 0; 239 op->stats.wc = 0;
240 if (op->arch->clone.speed) 240 if (op->arch->speed)
241 op->value = 0; 241 op->value = 0;
242 else 242 else
243 op->set_speed (0); 243 op->set_speed (0);
244 } 244 }
245 245
271 if (!QUERY_FLAG (tmp, FLAG_NO_PICK) || QUERY_FLAG (tmp, FLAG_CAN_ROLL) || QUERY_FLAG (tmp, FLAG_ALIVE)) 271 if (!QUERY_FLAG (tmp, FLAG_NO_PICK) || QUERY_FLAG (tmp, FLAG_CAN_ROLL) || QUERY_FLAG (tmp, FLAG_ALIVE))
272 break; 272 break;
273 273
274 if (tmp == NULL) 274 if (tmp == NULL)
275 { 275 {
276 if (op->arch->clone.speed) 276 if (op->arch->speed)
277 op->value = 1; 277 op->value = 1;
278 else 278 else
279 op->set_speed (0); 279 op->set_speed (0);
280 280
281 return; 281 return;
347 op->stats.food = 1; 347 op->stats.food = 1;
348 } 348 }
349 else 349 else
350 { 350 {
351 op->move_block = MOVE_ALL; 351 op->move_block = MOVE_ALL;
352 if (!op->arch->clone.stats.ac) 352 if (!op->arch->stats.ac)
353 SET_FLAG (op, FLAG_BLOCKSVIEW); 353 SET_FLAG (op, FLAG_BLOCKSVIEW);
354 update_all_los (op->map, op->x, op->y); 354 update_all_los (op->map, op->x, op->y);
355 } 355 }
356 } /* gate is halfway up */ 356 } /* gate is halfway up */
357 357
598 op->spellarg = NULL; 598 op->spellarg = NULL;
599 op->stats.sp = 0; 599 op->stats.sp = 0;
600 op->stats.hp = 0; 600 op->stats.hp = 0;
601 op->stats.grace = 0; 601 op->stats.grace = 0;
602 op->level = 0; 602 op->level = 0;
603 op->face = op->arch->clone.face; 603 op->face = op->arch->face;
604 op->owner = NULL; /* So that stopped arrows will be saved */ 604 op->owner = NULL; /* So that stopped arrows will be saved */
605 update_object (op, UP_OBJ_CHANGE); 605 update_object (op, UP_OBJ_CHANGE);
606 return op; 606 return op;
607} 607}
608 608
910 move_teleporter (op->more); 910 move_teleporter (op->more);
911 911
912 if (op->head) 912 if (op->head)
913 head = op->head; 913 head = op->head;
914 914
915 for (tmp = op->above; tmp != NULL; tmp = tmp->above) 915 for (tmp = op->above; tmp; tmp = tmp->above)
916 if (!QUERY_FLAG (tmp, FLAG_IS_FLOOR)) 916 if (!QUERY_FLAG (tmp, FLAG_IS_FLOOR))
917 break; 917 break;
918 918
919 /* If nothing above us to move, nothing to do */ 919 /* If nothing above us to move, nothing to do */
920 if (!tmp || QUERY_FLAG (tmp, FLAG_WIZPASS)) 920 if (!tmp || QUERY_FLAG (tmp, FLAG_WIZPASS))
1015 return; /* dm has created a firewall in his inventory */ 1015 return; /* dm has created a firewall in his inventory */
1016 1016
1017 spell = op->inv; 1017 spell = op->inv;
1018 1018
1019 if (!spell || spell->type != SPELL) 1019 if (!spell || spell->type != SPELL)
1020 spell = &op->other_arch->clone; 1020 spell = op->other_arch;
1021 1021
1022 if (!spell) 1022 if (!spell)
1023 { 1023 {
1024 LOG (llevError, "move_firewall: no spell specified (%s, %s, %d, %d)\n", &op->name, &op->map->name, op->x, op->y); 1024 LOG (llevError, "move_firewall: no spell specified (%s, %s, %d, %d)\n", &op->name, &op->map->name, op->x, op->y);
1025 return; 1025 return;
1136 if (op->above == NULL) 1136 if (op->above == NULL)
1137 return; 1137 return;
1138 1138
1139 for (tmp = op->above; tmp; tmp = tmp->above) 1139 for (tmp = op->above; tmp; tmp = tmp->above)
1140 { 1140 {
1141 if (op->other_arch->name == tmp->arch->name) 1141 if (op->other_arch->archname == tmp->arch->archname)
1142 { 1142 {
1143 if (op->level <= 0) 1143 if (op->level <= 0)
1144 tmp->destroy (); 1144 tmp->destroy ();
1145 else 1145 else
1146 { 1146 {
1299} 1299}
1300 1300
1301void 1301void
1302process_object (object *op) 1302process_object (object *op)
1303{ 1303{
1304 if (QUERY_FLAG (op, FLAG_IS_A_TEMPLATE)) 1304 if (expect_false (QUERY_FLAG (op, FLAG_IS_A_TEMPLATE)))
1305 return; 1305 return;
1306 1306
1307 if (INVOKE_OBJECT (TICK, op)) 1307 if (expect_false (INVOKE_OBJECT (TICK, op)))
1308 return; 1308 return;
1309 1309
1310 if (QUERY_FLAG (op, FLAG_MONSTER)) 1310 if (QUERY_FLAG (op, FLAG_MONSTER))
1311 if (move_monster (op) || QUERY_FLAG (op, FLAG_FREED)) 1311 if (move_monster (op) || QUERY_FLAG (op, FLAG_FREED))
1312 return; 1312 return;
1317 1317
1318 if (QUERY_FLAG (op, FLAG_SEE_ANYWHERE)) 1318 if (QUERY_FLAG (op, FLAG_SEE_ANYWHERE))
1319 make_sure_seen (op); 1319 make_sure_seen (op);
1320 } 1320 }
1321 1321
1322 if (expect_false (
1322 if (op->flag [FLAG_GENERATOR] 1323 op->flag [FLAG_GENERATOR]
1323 || op->flag [FLAG_CHANGING] 1324 || op->flag [FLAG_CHANGING]
1324 || op->flag [FLAG_IS_USED_UP]) 1325 || op->flag [FLAG_IS_USED_UP]
1326 ))
1325 { 1327 {
1326 if (QUERY_FLAG (op, FLAG_CHANGING) && !op->state) 1328 if (QUERY_FLAG (op, FLAG_CHANGING) && !op->state)
1327 { 1329 {
1328 change_object (op); 1330 change_object (op);
1329 return; 1331 return;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines