2 ITEM(can
, materialcontainer
)
5 virtual item
*BetterVersion () const;
6 virtual void DipInto (liquid
*, character
*);
7 virtual truth
IsDippable (ccharacter
*) const { return !SecondaryMaterial
; }
8 virtual truth
IsDipDestination (ccharacter
*) const;
9 virtual truth
IsDumpable (ccharacter
*) const { return SecondaryMaterial
!= 0; }
10 virtual liquid
*CreateDipLiquid ();
11 virtual truth
AllowSpoil () const { return false; } // temporary
12 virtual truth
Spoils () const { return false; } // temporary
13 virtual truth
HasBetterVersion () const { return !SecondaryMaterial
; }
14 virtual truth
IsCan () const { return true; }
16 virtual void AddPostFix (festring
&String
, int) const { AddContainerPostFix(String
); }
17 virtual truth
AddAdjective (festring
&, truth
) const;
18 virtual v2
GetBitmapPos (int) const;
25 truth
can::AddAdjective (festring
&String
, truth Articled
) const { return AddEmptyAdjective(String
, Articled
); }
26 v2
can::GetBitmapPos (int) const { return v2(16, SecondaryMaterial
? 288 : 304); }
27 truth
can::IsDipDestination (ccharacter
*) const { return SecondaryMaterial
&& SecondaryMaterial
->IsLiquid(); }
28 liquid
*can::CreateDipLiquid () { return static_cast<liquid
*>(GetSecondaryMaterial()->TakeDipVolumeAway()); }
32 item
*can::BetterVersion () const {
33 if (!GetSecondaryMaterial()) return can::Spawn();
38 void can::DipInto (liquid
*Liquid
, character
*Dipper
) {
40 if (Dipper
->IsPlayer()) ADD_MESSAGE("%s is now filled with %s.", CHAR_NAME(DEFINITE
), Liquid
->GetName(false, false).CStr());
41 ChangeSecondaryMaterial(Liquid
);
42 Dipper
->DexterityAction(10);