changeset 152:0c775afe0072

arogue7, xrogue: fix command repetition. In both games, command() loops and calls the action function twice for each command: once to schedule it by setting player.t_action and player.t_no_move, and again, to actually do it, once player.t_no_move has been reduced to 0. Each loop decremented count, so repeated commands were only repeated half the number of times the player typed. count is now decremented only when ch has been set to the repeated command.
author John "Elwin" Edwards
date Thu, 28 May 2015 11:08:03 -0400
parents cadff8f047a1
children 23fff8f7b303
files arogue7/command.c xrogue/command.c
diffstat 2 files changed, 2 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/arogue7/command.c	Thu May 28 10:21:43 2015 -0400
+++ b/arogue7/command.c	Thu May 28 11:08:03 2015 -0400
@@ -192,7 +192,7 @@
 		/*
 		 * execute a command
 		 */
-		if (count && !running)
+		if (count && !running && player.t_action == A_NIL)
 		    count--;
 		switch (ch) {
 		    case '!' : shell();
--- a/xrogue/command.c	Thu May 28 10:21:43 2015 -0400
+++ b/xrogue/command.c	Thu May 28 11:08:03 2015 -0400
@@ -185,7 +185,7 @@
                 /*
                  * execute a command
                  */
-                if (count && !running)
+                if (count && !running && player.t_action == A_NIL)
                     count--;
 
                 switch (ch) {