decomp: almost all of the NPCs! (#748)

* all-types: add all missing `:heap-base`s

* decomp: error encountered when compiling `mayor`

`IR_StoreConstOffset::do_codegen can't handle this` for method `play-anim!`

* decomp: finalize `mayor`

* decomp: finish `bird-lady`

* decomp: finish `bird-lady-beach`

* decomp: finish `sculptor`

* decomp: finish `geologist`

* decomp: finish `oracle`

* decomp: finish `farmer` | `explorer` | almost `assistant`

blocked on sparticle-launch-group

* decomp: finish `sage`

* decomp: finish `gambler`

* decomp: finish `warrior`

* decomp: mostly finish `miners`, blocked by sp-launch-group

* fix issue in `sage`

* fix all the reference tests to use the new state stuff

* fix all of goal_src

* address feedback

* re-gen with `until` fixes
This commit is contained in:
Tyler Wilding 2021-08-18 21:33:31 -04:00 committed by GitHub
parent e4f5e8eebd
commit 253d7996e8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
51 changed files with 17715 additions and 949 deletions

View File

@ -28,6 +28,13 @@
"name" : "Tests - TypeConsistency - Verbose",
"args" : ["--gtest_brief=0", "--gtest_filter=\"*TypeConsistency*\""]
},
{
"type" : "default",
"project" : "CMakeLists.txt",
"projectTarget" : "goalc-test.exe (bin\\goalc-test.exe)",
"name" : "Tests - WithGameTests - Verbose",
"args" : ["--gtest_brief=0", "--gtest_filter=\"*WithGameTests*\""]
},
{
"type" : "default",
"project" : "CMakeLists.txt",

File diff suppressed because it is too large Load Diff

View File

@ -3,7 +3,7 @@
// if you want to filter to only some object names.
// it will make the decompiler much faster.
"allowed_objects": ["nav-enemy"],
"allowed_objects": [],
////////////////////////////
// CODE ANALYSIS OPTIONS

View File

@ -661,5 +661,15 @@
[62, "(function int :behavior nav-enemy)"]
],
"oracle": [
[1, "(function sparticle-launch-group :behavior oracle)"],
[2, "(function sparticle-launch-group :behavior oracle)"],
[3, "(function none :behavior oracle)"]
],
"miners": [
[1, "(function none :behavior minershort)"]
],
"placeholder-do-not-add-below": []
}

View File

@ -1250,8 +1250,6 @@
["L149", "float", true]
],
"farmer": [["L50", "float", true]],
"bsp": [
["L54", "rgba", true],
["L85", "rgba", true],
@ -1698,6 +1696,215 @@
["L56", "uint64", true]
],
"mayor": [
["L2", "_lambda_", true],
["L4", "_lambda_", true],
["L57", "vector", true],
["L58", "state", true],
["L69", "spool-anim", true],
["L372", "spool-anim", true],
["L674", "spool-anim", true],
["L976", "spool-anim", true],
["L1279", "spool-anim", true],
["L1582", "spool-anim", true],
["L1971", "spool-anim", true],
["L1973", "spool-anim", true],
["L1975", "skeleton-group", true],
["L1985", "float", true]
],
"bird-lady": [
["L29", "vector", true],
["L34", "spool-anim", true],
["L36", "spool-anim", true],
["L38", "spool-anim", true],
["L134", "skeleton-group", true],
["L138", "float", true]
],
"bird-lady-beach": [
["L17", "_lambda_", true],
["L26", "vector", true],
["L28", "spool-anim", true],
["L52", "state", true],
["L53", "skeleton-group", true]
],
"sculptor": [
["L2", "_lambda_", true],
["L89", "vector", true],
["L65", "_lambda_", true],
["L90", "state", true],
["L99", "spool-anim", true],
["L109", "spool-anim", true],
["L111", "spool-anim", true],
["L193", "state", true],
["L195", "skeleton-group", true],
["L197", "skeleton-group", true],
["L202", "float", true]
],
"geologist": [
["L38", "vector", true],
["L50", "spool-anim", true],
["L52", "spool-anim", true],
["L54", "spool-anim", true],
["L55", "spool-anim", true],
["L56", "spool-anim", true],
["L58", "spool-anim", true],
["L60", "spool-anim", true],
["L102", "skeleton-group", true],
["L112", "float", true]
],
"oracle": [
["L14", "_lambda_", true],
["L15", "_lambda_", true],
["L16", "_lambda_", true],
["L21", "_lambda_", true],
["L22", "_lambda_", true],
["L55", "vector", true],
["L56", "vector", true],
["L57", "sound-spec", true],
["L58", "vector", true],
["L59", "state", true],
["L61", "spool-anim", true],
["L63", "spool-anim", true],
["L65", "spool-anim", true],
["L67", "spool-anim", true],
["L69", "spool-anim", true],
["L71", "spool-anim", true],
["L73", "spool-anim", true],
["L75", "spool-anim", true],
["L77", "spool-anim", true],
["L79", "spool-anim", true],
["L81", "spool-anim", true],
["L492", "spool-anim", true],
["L494", "skeleton-group", true],
["L496", "float", true]
],
"farmer": [
["L28", "vector", true],
["L34", "spool-anim", true],
["L36", "spool-anim", true],
["L38", "spool-anim", true],
["L40", "spool-anim", true],
["L42", "skeleton-group", true],
["L50", "float", true]
],
"explorer": [
["L2", "_lambda_", true],
["L78", "state", true],
["L77", "vector", true],
["L87", "spool-anim", true],
["L97", "spool-anim", true],
["L99", "spool-anim", true],
["L133", "spool-anim", true],
["L159", "skeleton-group", true],
["L166", "float", true]
],
"assistant": [
["L7", "_lambda_", true],
// ["L72", "sparticle-launcher", true],
// ["L74", "sparticle-launcher", true],
// ["L76", "sparticle-launcher", true],
// ["L78", "sparticle-launch-group", true],
["L81", "state", true],
["L88", "spool-anim", true],
["L89", "spool-anim", true],
["L90", "spool-anim", true],
["L92", "spool-anim", true],
["L94", "spool-anim", true],
["L96", "spool-anim", true],
["L115", "spool-anim", true],
["L229", "skeleton-group", true],
["L236", "float", true],
["L241", "float", true],
["L244", "uint64", true],
["L245", "uint64", true]
],
"sage": [
["L5", "_lambda_", true],
["L10", "_lambda_", true],
["L12", "_lambda_", true],
["L26", "_lambda_", true],
["L91", "vector", true],
["L92", "state", true],
["L94", "state", true],
["L101", "spool-anim", true],
["L401", "spool-anim", true],
["L476", "spool-anim", true],
["L486", "spool-anim", true],
["L488", "spool-anim", true],
["L490", "spool-anim", true],
["L520", "spool-anim", true],
["L673", "spool-anim", true],
["L889", "spool-anim", true],
["L933", "skeleton-group", true],
["L941", "float", true],
["L950", "float", true],
["L951", "float", true]
],
"gambler": [
["L2", "_lambda_", true],
["L52", "vector", true],
["L53", "state", true],
["L68", "spool-anim", true],
["L70", "spool-anim", true],
["L72", "spool-anim", true],
["L73", "spool-anim", true],
["L74", "spool-anim", true],
["L76", "spool-anim", true],
["L78", "spool-anim", true],
["L159", "skeleton-group", true],
["L170", "float", true]
],
"warrior": [
["L7", "_lambda_", true],
["L30", "vector", true],
["L34", "state", true],
["L36", "spool-anim", true],
["L46", "spool-anim", true],
["L48", "spool-anim", true],
["L98", "skeleton-group", true],
["L107", "float", true]
],
"miners": [
["L2", "_lambda_", true],
["L40", "_lambda_", true],
["L93", "_lambda_", true],
["L108", "state", true],
["L109", "skeleton-group", true],
["L111", "vector", true],
["L112", "state", true],
["L142", "state", true],
["L143", "spool-anim", true],
["L153", "spool-anim", true],
["L155", "spool-anim", true],
["L167", "spool-anim", true],
["L169", "spool-anim", true],
["L171", "spool-anim", true],
["L173", "spool-anim", true],
["L186", "spool-anim", true],
["L224", "spool-anim", true],
// ["L270", "sparticle-launcher", true],
// ["L272", "sparticle-launcher", true],
// ["L274", "sparticle-launcher", true],
// ["L276", "sparticle-launch-group", true],
["L279", "skeleton-group", true],
["L281", "vector", true],
["L282", "state", true],
["L284", "skeleton-group", true],
["L298", "float", true]
],
// please do not add things after this entry! git is dumb.
"object-file-that-doesnt-actually-exist-and-i-just-put-this-here-to-prevent-merge-conflicts-with-this-file": []
}

View File

@ -820,6 +820,14 @@
"draw-ocean-transition-seams": [
[16, "sphere"]
],
"(method 32 mayor)": [
[16, "event-message-block"]
],
"(method 43 mayor)": [
[16, "vector"]
],
"(method 10 tippy)": [
[16, "vector"]
@ -1027,5 +1035,115 @@
[16, ["array", "int16", 128]]
],
"(method 43 bird-lady)": [
[16, "vector"]
],
"(method 32 bird-lady-beach)": [
[16, "event-message-block"]
],
"muse-to-idle": [
[16, "event-message-block"]
],
"(method 32 sculptor)": [
[16, "event-message-block"]
],
"(method 43 sculptor)": [
[16, "vector"]
],
"(method 32 geologist)": [
[16, "event-message-block"]
],
"(method 43 geologist)": [
[16, "vector"]
],
"(method 32 oracle)": [
[16, "event-message-block"]
],
"(method 11 oracle)": [
[16, "vector"],
[32, "event-message-block"]
],
"(method 32 explorer)": [
[16, "event-message-block"]
],
"(method 43 explorer)": [
[16, "vector"]
],
"(method 32 assistant)": [
[16, "event-message-block"]
],
"(method 43 assistant)": [
[16, "vector"]
],
"(code idle assistant)": [
[16, "vector"],
[32, "vector"]
],
"check-drop-level-assistant": [
[16, "vector"]
],
"(method 32 sage)": [
[16, "event-message-block"]
],
"(method 43 sage)": [
[16, "vector"]
],
"(trans idle sage)": [
[16, "event-message-block"]
],
"(method 32 gambler)": [
[16, "event-message-block"]
],
"(method 43 gambler)": [
[16, "vector"]
],
"(method 32 warrior)": [
[16, "event-message-block"]
],
"(method 43 warrior)": [
[16, "vector"]
],
"(exit play-anim warrior)": [
[16, "event-message-block"]
],
"minershort-trans-hook": [
[16, "vector"]
],
"(method 32 minershort)": [
[16, "event-message-block"]
],
"(exit play-anim minershort)": [
[16, "event-message-block"]
],
"(method 43 minershort)": [
[16, "vector"]
],
"placeholder-do-not-add-below!": []
}

View File

@ -2087,5 +2087,168 @@
[[33, 35], "v1", "merc-ctrl"]
],
"(method 48 mayor)": [
[32, "a0", "int"]
],
"(method 43 mayor)": [
[19, "v1", "float"]
],
"(method 43 bird-lady)": [
[19, "v1", "float"]
],
"(method 32 bird-lady-beach)": [
[44, "t9", "(function process function object object object object object)"],
[119, "t9", "(function process function object object object object object)"]
],
"muse-to-idle": [
[36, "t9", "(function process function object object object object object)"],
[57, "v1", "muse"]
],
"(method 32 sculptor)": [
[66, "t9", "(function process function object object object object object)"],
[87, "v1", "muse"]
],
"(method 43 sculptor)": [
[19, "v1", "float"]
],
"(code idle sculptor)": [
[71, "v1", "art-joint-anim"],
[135, "v1", "art-joint-anim"],
[184, "v1", "float"],
[204, "v1", "art-joint-anim"],
[255, "v1", "float"],
[269, "v1", "art-joint-anim"],
[319, "v1", "art-joint-anim"],
[369, "v1", "art-joint-anim"],
[421, "v1", "art-joint-anim"],
[470, "v1", "float"],
[490, "v1", "art-joint-anim"],
[543, "v1", "art-joint-anim"],
[593, "v1", "art-joint-anim"],
[643, "v1", "art-joint-anim"],
[698, "v1", "float"],
[718, "v1", "art-joint-anim"],
[769, "v1", "float"],
[785, "v1", "art-joint-anim"],
[836, "v1", "art-joint-anim"],
[886, "v1", "art-joint-anim"],
[936, "v1", "art-joint-anim"]
],
"(method 43 geologist)": [
[19, "v1", "float"]
],
"(anon-function 3 oracle)": [
[11, "v1", "collide-shape"]
],
"(method 11 oracle)": [
[83, "t9", "(function process function object object object object object)"],
[166, "t9", "(function process function object object object object object)"]
],
"(method 43 farmer)": [
[19, "v1", "float"]
],
"(method 43 explorer)": [
[19, "v1", "float"]
],
"(code idle explorer)": [
[36, "v1", "float"],
[56, "v1", "art-joint-anim"],
[107, "v1", "float"],
[123, "v1", "art-joint-anim"],
[180, "v1", "float"],
[200, "v1", "float"],
[216, "v1", "art-joint-anim"],
[273, "v1", "float"],
[347, "v1", "float"],
[363, "v1", "art-joint-anim"],
[420, "v1", "float"],
[500, "v1", "art-joint-anim"],
[542, "v1", "art-joint-anim"],
[599, "v1", "float"],
[621, "v1", "art-joint-anim"],
[678, "v1", "float"],
[761, "v1", "float"],
[783, "v1", "art-joint-anim"]
],
"(method 32 assistant)": [
[39, "v1", "float"]
],
"(method 43 assistant)": [
[19, "v1", "float"]
],
"(code idle assistant)": [
[35, "v1", "float"],
[114, "v1", "float"],
[130, "v1", "art-joint-anim"],
[207, "v1", "float"],
[376, "v1", "art-joint-anim"],
[415, "v1", "float"],
[431, "v1", "art-joint-anim"],
[482, "v1", "art-joint-anim"],
[530, "v1", "float"],
[549, "v1", "art-joint-anim"],
[602, "v1", "art-joint-anim"]
],
"check-drop-level-assistant": [
[17, "v1", "float"]
],
"(method 32 sage)": [
[76, "v1", "float"],
[175, "t9", "(function process function object object object object object)"],
[262, "v1", "assistant"]
],
"(method 43 sage)": [
[19, "v1", "float"]
],
"(code idle sage)": [
[35, "v1", "float"],
[155, "v1", "art-joint-anim"]
],
"(method 43 gambler)": [
[19, "v1", "float"]
],
"(code idle gambler)": [
[93, "v1", "float"]
],
"(method 32 warrior)": [
[75, "v1", "handle"]
],
"(method 43 warrior)": [
[19, "v1", "float"]
],
"(method 32 minershort)": [
[44, "v1", "float"],
[112, "v1", "float"]
],
"(method 43 minershort)": [
[19, "v1", "float"]
],
"placeholder-do-not-add-below": []
}

View File

@ -20,3 +20,5 @@
(define-extern process-drawable-fuel-cell-handler (function process int symbol event-message-block none))
(define-extern ja-aframe-num (function int float))
(define-extern ja-aframe (function float int float))
;; TODO - for sculptor
(define-extern ja-eval (function int))

View File

@ -122,3 +122,5 @@
(define-extern process-drawable-from-entity! (function process-drawable object none))
;; TODO - for misty-warehouse
(define-extern process-entity-status! (function process entity-perm-status symbol int))
;; TODO - for warrior
(define-extern entity-birth-no-kill (function entity none))

View File

@ -7,3 +7,5 @@
;; TODO - for nav-enemy
(define-extern birth-pickup-at-point (function vector int float symbol process symbol basic)) ;; TODO - not confirmed at all! (the symbols are wrong)
;; TODO - for oracle
(define-extern *fuel-cell-sg* skeleton-group) ;; unknown type

View File

@ -18,3 +18,5 @@
(define-extern process-grab? (function process symbol))
(define-extern camera-change-to (function string int symbol none)) ;; TODO - not confirmed yet
(define-extern process-release? (function process symbol))
;; TODO - for bird-lady-beach
(define-extern manipy-init (function trsqv vector entity skeleton-group symbol none)) ;; TODO - not confirmed yet

View File

