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)