diff -u3 murk++stk/commands.cpp murk++mod/commands.cpp --- murk++stk/commands.cpp 2011-06-11 01:12:58.000000000 -0500 +++ murk++mod/commands.cpp 2014-09-01 15:56:28.000000000 -0500 @@ -160,7 +160,13 @@ wait_state (1 * PULSE_VIOLENCE); check_killer (this, victim); - multi_hit (this, victim, TYPE_UNDEFINED); + //multi_hit (this, victim, TYPE_UNDEFINED); + // defensive first strike + NORMALLY__UNLESS__THEN__( + multi_hit (this, victim, TYPE_UNDEFINED), + victim->get_curr_dex() > this->get_curr_dex() && victim->can_see(this) && victim->position == POS_STANDING, + multi_hit (victim, this, TYPE_UNDEFINED) + ); return; } @@ -209,7 +215,13 @@ buf += "Help! I am being attacked by " + name + "!"; victim->do_shout (buf); check_killer (this, victim); - multi_hit (this, victim, TYPE_UNDEFINED); + //multi_hit (this, victim, TYPE_UNDEFINED); + // defensive first strike + NORMALLY__UNLESS__THEN__( + multi_hit (this, victim, TYPE_UNDEFINED), + victim->get_curr_dex() > this->get_curr_dex() && victim->can_see(this) && victim->position == POS_STANDING, + multi_hit (victim, this, TYPE_UNDEFINED) + ); return; } diff -u3 murk++stk/config.hpp murk++mod/config.hpp --- murk++stk/config.hpp 2012-06-11 20:59:50.000000000 -0500 +++ murk++mod/config.hpp 2014-09-01 15:49:56.000000000 -0500 @@ -456,6 +456,7 @@ #define IS_SET(flag, bit) ((flag) & (bit)) #define SET_BIT(var, bit) ((var) |= (bit)) #define REMOVE_BIT(var, bit) ((var) &= ~(bit)) +#define NORMALLY__UNLESS__THEN__(a, b, c) (b ? c : a) /* file read macro */ #if defined(KEY)