materials separated
[k8-i-v-a-n.git] / src / game / materias / material_liquid.cpp
blob0dd69c7b7431b7c1142d0976cbdcf377fd07725b
1 class lterrain;
4 #ifdef HEADER_PHASE
5 MATERIAL(liquid, material)
7 public:
8 virtual cchar* GetConsumeVerb() const;
9 virtual truth IsLiquid() const { return true; }
10 void TouchEffect(item*, cfestring&);
11 void TouchEffect(character*, int);
12 void TouchEffect(lterrain*);
13 liquid* SpawnMoreLiquid(sLong Volume) const { return static_cast<liquid*>(SpawnMore(Volume)); }
17 #else
21 cchar* liquid::GetConsumeVerb() const { return "drinking"; }
25 void liquid::TouchEffect(item* Item, cfestring& LocationName)
27 if(GetRustModifier())
28 Item->TryToRust(GetRustModifier() * GetVolume());
30 if(GetAcidicity())
31 Item->ReceiveAcid(this, LocationName, Volume * GetAcidicity());
33 character* Char = Item->GetBodyPartMaster();
35 if(Char)
36 Effect(Char, Item->GetBodyPartIndex(), Volume >> 6);
41 void liquid::TouchEffect(lterrain* Terrain)
43 if(GetRustModifier())
44 Terrain->TryToRust(GetRustModifier() * GetVolume());
46 if(GetAcidicity())
47 Terrain->ReceiveAcid(this, Volume * GetAcidicity());
52 void liquid::TouchEffect(character* Char, int BodyPartIndex)
54 if(GetRustModifier())
55 Char->GetBodyPart(BodyPartIndex)->TryToRust(GetRustModifier() * GetVolume());
57 if(Char->IsEnabled() && GetAcidicity())
58 Char->GetBodyPart(BodyPartIndex)->ReceiveAcid(this, CONST_S(""), Volume * GetAcidicity() >> 1);
60 if(Char->IsEnabled())
61 Effect(Char, BodyPartIndex, Volume >> 9);
63 #endif