`RandomChance` type, and two new item fields: `MagicEffectChance`, `MagicEffectDuration`
[k8-i-v-a-n.git] / src / game / gears / meleeweapon_slowaxe.cpp
blob90435220ae35a966bf28fd054b3dec5fc1f178c3
1 #ifdef HEADER_PHASE
2 ITEM(slowaxe, meleeweapon)
4 public:
5 virtual truth HitEffect(character*, character*, v2, int, int, truth);
6 };
9 #else
12 truth slowaxe::HitEffect (character *Enemy, character *Hitter, v2 HitPos, int BodyPartIndex, int Direction, truth BlockedByArmour) {
13 truth BaseSuccess = meleeweapon::HitEffect(Enemy, Hitter, HitPos, BodyPartIndex, Direction, BlockedByArmour);
14 //fprintf(stderr, "chance: rnd=%d; add=%d; min=%d; max=%d\n", GetMagicEffectChance().rnd, GetMagicEffectChance().add, GetMagicEffectChance().rmin, GetMagicEffectChance().rmax);
15 //fprintf(stderr, "duration: rnd=%d; add=%d; min=%d; max=%d\n", GetMagicEffectDuration().rnd, GetMagicEffectDuration().add, GetMagicEffectDuration().rmin, GetMagicEffectDuration().rmax);
16 //fprintf(stderr, "dur=%d\n", GetMagicEffectDuration().rand());
17 if (/*!IsBroken() &&*/ Enemy->IsEnabled() && /*!(RAND()%3)*/GetMagicEffectChance().inRange()) {
18 if (Hitter) {
19 if (Enemy->IsPlayer() || Hitter->IsPlayer() || Enemy->CanBeSeenByPlayer() || Hitter->CanBeSeenByPlayer()) {
20 ADD_MESSAGE("%s axe chills %s.", Hitter->CHAR_POSSESSIVE_PRONOUN, Enemy->CHAR_DESCRIPTION(DEFINITE));
22 } else {
23 if (Enemy->IsPlayer() || Enemy->CanBeSeenByPlayer()) {
24 ADD_MESSAGE("The axe chills %s.", Enemy->CHAR_DESCRIPTION(DEFINITE));
27 //Enemy->BeginTemporaryState(SLOW, 400+RAND_N(200));
28 Enemy->BeginTemporaryState(SLOW, GetMagicEffectDuration().rand()); //400+RAND_N(200)
29 return BaseSuccess;
31 return BaseSuccess;
35 #endif