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

Comparing deliantra/server/common/loader.C (file contents):
Revision 1.19 by root, Thu Sep 21 00:05:24 2006 UTC vs.
Revision 1.25 by root, Mon Dec 18 03:00:02 2006 UTC

26 variable. */ 26 variable. */
27 27
28 28
29#include <global.h> 29#include <global.h>
30#include <loader.h> 30#include <loader.h>
31#include <newserver.h>
32#include <sproto.h> 31#include <sproto.h>
33 32
34/* Maps the MOVE_* values to names */ 33/* Maps the MOVE_* values to names */
35static const char *const move_name[] = { "walk", "fly_low", "fly_high", "swim", "boat", NULL }; 34static const char *const move_name[] = { "walk", "fly_low", "fly_high", "swim", "boat", NULL };
36 35
280 279
281 if (!op->name_pl) 280 if (!op->name_pl)
282 op->name_pl = op->name; 281 op->name_pl = op->name;
283 282
284 /* objects now have a materialname. try to patch it in */ 283 /* objects now have a materialname. try to patch it in */
285 if (!(IS_WEAPON (op) && op->level > 0)) 284 if (!(op->is_weapon () && op->level > 0))
286 { 285 {
287 if (op->map != NULL) 286 if (op->map != NULL)
288 set_materialname (op, op->map->difficulty, NULL); 287 set_materialname (op, op->map->difficulty, NULL);
289 else 288 else
290 set_materialname (op, 5, NULL); 289 set_materialname (op, 5, NULL);
556 555
557 if (arch != NULL) 556 if (arch != NULL)
558 tmp = arch_to_object (arch); 557 tmp = arch_to_object (arch);
559 else 558 else
560 { 559 {
561 tmp = get_object (); 560 tmp = object::create ();
562 /* record the name of the broken object */ 561 /* record the name of the broken object */
563 tmp->name = str; 562 tmp->name = str;
564 } 563 }
565 564
566 parse_object (tmp, thawer, map_flags); 565 parse_object (tmp, thawer, map_flags);
593 op_inv = tmp; 592 op_inv = tmp;
594 } 593 }
595 else 594 else
596 { 595 {
597 LOG (llevDebug, "Discarding object without arch: %s\n", tmp->name ? (const char *) tmp->name : "(null)"); 596 LOG (llevDebug, "Discarding object without arch: %s\n", tmp->name ? (const char *) tmp->name : "(null)");
598 free_object (tmp); 597 tmp->destroy ();
599 } 598 }
600 } 599 }
601 else 600 else
602 { 601 {
603 /* This is the actual archetype definition then */ 602 /* This is the actual archetype definition then */
604 op->arch = archetype::find (str); 603 op->arch = archetype::find (str);
605 604
606 if (op->arch != NULL) 605 if (op->arch)
607 copy_object (&op->arch->clone, op); 606 op->arch->clone.copy_to (op);
608 else if (!arch_init) 607 else if (!arch_init)
609 /* record the name of the broken object */ 608 /* record the name of the broken object */
610 op->name = str; 609 op->name = str;
611 } 610 }
612 } 611 }
1081 * override values and in c_wiz to mutate values. 1080 * override values and in c_wiz to mutate values.
1082 */ 1081 */
1083int 1082int
1084set_variable (object *op, char *buf) 1083set_variable (object *op, char *buf)
1085{ 1084{
1086 return 0;
1087#if 0
1088 int retval;
1089 object_thawer thawer (0); 1085 object_thawer thawer (buf, (AV *)0);
1090 1086
1091 strcpy (msgbuf, "");
1092 strcpy (lorebuf, "");
1093 retval = parse_object (op, thawer, 0); 1087 return parse_object (op, thawer, 0);
1094 yy_switch_to_buffer (yycurbuf);
1095 yy_delete_buffer (yybufstate);
1096 yy_pop_state ();
1097 return retval;
1098#endif
1099} 1088}
1100 1089
1101/* 1090/*
1102 * Initialises the array of variable-names. Needed before any 1091 * Initialises the array of variable-names. Needed before any
1103 * objects can be loaded. Called by init_library(). 1092 * objects can be loaded. Called by init_library().
1313 if (!arch_field || my_field->value != arch_field->value) 1302 if (!arch_field || my_field->value != arch_field->value)
1314 f.put (my_field->key, my_field->value); 1303 f.put (my_field->key, my_field->value);
1315 } 1304 }
1316 1305
1317 /* We don't need to worry about the arch's extra fields - they 1306 /* We don't need to worry about the arch's extra fields - they
1318 * will get taken care of the copy_object function. 1307 * will get taken care of the copy_to method.
1319 */ 1308 */
1320 1309
1321 { 1310 {
1322 char uids[64]; 1311 char uids[64];
1323 snprintf (uids, sizeof (uids), "<1.%llx>", (unsigned long long)op->uuid.seq); 1312 snprintf (uids, sizeof (uids), "<1.%llx>", (unsigned long long)op->uuid.seq);
1440 CMP_OUT (move_on); 1429 CMP_OUT (move_on);
1441 CMP_OUT (move_off); 1430 CMP_OUT (move_off);
1442 CMP_OUT (move_slow); 1431 CMP_OUT (move_slow);
1443 CMP_OUT (move_slow_penalty); 1432 CMP_OUT (move_slow_penalty);
1444 1433
1445 if (!COMPARE_FLAGS (op, tmp)) 1434 if (op->flags != tmp->flags)
1446 for (i = 0; i <= NUM_FLAGS; i++) 1435 for (i = 0; i <= NUM_FLAGS; i++)
1447 if (flag_names[i] && (QUERY_FLAG (op, i) != QUERY_FLAG (tmp, i))) 1436 if (flag_names[i] && (QUERY_FLAG (op, i) != QUERY_FLAG (tmp, i)))
1448 f.put (flag_names[i], QUERY_FLAG (op, i) ? "1" : "0"); 1437 f.put (flag_names[i], QUERY_FLAG (op, i) ? "1" : "0");
1449 1438
1450 /* Save body locations */ 1439 /* Save body locations */
1508 save_object (fp, tmp, flag); 1497 save_object (fp, tmp, flag);
1509 old = tmp; 1498 old = tmp;
1510 } 1499 }
1511 1500
1512 if (!(flag & 2)) 1501 if (!(flag & 2))
1513 { 1502 op->destroy ();
1514 remove_ob (op);
1515 free_object (op);
1516 }
1517 1503
1518 fp.put (op); 1504 fp.put (op);
1519 fprintf (fp, "end\n"); 1505 fprintf (fp, "end\n");
1520} 1506}
1521 1507

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines