fixed some bugs in new 'g'o system
[k8-i-v-a-n.git] / src / game / items / scroll_scrollofenchantweapon.cpp
blob01eb326bac25fce02d4725bc0c8b7bb6f254ffcd
1 #ifdef HEADER_PHASE
2 ITEM(scrollofenchantweapon, scroll)
4 public:
5 virtual void FinishReading(character*);
6 };
9 #else
13 void scrollofenchantweapon::FinishReading(character* Reader)
15 for(;;)
17 itemvector Item;
19 if(!Reader->SelectFromPossessions(Item, CONST_S("Choose a weapon to enchant:"), NO_MULTI_SELECT|SELECT_PAIR, &item::IsWeapon))
21 ADD_MESSAGE("You notice you haven't got anything to enchant.");
22 return;
25 if(!Item.empty())
27 if(!Item[0]->CanBeEnchanted())
29 ADD_MESSAGE("You cast the spell, but the magic is not powerful enough to affect %s!", Item[0]->CHAR_NAME(DEFINITE|(Item.size() == 1 ? 0 : PLURAL)));
30 break;
33 if(Item[0]->HandleInPairs() && Item.size() == 1)
35 ADD_MESSAGE("Only one %s will be enchanted.", Item[0]->CHAR_NAME(UNARTICLED));
37 if(!game::TruthQuestion(CONST_S("Still continue? [y/N]")))
38 continue;
41 if(Item[0]->GetEnchantment() >= 5 && RAND_GOOD(Item[0]->GetEnchantment() - 3))
43 if(Item.size() == 1)
44 ADD_MESSAGE("Magic energies swirl around %s, but they fail to enchant it further!", Item[0]->CHAR_NAME(DEFINITE));
45 else
46 ADD_MESSAGE("Magic energies swirl around %s, but they fail to enchant them further!", Item[0]->CHAR_NAME(DEFINITE|PLURAL));
48 break;
51 if(Item.size() == 1)
52 ADD_MESSAGE("Your %s glows briefly red. It feels very warm now.", Item[0]->CHAR_NAME(UNARTICLED));
53 else
54 ADD_MESSAGE("Your %s glow briefly red. They feel very warm now.", Item[0]->CHAR_NAME(PLURAL));
56 for(uInt c = 0; c < Item.size(); ++c)
57 Item[c]->EditEnchantment(1);
59 break;
61 else if(game::TruthQuestion(CONST_S("Really cancel read? [y/N]")))
62 return;
65 RemoveFromSlot();
66 SendToHell();
67 Reader->EditExperience(INTELLIGENCE, 300, 1 << 12);
69 #endif