-+-+-+-+-+-+-+-+ START OF PART 31 -+-+-+-+-+-+-+-+ X`09`09 t_ptr->flags `7C= TR_FFALL; X#endif X`09`09 t_ptr->name2 = SN_SLOW_DESCENT; X`09`09 t_ptr->cost += 250; X`09`09`7D X`09 else if (tmp == 1) X`09`09`7B X`09`09 t_ptr->flags `7C= TR_SPEED; X`09`09 t_ptr->name2 = SN_SPEED; X`09`09 t_ptr->ident `7C= ID_SHOW_P1; X`09`09 t_ptr->p1 = 1; X`09`09 t_ptr->cost += 5000; X`09`09`7D X`09 else /* 2 - 5 */ X`09`09`7B X`09`09 t_ptr->flags `7C= TR_STEALTH; X`09`09 t_ptr->ident `7C= ID_SHOW_P1; X`09`09 t_ptr->p1 = randint(3); X`09`09 t_ptr->name2 = SN_STEALTH; X`09`09 t_ptr->cost += 500; X`09`09`7D X`09 `7D X`09`7D X else if (magik(cursed)) X`09`7B X`09 tmp = randint(3); X`09 if (tmp == 1) X`09 `7B X`09 t_ptr->flags `7C= TR_SPEED; X`09 t_ptr->name2 = SN_SLOWNESS; X`09 t_ptr->ident `7C= ID_SHOW_P1; X`09 t_ptr->p1 = -1; X`09 `7D X`09 else if (tmp == 2) X`09 `7B X`09 t_ptr->flags `7C= TR_AGGRAVATE; X`09 t_ptr->name2 = SN_NOISE; X`09 `7D X`09 else X`09 `7B X`09 t_ptr->name2 = SN_GREAT_MASS; X`09 t_ptr->weight = t_ptr->weight * 5; X`09 `7D X`09 t_ptr->cost = 0; X`09 t_ptr->toac -= m_bonus(2, 45, level); X#ifdef ATARIST_MWC X`09 t_ptr->flags `7C= (holder = TR_CURSED); X#else X`09 t_ptr->flags `7C= TR_CURSED; X#endif X`09`7D X break; X X case TV_HELM: /* Helms */ X if ((t_ptr->subval >= 6) && (t_ptr->subval <= 8)) X`09`7B X`09 /* give crowns a higher chance for magic */ X`09 chance += (int) (t_ptr->cost / 100); X`09 special += special; X`09`7D X if (magik(chance)) X`09`7B X`09 t_ptr->toac += m_bonus(1, 20, level); X`09 if (magik(special)) X`09 `7B X`09 if (t_ptr->subval < 6) X`09`09`7B X`09`09 tmp = randint(3); X`09`09 t_ptr->ident `7C= ID_SHOW_P1; X`09`09 if (tmp == 1) X`09`09 `7B X`09`09 t_ptr->p1 = randint(2); X`09`09 t_ptr->flags `7C= TR_INT; X`09`09 t_ptr->name2 = SN_INTELLIGENCE; X`09`09 t_ptr->cost += t_ptr->p1*500; X`09`09 `7D X`09`09 else if (tmp == 2) X`09`09 `7B X`09`09 t_ptr->p1 = randint(2); X`09`09 t_ptr->flags `7C= TR_WIS; X`09`09 t_ptr->name2 = SN_WISDOM; X`09`09 t_ptr->cost += t_ptr->p1*500; X`09`09 `7D X`09`09 else X`09`09 `7B X`09`09 t_ptr->p1 = 1 + randint(4); X#ifdef ATARIST_MWC X`09`09 t_ptr->flags `7C= (holder = TR_INFRA); X#else X`09`09 t_ptr->flags `7C= TR_INFRA; X#endif X`09`09 t_ptr->name2 = SN_INFRAVISION; X`09`09 t_ptr->cost += t_ptr->p1*250; X`09`09 `7D X`09`09`7D X`09 else X`09`09`7B X`09`09 switch(randint(6)) X`09`09 `7B X`09`09 case 1: X`09`09 t_ptr->ident `7C= ID_SHOW_P1; X`09`09 t_ptr->p1 = randint(3); X#ifdef ATARIST_MWC X`09`09 t_ptr->flags `7C= (holder = TR_FREE_ACT`7CTR_CON`7CTR_DEX`7C X`09`09`09`09 TR_STR); X#else X`09`09 t_ptr->flags `7C= (TR_FREE_ACT`7CTR_CON`7CTR_DEX`7CTR_STR); X#endif X`09`09 t_ptr->name2 = SN_MIGHT; X`09`09 t_ptr->cost += 1000 + t_ptr->p1*500; X`09`09 break; X`09`09 case 2: X`09`09 t_ptr->ident `7C= ID_SHOW_P1; X`09`09 t_ptr->p1 = randint(3); X`09`09 t_ptr->flags `7C= (TR_CHR`7CTR_WIS); X`09`09 t_ptr->name2 = SN_LORDLINESS; X`09`09 t_ptr->cost += 1000 + t_ptr->p1*500; X`09`09 break; X`09`09 case 3: X`09`09 t_ptr->ident `7C= ID_SHOW_P1; X`09`09 t_ptr->p1 = randint(3); X#ifdef ATARIST_MWC X`09`09 t_ptr->flags `7C= (holder = TR_RES_LIGHT`7CTR_RES_COLD`7C X`09`09`09`09 TR_RES_ACID`7CTR_RES_FIRE`7CTR_INT); X#else X`09`09 t_ptr->flags `7C= (TR_RES_LIGHT`7CTR_RES_COLD`7CTR_RES_ACID`7C X`09`09`09`09 TR_RES_FIRE`7CTR_INT); X#endif X`09`09 t_ptr->name2 = SN_MAGI; X`09`09 t_ptr->cost += 3000 + t_ptr->p1*500; X`09`09 break; X`09`09 case 4: X`09`09 t_ptr->ident `7C= ID_SHOW_P1; X`09`09 t_ptr->p1 = randint(3); X`09`09 t_ptr->flags `7C= TR_CHR; X`09`09 t_ptr->name2 = SN_BEAUTY; X`09`09 t_ptr->cost += 750; X`09`09 break; X`09`09 case 5: X`09`09 t_ptr->ident `7C= ID_SHOW_P1; X`09`09 t_ptr->p1 = 5*(1 + randint(4)); X#ifdef ATARIST_MWC X`09`09 t_ptr->flags `7C= (holder = TR_SEE_INVIS`7CTR_SEARCH); X#else X`09`09 t_ptr->flags `7C= (TR_SEE_INVIS`7CTR_SEARCH); X#endif X`09`09 t_ptr->name2 = SN_SEEING; X`09`09 t_ptr->cost += 1000 + t_ptr->p1*100; X`09`09 break; X`09`09 case 6: X`09`09 t_ptr->flags `7C= TR_REGEN; X`09`09 t_ptr->name2 = SN_REGENERATION; X`09`09 t_ptr->cost += 1500; X`09`09 break; X`09`09 `7D X`09`09`7D X`09 `7D X`09`7D X else if (magik(cursed)) X`09`7B X`09 t_ptr->toac -= m_bonus(1, 45, level); X#ifdef ATARIST_MWC X`09 t_ptr->flags `7C= (holder = TR_CURSED); X#else X`09 t_ptr->flags `7C= TR_CURSED; X#endif X`09 t_ptr->cost = 0; X`09 if (magik(special)) X`09 switch(randint(7)) X`09 `7B X`09 case 1: X`09`09t_ptr->ident `7C= ID_SHOW_P1; X`09`09t_ptr->p1 = -randint (5); X`09`09t_ptr->flags `7C= TR_INT; X`09`09t_ptr->name2 = SN_STUPIDITY; X`09`09break; X`09 case 2: X`09`09t_ptr->ident `7C= ID_SHOW_P1; X`09`09t_ptr->p1 = -randint (5); X`09`09t_ptr->flags `7C= TR_WIS; X`09`09t_ptr->name2 = SN_DULLNESS; X`09`09break; X`09 case 3: X#ifdef ATARIST_MWC X`09`09t_ptr->flags `7C= (holder = TR_BLIND); X#else X`09`09t_ptr->flags `7C= TR_BLIND; X#endif X`09`09t_ptr->name2 = SN_BLINDNESS; X`09`09break; X`09 case 4: X#ifdef ATARIST_MWC X`09`09t_ptr->flags `7C= (holder = TR_TIMID); X#else X`09`09t_ptr->flags `7C= TR_TIMID; X#endif X`09`09t_ptr->name2 = SN_TIMIDNESS; X`09`09break; X`09 case 5: X`09`09t_ptr->ident `7C= ID_SHOW_P1; X`09`09t_ptr->p1 = -randint (5); X`09`09t_ptr->flags `7C= TR_STR; X`09`09t_ptr->name2 = SN_WEAKNESS; X`09`09break; X`09 case 6: X`09`09t_ptr->flags `7C= TR_TELEPORT; X`09`09t_ptr->name2 = SN_TELEPORTATION; X`09`09break; X`09 case 7: X`09`09t_ptr->ident `7C= ID_SHOW_P1; X`09`09t_ptr->p1 = -randint (5); X`09`09t_ptr->flags `7C= TR_CHR; X`09`09t_ptr->name2 = SN_UGLINESS; X`09`09break; X`09 `7D X`09`7D X break; X X case TV_RING: /* Rings`09 */ X switch(t_ptr->subval) X`09`7B X`09case 0: case 1: case 2: case 3: X`09 if (magik(cursed)) X`09 `7B X`09 t_ptr->p1 = -m_bonus(1, 20, level); X#ifdef ATARIST_MWC X`09 t_ptr->flags `7C= TR_CURSED; X#else X`09 t_ptr->flags `7C= TR_CURSED; X#endif X`09 t_ptr->cost = -t_ptr->cost; X`09 `7D X`09 else X`09 `7B X`09 t_ptr->p1 = m_bonus(1, 10, level); X`09 t_ptr->cost += t_ptr->p1*100; X`09 `7D X`09 break; X`09case 4: X`09 if (magik(cursed)) X`09 `7B X`09 t_ptr->p1 = -randint(3); X#ifdef ATARIST_MWC X`09 t_ptr->flags `7C= (holder = TR_CURSED); X#else X`09 t_ptr->flags `7C= TR_CURSED; X#endif X`09 t_ptr->cost = -t_ptr->cost; X`09 `7D X`09 else X`09 t_ptr->p1 = 1; X`09 break; X`09case 5: X`09 t_ptr->p1 = 5 * m_bonus(1, 20, level); X`09 t_ptr->cost += t_ptr->p1*50; X`09 if (magik (cursed)) X`09 `7B X`09 t_ptr->p1 = -t_ptr->p1; X#ifdef ATARIST_MWC X`09 t_ptr->flags `7C= (holder = TR_CURSED); X#else X`09 t_ptr->flags `7C= TR_CURSED; X#endif X`09 t_ptr->cost = -t_ptr->cost; X`09 `7D X`09 break; X`09case 19: /* Increase damage`09 */ X`09 t_ptr->todam += m_bonus(1, 20, level); X`09 t_ptr->cost += t_ptr->todam*100; X`09 if (magik(cursed)) X`09 `7B X`09 t_ptr->todam = -t_ptr->todam; X#ifdef ATARIST_MWC X`09 t_ptr->flags `7C= (holder = TR_CURSED); X#else X`09 t_ptr->flags `7C= TR_CURSED; X#endif X`09 t_ptr->cost = -t_ptr->cost; X`09 `7D X`09 break; X`09case 20: /* Increase To-Hit`09 */ X`09 t_ptr->tohit += m_bonus(1, 20, level); X`09 t_ptr->cost += t_ptr->tohit*100; X`09 if (magik(cursed)) X`09 `7B X`09 t_ptr->tohit = -t_ptr->tohit; X#ifdef ATARIST_MWC X`09 t_ptr->flags `7C= (holder = TR_CURSED); X#else X`09 t_ptr->flags `7C= TR_CURSED; X#endif X`09 t_ptr->cost = -t_ptr->cost; X`09 `7D X`09 break; X`09case 21: /* Protection`09 */ X`09 t_ptr->toac += m_bonus(1, 20, level); X`09 t_ptr->cost += t_ptr->toac*100; X`09 if (magik(cursed)) X`09 `7B X`09 t_ptr->toac = -t_ptr->toac; X#ifdef ATARIST_MWC X`09 t_ptr->flags `7C= (holder = TR_CURSED); X#else X`09 t_ptr->flags `7C= TR_CURSED; X#endif X`09 t_ptr->cost = -t_ptr->cost; X`09 `7D X`09 break; X`09case 24: case 25: case 26: X`09case 27: case 28: case 29: X`09 t_ptr->ident `7C= ID_NOSHOW_P1; X`09 break; X`09case 30: /* Slaying`09 */ X`09 t_ptr->ident `7C= ID_SHOW_HITDAM; X`09 t_ptr->todam += m_bonus(1, 25, level); X`09 t_ptr->tohit += m_bonus(1, 25, level); X`09 t_ptr->cost += (t_ptr->tohit+t_ptr->todam)*100; X`09 if (magik(cursed)) X`09 `7B X`09 t_ptr->tohit = -t_ptr->tohit; X`09 t_ptr->todam = -t_ptr->todam; X#ifdef ATARIST_MWC X`09 t_ptr->flags `7C= (holder = TR_CURSED); X#else X`09 t_ptr->flags `7C= TR_CURSED; X#endif X`09 t_ptr->cost = -t_ptr->cost; X`09 `7D X`09 break; X`09default: X`09 break; X`09`7D X break; X X case TV_AMULET: /* Amulets`09 */ X if (t_ptr->subval < 2) X`09`7B X`09 if (magik(cursed)) X`09 `7B X`09 t_ptr->p1 = -m_bonus(1, 20, level); X#ifdef ATARIST_MWC X`09 t_ptr->flags `7C= (holder = TR_CURSED); X#else X`09 t_ptr->flags `7C= TR_CURSED; X#endif X`09 t_ptr->cost = -t_ptr->cost; X`09 `7D X`09 else X`09 `7B X`09 t_ptr->p1 = m_bonus(1, 10, level); X`09 t_ptr->cost += t_ptr->p1*100; X`09 `7D X`09`7D X else if (t_ptr->subval == 2) X`09`7B X`09 t_ptr->p1 = 5 * m_bonus(1, 25, level); X`09 if (magik(cursed)) X`09 `7B X`09 t_ptr->p1 = -t_ptr->p1; X`09 t_ptr->cost = -t_ptr->cost; X#ifdef ATARIST_MWC X`09 t_ptr->flags `7C= (holder = TR_CURSED); X#else X`09 t_ptr->flags `7C= TR_CURSED; X#endif X`09 `7D X`09 else X`09 t_ptr->cost += 50*t_ptr->p1; X`09`7D X else if (t_ptr->subval == 8) X`09`7B X`09 /* amulet of the magi is never cursed */ X`09 t_ptr->p1 = 5 * m_bonus(1, 25, level); X`09 t_ptr->cost += 20*t_ptr->p1; X`09`7D X break; X X /* Subval should be even for store, odd for dungeon*/ X /* Dungeon found ones will be partially charged`09 */ X case TV_LIGHT: X if ((t_ptr->subval % 2) == 1) X`09`7B X`09 t_ptr->p1 = randint(t_ptr->p1); X`09 t_ptr->subval -= 1; X`09`7D X break; X X case TV_WAND: X switch(t_ptr->subval) X`09`7B X`09case 0:`09 t_ptr->p1 = randint(10) +`09 6; break; X`09case 1:`09 t_ptr->p1 = randint(8) +`09 6; break; X`09case 2:`09 t_ptr->p1 = randint(5) +`09 6; break; X`09case 3:`09 t_ptr->p1 = randint(8) +`09 6; break; X`09case 4:`09 t_ptr->p1 = randint(4) +`09 3; break; X`09case 5:`09 t_ptr->p1 = randint(8) +`09 6; break; X`09case 6:`09 t_ptr->p1 = randint(20) +`09 12; break; X`09case 7:`09 t_ptr->p1 = randint(20) +`09 12; break; X`09case 8:`09 t_ptr->p1 = randint(10) +`09 6; break; X`09case 9:`09 t_ptr->p1 = randint(12) +`09 6; break; X`09case 10: t_ptr->p1 = randint(10) +`09 12; break; X`09case 11: t_ptr->p1 = randint(3) +`09 3; break; X`09case 12: t_ptr->p1 = randint(8) +`09 6; break; X`09case 13: t_ptr->p1 = randint(10) +`09 6; break; X`09case 14: t_ptr->p1 = randint(5) +`09 3; break; X`09case 15: t_ptr->p1 = randint(5) +`09 3; break; X`09case 16: t_ptr->p1 = randint(5) +`09 6; break; X`09case 17: t_ptr->p1 = randint(5) +`09 4; break; X`09case 18: t_ptr->p1 = randint(8) +`09 4; break; X`09case 19: t_ptr->p1 = randint(6) +`09 2; break; X`09case 20: t_ptr->p1 = randint(4) +`09 2; break; X`09case 21: t_ptr->p1 = randint(8) +`09 6; break; X`09case 22: t_ptr->p1 = randint(5) +`09 2; break; X`09case 23: t_ptr->p1 = randint(12) + 12; break; X`09default: X`09 break; X`09`7D X break; X X case TV_STAFF: X switch(t_ptr->subval) X`09`7B X`09case 0:`09 t_ptr->p1 = randint(20) +`09 12; break; X`09case 1:`09 t_ptr->p1 = randint(8) +`09 6; break; X`09case 2:`09 t_ptr->p1 = randint(5) +`09 6; break; X`09case 3:`09 t_ptr->p1 = randint(20) +`09 12; break; X`09case 4:`09 t_ptr->p1 = randint(15) +`09 6; break; X`09case 5:`09 t_ptr->p1 = randint(4) +`09 5; break; X`09case 6:`09 t_ptr->p1 = randint(5) +`09 3; break; X`09case 7:`09 t_ptr->p1 = randint(3) +`09 1; X`09 t_ptr->level = 10; X`09 break; X`09case 8:`09 t_ptr->p1 = randint(3) +`09 1; break; X`09case 9:`09 t_ptr->p1 = randint(5) +`09 6; break; X`09case 10: t_ptr->p1 = randint(10) +`09 12; break; X`09case 11: t_ptr->p1 = randint(5) +`09 6; break; X`09case 12: t_ptr->p1 = randint(5) +`09 6; break; X`09case 13: t_ptr->p1 = randint(5) +`09 6; break; X`09case 14: t_ptr->p1 = randint(10) +`09 12; break; X`09case 15: t_ptr->p1 = randint(3) +`09 4; break; X`09case 16: t_ptr->p1 = randint(5) +`09 6; break; X`09case 17: t_ptr->p1 = randint(5) +`09 6; break; X`09case 18: t_ptr->p1 = randint(3) +`09 4; break; X`09case 19: t_ptr->p1 = randint(10) +`09 12; break; X`09case 20: t_ptr->p1 = randint(3) +`09 4; break; X`09case 21: t_ptr->p1 = randint(3) +`09 4; break; X`09case 22: t_ptr->p1 = randint(10) + 6; X`09 t_ptr->level = 5; X`09 break; X`09default: X`09 break; X`09`7D X break; X X case TV_CLOAK: X if (magik(chance)) X`09`7B X`09 if (magik(special)) X`09 `7B X`09 if (randint(2) == 1) X`09`09`7B X`09`09 t_ptr->name2 = SN_PROTECTION; X`09`09 t_ptr->toac += m_bonus(2, 40, level); X`09`09 t_ptr->cost += 250; X`09`09`7D X`09 else X`09`09`7B X`09`09 t_ptr->toac += m_bonus(1, 20, level); X`09`09 t_ptr->ident `7C= ID_SHOW_P1; X`09`09 t_ptr->p1 = randint(3); X`09`09 t_ptr->flags `7C= TR_STEALTH; X`09`09 t_ptr->name2 = SN_STEALTH; X`09`09 t_ptr->cost += 500; X`09`09`7D X`09 `7D X`09 else X`09 t_ptr->toac += m_bonus(1, 20, level); X`09`7D X else if (magik(cursed)) X`09`7B X`09 tmp = randint(3); X`09 if (tmp == 1) X`09 `7B X`09 t_ptr->flags `7C= TR_AGGRAVATE; X`09 t_ptr->name2 = SN_IRRITATION; X`09 t_ptr->toac -= m_bonus(1, 10, level); X`09 t_ptr->ident `7C= ID_SHOW_HITDAM; X`09 t_ptr->tohit -= m_bonus(1, 10, level); X`09 t_ptr->todam -= m_bonus(1, 10, level); X`09 t_ptr->cost = 0; X`09 `7D +-+-+-+-+-+-+-+- END OF PART 31 +-+-+-+-+-+-+-+-