(local util (require :lib.util)) (local actions (require :editor.actions)) (local {: textbox : dropdown } (util.require :editor.imstate)) (local files (require :game.files)) (local lume (require :lib.lume)) (local style (require :core.style)) (actions.register :say (fn [action view x y w i] (let [characters (lume.map files.game.portraits #$1.label) character (or action.character (. characters 1)) lines (or action.lines []) (character y) (dropdown view [:say :char i] character characters x (+ y style.padding.y) 300) (line1 y) (textbox view [:say :line1 i] (. lines 1) x (+ y style.padding.y) 300) (line2 y) (textbox view [:say :line2 i] (. lines 2) x y 300) (line3 y) (textbox view [:say :line3 i] (. lines 3) x y 300) (line4 y) (textbox view [:say :line4 i] (. lines 4) x y 300) ] (set action.character character) (util.nested-tset action [:lines 1] line1) (util.nested-tset action [:lines 2] line2) (util.nested-tset action [:lines 3] line3) (util.nested-tset action [:lines 4] line4) y)) (fn [action vm] (local {: say} (require :game.defs)) (say action.character (table.unpack (lume.map action.lines #($1:upper)))))) {}