@ -95,8 +95,8 @@
:flag-assert #xc00000010
(:methods
(dummy-9 (_type_ vector int float process-drawable) none 9)
(dummy-10 () none 10)
(dummy-11 () none 11)
(TODO-RENAME-10 (_type_ vector int float process-drawable) vector 10)
(dummy-11 (_type_ string symbol vector) none 11)
)
)
@ -133,34 +133,34 @@
:flag-assert #x350110017c
(:methods
(dummy-20 () none 20)
(give-cell () none 21) ;; state
(give-cell () _type_ :state 21) ;; state
(dummy-22 () none 22)
(enter-playing () none 23) ;; state
(play-accept () none 24) ;; state
(dummy-25 () none 25)
(query () none 26) ;; state
(play-anim () none 27) ;; state
(hidden () none 28) ;; state
(play-anim () _type_ :state 27) ;; state
(hidden () _type_ :state 28) ;; state
(dummy-29 () none 29)
(idle () none 30) ;; state
(dummy-31 (_type_) none 31)
(dummy-32 (_type_ symbol) spool-anim 32)
(idle () _type_ :state 30) ;; state
(get-art-elem (_type_) art-element 31)
(play-anim! (_type_ symbol) basic 32)
(dummy-33 (_type_) none 33)
(dummy-34 (_type_) none 34)
(dummy-35 (_type_) none 35)
(dummy-36 (_type_) none 36)
(dummy-37 (_type_) none 37)
(dummy-38 (_type_) none 38)
(dummy-39 (_type_) none 39)
(should-display? (_type_) symbol 39)
(dummy-40 (_type_ object skeleton-group int int vector int) none 40)
(dummy-41 (_type_) none 41)
(initialize-collision (_type_ int) none 41)
(dummy-42 (_type_) none 42)
(dummy-43 (_type_) none 43)
(TODO-RENAME-43 (_type_) none 43)
(dummy-44 (_type_) none 44)
(dummy-45 (_type_) none 45)
(dummy-46 (_type_) none 46)
(dummy-47 (_type_) none 47)
(dummy-48 (_type_) none 48)
(target-above-threshold? (_type_) symbol 47)
(draw-shadow (_type_) none 48)
(dummy-49 (_type_) none 49)
(dummy-50 (_type_) none 50)
(dummy-51 (_type_) none 51)

View File

@ -132,8 +132,8 @@
(deftype spool-anim (basic)
((name string :offset 16) ;; why?
(buf1 external-art-buffer :offset 16) ;; custom
(buf2 external-art-buffer :offset-assert 20) ;; custom (also what?)
(index int32 :offset 20)
(index int32 :score 100 :offset 20)
(buf2 external-art-buffer :offset 20) ;; custom (also what?)
(parts int32 :offset-assert 24)
(priority float :offset-assert 28)
(owner handle :offset-assert 32)

View File

@ -402,7 +402,7 @@
(defmethod should-display? nav-control ((obj nav-control))
(and
*display-nav-marks*
(nonzero? (logand (-> obj flags) (nav-control-flags display-marks)))
(nonzero? (logand (-> obj flags) (nav-control-flags bit0 display-marks)))
)
)

View File

@ -85,7 +85,7 @@
:size-assert #x30
:flag-assert #xa00000030
(:methods
(dummy-9 () none 9)
(dummy-9 (_type_ process) _type_ 9)
)
)

View File

@ -440,7 +440,7 @@
(deftype state (protect-frame)
((code function :offset-assert 16)
(trans (function none) :offset-assert 20)
(post function :offset-assert 24)
(post (function none) :offset-assert 24)
(enter function :offset-assert 28)
(event (function process int symbol event-message-block object) :offset-assert 32)
)

View File

@ -5,3 +5,5 @@
;; name in dgo: beach-obs
;; dgos: BEA, L1
(define-extern *flutflut-naked-sg* skeleton-group)
(define-extern *flutflutegg-sg* skeleton-group)

View File

@ -5,3 +5,219 @@
;; name in dgo: bird-lady-beach
;; dgos: BEA, L1
(define-extern *bird-lady-beach-sg* skeleton-group)
;; definition of type bird-lady-beach
(deftype bird-lady-beach (process-taskable)
((flutflut handle :offset-assert 384)
(egg handle :offset-assert 392)
)
:heap-base #x120
:method-count-assert 53
:size-assert #x190
:flag-assert #x3501200190
)
;; failed to figure out what this is:
(let
((v1-1
(new 'static 'skeleton-group
:art-group-name "bird-lady-beach"
:bounds (new 'static 'vector :w 16384.0)
:version #x6
:shadow 2
)
)
)
(set! (-> v1-1 jgeo) 0)
(set! (-> v1-1 janim) 3)
(set! (-> v1-1 mgeo 0) (the-as uint 1))
(set! (-> v1-1 lod-dist 0) 4095996000.0)
(set! *bird-lady-beach-sg* v1-1)
)
;; failed to figure out what this is:
(defstate idle (bird-lady-beach)
:virtual #t
:enter
(behavior ()
(when (not (should-display? self))
(let ((a0-2 (handle->process (-> self flutflut))))
(if a0-2
(deactivate a0-2)
)
)
(let ((a0-6 (handle->process (-> self egg))))
(if a0-6
(deactivate a0-6)
)
)
(go-virtual hidden)
)
((-> (method-of-type process-taskable idle) enter))
(none)
)
)
;; definition for method 32 of type bird-lady-beach
(defmethod play-anim! bird-lady-beach ((obj bird-lady-beach) (arg0 symbol))
(with-pp
(case (current-status (-> obj tasks))
((6)
(when arg0
(set!
(-> obj cell-for-task)
(the-as game-task (current-task (-> obj tasks)))
)
(close-current! (-> obj tasks))
(let* ((s5-1 (get-process *default-dead-pool* manipy #x4000))
(v1-8 (when s5-1
(let ((t9-4 (method-of-type manipy activate)))
(t9-4
(the-as manipy s5-1)
obj
'manipy
(the-as pointer #x70004000)
)
)
((the-as
(function process function object object object object object)
run-function-in-process
)
s5-1
manipy-init
(-> obj root trans)
(-> obj entity)
*flutflut-naked-sg*
#f
)
(-> s5-1 ppointer)
)
)
)
(set!
(-> obj flutflut)
(new 'static 'handle :process v1-8 :pid (-> v1-8 0 pid))
)
)
(let ((a1-4 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-4 from) pp)
(set! (-> a1-4 num-params) 1)
(set! (-> a1-4 message) 'anim-mode)
(set! (-> a1-4 param 0) (the-as uint 'clone-anim))
(send-event-function (handle->process (-> obj flutflut)) a1-4)
)
(let ((a1-5 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-5 from) pp)
(set! (-> a1-5 num-params) 1)
(set! (-> a1-5 message) 'blend-shape)
(set! (-> a1-5 param 0) (the-as uint #t))
(send-event-function (handle->process (-> obj flutflut)) a1-5)
)
(let* ((s5-2 (get-process *default-dead-pool* manipy #x4000))
(v1-28 (when s5-2
(let ((t9-9 (method-of-type manipy activate)))
(t9-9
(the-as manipy s5-2)
obj
'manipy
(the-as pointer #x70004000)
)
)
((the-as
(function process function object object object object object)
run-function-in-process
)
s5-2
manipy-init
(-> obj root trans)
(-> obj entity)
*flutflutegg-sg*
#f
)
(-> s5-2 ppointer)
)
)
)
(set!
(-> obj egg)
(new 'static 'handle :process v1-28 :pid (-> v1-28 0 pid))
)
)
(let ((a1-9 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-9 from) pp)
(set! (-> a1-9 num-params) 1)
(set! (-> a1-9 message) 'anim-mode)
(set! (-> a1-9 param 0) (the-as uint 'clone-anim))
(send-event-function (handle->process (-> obj egg)) a1-9)
)
)
(new 'static 'spool-anim
:name "bird-lady-beach-resolution"
:index 4
:parts 10
:command-list
'(
((the binteger 141)
joint
"cameraB"
)
((the binteger 535)
joint
"camera"
)
((the binteger 696)
joint
"cameraB"
)
((the binteger 758)
joint
"camera"
)
((the binteger 813) joint "cameraB")
)
)
)
(else
(if arg0
(format
0
"ERROR: <GMJ>: ~S playing anim for task status ~S~%"
(-> obj name)
(task-status->string
(the-as task-status (current-status (-> obj tasks)))
)
)
)
(-> obj draw art-group data 3)
)
)
)
)
;; definition for method 31 of type bird-lady-beach
(defmethod get-art-elem bird-lady-beach ((obj bird-lady-beach))
(-> obj draw art-group data 3)
)
;; definition for method 39 of type bird-lady-beach
(defmethod should-display? bird-lady-beach ((obj bird-lady-beach))
(= (current-status (-> obj tasks)) 6)
)
;; definition for method 11 of type bird-lady-beach
(defmethod copy-defaults! bird-lady-beach ((obj bird-lady-beach) (arg0 res-lump))
(dummy-40
obj
arg0
*bird-lady-beach-sg*
3
51
(new 'static 'vector :y 4096.0 :w 4096.0)
5
)
(set! (-> obj tasks) (get-task-control (game-task beach-flutflut)))
(set! (-> obj sound-flava) (the-as uint 7))
(dummy-42 obj)
(none)
)

View File

@ -5,3 +5,284 @@
;; name in dgo: bird-lady
;; dgos: BEA, L1
(define-extern *bird-lady-sg* skeleton-group)
;; definition of type bird-lady
(deftype bird-lady (process-taskable)
()
:heap-base #x110
:method-count-assert 53
:size-assert #x17c
:flag-assert #x350110017c
)
;; failed to figure out what this is:
(let
((v1-1
(new 'static 'skeleton-group
:art-group-name "bird-lady"
:bounds
(new 'static 'vector :y 4096.0 :w 10240.0)
:version #x6
:shadow 2
)
)
)
(set! (-> v1-1 jgeo) 0)
(set! (-> v1-1 janim) 3)
(set! (-> v1-1 mgeo 0) (the-as uint 1))
(set! (-> v1-1 lod-dist 0) 4095996000.0)
(set! *bird-lady-sg* v1-1)
)
;; definition for method 52 of type bird-lady
;; INFO: Return type mismatch int vs none.
(defmethod dummy-52 bird-lady ((obj bird-lady))
(let ((v1-1 (-> obj draw shadow-ctrl)))
(when v1-1
(let ((f0-0 (-> obj root trans y)))
(let ((a0-2 v1-1))
(set! (-> a0-2 settings bot-plane w) (- (+ -1024.0 f0-0)))
)
0
(let ((a0-4 v1-1))
(set! (-> a0-4 settings top-plane w) (- (+ 4096.0 f0-0)))
)
)
0
(set! (-> v1-1 settings flags) (logand -9 (-> v1-1 settings flags)))
)
)
(none)
)
;; definition for method 48 of type bird-lady
(defmethod draw-shadow bird-lady ((obj bird-lady))
(-> obj draw shadow-ctrl)
(cond
((and
(-> obj draw shadow)
(zero? (-> obj draw cur-lod))
(nonzero? (logand (-> obj draw status) 8))
)
(let ((v1-9 (-> obj draw shadow-ctrl)))
(set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags)))
)
0
((method-of-object (-> obj draw shadow-ctrl) dummy-14))
)
(else
(let ((v1-14 (-> obj draw shadow-ctrl)))
(logior! (-> v1-14 settings flags) 32)
)
0
)
)
(none)
)
;; definition for method 32 of type bird-lady
(defmethod play-anim! bird-lady ((obj bird-lady) (arg0 symbol))
(case (current-status (-> obj tasks))
((2 3)
(if arg0
(close-status! (-> obj tasks) (task-status need-introduction))
)
(new 'static 'spool-anim
:name "bird-lady-introduction"
:index 4
:parts 11
:command-list
'(
(0
want-levels
village1
beach
)
((the binteger 49)
joint
"cameraB"
)
((the binteger 101)
display-level
beach
special
)
((the binteger 101)
kill
"yakow-8"
)
((the binteger 101)
kill
"yakow-9"
)
((the binteger 101)
kill
"yakow-10"
)
((the binteger 101)
kill
"yakow-11"
)
((the binteger 101)
kill
"yakow-12"
)
((the binteger 102)
joint
"camera"
)
((the binteger 125)
joint
"cameraB"
)
((the binteger 251)
joint
"camera"
)
((the binteger 326)
joint
"cameraB"
)
((the binteger 649)
display-level
beach
movie
)
((the binteger 649)
want-force-vis
beach
#t
)
((the binteger 650)
alive
"flutflutegg-1"
)
((the binteger 651)
joint
"camera"
)
((the binteger 1041)
joint
"cameraB"
)
((the binteger 1046)
dead
"flutflutegg-1"
)
((the binteger 1046)
display-level
beach
display
)
((the binteger 1046) want-force-vis beach #f)
)
)
)
((5)
(set! (-> obj skippable) #t)
(cond
((zero? (get-reminder (-> obj tasks) 0))
(if arg0
(save-reminder (-> obj tasks) 1 0)
)
(new 'static 'spool-anim
:name "bird-lady-reminder-1"
:index 5
:parts 4
:command-list '()
)
)
(else
(if arg0
(save-reminder (-> obj tasks) 0 0)
)
(new 'static 'spool-anim
:name "bird-lady-reminder-2"
:index 6
:parts 5
:command-list '()
)
)
)
)
(else
(if arg0
(format
0
"ERROR: <GMJ>: ~S playing anim for task status ~S~%"
(-> obj name)
(task-status->string (the-as task-status (current-status (-> obj tasks))))
)
)
(-> obj draw art-group data 3)
)
)
)
;; definition for method 31 of type bird-lady
(defmethod get-art-elem bird-lady ((obj bird-lady))
(-> obj draw art-group data 3)
)
;; definition for method 43 of type bird-lady
(defmethod TODO-RENAME-43 bird-lady ((obj bird-lady))
(when
(TODO-RENAME-10
(-> obj ambient)
(new 'stack-no-clear 'vector)
9000
122880.0
obj
)
(let* ((v1-3 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
(v1-4 (the-as number (logior #x3f800000 v1-3)))
(f0-2 (+ -1.0 (the-as float v1-4)))
)
(cond
((< 0.66 f0-2)
(dummy-11 (-> obj ambient) "BIR-LO02" #f (-> obj root trans))
)
((< 0.33 f0-2)
(dummy-11 (-> obj ambient) "BIR-LO03" #f (-> obj root trans))
)
(else
(dummy-11 (-> obj ambient) "BIR-am08" #f (-> obj root trans))
)
)
)
)
(none)
)
;; definition for method 47 of type bird-lady
;; INFO: Return type mismatch basic vs symbol.
(defmethod target-above-threshold? bird-lady ((obj bird-lady))
(the-as symbol (and *target* (< (-> (target-pos 0) z) -81920.0)))
)
;; definition for method 11 of type bird-lady
(defmethod copy-defaults! bird-lady ((obj bird-lady) (arg0 res-lump))
(dummy-40
obj
arg0
*bird-lady-sg*
3
51
(new 'static 'vector :y 4096.0 :w 4096.0)
5
)
(set! (-> obj tasks) (get-task-control (game-task beach-flutflut)))
(set! (-> obj sound-flava) (the-as uint 7))
(set! (-> obj draw light-index) (the-as uint 4))
(if
(closed?
(-> obj tasks)
(game-task beach-flutflut)
(task-status need-reminder)
)
(dummy-18 obj)
(go (method-of-object obj idle))
)
(none)
)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -87,7 +87,7 @@
(free-time uint64 :offset-assert 360)
(touch-time uint64 :offset-assert 368)
(nav-enemy-flags uint32 :offset-assert 376)
(incomming-attack-id uint64 :offset-assert 384)
(incomming-attack-id handle :offset-assert 384)
(jump-return-state (state process) :offset-assert 392)
(rand-gen random-generator :offset-assert 396)
)

View File

@ -5,3 +5,14 @@
;; name in dgo: assistant
;; dgos: L1, VI1
;; TODO - for sage
(define-extern *assistant-sg* skeleton-group)
(deftype assistant (process-taskable)
((sound-id sound-id :offset-assert 380)
)
:method-count-assert 53
:size-assert #x180
:heap-base #x110
:flag-assert #x3501100180
)

File diff suppressed because it is too large Load Diff

View File

@ -5,3 +5,198 @@
;; name in dgo: farmer
;; dgos: L1, VI1
(define-extern *farmer-sg* skeleton-group)
;; definition of type farmer
(deftype farmer (process-taskable)
()
:heap-base #x110
:method-count-assert 53
:size-assert #x17c
:flag-assert #x350110017c
)
;; failed to figure out what this is:
(let
((v1-1
(new 'static 'skeleton-group
:art-group-name "farmer"
:bounds (new 'static 'vector :w 16384.0)
:max-lod 1
:version #x6
:shadow 3
)
)
)
(set! (-> v1-1 jgeo) 0)
(set! (-> v1-1 janim) 4)
(set! (-> v1-1 mgeo 0) (the-as uint 1))
(set! (-> v1-1 lod-dist 0) 81920.0)
(set! (-> v1-1 mgeo 1) (the-as uint 2))
(set! (-> v1-1 lod-dist 1) 4095996000.0)
(set! *farmer-sg* v1-1)
)
;; definition for method 32 of type farmer
(defmethod play-anim! farmer ((obj farmer) (arg0 symbol))
(case (current-status (-> obj tasks))
((2 3)
(if arg0
(close-status! (-> obj tasks) (task-status need-introduction))
)
(new 'static 'spool-anim
:name "farmer-introduction"
:index 6
:parts 5
:command-list '()
)
)
((5)
(set! (-> obj skippable) #t)
(cond
((zero? (get-reminder (-> obj tasks) 0))
(if arg0
(save-reminder (-> obj tasks) 1 0)
)
(new 'static 'spool-anim
:name "farmer-reminder-1"
:index 7
:parts 2
:command-list '()
)
)
(else
(if arg0
(save-reminder (-> obj tasks) 0 0)
)
(new 'static 'spool-anim
:name "farmer-reminder-2"
:index 8
:parts 2
:command-list '()
)
)
)
)
((6)
(when arg0
(set!
(-> obj cell-for-task)
(the-as game-task (current-task (-> obj tasks)))
)
(close-current! (-> obj tasks))
)
(new 'static 'spool-anim
:name "farmer-resolution"
:index 9
:parts 4
:command-list '()
)
)
(else
(if arg0
(format
0
"ERROR: <GMJ>: ~S playing anim for task status ~S~%"
(-> obj name)
(task-status->string (the-as task-status (current-status (-> obj tasks))))
)
)
(-> obj draw art-group data 4)
)
)
)
;; definition for method 31 of type farmer
(defmethod get-art-elem farmer ((obj farmer))
(let ((v1-1 (current-status (-> obj tasks))))
(if (or (= v1-1 2) (= v1-1 3) (= v1-1 7) (zero? v1-1))
(-> obj draw art-group data 4)
(-> obj draw art-group data 5)
)
)
)
;; definition for method 43 of type farmer
(defmethod TODO-RENAME-43 farmer ((obj farmer))
(when
(TODO-RENAME-10
(-> obj ambient)
(new 'stack-no-clear 'vector)
9000
122880.0
obj
)
(let* ((v1-3 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
(v1-4 (the-as number (logior #x3f800000 v1-3)))
(f0-2 (+ -1.0 (the-as float v1-4)))
)
(cond
((< 0.8333333 f0-2)
(dummy-11 (-> obj ambient) "FAR-LO1A" #f (-> obj root trans))
)
((< 0.6666667 f0-2)
(dummy-11 (-> obj ambient) "FAR-AM01" #f (-> obj root trans))
)
((< 0.5 f0-2)
)
((< 0.33333334 f0-2)
(dummy-11 (-> obj ambient) "FAR-AM2A" #f (-> obj root trans))
)
((< 0.16666667 f0-2)
(dummy-11 (-> obj ambient) "FAR-AM02" #f (-> obj root trans))
)
(else
)
)
)
)
(none)
)
;; definition for method 41 of type farmer
;; INFO: Return type mismatch int vs none.
(defmethod initialize-collision farmer ((obj farmer) (arg0 int))
(let
((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player))))
(let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0)))
(set! (-> s4-0 prim-core collide-as) (the-as uint 256))
(set! (-> s4-0 collide-with) (the-as uint 16))
(set! (-> s4-0 prim-core action) (the-as uint 1))
(set! (-> s4-0 prim-core offense) 4)
(set-vector! (-> s4-0 local-sphere) 4096.0 8192.0 -4096.0 12288.0)
((method-of-object s5-0 dummy-46))
(let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
(set! (-> s3-0 prim-core collide-as) (the-as uint 256))
(set! (-> s3-0 collide-with) (the-as uint 16))
(set! (-> s3-0 prim-core action) (the-as uint 1))
(set! (-> s3-0 prim-core offense) 4)
(set-vector! (-> s3-0 local-sphere) 4096.0 6144.0 -4096.0 8192.0)
)
((method-of-object s4-0 dummy-28))
(let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
(set! (-> s3-1 prim-core collide-as) (the-as uint 256))
(set! (-> s3-1 collide-with) (the-as uint 16))
(set! (-> s3-1 prim-core action) (the-as uint 1))
(set! (-> s3-1 prim-core offense) 4)
(set-vector! (-> s3-1 local-sphere) 4096.0 10240.0 -4096.0 8192.0)
)
((method-of-object s4-0 dummy-28))
)
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
((method-of-object s5-0 dummy-50))
(set! (-> obj root) s5-0)
)
0
(none)
)
;; definition for method 11 of type farmer
(defmethod copy-defaults! farmer ((obj farmer) (arg0 res-lump))
(dummy-40 obj arg0 *farmer-sg* 3 25 (new 'static 'vector :w 4096.0) 5)
(set! (-> obj root nav-radius) 40960.0)
(nav-mesh-connect obj (-> obj root) (the-as nav-control #f))
(set! (-> obj tasks) (get-task-control (game-task village1-yakow)))
(dummy-42 obj)
(none)
)

File diff suppressed because it is too large Load Diff

View File

@ -5,3 +5,453 @@
;; name in dgo: gambler
;; dgos: L1, VI2
(define-extern *gambler-sg* skeleton-group)
;; definition of type gambler
(deftype gambler (process-taskable)
()
:heap-base #x110
:method-count-assert 53
:size-assert #x17c
:flag-assert #x350110017c
)
;; failed to figure out what this is:
(let
((v1-1
(new 'static 'skeleton-group
:art-group-name "gambler"
:bounds (new 'static 'vector :w 16384.0)
:max-lod 2
:version #x6
:shadow 4
)
)
)
(set! (-> v1-1 jgeo) 0)
(set! (-> v1-1 janim) 5)
(set! (-> v1-1 mgeo 0) (the-as uint 1))
(set! (-> v1-1 lod-dist 0) 81920.0)
(set! (-> v1-1 mgeo 1) (the-as uint 2))
(set! (-> v1-1 lod-dist 1) 163840.0)
(set! (-> v1-1 mgeo 2) (the-as uint 3))
(set! (-> v1-1 lod-dist 2) 4095996000.0)
(set! *gambler-sg* v1-1)
)
;; definition for method 32 of type gambler
(defmethod play-anim! gambler ((obj gambler) (arg0 symbol))
(with-pp
(set! (-> obj talk-message) (the-as uint 260))
(case (current-status (-> obj tasks))
((2 3)
(when arg0
(close-status! (-> obj tasks) (task-status need-introduction))
(close-specific-task!
(game-task village2-gambler-money)
(task-status need-introduction)
)
)
(new 'static 'spool-anim
:name "gambler-introduction-1"
:index 11
:parts 9
:command-list
'(
(0
want-levels
village2
rolling
)
(0
display-level
rolling
#f
)
((the binteger 29)
joint
"cameraB"
)
((the binteger 103)
joint
"camera"
)
((the binteger 231)
joint
"cameraB"
)
((the binteger 730)
display-level
rolling
display
)
((the binteger 730)
want-force-vis
rolling
#t
)
((the binteger 732)
alive
"gorge-pusher-5"
)
((the binteger 732)
alive
"gorge-pusher-6"
)
((the binteger 732)
alive
"gorge-start-1"
)
((the binteger 732)
joint
"camera"
)
((the binteger 945)
joint
"cameraB"
)
((the binteger 950)
dead
"gorge-pusher-5"
)
((the binteger 950)
dead
"gorge-pusher-6"
)
((the binteger 950)
dead
"gorge-start-1"
)
((the binteger 950)
display-level
rolling
#f
)
((the binteger 950) want-force-vis rolling #f)
)
)
)
((5)
(set! (-> obj skippable) #t)
(cond
((closed?
(-> obj tasks)
(game-task rolling-race)
(task-status need-reward-speech)
)
(new 'static 'spool-anim
:name "gambler-reminder-money"
:index 13
:parts 2
:command-list '()
)
)
((closed?
(-> obj tasks)
(game-task village2-gambler-money)
(task-status need-reward-speech)
)
(new 'static 'spool-anim
:name "gambler-reminder-race"
:index 12
:parts 2
:command-list '()
)
)
((zero? (get-reminder (-> obj tasks) 5))
(if arg0
(save-reminder (-> obj tasks) 1 5)
)
(new 'static 'spool-anim
:name "gambler-reminder-race"
:index 12
:parts 2
:command-list '()
)
)
(else
(if arg0
(save-reminder (-> obj tasks) 0 5)
)
(new 'static 'spool-anim
:name "gambler-reminder-money"
:index 13
:parts 2
:command-list '()
)
)
)
)
((6)
(if (not arg0)
(set! (-> obj will-talk) #t)
)
(case (current-task (-> obj tasks))
((52)
(when arg0
(set!
(-> obj cell-for-task)
(the-as game-task (current-task (-> obj tasks)))
)
(close-current! (-> obj tasks))
)
(new 'static 'spool-anim
:name "gambler-resolution-race"
:index 14
:parts 3
:command-list '()
)
)
(else
(cond
(arg0
(set!
(-> obj cell-for-task)
(the-as game-task (current-task (-> obj tasks)))
)
(close-current! (-> obj tasks))
(let ((a1-10 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-10 from) pp)
(set! (-> a1-10 num-params) 2)
(set! (-> a1-10 message) 'get-pickup)
(set! (-> a1-10 param 0) (the-as uint 5))
(set!
(-> a1-10 param 1)
(the-as uint (- (-> *GAME-bank* money-task-inc)))
)
(send-event-function *target* a1-10)
)
)
(else
(set! (-> obj talk-message) (the-as uint 282))
)
)
(new 'static 'spool-anim
:name "gambler-resolution-money"
:index 15
:parts 2
:command-list '()
)
)
)
)
(else
(if arg0
(format
0
"ERROR: <GMJ>: ~S playing anim for task status ~S~%"
(-> obj name)
(task-status->string
(the-as task-status (current-status (-> obj tasks)))
)
)
)
(-> obj draw art-group data 7)
)
)
)
)
;; definition for method 31 of type gambler
(defmethod get-art-elem gambler ((obj gambler))
(-> obj draw art-group data 7)
)
;; definition for method 43 of type gambler
(defmethod TODO-RENAME-43 gambler ((obj gambler))
(when
(TODO-RENAME-10
(-> obj ambient)
(new 'stack-no-clear 'vector)
9000
61440.0
obj
)
(let* ((v1-3 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
(v1-4 (the-as number (logior #x3f800000 v1-3)))
(f0-2 (+ -1.0 (the-as float v1-4)))
)
(cond
((< 0.9230769 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM01" #f (-> obj root trans))
)
((< 0.84615386 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM02" #f (-> obj root trans))
)
((< 0.7692308 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM03" #f (-> obj root trans))
)
((< 0.6923077 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM04" #f (-> obj root trans))
)
((< 0.61538464 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM05" #f (-> obj root trans))
)
((< 0.53846157 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM06" #f (-> obj root trans))
)
((< 0.46153846 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM07" #f (-> obj root trans))
)
((< 0.3846154 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM08" #f (-> obj root trans))
)
((< 0.30769232 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM09" #f (-> obj root trans))
)
((< 0.23076923 f0-2)
(if (not (task-closed? (game-task ogre-boss) (task-status need-reminder)))
(dummy-11 (-> obj ambient) "GAM-AM10" #f (-> obj root trans))
)
)
((< 0.15384616 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM11" #f (-> obj root trans))
)
((< 0.07692308 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM12" #f (-> obj root trans))
)
(else
(dummy-11 (-> obj ambient) "GAM-AM13" #f (-> obj root trans))
)
)
)
)
(none)
)
;; failed to figure out what this is:
(defstate idle (gambler)
:virtual #t
:code
(behavior ()
(when (!= (if (> (-> self skel active-channels) 0)
(-> self skel root-channel 0 frame-group)
)
(-> self draw art-group data 7)
)
(ja-channel-push! 1 60)
(let ((v1-6 (-> self skel root-channel 0)))
(set!
(-> v1-6 frame-group)
(the-as art-joint-anim (-> self draw art-group data 7))
)
)
)
(while #t
(let ((a0-9 (-> self skel root-channel 0)))
(set! (-> a0-9 frame-group) (if (> (-> self skel active-channels) 0)
(-> self skel root-channel 0 frame-group)
)
)
(set!
(-> a0-9 param 0)
(the float (+ (-> (if (> (-> self skel active-channels) 0)
(-> self skel root-channel 0 frame-group)
)
data
0
length
)
-1
)
)
)
(set! (-> a0-9 param 1) 1.0)
(set! (-> a0-9 frame-num) 0.0)
(joint-control-channel-group! a0-9 (if (> (-> self skel active-channels) 0)
(->
self
skel
root-channel
0
frame-group
)
)
num-func-seek!
)
)
(until (ja-done? 0)
(suspend)
(let ((a0-10 (-> self skel root-channel 0)))
(set!
(-> a0-10 param 0)
(the float (+ (-> a0-10 frame-group data 0 length) -1))
)
(set! (-> a0-10 param 1) 1.0)
(joint-control-channel-group-eval!
a0-10
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
(TODO-RENAME-43 self)
(let* ((v1-38 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
(v1-39 (the-as number (logior #x3f800000 v1-38)))
(f0-9 (+ -1.0 (the-as float v1-39)))
)
(cond
((< f0-9 0.16666667)
(let ((a0-15 (-> self skel root-channel 0)))
(set!
(-> a0-15 frame-group)
(the-as art-joint-anim (-> self draw art-group data 5))
)
)
)
((< f0-9 0.33333334)
(let ((a0-16 (-> self skel root-channel 0)))
(set!
(-> a0-16 frame-group)
(the-as art-joint-anim (-> self draw art-group data 6))
)
)
)
((< f0-9 0.5)
(let ((a0-17 (-> self skel root-channel 0)))
(set!
(-> a0-17 frame-group)
(the-as art-joint-anim (-> self draw art-group data 7))
)
)
)
((< f0-9 0.6666667)
(let ((a0-18 (-> self skel root-channel 0)))
(set!
(-> a0-18 frame-group)
(the-as art-joint-anim (-> self draw art-group data 8))
)
)
)
((< f0-9 0.8333333)
(let ((a0-19 (-> self skel root-channel 0)))
(set!
(-> a0-19 frame-group)
(the-as art-joint-anim (-> self draw art-group data 9))
)
)
)
(else
(let ((a0-20 (-> self skel root-channel 0)))
(set!
(-> a0-20 frame-group)
(the-as art-joint-anim (-> self draw art-group data 10))
)
)
)
)
)
)
(none)
)
)
;; definition for method 11 of type gambler
(defmethod copy-defaults! gambler ((obj gambler) (arg0 res-lump))
(dummy-40 obj arg0 *gambler-sg* 3 32 (new 'static 'vector :w 4096.0) 5)
(set! (-> obj tasks) (get-task-control (game-task rolling-race)))
(set! (-> obj sound-flava) (the-as uint 17))
(set! (-> obj draw light-index) (the-as uint 4))
(dummy-42 obj)
(none)
)

View File

@ -5,3 +5,308 @@
;; name in dgo: geologist
;; dgos: L1, VI2
(define-extern *geologist-sg* skeleton-group)
;; definition of type geologist
(deftype geologist (process-taskable)
()
:heap-base #x110
:method-count-assert 53
:size-assert #x17c
:flag-assert #x350110017c
)
;; failed to figure out what this is:
(let
((v1-1
(new 'static 'skeleton-group
:art-group-name "geologist"
:bounds (new 'static 'vector :w 16384.0)
:max-lod 2
:version #x6
:shadow 4
)
)
)
(set! (-> v1-1 jgeo) 0)
(set! (-> v1-1 janim) 5)
(set! (-> v1-1 mgeo 0) (the-as uint 1))
(set! (-> v1-1 lod-dist 0) 81920.0)
(set! (-> v1-1 mgeo 1) (the-as uint 2))
(set! (-> v1-1 lod-dist 1) 163840.0)
(set! (-> v1-1 mgeo 2) (the-as uint 3))
(set! (-> v1-1 lod-dist 2) 4095996000.0)
(set! *geologist-sg* v1-1)
)
;; definition for method 32 of type geologist
(defmethod play-anim! geologist ((obj geologist) (arg0 symbol))
(with-pp
(set! (-> obj talk-message) (the-as uint 260))
(case (current-status (-> obj tasks))
((2 3)
(when arg0
(close-status! (-> obj tasks) (task-status need-introduction))
(close-specific-task!
(game-task village2-geologist-money)
(task-status need-introduction)
)
)
(new 'static 'spool-anim
:name "geologist-introduction"
:index 6
:parts 13
:command-list
'(
(0
want-levels
village2
rolling
)
((the binteger 199)
joint
"cameraB"
)
((the binteger 325)
joint
"camera"
)
((the binteger 520)
alive
"racer-2"
)
((the binteger 544)
joint
"cameraB"
)
((the binteger 546)
dead
"racer-2"
)
((the binteger 809)
joint
"camera"
)
((the binteger 1031)
joint
"cameraB"
)
((the binteger 1229) joint "camera")
)
)
)
((5)
(set! (-> obj skippable) #t)
(cond
((closed?
(-> obj tasks)
(game-task rolling-moles)
(task-status need-reward-speech)
)
(new 'static 'spool-anim
:name "geologist-reminder-money"
:index 8
:parts 2
:command-list '()
)
)
((closed?
(-> obj tasks)
(game-task village2-geologist-money)
(task-status need-reward-speech)
)
(new 'static 'spool-anim
:name "geologist-reminder-moles"
:index 7
:parts 3
:command-list '()
)
)
((zero? (get-reminder (-> obj tasks) 0))
(if arg0
(save-reminder (-> obj tasks) 1 0)
)
(new 'static 'spool-anim
:name "geologist-reminder-moles"
:index 7
:parts 3
:command-list '()
)
)
(else
(if arg0
(save-reminder (-> obj tasks) 0 0)
)
(new 'static 'spool-anim
:name "geologist-reminder-money"
:index 8
:parts 2
:command-list '()
)
)
)
)
((6)
(if (not arg0)
(set! (-> obj will-talk) #t)
)
(case (current-task (-> obj tasks))
((54)
(when arg0
(set!
(-> obj cell-for-task)
(the-as game-task (current-task (-> obj tasks)))
)
(close-current! (-> obj tasks))
)
(new 'static 'spool-anim
:name "geologist-resolution-moles"
:index 9
:parts 3
:command-list '()
)
)
(else
(cond
(arg0
(set!
(-> obj cell-for-task)
(the-as game-task (current-task (-> obj tasks)))
)
(close-current! (-> obj tasks))
(let ((a1-10 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-10 from) pp)
(set! (-> a1-10 num-params) 2)
(set! (-> a1-10 message) 'get-pickup)
(set! (-> a1-10 param 0) (the-as uint 5))
(set!
(-> a1-10 param 1)
(the-as uint (- (-> *GAME-bank* money-task-inc)))
)
(send-event-function *target* a1-10)
)
)
(else
(set! (-> obj talk-message) (the-as uint 282))
)
)
(new 'static 'spool-anim
:name "geologist-resolution-money"
:index 10
:parts 2
:command-list '()
)
)
)
)
(else
(if arg0
(format
0
"ERROR: <GMJ>: ~S playing anim for task status ~S~%"
(-> obj name)
(task-status->string
(the-as task-status (current-status (-> obj tasks)))
)
)
)
(-> obj draw art-group data 5)
)
)
)
)
;; definition for method 31 of type geologist
(defmethod get-art-elem geologist ((obj geologist))
(-> obj draw art-group data 5)
)
;; definition for method 43 of type geologist
(defmethod TODO-RENAME-43 geologist ((obj geologist))
(when
(TODO-RENAME-10
(-> obj ambient)
(new 'stack-no-clear 'vector)
9000
122880.0
obj
)
(let* ((v1-3 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
(v1-4 (the-as number (logior #x3f800000 v1-3)))
(f0-2 (+ -1.0 (the-as float v1-4)))
)
(cond
((< 0.8888889 f0-2)
(dummy-11 (-> obj ambient) "GEO-AM01" #f (-> obj root trans))
)
((< 0.7777778 f0-2)
(if
(not
(closed?
(-> obj tasks)
(game-task rolling-moles)
(task-status need-reminder)
)
)
(dummy-11 (-> obj ambient) "GEO-AM02" #f (-> obj root trans))
)
)
((< 0.6666667 f0-2)
(dummy-11 (-> obj ambient) "GEO-AM03" #f (-> obj root trans))
)
((< 0.5555556 f0-2)
(if
(closed?
(-> obj tasks)
(game-task village2-geologist-money)
(task-status need-introduction)
)
(dummy-11 (-> obj ambient) "GEO-AM04" #f (-> obj root trans))
)
)
((< 0.44444445 f0-2)
(dummy-11 (-> obj ambient) "GEO-AM05" #f (-> obj root trans))
)
((< 0.33333334 f0-2)
(dummy-11 (-> obj ambient) "GEO-AM06" #f (-> obj root trans))
)
((< 0.22222222 f0-2)
(if
(not
(closed?
(-> obj tasks)
(game-task rolling-moles)
(task-status need-reminder)
)
)
(dummy-11 (-> obj ambient) "GEO-AM07" #f (-> obj root trans))
)
)
((< 0.11111111 f0-2)
(dummy-11 (-> obj ambient) "GEO-LO02" #f (-> obj root trans))
)
((closed?
(-> obj tasks)
(game-task village2-geologist-money)
(task-status need-resolution)
)
(dummy-11 (-> obj ambient) "GEO-AM08" #f (-> obj root trans))
)
(else
(dummy-11 (-> obj ambient) "GEO-LO01" #f (-> obj root trans))
)
)
)
)
(none)
)
;; definition for method 11 of type geologist
(defmethod copy-defaults! geologist ((obj geologist) (arg0 res-lump))
(dummy-40 obj arg0 *geologist-sg* 3 45 (new 'static 'vector :w 4096.0) 5)
(set! (-> obj tasks) (get-task-control (game-task rolling-moles)))
(set! (-> obj sound-flava) (the-as uint 16))
(set! (-> obj draw light-index) (the-as uint 2))
(dummy-42 obj)
(none)
)

View File

@ -15,3 +15,13 @@
:flag-assert #x1e008000e8
)
(define-extern *village2cam-sg* skeleton-group)
;; TODO - for warrior
(deftype allpontoons (process-drawable)
((task uint8 :offset-assert 176)
)
:method-count-assert 20
:size-assert #xb1
:heap-base #x50
:flag-assert #x14005000b1
)

View File

@ -5,3 +5,356 @@
;; name in dgo: warrior
;; dgos: L1, VI2
(define-extern *warrior-sg* skeleton-group)
;; definition of type warrior
(deftype warrior (process-taskable)
()
:heap-base #x110
:method-count-assert 53
:size-assert #x17c
:flag-assert #x350110017c
)
;; failed to figure out what this is:
(let
((v1-1
(new 'static 'skeleton-group
:art-group-name "warrior"
:bounds (new 'static 'vector :w 16384.0)
:max-lod 2
:version #x6
:shadow 4
)
)
)
(set! (-> v1-1 jgeo) 0)
(set! (-> v1-1 janim) 5)
(set! (-> v1-1 mgeo 0) (the-as uint 1))
(set! (-> v1-1 lod-dist 0) 81920.0)
(set! (-> v1-1 mgeo 1) (the-as uint 2))
(set! (-> v1-1 lod-dist 1) 163840.0)
(set! (-> v1-1 mgeo 2) (the-as uint 3))
(set! (-> v1-1 lod-dist 2) 4095996000.0)
(set! *warrior-sg* v1-1)
)
;; definition for method 52 of type warrior
;; INFO: Return type mismatch int vs none.
(defmethod dummy-52 warrior ((obj warrior))
(let ((v1-1 (-> obj draw shadow-ctrl)))
(when v1-1
(let ((f0-0 (-> obj root trans y)))
(let ((a0-2 v1-1))
(set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0)))
)
0
(set! (-> v1-1 settings top-plane w) (- (+ 3072.0 f0-0)))
)
0
)
)
(none)
)
;; definition for method 48 of type warrior
(defmethod draw-shadow warrior ((obj warrior))
(-> obj draw shadow-ctrl)
(cond
((and
(-> obj draw shadow)
(zero? (-> obj draw cur-lod))
(nonzero? (logand (-> obj draw status) 8))
)
(let ((v1-9 (-> obj draw shadow-ctrl)))
(set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags)))
)
0
((method-of-object (-> obj draw shadow-ctrl) dummy-14))
)
(else
(let ((v1-14 (-> obj draw shadow-ctrl)))
(logior! (-> v1-14 settings flags) 32)
)
0
)
)
(none)
)
;; definition for method 32 of type warrior
(defmethod play-anim! warrior ((obj warrior) (arg0 symbol))
(with-pp
(set! (-> obj talk-message) (the-as uint 260))
(case (current-status (-> obj tasks))
((2 3)
(if arg0
(close-status! (-> obj tasks) (task-status need-introduction))
)
(new 'static 'spool-anim
:name "warrior-introduction"
:index 6
:parts 29
:command-list
'(
((the binteger 125)
joint
"cameraB"
)
((the binteger 260)
joint
"camera"
)
((the binteger 574)
joint
"cameraB"
)
((the binteger 918)
joint
"camera"
)
((the binteger 1174)
joint
"cameraB"
)
((the binteger 1174)
shadow
self
#f
)
((the binteger 1301)
joint
"camera"
)
((the binteger 1301)
shadow
self
#t
)
((the binteger 2025)
joint
"cameraB"
)
((the binteger 2322)
joint
"camera"
)
((the binteger 2560) joint "cameraB")
)
)
)
((5)
(set! (-> obj skippable) #t)
(new 'static 'spool-anim
:name "warrior-reminder-1"
:index 7
:parts 3
:command-list '()
)
)
((6)
(cond
(arg0
(set!
(-> obj cell-for-task)
(the-as game-task (current-task (-> obj tasks)))
)
(close-current! (-> obj tasks))
(let ((a1-4 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-4 from) pp)
(set! (-> a1-4 num-params) 2)
(set! (-> a1-4 message) 'get-pickup)
(set! (-> a1-4 param 0) (the-as uint 5))
(set!
(-> a1-4 param 1)
(the-as uint (- (-> *GAME-bank* money-task-inc)))
)
(send-event-function *target* a1-4)
)
(let ((s5-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> s5-1 from) pp)
(set! (-> s5-1 num-params) 1)
(set! (-> s5-1 message) 'clone)
(let* ((a0-10 obj)
(v1-19 (if a0-10
(-> a0-10 ppointer)
)
)
)
(set!
(-> s5-1 param 0)
(the-as
uint
(logior
(shl (-> v1-19 0 pid) 32)
(new 'static 'handle :process v1-19)
)
)
)
)
(send-event-function
(-> (entity-by-type allpontoons) extra process)
s5-1
)
)
(dotimes (s5-2 (entity-actor-count (-> obj entity) 'alt-actor))
(entity-birth-no-kill
(entity-actor-lookup (-> obj entity) 'alt-actor s5-2)
)
(let ((s4-2 (new 'stack-no-clear 'event-message-block)))
(set! (-> s4-2 from) pp)
(set! (-> s4-2 num-params) 0)
(set! (-> s4-2 message) 'die)
(let ((s3-0 send-event-function)
(v1-25 (entity-actor-lookup (-> obj entity) 'alt-actor s5-2))
)
(s3-0 (if v1-25
(-> v1-25 extra process)
)
s4-2
)
)
)
)
)
(else
(set! (-> obj will-talk) #t)
(set! (-> obj talk-message) (the-as uint 282))
)
)
(new 'static 'spool-anim
:name "warrior-resolution"
:index 8
:parts 6
:command-list
'(
((the binteger 508)
blackout
(the binteger 10)
)
((the binteger 511) blackout 0)
)
)
)
(else
(if arg0
(format
0
"ERROR: <GMJ>: ~S playing anim for task status ~S~%"
(-> obj name)
(task-status->string
(the-as task-status (current-status (-> obj tasks)))
)
)
)
(-> obj draw art-group data 5)
)
)
)
)
;; definition for method 31 of type warrior
(defmethod get-art-elem warrior ((obj warrior))
(-> obj draw art-group data 5)
)
;; failed to figure out what this is:
(defstate play-anim (warrior)
:virtual #t
:exit
(behavior ()
(let ((gp-0 (new 'stack-no-clear 'event-message-block)))
(set! (-> gp-0 from) self)
(set! (-> gp-0 num-params) 0)
(set! (-> gp-0 message) 'end-mode)
(send-event-function (-> (entity-by-type allpontoons) extra process) gp-0)
)
((-> (method-of-type process-taskable play-anim) exit))
(none)
)
)
;; definition for method 43 of type warrior
(defmethod TODO-RENAME-43 warrior ((obj warrior))
(when
(TODO-RENAME-10
(-> obj ambient)
(new 'stack-no-clear 'vector)
600
61440.0
obj
)
(let* ((v1-3 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
(v1-4 (the-as number (logior #x3f800000 v1-3)))
(f0-2 (+ -1.0 (the-as float v1-4)))
)
(cond
((< 0.66 f0-2)
(dummy-11 (-> obj ambient) "WAR-LO1A" #f (-> obj root trans))
)
((< 0.33 f0-2)
(dummy-11 (-> obj ambient) "WAR-LO1B" #f (-> obj root trans))
)
(else
(dummy-11 (-> obj ambient) "WAR-LO1C" #f (-> obj root trans))
)
)
)
)
(none)
)
;; definition for method 41 of type warrior
;; INFO: Return type mismatch int vs none.
(defmethod initialize-collision warrior ((obj warrior) (arg0 int))
(let
((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player))))
(let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0)))
(set! (-> s4-0 prim-core collide-as) (the-as uint 256))
(set! (-> s4-0 collide-with) (the-as uint 16))
(set! (-> s4-0 prim-core action) (the-as uint 1))
(set! (-> s4-0 prim-core offense) 4)
(set-vector! (-> s4-0 local-sphere) -3072.0 8192.0 0.0 11264.0)
((method-of-object s5-0 dummy-46))
(let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
(set! (-> s3-0 prim-core collide-as) (the-as uint 256))
(set! (-> s3-0 collide-with) (the-as uint 16))
(set! (-> s3-0 prim-core action) (the-as uint 1))
(set! (-> s3-0 prim-core offense) 4)
(set-vector! (-> s3-0 local-sphere) -2048.0 9216.0 0.0 8192.0)
)
((method-of-object s4-0 dummy-28))
(let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
(set! (-> s3-1 prim-core collide-as) (the-as uint 256))
(set! (-> s3-1 collide-with) (the-as uint 16))
(set! (-> s3-1 prim-core action) (the-as uint 1))
(set! (-> s3-1 prim-core offense) 4)
(set-vector! (-> s3-1 local-sphere) 0.0 2048.0 0.0 4096.0)
)
((method-of-object s4-0 dummy-28))
)
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
((method-of-object s5-0 dummy-50))
(set! (-> obj root) s5-0)
)
0
(none)
)
;; definition for method 11 of type warrior
(defmethod copy-defaults! warrior ((obj warrior) (arg0 res-lump))
(dummy-40
obj
arg0
*warrior-sg*
3
33
(new 'static 'vector :y -4096.0 :w 10240.0)
5
)
(set! (-> obj tasks) (get-task-control (game-task village2-warrior-money)))
(set! (-> obj sound-flava) (the-as uint 15))
(set! (-> obj draw light-index) (the-as uint 3))
(dummy-42 obj)
(none)
)

View File

@ -5,3 +5,809 @@
;; name in dgo: oracle
;; dgos: CIT, L1, VI1, VI2, VI3, VILLAGEP
(define-extern *oracle-sg* skeleton-group)
;; definition of type oracle
(deftype oracle (process-taskable)
((first-task uint8 :offset-assert 380)
(second-task uint8 :offset-assert 381)
(left-eye-cell handle :offset-assert 384)
(right-eye-cell handle :offset-assert 392)
)
:heap-base #x120
:method-count-assert 53
:size-assert #x190
:flag-assert #x3501200190
)
;; failed to figure out what this is:
(let
((v1-1
(new 'static 'skeleton-group
:art-group-name "oracle"
:bounds (new 'static 'vector :w 16384.0)
:version #x6
)
)
)
(set! (-> v1-1 jgeo) 0)
(set! (-> v1-1 janim) 2)
(set! (-> v1-1 mgeo 0) (the-as uint 1))
(set! (-> v1-1 lod-dist 0) 4095996000.0)
(set! *oracle-sg* v1-1)
)
;; definition for method 32 of type oracle
(defmethod play-anim! oracle ((obj oracle) (arg0 symbol))
(with-pp
(set! (-> obj talk-message) (the-as uint 260))
(case (current-status (-> obj tasks))
((2 3)
(when arg0
(close-specific-task!
(the-as game-task (-> obj first-task))
(task-status need-introduction)
)
(close-specific-task!
(the-as game-task (-> obj second-task))
(task-status need-introduction)
)
)
(case (-> (level-get-target-inside *level*) name)
(('village1)
(new 'static 'spool-anim
:name "oracle-intro-1"
:index 9
:parts 5
:command-list '()
)
)
(('village2)
(new 'static 'spool-anim
:name "oracle-intro-2"
:index 11
:parts 4
:command-list
'(
(0
kill
"pontoonten-20"
)
(0
kill
"pontoonten-19"
)
(0
kill
"pontoonten-18"
)
(0
kill
"pontoonten-15"
)
(0
kill
"pontoonten-14"
)
(0
kill
"pontoonfive-14"
)
(0
kill
"pontoonfive-15"
)
(0
kill
"pontoonfive-19"
)
(0
kill
"pontoonfive-20"
)
(0
kill
"med-res-level-12"
)
(0
kill
"med-res-level-13"
)
(0
kill
"med-res-level-15"
)
(0
kill
"money-2844"
)
(0
kill
"money-2845"
)
(0
kill
"money-2846"
)
(0
kill
"money-2847"
)
(0
kill
"money-2848"
)
(0
kill
"money-2849"
)
(0
kill
"money-2850"
)
(0
kill
"money-2854"
)
(0
kill
"money-2855"
)
(0
kill
"money-2856"
)
(0
kill
"money-2860"
)
(0
kill
"money-2861"
)
(0
kill
"money-2862"
)
(0
kill
"eco-27"
)
(0
kill
"eco-26"
)
(0
kill
"sharkey-25"
)
(0
kill
"barrel-13"
)
(0
kill
"barrel-14"
)
(0
kill
"barrel-15"
)
(0
kill
"barrel-16"
)
(0
kill
"barrel-17"
)
(0
kill
"barrel-18"
)
(0
kill
"barrel-19"
)
(0
kill
"barrel-20"
)
(0
kill
"barrel-21"
)
(0
kill
"barrel-22"
)
(0
kill
"barrel-23"
)
(0
kill
"villageb-part-18"
)
(0
kill
"villageb-part-19"
)
(0
kill
"villageb-part-20"
)
(0
kill
"villageb-part-21"
)
(0
kill
"villageb-part-28"
)
(0
kill
"villageb-part-29"
)
(0
kill
"villageb-part-30"
)
(0
kill
"villageb-part-31"
)
(0
kill
"villageb-part-32"
)
(0
kill
"villageb-part-33"
)
(0
kill
"villageb-part-35"
)
(0
kill
"villageb-part-37"
)
(0
kill
"villageb-part-38"
)
(0
kill
"villageb-part-47"
)
(0
kill
"villageb-part-48"
)
(0
kill
"villageb-part-49"
)
(0
kill
"villageb-part-50"
)
(0
kill
"villageb-part-56"
)
(0
kill
"villageb-part-62"
)
(0
kill
"villageb-part-63"
)
(0
kill
"villageb-ogreboss-1"
)
(0
kill
"crate-3127"
)
(0
kill
"crate-3128"
)
(0
kill
"crate-3129"
)
(0
kill
"crate-3133"
)
(0
kill
"geologist-1"
)
(0
kill
"fireboulder-2"
)
(0
kill
"fireboulder-3"
)
(0
kill
"fireboulder-4"
)
(0
kill
"water-vol-100"
)
(0
kill
"water-vol-101"
)
(0
kill
"water-vol-102"
)
(0
kill
"water-vol-103"
)
(0
kill
"water-vol-284"
)
(0
kill
"water-vol-285"
)
(0
kill
"water-vol-286"
)
(0
kill
"ceilingflag-6"
)
(0
kill
"ceilingflag-7"
)
(0
kill
"ceilingflag-8"
)
(0
kill
"ceilingflag-9"
)
(0
kill
"orb-cache-top-14"
)
(0
setting-reset
ocean-off
near
)
((the binteger 399) setting-unset ocean-off)
)
)
)
(('village3)
(new 'static 'spool-anim
:name "oracle-intro-3"
:index 13
:parts 4
:command-list '()
)
)
)
)
((5)
(set! (-> obj skippable) #t)
(case (-> (level-get-target-inside *level*) name)
(('village1)
(new 'static 'spool-anim
:name "oracle-reminder-1"
:index 10
:parts 4
:command-list '()
)
)
(('village2)
(new 'static 'spool-anim
:name "oracle-reminder-2"
:index 12
:parts 2
:command-list '()
)
)
(('village3)
(new 'static 'spool-anim
:name "oracle-reminder-3"
:index 14
:parts 2
:command-list '()
)
)
)
)
((6)
(cond
(arg0
(set!
(-> obj cell-for-task)
(the-as game-task (current-task (-> obj tasks)))
)
(close-current! (-> obj tasks))
(let ((a1-5 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-5 from) pp)
(set! (-> a1-5 num-params) 2)
(set! (-> a1-5 message) 'get-pickup)
(set! (-> a1-5 param 0) (the-as uint 5))
(set!
(-> a1-5 param 1)
(the-as uint (- (-> *GAME-bank* money-oracle-inc)))
)
(send-event-function *target* a1-5)
)
(cond
((= (current-task (-> obj tasks)) (-> obj first-task))
(let ((a0-25 (handle->process (-> obj right-eye-cell))))
(if a0-25
(deactivate a0-25)
)
)
)
(else
(let ((a0-29 (handle->process (-> obj left-eye-cell))))
(if a0-29
(deactivate a0-29)
)
)
)
)
)
(else
(set! (-> obj will-talk) #t)
(set! (-> obj talk-message) (the-as uint 283))
)
)
(cond
((= (current-task (-> obj tasks)) (-> obj first-task))
(case (-> (level-get-target-inside *level*) name)
(('village1)
(new 'static 'spool-anim
:name "oracle-right-eye-1"
:index 3
:parts 2
:command-list '()
)
)
(('village2)
(new 'static 'spool-anim
:name "oracle-right-eye-2"
:index 5
:parts 2
:command-list '()
)
)
(('village3)
(new 'static 'spool-anim
:name "oracle-right-eye-3"
:index 7
:parts 2
:command-list '()
)
)
)
)
(else
(case (-> (level-get-target-inside *level*) name)
(('village1)
(new 'static 'spool-anim
:name "oracle-left-eye-1"
:index 4
:parts 2
:command-list '()
)
)
(('village2)
(new 'static 'spool-anim
:name "oracle-left-eye-2"
:index 6
:parts 2
:command-list '()
)
)
(('village3)
(new 'static 'spool-anim
:name "oracle-left-eye-3"
:index 8
:parts 2
:command-list '()
)
)
)
)
)
)
(else
(if arg0
(format
0
"ERROR: <GMJ>: ~S playing anim for task status ~S~%"
(-> obj name)
(task-status->string
(the-as task-status (current-status (-> obj tasks)))
)
)
)
(-> obj draw art-group data 2)
)
)
)
)
;; definition for method 31 of type oracle
(defmethod get-art-elem oracle ((obj oracle))
(-> obj draw art-group data 2)
)
;; failed to figure out what this is:
(defstate idle (oracle)
:virtual #t
:exit
(behavior ()
(stop! (-> self sound))
((-> (method-of-type process-taskable idle) exit))
(none)
)
:trans
(behavior ()
(update! (-> self sound))
((-> (method-of-type process-taskable idle) trans))
(none)
)
)
;; definition for method 11 of type oracle
(defmethod copy-defaults! oracle ((obj oracle) (arg0 res-lump))
(with-pp
(dummy-40
obj
arg0
*oracle-sg*
3
4
(new 'static 'vector :y -4096.0 :w 4096.0)
-1
)
(set!
(-> obj sound)
(new
'process
'ambient-sound
(new 'static 'sound-spec
:mask #x80
:num 1.0
:group #x1
:sound-name-char
(new 'static 'array uint8 16
#x6f
#x72
#x61
#x63
#x6c
#x65
#x2d
#x73
#x6c
#x65
#x65
#x70
#x0
#x0
#x0
#x0
)
:volume #x400
:fo-max 50
)
(-> obj root trans)
)
)
(set! (-> obj first-task) (the-as uint (-> arg0 extra perm task)))
(set!
(-> obj second-task)
(the-as
uint
(get-property-value
arg0
'alt-task
'interp
-1000000000.0
(the-as uint128 0)
(the-as (pointer res-tag) #f)
*res-static-buf*
)
)
)
(set!
(-> obj tasks)
(get-task-control (the-as game-task (-> obj first-task)))
)
(set! (-> obj right-eye-cell) (the-as handle #f))
(set! (-> obj left-eye-cell) (the-as handle #f))
(logior! (-> obj draw status) 32)
(let ((s4-0 (new 'stack-no-clear 'vector))
(s5-1 (lambda :behavior oracle () (let* ((gp-0 (-> self root))
(v1-1
(if
(and
(nonzero? gp-0)
(type-type?
(-> gp-0 type)
collide-shape
)
)
gp-0
)
)
)
(if v1-1
(->
(the-as collide-shape v1-1)
root-prim
prim-core
)
(-> self root trans)
)
)
((method-of-object (-> self part) dummy-11))
0
(none)
)
)
)
(ja-post)
(when
(not
(task-closed?
(the-as game-task (-> obj first-task))
(task-status need-resolution)
)
)
(vector<-cspace! s4-0 (-> obj node-list data 5))
(let* ((s3-0 (get-process *default-dead-pool* manipy #x4000))
(v1-13 (when s3-0
(let ((t9-8 (method-of-type manipy activate)))
(t9-8
(the-as manipy s3-0)
obj
'manipy
(the-as pointer #x70004000)
)
)
((the-as
(function process function object object object object object)
run-function-in-process
)
s3-0
manipy-init
s4-0
(-> obj entity)
*fuel-cell-sg*
(new 'static 'vector :w 4915.2)
)
(-> s3-0 ppointer)
)
)
)
(set!
(-> obj right-eye-cell)
(new 'static 'handle :process v1-13 :pid (-> v1-13 0 pid))
)
)
(let ((a1-9 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-9 from) pp)
(set! (-> a1-9 num-params) 1)
(set! (-> a1-9 message) 'eval)
(set!
(-> a1-9 param 0)
(the-as
uint
(lambda :behavior oracle
()
(let ((v0-0 (dummy-9 (-> *part-group-id-table* 63) self)))
(set! (-> self part) (the-as sparticle-launch-control v0-0))
v0-0
)
)
)
)
(send-event-function (handle->process (-> obj right-eye-cell)) a1-9)
)
(let ((a1-10 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-10 from) pp)
(set! (-> a1-10 num-params) 1)
(set! (-> a1-10 message) 'trans-hook)
(set! (-> a1-10 param 0) (the-as uint s5-1))
(send-event-function (handle->process (-> obj right-eye-cell)) a1-10)
)
)
(when
(not
(task-closed?
(the-as game-task (-> obj second-task))
(task-status need-resolution)
)
)
(vector<-cspace! s4-0 (-> obj node-list data 6))
(let* ((s3-1 (get-process *default-dead-pool* manipy #x4000))
(v1-33 (when s3-1
(let ((t9-15 (method-of-type manipy activate)))
(t9-15
(the-as manipy s3-1)
obj
'manipy
(the-as pointer #x70004000)
)
)
((the-as
(function process function object object object object object)
run-function-in-process
)
s3-1
manipy-init
s4-0
(-> obj entity)
*fuel-cell-sg*
(new 'static 'vector :w 4915.2)
)
(-> s3-1 ppointer)
)
)
)
(set!
(-> obj left-eye-cell)
(new 'static 'handle :process v1-33 :pid (-> v1-33 0 pid))
)
)
(let ((a1-16 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-16 from) pp)
(set! (-> a1-16 num-params) 1)
(set! (-> a1-16 message) 'eval)
(set!
(-> a1-16 param 0)
(the-as
uint
(lambda :behavior oracle
()
(let ((v0-0 (dummy-9 (-> *part-group-id-table* 63) self)))
(set! (-> self part) (the-as sparticle-launch-control v0-0))
v0-0
)
)
)
)
(send-event-function (handle->process (-> obj left-eye-cell)) a1-16)
)
(let ((a1-17 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-17 from) pp)
(set! (-> a1-17 num-params) 1)
(set! (-> a1-17 message) 'trans-hook)
(set! (-> a1-17 param 0) (the-as uint s5-1))
(send-event-function (handle->process (-> obj left-eye-cell)) a1-17)
)
)
)
(dummy-42 obj)
(none)
)
)

View File

@ -23,10 +23,19 @@ with open(file_path) as f:
# Find all
content = f.readlines()
prev_line = ""
next_label_will_be_lambda = False
for i, line in enumerate(content):
if ".function (anon-function" in line:
next_label_will_be_lambda = True
if line.startswith("L"):
for label in labels_with_no_type:
if line.startswith("{}:".format(label)):
# If we were expecting a lambda
if next_label_will_be_lambda:
label_lines.append("[\"{}\", \"_lambda_\", true]".format(label))
labels_with_no_type.remove(label)
next_label_will_be_lambda = False
break
# Check if the previous line has a `.type`
prev_line = content[i-1]
if ".type" in prev_line:
@ -34,17 +43,6 @@ with open(file_path) as f:
label_lines.append("[\"{}\", \"{}\", true]".format(label, the_type))
labels_with_no_type.remove(label)
break
# Otherwise, lets see if it's a lambda, check the last 10 lines (hopefully this is enough)
found_it = False
for j in range(20):
temp_line = content[i-j]
if "anon-function" in temp_line:
label_lines.append("[\"{}\", \"_lambda_\", true]".format(label))
labels_with_no_type.remove(label)
found_it = True
break
if found_it:
break
# Print out the labels
print("Here are the labels I couldn't find a type for:")

View File

@ -73,8 +73,8 @@
:flag-assert #xc00000010
(:methods
(dummy-9 (_type_ vector int float process-drawable) none 9)
(dummy-10 () none 10)
(dummy-11 () none 11)
(TODO-RENAME-10 (_type_ vector int float process-drawable) vector 10)
(dummy-11 (_type_ string symbol vector) none 11)
)
)
@ -121,34 +121,34 @@
:flag-assert #x350110017c
(:methods
(dummy-20 () none 20)
(give-cell () none 21)
(give-cell () _type_ :state 21)
(dummy-22 () none 22)
(enter-playing () none 23)
(play-accept () none 24)
(dummy-25 () none 25)
(query () none 26)
(play-anim () none 27)
(hidden () none 28)
(play-anim () _type_ :state 27)
(hidden () _type_ :state 28)
(dummy-29 () none 29)
(idle () none 30)
(dummy-31 (_type_) none 31)
(dummy-32 (_type_ symbol) spool-anim 32)
(idle () _type_ :state 30)
(get-art-elem (_type_) art-element 31)
(play-anim! (_type_ symbol) basic 32)
(dummy-33 (_type_) none 33)
(dummy-34 (_type_) none 34)
(dummy-35 (_type_) none 35)
(dummy-36 (_type_) none 36)
(dummy-37 (_type_) none 37)
(dummy-38 (_type_) none 38)
(dummy-39 (_type_) none 39)
(should-display? (_type_) symbol 39)
(dummy-40 (_type_ object skeleton-group int int vector int) none 40)
(dummy-41 (_type_) none 41)
(initialize-collision (_type_ int) none 41)
(dummy-42 (_type_) none 42)
(dummy-43 (_type_) none 43)
(TODO-RENAME-43 (_type_) none 43)
(dummy-44 (_type_) none 44)
(dummy-45 (_type_) none 45)
(dummy-46 (_type_) none 46)
(dummy-47 (_type_) none 47)
(dummy-48 (_type_) none 48)
(target-above-threshold? (_type_) symbol 47)
(draw-shadow (_type_) none 48)
(dummy-49 (_type_) none 49)
(dummy-50 (_type_) none 50)
(dummy-51 (_type_) none 51)

View File

@ -153,7 +153,7 @@
:size-assert #x30
:flag-assert #xa00000030
(:methods
(dummy-9 () none 9)
(dummy-9 (_type_ process) _type_ 9)
)
)

View File

@ -166,8 +166,8 @@
(deftype spool-anim (basic)
((name string :offset 16)
(buf1 external-art-buffer :offset 16)
(buf2 external-art-buffer :offset-assert 20)
(index int32 :offset 20)
(buf2 external-art-buffer :offset 20)
(parts int32 :offset-assert 24)
(priority float :offset-assert 28)
(owner handle :offset-assert 32)
@ -183,7 +183,7 @@
(defmethod inspect spool-anim ((obj spool-anim))
(format #t "[~8x] ~A~%" obj (-> obj type))
(format #t "~Tname: ~A~%" (-> obj name))
(format #t "~Tindex: ~D~%" (-> obj buf2))
(format #t "~Tindex: ~D~%" (-> obj index))
(format #t "~Tparts: ~D~%" (-> obj parts))
(format #t "~Tpriority: ~f~%" (-> obj priority))
(format #t "~Towner: ~D~%" (-> obj owner))

View File

@ -646,7 +646,7 @@
(set! (-> obj buffer v1-5 frame-lock) #f)
)
(dotimes (v1-8 3)
(set! (-> obj rec v1-8 buf2) #f)
(set! (-> obj rec v1-8 index) (the-as int #f))
)
(dotimes (s4-0 2)
(let ((s3-0 (-> obj rec s4-0)))
@ -658,7 +658,7 @@
(not (-> obj buffer s2-0 frame-lock))
)
(set! (-> obj buffer s2-0 frame-lock) #t)
(set! (-> s3-0 buf2) (-> obj buffer s2-0))
(set! (-> s3-0 index) (the-as int (-> obj buffer s2-0)))
(set! (-> obj buffer s2-0 pending-load-file-owner) (-> s3-0 owner))
(set! (-> obj buffer s2-0 load-file-owner) (-> s3-0 owner))
(set! (-> obj buffer s2-0 pending-load-file-priority) (-> s3-0 priority))
@ -686,7 +686,7 @@
(-> s3-1 owner)
(-> s3-1 priority)
)
(set! (-> s3-1 buf2) (-> obj buffer s2-1))
(set! (-> s3-1 index) (the-as int (-> obj buffer s2-1)))
(goto cfg-46)
)
)

View File

@ -591,7 +591,7 @@
(defmethod should-display? nav-control ((obj nav-control))
(and
*display-nav-marks*
(nonzero? (logand (-> obj flags) (nav-control-flags bit0 display-marks)))
(nonzero? (logand (-> obj flags) (nav-control-flags display-marks bit0)))
)
)

View File

@ -302,7 +302,7 @@
(deftype state (protect-frame)
((code function :offset-assert 16)
(trans (function none) :offset-assert 20)
(post function :offset-assert 24)
(post (function none) :offset-assert 24)
(enter function :offset-assert 28)
(event (function process int symbol event-message-block object) :offset-assert 32)
)

View File

@ -0,0 +1,227 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type bird-lady-beach
(deftype bird-lady-beach (process-taskable)
((flutflut handle :offset-assert 384)
(egg handle :offset-assert 392)
)
:heap-base #x120
:method-count-assert 53
:size-assert #x190
:flag-assert #x3501200190
)
;; definition for method 3 of type bird-lady-beach
(defmethod inspect bird-lady-beach ((obj bird-lady-beach))
(let ((t9-0 (method-of-type process-taskable inspect)))
(t9-0 obj)
)
(format #t "~T~Tflutflut: ~D~%" (-> obj flutflut))
(format #t "~T~Tegg: ~D~%" (-> obj egg))
obj
)
;; failed to figure out what this is:
(let
((v1-1
(new 'static 'skeleton-group
:art-group-name "bird-lady-beach"
:bounds (new 'static 'vector :w 16384.0)
:version #x6
:shadow 2
)
)
)
(set! (-> v1-1 jgeo) 0)
(set! (-> v1-1 janim) 3)
(set! (-> v1-1 mgeo 0) (the-as uint 1))
(set! (-> v1-1 lod-dist 0) 4095996000.0)
(set! *bird-lady-beach-sg* v1-1)
)
;; failed to figure out what this is:
(defstate idle (bird-lady-beach)
:virtual #t
:enter
(behavior ()
(when (not (should-display? self))
(let ((a0-2 (handle->process (-> self flutflut))))
(if a0-2
(deactivate a0-2)
)
)
(let ((a0-6 (handle->process (-> self egg))))
(if a0-6
(deactivate a0-6)
)
)
(go-virtual hidden)
)
((-> (method-of-type process-taskable idle) enter))
(none)
)
)
;; definition for method 32 of type bird-lady-beach
(defmethod play-anim! bird-lady-beach ((obj bird-lady-beach) (arg0 symbol))
(with-pp
(case (current-status (-> obj tasks))
((6)
(when arg0
(set!
(-> obj cell-for-task)
(the-as game-task (current-task (-> obj tasks)))
)
(close-current! (-> obj tasks))
(let* ((s5-1 (get-process *default-dead-pool* manipy #x4000))
(v1-8 (when s5-1
(let ((t9-4 (method-of-type manipy activate)))
(t9-4
(the-as manipy s5-1)
obj
'manipy
(the-as pointer #x70004000)
)
)
((the-as
(function process function object object object object object)
run-function-in-process
)
s5-1
manipy-init
(-> obj root trans)
(-> obj entity)
*flutflut-naked-sg*
#f
)
(-> s5-1 ppointer)
)
)
)
(set!
(-> obj flutflut)
(new 'static 'handle :process v1-8 :pid (-> v1-8 0 pid))
)
)
(let ((a1-4 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-4 from) pp)
(set! (-> a1-4 num-params) 1)
(set! (-> a1-4 message) 'anim-mode)
(set! (-> a1-4 param 0) (the-as uint 'clone-anim))
(send-event-function (handle->process (-> obj flutflut)) a1-4)
)
(let ((a1-5 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-5 from) pp)
(set! (-> a1-5 num-params) 1)
(set! (-> a1-5 message) 'blend-shape)
(set! (-> a1-5 param 0) (the-as uint #t))
(send-event-function (handle->process (-> obj flutflut)) a1-5)
)
(let* ((s5-2 (get-process *default-dead-pool* manipy #x4000))
(v1-28 (when s5-2
(let ((t9-9 (method-of-type manipy activate)))
(t9-9
(the-as manipy s5-2)
obj
'manipy
(the-as pointer #x70004000)
)
)
((the-as
(function process function object object object object object)
run-function-in-process
)
s5-2
manipy-init
(-> obj root trans)
(-> obj entity)
*flutflutegg-sg*
#f
)
(-> s5-2 ppointer)
)
)
)
(set!
(-> obj egg)
(new 'static 'handle :process v1-28 :pid (-> v1-28 0 pid))
)
)
(let ((a1-9 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-9 from) pp)
(set! (-> a1-9 num-params) 1)
(set! (-> a1-9 message) 'anim-mode)
(set! (-> a1-9 param 0) (the-as uint 'clone-anim))
(send-event-function (handle->process (-> obj egg)) a1-9)
)
)
(new 'static 'spool-anim
:name "bird-lady-beach-resolution"
:index 4
:parts 10
:command-list
'(
((the binteger 141)
joint
"cameraB"
)
((the binteger 535)
joint
"camera"
)
((the binteger 696)
joint
"cameraB"
)
((the binteger 758)
joint
"camera"
)
((the binteger 813) joint "cameraB")
)
)
)
(else
(if arg0
(format
0
"ERROR: <GMJ>: ~S playing anim for task status ~S~%"
(-> obj name)
(task-status->string
(the-as task-status (current-status (-> obj tasks)))
)
)
)
(-> obj draw art-group data 3)
)
)
)
)
;; definition for method 31 of type bird-lady-beach
(defmethod get-art-elem bird-lady-beach ((obj bird-lady-beach))
(-> obj draw art-group data 3)
)
;; definition for method 39 of type bird-lady-beach
(defmethod should-display? bird-lady-beach ((obj bird-lady-beach))
(= (current-status (-> obj tasks)) 6)
)
;; definition for method 11 of type bird-lady-beach
(defmethod copy-defaults! bird-lady-beach ((obj bird-lady-beach) (arg0 res-lump))
(dummy-40
obj
arg0
*bird-lady-beach-sg*
3
51
(new 'static 'vector :y 4096.0 :w 4096.0)
5
)
(set! (-> obj tasks) (get-task-control (game-task beach-flutflut)))
(set! (-> obj sound-flava) (the-as uint 7))
(dummy-42 obj)
(none)
)

View File

@ -0,0 +1,290 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type bird-lady
(deftype bird-lady (process-taskable)
()
:heap-base #x110
:method-count-assert 53
:size-assert #x17c
:flag-assert #x350110017c
)
;; definition for method 3 of type bird-lady
(defmethod inspect bird-lady ((obj bird-lady))
(let ((t9-0 (method-of-type process-taskable inspect)))
(t9-0 obj)
)
obj
)
;; failed to figure out what this is:
(let
((v1-1
(new 'static 'skeleton-group
:art-group-name "bird-lady"
:bounds
(new 'static 'vector :y 4096.0 :w 10240.0)
:version #x6
:shadow 2
)
)
)
(set! (-> v1-1 jgeo) 0)
(set! (-> v1-1 janim) 3)
(set! (-> v1-1 mgeo 0) (the-as uint 1))
(set! (-> v1-1 lod-dist 0) 4095996000.0)
(set! *bird-lady-sg* v1-1)
)
;; definition for method 52 of type bird-lady
;; INFO: Return type mismatch int vs none.
(defmethod dummy-52 bird-lady ((obj bird-lady))
(let ((v1-1 (-> obj draw shadow-ctrl)))
(when v1-1
(let ((f0-0 (-> obj root trans y)))
(let ((a0-2 v1-1))
(set! (-> a0-2 settings bot-plane w) (- (+ -1024.0 f0-0)))
)
0
(let ((a0-4 v1-1))
(set! (-> a0-4 settings top-plane w) (- (+ 4096.0 f0-0)))
)
)
0
(set! (-> v1-1 settings flags) (logand -9 (-> v1-1 settings flags)))
)
)
(none)
)
;; definition for method 48 of type bird-lady
(defmethod draw-shadow bird-lady ((obj bird-lady))
(-> obj draw shadow-ctrl)
(cond
((and
(-> obj draw shadow)
(zero? (-> obj draw cur-lod))
(nonzero? (logand (-> obj draw status) 8))
)
(let ((v1-9 (-> obj draw shadow-ctrl)))
(set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags)))
)
0
((method-of-object (-> obj draw shadow-ctrl) dummy-14))
)
(else
(let ((v1-14 (-> obj draw shadow-ctrl)))
(logior! (-> v1-14 settings flags) 32)
)
0
)
)
(none)
)
;; definition for method 32 of type bird-lady
(defmethod play-anim! bird-lady ((obj bird-lady) (arg0 symbol))
(case (current-status (-> obj tasks))
((2 3)
(if arg0
(close-status! (-> obj tasks) (task-status need-introduction))
)
(new 'static 'spool-anim
:name "bird-lady-introduction"
:index 4
:parts 11
:command-list
'(
(0
want-levels
village1
beach
)
((the binteger 49)
joint
"cameraB"
)
((the binteger 101)
display-level
beach
special
)
((the binteger 101)
kill
"yakow-8"
)
((the binteger 101)
kill
"yakow-9"
)
((the binteger 101)
kill
"yakow-10"
)
((the binteger 101)
kill
"yakow-11"
)
((the binteger 101)
kill
"yakow-12"
)
((the binteger 102)
joint
"camera"
)
((the binteger 125)
joint
"cameraB"
)
((the binteger 251)
joint
"camera"
)
((the binteger 326)
joint
"cameraB"
)
((the binteger 649)
display-level
beach
movie
)
((the binteger 649)
want-force-vis
beach
#t
)
((the binteger 650)
alive
"flutflutegg-1"
)
((the binteger 651)
joint
"camera"
)
((the binteger 1041)
joint
"cameraB"
)
((the binteger 1046)
dead
"flutflutegg-1"
)
((the binteger 1046)
display-level
beach
display
)
((the binteger 1046) want-force-vis beach #f)
)
)
)
((5)
(set! (-> obj skippable) #t)
(cond
((zero? (get-reminder (-> obj tasks) 0))
(if arg0
(save-reminder (-> obj tasks) 1 0)
)
(new 'static 'spool-anim
:name "bird-lady-reminder-1"
:index 5
:parts 4
:command-list '()
)
)
(else
(if arg0
(save-reminder (-> obj tasks) 0 0)
)
(new 'static 'spool-anim
:name "bird-lady-reminder-2"
:index 6
:parts 5
:command-list '()
)
)
)
)
(else
(if arg0
(format
0
"ERROR: <GMJ>: ~S playing anim for task status ~S~%"
(-> obj name)
(task-status->string (the-as task-status (current-status (-> obj tasks))))
)
)
(-> obj draw art-group data 3)
)
)
)
;; definition for method 31 of type bird-lady
(defmethod get-art-elem bird-lady ((obj bird-lady))
(-> obj draw art-group data 3)
)
;; definition for method 43 of type bird-lady
(defmethod TODO-RENAME-43 bird-lady ((obj bird-lady))
(when
(TODO-RENAME-10
(-> obj ambient)
(new 'stack-no-clear 'vector)
9000
122880.0
obj
)
(let* ((v1-3 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
(v1-4 (the-as number (logior #x3f800000 v1-3)))
(f0-2 (+ -1.0 (the-as float v1-4)))
)
(cond
((< 0.66 f0-2)
(dummy-11 (-> obj ambient) "BIR-LO02" #f (-> obj root trans))
)
((< 0.33 f0-2)
(dummy-11 (-> obj ambient) "BIR-LO03" #f (-> obj root trans))
)
(else
(dummy-11 (-> obj ambient) "BIR-am08" #f (-> obj root trans))
)
)
)
)
(none)
)
;; definition for method 47 of type bird-lady
;; INFO: Return type mismatch basic vs symbol.
(defmethod target-above-threshold? bird-lady ((obj bird-lady))
(the-as symbol (and *target* (< (-> (target-pos 0) z) -81920.0)))
)
;; definition for method 11 of type bird-lady
(defmethod copy-defaults! bird-lady ((obj bird-lady) (arg0 res-lump))
(dummy-40
obj
arg0
*bird-lady-sg*
3
51
(new 'static 'vector :y 4096.0 :w 4096.0)
5
)
(set! (-> obj tasks) (get-task-control (game-task beach-flutflut)))
(set! (-> obj sound-flava) (the-as uint 7))
(set! (-> obj draw light-index) (the-as uint 4))
(if
(closed?
(-> obj tasks)
(game-task beach-flutflut)
(task-status need-reminder)
)
(dummy-18 obj)
(go (method-of-object obj idle))
)
(none)
)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -162,7 +162,7 @@
(free-time uint64 :offset-assert 360)
(touch-time uint64 :offset-assert 368)
(nav-enemy-flags uint32 :offset-assert 376)
(incomming-attack-id uint64 :offset-assert 384)
(incomming-attack-id handle :offset-assert 384)
(jump-return-state (state process) :offset-assert 392)
(rand-gen random-generator :offset-assert 396)
)

View File

@ -3164,7 +3164,7 @@ nav-enemy-default-event-handler
)
(logior!
(-> obj nav flags)
(nav-control-flags bit0 display-marks bit3 bit5 bit6 bit7)
(nav-control-flags display-marks bit0 bit3 bit5 bit6 bit7)
)
(set! (-> obj nav gap-event) 'jump)
(dummy-26 (-> obj nav))

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,204 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type farmer
(deftype farmer (process-taskable)
()
:heap-base #x110
:method-count-assert 53
:size-assert #x17c
:flag-assert #x350110017c
)
;; definition for method 3 of type farmer
(defmethod inspect farmer ((obj farmer))
(let ((t9-0 (method-of-type process-taskable inspect)))
(t9-0 obj)
)
obj
)
;; failed to figure out what this is:
(let
((v1-1
(new 'static 'skeleton-group
:art-group-name "farmer"
:bounds (new 'static 'vector :w 16384.0)
:max-lod 1
:version #x6
:shadow 3
)
)
)
(set! (-> v1-1 jgeo) 0)
(set! (-> v1-1 janim) 4)
(set! (-> v1-1 mgeo 0) (the-as uint 1))
(set! (-> v1-1 lod-dist 0) 81920.0)
(set! (-> v1-1 mgeo 1) (the-as uint 2))
(set! (-> v1-1 lod-dist 1) 4095996000.0)
(set! *farmer-sg* v1-1)
)
;; definition for method 32 of type farmer
(defmethod play-anim! farmer ((obj farmer) (arg0 symbol))
(case (current-status (-> obj tasks))
((2 3)
(if arg0
(close-status! (-> obj tasks) (task-status need-introduction))
)
(new 'static 'spool-anim
:name "farmer-introduction"
:index 6
:parts 5
:command-list '()
)
)
((5)
(set! (-> obj skippable) #t)
(cond
((zero? (get-reminder (-> obj tasks) 0))
(if arg0
(save-reminder (-> obj tasks) 1 0)
)
(new 'static 'spool-anim
:name "farmer-reminder-1"
:index 7
:parts 2
:command-list '()
)
)
(else
(if arg0
(save-reminder (-> obj tasks) 0 0)
)
(new 'static 'spool-anim
:name "farmer-reminder-2"
:index 8
:parts 2
:command-list '()
)
)
)
)
((6)
(when arg0
(set!
(-> obj cell-for-task)
(the-as game-task (current-task (-> obj tasks)))
)
(close-current! (-> obj tasks))
)
(new 'static 'spool-anim
:name "farmer-resolution"
:index 9
:parts 4
:command-list '()
)
)
(else
(if arg0
(format
0
"ERROR: <GMJ>: ~S playing anim for task status ~S~%"
(-> obj name)
(task-status->string (the-as task-status (current-status (-> obj tasks))))
)
)
(-> obj draw art-group data 4)
)
)
)
;; definition for method 31 of type farmer
(defmethod get-art-elem farmer ((obj farmer))
(let ((v1-1 (current-status (-> obj tasks))))
(if (or (= v1-1 2) (= v1-1 3) (= v1-1 7) (zero? v1-1))
(-> obj draw art-group data 4)
(-> obj draw art-group data 5)
)
)
)
;; definition for method 43 of type farmer
(defmethod TODO-RENAME-43 farmer ((obj farmer))
(when
(TODO-RENAME-10
(-> obj ambient)
(new 'stack-no-clear 'vector)
9000
122880.0
obj
)
(let* ((v1-3 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
(v1-4 (the-as number (logior #x3f800000 v1-3)))
(f0-2 (+ -1.0 (the-as float v1-4)))
)
(cond
((< 0.8333333 f0-2)
(dummy-11 (-> obj ambient) "FAR-LO1A" #f (-> obj root trans))
)
((< 0.6666667 f0-2)
(dummy-11 (-> obj ambient) "FAR-AM01" #f (-> obj root trans))
)
((< 0.5 f0-2)
)
((< 0.33333334 f0-2)
(dummy-11 (-> obj ambient) "FAR-AM2A" #f (-> obj root trans))
)
((< 0.16666667 f0-2)
(dummy-11 (-> obj ambient) "FAR-AM02" #f (-> obj root trans))
)
(else
)
)
)
)
(none)
)
;; definition for method 41 of type farmer
;; INFO: Return type mismatch int vs none.
(defmethod initialize-collision farmer ((obj farmer) (arg0 int))
(let
((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player))))
(let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0)))
(set! (-> s4-0 prim-core collide-as) (the-as uint 256))
(set! (-> s4-0 collide-with) (the-as uint 16))
(set! (-> s4-0 prim-core action) (the-as uint 1))
(set! (-> s4-0 prim-core offense) 4)
(set-vector! (-> s4-0 local-sphere) 4096.0 8192.0 -4096.0 12288.0)
((method-of-object s5-0 dummy-46))
(let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
(set! (-> s3-0 prim-core collide-as) (the-as uint 256))
(set! (-> s3-0 collide-with) (the-as uint 16))
(set! (-> s3-0 prim-core action) (the-as uint 1))
(set! (-> s3-0 prim-core offense) 4)
(set-vector! (-> s3-0 local-sphere) 4096.0 6144.0 -4096.0 8192.0)
)
((method-of-object s4-0 dummy-28))
(let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
(set! (-> s3-1 prim-core collide-as) (the-as uint 256))
(set! (-> s3-1 collide-with) (the-as uint 16))
(set! (-> s3-1 prim-core action) (the-as uint 1))
(set! (-> s3-1 prim-core offense) 4)
(set-vector! (-> s3-1 local-sphere) 4096.0 10240.0 -4096.0 8192.0)
)
((method-of-object s4-0 dummy-28))
)
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
((method-of-object s5-0 dummy-50))
(set! (-> obj root) s5-0)
)
0
(none)
)
;; definition for method 11 of type farmer
(defmethod copy-defaults! farmer ((obj farmer) (arg0 res-lump))
(dummy-40 obj arg0 *farmer-sg* 3 25 (new 'static 'vector :w 4096.0) 5)
(set! (-> obj root nav-radius) 40960.0)
(nav-mesh-connect obj (-> obj root) (the-as nav-control #f))
(set! (-> obj tasks) (get-task-control (game-task village1-yakow)))
(dummy-42 obj)
(none)
)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,459 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type gambler
(deftype gambler (process-taskable)
()
:heap-base #x110
:method-count-assert 53
:size-assert #x17c
:flag-assert #x350110017c
)
;; definition for method 3 of type gambler
(defmethod inspect gambler ((obj gambler))
(let ((t9-0 (method-of-type process-taskable inspect)))
(t9-0 obj)
)
obj
)
;; failed to figure out what this is:
(let
((v1-1
(new 'static 'skeleton-group
:art-group-name "gambler"
:bounds (new 'static 'vector :w 16384.0)
:max-lod 2
:version #x6
:shadow 4
)
)
)
(set! (-> v1-1 jgeo) 0)
(set! (-> v1-1 janim) 5)
(set! (-> v1-1 mgeo 0) (the-as uint 1))
(set! (-> v1-1 lod-dist 0) 81920.0)
(set! (-> v1-1 mgeo 1) (the-as uint 2))
(set! (-> v1-1 lod-dist 1) 163840.0)
(set! (-> v1-1 mgeo 2) (the-as uint 3))
(set! (-> v1-1 lod-dist 2) 4095996000.0)
(set! *gambler-sg* v1-1)
)
;; definition for method 32 of type gambler
(defmethod play-anim! gambler ((obj gambler) (arg0 symbol))
(with-pp
(set! (-> obj talk-message) (the-as uint 260))
(case (current-status (-> obj tasks))
((2 3)
(when arg0
(close-status! (-> obj tasks) (task-status need-introduction))
(close-specific-task!
(game-task village2-gambler-money)
(task-status need-introduction)
)
)
(new 'static 'spool-anim
:name "gambler-introduction-1"
:index 11
:parts 9
:command-list
'(
(0
want-levels
village2
rolling
)
(0
display-level
rolling
#f
)
((the binteger 29)
joint
"cameraB"
)
((the binteger 103)
joint
"camera"
)
((the binteger 231)
joint
"cameraB"
)
((the binteger 730)
display-level
rolling
display
)
((the binteger 730)
want-force-vis
rolling
#t
)
((the binteger 732)
alive
"gorge-pusher-5"
)
((the binteger 732)
alive
"gorge-pusher-6"
)
((the binteger 732)
alive
"gorge-start-1"
)
((the binteger 732)
joint
"camera"
)
((the binteger 945)
joint
"cameraB"
)
((the binteger 950)
dead
"gorge-pusher-5"
)
((the binteger 950)
dead
"gorge-pusher-6"
)
((the binteger 950)
dead
"gorge-start-1"
)
((the binteger 950)
display-level
rolling
#f
)
((the binteger 950) want-force-vis rolling #f)
)
)
)
((5)
(set! (-> obj skippable) #t)
(cond
((closed?
(-> obj tasks)
(game-task rolling-race)
(task-status need-reward-speech)
)
(new 'static 'spool-anim
:name "gambler-reminder-money"
:index 13
:parts 2
:command-list '()
)
)
((closed?
(-> obj tasks)
(game-task village2-gambler-money)
(task-status need-reward-speech)
)
(new 'static 'spool-anim
:name "gambler-reminder-race"
:index 12
:parts 2
:command-list '()
)
)
((zero? (get-reminder (-> obj tasks) 5))
(if arg0
(save-reminder (-> obj tasks) 1 5)
)
(new 'static 'spool-anim
:name "gambler-reminder-race"
:index 12
:parts 2
:command-list '()
)
)
(else
(if arg0
(save-reminder (-> obj tasks) 0 5)
)
(new 'static 'spool-anim
:name "gambler-reminder-money"
:index 13
:parts 2
:command-list '()
)
)
)
)
((6)
(if (not arg0)
(set! (-> obj will-talk) #t)
)
(case (current-task (-> obj tasks))
((52)
(when arg0
(set!
(-> obj cell-for-task)
(the-as game-task (current-task (-> obj tasks)))
)
(close-current! (-> obj tasks))
)
(new 'static 'spool-anim
:name "gambler-resolution-race"
:index 14
:parts 3
:command-list '()
)
)
(else
(cond
(arg0
(set!
(-> obj cell-for-task)
(the-as game-task (current-task (-> obj tasks)))
)
(close-current! (-> obj tasks))
(let ((a1-10 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-10 from) pp)
(set! (-> a1-10 num-params) 2)
(set! (-> a1-10 message) 'get-pickup)
(set! (-> a1-10 param 0) (the-as uint 5))
(set!
(-> a1-10 param 1)
(the-as uint (- (-> *GAME-bank* money-task-inc)))
)
(send-event-function *target* a1-10)
)
)
(else
(set! (-> obj talk-message) (the-as uint 282))
)
)
(new 'static 'spool-anim
:name "gambler-resolution-money"
:index 15
:parts 2
:command-list '()
)
)
)
)
(else
(if arg0
(format
0
"ERROR: <GMJ>: ~S playing anim for task status ~S~%"
(-> obj name)
(task-status->string
(the-as task-status (current-status (-> obj tasks)))
)
)
)
(-> obj draw art-group data 7)
)
)
)
)
;; definition for method 31 of type gambler
(defmethod get-art-elem gambler ((obj gambler))
(-> obj draw art-group data 7)
)
;; definition for method 43 of type gambler
(defmethod TODO-RENAME-43 gambler ((obj gambler))
(when
(TODO-RENAME-10
(-> obj ambient)
(new 'stack-no-clear 'vector)
9000
61440.0
obj
)
(let* ((v1-3 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
(v1-4 (the-as number (logior #x3f800000 v1-3)))
(f0-2 (+ -1.0 (the-as float v1-4)))
)
(cond
((< 0.9230769 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM01" #f (-> obj root trans))
)
((< 0.84615386 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM02" #f (-> obj root trans))
)
((< 0.7692308 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM03" #f (-> obj root trans))
)
((< 0.6923077 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM04" #f (-> obj root trans))
)
((< 0.61538464 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM05" #f (-> obj root trans))
)
((< 0.53846157 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM06" #f (-> obj root trans))
)
((< 0.46153846 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM07" #f (-> obj root trans))
)
((< 0.3846154 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM08" #f (-> obj root trans))
)
((< 0.30769232 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM09" #f (-> obj root trans))
)
((< 0.23076923 f0-2)
(if (not (task-closed? (game-task ogre-boss) (task-status need-reminder)))
(dummy-11 (-> obj ambient) "GAM-AM10" #f (-> obj root trans))
)
)
((< 0.15384616 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM11" #f (-> obj root trans))
)
((< 0.07692308 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM12" #f (-> obj root trans))
)
(else
(dummy-11 (-> obj ambient) "GAM-AM13" #f (-> obj root trans))
)
)
)
)
(none)
)
;; failed to figure out what this is:
(defstate idle (gambler)
:virtual #t
:code
(behavior ()
(when (!= (if (> (-> self skel active-channels) 0)
(-> self skel root-channel 0 frame-group)
)
(-> self draw art-group data 7)
)
(ja-channel-push! 1 60)
(let ((v1-6 (-> self skel root-channel 0)))
(set!
(-> v1-6 frame-group)
(the-as art-joint-anim (-> self draw art-group data 7))
)
)
)
(while #t
(let ((a0-9 (-> self skel root-channel 0)))
(set! (-> a0-9 frame-group) (if (> (-> self skel active-channels) 0)
(-> self skel root-channel 0 frame-group)
)
)
(set!
(-> a0-9 param 0)
(the float (+ (-> (if (> (-> self skel active-channels) 0)
(-> self skel root-channel 0 frame-group)
)
data
0
length
)
-1
)
)
)
(set! (-> a0-9 param 1) 1.0)
(set! (-> a0-9 frame-num) 0.0)
(joint-control-channel-group! a0-9 (if (> (-> self skel active-channels) 0)
(->
self
skel
root-channel
0
frame-group
)
)
num-func-seek!
)
)
(until (ja-done? 0)
(suspend)
(let ((a0-10 (-> self skel root-channel 0)))
(set!
(-> a0-10 param 0)
(the float (+ (-> a0-10 frame-group data 0 length) -1))
)
(set! (-> a0-10 param 1) 1.0)
(joint-control-channel-group-eval!
a0-10
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
(TODO-RENAME-43 self)
(let* ((v1-38 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
(v1-39 (the-as number (logior #x3f800000 v1-38)))
(f0-9 (+ -1.0 (the-as float v1-39)))
)
(cond
((< f0-9 0.16666667)
(let ((a0-15 (-> self skel root-channel 0)))
(set!
(-> a0-15 frame-group)
(the-as art-joint-anim (-> self draw art-group data 5))
)
)
)
((< f0-9 0.33333334)
(let ((a0-16 (-> self skel root-channel 0)))
(set!
(-> a0-16 frame-group)
(the-as art-joint-anim (-> self draw art-group data 6))
)
)
)
((< f0-9 0.5)
(let ((a0-17 (-> self skel root-channel 0)))
(set!
(-> a0-17 frame-group)
(the-as art-joint-anim (-> self draw art-group data 7))
)
)
)
((< f0-9 0.6666667)
(let ((a0-18 (-> self skel root-channel 0)))
(set!
(-> a0-18 frame-group)
(the-as art-joint-anim (-> self draw art-group data 8))
)
)
)
((< f0-9 0.8333333)
(let ((a0-19 (-> self skel root-channel 0)))
(set!
(-> a0-19 frame-group)
(the-as art-joint-anim (-> self draw art-group data 9))
)
)
)
(else
(let ((a0-20 (-> self skel root-channel 0)))
(set!
(-> a0-20 frame-group)
(the-as art-joint-anim (-> self draw art-group data 10))
)
)
)
)
)
)
(none)
)
)
;; definition for method 11 of type gambler
(defmethod copy-defaults! gambler ((obj gambler) (arg0 res-lump))
(dummy-40 obj arg0 *gambler-sg* 3 32 (new 'static 'vector :w 4096.0) 5)
(set! (-> obj tasks) (get-task-control (game-task rolling-race)))
(set! (-> obj sound-flava) (the-as uint 17))
(set! (-> obj draw light-index) (the-as uint 4))
(dummy-42 obj)
(none)
)

View File

@ -0,0 +1,314 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type geologist
(deftype geologist (process-taskable)
()
:heap-base #x110
:method-count-assert 53
:size-assert #x17c
:flag-assert #x350110017c
)
;; definition for method 3 of type geologist
(defmethod inspect geologist ((obj geologist))
(let ((t9-0 (method-of-type process-taskable inspect)))
(t9-0 obj)
)
obj
)
;; failed to figure out what this is:
(let
((v1-1
(new 'static 'skeleton-group
:art-group-name "geologist"
:bounds (new 'static 'vector :w 16384.0)
:max-lod 2
:version #x6
:shadow 4
)
)
)
(set! (-> v1-1 jgeo) 0)
(set! (-> v1-1 janim) 5)
(set! (-> v1-1 mgeo 0) (the-as uint 1))
(set! (-> v1-1 lod-dist 0) 81920.0)
(set! (-> v1-1 mgeo 1) (the-as uint 2))
(set! (-> v1-1 lod-dist 1) 163840.0)
(set! (-> v1-1 mgeo 2) (the-as uint 3))
(set! (-> v1-1 lod-dist 2) 4095996000.0)
(set! *geologist-sg* v1-1)
)
;; definition for method 32 of type geologist
(defmethod play-anim! geologist ((obj geologist) (arg0 symbol))
(with-pp
(set! (-> obj talk-message) (the-as uint 260))
(case (current-status (-> obj tasks))
((2 3)
(when arg0
(close-status! (-> obj tasks) (task-status need-introduction))
(close-specific-task!
(game-task village2-geologist-money)
(task-status need-introduction)
)
)
(new 'static 'spool-anim
:name "geologist-introduction"
:index 6
:parts 13
:command-list
'(
(0
want-levels
village2
rolling
)
((the binteger 199)
joint
"cameraB"
)
((the binteger 325)
joint
"camera"
)
((the binteger 520)
alive
"racer-2"
)
((the binteger 544)
joint
"cameraB"
)
((the binteger 546)
dead
"racer-2"
)
((the binteger 809)
joint
"camera"
)
((the binteger 1031)
joint
"cameraB"
)
((the binteger 1229) joint "camera")
)
)
)
((5)
(set! (-> obj skippable) #t)
(cond
((closed?
(-> obj tasks)
(game-task rolling-moles)
(task-status need-reward-speech)
)
(new 'static 'spool-anim
:name "geologist-reminder-money"
:index 8
:parts 2
:command-list '()
)
)
((closed?
(-> obj tasks)
(game-task village2-geologist-money)
(task-status need-reward-speech)
)
(new 'static 'spool-anim
:name "geologist-reminder-moles"
:index 7
:parts 3
:command-list '()
)
)
((zero? (get-reminder (-> obj tasks) 0))
(if arg0
(save-reminder (-> obj tasks) 1 0)
)
(new 'static 'spool-anim
:name "geologist-reminder-moles"
:index 7
:parts 3
:command-list '()
)
)
(else
(if arg0
(save-reminder (-> obj tasks) 0 0)
)
(new 'static 'spool-anim
:name "geologist-reminder-money"
:index 8
:parts 2
:command-list '()
)
)
)
)
((6)
(if (not arg0)
(set! (-> obj will-talk) #t)
)
(case (current-task (-> obj tasks))
((54)
(when arg0
(set!
(-> obj cell-for-task)
(the-as game-task (current-task (-> obj tasks)))
)
(close-current! (-> obj tasks))
)
(new 'static 'spool-anim
:name "geologist-resolution-moles"
:index 9
:parts 3
:command-list '()
)
)
(else
(cond
(arg0
(set!
(-> obj cell-for-task)
(the-as game-task (current-task (-> obj tasks)))
)
(close-current! (-> obj tasks))
(let ((a1-10 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-10 from) pp)
(set! (-> a1-10 num-params) 2)
(set! (-> a1-10 message) 'get-pickup)
(set! (-> a1-10 param 0) (the-as uint 5))
(set!
(-> a1-10 param 1)
(the-as uint (- (-> *GAME-bank* money-task-inc)))
)
(send-event-function *target* a1-10)
)
)
(else
(set! (-> obj talk-message) (the-as uint 282))
)
)
(new 'static 'spool-anim
:name "geologist-resolution-money"
:index 10
:parts 2
:command-list '()
)
)
)
)
(else
(if arg0
(format
0
"ERROR: <GMJ>: ~S playing anim for task status ~S~%"
(-> obj name)
(task-status->string
(the-as task-status (current-status (-> obj tasks)))
)
)
)
(-> obj draw art-group data 5)
)
)
)
)
;; definition for method 31 of type geologist
(defmethod get-art-elem geologist ((obj geologist))
(-> obj draw art-group data 5)
)
;; definition for method 43 of type geologist
(defmethod TODO-RENAME-43 geologist ((obj geologist))
(when
(TODO-RENAME-10
(-> obj ambient)
(new 'stack-no-clear 'vector)
9000
122880.0
obj
)
(let* ((v1-3 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
(v1-4 (the-as number (logior #x3f800000 v1-3)))
(f0-2 (+ -1.0 (the-as float v1-4)))
)
(cond
((< 0.8888889 f0-2)
(dummy-11 (-> obj ambient) "GEO-AM01" #f (-> obj root trans))
)
((< 0.7777778 f0-2)
(if
(not
(closed?
(-> obj tasks)
(game-task rolling-moles)
(task-status need-reminder)
)
)
(dummy-11 (-> obj ambient) "GEO-AM02" #f (-> obj root trans))
)
)
((< 0.6666667 f0-2)
(dummy-11 (-> obj ambient) "GEO-AM03" #f (-> obj root trans))
)
((< 0.5555556 f0-2)
(if
(closed?
(-> obj tasks)
(game-task village2-geologist-money)
(task-status need-introduction)
)
(dummy-11 (-> obj ambient) "GEO-AM04" #f (-> obj root trans))
)
)
((< 0.44444445 f0-2)
(dummy-11 (-> obj ambient) "GEO-AM05" #f (-> obj root trans))
)
((< 0.33333334 f0-2)
(dummy-11 (-> obj ambient) "GEO-AM06" #f (-> obj root trans))
)
((< 0.22222222 f0-2)
(if
(not
(closed?
(-> obj tasks)
(game-task rolling-moles)
(task-status need-reminder)
)
)
(dummy-11 (-> obj ambient) "GEO-AM07" #f (-> obj root trans))
)
)
((< 0.11111111 f0-2)
(dummy-11 (-> obj ambient) "GEO-LO02" #f (-> obj root trans))
)
((closed?
(-> obj tasks)
(game-task village2-geologist-money)
(task-status need-resolution)
)
(dummy-11 (-> obj ambient) "GEO-AM08" #f (-> obj root trans))
)
(else
(dummy-11 (-> obj ambient) "GEO-LO01" #f (-> obj root trans))
)
)
)
)
(none)
)
;; definition for method 11 of type geologist
(defmethod copy-defaults! geologist ((obj geologist) (arg0 res-lump))
(dummy-40 obj arg0 *geologist-sg* 3 45 (new 'static 'vector :w 4096.0) 5)
(set! (-> obj tasks) (get-task-control (game-task rolling-moles)))
(set! (-> obj sound-flava) (the-as uint 16))
(set! (-> obj draw light-index) (the-as uint 2))
(dummy-42 obj)
(none)
)

View File

@ -0,0 +1,362 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type warrior
(deftype warrior (process-taskable)
()
:heap-base #x110
:method-count-assert 53
:size-assert #x17c
:flag-assert #x350110017c
)
;; definition for method 3 of type warrior
(defmethod inspect warrior ((obj warrior))
(let ((t9-0 (method-of-type process-taskable inspect)))
(t9-0 obj)
)
obj
)
;; failed to figure out what this is:
(let
((v1-1
(new 'static 'skeleton-group
:art-group-name "warrior"
:bounds (new 'static 'vector :w 16384.0)
:max-lod 2
:version #x6
:shadow 4
)
)
)
(set! (-> v1-1 jgeo) 0)
(set! (-> v1-1 janim) 5)
(set! (-> v1-1 mgeo 0) (the-as uint 1))
(set! (-> v1-1 lod-dist 0) 81920.0)
(set! (-> v1-1 mgeo 1) (the-as uint 2))
(set! (-> v1-1 lod-dist 1) 163840.0)
(set! (-> v1-1 mgeo 2) (the-as uint 3))
(set! (-> v1-1 lod-dist 2) 4095996000.0)
(set! *warrior-sg* v1-1)
)
;; definition for method 52 of type warrior
;; INFO: Return type mismatch int vs none.
(defmethod dummy-52 warrior ((obj warrior))
(let ((v1-1 (-> obj draw shadow-ctrl)))
(when v1-1
(let ((f0-0 (-> obj root trans y)))
(let ((a0-2 v1-1))
(set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0)))
)
0
(set! (-> v1-1 settings top-plane w) (- (+ 3072.0 f0-0)))
)
0
)
)
(none)
)
;; definition for method 48 of type warrior
(defmethod draw-shadow warrior ((obj warrior))
(-> obj draw shadow-ctrl)
(cond
((and
(-> obj draw shadow)
(zero? (-> obj draw cur-lod))
(nonzero? (logand (-> obj draw status) 8))
)
(let ((v1-9 (-> obj draw shadow-ctrl)))
(set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags)))
)
0
((method-of-object (-> obj draw shadow-ctrl) dummy-14))
)
(else
(let ((v1-14 (-> obj draw shadow-ctrl)))
(logior! (-> v1-14 settings flags) 32)
)
0
)
)
(none)
)
;; definition for method 32 of type warrior
(defmethod play-anim! warrior ((obj warrior) (arg0 symbol))
(with-pp
(set! (-> obj talk-message) (the-as uint 260))
(case (current-status (-> obj tasks))
((2 3)
(if arg0
(close-status! (-> obj tasks) (task-status need-introduction))
)
(new 'static 'spool-anim
:name "warrior-introduction"
:index 6
:parts 29
:command-list
'(
((the binteger 125)
joint
"cameraB"
)
((the binteger 260)
joint
"camera"
)
((the binteger 574)
joint
"cameraB"
)
((the binteger 918)
joint
"camera"
)
((the binteger 1174)
joint
"cameraB"
)
((the binteger 1174)
shadow
self
#f
)
((the binteger 1301)
joint
"camera"
)
((the binteger 1301)
shadow
self
#t
)
((the binteger 2025)
joint
"cameraB"
)
((the binteger 2322)
joint
"camera"
)
((the binteger 2560) joint "cameraB")
)
)
)
((5)
(set! (-> obj skippable) #t)
(new 'static 'spool-anim
:name "warrior-reminder-1"
:index 7
:parts 3
:command-list '()
)
)
((6)
(cond
(arg0
(set!
(-> obj cell-for-task)
(the-as game-task (current-task (-> obj tasks)))
)
(close-current! (-> obj tasks))
(let ((a1-4 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-4 from) pp)
(set! (-> a1-4 num-params) 2)
(set! (-> a1-4 message) 'get-pickup)
(set! (-> a1-4 param 0) (the-as uint 5))
(set!
(-> a1-4 param 1)
(the-as uint (- (-> *GAME-bank* money-task-inc)))
)
(send-event-function *target* a1-4)
)
(let ((s5-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> s5-1 from) pp)
(set! (-> s5-1 num-params) 1)
(set! (-> s5-1 message) 'clone)
(let* ((a0-10 obj)
(v1-19 (if a0-10
(-> a0-10 ppointer)
)
)
)
(set!
(-> s5-1 param 0)
(the-as
uint
(logior
(shl (-> v1-19 0 pid) 32)
(new 'static 'handle :process v1-19)
)
)
)
)
(send-event-function
(-> (entity-by-type allpontoons) extra process)
s5-1
)
)
(dotimes (s5-2 (entity-actor-count (-> obj entity) 'alt-actor))
(entity-birth-no-kill
(entity-actor-lookup (-> obj entity) 'alt-actor s5-2)
)
(let ((s4-2 (new 'stack-no-clear 'event-message-block)))
(set! (-> s4-2 from) pp)
(set! (-> s4-2 num-params) 0)
(set! (-> s4-2 message) 'die)
(let ((s3-0 send-event-function)
(v1-25 (entity-actor-lookup (-> obj entity) 'alt-actor s5-2))
)
(s3-0 (if v1-25
(-> v1-25 extra process)
)
s4-2
)
)
)
)
)
(else
(set! (-> obj will-talk) #t)
(set! (-> obj talk-message) (the-as uint 282))
)
)
(new 'static 'spool-anim
:name "warrior-resolution"
:index 8
:parts 6
:command-list
'(
((the binteger 508)
blackout
(the binteger 10)
)
((the binteger 511) blackout 0)
)
)
)
(else
(if arg0
(format
0
"ERROR: <GMJ>: ~S playing anim for task status ~S~%"
(-> obj name)
(task-status->string
(the-as task-status (current-status (-> obj tasks)))
)
)
)
(-> obj draw art-group data 5)
)
)
)
)
;; definition for method 31 of type warrior
(defmethod get-art-elem warrior ((obj warrior))
(-> obj draw art-group data 5)
)
;; failed to figure out what this is:
(defstate play-anim (warrior)
:virtual #t
:exit
(behavior ()
(let ((gp-0 (new 'stack-no-clear 'event-message-block)))
(set! (-> gp-0 from) self)
(set! (-> gp-0 num-params) 0)
(set! (-> gp-0 message) 'end-mode)
(send-event-function (-> (entity-by-type allpontoons) extra process) gp-0)
)
((-> (method-of-type process-taskable play-anim) exit))
(none)
)
)
;; definition for method 43 of type warrior
(defmethod TODO-RENAME-43 warrior ((obj warrior))
(when
(TODO-RENAME-10
(-> obj ambient)
(new 'stack-no-clear 'vector)
600
61440.0
obj
)
(let* ((v1-3 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
(v1-4 (the-as number (logior #x3f800000 v1-3)))
(f0-2 (+ -1.0 (the-as float v1-4)))
)
(cond
((< 0.66 f0-2)
(dummy-11 (-> obj ambient) "WAR-LO1A" #f (-> obj root trans))
)
((< 0.33 f0-2)
(dummy-11 (-> obj ambient) "WAR-LO1B" #f (-> obj root trans))
)
(else
(dummy-11 (-> obj ambient) "WAR-LO1C" #f (-> obj root trans))
)
)
)
)
(none)
)
;; definition for method 41 of type warrior
;; INFO: Return type mismatch int vs none.
(defmethod initialize-collision warrior ((obj warrior) (arg0 int))
(let
((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player))))
(let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0)))
(set! (-> s4-0 prim-core collide-as) (the-as uint 256))
(set! (-> s4-0 collide-with) (the-as uint 16))
(set! (-> s4-0 prim-core action) (the-as uint 1))
(set! (-> s4-0 prim-core offense) 4)
(set-vector! (-> s4-0 local-sphere) -3072.0 8192.0 0.0 11264.0)
((method-of-object s5-0 dummy-46))
(let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
(set! (-> s3-0 prim-core collide-as) (the-as uint 256))
(set! (-> s3-0 collide-with) (the-as uint 16))
(set! (-> s3-0 prim-core action) (the-as uint 1))
(set! (-> s3-0 prim-core offense) 4)
(set-vector! (-> s3-0 local-sphere) -2048.0 9216.0 0.0 8192.0)
)
((method-of-object s4-0 dummy-28))
(let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
(set! (-> s3-1 prim-core collide-as) (the-as uint 256))
(set! (-> s3-1 collide-with) (the-as uint 16))
(set! (-> s3-1 prim-core action) (the-as uint 1))
(set! (-> s3-1 prim-core offense) 4)
(set-vector! (-> s3-1 local-sphere) 0.0 2048.0 0.0 4096.0)
)
((method-of-object s4-0 dummy-28))
)
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
((method-of-object s5-0 dummy-50))
(set! (-> obj root) s5-0)
)
0
(none)
)
;; definition for method 11 of type warrior
(defmethod copy-defaults! warrior ((obj warrior) (arg0 res-lump))
(dummy-40
obj
arg0
*warrior-sg*
3
33
(new 'static 'vector :y -4096.0 :w 10240.0)
5
)
(set! (-> obj tasks) (get-task-control (game-task village2-warrior-money)))
(set! (-> obj sound-flava) (the-as uint 15))
(set! (-> obj draw light-index) (the-as uint 3))
(dummy-42 obj)
(none)
)

View File

@ -0,0 +1,819 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type oracle
(deftype oracle (process-taskable)
((first-task uint8 :offset-assert 380)
(second-task uint8 :offset-assert 381)
(left-eye-cell handle :offset-assert 384)
(right-eye-cell handle :offset-assert 392)
)
:heap-base #x120
:method-count-assert 53
:size-assert #x190
:flag-assert #x3501200190
)
;; definition for method 3 of type oracle
(defmethod inspect oracle ((obj oracle))
(let ((t9-0 (method-of-type process-taskable inspect)))
(t9-0 obj)
)
(format #t "~T~Tfirst-task: ~D~%" (-> obj first-task))
(format #t "~T~Tsecond-task: ~D~%" (-> obj second-task))
(format #t "~T~Tleft-eye-cell: ~D~%" (-> obj left-eye-cell))
(format #t "~T~Tright-eye-cell: ~D~%" (-> obj right-eye-cell))
obj
)
;; failed to figure out what this is:
(let
((v1-1
(new 'static 'skeleton-group
:art-group-name "oracle"
:bounds (new 'static 'vector :w 16384.0)
:version #x6
)
)
)
(set! (-> v1-1 jgeo) 0)
(set! (-> v1-1 janim) 2)
(set! (-> v1-1 mgeo 0) (the-as uint 1))
(set! (-> v1-1 lod-dist 0) 4095996000.0)
(set! *oracle-sg* v1-1)
)
;; definition for method 32 of type oracle
(defmethod play-anim! oracle ((obj oracle) (arg0 symbol))
(with-pp
(set! (-> obj talk-message) (the-as uint 260))
(case (current-status (-> obj tasks))
((2 3)
(when arg0
(close-specific-task!
(the-as game-task (-> obj first-task))
(task-status need-introduction)
)
(close-specific-task!
(the-as game-task (-> obj second-task))
(task-status need-introduction)
)
)
(case (-> (level-get-target-inside *level*) name)
(('village1)
(new 'static 'spool-anim
:name "oracle-intro-1"
:index 9
:parts 5
:command-list '()
)
)
(('village2)
(new 'static 'spool-anim
:name "oracle-intro-2"
:index 11
:parts 4
:command-list
'(
(0
kill
"pontoonten-20"
)
(0
kill
"pontoonten-19"
)
(0
kill
"pontoonten-18"
)
(0
kill
"pontoonten-15"
)
(0
kill
"pontoonten-14"
)
(0
kill
"pontoonfive-14"
)
(0
kill
"pontoonfive-15"
)
(0
kill
"pontoonfive-19"
)
(0
kill
"pontoonfive-20"
)
(0
kill
"med-res-level-12"
)
(0
kill
"med-res-level-13"
)
(0
kill
"med-res-level-15"
)
(0
kill
"money-2844"
)
(0
kill
"money-2845"
)
(0
kill
"money-2846"
)
(0
kill
"money-2847"
)
(0
kill
"money-2848"
)
(0
kill
"money-2849"
)
(0
kill
"money-2850"
)
(0
kill
"money-2854"
)
(0
kill
"money-2855"
)
(0
kill
"money-2856"
)
(0
kill
"money-2860"
)
(0
kill
"money-2861"
)
(0
kill
"money-2862"
)
(0
kill
"eco-27"
)
(0
kill
"eco-26"
)
(0
kill
"sharkey-25"
)
(0
kill
"barrel-13"
)
(0
kill
"barrel-14"
)
(0
kill
"barrel-15"
)
(0
kill
"barrel-16"
)
(0
kill
"barrel-17"
)
(0
kill
"barrel-18"
)
(0
kill
"barrel-19"
)
(0
kill
"barrel-20"
)
(0
kill
"barrel-21"
)
(0
kill
"barrel-22"
)
(0
kill
"barrel-23"
)
(0
kill
"villageb-part-18"
)
(0
kill
"villageb-part-19"
)
(0
kill
"villageb-part-20"
)
(0
kill
"villageb-part-21"
)
(0
kill
"villageb-part-28"
)
(0
kill
"villageb-part-29"
)
(0
kill
"villageb-part-30"
)
(0
kill
"villageb-part-31"
)
(0
kill
"villageb-part-32"
)
(0
kill
"villageb-part-33"
)
(0
kill
"villageb-part-35"
)
(0
kill
"villageb-part-37"
)
(0
kill
"villageb-part-38"
)
(0
kill
"villageb-part-47"
)
(0
kill
"villageb-part-48"
)
(0
kill
"villageb-part-49"
)
(0
kill
"villageb-part-50"
)
(0
kill
"villageb-part-56"
)
(0
kill
"villageb-part-62"
)
(0
kill
"villageb-part-63"
)
(0
kill
"villageb-ogreboss-1"
)
(0
kill
"crate-3127"
)
(0
kill
"crate-3128"
)
(0
kill
"crate-3129"
)
(0
kill
"crate-3133"
)
(0
kill
"geologist-1"
)
(0
kill
"fireboulder-2"
)
(0
kill
"fireboulder-3"
)
(0
kill
"fireboulder-4"
)
(0
kill
"water-vol-100"
)
(0
kill
"water-vol-101"
)
(0
kill
"water-vol-102"
)
(0
kill
"water-vol-103"
)
(0
kill
"water-vol-284"
)
(0
kill
"water-vol-285"
)
(0
kill
"water-vol-286"
)
(0
kill
"ceilingflag-6"
)
(0
kill
"ceilingflag-7"
)
(0
kill
"ceilingflag-8"
)
(0
kill
"ceilingflag-9"
)
(0
kill
"orb-cache-top-14"
)
(0
setting-reset
ocean-off
near
)
((the binteger 399) setting-unset ocean-off)
)
)
)
(('village3)
(new 'static 'spool-anim
:name "oracle-intro-3"
:index 13
:parts 4
:command-list '()
)
)
)
)
((5)
(set! (-> obj skippable) #t)
(case (-> (level-get-target-inside *level*) name)
(('village1)
(new 'static 'spool-anim
:name "oracle-reminder-1"
:index 10
:parts 4
:command-list '()
)
)
(('village2)
(new 'static 'spool-anim
:name "oracle-reminder-2"
:index 12
:parts 2
:command-list '()
)
)
(('village3)
(new 'static 'spool-anim
:name "oracle-reminder-3"
:index 14
:parts 2
:command-list '()
)
)
)
)
((6)
(cond
(arg0
(set!
(-> obj cell-for-task)
(the-as game-task (current-task (-> obj tasks)))
)
(close-current! (-> obj tasks))
(let ((a1-5 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-5 from) pp)
(set! (-> a1-5 num-params) 2)
(set! (-> a1-5 message) 'get-pickup)
(set! (-> a1-5 param 0) (the-as uint 5))
(set!
(-> a1-5 param 1)
(the-as uint (- (-> *GAME-bank* money-oracle-inc)))
)
(send-event-function *target* a1-5)
)
(cond
((= (current-task (-> obj tasks)) (-> obj first-task))
(let ((a0-25 (handle->process (-> obj right-eye-cell))))
(if a0-25
(deactivate a0-25)
)
)
)
(else
(let ((a0-29 (handle->process (-> obj left-eye-cell))))
(if a0-29
(deactivate a0-29)
)
)
)
)
)
(else
(set! (-> obj will-talk) #t)
(set! (-> obj talk-message) (the-as uint 283))
)
)
(cond
((= (current-task (-> obj tasks)) (-> obj first-task))
(case (-> (level-get-target-inside *level*) name)
(('village1)
(new 'static 'spool-anim
:name "oracle-right-eye-1"
:index 3
:parts 2
:command-list '()
)
)
(('village2)
(new 'static 'spool-anim
:name "oracle-right-eye-2"
:index 5
:parts 2
:command-list '()
)
)
(('village3)
(new 'static 'spool-anim
:name "oracle-right-eye-3"
:index 7
:parts 2
:command-list '()
)
)
)
)
(else
(case (-> (level-get-target-inside *level*) name)
(('village1)
(new 'static 'spool-anim
:name "oracle-left-eye-1"
:index 4
:parts 2
:command-list '()
)
)
(('village2)
(new 'static 'spool-anim
:name "oracle-left-eye-2"
:index 6
:parts 2
:command-list '()
)
)
(('village3)
(new 'static 'spool-anim
:name "oracle-left-eye-3"
:index 8
:parts 2
:command-list '()
)
)
)
)
)
)
(else
(if arg0
(format
0
"ERROR: <GMJ>: ~S playing anim for task status ~S~%"
(-> obj name)
(task-status->string
(the-as task-status (current-status (-> obj tasks)))
)
)
)
(-> obj draw art-group data 2)
)
)
)
)
;; definition for method 31 of type oracle
(defmethod get-art-elem oracle ((obj oracle))
(-> obj draw art-group data 2)
)
;; failed to figure out what this is:
(defstate idle (oracle)
:virtual #t
:exit
(behavior ()
(stop! (-> self sound))
((-> (method-of-type process-taskable idle) exit))
(none)
)
:trans
(behavior ()
(update! (-> self sound))
((-> (method-of-type process-taskable idle) trans))
(none)
)
)
;; definition for method 11 of type oracle
(defmethod copy-defaults! oracle ((obj oracle) (arg0 res-lump))
(with-pp
(dummy-40
obj
arg0
*oracle-sg*
3
4
(new 'static 'vector :y -4096.0 :w 4096.0)
-1
)
(set!
(-> obj sound)
(new
'process
'ambient-sound
(new 'static 'sound-spec
:mask #x80
:num 1.0
:group #x1
:sound-name-char
(new 'static 'array uint8 16
#x6f
#x72
#x61
#x63
#x6c
#x65
#x2d
#x73
#x6c
#x65
#x65
#x70
#x0
#x0
#x0
#x0
)
:volume #x400
:fo-max 50
)
(-> obj root trans)
)
)
(set! (-> obj first-task) (the-as uint (-> arg0 extra perm task)))
(set!
(-> obj second-task)
(the-as
uint
(get-property-value
arg0
'alt-task
'interp
-1000000000.0
(the-as uint128 0)
(the-as (pointer res-tag) #f)
*res-static-buf*
)
)
)
(set!
(-> obj tasks)
(get-task-control (the-as game-task (-> obj first-task)))
)
(set! (-> obj right-eye-cell) (the-as handle #f))
(set! (-> obj left-eye-cell) (the-as handle #f))
(logior! (-> obj draw status) 32)
(let ((s4-0 (new 'stack-no-clear 'vector))
(s5-1 (lambda :behavior oracle () (let* ((gp-0 (-> self root))
(v1-1
(if
(and
(nonzero? gp-0)
(type-type?
(-> gp-0 type)
collide-shape
)
)
gp-0
)
)
)
(if v1-1
(->
(the-as collide-shape v1-1)
root-prim
prim-core
)
(-> self root trans)
)
)
((method-of-object (-> self part) dummy-11))
0
(none)
)
)
)
(ja-post)
(when
(not
(task-closed?
(the-as game-task (-> obj first-task))
(task-status need-resolution)
)
)
(vector<-cspace! s4-0 (-> obj node-list data 5))
(let* ((s3-0 (get-process *default-dead-pool* manipy #x4000))
(v1-13 (when s3-0
(let ((t9-8 (method-of-type manipy activate)))
(t9-8
(the-as manipy s3-0)
obj
'manipy
(the-as pointer #x70004000)
)
)
((the-as
(function process function object object object object object)
run-function-in-process
)
s3-0
manipy-init
s4-0
(-> obj entity)
*fuel-cell-sg*
(new 'static 'vector :w 4915.2)
)
(-> s3-0 ppointer)
)
)
)
(set!
(-> obj right-eye-cell)
(new 'static 'handle :process v1-13 :pid (-> v1-13 0 pid))
)
)
(let ((a1-9 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-9 from) pp)
(set! (-> a1-9 num-params) 1)
(set! (-> a1-9 message) 'eval)
(set!
(-> a1-9 param 0)
(the-as
uint
(lambda :behavior oracle
()
(let ((v0-0 (dummy-9 (-> *part-group-id-table* 63) self)))
(set! (-> self part) (the-as sparticle-launch-control v0-0))
v0-0
)
)
)
)
(send-event-function (handle->process (-> obj right-eye-cell)) a1-9)
)
(let ((a1-10 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-10 from) pp)
(set! (-> a1-10 num-params) 1)
(set! (-> a1-10 message) 'trans-hook)
(set! (-> a1-10 param 0) (the-as uint s5-1))
(send-event-function (handle->process (-> obj right-eye-cell)) a1-10)
)
)
(when
(not
(task-closed?
(the-as game-task (-> obj second-task))
(task-status need-resolution)
)
)
(vector<-cspace! s4-0 (-> obj node-list data 6))
(let* ((s3-1 (get-process *default-dead-pool* manipy #x4000))
(v1-33 (when s3-1
(let ((t9-15 (method-of-type manipy activate)))
(t9-15
(the-as manipy s3-1)
obj
'manipy
(the-as pointer #x70004000)
)
)
((the-as
(function process function object object object object object)
run-function-in-process
)
s3-1
manipy-init
s4-0
(-> obj entity)
*fuel-cell-sg*
(new 'static 'vector :w 4915.2)
)
(-> s3-1 ppointer)
)
)
)
(set!
(-> obj left-eye-cell)
(new 'static 'handle :process v1-33 :pid (-> v1-33 0 pid))
)
)
(let ((a1-16 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-16 from) pp)
(set! (-> a1-16 num-params) 1)
(set! (-> a1-16 message) 'eval)
(set!
(-> a1-16 param 0)
(the-as
uint
(lambda :behavior oracle
()
(let ((v0-0 (dummy-9 (-> *part-group-id-table* 63) self)))
(set! (-> self part) (the-as sparticle-launch-control v0-0))
v0-0
)
)
)
)
(send-event-function (handle->process (-> obj left-eye-cell)) a1-16)
)
(let ((a1-17 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-17 from) pp)
(set! (-> a1-17 num-params) 1)
(set! (-> a1-17 message) 'trans-hook)
(set! (-> a1-17 param 0) (the-as uint s5-1))
(send-event-function (handle->process (-> obj left-eye-cell)) a1-17)
)
)
)
(dummy-42 obj)
(none)
)
)