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

Comparing deliantra/server/common/item.C (file contents):
Revision 1.82 by root, Tue Apr 6 04:24:29 2010 UTC vs.
Revision 1.83 by root, Sun Apr 11 00:34:05 2010 UTC

431ring_desc (const object *op) 431ring_desc (const object *op)
432{ 432{
433 static dynbuf_text buf; buf.clear (); 433 static dynbuf_text buf; buf.clear ();
434 int attr, val, len; 434 int attr, val, len;
435 435
436 if (QUERY_FLAG (op, FLAG_IDENTIFIED)) 436 if (op->flag [FLAG_IDENTIFIED])
437 { 437 {
438 for (attr = 0; attr < NUM_STATS; attr++) 438 for (attr = 0; attr < NUM_STATS; attr++)
439 if ((val = op->stats.stat (attr))) 439 if ((val = op->stats.stat (attr)))
440 buf.printf ("(%s%+d)", short_stat_name[attr], val); 440 buf.printf ("(%s%+d)", short_stat_name[attr], val);
441 441
450 if (op->stats.grace) buf.printf ("(grace%+d)", op->stats.grace); 450 if (op->stats.grace) buf.printf ("(grace%+d)", op->stats.grace);
451 if (op->stats.sp && op->type != SKILL) buf.printf ("(magic%+d)", op->stats.sp); 451 if (op->stats.sp && op->type != SKILL) buf.printf ("(magic%+d)", op->stats.sp);
452 if (op->stats.hp) buf.printf ("(regeneration%+d)", op->stats.hp); 452 if (op->stats.hp) buf.printf ("(regeneration%+d)", op->stats.hp);
453 if (op->stats.luck) buf.printf ("(luck%+d)", op->stats.luck); 453 if (op->stats.luck) buf.printf ("(luck%+d)", op->stats.luck);
454 454
455 if (QUERY_FLAG (op, FLAG_LIFESAVE)) buf << "(lifesaving)"; 455 if (op->flag [FLAG_LIFESAVE]) buf << "(lifesaving)";
456 if (QUERY_FLAG (op, FLAG_REFL_SPELL)) buf << "(reflect spells)"; 456 if (op->flag [FLAG_REFL_SPELL]) buf << "(reflect spells)";
457 if (QUERY_FLAG (op, FLAG_REFL_MISSILE)) buf << "(reflect missiles)"; 457 if (op->flag [FLAG_REFL_MISSILE]) buf << "(reflect missiles)";
458 if (QUERY_FLAG (op, FLAG_STEALTH)) buf << "(stealth)"; 458 if (op->flag [FLAG_STEALTH]) buf << "(stealth)";
459 459
460 buf.add_paths ("Attuned" , op->path_attuned); 460 buf.add_paths ("Attuned" , op->path_attuned);
461 buf.add_paths ("Repelled", op->path_repelled); 461 buf.add_paths ("Repelled", op->path_repelled);
462 buf.add_paths ("Denied" , op->path_denied); 462 buf.add_paths ("Denied" , op->path_denied);
463 463
489 489
490 static dynbuf_text buf; buf.clear (); 490 static dynbuf_text buf; buf.clear ();
491 491
492 buf << (op->nrof <= 1 ? op->name : op->name_pl); 492 buf << (op->nrof <= 1 ? op->name : op->name_pl);
493 493
494 if (op->title && QUERY_FLAG (op, FLAG_IDENTIFIED)) 494 if (op->title && op->flag [FLAG_IDENTIFIED])
495 buf << ' ' << op->title; 495 buf << ' ' << op->title;
496 496
497 switch (op->type) 497 switch (op->type)
498 { 498 {
499 case SPELLBOOK: 499 case SPELLBOOK:
500 case SCROLL: 500 case SCROLL:
501 case WAND: 501 case WAND:
502 case ROD: 502 case ROD:
503 if (QUERY_FLAG (op, FLAG_IDENTIFIED) || QUERY_FLAG (op, FLAG_BEEN_APPLIED)) 503 if (op->flag [FLAG_IDENTIFIED] || op->flag [FLAG_BEEN_APPLIED])
504 { 504 {
505 if (!op->title) 505 if (!op->title)
506 buf << " of " << (op->inv ? &op->inv->name : "bug, please report"); 506 buf << " of " << (op->inv ? &op->inv->name : "bug, please report");
507 507
508 if (op->type != SPELLBOOK) 508 if (op->type != SPELLBOOK)
547 buf << " " << s; 547 buf << " " << s;
548 } 548 }
549 break; 549 break;
550 550
551 default: 551 default:
552 if (op->magic && ((QUERY_FLAG (op, FLAG_BEEN_APPLIED) && need_identify (op)) || QUERY_FLAG (op, FLAG_IDENTIFIED))) 552 if (op->magic && ((op->flag [FLAG_BEEN_APPLIED] && need_identify (op)) || op->flag [FLAG_IDENTIFIED]))
553 buf.printf (" %+d", op->magic); 553 buf.printf (" %+d", op->magic);
554 } 554 }
555 555
556 return buf; 556 return buf;
557} 557}
588 buf << op->material->description << ' '; 588 buf << op->material->description << ' ';
589#endif 589#endif
590 590
591 buf << query_short_name (op); 591 buf << query_short_name (op);
592 592
593 if (QUERY_FLAG (op, FLAG_INV_LOCKED)) 593 if (op->flag [FLAG_INV_LOCKED])
594 buf << " *"; 594 buf << " *";
595 if (op->is_open_container ()) 595 if (op->is_open_container ())
596 buf << " (open)"; 596 buf << " (open)";
597 597
598 if (QUERY_FLAG (op, FLAG_KNOWN_CURSED)) 598 if (op->flag [FLAG_KNOWN_CURSED])
599 { 599 {
600 if (QUERY_FLAG (op, FLAG_DAMNED)) 600 if (op->flag [FLAG_DAMNED])
601 buf << " (damned)"; 601 buf << " (damned)";
602 else if (QUERY_FLAG (op, FLAG_CURSED)) 602 else if (op->flag [FLAG_CURSED])
603 buf << " (cursed)"; 603 buf << " (cursed)";
604 } 604 }
605 605
606 /* Basically, if the object is known magical (detect magic spell on it), 606 /* Basically, if the object is known magical (detect magic spell on it),
607 * and it isn't identified, print out the fact that 607 * and it isn't identified, print out the fact that
610 * 610 *
611 * Changed in V 0.91.4 - still print that the object is magical even 611 * Changed in V 0.91.4 - still print that the object is magical even
612 * if it has been applied. Equipping an item does not tell full 612 * if it has been applied. Equipping an item does not tell full
613 * abilities, especially for artifact items. 613 * abilities, especially for artifact items.
614 */ 614 */
615 if (QUERY_FLAG (op, FLAG_KNOWN_MAGICAL) && !QUERY_FLAG (op, FLAG_IDENTIFIED)) 615 if (op->flag [FLAG_KNOWN_MAGICAL] && !op->flag [FLAG_IDENTIFIED])
616 buf << " (magic)"; 616 buf << " (magic)";
617 617
618#if 0 618#if 0
619 /* item_power will be returned in describe_item - it shouldn't really 619 /* item_power will be returned in describe_item - it shouldn't really
620 * be returned in the name. 620 * be returned in the name.
622 if (op->item_power) 622 if (op->item_power)
623 sprintf (buf[use_buf] + strlen (buf[use_buf]), "(item_power %+d)", op->item_power); 623 sprintf (buf[use_buf] + strlen (buf[use_buf]), "(item_power %+d)", op->item_power);
624 624
625#endif 625#endif
626 626
627 if (QUERY_FLAG (op, FLAG_APPLIED)) 627 if (op->flag [FLAG_APPLIED])
628 { 628 {
629 switch (op->type) 629 switch (op->type)
630 { 630 {
631 case BOW: 631 case BOW:
632 case WAND: 632 case WAND:
675 else if (op->stats.food <= 0) 675 else if (op->stats.food <= 0)
676 buf << " (burned out)"; 676 buf << " (burned out)";
677 break; 677 break;
678 } 678 }
679 679
680 if (QUERY_FLAG (op, FLAG_UNPAID)) 680 if (op->flag [FLAG_UNPAID])
681 buf << " (unpaid)"; 681 buf << " (unpaid)";
682 682
683 return buf; 683 return buf;
684} 684}
685 685
714 buf << op->material->description << ' '; 714 buf << op->material->description << ' ';
715#endif 715#endif
716 716
717 buf << (plural ? op->name_pl : op->name); 717 buf << (plural ? op->name_pl : op->name);
718 718
719 if (op->title && QUERY_FLAG (op, FLAG_IDENTIFIED)) 719 if (op->title && op->flag [FLAG_IDENTIFIED])
720 buf << ' ' << op->title; 720 buf << ' ' << op->title;
721 721
722 switch (op->type) 722 switch (op->type)
723 { 723 {
724 case SPELLBOOK: 724 case SPELLBOOK:
725 case SCROLL: 725 case SCROLL:
726 case WAND: 726 case WAND:
727 case ROD: 727 case ROD:
728 if (QUERY_FLAG (op, FLAG_IDENTIFIED) || QUERY_FLAG (op, FLAG_BEEN_APPLIED)) 728 if (op->flag [FLAG_IDENTIFIED] || op->flag [FLAG_BEEN_APPLIED])
729 { 729 {
730 if (!op->title) 730 if (!op->title)
731 buf << " of " << (op->inv ? &op->inv->name : "bug, please report"); 731 buf << " of " << (op->inv ? &op->inv->name : "bug, please report");
732 732
733 if (op->type != SPELLBOOK) 733 if (op->type != SPELLBOOK)
756 else if (!EXIT_PATH (op)) 756 else if (!EXIT_PATH (op))
757 buf << " (closed)"; 757 buf << " (closed)";
758 break; 758 break;
759 759
760 default: 760 default:
761 if (op->magic && ((QUERY_FLAG (op, FLAG_BEEN_APPLIED) && need_identify (op)) || QUERY_FLAG (op, FLAG_IDENTIFIED))) 761 if (op->magic && ((op->flag [FLAG_BEEN_APPLIED] && need_identify (op)) || op->flag [FLAG_IDENTIFIED]))
762 buf.printf (" %+d", op->magic); 762 buf.printf (" %+d", op->magic);
763 } 763 }
764 764
765 return buf; 765 return buf;
766} 766}
809 default: 809 default:
810 buf << "(lightning fast movement)"; 810 buf << "(lightning fast movement)";
811 break; 811 break;
812 } 812 }
813 813
814 if (QUERY_FLAG (op, FLAG_UNDEAD)) buf << "(undead)"; 814 if (op->flag [FLAG_UNDEAD]) buf << "(undead)";
815 if (QUERY_FLAG (op, FLAG_SEE_INVISIBLE)) buf << "(see invisible)"; 815 if (op->flag [FLAG_SEE_INVISIBLE]) buf << "(see invisible)";
816 if (QUERY_FLAG (op, FLAG_USE_WEAPON)) buf << "(wield weapon)"; 816 if (op->flag [FLAG_USE_WEAPON]) buf << "(wield weapon)";
817 if (QUERY_FLAG (op, FLAG_USE_BOW)) buf << "(archer)"; 817 if (op->flag [FLAG_USE_BOW]) buf << "(archer)";
818 if (QUERY_FLAG (op, FLAG_USE_ARMOUR)) buf << "(wear armour)"; 818 if (op->flag [FLAG_USE_ARMOUR]) buf << "(wear armour)";
819 if (QUERY_FLAG (op, FLAG_USE_RING)) buf << "(wear ring)"; 819 if (op->flag [FLAG_USE_RING]) buf << "(wear ring)";
820 if (QUERY_FLAG (op, FLAG_USE_SCROLL)) buf << "(read scroll)"; 820 if (op->flag [FLAG_USE_SCROLL]) buf << "(read scroll)";
821 if (QUERY_FLAG (op, FLAG_USE_RANGE)) buf << "(fires wand/rod/horn)"; 821 if (op->flag [FLAG_USE_RANGE]) buf << "(fires wand/rod/horn)";
822 if (QUERY_FLAG (op, FLAG_CAN_USE_SKILL)) buf << "(skill user)"; 822 if (op->flag [FLAG_CAN_USE_SKILL]) buf << "(skill user)";
823 if (QUERY_FLAG (op, FLAG_CAST_SPELL)) buf << "(spellcaster)"; 823 if (op->flag [FLAG_CAST_SPELL]) buf << "(spellcaster)";
824 if (QUERY_FLAG (op, FLAG_FRIENDLY)) buf << "(friendly)"; 824 if (op->flag [FLAG_FRIENDLY]) buf << "(friendly)";
825 if (QUERY_FLAG (op, FLAG_UNAGGRESSIVE)) buf << "(unaggressive)"; 825 if (op->flag [FLAG_UNAGGRESSIVE]) buf << "(unaggressive)";
826 if (QUERY_FLAG (op, FLAG_HITBACK)) buf << "(hitback)"; 826 if (op->flag [FLAG_HITBACK]) buf << "(hitback)";
827 if (QUERY_FLAG (op, FLAG_STEALTH)) buf << "(stealthy)"; 827 if (op->flag [FLAG_STEALTH]) buf << "(stealthy)";
828 828
829 if (op->randomitems) 829 if (op->randomitems)
830 { 830 {
831 bool first = 1; 831 bool first = 1;
832 832
914 * item (eg, debug dump or the like) 914 * item (eg, debug dump or the like)
915 */ 915 */
916const char * 916const char *
917describe_item (const object *op, object *owner) 917describe_item (const object *op, object *owner)
918{ 918{
919 if (QUERY_FLAG (op, FLAG_MONSTER) || op->type == PLAYER) 919 if (op->flag [FLAG_MONSTER] || op->type == PLAYER)
920 return describe_monster (op); 920 return describe_monster (op);
921 921
922 static dynbuf_text buf; buf.clear (); 922 static dynbuf_text buf; buf.clear ();
923 int identified, i; 923 int identified, i;
924 924
925 /* figure this out once, instead of making multiple calls to need_identify. 925 /* figure this out once, instead of making multiple calls to need_identify.
926 * also makes the code easier to read. 926 * also makes the code easier to read.
927 */ 927 */
928 identified = !need_identify (op) || QUERY_FLAG (op, FLAG_IDENTIFIED); 928 identified = !need_identify (op) || op->flag [FLAG_IDENTIFIED];
929 if (!identified) 929 if (!identified)
930 buf << "(unidentified)"; 930 buf << "(unidentified)";
931 931
932 switch (op->type) 932 switch (op->type)
933 { 933 {
1003 break; 1003 break;
1004 1004
1005 case FOOD: 1005 case FOOD:
1006 case FLESH: 1006 case FLESH:
1007 case DRINK: 1007 case DRINK:
1008 if (identified || QUERY_FLAG (op, FLAG_BEEN_APPLIED)) 1008 if (identified || op->flag [FLAG_BEEN_APPLIED])
1009 { 1009 {
1010 buf.printf ("(food+%d)", op->stats.food); 1010 buf.printf ("(food+%d)", op->stats.food);
1011 1011
1012 if (op->type == FLESH && op->last_eat > 0 && atnr_is_dragon_enabled (op->last_eat)) 1012 if (op->type == FLESH && op->last_eat > 0 && atnr_is_dragon_enabled (op->last_eat))
1013 buf.printf ("(%s metabolism)", change_resist_msg[op->last_eat]); 1013 buf.printf ("(%s metabolism)", change_resist_msg[op->last_eat]);
1014 1014
1015 if (!QUERY_FLAG (op, FLAG_CURSED)) 1015 if (!op->flag [FLAG_CURSED])
1016 { 1016 {
1017 if (op->stats.hp) buf << "(heals)"; 1017 if (op->stats.hp) buf << "(heals)";
1018 if (op->stats.sp) buf << "(spellpoint regen)"; 1018 if (op->stats.sp) buf << "(spellpoint regen)";
1019 } 1019 }
1020 else 1020 else
1041 } 1041 }
1042 1042
1043 /* Down here, we more further describe equipment type items. 1043 /* Down here, we more further describe equipment type items.
1044 * only describe them if they have been identified or the like. 1044 * only describe them if they have been identified or the like.
1045 */ 1045 */
1046 if (identified || QUERY_FLAG (op, FLAG_BEEN_APPLIED)) 1046 if (identified || op->flag [FLAG_BEEN_APPLIED])
1047 { 1047 {
1048 int attr, val; 1048 int attr, val;
1049 1049
1050 for (attr = 0; attr < NUM_STATS; attr++) 1050 for (attr = 0; attr < NUM_STATS; attr++)
1051 if ((val = op->stats.stat (attr))) 1051 if ((val = op->stats.stat (attr)))
1082 1082
1083 default: 1083 default:
1084 break; 1084 break;
1085 } 1085 }
1086 1086
1087 if (QUERY_FLAG (op, FLAG_XRAYS)) buf << "(xray-vision)"; 1087 if (op->flag [FLAG_XRAYS]) buf << "(xray-vision)";
1088 if (QUERY_FLAG (op, FLAG_SEE_IN_DARK)) buf << "(infravision)"; 1088 if (op->flag [FLAG_SEE_IN_DARK]) buf << "(infravision)";
1089 1089
1090 /* levitate was what is was before, so we'll keep it */ 1090 /* levitate was what is was before, so we'll keep it */
1091 if (op->move_type & MOVE_FLY_LOW) buf << "(levitate)"; 1091 if (op->move_type & MOVE_FLY_LOW) buf << "(levitate)";
1092 if (op->move_type & MOVE_FLY_HIGH) buf << "(fly)"; 1092 if (op->move_type & MOVE_FLY_HIGH) buf << "(fly)";
1093 if (op->move_type & MOVE_SWIM) buf << "(swim)"; 1093 if (op->move_type & MOVE_SWIM) buf << "(swim)";
1155 } 1155 }
1156 1156
1157 if (op->stats.luck) 1157 if (op->stats.luck)
1158 buf.printf ("(luck%+d)", op->stats.luck); 1158 buf.printf ("(luck%+d)", op->stats.luck);
1159 1159
1160 if (QUERY_FLAG (op, FLAG_LIFESAVE)) buf << "(lifesaving)"; 1160 if (op->flag [FLAG_LIFESAVE]) buf << "(lifesaving)";
1161 if (QUERY_FLAG (op, FLAG_REFL_SPELL)) buf << "(reflect spells)"; 1161 if (op->flag [FLAG_REFL_SPELL]) buf << "(reflect spells)";
1162 if (QUERY_FLAG (op, FLAG_REFL_MISSILE)) buf << "(reflect missiles)"; 1162 if (op->flag [FLAG_REFL_MISSILE]) buf << "(reflect missiles)";
1163 if (QUERY_FLAG (op, FLAG_STEALTH)) buf << "(stealth)"; 1163 if (op->flag [FLAG_STEALTH]) buf << "(stealth)";
1164 1164
1165 if (op->slaying && op->type != FOOD) 1165 if (op->slaying && op->type != FOOD)
1166 buf.printf ("(slay %s)", &op->slaying); 1166 buf.printf ("(slay %s)", &op->slaying);
1167 1167
1168 if (op->type == SKILL_TOOL && op->skill) 1168 if (op->type == SKILL_TOOL && op->skill)
1378object::query_inventory (object *who, const char *indent) 1378object::query_inventory (object *who, const char *indent)
1379{ 1379{
1380 static dynbuf_text buf; buf.clear (); 1380 static dynbuf_text buf; buf.clear ();
1381 1381
1382 for (object *tmp = inv; tmp; tmp = tmp->below) 1382 for (object *tmp = inv; tmp; tmp = tmp->below)
1383 if (who && QUERY_FLAG (who, FLAG_WIZ)) 1383 if (who && who->flag [FLAG_WIZ])
1384 buf.printf ("%s- %-28.28s %-8s (%9d) %s\n", indent, tmp->query_name (), tmp->query_weight (), tmp->count, tmp->uuid.c_str ()); 1384 buf.printf ("%s- %-28.28s %-8s (%9d) %s\n", indent, tmp->query_name (), tmp->query_weight (), tmp->count, tmp->uuid.c_str ());
1385 else if (!tmp->invisible && (type == CONTAINER || QUERY_FLAG (tmp, FLAG_APPLIED))) 1385 else if (!tmp->invisible && (type == CONTAINER || tmp->flag [FLAG_APPLIED]))
1386 buf.printf ("%s- %-36.36s %-8s\n", indent, tmp->query_name (), tmp->query_weight ()); 1386 buf.printf ("%s- %-36.36s %-8s\n", indent, tmp->query_name (), tmp->query_weight ());
1387 1387
1388 if (buf.size ()) 1388 if (buf.size ())
1389 buf.printf ("%s(total weight: %s)\n", indent, query_weight ()); 1389 buf.printf ("%s(total weight: %s)\n", indent, query_weight ());
1390 else 1390 else
1403is_magical (const object *op) 1403is_magical (const object *op)
1404{ 1404{
1405 int i; 1405 int i;
1406 1406
1407 /* living creatures are considered non magical */ 1407 /* living creatures are considered non magical */
1408 if (QUERY_FLAG (op, FLAG_ALIVE)) 1408 if (op->flag [FLAG_ALIVE])
1409 return 0; 1409 return 0;
1410 1410
1411 /* This is a test for it being an artifact, as artifacts have titles */ 1411 /* This is a test for it being an artifact, as artifacts have titles */
1412 if (op->title != NULL) 1412 if (op->title != NULL)
1413 return 1; 1413 return 1;
1419 (op->stats.ac || op->stats.food || op->stats.exp || op->stats.dam || op->stats.wc || op->stats.sp || op->stats.hp || op->stats.luck)) 1419 (op->stats.ac || op->stats.food || op->stats.exp || op->stats.dam || op->stats.wc || op->stats.sp || op->stats.hp || op->stats.luck))
1420 return 1; 1420 return 1;
1421 1421
1422 /* Check for stealty, speed, flying, or just plain magic in the boots */ 1422 /* Check for stealty, speed, flying, or just plain magic in the boots */
1423 /* Presume any boots that hvae a move_type are special. */ 1423 /* Presume any boots that hvae a move_type are special. */
1424 if (op->type == BOOTS && ((QUERY_FLAG (op, FLAG_STEALTH) || op->move_type || op->stats.exp))) 1424 if (op->type == BOOTS && ((op->flag [FLAG_STEALTH] || op->move_type || op->stats.exp)))
1425 return 1; 1425 return 1;
1426 1426
1427 /* Take care of amulet/shield that reflects spells/missiles */ 1427 /* Take care of amulet/shield that reflects spells/missiles */
1428 if ((op->type == AMULET || op->type == SHIELD) && (QUERY_FLAG (op, FLAG_REFL_SPELL) || QUERY_FLAG (op, FLAG_REFL_MISSILE))) 1428 if ((op->type == AMULET || op->type == SHIELD) && (op->flag [FLAG_REFL_SPELL] || op->flag [FLAG_REFL_MISSILE]))
1429 return 1; 1429 return 1;
1430 1430
1431 /* Take care of helmet of xrays */ 1431 /* Take care of helmet of xrays */
1432 if (op->type == HELMET && QUERY_FLAG (op, FLAG_XRAYS)) 1432 if (op->type == HELMET && op->flag [FLAG_XRAYS])
1433 return 1; 1433 return 1;
1434 1434
1435 /* Potions & rods are always magical. Wands/staves are also magical, 1435 /* Potions & rods are always magical. Wands/staves are also magical,
1436 * assuming they still have any charges left. 1436 * assuming they still have any charges left.
1437 */ 1437 */
1526 * Supposed to fix face-values as well here, but later. 1526 * Supposed to fix face-values as well here, but later.
1527 */ 1527 */
1528void 1528void
1529identify (object *op) 1529identify (object *op)
1530{ 1530{
1531 SET_FLAG (op, FLAG_IDENTIFIED); 1531 op->set_flag (FLAG_IDENTIFIED);
1532 CLEAR_FLAG (op, FLAG_KNOWN_MAGICAL); 1532 op->clr_flag (FLAG_KNOWN_MAGICAL);
1533 CLEAR_FLAG (op, FLAG_NO_SKILL_IDENT); 1533 op->clr_flag (FLAG_NO_SKILL_IDENT);
1534 1534
1535 /* 1535 /*
1536 * We want autojoining of equal objects: 1536 * We want autojoining of equal objects:
1537 */ 1537 */
1538 if (QUERY_FLAG (op, FLAG_CURSED) || QUERY_FLAG (op, FLAG_DAMNED)) 1538 if (op->flag [FLAG_CURSED] || op->flag [FLAG_DAMNED])
1539 SET_FLAG (op, FLAG_KNOWN_CURSED); 1539 op->set_flag (FLAG_KNOWN_CURSED);
1540 1540
1541 if (op->type == POTION) 1541 if (op->type == POTION)
1542 { 1542 {
1543 if (op->inv && op->randomitems) 1543 if (op->inv && op->randomitems)
1544 op->title = op->inv->name; 1544 op->title = op->inv->name;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines