mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-20 21:27:52 -04:00
b1b5cbb143
joint-mod-h collide-frag-h projectile-h stats-h bsp-h chain-physics-h ragdoll-h collide-hash-h
124 lines
3.8 KiB
Common Lisp
124 lines
3.8 KiB
Common Lisp
;;-*-Lisp-*-
|
|
(in-package goal)
|
|
|
|
;; name: projectile-h.gc
|
|
;; name in dgo: projectile-h
|
|
;; dgos: GAME
|
|
|
|
(defenum projectile-options
|
|
:bitfield #t
|
|
:type uint64
|
|
)
|
|
|
|
(declare-type projectile process)
|
|
(declare-type projectile-init-by-other-params structure)
|
|
(define-extern projectile-init-by-other (function projectile-init-by-other-params projectile :behavior projectile))
|
|
|
|
|
|
;; DECOMP BEGINS
|
|
|
|
(deftype projectile (process-drawable)
|
|
((starting-pos vector :inline)
|
|
(starting-dir vector :inline)
|
|
(target-pos vector :inline)
|
|
(base-target-pos vector :inline)
|
|
(pre-move-transv vector :inline)
|
|
(timeout time-frame)
|
|
(spawn-time time-frame)
|
|
(options projectile-options)
|
|
(last-target handle)
|
|
(notify-handle handle)
|
|
(owner-handle handle)
|
|
(ignore-handle handle)
|
|
(update-velocity (function projectile none))
|
|
(move (function projectile none))
|
|
(pick-target (function projectile none))
|
|
(max-speed float)
|
|
(old-dist float 16)
|
|
(old-dist-count int32)
|
|
(hits int32)
|
|
(max-hits int32)
|
|
(tween float)
|
|
(attack-mode symbol)
|
|
(attack-id uint32)
|
|
(damage float)
|
|
(vehicle-damage-factor float)
|
|
(vehicle-impulse-factor float)
|
|
(charge-level float)
|
|
(sound-id sound-id)
|
|
(stop-speed meters)
|
|
(invinc-time time-frame)
|
|
(desired-target uint64)
|
|
(desired-target-pos vector :inline)
|
|
)
|
|
(:methods
|
|
(projectile-method-20 () none)
|
|
(projectile-method-21 () none)
|
|
(projectile-method-22 () none)
|
|
(projectile-method-23 () none)
|
|
(projectile-method-24 () none)
|
|
(projectile-method-25 () none)
|
|
(projectile-method-26 () none)
|
|
(projectile-method-27 () none)
|
|
(projectile-method-28 () none)
|
|
(projectile-method-29 () none)
|
|
(projectile-method-30 () none)
|
|
(projectile-method-31 () none)
|
|
(projectile-method-32 () none)
|
|
(projectile-method-33 () none)
|
|
(projectile-method-34 () none)
|
|
(projectile-method-35 () none)
|
|
(projectile-method-36 () none)
|
|
(projectile-method-37 () none)
|
|
(projectile-method-38 () none)
|
|
(projectile-method-39 () none)
|
|
(projectile-method-40 () none)
|
|
)
|
|
)
|
|
|
|
|
|
(deftype projectile-init-by-other-params (structure)
|
|
((pos vector :inline)
|
|
(vel vector :inline)
|
|
(target-pos vector :inline)
|
|
(target-handle uint64)
|
|
(ent entity)
|
|
(charge float)
|
|
(attack-id uint32)
|
|
(options projectile-options)
|
|
(notify-handle handle)
|
|
(owner-handle handle)
|
|
(ignore-handle handle)
|
|
(timeout time-frame)
|
|
(damage float)
|
|
(vehicle-damage-factor float)
|
|
(vehicle-impulse-factor float)
|
|
)
|
|
)
|
|
|
|
|
|
(defun spawn-projectile ((proj-type type) (params projectile-init-by-other-params) (parent-proc-tree process-tree) (pool dead-pool))
|
|
"Create a new process for a projectile of the given type."
|
|
(let ((s4-0 (get-process pool proj-type #x4000 1)))
|
|
(when s4-0
|
|
(let ((t9-1 (method-of-type process activate)))
|
|
(t9-1 s4-0 parent-proc-tree "projectile" (the-as pointer #x70004000))
|
|
)
|
|
(run-now-in-process s4-0 projectile-init-by-other params)
|
|
(-> s4-0 ppointer)
|
|
)
|
|
)
|
|
)
|
|
|
|
(deftype projectile-bounce (projectile)
|
|
((played-bounce-time time-frame)
|
|
(tumble-quat quaternion :inline)
|
|
(gravity float)
|
|
)
|
|
(:methods
|
|
(projectile-bounce-method-41 () none)
|
|
(projectile-bounce-method-42 () none)
|
|
(projectile-bounce-method-43 () none)
|
|
)
|
|
)
|