I Will do the offset for you just don't know how you will use it. You can use the straighten code to remove vertices just rename WOW to some thing more useful.
Ok this is the crude start on how to do multi offsets enter values -ve is ok.
(defun c:moff ( / obj lst n)
(setq obj (vlax-ename->vla-object (car (entsel "\nPick pline "))))
(setq lst '())
(while (setq offnew (getreal "\nEnter a offset -ve for left Enter to exit "))
(setq lst (cons offnew lst))
)
(foreach n lst
(vl-catch-all-apply 'vlax-invoke (list obj 'offset n))
)
; n is offset value note - is ok
(princ)
)
I am a bit busy so will go back and add a offset and linetype answer.
It looks like the layers to use are.
Is this correct