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

Comparing deliantra/server/common/map.C (file contents):
Revision 1.191 by root, Sun Apr 18 05:57:03 2010 UTC vs.
Revision 1.198 by root, Thu Apr 29 12:24:04 2010 UTC

77 /* Make sure the coordinates are valid - they should be, as caller should 77 /* Make sure the coordinates are valid - they should be, as caller should
78 * have already checked this. 78 * have already checked this.
79 */ 79 */
80 if (OUT_OF_REAL_MAP (m, sx, sy)) 80 if (OUT_OF_REAL_MAP (m, sx, sy))
81 { 81 {
82 LOG (llevError, "blocked_link: Passed map, x, y coordinates outside of map\n"); 82 LOG (llevError | logBacktrace, "blocked_link: Passed map, x, y coordinates outside of map\n");
83 return 1; 83 return 1;
84 } 84 }
85 85
86 mapspace &ms = m->at (sx, sy); 86 mapspace &ms = m->at (sx, sy);
87 87
90 90
91 /* If space is currently not blocked by anything, no need to 91 /* If space is currently not blocked by anything, no need to
92 * go further. Not true for players - all sorts of special 92 * go further. Not true for players - all sorts of special
93 * things we need to do for players. 93 * things we need to do for players.
94 */ 94 */
95 if (ob->type != PLAYER && !(mflags & P_IS_ALIVE) && (blocked == 0)) 95 if (ob->type != PLAYER && !(mflags & P_IS_ALIVE) && blocked == 0)
96 return 0; 96 return 0;
97 97
98 /* if there isn't anything alive on this space, and this space isn't 98 /* if there isn't anything alive on this space, and this space isn't
99 * otherwise blocked, we can return now. Only if there is a living 99 * otherwise blocked, we can return now. Only if there is a living
100 * creature do we need to investigate if it is part of this creature 100 * creature do we need to investigate if it is part of this creature
559 * the map (or something equivilent) into output_string. */ 559 * the map (or something equivilent) into output_string. */
560static const char * 560static const char *
561print_shop_string (maptile *m) 561print_shop_string (maptile *m)
562{ 562{
563 static dynbuf_text buf; buf.clear (); 563 static dynbuf_text buf; buf.clear ();
564 bool first = true;
564 565
565 for (int i = 0; i < m->shopitems[0].index; i++) 566 for (int i = 0; i < m->shopitems[0].index; i++)
566 { 567 {
568 if (!first)
569 buf << ';';
570
571 first = false;
572
567 if (m->shopitems[i].typenum) 573 if (m->shopitems[i].typenum)
568 { 574 {
569 if (m->shopitems[i].strength) 575 if (m->shopitems[i].strength)
570 buf.printf ("%s:%d;", m->shopitems[i].name, m->shopitems[i].strength); 576 buf.printf ("%s:%d", m->shopitems[i].name, m->shopitems[i].strength);
571 else 577 else
572 buf.printf ("%s;", m->shopitems[i].name); 578 buf.printf ("%s", m->shopitems[i].name);
573 } 579 }
574 else 580 else
575 { 581 {
576 if (m->shopitems[i].strength) 582 if (m->shopitems[i].strength)
577 buf.printf ("*:%d;", m->shopitems[i].strength); 583 buf.printf ("*:%d", m->shopitems[i].strength);
578 else 584 else
579 buf.printf ("*"); 585 buf.printf ("*");
580 } 586 }
581 } 587 }
582 588
638 case KW_per_player: thawer.get (per_player); break; 644 case KW_per_player: thawer.get (per_player); break;
639 case KW_per_party: thawer.get (per_party); break; 645 case KW_per_party: thawer.get (per_party); break;
640 case KW_no_reset: thawer.get (no_reset); break; 646 case KW_no_reset: thawer.get (no_reset); break;
641 case KW_no_drop: thawer.get (no_drop); break; 647 case KW_no_drop: thawer.get (no_drop); break;
642 648
643 case KW_region: default_region = region::find (thawer.get_str ()); break; 649 case KW_region: thawer.get (default_region); break;
644 case KW_shopitems: shopitems = parse_shop_string (thawer.get_str ()); break; 650 case KW_shopitems: shopitems = parse_shop_string (thawer.get_str ()); break;
645 651
646 // old names new names 652 // old names new names
647 case KW_hp: case KW_enter_x: thawer.get (enter_x); break; 653 case KW_hp: case KW_enter_x: thawer.get (enter_x); break;
648 case KW_sp: case KW_enter_y: thawer.get (enter_y); break; 654 case KW_sp: case KW_enter_y: thawer.get (enter_y); break;
1471 retval->distance_x += op1->x - best->x; 1477 retval->distance_x += op1->x - best->x;
1472 retval->distance_y += op1->y - best->y; 1478 retval->distance_y += op1->y - best->y;
1473 } 1479 }
1474 } 1480 }
1475 1481
1476 retval->part = best; 1482 retval->part = best;
1477 retval->distance = upos_max (abs (retval->distance_x), abs (retval->distance_y)); 1483 retval->distance = upos_max (abs (retval->distance_x), abs (retval->distance_y));
1478 retval->direction = find_dir_2 (-retval->distance_x, -retval->distance_y); 1484 retval->direction = find_dir_2 (retval->distance_x, retval->distance_y);
1479 } 1485 }
1480} 1486}
1481 1487
1482/* this is basically the same as get_rangevector above, but instead of 1488/* this is basically the same as get_rangevector above, but instead of
1483 * the first parameter being an object, it instead is the map 1489 * the first parameter being an object, it instead is the map
1493get_rangevector_from_mapcoord (const maptile *m, int x, int y, const object *op2, rv_vector *retval, int flags) 1499get_rangevector_from_mapcoord (const maptile *m, int x, int y, const object *op2, rv_vector *retval, int flags)
1494{ 1500{
1495 if (!adjacent_map (m, op2->map, &retval->distance_x, &retval->distance_y)) 1501 if (!adjacent_map (m, op2->map, &retval->distance_x, &retval->distance_y))
1496 { 1502 {
1497 /* be conservative and fill in _some_ data */ 1503 /* be conservative and fill in _some_ data */
1498 retval->distance = 100000; 1504 retval->distance = 100000;
1499 retval->distance_x = 32767; 1505 retval->distance_x = 32767;
1500 retval->distance_y = 32767; 1506 retval->distance_y = 32767;
1501 retval->direction = 0; 1507 retval->direction = 0;
1502 retval->part = 0; 1508 retval->part = 0;
1503 } 1509 }
1504 else 1510 else
1505 { 1511 {
1506 retval->distance_x += op2->x - x; 1512 retval->distance_x += op2->x - x;
1507 retval->distance_y += op2->y - y; 1513 retval->distance_y += op2->y - y;
1508 1514
1509 retval->part = 0; 1515 retval->part = 0;
1510 retval->distance = upos_max (abs (retval->distance_x), abs (retval->distance_y)); 1516 retval->distance = upos_max (abs (retval->distance_x), abs (retval->distance_y));
1511 retval->direction = find_dir_2 (-retval->distance_x, -retval->distance_y); 1517 retval->direction = find_dir_2 (retval->distance_x, retval->distance_y);
1512 } 1518 }
1513} 1519}
1514 1520
1515/* Returns true of op1 and op2 are effectively on the same map 1521/* Returns true of op1 and op2 are effectively on the same map
1516 * (as related to map tiling). Note that this looks for a path from 1522 * (as related to map tiling). Note that this looks for a path from

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines