anchor.diff:        gicArmyAttackUnit:   srcGroup.OrderAttackUnit(tgtUnit, True);
         gicArmyAttackHouse:  srcGroup.OrderAttackHouse(tgtHouse, True);
         gicArmyHalt:         srcGroup.OrderHalt(True);
  -      gicArmyFormation:    srcGroup.OrderFormation(TKMTurnDirection(Params[2]),Params[3], True);
  -      gicArmyWalk:         srcGroup.OrderWalk(KMPoint(Params[2],Params[3]), True, wtokPlayerOrder, TKMDirection(Params[4]));
  +      gicArmyFormation:    srcGroup.OrderFormation(TKMTurnDirection(Params[1]),Params[2], True);
  +      gicArmyWalk:         srcGroup.OrderWalk(KMPoint(Params[1],Params[2]), True, wtokPlayerOrder, TKMDirection(Params[3]));
   
         gicUnitDismiss:        srcUnit.Dismiss;
         gicUnitDismissCancel:  srcUnit.DismissCancel;
   
  -      gicBuildToggleFieldPlan:   P.ToggleFieldPlan(KMPoint(Params[1],Params[2]), TKMFieldType(Params[3]), not gGameParams.IsMultiPlayerOrSpec); //Make sound in singleplayer mode only
  -      gicBuildRemoveFieldPlan:   P.RemFieldPlan(KMPoint(Params[1],Params[2]), not gGameParams.IsMultiPlayerOrSpec); //Make sound in singleplayer mode only
  -      gicBuildRemoveHouse:       P.RemHouse(KMPoint(Params[1],Params[2]), isSilent);
  -      gicBuildRemoveHousePlan:   P.RemHousePlan(KMPoint(Params[1],Params[2]));
  -      gicBuildHousePlan:         if P.CanAddHousePlan(KMPoint(Params[2],Params[3]), TKMHouseType(Params[1])) then
  -                                    P.AddHousePlan(TKMHouseType(Params[1]), KMPoint(Params[2],Params[3]));
  +      gicBuildToggleFieldPlan:   P.ToggleFieldPlan(KMPoint(Params[0],Params[1]), TKMFieldType(Params[2]), not gGameParams.IsMultiPlayerOrSpec); //Make sound in singleplayer mode only
  +      gicBuildRemoveFieldPlan:   P.RemFieldPlan(KMPoint(Params[0],Params[1]), not gGameParams.IsMultiPlayerOrSpec); //Make sound in singleplayer mode only
  +      gicBuildRemoveHouse:       P.RemHouse(KMPoint(Params[0],Params[1]), isSilent);
  +      gicBuildRemoveHousePlan:   P.RemHousePlan(KMPoint(Params[0],Params[1]));
  +      gicBuildHousePlan:         if P.CanAddHousePlan(KMPoint(Params[1],Params[2]), TKMHouseType(Params[0])) then
  +                                    P.AddHousePlan(TKMHouseType(Params[0]), KMPoint(Params[1],Params[2]));
   
         gicHouseRepairToggle:      srcHouse.BuildingRepair := not srcHouse.BuildingRepair;
         gicHouseDeliveryModeNext:   //Delivery mode has to be delayed, to avoid occasional delivery mode button clicks
  
positive.code:                  GetEnumName(TypeInfo(TKMGameInputCommandPackType), Integer(COMMAND_PACK_TYPES[aGIC]))]));
    Result := MakeEmptyCommand(aGIC);
    Result.AnsiStrParam := aAnsiTxtParam;
    Result.Params[1] := aParam1;
    Result.Params[2] := aParam2;
  end;
  
  
  
negative.code:     aMemoryStream.Read(CommandType, SizeOf(CommandType));
      case COMMAND_PACK_TYPES[CommandType] of
        gicpt_NoParams: ;
        gicpt_Int1:     aMemoryStream.Read(Params[0]);
        gicpt_Int2:     begin
                          aMemoryStream.Read(Params[0]);
                          aMemoryStream.Read(Params[1]);
                        end;
        gicpt_Int3:     begin
                          aMemoryStream.Read(Params[0]);
                          aMemoryStream.Read(Params[1]);
                          aMemoryStream.Read(Params[2]);
                        end;
        gicpt_Int4:     begin
                          aMemoryStream.Read(Params[0]);
                          aMemoryStream.Read(Params[1]);
                          aMemoryStream.Read(Params[2]);
                          aMemoryStream.Read(Params[3]);
                        end;
        gicpt_Ansi1Int2:begin
                          aMemoryStream.ReadA(AnsiStrParam);
                          aMemoryStream.Read(Params[0]);
                          aMemoryStream.Read(Params[1]);
                        end;
        gicpt_Float:    aMemoryStream.Read(FloatParam);
        gicpt_UniStr1:  aMemoryStream.ReadW(UnicodeStrParams[0]);
        gicpt_Ansi1Uni4:begin
                          aMemoryStream.ReadA(AnsiStrParam);
                          aMemoryStream.ReadW(UnicodeStrParams[0]);
                          aMemoryStream.ReadW(UnicodeStrParams[0]);
                          aMemoryStream.ReadW(UnicodeStrParams[1]);
                          aMemoryStream.ReadW(UnicodeStrParams[2]);
                        end;
        gicpt_Date:     aMemoryStream.Read(DateTimeParam);
      end;
  