mirror of
https://github.com/open-goal/jak-project
synced 2026-05-25 07:23:19 -04:00
87be9ebd14
Fixes #2993
3333 lines
131 KiB
Common Lisp
3333 lines
131 KiB
Common Lisp
;;-*-Lisp-*-
|
|
(in-package goal)
|
|
|
|
;; name: script.gc
|
|
;; name in dgo: script
|
|
;; dgos: ENGINE, GAME
|
|
|
|
(declare-type script-form structure)
|
|
(define-extern *script-form* (inline-array script-form))
|
|
|
|
(with-pp
|
|
|
|
;; DECOMP BEGINS
|
|
|
|
(defun command-get-int ((arg0 object) (arg1 int))
|
|
(cond
|
|
((null? arg0)
|
|
(empty)
|
|
arg1
|
|
)
|
|
((type? arg0 binteger)
|
|
(the-as int (/ (the-as int arg0) 8))
|
|
)
|
|
((type? arg0 bfloat)
|
|
(the int (-> (the-as bfloat arg0) data))
|
|
)
|
|
(else
|
|
(empty)
|
|
arg1
|
|
)
|
|
)
|
|
)
|
|
|
|
(defun command-get-float ((arg0 object) (arg1 float))
|
|
(cond
|
|
((null? arg0)
|
|
(empty)
|
|
arg1
|
|
)
|
|
((type? arg0 binteger)
|
|
(the float (/ (the-as int arg0) 8))
|
|
)
|
|
((type? arg0 bfloat)
|
|
(-> (the-as bfloat arg0) data)
|
|
)
|
|
(else
|
|
(empty)
|
|
arg1
|
|
)
|
|
)
|
|
)
|
|
|
|
;; WARN: Return type mismatch int vs time-frame.
|
|
(defun command-get-time ((arg0 object) (arg1 int))
|
|
(the-as time-frame (cond
|
|
((null? arg0)
|
|
(empty)
|
|
arg1
|
|
)
|
|
((and (pair? arg0) (= (car arg0) 'seconds))
|
|
(the int (* 300.0 (command-get-float (car (cdr arg0)) 0.0)))
|
|
)
|
|
((and (pair? arg0) (= (car arg0) 'frame-time))
|
|
(the int (* 5.0000005 (command-get-float (car (cdr arg0)) 0.0)))
|
|
)
|
|
((and (pair? arg0) (= (car arg0) 'frame-time-30))
|
|
(the int (* 10.000001 (command-get-float (car (cdr arg0)) 0.0)))
|
|
)
|
|
((and (pair? arg0) (= (car arg0) 'frame-range))
|
|
(let ((f30-3 (command-get-float (car (cdr arg0)) 0.0))
|
|
(f28-0 (command-get-float (car (cdr (cdr arg0))) 0.0))
|
|
(f0-9 (command-get-float (car (cdr (cdr (cdr arg0)))) 0.0))
|
|
)
|
|
(if (= f0-9 0.0)
|
|
(set! f0-9 30.0)
|
|
)
|
|
(the int (* 300.0 (/ (- f28-0 f30-3) f0-9)))
|
|
)
|
|
)
|
|
((type? arg0 binteger)
|
|
(the-as int (/ (the-as int arg0) 8))
|
|
)
|
|
((type? arg0 bfloat)
|
|
(the int (-> (the-as (pointer float) arg0) 0))
|
|
)
|
|
(else
|
|
(empty)
|
|
arg1
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(defun command-get-param ((arg0 object) (arg1 object))
|
|
(cond
|
|
((null? arg0)
|
|
arg1
|
|
)
|
|
((and (pair? arg0) (= (car arg0) 'seconds))
|
|
(the int (* 300.0 (command-get-float (car (cdr arg0)) 0.0)))
|
|
)
|
|
((and (pair? arg0) (= (car arg0) 'meters))
|
|
(* 4096.0 (command-get-float (car (cdr arg0)) 0.0))
|
|
)
|
|
((and (pair? arg0) (= (car arg0) 'deg))
|
|
(* 182.04445 (command-get-float (car (cdr arg0)) 0.0))
|
|
)
|
|
((and (pair? arg0) (= (car arg0) 'static-vectorm))
|
|
(let ((s4-0 (the-as object (new 'static 'vector4))))
|
|
(set-vector!
|
|
(the-as vector4 s4-0)
|
|
(* 4096.0 (command-get-float (car (cdr arg0)) 0.0))
|
|
(* 4096.0 (command-get-float (car (cdr (cdr arg0))) 0.0))
|
|
(* 4096.0 (command-get-float (car (cdr (cdr (cdr arg0)))) 0.0))
|
|
1.0
|
|
)
|
|
s4-0
|
|
)
|
|
)
|
|
((type? arg0 binteger)
|
|
(/ (the-as int arg0) 8)
|
|
)
|
|
((type? arg0 bfloat)
|
|
(-> (the-as (pointer float) arg0) 0)
|
|
)
|
|
(else
|
|
arg0
|
|
)
|
|
)
|
|
)
|
|
|
|
(defun command-get-quoted-param ((arg0 object) (arg1 object))
|
|
(if (and (pair? arg0) (= (car arg0) 'quote))
|
|
(command-get-param (car (cdr arg0)) arg1)
|
|
(command-get-param arg0 arg1)
|
|
)
|
|
)
|
|
|
|
;; WARN: Return type mismatch object vs process.
|
|
;; ERROR: Failed load: (set! v1-23 (l.wu 0)) at op 104
|
|
;; WARN: Using new Jak 2 rtype-of
|
|
(defun command-get-process ((arg0 object) (arg1 process))
|
|
(with-pp
|
|
(set! arg1
|
|
(cond
|
|
((or (null? arg0) (not arg0))
|
|
(empty)
|
|
arg1
|
|
)
|
|
((or (type? arg0 process) (= (rtype-of arg0) actor-group))
|
|
(the-as process arg0)
|
|
)
|
|
((type? arg0 entity-actor)
|
|
(-> (the-as entity-actor arg0) extra process)
|
|
)
|
|
((= arg0 'target)
|
|
*target*
|
|
)
|
|
((= arg0 'sidekick)
|
|
(if *target*
|
|
(ppointer->process (-> *target* sidekick))
|
|
)
|
|
)
|
|
((= arg0 'parent)
|
|
(let ((v1-14 (-> pp parent)))
|
|
(if v1-14
|
|
(the-as process (-> v1-14 0 self))
|
|
)
|
|
)
|
|
)
|
|
((= arg0 'camera)
|
|
*camera*
|
|
)
|
|
((= arg0 '*task-manager*)
|
|
(let ((v1-19 (-> *setting-control* user-current exclusive-task)))
|
|
(when v1-19
|
|
(let ((a0-9 (-> *task-manager-engine* alive-list next0)))
|
|
*task-manager-engine*
|
|
(let ((a1-5 (-> (the-as connection a0-9) next0)))
|
|
(while (!= a0-9 (-> *task-manager-engine* alive-list-end))
|
|
(when (= (-> (the-as game-task-node-info (-> (the-as connection a0-9) param2)) task) v1-19)
|
|
(set! arg1 (the-as process (-> (the-as connection a0-9) param1)))
|
|
(goto cfg-87)
|
|
)
|
|
(set! a0-9 (the-as connection a1-5))
|
|
*task-manager-engine*
|
|
(set! a1-5 (-> a1-5 next0))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(let ((v1-23 (-> *task-manager-engine* alive-list next0)))
|
|
*task-manager-engine*
|
|
(-> (the-as connection v1-23) next0)
|
|
(while (!= v1-23 (-> *task-manager-engine* alive-list-end))
|
|
(set! arg1 (the-as process (-> (the-as connection v1-23) param1)))
|
|
(b! #t cfg-87 :delay (nop!))
|
|
;; (the-as none 0)
|
|
;; (the-as none *task-manager-engine*)
|
|
;; (the-as none 0)
|
|
;; (the-as none 0)
|
|
;; (set! v1-23 (the-as connectable (l.wu 0)))
|
|
)
|
|
)
|
|
(the-as process #f)
|
|
)
|
|
((type? arg0 string)
|
|
(set! arg1 (process-by-ename (the-as string arg0)))
|
|
(cond
|
|
(arg1
|
|
(empty)
|
|
arg1
|
|
)
|
|
((-> *setting-control* user-current movie)
|
|
(let ((s5-1 (ppointer->process (-> *setting-control* user-current movie 0 child))))
|
|
(while s5-1
|
|
(when (name= arg0 (-> s5-1 name))
|
|
(set! arg1 (the-as process s5-1))
|
|
(goto cfg-87)
|
|
)
|
|
(set! s5-1 (ppointer->process (-> s5-1 brother)))
|
|
)
|
|
)
|
|
(let ((s5-2 (ppointer->process (-> *setting-control* user-current movie 0 child))))
|
|
(while s5-2
|
|
(let* ((s3-0 s5-2)
|
|
(s4-0 (if (type? s3-0 process-drawable)
|
|
(the-as process-drawable s3-0)
|
|
)
|
|
)
|
|
)
|
|
(format (clear *temp-string*) "~S-lod0" arg0)
|
|
(let ((s3-2 *temp-string*))
|
|
(when (and s4-0
|
|
(nonzero? (-> s4-0 draw))
|
|
(or (and (nonzero? (-> s4-0 draw art-group)) (string= (the-as string arg0) (-> s4-0 draw art-group name)))
|
|
(and (nonzero? (-> s4-0 draw jgeo)) (string= s3-2 (-> s4-0 draw jgeo name)))
|
|
)
|
|
)
|
|
(format 0 "WARNING: command-get-process returning art-group or jgeo named ~A~%" arg0)
|
|
(set! arg1 s4-0)
|
|
(goto cfg-87)
|
|
)
|
|
)
|
|
)
|
|
(set! s5-2 (ppointer->process (-> s5-2 brother)))
|
|
)
|
|
)
|
|
(the-as process #f)
|
|
)
|
|
(else
|
|
(let ((v1-64 (process-by-name (the-as string arg0) *active-pool*)))
|
|
(if v1-64
|
|
v1-64
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(empty)
|
|
arg1
|
|
)
|
|
)
|
|
)
|
|
(label cfg-87)
|
|
(the-as process arg1)
|
|
)
|
|
)
|
|
|
|
;; WARN: Return type mismatch object vs entity.
|
|
(defun command-get-entity ((search object) (fallback entity))
|
|
"- If `search` is a [[process]] - return it's `entity`
|
|
- If `search` is an [[entity]] - return it
|
|
- If `search` is a [[string]] - return the result of [[entity-by-name]]
|
|
- If `search` is [[null?]] or [[empty]] or if no other condition passes, return `fallback`"
|
|
(the-as entity (cond
|
|
((null? search)
|
|
(empty)
|
|
fallback
|
|
)
|
|
((type? search process)
|
|
(-> (the-as process search) entity)
|
|
)
|
|
((type? search entity)
|
|
(the-as entity search)
|
|
)
|
|
((type? search string)
|
|
(entity-by-name (the-as string search))
|
|
)
|
|
(else
|
|
(empty)
|
|
fallback
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; WARN: Using new Jak 2 rtype-of
|
|
(defun command-get-trans ((arg0 object) (arg1 vector))
|
|
(cond
|
|
((or (not arg0) (null? arg0))
|
|
(empty)
|
|
arg1
|
|
)
|
|
((= arg0 'null)
|
|
*null-vector*
|
|
)
|
|
((= arg0 'target)
|
|
(target-pos 0)
|
|
)
|
|
((= (rtype-of arg0) string)
|
|
(let ((v1-5 (the-as process-drawable (command-get-process arg0 *target*))))
|
|
(cond
|
|
((and v1-5 (nonzero? (-> v1-5 root)))
|
|
(-> v1-5 root trans)
|
|
)
|
|
(else
|
|
(empty)
|
|
arg1
|
|
)
|
|
)
|
|
)
|
|
)
|
|
((pair? arg0)
|
|
(let* ((s3-0 (command-get-process (car arg0) *target*))
|
|
(s4-0 (if (type? s3-0 process-drawable)
|
|
(the-as process-drawable s3-0)
|
|
)
|
|
)
|
|
(a1-7 (car (cdr arg0)))
|
|
)
|
|
(cond
|
|
((and s4-0 (nonzero? (-> s4-0 draw)) (nonzero? (-> s4-0 node-list)))
|
|
(let ((a0-12 (the-as joint (get-art-by-name-method (-> s4-0 draw jgeo) (the-as string a1-7) (the-as type #f)))))
|
|
(cond
|
|
(a0-12
|
|
(-> s4-0 node-list data (+ (-> a0-12 number) 1) bone transform trans)
|
|
)
|
|
(else
|
|
(empty)
|
|
arg1
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(empty)
|
|
arg1
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(empty)
|
|
arg1
|
|
)
|
|
)
|
|
)
|
|
|
|
;; WARN: Using new Jak 2 rtype-of
|
|
(defmethod script-context-method-10 script-context ((obj script-context) (arg0 object) (arg1 pair))
|
|
(let* ((s5-0 (rtype-of arg0))
|
|
(s4-0 arg1)
|
|
(s3-0 (car s4-0))
|
|
)
|
|
(while (not (null? s4-0))
|
|
(cond
|
|
((not s3-0)
|
|
(if (not arg0)
|
|
(return 'symbol)
|
|
)
|
|
)
|
|
(else
|
|
(let ((a1-1 (-> (the-as symbol s3-0) value)))
|
|
(if (type-type? s5-0 (the-as type a1-1))
|
|
(return s3-0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(set! s4-0 (cdr s4-0))
|
|
(set! s3-0 (car s4-0))
|
|
)
|
|
)
|
|
#f
|
|
)
|
|
|
|
;; WARN: Return type mismatch object vs pair.
|
|
(defun key-assoc ((arg0 object) (arg1 pair) (arg2 vector4w))
|
|
"TODO [[vector4w]] is probably wrong!"
|
|
(set! (-> arg2 dword 0) (the-as uint 0))
|
|
(let ((v1-0 arg1))
|
|
(while (not (or (null? v1-0) (= (car (car v1-0)) arg0)))
|
|
(+! (-> arg2 dword 0) 1)
|
|
(set! v1-0 (cdr v1-0))
|
|
)
|
|
(the-as pair (if (not (null? v1-0))
|
|
(car v1-0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; WARN: Using new Jak 2 rtype-of
|
|
;; WARN: Using new Jak 2 rtype-of
|
|
;; WARN: Using new Jak 2 rtype-of
|
|
;; WARN: Using new Jak 2 rtype-of
|
|
(defmethod script-context-method-11 script-context ((obj script-context) (arg0 pair) (arg1 pair) (arg2 symbol))
|
|
(local-vars (sv-16 symbol) (sv-20 pair) (sv-24 pair) (sv-28 int) (sv-32 int) (sv-40 pair))
|
|
(let ((s3-0 (cdr arg1)))
|
|
(set! sv-16 (the-as symbol #f))
|
|
(set! sv-20 arg0)
|
|
(set! sv-24 s3-0)
|
|
(set! (-> obj param-count) 0)
|
|
(set! (-> obj expr) arg0)
|
|
(let ((a1-1 (car sv-20))
|
|
(s2-0 (car s3-0))
|
|
)
|
|
(while (not (and (null? sv-20) (null? sv-24)))
|
|
(cond
|
|
((= s2-0 '&rest)
|
|
(let ((v1-2 (-> obj param-count)))
|
|
(set! (-> obj param v1-2) sv-20)
|
|
(set! (-> obj param-type v1-2) 'pair)
|
|
(set! (-> obj param-count) (+ v1-2 1))
|
|
)
|
|
(return (not sv-16))
|
|
)
|
|
((= s2-0 '&key)
|
|
(set! sv-28 (-> obj param-count))
|
|
(set! sv-32 0)
|
|
(set! sv-24 (cdr sv-24))
|
|
(let ((v1-11 sv-28))
|
|
(let* ((a0-3 sv-24)
|
|
(a1-6 (car a0-3))
|
|
)
|
|
(while (not (null? a0-3))
|
|
(set! (-> obj param v1-11) (car (cdr (cdr (cdr a1-6)))))
|
|
(let ((a1-13 (-> obj param v1-11)))
|
|
(set! (-> obj param-type v1-11) (-> (rtype-of a1-13) symbol))
|
|
)
|
|
(+! v1-11 1)
|
|
(set! a0-3 (cdr a0-3))
|
|
(set! a1-6 (car a0-3))
|
|
)
|
|
)
|
|
(set! (-> obj param-count) v1-11)
|
|
)
|
|
(while (not (null? sv-20))
|
|
(set! sv-40 (key-assoc (car sv-20) sv-24 (the-as vector4w (& sv-32))))
|
|
(cond
|
|
(sv-40
|
|
(set! sv-20 (cdr sv-20))
|
|
(let* ((v1-18 (car (cdr sv-40)))
|
|
(s3-1 (if (= v1-18 'eval)
|
|
(eval! obj (the-as pair (car sv-20)))
|
|
(car sv-20)
|
|
)
|
|
)
|
|
(s2-1 (+ sv-28 sv-32))
|
|
)
|
|
(set! (-> obj param s2-1) s3-1)
|
|
(let ((v1-29 (script-context-method-10 obj s3-1 (the-as pair (car (cdr (cdr sv-40)))))))
|
|
(set! (-> obj param-type s2-1) v1-29)
|
|
(when (not v1-29)
|
|
(set! sv-16 #t)
|
|
(if arg2
|
|
(format
|
|
0
|
|
"ERROR: SCRIPT: param ~A = ~A is type ~A, needed type ~A.~%"
|
|
(car sv-40)
|
|
s3-1
|
|
(rtype-of s3-1)
|
|
(car (cdr (cdr sv-40)))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(set! sv-16 #t)
|
|
(if arg2
|
|
(format 0 "ERROR: SCRIPT: found unknown keyword ~A in expression ~A.~%" (car sv-20) arg0)
|
|
)
|
|
(set! sv-20 (cdr sv-20))
|
|
)
|
|
)
|
|
(set! sv-20 (cdr sv-20))
|
|
)
|
|
(return (not sv-16))
|
|
)
|
|
((null? s2-0)
|
|
(if arg2
|
|
(format 0 "ERROR: SCRIPT: got too many params matching ~A to ~A~%" arg0 s3-0)
|
|
)
|
|
(return #f)
|
|
)
|
|
((null? a1-1)
|
|
(cond
|
|
((null? (car (cdr (cdr (cdr s2-0)))))
|
|
(if arg2
|
|
(format 0 "ERROR: SCRIPT: got too few params matching ~A to ~A~%" arg0 s3-0)
|
|
)
|
|
(return #f)
|
|
)
|
|
(else
|
|
(let ((v1-62 (-> obj param-count)))
|
|
(set! (-> obj param v1-62) (car (cdr (cdr (cdr s2-0)))))
|
|
(let ((a0-28 (-> obj param v1-62)))
|
|
(set! (-> obj param-type v1-62) (-> (rtype-of a0-28) symbol))
|
|
)
|
|
(set! (-> obj param-count) (+ v1-62 1))
|
|
)
|
|
(set! sv-24 (cdr sv-24))
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(let* ((v1-67 (car (cdr s2-0)))
|
|
(s0-0 (if (= v1-67 'eval)
|
|
(eval! obj (the-as pair a1-1))
|
|
a1-1
|
|
)
|
|
)
|
|
(s1-0 (-> obj param-count))
|
|
)
|
|
(set! (-> obj param s1-0) s0-0)
|
|
(let ((v1-74 (script-context-method-10 obj s0-0 (the-as pair (car (cdr (cdr s2-0)))))))
|
|
(set! (-> obj param-type s1-0) v1-74)
|
|
(when (not v1-74)
|
|
(set! sv-16 #t)
|
|
(if arg2
|
|
(format
|
|
0
|
|
"ERROR: SCRIPT: param ~A = ~A is type ~A, needed type ~A.~%"
|
|
(car s2-0)
|
|
s0-0
|
|
(rtype-of s0-0)
|
|
(car (cdr (cdr s2-0)))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(set! (-> obj param-count) (+ s1-0 1))
|
|
)
|
|
(set! sv-20 (cdr sv-20))
|
|
(set! sv-24 (cdr sv-24))
|
|
)
|
|
)
|
|
(set! a1-1 (car sv-20))
|
|
(set! s2-0 (car sv-24))
|
|
)
|
|
)
|
|
)
|
|
(not sv-16)
|
|
)
|
|
|
|
;; WARN: Using new Jak 2 rtype-of
|
|
(defmethod eval! script-context ((obj script-context) (arg0 pair))
|
|
(let ((s4-0 (the-as object #f)))
|
|
(set! (-> obj expr) arg0)
|
|
(case (rtype-of arg0)
|
|
((pair)
|
|
(let ((a2-0 (car arg0)))
|
|
(cond
|
|
((null? arg0)
|
|
(set! s4-0 '())
|
|
)
|
|
(else
|
|
(let ((s3-0 (-> *script-form* 0)))
|
|
(while (nonzero? (-> s3-0 name))
|
|
(when (= a2-0 (-> s3-0 name))
|
|
(let ((s2-0 (new 'stack-no-clear 'script-context)))
|
|
(set! (-> s2-0 load-state) (-> obj load-state))
|
|
(set! (-> s2-0 key) (-> obj key))
|
|
(set! (-> s2-0 process) (-> obj process))
|
|
(set! (-> s2-0 trans) (-> obj trans))
|
|
(set! (-> s2-0 side-effect?) (-> obj side-effect?))
|
|
(set! (-> s2-0 got-error?) #f)
|
|
(cond
|
|
((script-context-method-11 s2-0 arg0 (-> s3-0 spec) #t)
|
|
(set! (-> s2-0 expr) arg0)
|
|
(set! s4-0 ((-> s3-0 func) s2-0))
|
|
)
|
|
(else
|
|
(set! (-> s2-0 got-error?) #t)
|
|
)
|
|
)
|
|
(set! (-> obj got-error?) (or (-> obj got-error?) (-> s2-0 got-error?)))
|
|
)
|
|
(goto cfg-23)
|
|
)
|
|
(&+! s3-0 12)
|
|
)
|
|
)
|
|
(format 0 "ERROR: SCRIPT: taking the value of unknown symbol ~A in ~A for application.~%" a2-0 arg0)
|
|
(set! (-> obj got-error?) #t)
|
|
)
|
|
)
|
|
)
|
|
(label cfg-23)
|
|
s4-0
|
|
)
|
|
((symbol)
|
|
(let ((s4-1 (the-as symbol arg0)))
|
|
(cond
|
|
((string-prefix= "GAME_TASK_" (symbol->string s4-1))
|
|
(let ((gp-1 (c-string->game-task (symbol->string s4-1))))
|
|
(if (= gp-1 (game-task unknown))
|
|
(format 0 "ERROR: SCRIPT: taking the value of unknown game-task ~A.~%" arg0)
|
|
)
|
|
(set! s4-0 (* gp-1 8))
|
|
)
|
|
)
|
|
((= s4-1 'MINIMAP_FLAG_MINIMAP)
|
|
(set! s4-0 1024)
|
|
)
|
|
((= s4-1 'FACT_SUPER_SKILL_INC)
|
|
(set! s4-0 (* (the int (-> *FACT-bank* super-skill-inc)) 8))
|
|
)
|
|
((= s4-1 'self)
|
|
(set! s4-0 (-> obj process))
|
|
)
|
|
((= s4-1 'key)
|
|
(set! s4-0 (-> obj key))
|
|
)
|
|
((= s4-1 '*time-of-day*)
|
|
(set! s4-0 (ppointer->process *time-of-day*))
|
|
)
|
|
((= s4-1 '*task-manager*)
|
|
(set! s4-0 (command-get-process s4-1 *target*))
|
|
)
|
|
(else
|
|
(set! s4-0 (-> s4-1 value))
|
|
)
|
|
)
|
|
)
|
|
s4-0
|
|
)
|
|
(else
|
|
arg0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(define *script-form* (the-as (inline-array script-form) (malloc 'global 1536)))
|
|
|
|
(let ((v1-10 (-> *script-form* 0)))
|
|
(set! (-> v1-10 name) 'quote)
|
|
(set! (-> v1-10 spec) '((return macro (object)) (function macro (symbol)) (value macro (object))))
|
|
(set! (-> v1-10 func) (lambda ((arg0 script-context)) (-> arg0 param 1)))
|
|
)
|
|
|
|
(let ((v1-12 (-> *script-form* 1)))
|
|
(set! (-> v1-12 name) 'meters)
|
|
(set! (-> v1-12 spec) '((return macro (float)) (function macro (symbol)) (value eval (bfloat binteger))))
|
|
(set! (-> v1-12 func)
|
|
(lambda ((arg0 script-context)) (the-as meters (* 4096.0 (command-get-float (-> arg0 param 1) 0.0))))
|
|
)
|
|
)
|
|
|
|
(let ((v1-14 (-> *script-form* 2)))
|
|
(set! (-> v1-14 name) 'seconds)
|
|
(set! (-> v1-14 spec) '((return macro (integer)) (function macro (symbol)) (value eval (bfloat binteger))))
|
|
(set! (-> v1-14 func)
|
|
(lambda ((arg0 script-context)) (the time-frame (* 300.0 (command-get-float (-> arg0 param 1) 0.0))))
|
|
)
|
|
)
|
|
|
|
(let ((v1-16 (-> *script-form* 3)))
|
|
(set! (-> v1-16 name) 'float)
|
|
(set! (-> v1-16 spec) '((return macro (float)) (function macro (symbol)) (value eval (bfloat binteger))))
|
|
(set! (-> v1-16 func) (lambda ((arg0 script-context)) (command-get-float (-> arg0 param 1) 0.0)))
|
|
)
|
|
|
|
(let ((v1-18 (-> *script-form* 4)))
|
|
(set! (-> v1-18 name) 'int)
|
|
(set! (-> v1-18 spec) '((return macro (integer)) (function macro (symbol)) (value eval (bfloat binteger))))
|
|
(set! (-> v1-18 func) (lambda ((arg0 script-context)) (command-get-int (-> arg0 param 1) 0)))
|
|
)
|
|
|
|
(let ((v1-20 (-> *script-form* 5)))
|
|
(set! (-> v1-20 name) 'begin)
|
|
(set! (-> v1-20 spec) '((return macro (object)) (function macro (symbol)) &rest body))
|
|
(set! (-> v1-20 func) (lambda ((arg0 script-context)) (let ((v0-0 (the-as object #f)))
|
|
(let* ((s5-0 (-> arg0 param 1))
|
|
(a1-0 (car (the-as pair s5-0)))
|
|
)
|
|
(while (not (null? s5-0))
|
|
(set! v0-0 (eval! arg0 (the-as pair a1-0)))
|
|
(set! s5-0 (cdr s5-0))
|
|
(set! a1-0 (car (the-as pair s5-0)))
|
|
)
|
|
)
|
|
(the-as pair v0-0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-22 (-> *script-form* 6)))
|
|
(set! (-> v1-22 name) 'print)
|
|
(set! (-> v1-22 spec) '((return macro (object)) (function macro (symbol)) (value eval (object))))
|
|
(set! (-> v1-22 func) (lambda ((arg0 script-context)) (if (-> arg0 side-effect?)
|
|
(printl (-> arg0 param 1))
|
|
(-> arg0 param 1)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-24 (-> *script-form* 7)))
|
|
(set! (-> v1-24 name) 'if)
|
|
(set! (-> v1-24 spec) '((return macro (object))
|
|
(function macro (symbol))
|
|
(condition eval (object))
|
|
(if macro
|
|
(object)
|
|
)
|
|
(else
|
|
macro
|
|
(object)
|
|
#f
|
|
)
|
|
)
|
|
)
|
|
(set! (-> v1-24 func)
|
|
(lambda ((arg0 script-context)) (the-as pair (if (-> arg0 param 1)
|
|
(eval! arg0 (the-as pair (-> arg0 param 2)))
|
|
(eval! arg0 (the-as pair (-> arg0 param 3)))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-26 (-> *script-form* 8)))
|
|
(set! (-> v1-26 name) 'not)
|
|
(set! (-> v1-26 spec) '((return macro (object)) (function macro (symbol)) (condition eval (object))))
|
|
(set! (-> v1-26 func) (lambda ((arg0 script-context)) (not (-> arg0 param 1))))
|
|
)
|
|
|
|
(let ((v1-28 (-> *script-form* 9)))
|
|
(set! (-> v1-28 name) 'and)
|
|
(set! (-> v1-28 spec) '((return macro (object)) (function macro (symbol)) &rest body))
|
|
(set! (-> v1-28 func) (lambda ((arg0 script-context)) (let ((s5-0 (-> arg0 param 1))
|
|
(v0-0 (the-as object #f))
|
|
)
|
|
(let ((a1-0 (car (the-as pair s5-0))))
|
|
(while (not (null? s5-0))
|
|
(set! v0-0 (eval! arg0 (the-as pair a1-0)))
|
|
(if (not v0-0)
|
|
(return (the-as pair #f))
|
|
)
|
|
(set! s5-0 (cdr s5-0))
|
|
(set! a1-0 (car (the-as pair s5-0)))
|
|
)
|
|
)
|
|
(the-as pair v0-0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-30 (-> *script-form* 10)))
|
|
(set! (-> v1-30 name) 'or)
|
|
(set! (-> v1-30 spec) '((return macro (object)) (function macro (symbol)) &rest body))
|
|
(set! (-> v1-30 func) (lambda ((arg0 script-context))
|
|
(let ((s5-0 (-> arg0 param 1)))
|
|
(let ((a1-0 (car (the-as pair s5-0))))
|
|
(while (not (null? s5-0))
|
|
(let ((v1-2 (eval! arg0 (the-as pair a1-0))))
|
|
(if v1-2
|
|
(return (the-as pair v1-2))
|
|
)
|
|
)
|
|
(set! s5-0 (cdr s5-0))
|
|
(set! a1-0 (car (the-as pair s5-0)))
|
|
)
|
|
)
|
|
)
|
|
(the-as pair #f)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-32 (-> *script-form* 11)))
|
|
(set! (-> v1-32 name) 'when)
|
|
(set! (-> v1-32 spec)
|
|
'((return macro (object)) (function macro (symbol)) (condition eval (object)) &rest body)
|
|
)
|
|
(set! (-> v1-32 func) (lambda ((arg0 script-context)) (let ((v0-0 (the-as object #f)))
|
|
(when (-> arg0 param 1)
|
|
(let* ((s5-0 (-> arg0 param 2))
|
|
(a1-0 (car (the-as pair s5-0)))
|
|
)
|
|
(while (not (null? s5-0))
|
|
(set! v0-0 (eval! arg0 (the-as pair a1-0)))
|
|
(set! s5-0 (cdr s5-0))
|
|
(set! a1-0 (car (the-as pair s5-0)))
|
|
)
|
|
)
|
|
)
|
|
(the-as pair v0-0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-34 (-> *script-form* 12)))
|
|
(set! (-> v1-34 name) 'unless)
|
|
(set! (-> v1-34 spec)
|
|
'((return macro (object)) (function macro (symbol)) (condition eval (object)) &rest body)
|
|
)
|
|
(set! (-> v1-34 func) (lambda ((arg0 script-context)) (let ((v0-0 (the-as object #f)))
|
|
(when (not (-> arg0 param 1))
|
|
(let* ((s5-0 (-> arg0 param 2))
|
|
(a1-0 (car (the-as pair s5-0)))
|
|
)
|
|
(while (not (null? s5-0))
|
|
(set! v0-0 (eval! arg0 (the-as pair a1-0)))
|
|
(set! s5-0 (cdr s5-0))
|
|
(set! a1-0 (car (the-as pair s5-0)))
|
|
)
|
|
)
|
|
)
|
|
(the-as pair v0-0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-36 (-> *script-form* 13)))
|
|
(set! (-> v1-36 name) 'cond)
|
|
(set! (-> v1-36 spec) '((return macro (object)) (function macro (symbol)) &rest body))
|
|
(set! (-> v1-36 func)
|
|
(lambda ((arg0 script-context)) (let ((gp-0 (the-as object #f)))
|
|
(let* ((s4-0 (-> arg0 param 1))
|
|
(s3-0 (car (the-as pair s4-0)))
|
|
)
|
|
(while (not (null? s4-0))
|
|
(when (pair? s3-0)
|
|
(when (or (= s3-0 'else) (eval! arg0 (the-as pair (car s3-0))))
|
|
(let* ((s4-1 (cdr s3-0))
|
|
(a1-1 (car s4-1))
|
|
)
|
|
(while (not (null? s4-1))
|
|
(set! gp-0 (eval! arg0 (the-as pair a1-1)))
|
|
(set! s4-1 (cdr s4-1))
|
|
(set! a1-1 (car s4-1))
|
|
)
|
|
)
|
|
(set! gp-0 gp-0)
|
|
(goto cfg-14)
|
|
)
|
|
)
|
|
(set! s4-0 (cdr s4-0))
|
|
(set! s3-0 (car (the-as pair s4-0)))
|
|
)
|
|
)
|
|
(label cfg-14)
|
|
(the-as pair gp-0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-38 (-> *script-form* 14)))
|
|
(set! (-> v1-38 name) 'set!)
|
|
(set! (-> v1-38 spec)
|
|
'((return macro (object)) (function macro (symbol)) (symbol macro (symbol)) (value eval (object)))
|
|
)
|
|
(set! (-> v1-38 func)
|
|
(lambda ((arg0 script-context)) (when (-> arg0 side-effect?)
|
|
(let ((v0-0 (-> arg0 param 2)))
|
|
(set! (-> (the-as symbol (-> arg0 param 1)) value) v0-0)
|
|
v0-0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-40 (-> *script-form* 15)))
|
|
(set! (-> v1-40 name) 'eval)
|
|
(set! (-> v1-40 spec) '((return macro (object)) (function macro (symbol)) (value eval (object))))
|
|
(set! (-> v1-40 func)
|
|
(lambda ((arg0 script-context)) (the-as pair (if (-> arg0 side-effect?)
|
|
(eval! arg0 (the-as pair (-> arg0 param 1)))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-42 (-> *script-form* 16)))
|
|
(set! (-> v1-42 name) 'apply)
|
|
(set! (-> v1-42 spec) '((return macro (object)) (function macro (symbol)) (value eval (function))))
|
|
(set! (-> v1-42 func)
|
|
(lambda ((arg0 script-context)) (if (-> arg0 side-effect?)
|
|
((the-as (function script-context symbol) (-> arg0 param 1)) arg0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-44 (-> *script-form* 17)))
|
|
(set! (-> v1-44 name) '=)
|
|
(set! (-> v1-44 spec)
|
|
'((return macro (object))
|
|
(function macro (symbol))
|
|
(test1 eval (bfloat binteger))
|
|
(test2 eval (bfloat binteger))
|
|
)
|
|
)
|
|
(set! (-> v1-44 func)
|
|
(lambda ((arg0 script-context))
|
|
(= (command-get-float (-> arg0 param 1) 0.0) (command-get-float (-> arg0 param 2) 0.0))
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-46 (-> *script-form* 18)))
|
|
(set! (-> v1-46 name) '<=)
|
|
(set! (-> v1-46 spec)
|
|
'((return macro (object))
|
|
(function macro (symbol))
|
|
(test1 eval (bfloat binteger))
|
|
(test2 eval (bfloat binteger))
|
|
)
|
|
)
|
|
(set! (-> v1-46 func)
|
|
(lambda ((arg0 script-context))
|
|
(>= (command-get-float (-> arg0 param 2) 0.0) (command-get-float (-> arg0 param 1) 0.0))
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-48 (-> *script-form* 19)))
|
|
(set! (-> v1-48 name) '<)
|
|
(set! (-> v1-48 spec)
|
|
'((return macro (object))
|
|
(function macro (symbol))
|
|
(test1 eval (bfloat binteger))
|
|
(test2 eval (bfloat binteger))
|
|
)
|
|
)
|
|
(set! (-> v1-48 func)
|
|
(lambda ((arg0 script-context))
|
|
(< (command-get-float (-> arg0 param 1) 0.0) (command-get-float (-> arg0 param 2) 0.0))
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-50 (-> *script-form* 20)))
|
|
(set! (-> v1-50 name) 'eq?)
|
|
(set! (-> v1-50 spec)
|
|
'((return macro (object)) (function macro (symbol)) (test1 eval (object)) (test2 eval (object)))
|
|
)
|
|
(set! (-> v1-50 func)
|
|
(lambda ((arg0 script-context)) (let ((gp-0 (-> arg0 param 1))
|
|
(s5-0 (-> arg0 param 2))
|
|
)
|
|
(if (and (type? gp-0 string) (type? s5-0 string))
|
|
(string= (the-as string gp-0) (the-as string s5-0))
|
|
(= gp-0 s5-0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-52 (-> *script-form* 21)))
|
|
(set! (-> v1-52 name) 'unbox)
|
|
(set! (-> v1-52 spec) '((return macro (object)) (function macro (symbol)) (value eval (bfloat binteger))))
|
|
(set! (-> v1-52 func) (lambda ((arg0 script-context)) (cond
|
|
((not (logtest? (the-as int (-> arg0 param 1)) 7))
|
|
(/ (the-as int (-> arg0 param 1)) 8)
|
|
)
|
|
(else
|
|
(let ((v1-3 bfloat)
|
|
(a1-0 (-> arg0 param 1))
|
|
)
|
|
(if (= (rtype-of a1-0) v1-3)
|
|
(-> (the-as bfloat (-> arg0 param 1)) data)
|
|
(-> arg0 param 1)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(defun level-from-heap ((arg0 int))
|
|
(dotimes (v1-0 (-> *level* length))
|
|
(let ((a1-3 (-> *level* level v1-0)))
|
|
(when (= (-> a1-3 status) 'active)
|
|
(let ((a3-1 (-> a1-3 heap base))
|
|
(a2-3 (-> a1-3 heap top-base))
|
|
)
|
|
(if (and (>= arg0 (the-as int a3-1)) (< arg0 (the-as int a2-3)))
|
|
(return a1-3)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(the-as level #f)
|
|
)
|
|
|
|
(let ((v1-55 (-> *script-form* 22)))
|
|
(set! (-> v1-55 name) 'want-vis)
|
|
(set! (-> v1-55 spec) '((return macro (none)) (function macro (symbol)) (level eval (symbol))))
|
|
(set! (-> v1-55 func) (the-as
|
|
(function script-context object)
|
|
(lambda ((arg0 script-context))
|
|
(if (and (-> arg0 side-effect?) (-> *level* border?))
|
|
(want-vis-level (-> arg0 load-state) (the-as symbol (-> arg0 param 1)))
|
|
)
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-57 (-> *script-form* 23)))
|
|
(set! (-> v1-57 name) 'want-load)
|
|
(set! (-> v1-57 spec) '((return macro (none)) (function macro (symbol)) &rest levels))
|
|
(set! (-> v1-57 func)
|
|
(the-as
|
|
(function script-context object)
|
|
(lambda ((arg0 script-context))
|
|
(let ((s5-0 6)
|
|
(a0-1 (-> arg0 param 1))
|
|
)
|
|
(cond
|
|
((>= s5-0 ((method-of-type (rtype-of a0-1) length) a0-1))
|
|
(when (and (-> arg0 side-effect?)
|
|
(-> *level* border?)
|
|
(let ((s5-1 (-> *setting-control* user-current exclusive-load)))
|
|
(or (not s5-1) (let ((v1-9 (level-from-heap (the-as int (-> arg0 key)))))
|
|
(and v1-9 (= (-> v1-9 name) s5-1))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(let ((s5-2 (new 'static 'boxed-array :type symbol :length 0 :allocated-length 6)))
|
|
(dotimes (s4-0 6)
|
|
(let ((a1-3 (ref (-> arg0 param 1) s4-0)))
|
|
(set! (-> s5-2 s4-0) (the-as symbol (if (not (null? a1-3))
|
|
(eval! arg0 (the-as pair a1-3))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(want-levels (-> arg0 load-state) (-> s5-2 data))
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(format 0 "ERROR: SCRIPT: got too many params to want-load ~A~%" (-> arg0 param 1))
|
|
(set! (-> arg0 got-error?) #t)
|
|
)
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-59 (-> *script-form* 24)))
|
|
(set! (-> v1-59 name) 'want-sound)
|
|
(set! (-> v1-59 spec) '((return macro (none)) (function macro (symbol)) &rest sounds))
|
|
(set! (-> v1-59 func)
|
|
(the-as
|
|
(function script-context object)
|
|
(lambda ((arg0 script-context))
|
|
(let ((s5-0 3)
|
|
(a0-1 (-> arg0 param 1))
|
|
)
|
|
(cond
|
|
((>= s5-0 ((method-of-type (rtype-of a0-1) length) a0-1))
|
|
(when (and (-> arg0 side-effect?)
|
|
(-> *level* border?)
|
|
(let ((s5-1 (-> *setting-control* user-current exclusive-load)))
|
|
(or (not s5-1) (let ((v1-9 (level-from-heap (the-as int (-> arg0 key)))))
|
|
(and v1-9 (= (-> v1-9 name) s5-1))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(let ((s5-2 (new 'static 'boxed-array :type symbol :length 0 :allocated-length 3)))
|
|
(dotimes (s4-0 3)
|
|
(let ((a1-3 (ref (-> arg0 param 1) s4-0)))
|
|
(set! (-> s5-2 s4-0) (the-as symbol (if (not (null? a1-3))
|
|
(eval! arg0 (the-as pair a1-3))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(want-sound-banks (-> arg0 load-state) (-> s5-2 data))
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(format 0 "ERROR: SCRIPT: got too many params to want-sound ~A~%" (-> arg0 param 1))
|
|
(set! (-> arg0 got-error?) #t)
|
|
)
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-61 (-> *script-form* 25)))
|
|
(set! (-> v1-61 name) 'want-display)
|
|
(set! (-> v1-61 spec)
|
|
'((return macro (none)) (function macro (symbol)) (level eval (symbol)) (mode eval (symbol) display))
|
|
)
|
|
(set! (-> v1-61 func)
|
|
(the-as
|
|
(function script-context object)
|
|
(lambda ((arg0 script-context))
|
|
(if (and (-> arg0 side-effect?)
|
|
(-> *level* border?)
|
|
(let ((s5-0 (-> *setting-control* user-current exclusive-load)))
|
|
(or (not s5-0) (let ((v1-5 (level-from-heap (the-as int (-> arg0 key)))))
|
|
(and v1-5 (= (-> v1-5 name) s5-0))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(want-display-level (-> arg0 load-state) (the-as symbol (-> arg0 param 1)) (the-as symbol (-> arg0 param 2)))
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-63 (-> *script-form* 26)))
|
|
(set! (-> v1-63 name) 'want-force-vis)
|
|
(set! (-> v1-63 spec)
|
|
'((return macro (none)) (function macro (symbol)) (level eval (symbol)) (mode eval (symbol) #t))
|
|
)
|
|
(set! (-> v1-63 func)
|
|
(the-as
|
|
(function script-context object)
|
|
(lambda ((arg0 script-context))
|
|
(if (and (-> arg0 side-effect?) (-> *level* border?))
|
|
(want-force-vis (-> arg0 load-state) (the-as symbol (-> arg0 param 1)) (the-as symbol (-> arg0 param 2)))
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-65 (-> *script-form* 27)))
|
|
(set! (-> v1-65 name) 'want-force-inside)
|
|
(set! (-> v1-65 spec)
|
|
'((return macro (none)) (function macro (symbol)) (level eval (symbol)) (mode eval (symbol) #t))
|
|
)
|
|
(set! (-> v1-65 func)
|
|
(the-as
|
|
(function script-context object)
|
|
(lambda ((arg0 script-context))
|
|
(if (and (-> arg0 side-effect?) (-> *level* border?))
|
|
(want-force-inside (-> arg0 load-state) (the-as symbol (-> arg0 param 1)) (the-as symbol (-> arg0 param 2)))
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-67 (-> *script-form* 28)))
|
|
(set! (-> v1-67 name) 'want-continue)
|
|
(set! (-> v1-67 spec) '((return macro (none)) (function macro (symbol)) (continue-point eval (string))))
|
|
(set! (-> v1-67 func)
|
|
(the-as
|
|
(function script-context object)
|
|
(lambda ((arg0 script-context))
|
|
(when (and (-> arg0 side-effect?) (-> *setting-control* user-current allow-continue))
|
|
(set-continue! *game-info* (the-as basic (-> arg0 param 1)) #f)
|
|
(send-event *target* 'want-continue (-> arg0 param 1))
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-69 (-> *script-form* 29)))
|
|
(set! (-> v1-69 name) 'want-anim)
|
|
(set! (-> v1-69 spec) '((return macro (none)) (function macro (symbol)) (name eval (string))))
|
|
(set! (-> v1-69 func) (the-as (function script-context object) (lambda ((arg0 script-context))
|
|
"we want to preload this anim."
|
|
(if (-> arg0 side-effect?)
|
|
(gui-control-method-12
|
|
*gui-control*
|
|
(-> arg0 process)
|
|
(gui-channel art-load)
|
|
(gui-action queue)
|
|
(the-as string (-> arg0 param 1))
|
|
0
|
|
-1.0
|
|
(new 'static 'sound-id)
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-71 (-> *script-form* 30)))
|
|
(set! (-> v1-71 name) 'send-event)
|
|
(set! (-> v1-71 spec)
|
|
'((return macro (object))
|
|
(function macro (symbol))
|
|
(target eval (string process entity-actor actor-group #f binteger))
|
|
(message eval (symbol))
|
|
&rest
|
|
params
|
|
)
|
|
)
|
|
(set! (-> v1-71 func)
|
|
(lambda ((arg0 script-context))
|
|
(local-vars (sv-96 (function script-context pair object)))
|
|
(the-as
|
|
symbol
|
|
(when (-> arg0 side-effect?)
|
|
(let ((gp-0 (command-get-process (-> arg0 param 1) (the-as process #f)))
|
|
(s5-0 (new 'stack-no-clear 'event-message-block))
|
|
(s2-0 (-> arg0 param 3))
|
|
(s4-0 (the-as object #f))
|
|
)
|
|
(when gp-0
|
|
(set! (-> s5-0 from) (process->ppointer (-> arg0 process)))
|
|
(set! (-> s5-0 message) (the-as symbol (-> arg0 param 2)))
|
|
(let ((a0-3 s2-0))
|
|
(set! (-> s5-0 num-params) ((method-of-type (rtype-of a0-3) length) a0-3))
|
|
)
|
|
(dotimes (s1-0 (-> s5-0 num-params))
|
|
(let ((s0-0 arg0))
|
|
(set! sv-96 (method-of-type script-context eval!))
|
|
(let ((a1-4 (ref s2-0 s1-0)))
|
|
(set! (-> s5-0 param s1-0) (the-as uint (sv-96 s0-0 (the-as pair a1-4))))
|
|
)
|
|
)
|
|
)
|
|
(cond
|
|
((= (-> gp-0 type) actor-group)
|
|
(dotimes (s3-1 (the-as int (-> gp-0 name)))
|
|
(let ((t9-4 send-event-function)
|
|
(v1-18 (the-as object (-> (the-as (pointer uint32) (+ (+ (* s3-1 8) 12) (the-as int gp-0))))))
|
|
)
|
|
(set! s4-0 (t9-4
|
|
(if (the-as uint v1-18)
|
|
(-> (the-as entity-actor v1-18) extra process)
|
|
)
|
|
s5-0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(set! s4-0 (send-event-function gp-0 s5-0))
|
|
)
|
|
)
|
|
)
|
|
s4-0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-73 (-> *script-form* 31)))
|
|
(set! (-> v1-73 name) 'send-event-attack)
|
|
(set! (-> v1-73 spec)
|
|
'((return macro (object))
|
|
(function macro (symbol))
|
|
(target eval (string process entity-actor actor-group #f binteger))
|
|
(none macro (object))
|
|
&key
|
|
(mode eval (symbol) generic)
|
|
(message eval (symbol) attack)
|
|
)
|
|
)
|
|
(set! (-> v1-73 func)
|
|
(lambda ((arg0 script-context))
|
|
(with-pp
|
|
(the-as
|
|
symbol
|
|
(when (-> arg0 side-effect?)
|
|
(let ((s5-0 (command-get-process (-> arg0 param 1) (the-as process #f)))
|
|
(v0-0 (the-as object #f))
|
|
)
|
|
(when s5-0
|
|
(cond
|
|
((= (-> s5-0 type) actor-group)
|
|
(dotimes (s4-0 (the-as int (-> s5-0 name)))
|
|
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
|
|
(set! (-> a1-1 from) (process->ppointer pp))
|
|
(set! (-> a1-1 num-params) 2)
|
|
(set! (-> a1-1 message) (the-as symbol (-> arg0 param 4)))
|
|
(set! (-> a1-1 param 0) (the-as uint #f))
|
|
(set! (-> a1-1 param 1)
|
|
(the-as uint (static-attack-info ((id (new-attack-id)) (mode (the-as symbol (-> arg0 param 3))))))
|
|
)
|
|
(let ((t9-1 send-event-function)
|
|
(v1-10 (the-as object (-> (the-as (pointer uint32) (+ (+ (* s4-0 8) 12) (the-as int s5-0))))))
|
|
)
|
|
(set! v0-0 (t9-1
|
|
(if (the-as uint v1-10)
|
|
(-> (the-as entity-actor v1-10) extra process)
|
|
)
|
|
a1-1
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
|
|
(set! (-> a1-2 from) (process->ppointer pp))
|
|
(set! (-> a1-2 num-params) 2)
|
|
(set! (-> a1-2 message) (the-as symbol (-> arg0 param 4)))
|
|
(set! (-> a1-2 param 0) (the-as uint #f))
|
|
(set! (-> a1-2 param 1)
|
|
(the-as uint (static-attack-info ((id (new-attack-id)) (mode (the-as symbol (-> arg0 param 3))))))
|
|
)
|
|
(set! v0-0 (send-event-function s5-0 a1-2))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
v0-0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-75 (-> *script-form* 32)))
|
|
(set! (-> v1-75 name) 'focus-test?)
|
|
(set! (-> v1-75 spec)
|
|
'((return macro (symbol))
|
|
(function macro (symbol))
|
|
(target eval (string process entity-actor actor-group #f binteger))
|
|
&rest
|
|
params
|
|
)
|
|
)
|
|
(set! (-> v1-75 func)
|
|
(lambda ((arg0 script-context))
|
|
(let* ((s4-0 (command-get-process (-> arg0 param 1) (the-as process #f)))
|
|
(gp-0 (if (type? s4-0 process-focusable)
|
|
(the-as process-focusable s4-0)
|
|
)
|
|
)
|
|
)
|
|
(when gp-0
|
|
(let* ((s5-1 (-> arg0 param 2))
|
|
(v1-0 (car (the-as pair s5-1)))
|
|
)
|
|
(while (not (null? s5-1))
|
|
(cond
|
|
((logtest? (the-as int v1-0) 1)
|
|
(cond
|
|
((= v1-0 'board)
|
|
(if (focus-test? gp-0 board)
|
|
(return #t)
|
|
)
|
|
)
|
|
((= v1-0 'gun)
|
|
(if (focus-test? gp-0 gun)
|
|
(return #t)
|
|
)
|
|
)
|
|
((= v1-0 'mech)
|
|
(if (focus-test? gp-0 mech)
|
|
(return #t)
|
|
)
|
|
)
|
|
((= v1-0 'pilot)
|
|
(if (focus-test? gp-0 pilot)
|
|
(return #t)
|
|
)
|
|
)
|
|
((= v1-0 'grabbed)
|
|
(if (focus-test? gp-0 grabbed)
|
|
(return #t)
|
|
)
|
|
)
|
|
((= v1-0 'indax)
|
|
(if (focus-test? gp-0 indax)
|
|
(return #t)
|
|
)
|
|
)
|
|
((= v1-0 'dark)
|
|
(if (focus-test? gp-0 dark)
|
|
(return #t)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(format 0 "ERROR: SCRIPT: param bit = ~A is type ~A, needed type ~A.~%" v1-0 (rtype-of v1-0) 'symbol)
|
|
)
|
|
)
|
|
(set! s5-1 (cdr s5-1))
|
|
(set! v1-0 (car (the-as pair s5-1)))
|
|
)
|
|
)
|
|
#f
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-77 (-> *script-form* 33)))
|
|
(set! (-> v1-77 name) 'game-feature!)
|
|
(set! (-> v1-77 spec)
|
|
'((return macro (none)) (function macro (symbol)) (feature macro (symbol)) (value eval (symbol)))
|
|
)
|
|
(set! (-> v1-77 func) (the-as
|
|
(function script-context object)
|
|
(lambda ((arg0 script-context))
|
|
(case (-> arg0 param 1)
|
|
(('board)
|
|
(if (-> arg0 param 2)
|
|
(logior! (-> *game-info* features) (game-feature board))
|
|
(logclear! (-> *game-info* features) (game-feature board))
|
|
)
|
|
)
|
|
(else
|
|
(format 0 "ERROR: SCRIPT: unknown feature type ~A~%" (-> arg0 param 1))
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-79 (-> *script-form* 34)))
|
|
(set! (-> v1-79 name) 'game-feature?)
|
|
(set! (-> v1-79 spec) '((return macro (boolean)) (function macro (symbol)) (feature macro (symbol))))
|
|
(set! (-> v1-79 func)
|
|
(lambda ((arg0 script-context)) (case (-> arg0 param 1)
|
|
(('board)
|
|
(logtest? (-> *game-info* features) (game-feature board))
|
|
)
|
|
(else
|
|
(format 0 "ERROR: SCRIPT: unknown feature type ~A~%" (-> arg0 param 1))
|
|
#f
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-81 (-> *script-form* 35)))
|
|
(set! (-> v1-81 name) 'entity-status?)
|
|
(set! (-> v1-81 spec)
|
|
'((return macro (symbol))
|
|
(function macro (symbol))
|
|
(target eval (string process entity-actor actor-group #f binteger))
|
|
&rest
|
|
params
|
|
)
|
|
)
|
|
(set! (-> v1-81 func)
|
|
(lambda ((arg0 script-context))
|
|
(let ((v1-0 (command-get-entity (-> arg0 param 1) (the-as entity #f))))
|
|
(when v1-0
|
|
(let* ((gp-1 (-> arg0 param 2))
|
|
(s5-0 (-> v1-0 extra perm status))
|
|
(v1-2 (car (the-as pair gp-1)))
|
|
)
|
|
(while (not (null? gp-1))
|
|
(cond
|
|
((logtest? (the-as int v1-2) 1)
|
|
(cond
|
|
((or (= v1-2 'no-birth) (= v1-2 'dead))
|
|
(if (logtest? s5-0 (entity-perm-status dead))
|
|
(return #t)
|
|
)
|
|
)
|
|
((= v1-2 'subtask-complete)
|
|
(if (logtest? s5-0 (entity-perm-status subtask-complete bit-12))
|
|
(return #t)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(format 0 "ERROR: SCRIPT: param bit = ~A is type ~A, needed type ~A.~%" v1-2 (rtype-of v1-2) 'symbol)
|
|
)
|
|
)
|
|
(set! gp-1 (cdr gp-1))
|
|
(set! v1-2 (car (the-as pair gp-1)))
|
|
)
|
|
)
|
|
#f
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-83 (-> *script-form* 36)))
|
|
(set! (-> v1-83 name) 'setting-set)
|
|
(set! (-> v1-83 spec)
|
|
'((return macro (none))
|
|
(function macro (symbol))
|
|
(setting macro (symbol))
|
|
&key
|
|
(mode eval (object))
|
|
(value eval (bfloat))
|
|
(mask eval (binteger))
|
|
)
|
|
)
|
|
(set! (-> v1-83 func)
|
|
(the-as (function script-context object) (lambda ((arg0 script-context))
|
|
"
|
|
'(setting-set bg-a :mode 'abs :value 1.0)
|
|
"
|
|
(if (-> arg0 side-effect?)
|
|
(add-setting
|
|
*setting-control*
|
|
(-> arg0 process)
|
|
(the-as symbol (-> arg0 param 1))
|
|
(-> arg0 param 2)
|
|
(command-get-float (-> arg0 param 3) 0.0)
|
|
(command-get-int (-> arg0 param 4) 0)
|
|
)
|
|
)
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-85 (-> *script-form* 37)))
|
|
(set! (-> v1-85 name) 'setting-reset)
|
|
(set! (-> v1-85 spec)
|
|
'((return macro (none))
|
|
(function macro (symbol))
|
|
(setting macro (symbol))
|
|
&key
|
|
(mode eval (object))
|
|
(value eval (bfloat))
|
|
(mask eval (binteger))
|
|
)
|
|
)
|
|
(set! (-> v1-85 func)
|
|
(the-as (function script-context object) (lambda ((arg0 script-context))
|
|
(if (-> arg0 side-effect?)
|
|
(set-setting
|
|
*setting-control*
|
|
(-> arg0 process)
|
|
(the-as symbol (-> arg0 param 1))
|
|
(-> arg0 param 2)
|
|
(command-get-float (-> arg0 param 3) 0.0)
|
|
(command-get-int (-> arg0 param 4) 0)
|
|
)
|
|
)
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-87 (-> *script-form* 38)))
|
|
(set! (-> v1-87 name) 'setting-pers)
|
|
(set! (-> v1-87 spec)
|
|
'((return macro (none))
|
|
(function macro (symbol))
|
|
(setting macro (symbol))
|
|
&key
|
|
(mode eval (object) #f)
|
|
(value macro (bfloat pair) (new 'static 'bfloat))
|
|
(mask eval (binteger) 0)
|
|
(time macro (pair) 0)
|
|
)
|
|
)
|
|
(set! (-> v1-87 func)
|
|
(the-as
|
|
(function script-context object)
|
|
(lambda ((arg0 script-context))
|
|
"
|
|
(setting-pers ambient-volume :mode 'rel :value 0.5)
|
|
"
|
|
(local-vars (sv-16 pair) (sv-24 object) (sv-32 float) (sv-48 float))
|
|
(when (-> arg0 side-effect?)
|
|
(set! sv-16 (-> arg0 expr))
|
|
(set! sv-24 (eval! arg0 (the-as pair (-> arg0 param 5))))
|
|
(set! sv-32 (the-as float (if (pair? (-> arg0 param 3))
|
|
(eval! arg0 (the-as pair (-> arg0 param 3)))
|
|
(command-get-float (-> arg0 param 3) 0.0)
|
|
)
|
|
)
|
|
)
|
|
(let* ((s5-0 *setting-control*)
|
|
(s4-0 (method-of-object s5-0 persist-with-delay))
|
|
(s3-0 sv-16)
|
|
(s2-0 sv-24)
|
|
(s1-0 (-> arg0 param 1))
|
|
(s0-0 (-> arg0 param 2))
|
|
)
|
|
(set! sv-48 sv-32)
|
|
(let ((t2-0 (command-get-int (-> arg0 param 4) 0)))
|
|
(s4-0 s5-0 (the-as symbol s3-0) (the-as time-frame s2-0) (the-as symbol s1-0) (the-as symbol s0-0) sv-48 t2-0)
|
|
)
|
|
)
|
|
)
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-89 (-> *script-form* 39)))
|
|
(set! (-> v1-89 name) 'setting-unset)
|
|
(set! (-> v1-89 spec) '((return macro (none)) (function macro (symbol)) (setting macro (symbol))))
|
|
(set! (-> v1-89 func)
|
|
(the-as
|
|
(function script-context object)
|
|
(lambda ((arg0 script-context))
|
|
(if (-> arg0 side-effect?)
|
|
(remove-setting *setting-control* (-> arg0 process) (the-as symbol (-> arg0 param 1)))
|
|
)
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-91 (-> *script-form* 40)))
|
|
(set! (-> v1-91 name) 'setting-value)
|
|
(set! (-> v1-91 spec) '((return macro (object)) (function macro (symbol)) (setting macro (symbol))))
|
|
(set! (-> v1-91 func) (lambda ((arg0 script-context))
|
|
"return the value of a setting."
|
|
(case (-> arg0 param 1)
|
|
(('entity-name)
|
|
(-> *setting-control* cam-current entity-name)
|
|
)
|
|
(('airlock)
|
|
(-> *setting-control* user-current airlock)
|
|
)
|
|
(('exclusive-task)
|
|
(* (-> *setting-control* user-current exclusive-task) 8)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-93 (-> *script-form* 41)))
|
|
(set! (-> v1-93 name) 'setting-update)
|
|
(set! (-> v1-93 spec) '((return macro (none)) (function macro (symbol))))
|
|
(set! (-> v1-93 func) (the-as (function script-context object) (lambda ((arg0 script-context))
|
|
"update settings"
|
|
(if (-> arg0 side-effect?)
|
|
(apply-settings *setting-control*)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-95 (-> *script-form* 42)))
|
|
(set! (-> v1-95 name) 'sound-play)
|
|
(set! (-> v1-95 spec) '((return macro (none))
|
|
(function macro (symbol))
|
|
(name eval (string))
|
|
&key
|
|
(volume eval (bfloat binteger) (new 'static 'bfloat :data 1.0))
|
|
(pitch-mod eval (bfloat binteger) (new 'static 'bfloat))
|
|
(bend eval (bfloat binteger) (new 'static 'bfloat))
|
|
(trans eval (vector) #f)
|
|
(ground-effect (symbol) #t)
|
|
)
|
|
)
|
|
(set! (-> v1-95 func) (lambda ((arg0 script-context))
|
|
(when (-> arg0 side-effect?)
|
|
(let ((s5-0 sound-play-by-name)
|
|
(s4-0 (string->sound-name (the-as string (-> arg0 param 1))))
|
|
(s3-0 (new-sound-id))
|
|
(s2-0 (the int (* 1024.0 (command-get-float (-> arg0 param 2) 0.0))))
|
|
(s1-0 (the int (* 1524.0 (command-get-float (-> arg0 param 3) 0.0))))
|
|
(t0-0 (the int (* 327.66998 (command-get-float (-> arg0 param 4) 0.0))))
|
|
(t1-0 1)
|
|
(t2-0 (-> arg0 param 5))
|
|
)
|
|
(set! t2-0 (cond
|
|
(t2-0
|
|
(empty)
|
|
t2-0
|
|
)
|
|
(else
|
|
(-> arg0 trans)
|
|
)
|
|
)
|
|
)
|
|
(s5-0 s4-0 s3-0 s2-0 s1-0 t0-0 (the-as sound-group t1-0) t2-0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-97 (-> *script-form* 43)))
|
|
(set! (-> v1-97 name) 'sound-play-loop)
|
|
(set! (-> v1-97 spec)
|
|
'((return macro (none))
|
|
(function macro (symbol))
|
|
(name eval (string))
|
|
&key
|
|
(volume eval (bfloat binteger) (new 'static 'bfloat :data 1.0))
|
|
(pitch-mod eval (bfloat binteger) (new 'static 'bfloat))
|
|
(bend eval (bfloat binteger) (new 'static 'bfloat))
|
|
(trans eval (vector) #f)
|
|
)
|
|
)
|
|
(set! (-> v1-97 func)
|
|
(lambda ((arg0 script-context))
|
|
(when (-> arg0 side-effect?)
|
|
(let ((s3-0 (schedule-callback *sound-loop-engine* (-> arg0 expr) 0)))
|
|
(when s3-0
|
|
(if (zero? (-> s3-0 param-int64 0))
|
|
(set! (-> s3-0 param-int64 0) (the-as int (new-sound-id)))
|
|
)
|
|
(let ((s5-0 sound-play-by-name)
|
|
(s4-0 (string->sound-name (the-as string (-> arg0 param 1))))
|
|
(s3-1 (-> s3-0 param-int64 0))
|
|
(s2-0 (the int (* 1024.0 (command-get-float (-> arg0 param 2) 0.0))))
|
|
(a3-0 (the int (* 1524.0 (command-get-float (-> arg0 param 3) 0.0))))
|
|
(t0-0 0)
|
|
(t1-0 1)
|
|
(t2-0 (-> arg0 param 5))
|
|
)
|
|
(set! t2-0 (cond
|
|
(t2-0
|
|
(empty)
|
|
t2-0
|
|
)
|
|
(else
|
|
(-> arg0 trans)
|
|
)
|
|
)
|
|
)
|
|
(s5-0 s4-0 (the-as sound-id s3-1) s2-0 a3-0 t0-0 (the-as sound-group t1-0) t2-0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-99 (-> *script-form* 44)))
|
|
(set! (-> v1-99 name) 'blackout)
|
|
(set! (-> v1-99 spec) '((return macro (none)) (function macro (symbol)) (time macro (binteger bfloat pair))))
|
|
(set! (-> v1-99 func)
|
|
(the-as
|
|
(function script-context object)
|
|
(lambda ((arg0 script-context))
|
|
(when (-> arg0 side-effect?)
|
|
(let ((a2-0 (if (pair? (-> arg0 param 1))
|
|
(the-as int (command-get-time (-> arg0 param 1) 1))
|
|
(the int (* 5.0000005 (the float (command-get-int (-> arg0 param 1) 0))))
|
|
)
|
|
)
|
|
)
|
|
(persist-with-delay *setting-control* 'blackout (the-as time-frame a2-0) 'bg-a-force 'abs 1.0 0)
|
|
)
|
|
)
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-101 (-> *script-form* 45)))
|
|
(set! (-> v1-101 name) 'fadeout)
|
|
(set! (-> v1-101 spec) '((return macro (none)) (function macro (symbol)) (time macro (binteger bfloat pair))))
|
|
(set! (-> v1-101 func)
|
|
(the-as
|
|
(function script-context object)
|
|
(lambda ((arg0 script-context))
|
|
(when (-> arg0 side-effect?)
|
|
(let ((gp-0 (command-get-time (-> arg0 param 1) 1)))
|
|
(persist-with-delay
|
|
*setting-control*
|
|
'bg-a-speed
|
|
(+ gp-0 (seconds 1))
|
|
'bg-a-speed
|
|
'abs
|
|
(/ 300.0 (the float gp-0))
|
|
0
|
|
)
|
|
(persist-with-delay *setting-control* 'bg-a (+ gp-0 (seconds 1)) 'bg-a 'abs 1.0 0)
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-103 (-> *script-form* 46)))
|
|
(set! (-> v1-103 name) 'fadein)
|
|
(set! (-> v1-103 spec) '((return macro (none)) (function macro (symbol)) (time macro (binteger bfloat pair))))
|
|
(set! (-> v1-103 func)
|
|
(the-as (function script-context object) (lambda ((arg0 script-context))
|
|
(when (-> arg0 side-effect?)
|
|
(let ((gp-0 (command-get-time (-> arg0 param 1) 1)))
|
|
(set! (-> *setting-control* user-current bg-a) 1.0)
|
|
(apply-settings *setting-control*)
|
|
(persist-with-delay
|
|
*setting-control*
|
|
'bg-a-speed
|
|
(+ gp-0 (seconds 1))
|
|
'bg-a-speed
|
|
'abs
|
|
(/ 300.0 (the float gp-0))
|
|
0
|
|
)
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-105 (-> *script-form* 47)))
|
|
(set! (-> v1-105 name) 'time-of-day)
|
|
(set! (-> v1-105 spec) '((return macro (none)) (function macro (symbol)) (value eval (binteger bfloat))))
|
|
(set! (-> v1-105 func) (lambda :behavior time-of-day-proc
|
|
((arg0 script-context))
|
|
(when (-> arg0 side-effect?)
|
|
(let ((v1-1 (command-get-int (-> arg0 param 1) 0)))
|
|
(cond
|
|
((< v1-1 0)
|
|
(send-event (ppointer->process *time-of-day*) 'change 'ratio 1.0)
|
|
)
|
|
(else
|
|
(send-event (ppointer->process *time-of-day*) 'change 'hour v1-1)
|
|
(send-event (ppointer->process *time-of-day*) 'change 'ratio 0.0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-107 (-> *script-form* 48)))
|
|
(set! (-> v1-107 name) 'time-of-day?)
|
|
(set! (-> v1-107 spec) '((return macro (boolean)) (function macro (symbol)) (value macro (symbol))))
|
|
(set! (-> v1-107 func)
|
|
(lambda :behavior time-of-day-proc
|
|
((arg0 script-context))
|
|
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
|
|
(set! (-> a1-0 from) (process->ppointer self))
|
|
(set! (-> a1-0 num-params) 0)
|
|
(set! (-> a1-0 message) 'hour)
|
|
(let ((v1-4 (the-as int (send-event-function (ppointer->process *time-of-day*) a1-0)))
|
|
(a0-3 (-> arg0 param 1))
|
|
)
|
|
(the-as symbol (cond
|
|
((= a0-3 'night)
|
|
(or (>= v1-4 18) (< v1-4 6))
|
|
)
|
|
((= a0-3 'day)
|
|
(and (>= v1-4 6) (< v1-4 18))
|
|
)
|
|
((= a0-3 'dawn)
|
|
(and (>= v1-4 4) (< v1-4 7))
|
|
)
|
|
((= a0-3 'dusk)
|
|
(and (>= v1-4 16) (< v1-4 19))
|
|
)
|
|
(else
|
|
(format 0 "ERROR: SCRIPT: unknown time-of-day? test '~A'~%" (-> arg0 param 1))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-109 (-> *script-form* 49)))
|
|
(set! (-> v1-109 name) 'region-prim)
|
|
(set! (-> v1-109 spec)
|
|
'((return macro (drawable-region-prim)) (function macro (symbol)) (id eval (binteger)))
|
|
)
|
|
(set! (-> v1-109 func) (lambda ((arg0 script-context))
|
|
"lookup a region by number and return the region-prim."
|
|
(region-prim-lookup-by-id (command-get-int (-> arg0 param 1) 0) #f 0)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-111 (-> *script-form* 50)))
|
|
(set! (-> v1-111 name) 'region)
|
|
(set! (-> v1-111 spec)
|
|
'((return macro (drawable-region-prim)) (function macro (symbol)) (id eval (binteger)))
|
|
)
|
|
(set! (-> v1-111 func) (lambda ((arg0 script-context))
|
|
"lookup a region by number and return the region-prim."
|
|
(region-lookup-by-id (command-get-int (-> arg0 param 1) 0))
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-113 (-> *script-form* 51)))
|
|
(set! (-> v1-113 name) 'part-tracker)
|
|
(set! (-> v1-113 spec)
|
|
'((return macro (none))
|
|
(function macro (symbol))
|
|
(name eval (string symbol))
|
|
&key
|
|
(entity eval (string process entity-actor drawable-region-prim #f) #f)
|
|
(joint eval (string) #f)
|
|
(track eval (symbol) #f)
|
|
(duration macro (object) 0)
|
|
)
|
|
)
|
|
(set! (-> v1-113 func)
|
|
(lambda ((arg0 script-context))
|
|
" spawn a part tracker. If the :entity is given, do it at that process's location. Otherwise use the (-> context process), if not that then the (-> context trans).
|
|
"
|
|
(local-vars
|
|
(a1-14 process-tree)
|
|
(sv-80 sparticle-launch-group)
|
|
(sv-84 process-drawable)
|
|
(sv-88 entity)
|
|
(sv-92 drawable-region-prim)
|
|
(sv-96 matrix)
|
|
(sv-104 int)
|
|
(sv-112 object)
|
|
(sv-120 time-frame)
|
|
)
|
|
(when (-> arg0 side-effect?)
|
|
(if (not (-> arg0 param 2))
|
|
(set! (-> arg0 param 2) (-> arg0 process))
|
|
)
|
|
(set! sv-80 (if (logtest? (the-as int (-> arg0 param 1)) 1)
|
|
(lookup-part-group-by-name (symbol->string (the-as symbol (-> arg0 param 1))))
|
|
(lookup-part-group-by-name (the-as string (-> arg0 param 1)))
|
|
)
|
|
)
|
|
(let ((gp-0 (command-get-process (-> arg0 param 2) (the-as process #f))))
|
|
(set! sv-84 (if (type? gp-0 process-drawable)
|
|
(the-as process-drawable gp-0)
|
|
)
|
|
)
|
|
)
|
|
(set! sv-88 (the-as entity #f))
|
|
(set! sv-92 (the-as drawable-region-prim #f))
|
|
(set! sv-96 (matrix-identity! (new 'stack-no-clear 'matrix)))
|
|
(set! sv-104 0)
|
|
(set! sv-112 (-> arg0 param 4))
|
|
(set! sv-120 (command-get-time (-> arg0 param 5) 1))
|
|
(let* ((s4-0 sv-80)
|
|
(gp-1 (if (type? s4-0 sparticle-launch-group)
|
|
s4-0
|
|
)
|
|
)
|
|
(v1-12 (-> arg0 param 2))
|
|
(s4-1 (and (= (rtype-of v1-12) string) (string= (the-as string (-> arg0 param 2)) "zero")))
|
|
)
|
|
(cond
|
|
(gp-1
|
|
(when (not sv-84)
|
|
(set! sv-112 #f)
|
|
(set! sv-88 (command-get-entity (-> arg0 param 2) (the-as entity #f)))
|
|
(when (not sv-88)
|
|
(let ((s3-0 (-> arg0 param 2)))
|
|
(set! sv-92 (if (type? s3-0 drawable-region-prim)
|
|
(the-as drawable-region-prim s3-0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(if (and (not sv-84) (and (not sv-88) (-> arg0 param 2) (not s4-1)))
|
|
(format 0 "ERROR: SCRIPT: part-tracker: unknown entity ~A in:~%~T~A~%" (-> arg0 param 2) (-> arg0 expr))
|
|
)
|
|
(when (or sv-84 sv-88 sv-92 (-> arg0 trans) s4-1)
|
|
(cond
|
|
((and sv-84 (nonzero? (-> sv-84 root)))
|
|
(let ((a1-9 (-> arg0 param 3)))
|
|
(cond
|
|
(a1-9
|
|
(let ((v1-37 (if (nonzero? (-> sv-84 draw))
|
|
(the-as joint (get-art-by-name-method (-> sv-84 draw jgeo) (the-as string a1-9) (the-as type #f)))
|
|
)
|
|
)
|
|
)
|
|
(cond
|
|
(v1-37
|
|
(set! sv-104 (+ (-> v1-37 number) 1))
|
|
(let ((a1-10 (-> sv-84 node-list data sv-104)))
|
|
(let* ((v1-46 sv-96)
|
|
(t0-0 (-> a1-10 bone transform))
|
|
(a0-23 (-> t0-0 quad 0))
|
|
(a2-2 (-> t0-0 quad 1))
|
|
(a3-1 (-> t0-0 quad 2))
|
|
(t0-1 (-> t0-0 trans quad))
|
|
)
|
|
(set! (-> v1-46 quad 0) a0-23)
|
|
(set! (-> v1-46 quad 1) a2-2)
|
|
(set! (-> v1-46 quad 2) a3-1)
|
|
(set! (-> v1-46 trans quad) t0-1)
|
|
)
|
|
(vector<-cspace! (-> sv-96 trans) a1-10)
|
|
)
|
|
)
|
|
(else
|
|
(format 0 "ERROR: SCRIPT: part-tracker: unknown joint ~A in:~%~T~A~%" (-> arg0 param 3) (-> arg0 expr))
|
|
(set! (-> sv-96 trans quad) (-> sv-84 root trans quad))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(set! (-> sv-96 trans quad) (-> sv-84 root trans quad))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(sv-88
|
|
(set! (-> sv-96 trans quad) (-> sv-88 extra trans quad))
|
|
)
|
|
(sv-92
|
|
(set! (-> sv-96 trans quad) (-> sv-92 bsphere quad))
|
|
)
|
|
(s4-1
|
|
(set! (-> sv-96 trans quad) (-> *null-vector* quad))
|
|
)
|
|
(else
|
|
(set! (-> sv-96 trans quad) (-> arg0 trans quad))
|
|
)
|
|
)
|
|
)
|
|
(when (logtest? (-> sv-80 flags) (sp-group-flag screen-space))
|
|
(let* ((a2-4 sv-96)
|
|
(a3-3 *identity-matrix*)
|
|
(v1-67 (-> a3-3 quad 0))
|
|
(a0-45 (-> a3-3 quad 1))
|
|
(a1-12 (-> a3-3 quad 2))
|
|
(a3-4 (-> a3-3 trans quad))
|
|
)
|
|
(set! (-> a2-4 quad 0) v1-67)
|
|
(set! (-> a2-4 quad 1) a0-45)
|
|
(set! (-> a2-4 quad 2) a1-12)
|
|
(set! (-> a2-4 trans quad) a3-4)
|
|
)
|
|
)
|
|
(let ((s5-1 (get-process *default-dead-pool* part-tracker #x4000)))
|
|
(when s5-1
|
|
(let ((t9-15 (method-of-type part-tracker activate))
|
|
(a0-47 s5-1)
|
|
)
|
|
(set! a1-14 (cond
|
|
(sv-112
|
|
sv-84
|
|
)
|
|
(else
|
|
(set! a1-14 (ppointer->process (-> *setting-control* user-current movie)))
|
|
(cond
|
|
((the-as process a1-14)
|
|
(empty)
|
|
a1-14
|
|
)
|
|
(else
|
|
*entity-pool*
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(t9-15
|
|
(the-as part-tracker a0-47)
|
|
a1-14
|
|
(symbol->string (-> part-tracker symbol))
|
|
(the-as pointer #x70004000)
|
|
)
|
|
)
|
|
(run-now-in-process
|
|
s5-1
|
|
part-tracker-init
|
|
gp-1
|
|
sv-120
|
|
#f
|
|
#f
|
|
(if sv-112
|
|
sv-84
|
|
(the-as process-drawable #f)
|
|
)
|
|
(if sv-112
|
|
sv-104
|
|
sv-96
|
|
)
|
|
)
|
|
(-> s5-1 ppointer)
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(format
|
|
0
|
|
"ERROR: SCRIPT: part-tracker: unknown particle group \"~S\" in:~%~T~A~%"
|
|
(-> arg0 param 1)
|
|
(-> arg0 expr)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-115 (-> *script-form* 52)))
|
|
(set! (-> v1-115 name) 'lightning-tracker)
|
|
(set! (-> v1-115 spec)
|
|
'((return macro (none))
|
|
(function macro (symbol))
|
|
(name eval (string symbol))
|
|
&key
|
|
(from-entity eval (string process entity-actor drawable-region-prim #f) #f)
|
|
(to-entity eval (string process entity-actor drawable-region-prim #f) #f)
|
|
(from-joint eval (string) #f)
|
|
(to-joint eval (string) #f)
|
|
(duration macro (object) 0)
|
|
)
|
|
)
|
|
(set! (-> v1-115 func)
|
|
(the-as
|
|
(function script-context object)
|
|
(lambda ((arg0 script-context))
|
|
(local-vars (sv-48 vector) (sv-52 vector) (sv-56 int) (sv-64 int) (sv-72 time-frame) (sv-80 lightning-spec))
|
|
(when (-> arg0 side-effect?)
|
|
(if (not (-> arg0 param 2))
|
|
(set! (-> arg0 param 2) (-> arg0 process))
|
|
)
|
|
(if (logtest? (the-as int (-> arg0 param 1)) 1)
|
|
(set! sv-80 (lookup-lightning-spec-by-name (symbol->string (the-as symbol (-> arg0 param 1)))))
|
|
(set! sv-80 (lookup-lightning-spec-by-name (the-as string (-> arg0 param 1))))
|
|
)
|
|
(let* ((s5-0 (command-get-process (-> arg0 param 2) (the-as process #f)))
|
|
(gp-0 (if (type? s5-0 process-drawable)
|
|
(the-as process-drawable s5-0)
|
|
)
|
|
)
|
|
(s5-1 (command-get-process (-> arg0 param 3) (the-as process #f)))
|
|
(s4-0 (if (type? s5-1 process-drawable)
|
|
(the-as process-drawable s5-1)
|
|
)
|
|
)
|
|
(s0-0 (the-as entity #f))
|
|
(s1-0 (the-as entity #f))
|
|
(s5-2 #f)
|
|
)
|
|
(set! sv-48 (vector-reset! (new 'stack-no-clear 'vector)))
|
|
(set! sv-52 (vector-reset! (new 'stack-no-clear 'vector)))
|
|
(set! sv-56 0)
|
|
(set! sv-64 0)
|
|
(set! sv-72 (command-get-time (-> arg0 param 6) 1))
|
|
(let ((s3-0 (if (type? sv-80 lightning-spec)
|
|
sv-80
|
|
)
|
|
)
|
|
)
|
|
(when s3-0
|
|
(if (not gp-0)
|
|
(set! s0-0 (command-get-entity (-> arg0 param 2) (the-as entity #f)))
|
|
)
|
|
(if (not s4-0)
|
|
(set! s1-0 (command-get-entity (-> arg0 param 3) (the-as entity #f)))
|
|
)
|
|
(when (or (and gp-0 s4-0) (and s0-0 s1-0))
|
|
(cond
|
|
((and gp-0 s4-0)
|
|
(set! s5-2 #t)
|
|
(let ((s0-1 (-> arg0 param 4))
|
|
(s1-1 (-> arg0 param 5))
|
|
)
|
|
(cond
|
|
(s0-1
|
|
(let ((v1-21 (the-as joint (get-art-by-name-method (-> gp-0 draw jgeo) (the-as string s0-1) (the-as type #f)))))
|
|
(cond
|
|
(v1-21
|
|
(set! sv-56 (+ (-> v1-21 number) 1))
|
|
(let ((a1-9 (-> gp-0 node-list data sv-56)))
|
|
(vector<-cspace! sv-48 a1-9)
|
|
)
|
|
)
|
|
(else
|
|
(format 0 "ERROR: SCRIPT: lightning-tracker: unknown from-joint ~A in:~%~T~A~%" s0-1 (-> arg0 expr))
|
|
(set! (-> sv-48 quad) (-> gp-0 root trans quad))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(set! (-> sv-48 quad) (-> gp-0 root trans quad))
|
|
)
|
|
)
|
|
(cond
|
|
(s1-1
|
|
(let ((v1-32 (the-as joint (get-art-by-name-method (-> s4-0 draw jgeo) (the-as string s1-1) (the-as type #f)))))
|
|
(cond
|
|
(v1-32
|
|
(set! sv-64 (+ (-> v1-32 number) 1))
|
|
(let ((a1-12 (-> s4-0 node-list data sv-64)))
|
|
(vector<-cspace! sv-52 a1-12)
|
|
)
|
|
)
|
|
(else
|
|
(format 0 "ERROR: SCRIPT: lightning-tracker: unknown to-joint ~A in:~%~T~A~%" s1-1 (-> arg0 expr))
|
|
(set! (-> sv-52 quad) (-> s4-0 root trans quad))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(set! (-> sv-52 quad) (-> s4-0 root trans quad))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
((and s0-0 s1-0)
|
|
(set! (-> sv-48 quad) (-> s0-0 extra trans quad))
|
|
(set! (-> sv-52 quad) (-> s1-0 extra trans quad))
|
|
)
|
|
)
|
|
)
|
|
(process-spawn
|
|
lightning-tracker
|
|
:init lightning-tracker-init
|
|
s3-0
|
|
sv-72
|
|
#f
|
|
(cond
|
|
(s5-2
|
|
(empty)
|
|
gp-0
|
|
)
|
|
(else
|
|
(the-as process-drawable #f)
|
|
)
|
|
)
|
|
(if s5-2
|
|
sv-56
|
|
sv-48
|
|
)
|
|
(if s5-2
|
|
sv-64
|
|
sv-52
|
|
)
|
|
:to (cond
|
|
(s5-2
|
|
(empty)
|
|
s4-0
|
|
)
|
|
(else
|
|
(let ((v1-48 (-> *setting-control* user-current movie)))
|
|
(set! s4-0 (if v1-48
|
|
(the-as process-drawable (-> v1-48 0 self))
|
|
)
|
|
)
|
|
)
|
|
(cond
|
|
(s4-0
|
|
(empty)
|
|
s4-0
|
|
)
|
|
(else
|
|
(the-as process-drawable *entity-pool*)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-117 (-> *script-form* 53)))
|
|
(set! (-> v1-117 name) 'joint-eval)
|
|
(set! (-> v1-117 spec)
|
|
'((return macro (none))
|
|
(function macro (symbol))
|
|
(lambda eval (function))
|
|
&key
|
|
(entity eval (string process entity-actor #f) #f)
|
|
(joint eval (string) #f)
|
|
)
|
|
)
|
|
(set! (-> v1-117 func)
|
|
(the-as
|
|
(function script-context object)
|
|
(lambda ((arg0 script-context))
|
|
" call a (lambda (process vector cspace)) on the specified location.
|
|
|
|
e.g `(joint-eval ,(lambda ((proc process) (trans vector) (cs cspace)) (format #t \"~A ~`vector`P ~`cspace`P~%\" proc trans cs)) :entity *target* :joint \"neckB\")
|
|
|
|
proc - the process or #f
|
|
trans - the position specified (will always be true)
|
|
cs - the cspace, or #f
|
|
|
|
"
|
|
(when (-> arg0 side-effect?)
|
|
(if (not (-> arg0 param 2))
|
|
(set! (-> arg0 param 2) (-> arg0 process))
|
|
)
|
|
(let* ((s5-0 (-> arg0 param 1))
|
|
(gp-0 (if (type? s5-0 function)
|
|
(the-as (function process vector cspace none) s5-0)
|
|
)
|
|
)
|
|
(s3-0 (command-get-process (-> arg0 param 2) (the-as process #f)))
|
|
(s5-1 (if (type? s3-0 process-drawable)
|
|
(the-as process-drawable s3-0)
|
|
)
|
|
)
|
|
(v1-5 (the-as entity #f))
|
|
)
|
|
(let ((s3-1 (the-as object #f)))
|
|
(if (not s5-1)
|
|
(set! v1-5 (command-get-entity (-> arg0 param 2) (the-as entity #f)))
|
|
)
|
|
(if (or s5-1 v1-5 (-> arg0 trans))
|
|
(gp-0
|
|
s5-1
|
|
(cond
|
|
((and s5-1 (nonzero? (-> s5-1 draw)) (nonzero? (-> s5-1 node-list)))
|
|
(let ((a1-5 (-> arg0 param 3)))
|
|
(cond
|
|
(a1-5
|
|
(let ((v1-8 (the-as joint (get-art-by-name-method (-> s5-1 draw jgeo) (the-as string a1-5) (the-as type #f)))))
|
|
(cond
|
|
(v1-8
|
|
(set! s3-1 (-> s5-1 node-list data (+ (-> v1-8 number) 1)))
|
|
(vector<-cspace! (new 'stack-no-clear 'vector) (the-as cspace s3-1))
|
|
)
|
|
(else
|
|
(format 0 "ERROR: SCRIPT: joint-eval: unknown joint ~A in:~%~T~A~%" (-> arg0 param 3) (-> arg0 expr))
|
|
(set! s3-1 (-> s5-1 node-list data))
|
|
(-> s5-1 root trans)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(set! s3-1 (-> s5-1 node-list data))
|
|
(-> s5-1 root trans)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(v1-5
|
|
(-> v1-5 extra trans)
|
|
)
|
|
(else
|
|
(-> arg0 trans)
|
|
)
|
|
)
|
|
(the-as cspace s3-1)
|
|
)
|
|
(format 0 "ERROR: SCRIPT: joint-eval: unknown entity ~A in:~%~T~A~%" (-> arg0 param 2) (-> arg0 expr))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-119 (-> *script-form* 54)))
|
|
(set! (-> v1-119 name) 'auto-save)
|
|
(set! (-> v1-119 spec) '((return macro (none)) (function macro (symbol)) (value eval (symbol))))
|
|
(set! (-> v1-119 func) (the-as
|
|
(function script-context object)
|
|
(lambda ((arg0 script-context))
|
|
(if (-> arg0 side-effect?)
|
|
(auto-save-command (the-as symbol (-> arg0 param 1)) 0 0 *default-pool* #f)
|
|
)
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-121 (-> *script-form* 55)))
|
|
(set! (-> v1-121 name) 'teleport)
|
|
(set! (-> v1-121 spec) '((return macro (none)) (function macro (symbol))))
|
|
(set! (-> v1-121 func) (lambda ((arg0 script-context)) (when (-> arg0 side-effect?)
|
|
(let ((v0-0 #t))
|
|
(set! *teleport* v0-0)
|
|
v0-0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-123 (-> *script-form* 56)))
|
|
(set! (-> v1-123 name) 'scene-play)
|
|
(set! (-> v1-123 spec) '((return macro (none)) (function macro (symbol)) (name eval (string pair))))
|
|
(set! (-> v1-123 func) (lambda ((arg0 script-context))
|
|
(if (and (-> arg0 side-effect?)
|
|
*target*
|
|
(not *scene-player*)
|
|
(not (logtest? (-> *target* focus-status) (focus-status dead)))
|
|
)
|
|
(process-spawn scene-player :init scene-player-init (-> arg0 param 1) #t #f)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-125 (-> *script-form* 57)))
|
|
(set! (-> v1-125 name) 'kill)
|
|
(set! (-> v1-125 spec)
|
|
'((return macro (none))
|
|
(function macro (symbol))
|
|
(entity eval (string entity-actor process #f))
|
|
&key
|
|
(store eval (symbol) #t)
|
|
)
|
|
)
|
|
(set! (-> v1-125 func)
|
|
(lambda ((arg0 script-context))
|
|
"Store an entity's state in the load-state and then kill him and set him to be dead."
|
|
(local-vars (v0-0 entity-perm-status) (v1-5 int))
|
|
(when (-> arg0 side-effect?)
|
|
(let* ((s5-0 (-> arg0 load-state))
|
|
(s3-0 (command-get-entity (-> arg0 param 1) (the-as entity #f)))
|
|
(gp-0 (if (type? s3-0 entity-actor)
|
|
s3-0
|
|
)
|
|
)
|
|
)
|
|
(when gp-0
|
|
(let ((a0-4 (res-lump-struct gp-0 'name structure)))
|
|
(cond
|
|
((-> arg0 param 2)
|
|
(dotimes (v1-4 256)
|
|
(when (not (-> s5-0 object-name v1-4))
|
|
(set! (-> s5-0 object-name v1-4) (the-as string a0-4))
|
|
(set! (-> s5-0 object-status v1-4) (the-as basic (-> gp-0 extra perm status)))
|
|
(set! v1-5 v1-4)
|
|
(goto cfg-12)
|
|
)
|
|
)
|
|
(set! v1-5 -1)
|
|
(label cfg-12)
|
|
(when (>= v1-5 0)
|
|
(if (-> gp-0 extra process)
|
|
(kill! gp-0)
|
|
)
|
|
(set! v0-0 (logior (-> gp-0 extra perm status) (entity-perm-status dead)))
|
|
(set! (-> gp-0 extra perm status) v0-0)
|
|
v0-0
|
|
)
|
|
)
|
|
(else
|
|
(if (-> gp-0 extra process)
|
|
(kill! gp-0)
|
|
)
|
|
(set! v0-0 (logior (-> gp-0 extra perm status) (entity-perm-status dead)))
|
|
(set! (-> gp-0 extra perm status) v0-0)
|
|
v0-0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-127 (-> *script-form* 58)))
|
|
(set! (-> v1-127 name) 'alive)
|
|
(set! (-> v1-127 spec)
|
|
'((return macro (none))
|
|
(function macro (symbol))
|
|
(entity eval (string entity-actor process #f))
|
|
&key
|
|
(store eval (symbol) #t)
|
|
)
|
|
)
|
|
(set! (-> v1-127 func)
|
|
(the-as
|
|
(function script-context object)
|
|
(lambda ((arg0 script-context))
|
|
"Store an entity's state in the load-state and then force him to be alive."
|
|
(local-vars (v1-12 int))
|
|
(when (-> arg0 side-effect?)
|
|
(let* ((s5-0 (-> arg0 load-state))
|
|
(s3-0 (command-get-entity (-> arg0 param 1) (the-as entity #f)))
|
|
(gp-0 (if (type? s3-0 entity-actor)
|
|
s3-0
|
|
)
|
|
)
|
|
)
|
|
(when gp-0
|
|
(cond
|
|
((-> arg0 param 2)
|
|
(dotimes (s4-1 256)
|
|
(when (not (-> s5-0 object-name s4-1))
|
|
(set! (-> s5-0 object-name s4-1) (res-lump-struct gp-0 'name string))
|
|
(set! (-> s5-0 object-status s4-1) (the-as basic (-> gp-0 extra perm status)))
|
|
(set! v1-12 s4-1)
|
|
(goto cfg-12)
|
|
)
|
|
)
|
|
(set! v1-12 -1)
|
|
(label cfg-12)
|
|
(when (>= v1-12 0)
|
|
(entity-birth-no-kill gp-0)
|
|
(let ((v1-16 (-> gp-0 extra process)))
|
|
(when v1-16
|
|
(logclear! (-> v1-16 mask) (process-mask actor-pause))
|
|
(logclear! (-> v1-16 mask) (-> *kernel-context* prevent-from-run))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(entity-birth-no-kill gp-0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-129 (-> *script-form* 59)))
|
|
(set! (-> v1-129 name) 'restore)
|
|
(set! (-> v1-129 spec)
|
|
'((return macro (none)) (function macro (symbol)) (entity eval (string entity-actor process #f)))
|
|
)
|
|
(set! (-> v1-129 func)
|
|
(lambda ((arg0 script-context))
|
|
"restore an entity's state fromt he load-state storage. Will reset him if he is alive."
|
|
(when (-> arg0 side-effect?)
|
|
(let* ((gp-0 (-> arg0 load-state))
|
|
(s4-0 (command-get-entity (-> arg0 param 1) (the-as entity #f)))
|
|
(s5-0 (if (type? s4-0 entity-actor)
|
|
s4-0
|
|
)
|
|
)
|
|
)
|
|
(when s5-0
|
|
(let ((s3-0 (res-lump-struct s5-0 'name structure)))
|
|
(dotimes (s4-1 256)
|
|
(when (string= (-> gp-0 object-name s4-1) (the-as string s3-0))
|
|
(set! (-> s5-0 extra perm status) (the-as entity-perm-status (-> gp-0 object-status s4-1)))
|
|
(if (-> s5-0 extra process)
|
|
(kill! s5-0)
|
|
)
|
|
(set! (-> gp-0 object-name s4-1) #f)
|
|
(return #f)
|
|
)
|
|
)
|
|
)
|
|
#f
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-131 (-> *script-form* 60)))
|
|
(set! (-> v1-131 name) 'special)
|
|
(set! (-> v1-131 spec)
|
|
'((return macro (none))
|
|
(function macro (symbol))
|
|
(entity eval (string entity-actor process #f))
|
|
(value eval (symbol))
|
|
)
|
|
)
|
|
(set! (-> v1-131 func)
|
|
(the-as
|
|
(function script-context object)
|
|
(lambda ((arg0 script-context))
|
|
"make a guy special or not."
|
|
(when (-> arg0 side-effect?)
|
|
(let* ((s5-0 (command-get-entity (-> arg0 param 1) (the-as entity #f)))
|
|
(a0-3 (if (type? s5-0 entity-actor)
|
|
(the-as entity-actor s5-0)
|
|
)
|
|
)
|
|
)
|
|
(if a0-3
|
|
(toggle-status a0-3 (entity-perm-status bit-7) (the-as symbol (-> arg0 param 2)))
|
|
)
|
|
)
|
|
)
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-133 (-> *script-form* 61)))
|
|
(set! (-> v1-133 name) 'save)
|
|
(set! (-> v1-133 spec) '((return macro (none)) (function macro (symbol))))
|
|
(set! (-> v1-133 func) (lambda ((arg0 script-context))
|
|
"make changes permanent."
|
|
(when (-> arg0 side-effect?)
|
|
(mem-copy! (&-> *backup-load-state* type) (&-> (-> arg0 load-state) type) 2168)
|
|
(set! (-> *backup-load-state* command-list) '())
|
|
(dotimes (v1-5 256)
|
|
(if (-> *backup-load-state* object-name v1-5)
|
|
(set! (-> *backup-load-state* object-name v1-5) #f)
|
|
)
|
|
)
|
|
#f
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-135 (-> *script-form* 62)))
|
|
(set! (-> v1-135 name) 'task-close!)
|
|
(set! (-> v1-135 spec) '((return macro (none)) (function macro (symbol)) (task eval (binteger string))))
|
|
(set! (-> v1-135 func)
|
|
(the-as
|
|
(function script-context object)
|
|
(lambda ((arg0 script-context))
|
|
"close a task stage."
|
|
(when (-> arg0 side-effect?)
|
|
(cond
|
|
((not (logtest? (the-as int (-> arg0 param 1)) 7))
|
|
(task-node-close! (the-as game-task-node (command-get-int (-> arg0 param 1) 0)))
|
|
)
|
|
(else
|
|
(let ((s5-1 (-> arg0 param 1)))
|
|
(let ((s4-0 (-> *game-info* sub-task-list)))
|
|
(dotimes (s3-0 (-> s4-0 length))
|
|
(when (nonzero? s3-0)
|
|
(let ((s2-0 (-> s4-0 s3-0)))
|
|
(when (string= (the-as string s5-1) (-> s2-0 name))
|
|
(close! s2-0 'event)
|
|
(return 0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(format 0 "ERROR: SCRIPT: unknown task-node ~A in command ~A.~%" s5-1 (-> arg0 expr))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-137 (-> *script-form* 63)))
|
|
(set! (-> v1-137 name) 'task-open!)
|
|
(set! (-> v1-137 spec) '((return macro (none)) (function macro (symbol)) (task eval (binteger string))))
|
|
(set! (-> v1-137 func)
|
|
(the-as
|
|
(function script-context object)
|
|
(lambda ((arg0 script-context))
|
|
"close a task stage."
|
|
(when (-> arg0 side-effect?)
|
|
(cond
|
|
((not (logtest? (the-as int (-> arg0 param 1)) 7))
|
|
(task-node-open! (the-as game-task-node (command-get-int (-> arg0 param 1) 0)))
|
|
)
|
|
(else
|
|
(let ((s5-1 (-> arg0 param 1)))
|
|
(let ((s4-0 (-> *game-info* sub-task-list)))
|
|
(dotimes (s3-0 (-> s4-0 length))
|
|
(when (nonzero? s3-0)
|
|
(let ((s2-0 (-> s4-0 s3-0)))
|
|
(when (string= (the-as string s5-1) (-> s2-0 name))
|
|
(open! s2-0 'event)
|
|
(return 0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(format 0 "ERROR: SCRIPT: unknown task-node ~A in command ~A.~%" s5-1 (-> arg0 expr))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-139 (-> *script-form* 64)))
|
|
(set! (-> v1-139 name) 'task-complete?)
|
|
(set! (-> v1-139 spec) '((return macro (none)) (function macro (symbol)) (task eval (binteger))))
|
|
(set! (-> v1-139 func)
|
|
(lambda ((arg0 script-context))
|
|
"test whether the need resolution stage of a task is closed (actually tests the bit array)"
|
|
(task-complete? *game-info* (the-as game-task (command-get-int (-> arg0 param 1) 0)))
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-141 (-> *script-form* 65)))
|
|
(set! (-> v1-141 name) 'task-closed?)
|
|
(set! (-> v1-141 spec) '((return macro (boolean)) (function macro (symbol)) (task eval (binteger string))))
|
|
(set! (-> v1-141 func)
|
|
(lambda ((arg0 script-context))
|
|
"test whether the need resolution stage of a task is closed (actually tests the bit array)"
|
|
(cond
|
|
((not (logtest? (the-as int (-> arg0 param 1)) 7))
|
|
(task-node-closed? (the-as game-task-node (command-get-int (-> arg0 param 1) 0)))
|
|
)
|
|
(else
|
|
(let ((s5-1 (-> arg0 param 1)))
|
|
(let ((s4-0 (-> *game-info* sub-task-list)))
|
|
(dotimes (s3-0 (-> s4-0 length))
|
|
(when (nonzero? s3-0)
|
|
(let ((s2-0 (-> s4-0 s3-0)))
|
|
(if (string= (the-as string s5-1) (-> s2-0 name))
|
|
(return (logtest? (-> s2-0 flags) (game-task-node-flag closed)))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(format 0 "ERROR: SCRIPT: unknown task-node ~A in command ~A.~%" s5-1 (-> arg0 expr))
|
|
)
|
|
)
|
|
)
|
|
#f
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-143 (-> *script-form* 66)))
|
|
(set! (-> v1-143 name) 'task-open?)
|
|
(set! (-> v1-143 spec) '((return macro (boolean)) (function macro (symbol)) (task eval (string))))
|
|
(set! (-> v1-143 func)
|
|
(lambda ((arg0 script-context))
|
|
"test whether the need resolution stage of a task is closed (actually tests the bit array)"
|
|
(let ((s5-0 (-> arg0 param 1)))
|
|
(let ((s4-0 (-> *game-info* sub-task-list))
|
|
(s3-0 0)
|
|
)
|
|
(while (< s3-0 (-> s4-0 length))
|
|
(when (nonzero? s3-0)
|
|
(let ((v1-5 (-> s4-0 s3-0)))
|
|
(if (string= (the-as string s5-0) (-> v1-5 name))
|
|
(return (task-node-open? (the-as game-task-node s3-0)))
|
|
)
|
|
)
|
|
)
|
|
(set! s3-0 (+ s3-0 1))
|
|
)
|
|
)
|
|
(format 0 "ERROR: SCRIPT: unknown task-node ~A in command ~A.~%" s5-0 (-> arg0 expr))
|
|
)
|
|
#f
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-145 (-> *script-form* 67)))
|
|
(set! (-> v1-145 name) 'play-task)
|
|
(set! (-> v1-145 spec) '((return macro (none)) (function macro (symbol)) (task eval (binteger))))
|
|
(set! (-> v1-145 func) (lambda ((arg0 script-context))
|
|
"set the attributes for a task."
|
|
(if (-> arg0 side-effect?)
|
|
(play-task (the-as game-task (command-get-int (-> arg0 param 1) 0)) 'debug #f)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-147 (-> *script-form* 68)))
|
|
(set! (-> v1-147 name) 'task-manager)
|
|
(set! (-> v1-147 spec)
|
|
'((return macro (process))
|
|
(function macro (symbol))
|
|
&key
|
|
(type macro (symbol) task-manager)
|
|
(level macro (symbol) #f)
|
|
)
|
|
)
|
|
(set! (-> v1-147 func)
|
|
(lambda ((arg0 script-context))
|
|
"set the attributes for a task."
|
|
(when (-> arg0 side-effect?)
|
|
(let* ((s4-0 (-> arg0 key))
|
|
(gp-0 (if (type? s4-0 game-task-node-info)
|
|
(the-as game-task-node-info s4-0)
|
|
)
|
|
)
|
|
(s3-0 (-> (the-as symbol (-> arg0 param 1)) value))
|
|
(s4-1 (if (type? s3-0 type)
|
|
s3-0
|
|
)
|
|
)
|
|
(s5-1 (-> arg0 param 2))
|
|
)
|
|
(set! s5-1 (cond
|
|
(s5-1
|
|
(empty)
|
|
s5-1
|
|
)
|
|
(else
|
|
(if (and gp-0 (-> gp-0 info))
|
|
(-> gp-0 info level)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(cond
|
|
((and gp-0 (-> gp-0 info) s4-1 (or (not s5-1) (= (level-status *level* (the-as symbol s5-1)) 'active)))
|
|
(when (not (handle->process (-> gp-0 info manager)))
|
|
(let* ((s4-2 (get-process *default-dead-pool* (the-as type s4-1) #x4000))
|
|
(v0-0
|
|
(the-as object (ppointer->handle (when s4-2
|
|
(let ((t9-4 (method-of-type process activate)))
|
|
(t9-4 s4-2 *entity-pool* (-> gp-0 name) (the-as pointer #x70004000))
|
|
)
|
|
(run-now-in-process s4-2 task-manager-init-by-other gp-0 s5-1)
|
|
(-> s4-2 ppointer)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(set! (-> gp-0 info manager) (the-as handle v0-0))
|
|
v0-0
|
|
)
|
|
)
|
|
)
|
|
(*debug-segment*
|
|
(format 0 "ERROR: SCRIPT: could not spawn task-manager for node ~A level ~A~%" gp-0 s5-1)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-149 (-> *script-form* 69)))
|
|
(set! (-> v1-149 name) 'water)
|
|
(set! (-> v1-149 spec) '((return macro (pair))
|
|
(function macro (symbol))
|
|
(mode macro (symbol))
|
|
(data eval (object))
|
|
(params macro (pair))
|
|
)
|
|
)
|
|
(set! (-> v1-149 func) (lambda :behavior process
|
|
((arg0 script-context))
|
|
"define a water volume. command does nothing, just defines the syntax."
|
|
(-> arg0 expr)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-151 (-> *script-form* 70)))
|
|
(set! (-> v1-151 name) 'movie?)
|
|
(set! (-> v1-151 spec) '((return macro (boolean)) (function macro (symbol))))
|
|
(set! (-> v1-151 func) (lambda ((arg0 script-context)) (movie?)))
|
|
)
|
|
|
|
(let ((v1-153 (-> *script-form* 71)))
|
|
(set! (-> v1-153 name) 'demo?)
|
|
(set! (-> v1-153 spec) '((return macro (boolean)) (function macro (symbol))))
|
|
(set! (-> v1-153 func) (lambda ((arg0 script-context)) "are we in demo?" (demo?)))
|
|
)
|
|
|
|
(let ((v1-155 (-> *script-form* 72)))
|
|
(set! (-> v1-155 name) 'scene-player?)
|
|
(set! (-> v1-155 spec) '((return macro (boolean)) (function macro (symbol))))
|
|
(set! (-> v1-155 func)
|
|
(lambda ((arg0 script-context))
|
|
"test whether the need resolution stage of a task is closed (actually tests the bit array)"
|
|
(if *scene-player*
|
|
#t
|
|
#f
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-157 (-> *script-form* 73)))
|
|
(set! (-> v1-157 name) 'talker-spawn)
|
|
(set! (-> v1-157 spec) '((return macro (binteger)) (function macro (symbol)) (message eval (string))))
|
|
(set! (-> v1-157 func)
|
|
(the-as
|
|
(function script-context object)
|
|
(lambda :behavior process
|
|
((arg0 script-context))
|
|
(if (-> arg0 side-effect?)
|
|
(* (talker-spawn-func
|
|
(string->talker-speech (the-as string (-> arg0 param 1)))
|
|
*entity-pool*
|
|
(target-pos 0)
|
|
(the-as region (-> arg0 key))
|
|
)
|
|
8)
|
|
0
|
|
)
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-159 (-> *script-form* 74)))
|
|
(set! (-> v1-159 name) 'mark-played!)
|
|
(set! (-> v1-159 spec) '((return macro (none)) (function macro (symbol)) (message eval (string))))
|
|
(set! (-> v1-159 func) (the-as
|
|
(function script-context object)
|
|
(lambda :behavior process
|
|
((arg0 script-context))
|
|
(when (-> arg0 side-effect?)
|
|
(let ((a0-2 (string->talker-speech (the-as string (-> arg0 param 1)))))
|
|
(if a0-2
|
|
(play-communicator-speech! a0-2)
|
|
)
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-161 (-> *script-form* 75)))
|
|
(set! (-> v1-161 name) 'yes-play!)
|
|
(set! (-> v1-161 spec)
|
|
'((return macro (none)) (function macro (symbol)) (message eval (string)) (count eval (binteger bfloat)))
|
|
)
|
|
(set! (-> v1-161 func) (the-as
|
|
(function script-context object)
|
|
(lambda :behavior process
|
|
((arg0 script-context))
|
|
(when (-> arg0 side-effect?)
|
|
(let ((s5-0 (string->talker-speech (the-as string (-> arg0 param 1))))
|
|
(a1-1 (command-get-int (-> arg0 param 2) 0))
|
|
)
|
|
(if s5-0
|
|
(talker-speech-class-method-12 s5-0 a1-1)
|
|
)
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-163 (-> *script-form* 76)))
|
|
(set! (-> v1-163 name) 'no-play!)
|
|
(set! (-> v1-163 spec)
|
|
'((return macro (none)) (function macro (symbol)) (message eval (string)) (count eval (binteger bfloat)))
|
|
)
|
|
(set! (-> v1-163 func) (the-as
|
|
(function script-context object)
|
|
(lambda :behavior process
|
|
((arg0 script-context))
|
|
(when (-> arg0 side-effect?)
|
|
(let ((s5-0 (string->talker-speech (the-as string (-> arg0 param 1))))
|
|
(a1-1 (command-get-int (-> arg0 param 2) 0))
|
|
)
|
|
(if s5-0
|
|
(talker-speech-class-method-13 s5-0 a1-1)
|
|
)
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-165 (-> *script-form* 77)))
|
|
(set! (-> v1-165 name) 'endlessfall)
|
|
(set! (-> v1-165 spec) '((return macro (object)) (function macro (symbol))))
|
|
(set! (-> v1-165 func)
|
|
(lambda :behavior process
|
|
((arg0 script-context))
|
|
(if (-> arg0 side-effect?)
|
|
(send-event *target* 'attack-invinc #f (static-attack-info ((id (the-as uint 2)) (mode 'endlessfall))))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-167 (-> *script-form* 78)))
|
|
(set! (-> v1-167 name) 'birth-pickup)
|
|
(set! (-> v1-167 spec)
|
|
'((return macro (process))
|
|
(function macro (symbol))
|
|
(trans macro (vector symbol string pair))
|
|
(pickup macro (symbol))
|
|
(amount eval (bfloat binteger))
|
|
&key
|
|
(flags macro (pair) ('()))
|
|
)
|
|
)
|
|
(set! (-> v1-167 func)
|
|
(lambda ((arg0 script-context))
|
|
(when (-> arg0 side-effect?)
|
|
(let* ((v1-1 (-> arg0 param 2))
|
|
(s5-0 (cond
|
|
((= v1-1 'board)
|
|
28
|
|
)
|
|
((= v1-1 'skill)
|
|
22
|
|
)
|
|
(else
|
|
0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(cond
|
|
((nonzero? s5-0)
|
|
(let ((s4-0 (new 'static 'fact-info)))
|
|
(set! (-> s4-0 options) (actor-option))
|
|
(let* ((v1-2 (-> arg0 param 4))
|
|
(a0-3 (car (the-as pair v1-2)))
|
|
)
|
|
(while (not (null? v1-2))
|
|
(cond
|
|
((= a0-3 'suck-in)
|
|
(logior! (-> s4-0 options) (actor-option suck-in))
|
|
)
|
|
((= a0-3 'auto-pickup)
|
|
(logior! (-> s4-0 options) (actor-option auto-pickup))
|
|
)
|
|
)
|
|
(set! v1-2 (cdr v1-2))
|
|
(set! a0-3 (car (the-as pair v1-2)))
|
|
)
|
|
)
|
|
(ppointer->process (birth-pickup-at-point
|
|
(command-get-trans (-> arg0 param 1) (-> arg0 trans))
|
|
(the-as pickup-type s5-0)
|
|
(command-get-float (-> arg0 param 3) 0.0)
|
|
#t
|
|
*entity-pool*
|
|
s4-0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(format 0 "ERROR: SCRIPT: could not spawn pickup, unknown type ~A~%" (-> arg0 param 2))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-169 (-> *script-form* 79)))
|
|
(set! (-> v1-169 name) 'test-pickup)
|
|
(set! (-> v1-169 spec) '((return macro (binteger)) (function macro (symbol)) (pickup macro (symbol))))
|
|
(set! (-> v1-169 func) (lambda ((arg0 script-context))
|
|
(case (-> arg0 param 1)
|
|
(('gem)
|
|
(* (the int (the float (send-event *target* 'test-pickup (pickup-type gem)))) 8)
|
|
)
|
|
(else
|
|
0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-171 (-> *script-form* 80)))
|
|
(set! (-> v1-171 name) 'get-alert-level)
|
|
(set! (-> v1-171 spec) '((return macro (binteger)) (function macro (symbol))))
|
|
(set! (-> v1-171 func) (lambda :behavior process
|
|
((arg0 script-context))
|
|
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
|
|
(set! (-> a1-0 from) (process->ppointer self))
|
|
(set! (-> a1-0 num-params) 0)
|
|
(set! (-> a1-0 message) 'get-alert-level)
|
|
(let ((v1-2 (send-event-function *traffic-manager* a1-0)))
|
|
(if v1-2
|
|
(* (the-as int v1-2) 8)
|
|
0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-173 (-> *script-form* 81)))
|
|
(set! (-> v1-173 name) 'pause)
|
|
(set! (-> v1-173 spec) '((return macro (none)) (function macro (symbol))))
|
|
(set! (-> v1-173 func) (lambda ((arg0 script-context)) (set-master-mode 'pause) 0))
|
|
)
|
|
|
|
(let ((v1-175 (-> *script-form* 82)))
|
|
(set! (-> v1-175 name) 'camera-smush)
|
|
(set! (-> v1-175 spec) '((return macro (none))
|
|
(function macro (symbol))
|
|
&key
|
|
(size macro (binteger bfloat pair) (meters (new 'static 'bfloat :data 0.1)))
|
|
(duration macro (binteger bfloat pair) (seconds (new 'static 'bfloat :data 0.25)))
|
|
)
|
|
)
|
|
(set! (-> v1-175 func) (lambda ((arg0 script-context))
|
|
(if (-> arg0 side-effect?)
|
|
(activate!
|
|
*camera-smush-control*
|
|
(the-as float (command-get-param (-> arg0 param 1) #f))
|
|
15
|
|
(the-as int (command-get-time (-> arg0 param 2) 1))
|
|
1.0
|
|
0.98
|
|
(-> *display* camera-clock)
|
|
)
|
|
)
|
|
0
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-177 (-> *script-form* 83)))
|
|
(set! (-> v1-177 name) 'show-hud)
|
|
(set! (-> v1-177 spec) '((return macro (none)) (function macro (symbol)) (name eval (symbol))))
|
|
(set! (-> v1-177 func) (lambda ((arg0 script-context))
|
|
(if (-> arg0 side-effect?)
|
|
(show-hud (-> arg0 param 1))
|
|
)
|
|
0
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-179 (-> *script-form* 84)))
|
|
(set! (-> v1-179 name) 'fma-sphere)
|
|
(set! (-> v1-179 spec)
|
|
'((return macro (none))
|
|
(function macro (symbol))
|
|
(mode macro (pair))
|
|
&key
|
|
(entity eval (string process entity-actor #f) #f)
|
|
(joint eval (string) #f)
|
|
(duration macro (object) (frame-time 0))
|
|
(sphere eval (binteger #f) #f)
|
|
(danger eval (binteger #f) #f)
|
|
)
|
|
)
|
|
(set! (-> v1-179 func)
|
|
(the-as
|
|
(function script-context object)
|
|
(lambda ((arg0 script-context))
|
|
(local-vars
|
|
(a1-7 process-tree)
|
|
(sv-16 object)
|
|
(sv-20 int)
|
|
(sv-24 process-drawable)
|
|
(sv-32 int)
|
|
(sv-40 time-frame)
|
|
(sv-48 object)
|
|
(sv-52 object)
|
|
)
|
|
(when (-> arg0 side-effect?)
|
|
(set! sv-16 (-> arg0 param 1))
|
|
(set! sv-20 0)
|
|
(let ((s5-0 (command-get-process (-> arg0 param 2) (the-as process #f))))
|
|
(set! sv-24 (if (type? s5-0 process-drawable)
|
|
(the-as process-drawable s5-0)
|
|
)
|
|
)
|
|
)
|
|
(set! sv-32 -1)
|
|
(set! sv-40 (command-get-time (-> arg0 param 4) 1))
|
|
(set! sv-48 (-> arg0 param 5))
|
|
(set! sv-52 (-> arg0 param 6))
|
|
(let* ((s5-1 sv-16)
|
|
(a2-0 (car (the-as pair s5-1)))
|
|
)
|
|
(while (not (null? s5-1))
|
|
(case a2-0
|
|
(('nav)
|
|
(set! sv-20 (logior sv-20 1))
|
|
)
|
|
(('kill-once)
|
|
(set! sv-20 (logior sv-20 2))
|
|
)
|
|
(('danger)
|
|
(set! sv-20 (logior sv-20 4))
|
|
)
|
|
(('deadly-overlap)
|
|
(set! sv-20 (logior sv-20 8))
|
|
)
|
|
(else
|
|
(format 0 "ERROR: SCRIPT: unknown fma-sphere-mode ~A~%" a2-0)
|
|
)
|
|
)
|
|
(set! s5-1 (cdr s5-1))
|
|
(set! a2-0 (car (the-as pair s5-1)))
|
|
)
|
|
)
|
|
(when (and sv-24 (and (nonzero? (-> sv-24 draw)) (nonzero? (-> sv-24 node-list))))
|
|
(let ((a1-4 (-> arg0 param 3)))
|
|
(when a1-4
|
|
(let ((v1-31 (the-as joint (get-art-by-name-method (-> sv-24 draw jgeo) (the-as string a1-4) (the-as type #f)))))
|
|
(if v1-31
|
|
(set! sv-32 (+ (-> v1-31 number) 1))
|
|
(format 0 "ERROR: SCRIPT: joint-eval: unknown joint ~A in:~%~T~A~%" (-> arg0 param 3) (-> arg0 expr))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(let ((gp-1 (get-process *default-dead-pool* fma-sphere #x4000)))
|
|
(when gp-1
|
|
(let ((t9-7 (method-of-type fma-sphere activate))
|
|
(a0-14 gp-1)
|
|
)
|
|
(set! a1-7 (cond
|
|
(sv-24
|
|
sv-24
|
|
)
|
|
(else
|
|
(set! a1-7 (ppointer->process (-> *setting-control* user-current movie)))
|
|
(cond
|
|
((the-as process a1-7)
|
|
(empty)
|
|
a1-7
|
|
)
|
|
(else
|
|
*entity-pool*
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(t9-7 (the-as fma-sphere a0-14) a1-7 (symbol->string (-> fma-sphere symbol)) (the-as pointer #x70004000))
|
|
)
|
|
(run-now-in-process gp-1 fma-sphere-init-by-other sv-20 sv-24 sv-32 sv-40 sv-48 sv-52)
|
|
(-> gp-1 ppointer)
|
|
)
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let ((v1-182 (new 'global 'script-context (process->ppointer pp) pp (the-as vector #f))))
|
|
(set! (-> v1-182 side-effect?) #f)
|
|
(set! *syntax-context* v1-182)
|
|
)
|
|
|
|
(define *script-context* (new 'global 'script-context (process->ppointer pp) pp (the-as vector #f)))
|
|
|
|
)
|