Skip to content

Commit 8ab567e

Browse files
authored
Merge branch 'luciensadi:master' into master
2 parents 981610b + e85f412 commit 8ab567e

41 files changed

Lines changed: 689 additions & 223 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/act.comm.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -774,7 +774,7 @@ struct obj_data *find_radio(struct char_data *ch, bool *is_cyberware, bool *is_v
774774

775775
ACMD(do_radio)
776776
{
777-
struct obj_data *obj, *radio = NULL;
777+
struct obj_data *radio = NULL;
778778
char one[MAX_INPUT_LENGTH], two[MAX_INPUT_LENGTH];
779779
int i;
780780
bool cyberware = FALSE, vehicle = FALSE, matrix = FALSE;

src/act.drive.cpp

Lines changed: 34 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1348,7 +1348,7 @@ ACMD(do_speed)
13481348
DELETE_AND_NULL_ARRAY(GET_VEH_DEFPOS(veh));
13491349
}
13501350

1351-
FAILURE_CASE(veh_can_traverse_air(veh) && i > 2, "Sorry, you can't accelerate aircraft faster than cruising speed.");
1351+
FAILURE_CASE(GET_VEH_VNUM(veh) != 8913 && veh_can_traverse_air(veh) && i > 2, "Sorry, you can't accelerate aircraft faster than cruising speed.");
13521352

13531353
if (veh->hood) {
13541354
send_to_char("You can't move with the hood up.\r\n", ch);
@@ -2293,7 +2293,7 @@ ACMD(do_push)
22932293
else if (ch->in_veh->cspeed > SPEED_IDLE)
22942294
send_to_char("You are moving too fast to do that.\r\n", ch);
22952295
else if (!(veh = get_veh_list(argument, ch->in_veh->carriedvehs, ch)))
2296-
send_to_char("That vehicle isn't in here.\r\n", ch);
2296+
send_to_char(ch, "You don't see a vehicle named '%s' to push %s into.\r\n", argument, GET_VEH_NAME(veh));
22972297
else {
22982298
strlcpy(buf3, GET_VEH_NAME(veh), sizeof(buf3));
22992299
send_to_char(ch, "You push %s out of the back.\r\n", buf3);
@@ -2320,16 +2320,15 @@ ACMD(do_push)
23202320
send_to_char("Push what?\r\n", ch);
23212321
return;
23222322
}
2323-
if (!(veh = get_veh_list(buf, ch->in_room->vehicles, ch)) || !(found_veh = get_veh_list(buf1, ch->in_room->vehicles, ch))) {
2324-
send_to_char("You don't see that vehicle here.\r\n", ch);
2325-
return;
2326-
}
23272323

2328-
FAILURE_CASE(found_veh == veh, "You can't push it into itself.");
2329-
FAILURE_CASE(!found_veh->seating[0] && !(repair_vehicle_seating(found_veh) && found_veh->seating[0]), "There's nowhere to push it into.");
2330-
FAILURE_CASE(found_veh->load - found_veh->usedload < calculate_vehicle_entry_load(veh), "There is not enough room in there for that.");
2324+
FAILURE_CASE_PRINTF(!(veh = get_veh_list(buf, ch->in_room->vehicles, ch)), "You don't see a vehicle named '%s' here.", buf);
2325+
FAILURE_CASE_PRINTF(!(found_veh = get_veh_list(buf1, ch->in_room->vehicles, ch)), "You don't see a vehicle named '%s' to push %s into.", buf1, GET_VEH_NAME(veh));
2326+
2327+
FAILURE_CASE_PRINTF(found_veh == veh, "You can't push %s into itself.", GET_VEH_NAME(veh));
2328+
FAILURE_CASE_PRINTF(!found_veh->seating[0] && !(repair_vehicle_seating(found_veh) && found_veh->seating[0]), "There's not enough seating for you in %s.", GET_VEH_NAME(found_veh));
2329+
FAILURE_CASE_PRINTF(found_veh->load - found_veh->usedload < calculate_vehicle_entry_load(veh), "There is not enough room in %s for that.", GET_VEH_NAME(found_veh));
23312330
FAILURE_CASE(found_veh->locked, "You can't push it into a locked vehicle.");
2332-
FAILURE_CASE(veh->locked && veh->damage < VEH_DAM_THRESHOLD_DESTROYED, "The wheels seem to be locked.");
2331+
FAILURE_CASE_PRINTF(veh->locked && veh->damage < VEH_DAM_THRESHOLD_DESTROYED, "The wheels on %s seem to be locked.", GET_VEH_NAME(veh));
23332332
FAILURE_CASE(found_veh->damage >= VEH_DAM_THRESHOLD_DESTROYED, "You can't push anything into a destroyed vehicle.");
23342333

23352334
strlcpy(buf2, GET_VEH_NAME(veh), sizeof(buf2));
@@ -2452,6 +2451,29 @@ ACMD(do_vehicle_osay) {
24522451
send_to_char(ch, "You say ^mOOCly^n, \"%s^n\".\r\n", capitalize(argument));
24532452
}
24542453

2454+
int get_vehicle_damage_modifier(struct veh_data *veh) {
2455+
switch (veh->damage)
2456+
{
2457+
case 0:
2458+
return 0;
2459+
case VEH_DAM_THRESHOLD_LIGHT:
2460+
case 2:
2461+
return 1;
2462+
case VEH_DAM_THRESHOLD_MODERATE:
2463+
case 4:
2464+
case 5:
2465+
return 2;
2466+
case VEH_DAM_THRESHOLD_SEVERE:
2467+
case 7:
2468+
case 8:
2469+
case 9:
2470+
return 3;
2471+
case 10:
2472+
return 10;
2473+
}
2474+
return 99;
2475+
}
2476+
24552477
int get_vehicle_modifier(struct veh_data *veh, bool include_weather)
24562478
{
24572479
struct char_data *ch;
@@ -2485,24 +2507,8 @@ int get_vehicle_modifier(struct veh_data *veh, bool include_weather)
24852507
}
24862508
}
24872509
// Damaged? TN goes up.
2488-
switch (veh->damage)
2489-
{
2490-
case VEH_DAM_THRESHOLD_LIGHT:
2491-
case 2:
2492-
mod += 1;
2493-
break;
2494-
case VEH_DAM_THRESHOLD_MODERATE:
2495-
case 4:
2496-
case 5:
2497-
mod += 2;
2498-
break;
2499-
case VEH_DAM_THRESHOLD_SEVERE:
2500-
case 7:
2501-
case 8:
2502-
case 9:
2503-
mod += 3;
2504-
break;
2505-
}
2510+
mod += get_vehicle_damage_modifier(veh);
2511+
25062512
// Weather makes it harder to drive too.
25072513
if (include_weather && weather_info.sky >= SKY_RAINING)
25082514
mod++;

src/act.informative.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1572,7 +1572,7 @@ void list_one_char(struct char_data * i, struct char_data * ch)
15721572
bool dual = TRUE;
15731573
if (IS_ASTRAL(i))
15741574
strlcat(buf, " (astral)", sizeof(buf));
1575-
if (GET_GRADE(i)) {
1575+
if (GET_GRADE(i) && !IS_OTAKU(i)) {
15761576
bool init = TRUE;
15771577
if (GET_METAMAGIC(i, META_MASKING)) {
15781578
if (IS_SET(GET_MASKING(i), MASK_INIT) || IS_SET(GET_MASKING(i), MASK_COMPLETE))
@@ -2976,7 +2976,7 @@ void do_probe_object(struct char_data * ch, struct obj_data * j, bool is_in_shop
29762976
break;
29772977
case ITEM_WEAPON:
29782978
// Ranged weapons first.
2979-
if (IS_GUN(GET_WEAPON_ATTACK_TYPE(j))) {
2979+
if (WEAPON_IS_GUN(j)) {
29802980
int burst_count = 0;
29812981

29822982
// Line 1: "It is a 3-round pistol that uses the Pistols skill to fire. Its base damage code is 2L."
@@ -4235,8 +4235,7 @@ ACMD(do_examine)
42354235
look_in_obj(ch, tmp_object, TRUE, 0);
42364236
send_to_char("\r\n", ch);
42374237
}
4238-
} else if ((GET_OBJ_TYPE(tmp_object) == ITEM_WEAPON) &&
4239-
(IS_GUN(GET_OBJ_VAL(tmp_object, 3)))) {
4238+
} else if (GET_OBJ_TYPE(tmp_object) == ITEM_WEAPON && WEAPON_IS_GUN(tmp_object)) {
42404239
for (i = ACCESS_LOCATION_TOP; i <= ACCESS_LOCATION_UNDER; ++i)
42414240
if (GET_OBJ_VAL(tmp_object, i) >= 0) {
42424241
send_to_char(ch, "There is %s attached to the %s of it.\r\n",

src/act.obj.cpp

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -507,7 +507,7 @@ ACMD(do_put)
507507
FAILURE_CASE_PRINTF(!(obj = get_obj_in_list_vis(ch, arg1, ch->carrying)), "You aren't carrying %s %s.", AN(arg1), arg1);
508508

509509
// You can always fit Cram and Psyche in a compartment. We only evaluate the logic in this block if it's neither of these things.
510-
if (GET_OBJ_TYPE(obj) != ITEM_DRUG || GET_OBJ_DRUG_TYPE(obj) != DRUG_CRAM || GET_OBJ_DRUG_TYPE(obj) != DRUG_PSYCHE) {
510+
if (GET_OBJ_TYPE(obj) != ITEM_DRUG || (GET_OBJ_DRUG_TYPE(obj) != DRUG_CRAM && GET_OBJ_DRUG_TYPE(obj) != DRUG_PSYCHE)) {
511511
// Breakables can only take Cram/Psyche.
512512
FAILURE_CASE(GET_CYBERWARE_FLAGS(cont), "You can only put the drugs Cram and Psyche in breakable tooth compartments.");
513513

@@ -3331,10 +3331,10 @@ int can_wield_both(struct char_data *ch, struct obj_data *one, struct obj_data *
33313331
return TRUE;
33323332
if (GET_OBJ_TYPE(one) != ITEM_WEAPON || GET_OBJ_TYPE(two) != ITEM_WEAPON)
33333333
return TRUE;
3334-
if ((IS_GUN(GET_OBJ_VAL(one, 3)) && !IS_GUN(GET_OBJ_VAL(two, 3))) ||
3335-
(IS_GUN(GET_OBJ_VAL(two, 3)) && !IS_GUN(GET_OBJ_VAL(one, 3))))
3334+
if ((WEAPON_IS_GUN(one) && !WEAPON_IS_GUN(two)) ||
3335+
(WEAPON_IS_GUN(two) && !WEAPON_IS_GUN(one)))
33363336
return FALSE;
3337-
else if (!IS_GUN(GET_OBJ_VAL(one, 3)) && !IS_GUN(GET_OBJ_VAL(two, 3)))
3337+
else if (!WEAPON_IS_GUN(one) && !WEAPON_IS_GUN(two))
33383338
return FALSE;
33393339
else if (IS_OBJ_STAT(one, ITEM_EXTRA_TWOHANDS) || IS_OBJ_STAT(two, ITEM_EXTRA_TWOHANDS))
33403340
return FALSE;
@@ -3624,7 +3624,7 @@ void perform_wear(struct char_data * ch, struct obj_data * obj, int where, bool
36243624
obj_from_obj(obj);
36253625
else
36263626
obj_from_char(obj);
3627-
equip_char(ch, obj, where);
3627+
equip_char(ch, obj, where, true, true);
36283628

36293629
if (print_messages) {
36303630
switch (get_armor_penalty_grade(ch)) {
@@ -3836,7 +3836,7 @@ ACMD(do_wield)
38363836
if (!CAN_WEAR(obj, ITEM_WEAR_WIELD))
38373837
send_to_char(ch, "You can't wield %s.\r\n", GET_OBJ_NAME(obj));
38383838
else if (GET_OBJ_TYPE(obj) == ITEM_WEAPON
3839-
&& !IS_GUN(GET_WEAPON_ATTACK_TYPE(obj))
3839+
&& !WEAPON_IS_GUN(obj)
38403840
&& GET_WEAPON_FOCUS_BONDED_BY(obj) == GET_IDNUM(ch)
38413841
&& GET_MAG(ch) * 2 < GET_WEAPON_FOCUS_RATING(obj))
38423842
{
@@ -3903,8 +3903,6 @@ void perform_remove(struct char_data * ch, int pos)
39033903
int was_worn_on = obj->worn_on;
39043904
int previous_armor_penalty = get_armor_penalty_grade(ch);
39053905

3906-
obj_to_char(unequip_char(ch, pos, TRUE), ch);
3907-
39083906
// Gyros take a bit to get out of.
39093907
if (GET_OBJ_TYPE(obj) == ITEM_GYRO) {
39103908
FAILURE_CASE(CH_IN_COMBAT(ch), "While fighting?? That would be a neat trick.");
@@ -3949,6 +3947,8 @@ void perform_remove(struct char_data * ch, int pos)
39493947
act("$n stops using $p.", TRUE, ch, obj, 0, TO_ROOM);
39503948
}
39513949

3950+
obj_to_char(unequip_char(ch, pos, true, true, true), ch);
3951+
39523952
if (previous_armor_penalty && !get_armor_penalty_grade(ch))
39533953
send_to_char("You can move freely again.\r\n", ch);
39543954

@@ -4243,7 +4243,7 @@ ACMD(do_activate)
42434243
do_wear(ch, tmp_arg, 0, 0);
42444244
} else if (worn) {
42454245
send_to_char(ch, "%s hasn't been bonded yet, so you need to ^WREMOVE^n it and ^WBOND^n it, then ^WWEAR^n it again. Trying that now...\r\n", CAP(GET_OBJ_NAME(obj)));
4246-
obj_to_char(unequip_char(ch, obj->worn_on, FALSE, TRUE), ch);
4246+
obj_to_char(unequip_char(ch, obj->worn_on, FALSE, TRUE, true), ch);
42474247
do_bond(ch, tmp_arg, 0, 0);
42484248
do_wear(ch, tmp_arg, 0, 0);
42494249
} else {
@@ -4445,7 +4445,7 @@ int draw_from_readied_holster(struct char_data *ch, struct obj_data *holster) {
44454445

44464446
// Refuse to let someone draw a weapon focus that they can't use.
44474447
if (GET_OBJ_TYPE(contents) == ITEM_WEAPON
4448-
&& !IS_GUN(GET_WEAPON_ATTACK_TYPE(contents))
4448+
&& !WEAPON_IS_GUN(contents)
44494449
&& GET_WEAPON_FOCUS_RATING(contents) > 0
44504450
&& GET_WEAPON_FOCUS_BONDED_BY(contents) == GET_IDNUM(ch))
44514451
{
@@ -4610,20 +4610,20 @@ bool holster_can_fit(struct obj_data *holster, struct obj_data *weapon) {
46104610
switch (GET_HOLSTER_TYPE(holster)) {
46114611
case HOLSTER_TYPE_SMALL_GUNS:
46124612
// Handle standard small guns.
4613-
if (IS_GUN(GET_WEAPON_ATTACK_TYPE(weapon)) && small_weapon)
4613+
if (WEAPON_IS_GUN(weapon) && small_weapon)
46144614
return TRUE;
46154615

46164616
// Check for ranged tasers.
46174617
return (GET_WEAPON_ATTACK_TYPE(weapon) == WEAP_TASER && GET_WEAPON_SKILL(weapon) == SKILL_TASERS);
46184618
case HOLSTER_TYPE_MELEE_WEAPONS:
46194619
// Handle standard melee weapons.
4620-
if (!IS_GUN(GET_WEAPON_ATTACK_TYPE(weapon)))
4620+
if (!WEAPON_IS_GUN(weapon))
46214621
return TRUE;
46224622

46234623
// Check for melee tasers.
46244624
return (GET_WEAPON_ATTACK_TYPE(weapon) == WEAP_TASER && GET_WEAPON_SKILL(weapon) != SKILL_TASERS);
46254625
case HOLSTER_TYPE_LARGE_GUNS:
4626-
return IS_GUN(GET_WEAPON_ATTACK_TYPE(weapon)) && !small_weapon;
4626+
return WEAPON_IS_GUN(weapon) && !small_weapon;
46274627
}
46284628

46294629
return FALSE;
@@ -4714,7 +4714,7 @@ ACMD(do_holster)
47144714

47154715

47164716
FAILURE_CASE_PRINTF(!cont, "You don't have any empty %s that will fit %s.",
4717-
!IS_GUN(GET_OBJ_VAL(obj, 3)) ? "sheaths" : "holsters", decapitalize_a_an(GET_OBJ_NAME(obj)));
4717+
!WEAPON_IS_GUN(obj) ? "sheaths" : "holsters", decapitalize_a_an(GET_OBJ_NAME(obj)));
47184718

47194719
FAILURE_CASE_PRINTF(cont == obj, "You can't put %s inside itself.", decapitalize_a_an(GET_OBJ_NAME(obj)));
47204720

src/act.offensive.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -498,9 +498,7 @@ ACMD(do_shoot)
498498
for (i = WEAR_WIELD; i <= WEAR_HOLD; i++)
499499
if ((weapon = GET_EQ(ch, i)) &&
500500
(GET_OBJ_TYPE(weapon) == ITEM_FIREWEAPON ||
501-
(GET_OBJ_TYPE(weapon) == ITEM_WEAPON && (IS_GUN(GET_WEAPON_ATTACK_TYPE(weapon))
502-
|| GET_WEAPON_ATTACK_TYPE(weapon) == WEAP_GREN_LAUNCHER
503-
|| GET_WEAPON_ATTACK_TYPE(weapon) == WEAP_MISS_LAUNCHER))))
501+
(GET_OBJ_TYPE(weapon) == ITEM_WEAPON && (WEAPON_IS_GUN(weapon)))))
504502
if (find_weapon_range(ch, weapon) > range)
505503
pos = i;
506504

@@ -968,7 +966,7 @@ ACMD(do_mode)
968966
return;
969967
}
970968

971-
if (GET_OBJ_TYPE(weapon) != ITEM_WEAPON || !IS_GUN(GET_WEAPON_ATTACK_TYPE(weapon))) {
969+
if (GET_OBJ_TYPE(weapon) != ITEM_WEAPON || !WEAPON_IS_GUN(weapon)) {
972970
send_to_char(ch, "%s isn't a firearm.\r\n", CAP(GET_OBJ_NAME(weapon)));
973971
return;
974972
}

src/act.other.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1867,7 +1867,7 @@ ACMD(do_reload)
18671867
}
18681868

18691869
if (GET_OBJ_TYPE(gun) != ITEM_WEAPON
1870-
|| !IS_GUN(GET_WEAPON_ATTACK_TYPE(gun))
1870+
|| !WEAPON_IS_GUN(gun)
18711871
|| GET_WEAPON_MAX_AMMO(gun) <= 0)
18721872
{
18731873
send_to_char(ch, "%s is not a reloadable weapon!\r\n", capitalize(GET_OBJ_NAME(gun)));
@@ -1909,7 +1909,7 @@ ACMD(do_reload)
19091909
ACMD(do_eject)
19101910
{
19111911
struct obj_data *weapon = GET_EQ(ch, WEAR_WIELD);
1912-
if (!weapon || !IS_GUN(GET_WEAPON_ATTACK_TYPE(weapon))) {
1912+
if (!weapon || !WEAPON_IS_GUN(weapon)) {
19131913
send_to_char("You're not wielding a firearm.\r\n", ch);
19141914
return;
19151915
}
@@ -2029,7 +2029,7 @@ ACMD(do_attach)
20292029
send_to_char("The mount is locked.\r\n", ch);
20302030
return;
20312031
}
2032-
if (!IS_GUN(GET_WEAPON_ATTACK_TYPE(item))) {
2032+
if (!WEAPON_IS_GUN(item)) {
20332033
send_to_char(ch, "%s isn't a gun, there'd be no point in attaching it to a mount.\r\n", capitalize(GET_OBJ_NAME(item)));
20342034
return;
20352035
}
@@ -3953,7 +3953,7 @@ ACMD(do_assense)
39533953
if (mem)
39543954
snprintf(ENDOF(buf), sizeof(buf) - strlen(buf), ", and is seems to have been built by %s", mem->mem);
39553955
}
3956-
} else if (GET_OBJ_TYPE(obj) == ITEM_WEAPON && !IS_GUN(GET_WEAPON_ATTACK_TYPE(obj)) && GET_WEAPON_FOCUS_RATING(obj) > 0) {
3956+
} else if (GET_OBJ_TYPE(obj) == ITEM_WEAPON && !WEAPON_IS_GUN(obj) && GET_WEAPON_FOCUS_RATING(obj) > 0) {
39573957
strlcat(buf, "a weapon focus", sizeof(buf));
39583958
if (success >= 5) {
39593959
snprintf(ENDOF(buf), sizeof(buf) - strlen(buf), ". It is of force %d", GET_WEAPON_FOCUS_RATING(obj));
@@ -4754,7 +4754,7 @@ ACMD(do_ammo) {
47544754

47554755
bool sent_a_message = FALSE;
47564756

4757-
if (primary && IS_GUN(GET_WEAPON_ATTACK_TYPE(primary))) {
4757+
if (primary && WEAPON_IS_GUN(primary)) {
47584758
if (primary->contains) {
47594759
send_to_char(ch, "Primary: %d / %d %s.\r\n",
47604760
MIN(GET_WEAPON_MAX_AMMO(primary), GET_MAGAZINE_AMMO_COUNT(primary->contains)),
@@ -4772,7 +4772,7 @@ ACMD(do_ammo) {
47724772
sent_a_message = TRUE;
47734773
}
47744774

4775-
if (secondary && IS_GUN(GET_WEAPON_ATTACK_TYPE(secondary))) {
4775+
if (secondary && WEAPON_IS_GUN(secondary)) {
47764776
if (secondary->contains) {
47774777
send_to_char(ch, "Secondary: %d / %d %s.\r\n",
47784778
MIN(GET_WEAPON_MAX_AMMO(secondary), GET_OBJ_VAL(secondary->contains, 9)),
@@ -5286,7 +5286,7 @@ bool is_reloadable_weapon(struct obj_data *weapon, int ammotype) {
52865286
return FALSE;
52875287

52885288
// It must be a gun. Bows etc can choke on it.
5289-
if (GET_OBJ_TYPE(weapon) != ITEM_WEAPON || !IS_GUN(GET_WEAPON_ATTACK_TYPE(weapon)))
5289+
if (GET_OBJ_TYPE(weapon) != ITEM_WEAPON || !WEAPON_IS_GUN(weapon))
52905290
return FALSE;
52915291

52925292
// It must take ammo.

src/act.wizard.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7271,8 +7271,14 @@ ACMD(do_hlist)
72717271
if (!ch_can_bypass_edit_lock(ch, get_zone_from_vnum(matrix[nr].vnum)))
72727272
continue;
72737273

7274-
snprintf(ENDOF(buf), sizeof(buf) - strlen(buf), "%5d. [%8ld] %s\r\n", ++found,
7275-
matrix[nr].vnum, matrix[nr].name);
7274+
snprintf(ENDOF(buf), sizeof(buf) - strlen(buf), "%5d. [%8ld] %s^n: %s-%d^n (%s^n)\r\n",
7275+
++found,
7276+
matrix[nr].vnum,
7277+
matrix[nr].name,
7278+
host_color[matrix[nr].color],
7279+
matrix[nr].security,
7280+
intrusion[matrix[nr].intrusion]
7281+
);
72767282
}
72777283

72787284
if (!found)

src/awake.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1349,7 +1349,7 @@ enum {
13491349
#define ITEM_CREATIVE_EFFORT 49
13501350
#define ITEM_PET 50
13511351
#define ITEM_COMPLEX_FORM 51 /* otaku complex form */
1352-
#define ITEM_DRONEWAR_RELATED 52
1352+
#define ITEM_MINIGAME_RELATED 52
13531353
#define NUM_ITEMS 53
13541354
// Adding something? Add convenience definees to utils.hpp and put the type's name in constants.cpp.
13551355

@@ -1404,7 +1404,7 @@ enum {
14041404
#define ITEM_EXTRA_NORENT 2 /* Item cannot be rented */
14051405
#define ITEM_EXTRA_NODONATE 3 /* Item cannot be donated */
14061406
// unused, must remove, was !invis 4, also touch db.cpp item_extra_flag_map
1407-
// unused, must remove, was invisible 5, also touch db.cpp item_extra_flag_map
1407+
#define ITEM_EXTRA_SHEER 5
14081408
#define ITEM_EXTRA_MAGIC 6 /* Item is magical */
14091409
#define ITEM_EXTRA_NODROP 7 /* Item is cursed: can't drop */
14101410
#define ITEM_EXTRA_FORMFIT 8 /* Item is blessed */

0 commit comments

Comments
 (0)