diff -c -r imaze-1.4/source/X_tasten.c imaze-strafe/source/X_tasten.c
*** imaze-1.4/source/X_tasten.c	Mon Dec 10 01:47:34 2001
--- imaze-strafe/source/X_tasten.c	Thu Feb  3 10:17:52 2005
***************
*** 65,74 ****
  #define NICHT_ABGEFRAGT 2 /* Bit 1 bleibt gesetzt, bis ein Tastendruck
                               registriert wurde */
  
! /* die Cursor-Tasten haben eine Repeat-Funktion, alle anderen nicht */
  #define HAT_REPEAT(signalnr) \
  	((signalnr) == VORSIGNAL || (signalnr) == ZURUECKSIGNAL || \
! 	(signalnr) == LINKSSIGNAL || (signalnr) == RECHTSSIGNAL)
  
  
  struct arg_option X_eingabe_opts[] =
--- 65,75 ----
  #define NICHT_ABGEFRAGT 2 /* Bit 1 bleibt gesetzt, bis ein Tastendruck
                               registriert wurde */
  
! /* die Cursor-Tasten und Shift-Tasten haben eine Repeat-Funktion, alle anderen nicht */
  #define HAT_REPEAT(signalnr) \
  	((signalnr) == VORSIGNAL || (signalnr) == ZURUECKSIGNAL || \
! 	(signalnr) == LINKSSIGNAL || (signalnr) == RECHTSSIGNAL || \
! 	 (signalnr) == STRAFESIGNAL )
  
  
  struct arg_option X_eingabe_opts[] =
***************
*** 168,176 ****
  				return;
  			signalnr = STOPSIGNAL;
  			break;
- 		case XK_space: /* Leertaste */
  		case XK_Shift_L:
  		case XK_Shift_R:
  		case XK_Alt_L:
  		case XK_Alt_R:
  			signalnr = SCHUSSSIGNAL;
--- 169,180 ----
  				return;
  			signalnr = STOPSIGNAL;
  			break;
  		case XK_Shift_L:
  		case XK_Shift_R:
+ 		  signalnr = STRAFESIGNAL;
+ 		  break;
+ 		  
+ 		case XK_space: /* Leertaste */
  		case XK_Alt_L:
  		case XK_Alt_R:
  			signalnr = SCHUSSSIGNAL;
diff -c -r imaze-1.4/source/bewegung.c imaze-strafe/source/bewegung.c
*** imaze-1.4/source/bewegung.c	Mon Dec 10 01:47:36 2001
--- imaze-strafe/source/bewegung.c	Thu Feb  3 11:48:22 2005
***************
*** 59,64 ****
--- 59,69 ----
  static char sccsid[] = "@(#)bewegung.c	3.25 12/05/01";
  
  
+ /* Patched by Sebastian und Guenther */
+ #ifndef STRAFEFAKTOR
+ #define STRAFEFAKTOR (9)
+ #endif
+ 
  /* Schrittweite der Spieler (Default: Bruchteil der Breite eines Feldes) */
  #ifndef SCHRITT
  #define SCHRITT (RASPT / 10)
