}
}
-void AbstractWeaponEnchanter::apply_magic()
+/*!
+ * @brief 武器に殺戮修正を付与する
+ */
+void AbstractWeaponEnchanter::give_killing_bonus()
{
if (this->should_skip) {
return;
}
- this->prepare_application();
-}
-
-void AbstractWeaponEnchanter::prepare_application()
-{
auto tohit1 = static_cast<short>(randint1(5) + m_bonus(5, this->level));
auto todam1 = static_cast<short>(randint1(5) + m_bonus(5, this->level));
auto tohit2 = static_cast<short>(m_bonus(10, this->level));
int power;
bool should_skip = false;
- virtual void apply_magic();
+ void give_killing_bonus();
virtual void decide_skip();
-
-private:
- void prepare_application();
};
return;
}
+ this->give_killing_bonus();
if (this->power > 1) {
if (this->power > 2) {
become_random_artifact(this->player_ptr, this->o_ptr, false);
return;
}
+ this->give_killing_bonus();
if (this->power > 1) {
if ((this->power > 2) || one_in_(20)) {
become_random_artifact(this->player_ptr, this->o_ptr, false);
return;
}
+ this->give_killing_bonus();
if (this->power > 1) {
if ((this->power > 2) || one_in_(30)) {
become_random_artifact(this->player_ptr, this->o_ptr, false);
{
}
+void HaftedEnchanter::apply_magic()
+{
+ this->decide_skip();
+ MeleeWeaponEnchanter::apply_magic();
+}
+
void HaftedEnchanter::give_ego_index()
{
while (true) {
public:
HaftedEnchanter(PlayerType *player_ptr, ObjectType *o_ptr, DEPTH level, int power);
+ void apply_magic() override;
+
protected:
void sval_enchant() override{};
void give_ego_index() override;
{
}
+void PolearmEnchanter::apply_magic()
+{
+ this->decide_skip();
+ MeleeWeaponEnchanter::apply_magic();
+}
+
void PolearmEnchanter::decide_skip()
{
AbstractWeaponEnchanter::decide_skip();
public:
PolearmEnchanter(PlayerType *player_ptr, ObjectType *o_ptr, DEPTH level, int power);
+ void apply_magic() override;
+
protected:
void decide_skip() override;
void sval_enchant() override{};
void SwordEnchanter::decide_skip()
{
AbstractWeaponEnchanter::decide_skip();
- this->should_skip |= this->o_ptr->sval == SV_DIAMOND_EDGE;
this->should_skip |= this->o_ptr->sval == SV_POISON_NEEDLE;
}
+void SwordEnchanter::apply_magic()
+{
+ this->decide_skip();
+ if (this->should_skip) {
+ return;
+ }
+
+ this->give_killing_bonus();
+ if (this->o_ptr->sval == SV_DIAMOND_EDGE) {
+ return;
+ }
+
+ MeleeWeaponEnchanter::apply_magic();
+}
+
void SwordEnchanter::give_ego_index()
{
while (true) {
public:
SwordEnchanter(PlayerType *player_ptr, ObjectType *o_ptr, DEPTH level, int power);
+ void apply_magic() override;
+
protected:
void decide_skip() override;
void sval_enchant() override{};
*/
void MeleeWeaponEnchanter::apply_magic()
{
- this->decide_skip();
- AbstractWeaponEnchanter::apply_magic();
if (this->should_skip) {
return;
}
PlayerType *player_ptr;
+ void prepare_magic_application();
+
private:
void strengthen();
};