finished adding content from CLIVAN; not tested yet
[k8-i-v-a-n.git] / src / game / items / materialcontainer_cauldron.cpp
blob473e8fff068a62a1be59f6e1c70075688ab2ba32
1 #ifdef HEADER_PHASE
2 ITEM(cauldron, materialcontainer)
4 public:
5 virtual item *BetterVersion () const;
6 virtual void DipInto (liquid *, character *);
7 virtual liquid *CreateDipLiquid ();
8 virtual truth IsDippable (ccharacter *) const { return !SecondaryMaterial; }
9 virtual truth IsDumpable (ccharacter *) const { return SecondaryMaterial != 0; }
10 //virtual void Break (character *, int);
11 virtual truth IsDipDestination (ccharacter *) const;
12 virtual truth IsExplosive () const;
13 //virtual truth ReceiveDamage (character *, int, int, int); // can't break ... unless it turns into a lump of copper?? hmmm. Maybe can have a cracked cauldron.
14 virtual truth HasBetterVersion () const { return !SecondaryMaterial; }
15 virtual truth EffectIsGood () const;
16 virtual truth IsKamikazeWeapon (ccharacter *) const { return IsExplosive(); }
18 protected:
19 virtual void AddPostFix (festring &String, int) const { AddContainerPostFix(String); }
20 virtual truth AddAdjective (festring &, truth) const;
24 #else
27 truth cauldron::IsExplosive () const { return GetSecondaryMaterial() && GetSecondaryMaterial()->IsExplosive(); }
28 truth cauldron::AddAdjective (festring & String, truth Articled) const { return AddEmptyAdjective(String, Articled); }
29 truth cauldron::EffectIsGood () const { return GetSecondaryMaterial() && GetSecondaryMaterial()->GetInteractionFlags() & EFFECT_IS_GOOD; }
30 truth cauldron::IsDipDestination (ccharacter *) const { return SecondaryMaterial && SecondaryMaterial->IsLiquid(); }
31 liquid *cauldron::CreateDipLiquid () { return static_cast<liquid *>(GetSecondaryMaterial()->TakeDipVolumeAway()); }
34 void cauldron::DipInto (liquid *Liquid, character *Dipper) {
35 /* Add alchemy */
36 if (Dipper->IsPlayer()) ADD_MESSAGE("%s is now filled with %s.", CHAR_NAME(DEFINITE), Liquid->GetName(false, false).CStr());
37 ChangeSecondaryMaterial(Liquid);
38 Dipper->DexterityAction(10);
42 item *cauldron::BetterVersion () const {
43 if (!GetSecondaryMaterial()) return cauldron::Spawn();
44 return 0;
48 #endif