***************
*** 1440,1451 ****
  **  zurueck: 1, falls sich der Spieler rueckwaerts bewegen will, sonst 0
  **  links: 1, falls sich der Spieler nach links drehen will, sonst 0
  **  rechts: 1, falls sich der Spieler nach rechts drehen will, sonst 0
  **
  ** Seiteneffekte:
  **  *spieler wird veraendert
  */
  static void bewege_spieler(int spieler_nr, struct spieler *spieler, int vor,
! 	int zurueck, int links, int rechts)
  {
  	int rest_schritt;   /* Strecke, die der Spieler noch
  	                       zuruecklegen darf */
--- 1445,1457 ----
  **  zurueck: 1, falls sich der Spieler rueckwaerts bewegen will, sonst 0
  **  links: 1, falls sich der Spieler nach links drehen will, sonst 0
  **  rechts: 1, falls sich der Spieler nach rechts drehen will, sonst 0
+ **  strafe: 1, falls Strafe an ist
  **
  ** Seiteneffekte:
  **  *spieler wird veraendert
  */
  static void bewege_spieler(int spieler_nr, struct spieler *spieler, int vor,
! 	int zurueck, int links, int rechts, int strafe)
  {
  	int rest_schritt;   /* Strecke, die der Spieler noch
  	                       zuruecklegen darf */
***************
*** 1463,1484 ****
  	                       gelaufen werden soll */
  	int coswert;        /* Anteil der tatsaechlich zu laufenden Strecke */
  	struct korrektur korrektur; /* Parameter der Bahnkorrektur */
! 
  	/* erst drehen */
! 	spieler->blick = (spieler->blick + links - rechts + WINKANZ) % WINKANZ;
! 
  	/* weder vor noch zurueck? */
! 	if (vor == zurueck)
! 		/* dann fertig */
! 		return;
! 
  	/* Richtung feststellen, in die der Spieler laufen will */
! 	if (vor > zurueck)
! 		winkel = spieler->blick * (TRIGANZ / WINKANZ);
  	else
! 		winkel = (spieler->blick * (TRIGANZ / WINKANZ) +
! 			TRIGANZ / 2) % TRIGANZ;
  
  	/* rest_schritt initialisieren */
  	rest_schritt = SCHRITT;
  
--- 1469,1515 ----
  	                       gelaufen werden soll */
  	int coswert;        /* Anteil der tatsaechlich zu laufenden Strecke */
  	struct korrektur korrektur; /* Parameter der Bahnkorrektur */
! 	
! 	int ursprungswinkel;
! 	
! 	
! 	if (zurueck > vor)
! 	  {
! 	    int hinten;
! 	    hinten = links;
! 	    links = rechts;
! 	    rechts = hinten;
! 	  }
! 	
  	/* erst drehen */
! 	
! 	ursprungswinkel = spieler->blick;
! 	
! 	if (strafe)
! 	  {
! 	    if (vor != zurueck)
! 	      spieler->blick = (spieler->blick + (links - rechts)*STRAFEFAKTOR + WINKANZ) % WINKANZ;
! 	    else if (links != rechts)
! 	      spieler->blick = (spieler->blick + (links - rechts)*(WINKANZ/4) + WINKANZ) % WINKANZ;
! 	  }
! 	else
! 	  spieler->blick = (spieler->blick + links - rechts + WINKANZ) % WINKANZ;
! 	
! 	
  	/* weder vor noch zurueck? */
! 	if (vor == zurueck && ( !strafe || links==rechts ))
! 	      return;
! 	
  	/* Richtung feststellen, in die der Spieler laufen will */
! 	if (vor >= zurueck)
! 	  winkel = spieler->blick * (TRIGANZ / WINKANZ);
  	else
! 	  winkel = (spieler->blick * (TRIGANZ / WINKANZ) +
! 		    TRIGANZ / 2) % TRIGANZ;
  
+ 	if (strafe)
+ 	  spieler->blick = ursprungswinkel;
+ 	
  	/* rest_schritt initialisieren */
  	rest_schritt = SCHRITT;
  
***************
*** 2373,2381 ****
  
  	/* Spieler bewegen */
  	bewege_spieler(spieler_nr, &alle_spieler[spieler_nr],
! 		signale[VORSIGNAL], signale[ZURUECKSIGNAL],
! 		signale[LINKSSIGNAL], signale[RECHTSSIGNAL]);
! 
  	/* Schuss ausloesen?  Kameras duerfen nicht */
  	if (!ist_kamera[spieler_nr] && signale[SCHUSSSIGNAL])
  		schuss_ausloesen(spieler_nr, alle_spieler[spieler_nr].blick);
--- 2404,2413 ----
  
  	/* Spieler bewegen */
  	bewege_spieler(spieler_nr, &alle_spieler[spieler_nr],
! 		       signale[VORSIGNAL], signale[ZURUECKSIGNAL],
! 		       signale[LINKSSIGNAL], signale[RECHTSSIGNAL],
! 		       signale[STRAFESIGNAL]);
! 	
  	/* Schuss ausloesen?  Kameras duerfen nicht */
  	if (!ist_kamera[spieler_nr] && signale[SCHUSSSIGNAL])
  		schuss_ausloesen(spieler_nr, alle_spieler[spieler_nr].blick);
diff -c -r imaze-1.4/source/ip_netz.c imaze-strafe/source/ip_netz.c
*** imaze-1.4/source/ip_netz.c	Mon Dec 10 01:47:39 2001
--- imaze-strafe/source/ip_netz.c	Thu Feb  3 11:35:29 2005
***************
*** 71,77 ****
  
  /* Default-Hostname des Servers */
  #ifndef DEFAULT_SERVER
! #define DEFAULT_SERVER "imaze.rz.tu-clausthal.de"
  #endif
  
  #ifndef ADDRLEN_T
--- 71,77 ----
  
  /* Default-Hostname des Servers */
  #ifndef DEFAULT_SERVER
! #define DEFAULT_SERVER "localhost"
  #endif
  
  #ifndef ADDRLEN_T
diff -c -r imaze-1.4/source/signale.h imaze-strafe/source/signale.h
*** imaze-1.4/source/signale.h	Mon Dec 10 01:47:44 2001
--- imaze-strafe/source/signale.h	Thu Feb  3 10:39:57 2005
***************
*** 54,59 ****
  #define STOPSIGNAL      5    /* Spiel temporaer verlassen */
  #define WEITERSIGNAL    6    /* ins Spiel zurueckkehren */
  #define QUICKTURNSIGNAL 7    /* Spieler dreht sich um 180 Grad */
  
! #define AKTIONSSIGNALE  8 /* Offset */
  #define SIGNALANZ       (AKTIONSSIGNALE + AKTIONSSIGNALANZ)
--- 54,61 ----
  #define STOPSIGNAL      5    /* Spiel temporaer verlassen */
  #define WEITERSIGNAL    6    /* ins Spiel zurueckkehren */
  #define QUICKTURNSIGNAL 7    /* Spieler dreht sich um 180 Grad */
+ #define STRAFESIGNAL    8    /* Strafe-Modus an */
  
! /* FIXME: Stimmt das so? */
! #define AKTIONSSIGNALE  9 /* Offset */
  #define SIGNALANZ       (AKTIONSSIGNALE + AKTIONSSIGNALANZ)

