5 virtual truth
HitEffect (character
*, character
*, v2
, int, int, truth
);
6 //virtual truth Zap (character *, v2, int);
7 //virtual void Be () {}
8 virtual int GetSpecialFlags () const;
9 virtual void AddInventoryEntry (ccharacter
*, festring
&, int, truth
) const;
10 virtual truth
ReceiveDamage (character
*, int, int, int);
11 virtual truth
IsMango () const { return true; }
18 int holymango::GetSpecialFlags () const { return ST_FLAME_1
; }
21 truth
holymango::HitEffect (character
*Enemy
, character
*Hitter
, v2 HitPos
, int BodyPartIndex
, int Direction
, truth BlockedByArmour
) {
22 truth BaseSuccess
= 1;//mango::HitEffect(Enemy, Hitter, HitPos, BodyPartIndex, Direction, BlockedByArmour);
24 if (Enemy
->IsEnabled() && RAND() & 1) {
25 if (Enemy
->IsPlayer() || Hitter
->IsPlayer() || Enemy
->CanBeSeenByPlayer() || Hitter
->CanBeSeenByPlayer()) {
26 ADD_MESSAGE("%s mango burns %s.", Hitter
->CHAR_POSSESSIVE_PRONOUN
, Enemy
->CHAR_DESCRIPTION(DEFINITE
));
28 return Enemy
->ReceiveBodyPartDamage(Hitter
, 2 + (RAND() & 3), FIRE
, BodyPartIndex
, Direction
) || BaseSuccess
;
35 truth holymango::Zap (character *Zapper, v2, int Direction) {
36 if (Charges > TimesUsed) {
37 ADD_MESSAGE("BANG! You zap %s!", CHAR_NAME(DEFINITE));
38 Zapper->EditExperience(PERCEPTION, 150, 1 << 10);
41 CONST_S("killed by ") + GetName(INDEFINITE),
49 (GetLevel()->*level::GetBeam(PARTICLE_BEAM))(Beam);
52 ADD_MESSAGE("Click!");
60 void holymango::AddInventoryEntry (ccharacter
*Viewer
, festring
& Entry
, int, truth ShowSpecialInfo
) const {
61 AddName(Entry
, INDEFINITE
);
62 if (ShowSpecialInfo
) {
63 Entry
<< " [" << GetWeight() << "g, DAM " << GetBaseMinDamage() << '-' << GetBaseMaxDamage();
64 Entry
<< ", " << GetBaseToHitValueDescription();
65 if (!IsBroken()) Entry
<< ", " << GetStrengthValueDescription();
66 int CWeaponSkillLevel
= Viewer
->GetCWeaponSkillLevel(this);
67 int SWeaponSkillLevel
= Viewer
->GetSWeaponSkillLevel(this);
68 if (CWeaponSkillLevel
|| SWeaponSkillLevel
) Entry
<< ", skill " << CWeaponSkillLevel
<< '/' << SWeaponSkillLevel
;
74 truth
holymango::ReceiveDamage (character
*Damager
, int Damage
, int Type
, int) {
75 if (Type
& (PHYSICAL_DAMAGE
|FIRE
|ENERGY
) && Damage
&& (Damage
> 50 || !(RAND()%(100/Damage
)))) {
76 lsquare
*Square
= GetLSquareUnder();
77 festring DeathMsg
= CONST_S("killed by an explosion of ");
79 AddName(DeathMsg
, INDEFINITE
);
80 if (Damager
) DeathMsg
<< " caused @bk";
81 if (GetSquareUnder()->CanBeSeenByPlayer(true)) ADD_MESSAGE("%s explodes!", GetExtendedDescription().CStr());
84 Square
->GetLevel()->Explosion(Damager
, DeathMsg
, Square
->GetPos(), 6*50);