fix for https://github.com/Attnam/ivan/issues/119
[k8-i-v-a-n.git] / src / game / items / item_brokenbottle.cpp
blob06788631be5f6c408ee1f41da8ea0fa4023d3f95
1 #ifdef HEADER_PHASE
2 ITEM(brokenbottle, item)
4 public:
5 virtual truth IsBroken() const { return true; }
6 virtual item* BetterVersion() const;
7 virtual truth HasBetterVersion() const { return true; }
8 virtual void StepOnEffect(character*);
9 virtual item* Fix();
10 virtual truth IsDangerous(ccharacter*) const;
11 virtual truth IsBottle () const { return true; }
15 #else
19 truth brokenbottle::IsDangerous(ccharacter* Stepper) const { return Stepper->HasALeg(); }
23 item* brokenbottle::BetterVersion() const
25 return potion::Spawn();
30 void brokenbottle::StepOnEffect(character* Stepper)
32 if(Stepper->HasALeg() && !(RAND() % 5))
34 if(Stepper->IsPlayer())
35 ADD_MESSAGE("Ouch. You step on sharp glass splinters.");
36 else if(Stepper->CanBeSeenByPlayer())
37 ADD_MESSAGE("%s steps on sharp glass splinters.", Stepper->CHAR_NAME(DEFINITE));
39 Stepper->ReceiveDamage(0, 1 + RAND() % 3, PHYSICAL_DAMAGE, LEGS);
40 Stepper->CheckDeath(CONST_S("stepped on a broken bottle"), 0);
46 item* brokenbottle::Fix()
48 potion* Potion = potion::Spawn(0, NO_MATERIALS);
49 Potion->InitMaterials(GetMainMaterial(), 0);
50 DonateFluidsTo(Potion);
51 DonateIDTo(Potion);
52 DonateSlotTo(Potion);
53 SetMainMaterial(0, NO_PIC_UPDATE|NO_SIGNALS);
54 SendToHell();
55 return Potion;
57 #endif