You need to use (initget 128 ) for your option to work.
I added a Flip option to this routine for you to try. Did not do much error checking.
;;; MOCOROSC.lsp
;;; Move, Copy, Rotate, Scale the selection set.
;;;
;;; This routine makes use of the express tools routines acet-ss-drag-move,
;;; acet-ss-drag-rotate, acet-ss-drag-scale, found in "acetutil.arx" and
;;; assumes it has been loaded with (arxload "acetutil").
;;; Parameters passed to this routine are the selection set of objects and
;;; a base point. Nothing is returned by this routine.
;;;
(defun mocorosc (ss p1 / na p2 n d p lst j p3)
(setq p2 t)
(setq n 0)
;; *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
;; Main Loop
;; *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
(while p2
(setq na (entlast))
(if (not lst)
(setq lst (list (list ss p1)))
) ;if
(setvar "lastpoint" p1)
(acet-ss-redraw ss 3)
(initget 128 "Rotate Scale Base Undo eXit")
(setq p2 (acet-ss-drag-move
ss
p1
"\nSecond point or \n[Rotate/Scale/Base/Flip/Undo] <exit>: "
nil
) ;acet-ss-drag-move
) ;setq
(acet-ss-redraw ss 4)
;; if p2 is a point a copy is made
(if (= p2 "eXit")
(setq p2 nil)
) ;if
(cond
((= p2 "Undo")
(if (= n 0)
(princ "\nNothing to undo.")
(progn
(command "_.undo" "1")
(setq n (- n 1)
lst (cdr lst)
ss (car lst)
p1 (cadr ss)
ss (car ss)
) ;setq
) ;progn else
) ;if
) ;cond #1
;;=================== SCALE ======================
((= p2 "Scale")
(initget 128 "Rotate Scale Base Undo eXit")
(setq p2 (acet-ss-drag-scale
ss
p1
"\nSecond point or \n[Rotate/Scale/Base/Undo] <exit>: "
nil
) ;acet-ss-drag-move
) ;setq
(if (and (= (type p2) 'real) (/= p2 0))
(progn
(command "_.scale" ss "" p1 p2)
(setq n (+ n 1)
lst (cons (list ss p1) lst)
) ;setq
)
)
) ;cond #2
;;=================== COPY ======================
((equal 'list (type p2))
(command "_.copy" ss "" p1 p2)
(setq n (+ n 1)
ss (acet-ss-new na)
p1 p2
lst (cons (list ss p1) lst)
) ;setq
) ;cond #3
;;=================== ROTATE ======================
((= p2 "Rotate")
(initget 128 "Rotate Scale Base Undo eXit")
(setq p2 (acet-ss-drag-rotate
ss
p1
"\nSecond point or \n[Rotate/Scale/Base/Undo] <exit>: "
nil
) ;acet-ss-drag-move
) ;setq
(if (= (type p2) 'real)
(progn
(command "_.rotate" ss "" p1 (* 180.0 (/ p2 pi)))
(setq n (+ n 1)
lst (cons (list ss p1) lst)
) ;setq
)
)
) ;cond #4
;;=================== BASE ======================
((= p2 "Base")
(setq p (getpoint "\nPick a new Base Point."))
(if (and p (= (type p) 'list))
(setq p1 p
n (+ n 1)
lst (cons (list ss p1) lst)
)
)
) ;cond #5
;;=================== FLIP ======================
((member p2 '("f" "F"))
(command "_.mirror" ss "" "non" p1 "non" (polar p1 (/ pi 2) 10) "Y")
)
;;=================== ERROR ======================
(p2
(princ "\nInvalid input.")
) ;cond #6
) ;cond close
) ;while
;; *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
) ;defun
(defun c:test (/ ss p)
(prompt "\nSelect objects:")
(if (and (setq ss (ssget))
(setq p (getpoint "\Pick base point:"))
)
(mocorosc ss p)
)
(princ)
)