2 ITEM(brokenbottle
, item
)
5 virtual truth
IsBroken() const { return true; }
6 virtual item
* BetterVersion() const;
7 virtual truth
HasBetterVersion() const { return true; }
8 virtual void StepOnEffect(character
*);
10 virtual truth
IsDangerous(ccharacter
*) const;
11 virtual truth
IsBottle () const { return true; }
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
);
53 SetMainMaterial(0, NO_PIC_UPDATE
|NO_SIGNALS
);