2022-06-30 01:22:51 -04:00
|
|
|
;;-*-Lisp-*-
|
|
|
|
(in-package goal)
|
|
|
|
|
|
|
|
;; name: penetrate-h.gc
|
|
|
|
;; name in dgo: penetrate-h
|
|
|
|
;; dgos: ENGINE, GAME
|
|
|
|
|
2023-01-21 20:26:51 -05:00
|
|
|
;; +++penetrate
|
2022-08-24 00:29:51 -04:00
|
|
|
(defenum penetrate
|
|
|
|
:bitfield #t
|
|
|
|
:type uint64
|
|
|
|
(touch 0) ;; 1
|
|
|
|
(generic-attack 1) ;; 2
|
|
|
|
(lunge 2) ;; 4
|
|
|
|
(flop 3) ;; 8
|
|
|
|
(punch 4) ;; 16
|
|
|
|
(spin 5) ;; 32
|
|
|
|
(roll 6) ;; 64
|
|
|
|
(uppercut 7) ;; 128
|
|
|
|
(bonk 8) ;; 256
|
|
|
|
(tube 9) ;; 512
|
|
|
|
(vehicle 10) ;; 1024
|
|
|
|
(flut-attack 11) ;; 2048
|
|
|
|
(board 12) ;; 4096
|
|
|
|
(mech 13) ;; 8192
|
|
|
|
(mech-punch 14) ;; 16384
|
|
|
|
(mech-bonk 15) ;; 32768
|
|
|
|
(dark-skin 16) ;; hi 1
|
|
|
|
(dark-punch 17) ;; hi 2
|
|
|
|
(dark-bomb 18) ;; hi 4
|
|
|
|
(dark-giant 19) ;; hi 8
|
|
|
|
(shield 20) ;; hi 16
|
|
|
|
(explode 21) ;; hi 32
|
|
|
|
(jak-yellow-shot 22) ;; hi 64
|
|
|
|
(jak-red-shot 23) ;; hi 128
|
|
|
|
(jak-blue-shot 24) ;; hi 256
|
|
|
|
(jak-dark-shot 25) ;; hi 512
|
|
|
|
(enemy-yellow-shot 26) ;; hi 1024
|
|
|
|
(enemy-dark-shot 27) ;; hi 2048
|
|
|
|
(eco-yellow 28) ;; hi 4096
|
|
|
|
(eco-red 29) ;; hi 8192
|
|
|
|
(eco-blue 30) ;; hi 16384
|
|
|
|
(eco-green 31) ;; hi 32768
|
|
|
|
(knocked 32) ;; hihi 1
|
2023-01-21 20:26:51 -05:00
|
|
|
(penetrate-33 33)
|
|
|
|
(penetrate-34 34)
|
|
|
|
(penetrate-35 35)
|
|
|
|
(penetrate-36 36)
|
|
|
|
(penetrate-37 37)
|
|
|
|
(penetrate-38 38)
|
|
|
|
(penetrate-39 39)
|
|
|
|
(penetrate-40 40)
|
|
|
|
(penetrate-41 41)
|
|
|
|
(penetrate-42 42)
|
|
|
|
(penetrate-43 43)
|
|
|
|
(penetrate-44 44)
|
|
|
|
(penetrate-45 45)
|
|
|
|
(penetrate-46 46)
|
|
|
|
(penetrate-47 47)
|
|
|
|
(penetrate-48 48)
|
|
|
|
(penetrate-49 49)
|
|
|
|
(penetrate-50 50)
|
|
|
|
(penetrate-51 51)
|
|
|
|
(penetrate-52 52)
|
|
|
|
(penetrate-53 53)
|
|
|
|
(penetrate-54 54)
|
|
|
|
(penetrate-55 55)
|
|
|
|
(penetrate-56 56)
|
|
|
|
(penetrate-57 57)
|
|
|
|
(penetrate-58 58)
|
|
|
|
(penetrate-59 59)
|
|
|
|
(penetrate-60 60)
|
|
|
|
(penetrate-61 61)
|
|
|
|
(penetrate-62 62)
|
|
|
|
(penetrate-63 63)
|
2022-08-24 00:29:51 -04:00
|
|
|
)
|
2023-01-21 20:26:51 -05:00
|
|
|
;; ---penetrate
|
2022-08-24 00:29:51 -04:00
|
|
|
|
|
|
|
|
2022-08-05 16:12:54 -04:00
|
|
|
;; DECOMP BEGINS
|
|
|
|
|
2022-08-24 00:29:51 -04:00
|
|
|
(defun penetrate-using->damage ((arg0 penetrate))
|
|
|
|
(cond
|
|
|
|
((logtest? (penetrate dark-bomb dark-giant) arg0)
|
|
|
|
15
|
|
|
|
)
|
|
|
|
((logtest? arg0 (penetrate mech-punch mech-bonk))
|
|
|
|
5
|
|
|
|
)
|
|
|
|
((logtest? (penetrate) arg0)
|
|
|
|
4
|
|
|
|
)
|
|
|
|
((logtest? (penetrate punch spin jak-dark-shot enemy-dark-shot) arg0)
|
|
|
|
3
|
|
|
|
)
|
|
|
|
((logtest? (penetrate
|
|
|
|
flop
|
|
|
|
uppercut
|
|
|
|
tube
|
|
|
|
flut-attack
|
|
|
|
dark-punch
|
|
|
|
explode
|
|
|
|
jak-yellow-shot
|
|
|
|
jak-red-shot
|
|
|
|
jak-blue-shot
|
|
|
|
enemy-yellow-shot
|
|
|
|
eco-yellow
|
|
|
|
)
|
|
|
|
arg0
|
|
|
|
)
|
|
|
|
2
|
|
|
|
)
|
|
|
|
((logtest? arg0 (penetrate generic-attack roll bonk board))
|
|
|
|
1
|
|
|
|
)
|
|
|
|
(else
|
|
|
|
0
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
2023-01-21 20:26:51 -05:00
|
|
|
;; WARN: Return type mismatch uint vs penetrate.
|
2022-08-24 00:29:51 -04:00
|
|
|
(defun penetrated-by-all&hit-points->penetrated-by ((arg0 penetrate) (arg1 int))
|
|
|
|
(let ((a0-1 arg1))
|
|
|
|
(the-as penetrate (logior (logclear arg0 (penetrate
|
|
|
|
generic-attack
|
|
|
|
flop
|
|
|
|
punch
|
|
|
|
spin
|
|
|
|
roll
|
|
|
|
uppercut
|
|
|
|
bonk
|
|
|
|
tube
|
|
|
|
vehicle
|
|
|
|
flut-attack
|
|
|
|
board
|
|
|
|
mech-punch
|
|
|
|
mech-bonk
|
|
|
|
dark-skin
|
|
|
|
dark-punch
|
|
|
|
dark-bomb
|
|
|
|
dark-giant
|
|
|
|
shield
|
|
|
|
explode
|
|
|
|
jak-yellow-shot
|
|
|
|
jak-red-shot
|
|
|
|
jak-blue-shot
|
|
|
|
jak-dark-shot
|
|
|
|
enemy-yellow-shot
|
|
|
|
enemy-dark-shot
|
|
|
|
eco-yellow
|
|
|
|
knocked
|
|
|
|
)
|
|
|
|
)
|
|
|
|
(cond
|
|
|
|
((or (zero? a0-1) (= a0-1 1))
|
|
|
|
(the-as int (the-as uint #x11fffdffa))
|
|
|
|
)
|
|
|
|
((= a0-1 2)
|
|
|
|
#x1feeceb8
|
|
|
|
)
|
|
|
|
((= a0-1 3)
|
|
|
|
#xa0cc430
|
|
|
|
)
|
|
|
|
((= a0-1 4)
|
|
|
|
#xcc400
|
|
|
|
)
|
|
|
|
((= a0-1 5)
|
|
|
|
#xcc400
|
|
|
|
)
|
|
|
|
((or (= a0-1 6)
|
|
|
|
(= a0-1 7)
|
|
|
|
(= a0-1 8)
|
|
|
|
(= a0-1 9)
|
|
|
|
(= a0-1 10)
|
|
|
|
(= a0-1 11)
|
|
|
|
(= a0-1 12)
|
|
|
|
(= a0-1 13)
|
|
|
|
(= a0-1 14)
|
|
|
|
(= a0-1 15)
|
|
|
|
)
|
|
|
|
#xc0400
|
|
|
|
)
|
|
|
|
(else
|
|
|
|
1024
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|