まずgdスクリプトの元になったPythonを少し囓ってきたほうがいいとは思うけど
>このセッターの引数の(color)は何の名前でもいいわけだけど、これは宣言もしてない空の変数ですよね?
ここが既に間違いで
>func set_color(color):
でcolorは定義されてる
varが無いやろがと言いたいのかもしれないけど関数名横の()内ではvarは省略して書く文法になってる

基本的な文法やイベント発火順序がわかってないように見える
文法をきちんと学習してから取りかかるか、
変更前後でデバッグで1行ずつ実行して関連する変数をウォッチしながら挙動を掴んだ方がいいよ