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

Comparing deliantra/server/server/init.C (file contents):
Revision 1.73 by root, Wed Nov 4 00:08:44 2009 UTC vs.
Revision 1.74 by root, Fri Nov 6 12:27:06 2009 UTC

413 printf (" -m9 Dumps out more alchemy information (formula checking).\n"); 413 printf (" -m9 Dumps out more alchemy information (formula checking).\n");
414 printf (" -mt <name> Dumps out list of treasures for a monster.\n"); 414 printf (" -mt <name> Dumps out list of treasures for a monster.\n");
415 exit (0); 415 exit (0);
416} 416}
417 417
418void
419init_beforeplay (void)
420{
421 init_artifacts (); /* If not called before, reads all artifacts from file */
422 init_races (); /* overwrite race designations using entries in lib/races file */
423 init_gods (); /* init linked list of gods from archs */
424 init_readable (); /* inits useful arrays for readable texts */
425 init_formulae (); /* If not called before, reads formulae from file */
426}
427
428/* Signal handlers: */ 418/* Signal handlers: */
429 419
430static void 420static void
431rec_sigabrt (int i) 421rec_sigabrt (int i)
432{ 422{
499 489
500 sa.sa_flags |= SA_ONSTACK; 490 sa.sa_flags |= SA_ONSTACK;
501 sa.sa_handler = rec_sigsegv; sigaction (SIGSEGV, &sa, 0); 491 sa.sa_handler = rec_sigsegv; sigaction (SIGSEGV, &sa, 0);
502} 492}
503 493
494static racelink *
495get_racelist ()
496{
497 racelink *list = new racelink;
498
499 list->name = 0;
500 list->nrof = 0;
501 list->next = 0;
502 list->member = get_objectlink ();
503
504 return list;
505}
506
507 racelink *
508find_racelink (const char *name)
509{
510 if (name)
511 for (racelink *link = first_race; link; link = link->next)
512 if (!link->name || !strcmp (name, link->name))
513 return link;
514
515 return 0;
516}
517
518static void
519add_to_racelist (const char *race_name, object *op)
520{
521 racelink *race;
522
523 if (!op || !race_name)
524 return;
525
526 race = find_racelink (race_name);
527
528 if (!race)
529 { /* add in a new race list */
530 race = get_racelist ();
531 race->next = first_race;
532 first_race = race;
533 race->name = race_name;
534 }
535
536 if (race->member->ob)
537 {
538 objectlink *tmp = get_objectlink ();
539
540 tmp->next = race->member;
541 race->member = tmp;
542 }
543
544 race->nrof++;
545 race->member->ob = op;
546}
547
504/* init_races() - reads the races file in the lib/ directory, then 548/* init_races() - reads the races file in the lib/ directory, then
505 * overwrites old 'race' entries. This routine allow us to quickly 549 * overwrites old 'race' entries. This routine allow us to quickly
506 * re-configure the 'alignment' of monsters, objects. Useful for 550 * re-configure the 'alignment' of monsters, objects. Useful for
507 * putting together lists of creatures, etc that belong to gods. 551 * putting together lists of creatures, etc that belong to gods.
508 */ 552 */
509void 553static void
510init_races (void) 554init_races (void)
511{ 555{
512 FILE *file; 556 FILE *file;
513 char race[MAX_BUF], fname[MAX_BUF], buf[MAX_BUF], *cp, variable[MAX_BUF]; 557 char race[MAX_BUF], fname[MAX_BUF], buf[MAX_BUF], *cp, variable[MAX_BUF];
514 archetype *mon = NULL; 558 archetype *mon = NULL;
589 633
590 fclose (file); 634 fclose (file);
591 LOG (llevDebug, "done.\n"); 635 LOG (llevDebug, "done.\n");
592} 636}
593 637
594void 638static void
595dump_races (void) 639dump_races (void)
596{ 640{
597 racelink *list; 641 racelink *list;
598 objectlink *tmp; 642 objectlink *tmp;
599 643
606 650
607 fprintf (stderr, "\n"); 651 fprintf (stderr, "\n");
608} 652}
609 653
610void 654void
611add_to_racelist (const char *race_name, object *op) 655init_beforeplay (void)
612{ 656{
613 racelink *race; 657 init_artifacts (); /* If not called before, reads all artifacts from file */
614 658 init_races (); /* overwrite race designations using entries in lib/races file */
615 if (!op || !race_name) 659 init_gods (); /* init linked list of gods from archs */
616 return; 660 init_readable (); /* inits useful arrays for readable texts */
617 661 init_formulae (); /* If not called before, reads formulae from file */
618 race = find_racelink (race_name);
619
620 if (!race)
621 { /* add in a new race list */
622 race = get_racelist ();
623 race->next = first_race;
624 first_race = race;
625 race->name = race_name;
626 }
627
628 if (race->member->ob)
629 {
630 objectlink *tmp = get_objectlink ();
631
632 tmp->next = race->member;
633 race->member = tmp;
634 }
635
636 race->nrof++;
637 race->member->ob = op;
638} 662}
639 663
640racelink *
641get_racelist ()
642{
643 racelink *list = new racelink;
644
645 list->name = 0;
646 list->nrof = 0;
647 list->next = 0;
648 list->member = get_objectlink ();
649
650 return list;
651}
652
653racelink *
654find_racelink (const char *name)
655{
656 if (name)
657 for (racelink *link = first_race; link; link = link->next)
658 if (!link->name || !strcmp (name, link->name))
659 return link;
660
661 return 0;
662}

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines