DEFINE_ACTION_FUNCTION(AActor, A_JabDagger) { angle_t angle; int damage; int pitch; int power; AActor *linetarget; power = MIN(10, self->player->mo->stamina / 10); damage = (pr_jabdagger() % (power + 8)) * (power + 2); if (self->FindInventory<APowerStrength>()) { damage *= 10; } angle = self->angle + (pr_jabdagger.Random2() << 18); pitch = P_AimLineAttack (self, angle, 80*FRACUNIT, &linetarget); P_LineAttack (self, angle, 80*FRACUNIT, pitch, damage, NAME_Melee, "StrifeSpark", true, &linetarget); // turn to face target if (linetarget) { S_Sound (self, CHAN_WEAPON, linetarget->flags & MF_NOBLOOD ? "misc/metalhit" : "misc/meathit", 1, ATTN_NORM); self->angle = self->AngleTo(linetarget); self->flags |= MF_JUSTATTACKED; P_DaggerAlert (self, linetarget); } else { S_Sound (self, CHAN_WEAPON, "misc/swish", 1, ATTN_NORM); } }
DEFINE_ACTION_FUNCTION(AActor, A_JabDagger) { PARAM_ACTION_PROLOGUE; DAngle angle; int damage; DAngle pitch; int power; FTranslatedLineTarget t; power = MIN(10, self->player->mo->stamina / 10); damage = (pr_jabdagger() % (power + 8)) * (power + 2); if (self->FindInventory<APowerStrength>()) { damage *= 10; } angle = self->Angles.Yaw + pr_jabdagger.Random2() * (5.625 / 256); pitch = P_AimLineAttack (self, angle, 80.); P_LineAttack (self, angle, 80., pitch, damage, NAME_Melee, "StrifeSpark", true, &t); // turn to face target if (t.linetarget) { S_Sound (self, CHAN_WEAPON, t.linetarget->flags & MF_NOBLOOD ? "misc/metalhit" : "misc/meathit", 1, ATTN_NORM); self->Angles.Yaw = t.angleFromSource; self->flags |= MF_JUSTATTACKED; P_DaggerAlert (self, t.linetarget); } else { S_Sound (self, CHAN_WEAPON, "misc/swish", 1, ATTN_NORM); } return 0; }