2 ITEM(cauldron
, materialcontainer
)
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(); }
19 virtual void AddPostFix (festring
&String
, int) const { AddContainerPostFix(String
); }
20 virtual truth
AddAdjective (festring
&, truth
) const;
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
) {
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();