wwf-wrestlemania/DNKSEQ3.ASM

3423 lines
71 KiB
NASM
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

**************************************************************
*
* Software: Jamie Rivett
* Initiated: 5/2/94
*
* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC.
*
**************************************************************
.file "dnkseq3.asm"
.title "Krusty the Clown animation sequences"
.width 132
.option b,d,l,t
.mnolist
.include "macros.h"
.include "mproc.equ" ;Mproc equates
.include "sys.equ"
.include "display.equ"
.include "game.equ"
.include "plyr.equ"
.include "anim.equ"
.include "sound.h"
.include "ring.equ"
.include "bretimg.h"
.include "razorimg.h"
.include "takerimg.h"
.include "yokoimg.h"
.include "shawnimg.h"
.include "bamimg.h"
.include "doinkimg.h"
.include "leximg.h"
.include "fontsimg.glo"
.include "miscimg.glo"
.include "damage.equ"
******************************************************************************
* EXTERNAL REFERENCES
.ref PCNT,MOVE_NAME_ANNC,DO_WAIL,DO_NONO,DO_DOINK_SLAM
.ref FIND_AND_KILL_ENDLESS,CALL_MISS_YOKO,triple_sound
.ref RNDRNG0,HIT_THE_MAT,SMALL_BOUNCE,CALL_MISSES,CALL_SETUP
.ref CALL_THROWN_OUT,CALL_SPECIAL_MOVE,get_leap,shake_all_ropes
.ref dnk_dizzy_anim,dnk_2_faceup_getup_anim,no_debris,reduce_bog
.ref dnk_4_faceup_getup_anim,dnk_hitonground_anim
.ref dnk_faceup_getup_anim,dnk_hitonground_xflip_anim
.ref dnk_4_combo_butt_anim,DO_COMBO_MESS,dnk_4_box_anim
.ref dnk_4_knee_fall_anim,dnk_flying_kick_anim,NUM_OPPS
.ref MAYBE_SHOCKING,target_whoihit,PSTATUS,royal_rumble
.ref punch_dtime1,change_anim_anim,dnk_combo_box_anim
.ref dnk_fall_back_anim,dnk_combo_knee_fall_anim
.ref pal_getf,lex_break_face2_anim,dnk_combo_flying_kick_anim
.ref set_xdrift,CALL_OTHER_AVERAGE,get_health
.ref lex_break_neck2_anim,ckzpos,dnk_stand4_anim
.ref yok_3_head_held_brk_anim,lex_break_face_anim
.ref free_toss_check,setup_freetoss,process_ptrs
.ref dnk_2_hiptoss_anim
******************************************************************************
* SYMBOLS DEFINED IN THIS FILE
******************************************************************************
* EQUATES FOR THIS FILE
TSEC equ 53
*****************************************************************************
*
* JOY BUZZER
SUBR dnk_2_buzz_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable
.word ANI_FRICTION,2000h
.word ANI_SETSPEED,100h
.word ANI_SETFACING ;ANI_XFLIP <- not primary anim
.word ANI_SET_WRESTLER_XFLIP
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_ZEROVELS
.word ANI_STARTATTACK,AT_PUPPET,20
WL 2,D1TT5Z+FR2
WL 2,D1TT5Z+FR3
WL ANI_GOTO,#cont
SUBR dnk_4_buzz_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable
.word ANI_FRICTION,2000h
.word ANI_SETSPEED,100h
.word ANI_ZEROVELS
.word ANI_SETFACING ;ANI_XFLIP <- not primary anim
.word ANI_SET_WRESTLER_XFLIP
;Comes in from head held mode!
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_DETACH
#cont
.word ANI_STARTATTACK,AT_PUPPET,20
WL 3,D4BZ3A+FR1
.word ANI_ZEROVELS
.WORD ANI_SOUND,020FH ;PUT IT THERE
.WORD ANI_ADD_MOVE,MOVE_C_7,2,2
.word ANI_ATTACK_ON, AMODE_PUPPET,23,62,59,29 ;mode,x,y,w,h
WWL ANI_WAITHITOPP,35,D4BZ3A+FR2
.word ANI_ATTACK_OFF
#cont4
WL ANI_IFSTATUS,#gothim
WL 35,D4BZ3A+FR2
WL ANI_GOTO,#cont2
#gothim
; WL ANI_CODE,merge_xvels
.word ANI_ATTACHZ,0,0,-4 ;x & y don't matter.
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED
WWLLW ANI_SUPERSLAVE2,1,D4BZ3A+FR3,#puppet_tbl,0
;SMART-TARGET, so we buzz the right guy!
WL ANI_CODE,target_whoihit
.word ANI_ATTACK_ON, AMODE_BUZZ,53,62,50,29 ;mode,x,y,w,h
WL 1,D4BZ3A+FR3
.word ANI_ATTACK_OFF
WL ANI_CODE,start_sparks
WL 1,D4BZ3A+FR3
WL 3,D4BZ3A+FR4
WL 3,D4BZ3A+FR5
WL 3,D4BZ3A+FR6
WL 3,D4BZ3A+FR3
WL 3,D4BZ3A+FR4
.word ANI_DRAW_NAME,28
; .word ANI_WAITHITGND
; .word ANI_ZEROVELS
WL 3,D4BZ3A+FR5
.word ANI_ZERO_XZVELS
WL 3,D4BZ3A+FR6
WL 3,D4BZ3A+FR3
WL 3,D4BZ3A+FR4
WL 3,D4BZ3A+FR5
WL 3,D4BZ3A+FR6
WL 3,D4BZ3A+FR3
WL 3,D4BZ3A+FR4
WL 3,D4BZ3A+FR5
WL 3,D4BZ3A+FR6
WL 3,D4BZ3A+FR3
WL 3,D4BZ3A+FR4
WL 3,D4BZ3A+FR5
WL 3,D4BZ3A+FR6
;Stay in this buzz sequence longer if player keeps whacking on his punch button!
WWL ANI_SLIDE_BACK,30h,-70000h,#cont2
WL ANI_SET_YVEL,30000h
WL 3,D4BZ3A+FR2
#cont2
WL 6,D4BZ3A+FR2
WL 3,D4BZ3A+FR1
WL ANI_CODE,#zero_butn
.word ANI_DETACH
.word ANI_FACEDOWN
.word ANI_SETMODE,MODE_NORMAL
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_END
SUBR dnk_2_buzz2_anim
;Running or pushing toward buzzer
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable
.word ANI_FRICTION,2000h
.word ANI_SETSPEED,100h
; .word ANI_SETFACING ;ANI_XFLIP <- not primary anim
; .word ANI_SET_WRESTLER_XFLIP
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_STARTATTACK,AT_LEAPING,9
WL 3,D1TT5Z+FR2
WL 3,D1TT5Z+FR3
WL ANI_GOTO,#cont3
SUBR dnk_4_buzz2_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable
.word ANI_FRICTION,2000h
.word ANI_SETSPEED,100h
; .word ANI_SETFACING ;ANI_XFLIP <- not primary anim
; .word ANI_SET_WRESTLER_XFLIP
.word ANI_SETPLYRMODE,MODE_NORMAL
#cont3
.word ANI_STARTATTACK,AT_LEAPING,3
WL 3,D4BZ3A+FR1
WL ANI_CODE,get_leap
WL ANI_IFNOTSTATUS,#normal
.word ANI_ZEROVELS
.word ANI_CLR_STATUS
WL ANI_GOTO,#contz
#normal
; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff
LEAPATOPP 9,999,38h,80,90000h,TGT_HEAD,80,85,0
; WL ANI_SET_YVEL,30000h
#contz
.WORD ANI_SOUND,020FH ;PUT IT THERE
.word ANI_ATTACK_ON, AMODE_PUPPET,23,62,59,29 ;mode,x,y,w,h
WWL ANI_WAITHITOPP,20,D4BZ3A+FR2
.word ANI_ATTACK_OFF
WLW ANI_SET_ZVEL,0h,AM_ABS
WL ANI_GOTO,#cont4
SUBR dnk_combo_buzz2_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable
.word ANI_FRICTION,2000h
.word ANI_SETSPEED,100h
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_STARTATTACK,AT_LEAPING,3
WL 3,D4BZ3A+FR1
WL ANI_CODE,get_leap
WL ANI_IFNOTSTATUS,#normalc
.word ANI_ZEROVELS
.word ANI_CLR_STATUS
WL ANI_GOTO,#contzc
#normalc
; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff
LEAPATOPP 9,999,38h,80,90000h,TGT_HEAD,80,85,0
#contzc
.word ANI_ATTACK_ON, AMODE_PUPPET,23,62,59,29 ;mode,x,y,w,h
WWL ANI_WAITHITOPP,20,D4BZ3A+FR2
.word ANI_ATTACK_OFF
WLW ANI_SET_ZVEL,0h,AM_ABS
.WORD ANI_INC_COMBO
WL ANI_CODE,DO_COMBO_MESS
.WORD ANI_CLEAR_COMBO
WL ANI_GOTO,#cont4
#zero_butn
;Force player to start holding his button down starting at the end
;of the current buzz sequence.
move *a13(PLYRNUM),a0
X16 a0
addi punch_dtime1,a0
clr a14
move a14,*a0
rets
start_sparks
move @no_debris,a14
move @reduce_bog,a1
or a1,a14
jrnz #rets
move a13,a10
CREATE0 hand_sparks
#rets
CREATE0 MAYBE_SHOCKING
rets
#puppet_tbl
.long #Bret
.long #Razor
.long #Taker
.long #Yokozuna
.long #Shawn
.long #BamBam
.long #Doink
.long #Adam
.long #Lex
#Bret
.ref H4BZ4A
LWWW H4BZ4A+FR1,80,28,1
#Razor
.ref R4BZ4A
LWWW R4BZ4A+FR1,75,30,1
#Taker
.ref U4BZ4A
LWWW U4BZ4A+FR1,75,30,1
#Yokozuna
.ref Y4BZ4A
LWWW Y4BZ4A+FR1,75,26,1
#Shawn
.ref S4BZ4A
LWWW S4BZ4A+FR1,75,24,1
#BamBam
.ref B4BZ4A
LWWW B4BZ4A+FR1,75,15,1
#Doink
LWWW D4BZ4A+FR1,75,30,1
#Adam
.long 0
#Lex
.ref L4BZ4A
LWWW L4BZ4A+FR1,75,23,1
#*****************************************************************************
*
* GET BUZZED FROM DOINK
SUBR dnk_get_buzz_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable
; .word ANI_ZEROVELS
.word ANI_SETSPEED,100h
; .word ANI_XFLIP
.word ANI_GRAVITY_OFF
;Put this Doink into the blue doink pal, then replace whatever
;pal he was using at the end!
;We have to change pals on whatever guy we are showing in order
;to show the blue skeleton.
WL ANI_CODE,set_position
WL 2,D4SK4A+FR1
WL 3,D4BZ4A+FR1
WL ANI_CODE,make_white
WL 3,D4SK4A+FR1
WL ANI_CODE,make_norm
WL 3,D4BZ4A+FR1
WL 3,D4SK4A+FR1
WL 3,D4BZ4A+FR1
WL 3,D4SK4A+FR1
WL ANI_CODE,make_white
WL 3,D4BZ4A+FR1
WL ANI_CODE,make_norm
WL 3,D4SK4A+FR1
WL 3,D4BZ4A+FR1
WL 3,D4SK4A+FR1
WL 3,D4BZ4A+FR1
WL ANI_CODE,make_white
WL 3,D4SK4A+FR1
WL ANI_CODE,make_norm
WL 3,D4BZ4A+FR1
WL 3,D4SK4A+FR1
WL ANI_CODE,start_smoke
.word ANI_DETACH
.word ANI_GRAVITY_ON
WL ANI_SET_YVEL,60000h
WLW ANI_SET_XVEL,-30000h,AM_FACE_REL
WLW ANI_SET_ZVEL,20000h,AM_ABS
WL ANI_CODE,#make_black
WL 3,D4BZ4A+FR1
WL ANI_CODE,make_norm
WL 3,D4BZ4A+FR1
WL ANI_CODE,#make_black
WL 3,D4BZ4A+FR1
WL ANI_CODE,make_norm
WL 3,D4BZ4A+FR1
WL ANI_CODE,#make_black
WL 3,D4BZ4A+FR1
WL ANI_CODE,make_norm
WL 3,D4BZ4A+FR1
.word ANI_WAITHITGND
.word ANI_XFLIP
.word ANI_FACEDOWN
.word ANI_OFFSET,-20,0,0 ;x,y,z
WL 1,D4ST4E+FR3
WL ANI_CODE,am_I_dead
;If I'm dead, goto fall back
WL ANI_IFNOTSTATUS,#nodead
WL ANI_CHANGEANIM,dnk_fall_back_anim
; .word ANI_END
#nodead
.word ANI_SETMODE,MODE_NORMAL
.word ANI_END
SUBR am_I_dizzy
move *a13(ANIMODE),a1
andni MODE_STATUS,a1
move *a13(PLYRMODE),a0
cmpi MODE_DEAD,a0
jrz #not_dizzy
move *a13(PLYR_DIZZY),a0
jrz #not_dizzy
ori MODE_STATUS,a1
#not_dizzy
move a1,*a13(ANIMODE)
rets
SUBR am_I_dead
move *a13(PLYRNUM),a1
calla get_health
jrnz #notdead
move *a13(ANIMODE),a1
ori MODE_STATUS,a1
move a1,*a13(ANIMODE)
movi MODE_DEAD,a1
move a1,*a13(PLYRMODE)
rets
#notdead
move *a13(ANIMODE),a1
andni MODE_STATUS,a1
move *a13(PLYRMODE),a0
cmpi MODE_DEAD,a0
jrnz #not_dead
ori MODE_STATUS,a1
#not_dead
move a1,*a13(ANIMODE)
rets
SUBR make_white
movi 0101h,a14
move a14,*a13(OBJ_CONST)
move *a13(OBJ_CONTROL),a14
andni 01111b,a14
ori M_CONNON,a14
move a14,*a13(OBJ_CONTROL)
rets
#make_black
movi 0b0bh,a14
move a14,*a13(OBJ_CONST)
move *a13(OBJ_CONTROL),a14
andni 01111b,a14
ori M_CONNON,a14
move a14,*a13(OBJ_CONTROL)
rets
SUBR make_norm
move *a13(OBJ_CONTROL),a14
andni 01111b,a14
ori DMAWNZ,a14
move a14,*a13(OBJ_CONTROL)
rets
SUBR set_position
move *a13(WHOHITME),a0,L
move *a0(OBJ_XPOSINT),a1
move *a13(OBJ_XPOSINT),a2
cmp a1,a2
jrlt #lft
#rgt
addi 140,a1
move *a10(OBJ_XPOSINT),a2
#lft subi 70,a1
; move a1,*a13(OBJ_XPOSINT)
move *a0(OBJ_YPOSINT),a1
addi 12,a1
; move a1,*a13(OBJ_YPOSINT)
move *a0(OBJ_ZPOSINT),a1
subi 20,a1
; move a1,*a13(OBJ_ZPOSINT)
movi DNKBLU_P,a0
calla pal_getf
move a0,*a13(SKELETON_PAL)
move *a13(OBJ_PAL),a0
move a0,*a13(MY_PAL)
rets
SUBR set_skeleton_pal
move *a13(SKELETON_PAL),a0
move a0,*a13(OBJ_PAL)
;set the TEMP_PAL bit
move *a13(STATUS_FLAGS),a14
ori M_TEMP_PAL,a14
move a14,*a13(STATUS_FLAGS)
rets
SUBR set_my_pal
move *a13(MY_PAL),a0
move a0,*a13(OBJ_PAL)
;clear TEMP_PAL bit
move *a13(STATUS_FLAGS),a14
andni M_TEMP_PAL,a14
move a14,*a13(STATUS_FLAGS)
rets
SUBR start_smoke
move @no_debris,a14
jrnz #rets
move @reduce_bog,a14
jrnz #rets
move a13,a10
CREATE0 body_smoke
#rets rets
#*****************************************************************************
SUBR dnk_3_pile_driver_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable
.word ANI_ZEROVELS
.word ANI_SETSPEED,100h
.word ANI_SETPLYRMODE,MODE_NORMAL
;Put cool cheers here
.word ANI_ATTACK_ON, AMODE_PUPPET,32,15,45,41 ;mode,x,y,w,h
WWL ANI_WAITHITOPP,4,D4GH3A+FR8 ;D3PP3Z+FR1
.word ANI_ATTACK_OFF
WL ANI_IFNOTSTATUS,#missed
;Check to see if I have tried to pile drive Yokozuna!
.word ANI_SOUND,82h ;Effort grunt
;got him
.word ANI_ATTACHZ,0,0,-2 ;x & y don't matter.
.word ANI_SETOPPMODE,MODE_GHOST
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED
WWLLW ANI_SUPERSLAVE2,4,D3PP3Z+FR1,#puppet_tbl,0
.word ANI_WAITHITGND
.WORD ANI_ADD_MOVE,MOVE_C_5,2,2
WWLLW ANI_SUPERSLAVE2,4,D3PP3Z+FR2,#puppet_tbl,1
WWLLW ANI_SUPERSLAVE2,20,D3PP3Z+FR3,#puppet_tbl,2
WWLLW ANI_SUPERSLAVE2,3,D3PP3Z+FR4,#puppet_tbl,3
WL ANI_SET_YVEL,80000h
;Float toward the center of ring!
WL ANI_CODE,set_xdrift
WWLLW ANI_SUPERSLAVE2,3,D3PP3Z+FR5,#puppet_tbl,4
.word ANI_OFFSET,0,26,0 ;x,y,z
WWLLW ANI_SUPERSLAVE2,3,D3PP3Z+FR6,#puppet_tbl,5
WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR6,#puppet_tbl,6
WWLLW ANI_SUPERSLAVE2,7,D4HS3B+FR6,#puppet_tbl,7
;Mess with the physics!
WL ANI_SET_YVEL,-20000h
.word ANI_WAITHITGND
.word ANI_ZEROVELS
;Maybe do a bounce
;impact
WL ANI_CODE,HIT_THE_MAT
.word ANI_SHAKEALL,2
.word ANI_SHAKER,40
.word ANI_DAMAGEOPP,D_PILEDRIVER,RD_PILEDRIVER
WWLLW ANI_SUPERSLAVE2,4,D4HS3B+FR7,#puppet_tbl,8
WWLLW ANI_SUPERSLAVE2,4,D4HS3B+FR8,#puppet_tbl,9
WL ANI_CODE,CALL_SPECIAL_MOVE
WL ANI_CODE,#set_opp_xflip
WL ANI_SLAVEANIM,#rollout_tbl
.word ANI_CLROPPMODE,MODE_GHOST
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP
.word ANI_DETACH
WL 18,D4HS3B+FR8
WLW ANI_SET_ZVEL,-10000h,AM_ABS
;Getting up, set no_collis
.word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS|MODE_NOAUTOFLIP ;uninterruptable
WL 3,D3GU4A+FR5
WL 3,D3GU4A+FR6
;Check for a flip here
WL 1,D3GU4A+FR7
.word ANI_SETFACING ;ANI_XFLIP <- not primary anim
.word ANI_SET_WRESTLER_XFLIP
WL 2,D3GU4A+FR7
WL 3,D3GU4A+FR8
WL 3,D3GU4A+FR9
.word ANI_SAFE_TIME,30
WL ANI_CODE,free_toss_check
WL ANI_IFNOTSTATUS,#no_freetoss
.word ANI_ATTACK_ON,AMODE_HITCHECK,37,88,63,9
WL 1,D3GU4A+FR9
.word ANI_ATTACK_OFF
WL ANI_IFNOTSTATUS,#no_freetoss
;Opponent standing too close -- free toss
WL ANI_CODE,setup_freetoss
.ref dnk_4_push_anim
WL ANI_CHANGEANIM,dnk_4_push_anim
#no_freetoss
.word ANI_FACEDOWN
.word ANI_SETMODE,MODE_NORMAL
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_END
#missed
WL ANI_CODE,CALL_MISSES
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP
WL 3,D3PP3Z+FR1
WL 3,D3PP3Z+FR2
WL 3,D3PP3Z+FR3
WL 3,D3PP3Z+FR4
WL ANI_SET_YVEL,80000h
WL 3,D3PP3Z+FR5
.word ANI_OFFSET,0,26,0 ;x,y,z
WL 3,D3PP3Z+FR6
WL 3,D4HS3B+FR6
WL 7,D4HS3B+FR6
; WL ANI_SET_YVEL,-20000h
.word ANI_WAITHITGND
.word ANI_ZEROVELS
;Maybe do a bounce
;impact
WL ANI_CODE,SMALL_BOUNCE
.word ANI_SHAKEALL,2
.word ANI_SHAKER,30
WL 4,D4HS3B+FR7
WL 4,D4HS3B+FR8
; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP
WL 18,D4HS3B+FR8
WLW ANI_SET_ZVEL,-10000h,AM_ABS
;Getting up, set no_collis
.word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS|MODE_NOAUTOFLIP ;uninterruptable
WL 3,D3GU4A+FR5
WL 3,D3GU4A+FR6
;Check for a flip here
WL 1,D3GU4A+FR7
.word ANI_SETFACING ;ANI_XFLIP <- not primary anim
.word ANI_SET_WRESTLER_XFLIP
WL 2,D3GU4A+FR7
WL 3,D3GU4A+FR8
WL 3,D3GU4A+FR9
.word ANI_SAFE_TIME,30
WL ANI_CODE,free_toss_check
WL ANI_IFNOTSTATUS,#no_freetoss2
.word ANI_ATTACK_ON,AMODE_HITCHECK,37,88,63,9
WL 1,D3GU4A+FR9
.word ANI_ATTACK_OFF
WL ANI_IFNOTSTATUS,#no_freetoss2
;Opponent standing too close -- free toss
WL ANI_CODE,setup_freetoss
WL ANI_CHANGEANIM,dnk_4_push_anim
#no_freetoss2
.word ANI_FACEDOWN
.word ANI_SETMODE,MODE_NORMAL
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_END
#set_opp_xflip
move *a13(ATTACH_PROC),a0,L
move *a0(OBJ_CONTROL),a14
xori M_FLIPH,a14
move a14,*a0(OBJ_CONTROL)
rets
;Check to see if I have tried to pile drive Yokozuna!
SUBR is_this_yoko
move *a13(ATTACH_PROC),a0,L
move *a0(WRESTLERNUM),a0
cmpi 3,a0
jrnz #ok
;Yes, this is Yoko!
move *a13(ANIMODE),a1
ori MODE_STATUS,a1
move a1,*a13(ANIMODE)
rets
#ok
move *a13(ANIMODE),a1
andni MODE_STATUS,a1
move a1,*a13(ANIMODE)
rets
;For Yoko breaking free
#break
move *a13(ATTACH_PROC),a2,L
movi yok_3_head_held_brk_anim,a0
;a0 = * animation script
;a2 = * wrestler process
calla change_anim_anim
rets
#puppet_tbl
.long #Bret
.long #Razor
.long #Taker
.long #Yokozuna
.long #Shawn
.long #BamBam
.long #Doink
.long #Adam
.long #Lex
#Bret
.ref H4AM3A,H3BF3A,H3PP3X
LWWW H4AM3A+FR5,48,-37,0
LWWW H3BF3A+FR3,32,-34,0
LWWW H3PP3X+FR1,9,-30,0
LWWW H3PP3X+FR2,4,9,0
LWWW H3PP3X+FR3,13,23,0
LWWW H3PP3X+FR4,36,23,0
LWWW H3PP3X+FR5,54,44,0
LWWW H3PP3X+FR6,60,48,0
LWWW H3PP3X+FR7,63,18,0
LWWW H3PP3X+FR8,59,8,0
.long 0
#Razor
.ref R4AM4B,R3BF3A,R3GP3Z
LWWW R4AM4B+FR5,42,-33,0
LWWW R3BF3A+FR9,26,-32,0
LWWW R3GP3Z+FR1,14,-20,0
LWWW R3GP3Z+FR2,14,-16,0
LWWW R3GP3Z+FR3,23,6,0
LWWW R3GP3Z+FR4,54,22,0
LWWW R3GP3Z+FR5,63,41,0
LWWW R3GP3Z+FR6,70,43,0
LWWW R3GP3Z+FR7,66,32,0
LWWW R3GP3Z+FR8,62,0,0
.long 0
#Taker
.ref U4MP4A,U4BF3Z,U3PP3X,U3GP3X
LWWW U4MP4A+FR7,46,-11,0
LWWW U4BF3Z+FR1,28,-26,0
LWWW U3PP3X+FR1,15,-22,1
LWWW U3PP3X+FR2,18,-18,1
LWWW U3PP3X+FR3,20,-22,1
LWWW U3PP3X+FR4,36,-8,1
LWWW U3PP3X+FR5,57,35,1
LWWW U3PP3X+FR6,65,60,1
LWWW U3GP3X+FR1,62,8,1
LWWW U3GP3X+FR2,69,-7,1
.long 0
#Yokozuna
.ref Y4AM4A,Y3BF3A,Y3PP3Q,Y3FD3N
LWWW Y4AM4A+FR4,59,-27,0
LWWW Y3BF3A+FR11,31,-25,0
LWWW Y3PP3Q+FR1,16,-15,0
LWWW Y3PP3Q+FR2,13,-17,0
LWWW Y3PP3Q+FR3,26,-20,0
LWWW Y3PP3Q+FR4,52,-18,0
LWWW Y3PP3Q+FR6,50,5,0
LWWW Y3PP3Q+FR7,52,13,0
LWWW Y3FD3N+FR2,57,13,0
LWWW Y3FD3N+FR3,58,22,0
LWWW Y3FD3N+FR4,63,11,0
.long 0
#Shawn
.ref S4BF3A,S3BF3A,S3GP3X,S3OS3X,S3FD3X
LWWW S4BF3A+FR3,25,-24,0
LWWW S3BF3A+FR5,14,-39,0
LWWW S3GP3X+FR1,15,-24,0
LWWW S3GP3X+FR2,12,-19,0
LWWW S3GP3X+FR3,27,-5,0
LWWW S3GP3X+FR4,53,23,0
LWWW S3GP3X+FR5,67,39,0
LWWW S3OS3X+FR8,71,31,1
LWWW S3FD3X+FR2,69,23,0
LWWW S3GP3X+FR6,66,4,0
.long 0
#BamBam
.ref B3BF3C,B4AM4A,B3PP3Q,B3FD3C
LWWW B3BF3C+FR5,48,-27,0
LWWW B4AM4A+FR5,27,-24,0
LWWW B3PP3Q+FR1,12,-26,0
LWWW B3PP3Q+FR2,11,-15,0
LWWW B3PP3Q+FR3,31,3,0
LWWW B3PP3Q+FR4,57,16,0
LWWW B3PP3Q+FR5,64,33,0
LWWW B3PP3Q+FR6,57,40,0
LWWW B3PP3Q+FR7,60,28,0
LWWW B3PP3Q+FR7,61,46,0
; LWWW B3PP3Q+FR7,61,46,0
; LWWW B3FD3C+FR1,57,13,0
.long 0
#Doink
LWWW D3HT3Z+FR1,36,-41,1
LWWW D3BF3A+FR1,27,-34,0
LWWW D3PD3Z+FR1,16,-35,1
LWWW D3PD3Z+FR2,13,-22,1
LWWW D3PD3Z+FR3,23,0,1
LWWW D3PD3Z+FR4,39,25,1
LWWW D3PD3Z+FR5,46,33,1
LWWW D3PD3Z+FR6,58,23,1
LWWW D3PD3Z+FR8,58,7,1
LWWW D3PD3Z+FR9,59,-3,1
.long 0
#Adam
.long 0
#Lex
.ref L4AM4B,L3BF3B,L3GP3Z,L3FH3A,L3FD3B
LWWW L4AM4B+FR6,52,-39,0
LWWW L3BF3B+FR1,9,-34,0
LWWW L3GP3Z+FR1,13,-22,0
LWWW L3GP3Z+FR2,16,-16,0
LWWW L3GP3Z+FR3,27,-16,0
LWWW L3GP3Z+FR4,46,-5,0
LWWW L3GP3Z+FR5,63,13,0
LWWW L3GP3Z+FR6,67,33,0
LWWW L3FH3A+FR6,58,20,0
LWWW L3FD3B+FR1,61,2,0
.long 0
#rollout_tbl
REFLONG hrt_break_neck2_anim,rzr_break_neck2_anim
REFLONG und_break_neck2_anim
REFLONG yok_break_neck2_anim
REFLONG shn_break_neck2_anim,bam_break_neck2_anim
REFLONG dnk_break_neck2_anim
.long 0
REFLONG lex_break_neck2_anim
#*****************************************************************************
SUBR dnk_combo_head_slam_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable
.word ANI_ZEROVELS
.word ANI_SETSPEED,100h
.word ANI_SETPLYRMODE,MODE_NORMAL
;Put cool cheers here
.word ANI_ATTACK_ON, AMODE_PUPPET,32,49,50,21 ;mode,x,y,w,h
WWL ANI_WAITHITOPP,3,D4GH3A+FR8
.word ANI_ATTACK_OFF
WL ANI_IFNOTSTATUS,#missedc
;got him
.word ANI_ATTACHZ,0,0,-2 ;x & y don't matter.
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED
; attacker sequence
WL ANI_CODE,DO_DOINK_SLAM
WL ANI_SET_YVEL,60000h ;50000h
;Float toward the center of ring!
WL ANI_CODE,set_xdrift
.word ANI_SET_RPTCOUNT,4 ;2 times
.word ANI_CLR_BUTCOUNT
WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR1,#puppet_tbl,0
WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR2,#puppet_tbl,1
WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR3,#puppet_tbl,2
;On the way down!
WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR5,#puppet_tbl,3
.word ANI_OFFSET,0,34,0 ;x,y,z
WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR6,#puppet_tbl,4
.word ANI_WAITHITGND
.WORD ANI_ADD_MOVE,MOVE_C_6,2,2
.word ANI_ZEROVELS
WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR7,#puppet_tbl,5
.word ANI_SOUND,33h ;neck break (5-7 ticks late)
WWLLW ANI_SUPERSLAVE2,2,D4HS3B+FR8,#puppet_tbl,6
;Maybe do a bounce
.WORD ANI_INC_COMBO
;impact
WL ANI_CODE,HIT_THE_MAT
.word ANI_SHAKEALL,2
.word ANI_SHAKER,30
.word ANI_DAMAGEOPP,D_FACESLAM1,RD_FACESLAM1
WWLLW ANI_SUPERSLAVE2,1,D4HS3B+FR8,#puppet_tbl,6
#try_rptc
WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,3,#norepeatc
.word ANI_DEC_RPTCOUNT
WL ANI_IF_RPTCOUNT,#slam_againc
WL ANI_GOTO,#norepeatc
#slam_againc
.WORD ANI_INC_COMBO
.word ANI_CLR_BUTCOUNT
;Slam him again using detach/reattach if button pressed again!
WL ANI_SLAVEANIM,#faced2_tbl
.word ANI_DETACH
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP
WL 2,D4HS3B+FR8
WL ANI_CODE,DO_DOINK_SLAM
WL ANI_SET_YVEL,50000h
WL 2,D4HS3B+FR7
WL 13,D4HS3B+FR6
;Reattach me to who I'm slamming
WL ANI_CODE,#reattach
.word ANI_ATTACHZ,0,0,-2 ;x & y don't matter.
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED
WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR6,#puppet_tbl,4
.word ANI_WAITHITGND
.word ANI_ZEROVELS
WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR7,#puppet_tbl,5
; .word ANI_SOUND,33h ;neck break (5-7 ticks late)
WWLLW ANI_SUPERSLAVE2,1,D4HS3B+FR8,#puppet_tbl,6
;Maybe do a bounce
;impact
WL ANI_CODE,HIT_THE_MAT
.word ANI_SHAKEALL,2
.word ANI_SHAKER,30
.word ANI_DAMAGEOPP,D_FACESLAM2,RD_FACESLAM2
WWLLW ANI_SUPERSLAVE2,1,D4HS3B+FR8,#puppet_tbl,6
WL ANI_GOTO,#try_rptc
#norepeatc
WL ANI_SLAVEANIM,#faced_tbl
.word ANI_DETACH
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP
WL 18,D4HS3B+FR8
WLW ANI_SET_ZVEL,-10000h,AM_ABS
;Getting up, set no_collis
.word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS|MODE_NOAUTOFLIP|MODE_OVERLAP ;uninterruptable
WL ANI_CODE,DO_COMBO_MESS
.WORD ANI_CLEAR_COMBO
WL 3,D3GU4A+FR5
WL 3,D3GU4A+FR6
;Check for a flip here
WL 1,D3GU4A+FR7
.word ANI_SETFACING ;ANI_XFLIP <- not primary anim
.word ANI_SET_WRESTLER_XFLIP
WL 2,D3GU4A+FR7
WL 3,D3GU4A+FR8
WL 3,D3GU4A+FR9
.word ANI_SAFE_TIME,30
WL ANI_CODE,free_toss_check
WL ANI_IFNOTSTATUS,#no_freetoss
.word ANI_ATTACK_ON,AMODE_HITCHECK,37,88,63,9
WL 1,D3GU4A+FR9
.word ANI_ATTACK_OFF
WL ANI_IFNOTSTATUS,#no_freetoss
;Opponent standing too close -- free toss
WL ANI_CODE,setup_freetoss
WL ANI_CHANGEANIM,dnk_4_push_anim
#no_freetoss
.word ANI_FACEDOWN
.word ANI_SETMODE,MODE_NORMAL
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_END
#missedc
WL ANI_CODE,DO_COMBO_MESS
.WORD ANI_CLEAR_COMBO
WL ANI_CODE,CALL_MISSES
WL 6,D4HS3B+FR1
.word ANI_SETMODE,MODE_NORMAL
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_END
*******************************************************************************
SUBR dnk_3_head_slam_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable
.word ANI_ZEROVELS
.word ANI_SETSPEED,100h
.word ANI_SETPLYRMODE,MODE_NORMAL
;Put cool cheers here
.word ANI_ATTACK_ON, AMODE_PUPPET,32,49,50,21 ;mode,x,y,w,h
WWL ANI_WAITHITOPP,3,D4GH3A+FR8
.word ANI_ATTACK_OFF
WL ANI_IFNOTSTATUS,#missed
;got him
.word ANI_SOUND,82h ;Effort grunt
.word ANI_ATTACHZ,0,0,-2 ;x & y don't matter.
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED
; attacker sequence
WL ANI_CODE,DO_DOINK_SLAM
WL ANI_SET_YVEL,60000h ;50000h
;Float toward the center of ring!
WL ANI_CODE,set_xdrift
.word ANI_SET_RPTCOUNT,4 ;2 times
.word ANI_CLR_BUTCOUNT
WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR1,#puppet_tbl,0
WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR2,#puppet_tbl,1
WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR3,#puppet_tbl,2
;On the way down!
WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR5,#puppet_tbl,3
.word ANI_OFFSET,0,34,0 ;x,y,z
WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR6,#puppet_tbl,4
.word ANI_WAITHITGND
.WORD ANI_ADD_MOVE,MOVE_C_6,2,2
.word ANI_ZEROVELS
WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR7,#puppet_tbl,5
; .word ANI_SOUND,33h ;neck break (5-7 ticks late)
WWLLW ANI_SUPERSLAVE2,2,D4HS3B+FR8,#puppet_tbl,6
;Maybe do a bounce
;impact
WL ANI_CODE,HIT_THE_MAT
.word ANI_SHAKEALL,2
.word ANI_SHAKER,30
.word ANI_DAMAGEOPP,D_FACESLAM1,RD_FACESLAM1
WWLLW ANI_SUPERSLAVE2,1,D4HS3B+FR8,#puppet_tbl,6
#try_rpt
WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,2,#norepeat
.word ANI_DEC_RPTCOUNT
WL ANI_IF_RPTCOUNT,#slam_again
WL ANI_GOTO,#norepeat
#slam_again
.WORD ANI_ADD_MOVE,MOVE_C_6,2,2
.word ANI_CLR_BUTCOUNT
;Slam him again using detach/reattach if button pressed again!
WL ANI_SLAVEANIM,#faced2_tbl
.word ANI_DETACH
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP
WL 2,D4HS3B+FR8
WL ANI_CODE,DO_DOINK_SLAM
WL ANI_SET_YVEL,50000h
WL 2,D4HS3B+FR7
WL 13,D4HS3B+FR6
;Reattach me to who I'm slamming
WL ANI_CODE,#reattach
.word ANI_ATTACHZ,0,0,-2 ;x & y don't matter.
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED
WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR6,#puppet_tbl,4
.word ANI_WAITHITGND
.word ANI_ZEROVELS
WWLLW ANI_SUPERSLAVE2,3,D4HS3B+FR7,#puppet_tbl,5
; .word ANI_SOUND,33h ;neck break (5-7 ticks late)
WWLLW ANI_SUPERSLAVE2,1,D4HS3B+FR8,#puppet_tbl,6
;Maybe do a bounce
;impact
WL ANI_CODE,HIT_THE_MAT
.word ANI_SHAKEALL,2
.word ANI_SHAKER,30
.word ANI_DAMAGEOPP,D_FACESLAM2,RD_FACESLAM2
WWLLW ANI_SUPERSLAVE2,1,D4HS3B+FR8,#puppet_tbl,6
WL ANI_GOTO,#try_rpt
#norepeat
WL ANI_CODE,CALL_SPECIAL_MOVE
.word ANI_DRAW_NAME,20
WL ANI_SLAVEANIM,#faced_tbl
.word ANI_DETACH
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP
WL 18,D4HS3B+FR8
WLW ANI_SET_ZVEL,-10000h,AM_ABS
;Getting up, set no_collis
.word ANI_SETMODE,MODE_UNINT|MODE_NOCOLLIS|MODE_NOAUTOFLIP|MODE_OVERLAP ;uninterruptable
WL 3,D3GU4A+FR5
WL 3,D3GU4A+FR6
;Check for a flip here
WL 1,D3GU4A+FR7
.word ANI_SETFACING ;ANI_XFLIP <- not primary anim
.word ANI_SET_WRESTLER_XFLIP
WL 2,D3GU4A+FR7
WL 3,D3GU4A+FR8
WL 3,D3GU4A+FR9
.word ANI_SAFE_TIME,30
WL ANI_CODE,free_toss_check
WL ANI_IFNOTSTATUS,#no_freetoss3
.word ANI_ATTACK_ON,AMODE_HITCHECK,37,88,63,9
WL 1,D3GU4A+FR9
.word ANI_ATTACK_OFF
WL ANI_IFNOTSTATUS,#no_freetoss3
;Opponent standing too close -- free toss
WL ANI_CODE,setup_freetoss
WL ANI_CHANGEANIM,dnk_4_push_anim
#no_freetoss3
.word ANI_FACEDOWN
.word ANI_SETMODE,MODE_NORMAL
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_END
#missed
WL ANI_CODE,CALL_MISSES
WL 6,D4HS3B+FR1
.word ANI_SETMODE,MODE_NORMAL
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_END
#reattach
move *a13(WHOIHIT),a0,L
move a0,*a13(ATTACH_PROC),L
move a13,*a0(ATTACH_PROC),L
rets
#puppet_tbl
.long #Bret
.long #Razor
.long #Taker
.long #Yokozuna
.long #Shawn
.long #BamBam
.long #Doink
.long #Adam
.long #Lex
#Bret
.ref H3MS3Z,H3MS3X
LWWW H3MS3Z+FR1,36,-5,0
LWWW H3MS3Z+FR2,39,0,0
LWWW H3MS3Z+FR3,51,-1,0
LWWW H3MS3Z+FR4,58,-4,0
LWWW H3MS3Z+FR5,62,-6,0
LWWW H3MS3Z+FR6,57,-11,0
LWWW H3MS3X+FR5,71,-24,0
.long 0
#Razor
.ref R3MS3Z,R3MS3Q
LWWW R3MS3Z+FR1,48,-6,0
LWWW R3MS3Z+FR2,46,5,0
LWWW R3MS3Z+FR3,53,-2,0
LWWW R3MS3Z+FR4,65,1,0
LWWW R3MS3Z+FR5,71,-4,0
LWWW R3MS3Z+FR6,73,-28,0
LWWW R3MS3Q+FR1,76,-11,0
.long 0
#Taker
.ref U3MS3Z,U3CF3Q
LWWW U3MS3Z+FR1,37,9,0
LWWW U3MS3Z+FR2,25,17,0
LWWW U3MS3Z+FR3,28,0,0
LWWW U3MS3Z+FR4,44,-1,0
LWWW U3MS3Z+FR5,53,4,0
LWWW U3MS3Z+FR6,55,-14,0
LWWW U3CF3Q+FR1,61,-26,0
.long 0
#Yokozuna
.ref Y3MS3Z,Y3KF3B
LWWW Y3MS3Z+FR1,54,-8,0
LWWW Y3MS3Z+FR2,53,12,0
LWWW Y3MS3Z+FR3,53,10,0
LWWW Y3MS3Z+FR4,59,6,0
LWWW Y3MS3Z+FR5,61,-1,0
LWWW Y3MS3Z+FR6,62,-27,0
LWWW Y3KF3B+FR1,66,-2,0
.long 0
#Shawn
.ref S3MS3Z,S3CF3Z
LWWW S3MS3Z+FR1,31,-10,0
LWWW S3MS3Z+FR2,29,3,0
LWWW S3MS3Z+FR3,39,7,0
LWWW S3MS3Z+FR4,55,5,0
LWWW S3MS3Z+FR5,61,3,0
LWWW S3MS3Z+FR6,74,-39,0
LWWW S3CF3Z+FR1,82,-23,0
.long 0
#BamBam
.ref B3MS3Z,B3RL1A
LWWW B3MS3Z+FR1,47,2,0
LWWW B3MS3Z+FR2,49,-4,0
LWWW B3MS3Z+FR3,52,-2,0
LWWW B3MS3Z+FR4,65,7,0
LWWW B3MS3Z+FR5,70,21,0
LWWW B3MS3Z+FR6,72,3,0
LWWW B3RL1A+FR7,73,-15,0
.long 0
#Doink
LWWW D3GS3X+FR1,52,-15,0
LWWW D3GS3X+FR3,45,2,0
LWWW D3GS3X+FR4,51,-2,0
LWWW D3GS3X+FR5,61,-4,0
LWWW D3GS3X+FR7,68,-4,0
LWWW D3GS3X+FR8,67,-39,0
LWWW D3GS3X+FR9,75,-15,0
.long 0
#Adam
.long 0
#Lex
.ref L3MS3Z,L3TF3X
LWWW L3MS3Z+FR1,55,-3,0
LWWW L3MS3Z+FR2,44,4,0
LWWW L3MS3Z+FR3,46,1,0
LWWW L3MS3Z+FR4,57,-4,0
LWWW L3MS3Z+FR5,60,1,0
LWWW L3MS3Z+FR6,64,-26,0
LWWW L3TF3X+FR1,60,-19,0
.long 0
#faced2_tbl
REFLONG hrt_break_face2_anim,rzr_break_face2_anim
REFLONG und_break_face2_anim
REFLONG yok_break_face2_anim
REFLONG shn_break_face2_anim,bam_break_face2_anim
REFLONG dnk_break_face2_anim
.long 0
REFLONG lex_break_face2_anim
#faced_tbl
REFLONG hrt_break_face_anim,rzr_break_face_anim
REFLONG und_break_face_anim
REFLONG yok_break_face_anim
REFLONG shn_break_face_anim,bam_break_face_anim
REFLONG dnk_break_face_anim
.long 0
REFLONG lex_break_face_anim
#*****************************************************************************
*
* Head slams into mat
;From head slam - repeated head slam
SUBR dnk_break_face2_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP
.word ANI_ZEROVELS
.word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off
WL 1,D3GS3X+FR9
WL ANI_SET_YVEL,80000h
WL 3,D3GS3X+FR9
WL 5,D3GS3X+FR10
.word ANI_WAITHITGND
.word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him!
.word ANI_WAITROLL
WL 3,D3GS3X+FR9
WL ANI_CHANGEANIM,dnk_faceup_getup_anim
SUBR dnk_break_face3_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP
.word ANI_ZEROVELS
.word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off
WL 3,D3GS3X+FR4
WL ANI_SET_YVEL,078000h
WL 100,D3GS3X+FR4
.word ANI_WAITHITGND
.word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him!
.word ANI_WAITROLL
WL ANI_CHANGEANIM,dnk_faceup_getup_anim
* Head slams into mat
;From head slam
SUBR dnk_break_face_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP
.word ANI_ZEROVELS
WL 1,D3GS3X+FR8
.word ANI_DEBRIS,100,1,-8,12,0 ;%chance, tbl index, x,y,z off
WL ANI_SET_YVEL,40000h
WL 2,D3GS3X+FR8
WL 5,D3GS3X+FR9
WL 5,D3GS3X+FR10
.word ANI_WAITHITGND
WL ANI_CODE,SMALL_BOUNCE
.word ANI_ZEROVELS
WL 4,D3GS3X+FR8
WL 4,D3GS3X+FR9
WL 4,D3GS3X+FR10
WL 4,D3GS3X+FR8
.word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him!
WL 1,D3GS3X+FR8 ;Face down
.word ANI_WAITROLL
WL ANI_CHANGEANIM,dnk_faceup_getup_anim
#*****************************************************************************
; .bss #opp_xvel,32
SUBR dnk_3_fake_hold_anim
;Head hold when standing next to player
;No collisions possible
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_ZEROVELS
.word ANI_SETSPEED,100h
;#4 grab to head hold
.word ANI_STARTATTACK,AT_PUPPET,6
WL 2,D4GH3A+FR1
WL 2,D4GH3A+FR2
WL 2,D4GH3A+FR3
WL 7,D4GH3A+FR4
WL ANI_GOTO,#missed
SUBR dnk_3_head_hold2_anim
;Head hold when standing next to player
;No collisions possible
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_ZEROVELS
.word ANI_SETSPEED,100h
;#4 grab to head hold
.word ANI_STARTATTACK,AT_PUPPET,6
WL 2,D4GH3A+FR1
WL 2,D4GH3A+FR2
WL 2,D4GH3A+FR3
.word ANI_ATTACK_ON, AMODE_PUPPET_HDGRAB,32,60,62,45 ;mode,x,y,w,h
WWL ANI_WAITHITOPP,7,D4GH3A+FR4
.word ANI_ATTACK_OFF
WL ANI_IFNOTSTATUS,#missed
WL ANI_IFBLOCKED,#missedb
.WORD ANI_ADD_MOVE,MOVE_C_7,2,2
WL ANI_GOTO,#gothim
SUBR dnk_3_head_hold_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP
.word ANI_ZEROVELS
.word ANI_SETSPEED,100h
;#4 grab to head hold
.word ANI_STARTATTACK,AT_PUPPET,7
WL 2,D4GH3A+FR1
WL 2,D4GH3A+FR2
; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff
; LEAPATOPP 6,999,65,45,90000h,TGT_HEAD,60,105,0 ;88
LEAPATOPP 9,999,40,45,90000h,TGT_HEAD,60,105,0 ;88
WL 3,D4GH3A+FR3
.word ANI_ATTACK_ON, AMODE_PUPPET,32,60,62,45 ;mode,x,y,w,h
WWL ANI_WAITHITOPP,5,D4GH3A+FR4
.word ANI_ATTACK_OFF
WL ANI_IFNOTSTATUS,#missed
WL ANI_IFBLOCKED,#missedb
#gothim
;got him
.word ANI_SETWORD,USR_VAR2,0
.word ANI_CLR_BUTCOUNT
WL ANI_CODE,head_grab_time
.word ANI_ATTACHZ,0,0,-4 ;x & y don't matter.
WL ANI_CODE,DO_NONO
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED
WWLLW ANI_SUPERSLAVE2,1,D4GH3A+FR4,#puppet_tbl,0
.word ANI_WAITHITGND
.word ANI_ZEROVELS
WWLLW ANI_SUPERSLAVE2,4,D4GH3A+FR4,#puppet_tbl,0
WWLLW ANI_SUPERSLAVE2,4,D4GH3A+FR5,#puppet_tbl,1
WWLLW ANI_SUPERSLAVE2,4,D4GH3A+FR7,#puppet_tbl,2
WWLLW ANI_SUPERSLAVE2,4,D4GH3A+FR8,#puppet_tbl,3
.word ANI_SETPLYRMODE,MODE_HEADHOLD
WL ANI_SLAVEANIM,#headheld_tbl
WL 1,D4GH3A+FR8
; .word ANI_FACEDOWN
.word ANI_SETMODE,MODE_NORMAL
.word ANI_END
#missedb
.word ANI_ZEROVELS
WL ANI_SET_YVEL,30000h
WL 3,D4GH3A+FR4
.word ANI_WAITHITGND
.word ANI_ZEROVELS
WL 3,D4GH3A+FR3
WL 3,D4GH3A+FR2
WL 3,D4GH3A+FR1
.word ANI_FACEDOWN
.word ANI_SETMODE,MODE_NORMAL
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_END
#missed
WL ANI_CODE,CALL_MISSES
.word ANI_ZERO_XZVELS
.word ANI_WAITHITGND
.word ANI_ZEROVELS
WL 5,D4GH3A+FR4
WL 3,D4GH3A+FR3
WL 3,D4GH3A+FR2
WL 3,D4GH3A+FR1
.word ANI_FACEDOWN
.word ANI_SETMODE,MODE_NORMAL
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_END
SUBR head_grab_time
move @PCNT,a14,L ;use 32-bit PCNT!
move a14,*a13(LAST_HEADHOLD),L
calla CALL_SETUP
;fall through
SUBR clear_opp_counts
;Zero opponents buttons for later counting
clr a14
move *a13(ATTACH_PROC),a0,L
move a14,*a0(PUNCHB_COUNT)
move a14,*a0(BLOCKB_COUNT)
move a14,*a0(SPUNCHB_COUNT)
move a14,*a0(KICKB_COUNT)
move a14,*a0(SKICKB_COUNT)
rets
;;new xvel is (attacker xvel + defender xvel)/4
; SUBR merge_xvels
;
; move @#opp_xvel,a0,L
; move *a13(OBJ_XVEL),a1,L
; add a1,a0
;; sra 2,a0
; move a0,*a13(OBJ_XVEL),L
;#rets
; rets
;save opponent's x-velocity
; SUBR store_opp_xvel
; move *a13(CLOSEST_NUM),a0
; X32 a0
; addi process_ptrs,a0
; move *a0,a0,L
; move *a0(OBJ_XVEL),a0,L
; move a0,@#opp_xvel,L
; rets
#puppet_tbl
.long #Bret
.long #Razor
.long #Taker
.long #Yokozuna
.long #Shawn
.long #BamBam
.long #Doink
.long #Adam
.long #Lex
#Bret
LWWW H4AH3A+FR1,72,17,0
LWWW H3HB3A+FR3,66,5,0
LWWW H3HB3A+FR2,56,-6,0
LWWW H3BF3A+FR1,48,-35,0
.long 0
#Razor
LWWW R4AH4C+FR3,70,16,0
LWWW R3HB3A+FR3,67,3,0
LWWW R3HB3A+FR2,63,-17,0
LWWW R3BF3A+FR1,53,-37,0
.long 0
#Taker
LWWW U4AH3A+FR2,65,26,0
LWWW U4BF3A+FR2,60,17,0
LWWW U4BF3A+FR3,30,-3,0
LWWW U4BF3Z+FR5,52,-16,0
.long 0
#Yokozuna
LWWW Y4AE4A+FR2,80,7,0
LWWW Y4AM4A+FR1,79,6,0
LWWW Y4AM4A+FR2,69,-5,0
LWWW Y3BF3A+FR1,55,-25,0
.long 0
#Shawn
LWWW S4AH3D+FR5,73,6,0
LWWW S4AH3D+FR1,66,10,0
LWWW S4BF3A+FR2,62,-9,0
LWWW S3BF3A+FR1,37,-36,0
.long 0
#BamBam
LWWW B4AH4A+FR1,68,11,0
LWWW B4BF3A+FR1,74,15,0
LWWW B3HB3A+FR2,62,-20,0
LWWW B3BF3C+FR5,54,-29,0
.long 0
#Doink
LWWW D3AH3B+FR1,60,13,0
LWWW D3AK3A+FR3,59,16,0
LWWW D3AK3A+FR2,64,-5,0
LWWW D3BF3A+FR2,51,-35,0
.long 0
#Adam
.long 0
#Lex
LWWW L4AH4B+FR3,68,9,0
LWWW L3BF3A+FR1,74,11,1
LWWW L3BF3A+FR2,65,-10,1
LWWW L3BF3B+FR5,49,-33,0
.long 0
#headheld_tbl
REFLONG hrt_3_head_held_anim
REFLONG rzr_3_head_held_anim
REFLONG und_3_head_held_anim
REFLONG yok_3_head_held_anim
REFLONG shn_3_head_held_anim
REFLONG bam_3_head_held_anim
REFLONG dnk_3_head_held_anim
.long 0
REFLONG lex_3_head_held_anim
#*****************************************************************************
SUBR dnk_3_head_held_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable
.word ANI_ZEROVELS
.word ANI_SETSPEED,100h
.word ANI_SETPLYRMODE,MODE_HEADHELD
.word ANI_SETFACING ;ANI_XFLIP <- not primary anim
; WL 4,D3BF3Z+FR1
; WL 4,D3BF3Z+FR2
.word ANI_SETWORD,USR_VAR1,0 ;loop count
#loop
WL 4,D3BF3A+FR2
WL 4,D3BF3A+FR3
WL 4,D3BF3A+FR4
WL 4,D3BF3A+FR5
WL 4,D3BF3A+FR6
WL 4,D3BF3A+FR7
WL 4,D3BF3A+FR8
WL 4,D3BF3A+FR1
WL ANI_CODE,#inc_loop
WL ANI_IFNOTSTATUS,#loop
;Continue into break...
SUBR dnk_3_head_held_brk_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable
.word ANI_SETPLYRMODE,MODE_NORMAL
WL ANI_CODE,FIND_AND_KILL_ENDLESS
WLW ANI_SET_XVEL,-38000h,AM_NEWFACE_REL
WL ANI_SET_YVEL,40000h
WLW ANI_SET_ZVEL,18000h,AM_ABS
WL 4,D3AK3A+FR2
.word ANI_DETACH
;Standard #2 head hit from spin kick
WL 3,D2AH2A+FR1
WL 4,D2AH2A+FR2
.word ANI_WAITHITGND
.word ANI_ZEROVELS
WL 4,D2AH2A+FR3
.word ANI_FACEUP
.word ANI_SETMODE,MODE_NORMAL
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_END
;Loop 4 times, then break out!
#inc_loop
move *a13(USR_VAR1),a0
inc a0
move a0,*a13(USR_VAR1)
cmpi 2,a0
jrgt #breakout
;He may have let me go by hitting his block butn!
;Handled in mode_headheld!
; move *a13(ATTACH_PROC),a0,L
; jrz #breakout
move *a13(ANIMODE),a1
andni MODE_STATUS,a1
move a1,*a13(ANIMODE)
rets
#breakout
move *a13(ANIMODE),a1
ori MODE_STATUS,a1
move a1,*a13(ANIMODE)
rets
SUBR dnk_3_head_held_stand_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable
.word ANI_SETPLYRMODE,MODE_NORMAL
WL 3,D3AK3A+FR2
WL 3,D1TT5Z+FR2 ;2.5
.word ANI_DETACH
.word ANI_FACEUP
.word ANI_SETMODE,MODE_NORMAL
.word ANI_END
#*****************************************************************************
*
* KNEE TO HEAD HELD OPPONENT
SUBR dnk_3_knee_to_head_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable
.word ANI_ZEROVELS
.word ANI_SETSPEED,100h
.word ANI_STARTATTACK,AT_KNEE,9
WL 2,D3SK3X+FR1
WL 2,D3SK3X+FR2
WL 2,D3SK3X+FR3
.word ANI_ATTACK_ON, AMODE_KNEE,20,62,68,16
WL 2,D3SK3X+FR4
.word ANI_ATTACK_OFF
WL 17,D3SK3X+FR4
WL 3,D3SK3X+FR5
WL 3,D3SK3X+FR6
WL 3,D3SK3X+FR7
.word ANI_FACEUP
; .word ANI_FACE,MOVE_RIGHT|MOVE_DOWN
.word ANI_SETMODE,MODE_NORMAL
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_END
SUBR dnk_3_knees_to_head_anim
;Need to do a move which kicks guys in the ass!
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable
.word ANI_ZEROVELS
.word ANI_SETSPEED,100h
.word ANI_SET_RPTCOUNT,3 ;2 times
.WORD ANI_ADD_MOVE,MOVE_C_4,2,2
WL ANI_GOTO,#skp
#rpt
.word ANI_STARTATTACK,AT_KNEE,10
WL 3,D4KH3A+FR3
#skp
WL ANI_SET_YVEL,30000h
.word ANI_CLR_BUTCOUNT
WL 2,D4KM3A+FR2
WL 2,D4KM3A+FR3
WL 3,D4KM3A+FR4
.word ANI_ATTACK_ON, AMODE_HEADKNEES,20,42,68,36
WL 4,D4KM3A+FR5
.word ANI_ATTACK_OFF
WL ANI_IFNOTSTATUS,#missed
WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#exit
.word ANI_DEC_RPTCOUNT
WL ANI_IF_RPTCOUNT,#rpt
.word ANI_CLR_BUTCOUNT
WL 2,D4KM3A+FR4
WL 2,D4KM3A+FR3
WL ANI_SET_YVEL,40000h
WL 2,D4KM3A+FR2
WL 2,D4KM3A+FR3
WL 2,D4KM3A+FR4
.word ANI_ATTACK_ON, AMODE_HEADKNEES,20,42,68,36
WL 4,D4KM3A+FR5
.word ANI_ATTACK_OFF
WL ANI_IFNOTSTATUS,#missed
WWWL ANI_IF_BUTCOUNT_GE,SPUNCHB_COUNT,1,#do_pile
#exit
#missed
.word ANI_DETACH
.word ANI_OFFSET,0,0,-5 ;x,y,z
WL 2,D4KM3A+FR6
WL 2,D4KM3A+FR7
WL 2,D4KM3A+FR8
WL 2,D4KM3A+FR9
WL 2,D4KM3A+FR10
.word ANI_FACEDOWN
.word ANI_SETMODE,MODE_NORMAL
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_END
#do_pile
WL 2,D4KM3A+FR6
WL 2,D4KM3A+FR7
WL 2,D4KM3A+FR8
WL 2,D4KM3A+FR9
WL 2,D4KM3A+FR10
.word ANI_DETACH
.word ANI_SETMODE,MODE_NORMAL
.word ANI_SETPLYRMODE,MODE_NORMAL
WL ANI_CHANGEANIM,dnk_3_pile_driver_anim
; .word ANI_END
#*****************************************************************************
*
* UPPERCUT TO HEAD HELD OPPONENT
SUBR dnk_uppercut_to_head_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable
.word ANI_ZEROVELS
.word ANI_SETSPEED,100h
.word ANI_STARTATTACK,AT_KNEE,16
WL 2,D4GP3C+FR2
WL 2,D4GP3C+FR3
WL 2,D4GP3C+FR4
WL 2,D4GP3C+FR5
.WORD ANI_SOUND,43H
.word ANI_ATTACK_ON, AMODE_KNEE,44,57,32,37 ;mode,x,y,w,h
WL 10,D4GP3C+FR6
.word ANI_ATTACK_OFF
WL 3 ,D4GP3C+FR7
.word ANI_FACEDOWN
.word ANI_SETMODE,MODE_NORMAL
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_END
#*****************************************************************************
*
* UPPERCUT TO IN CLOSE OPPONENT
SUBR dnk_4_uppercut_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable
.word ANI_ZEROVELS
.word ANI_SETSPEED,100h
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_SETFACING ;ANI_XFLIP <- not primary anim
.word ANI_SET_WRESTLER_XFLIP
.word ANI_STARTATTACK,AT_PUNCH,6
WL 1,D4GP3C+FR2
WL 1,D4GP3C+FR3
WL 2,D4GP3C+FR4
WL 2,D4GP3C+FR5
; .WORD ANI_SOUND,43H
.word ANI_ATTACK_ON, AMODE_UPRCUT,44,57,32,37 ;mode,x,y,w,h
WL 2,D4GP3C+FR6
.word ANI_ATTACK_OFF
WL ANI_IFNOTSTATUS,#missed
.WORD ANI_ADD_MOVE,MOVE_C_4,2,2
WL ANI_IFBLOCKED,#missedb ;Yes, I hit blocker
;Got him
;Hit, spray some explosions
.word ANI_SET_ATTACH
.word ANI_DEBRISAT,400,1,10,50,0 ;%chance, tbl index, x,y,z off
.word ANI_DETACH
WL ANI_CODE,CALL_OTHER_AVERAGE
.WORD ANI_SOUND,43H
WL ANI_CODE,#set_zvel
.word ANI_SHAKER,35
; WL ANI_CODE,HIT_THE_MAT
WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2
WL 10,D4GP3C+FR6
#no_hit2
WL 15,D4GP3C+FR6
WL 4,D4GP3C+FR7
.word ANI_FACEDOWN
.word ANI_SETMODE,MODE_NORMAL
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_END
#set_zvel
move *a13(WHOIHIT),a0,L
move *a0(OBJ_ZVEL),a14,L
jrnz #skip
movi 10000h,a14
move a14,*a0(OBJ_ZVEL),L
#skip rets
#missedb
WL 12,D4GP3C+FR6
#missed
WL 3,D4GP3C+FR6
WL 3,D4GP3C+FR7
.word ANI_SETMODE,MODE_NORMAL
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_END
;FIX!!! Make cooler...
#*****************************************************************************
*
* UPPERCUT TO HEAD HELD OPPONENT
SUBR dnk_combo_uppercut_to_head_anim
.WORD ANI_CLEAR_COMBO
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable
.word ANI_ZEROVELS
.word ANI_SETSPEED,100h
.word ANI_SETPLYRMODE,MODE_NORMAL
WLW ANI_SET_XVEL,30000h,AM_FACE_REL
.word ANI_STARTATTACK,AT_KNEE,9
WL 2,D4GP3C+FR2
WL 3,D4GP3C+FR3
WL 2,D4GP3C+FR4
WL 2,D4GP3C+FR5
.WORD ANI_SOUND,43H
.WORD ANI_INC_COMBO
.word ANI_ATTACK_ON, AMODE_KNEE,44,37,32,57 ;mode,x,y,w,h
WL 1,D4GP3C+FR6
.word ANI_ATTACK_OFF
WL ANI_IFNOTSTATUS,#miss
WL ANI_CODE,SET_OPTIMAL_POSITION
.WORD ANI_INC_COMBO
; .word ANI_SET_ATTACH
WLLL ANI_SETOPPVELS,0,0h,0h ;x,y,z vels
.word ANI_STARTATTACK,AT_KNEE,12
WL 3,D4GP3C+FR6
WL 3 ,D4GP3C+FR7
.word ANI_CLR_BUTCOUNT
WL 2,D4GP3C+FR2
WL 1,D4GP3C+FR3
WL 2,D4GP3C+FR4
WL 1,D4GP3C+FR5
.WORD ANI_SOUND,43H
.word ANI_ATTACK_ON, AMODE_KNEE,44,37,32,57 ;mode,x,y,w,h
WL 1,D4GP3C+FR6
.word ANI_ATTACK_OFF
WL ANI_IFNOTSTATUS,#miss
.WORD ANI_INC_COMBO
; .word ANI_SET_ATTACH
WLLL ANI_SETOPPVELS,0,0h,0h ;x,y,z vels
.word ANI_STARTATTACK,AT_KNEE,8
WL 1,D4GP3C+FR6
WL 2 ,D4GP3C+FR7
WL 1,D4GP3C+FR2
WL 2,D4GP3C+FR3
WL 1,D4GP3C+FR4
WL 1,D4GP3C+FR5
.WORD ANI_SOUND,43H
.word ANI_ATTACK_ON, AMODE_KNEE,44,37,32,57 ;mode,x,y,w,h
WL 1,D4GP3C+FR6
.word ANI_ATTACK_OFF
WL ANI_IFNOTSTATUS,#miss
.WORD ANI_INC_COMBO
; .word ANI_SET_ATTACH
WLLL ANI_SETOPPVELS,0,0h,0h ;x,y,z vels
.word ANI_STARTATTACK,AT_KNEE,8
WL 1,D4GP3C+FR6
WL 2 ,D4GP3C+FR7
WL 1,D4GP3C+FR2
WL 2,D4GP3C+FR3
WL 1,D4GP3C+FR4
WL 1,D4GP3C+FR5
.WORD ANI_SOUND,43H
.word ANI_ATTACK_ON, AMODE_KNEE,44,37,32,57 ;mode,x,y,w,h
WL 1,D4GP3C+FR6
.word ANI_ATTACK_OFF
WL ANI_IFNOTSTATUS,#miss
.WORD ANI_INC_COMBO
; .word ANI_SET_ATTACH
WLLL ANI_SETOPPVELS,0,0h,0h ;x,y,z vels
WLW ANI_SET_XVEL,80000h,AM_FACE_REL
WL 1,D4GP3C+FR6
WL 2 ,D4GP3C+FR7
WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NEXT_CHECK_2
WL ANI_CHANGEANIM,dnk_combo_box_anim
#NEXT_CHECK_2
WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#NEXT_CHECK
WL ANI_CHANGEANIM,dnk_combo_knee_fall_anim
#NEXT_CHECK
WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#miss
WL ANI_CHANGEANIM,dnk_4_combo_butt_anim
#miss
WL ANI_CODE,DO_COMBO_MESS
.WORD ANI_CLEAR_COMBO
.word ANI_DETACH
.word ANI_FACEDOWN
.word ANI_SETMODE,MODE_NORMAL
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_END
SET_OPTIMAL_POSITION
MOVE *A13(WHOIHIT),A0,L
MOVE *A13(OBJ_XPOS),A2,L
MOVI [70,0],A1
MOVE *A13(FACING_DIR),A3
BTST MOVE_LEFT_BIT,A3
JRZ NO_NEED_TO_NEG_XDIR
NEG A1
NO_NEED_TO_NEG_XDIR
ADD A1,A2
MOVE A2,*A0(OBJ_XPOS),L
RETS
SUBR dnk_uppercuts_to_head_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable
.word ANI_ZEROVELS
.word ANI_SETSPEED,100h
.WORD ANI_ADD_MOVE,MOVE_C_4,2,2
.word ANI_SETWORD,USR_VAR2,0
.word ANI_CLR_BUTCOUNT
.word ANI_SET_RPTCOUNT,3 ;rpt 2 times
WL 3,D4GP3C+FR2
WL 3,D4GP3C+FR3
WL ANI_GOTO,#skp
#rpt
.word ANI_CLR_BUTCOUNT
WL 2,D4GP3C+FR8
WL 2,D4GP3C+FR9
WL 2,D4GP3C+FR3
#skp
WL 2,D4GP3C+FR4
WL 2,D4GP3C+FR5
.WORD ANI_SOUND,43H
.word ANI_ATTACK_ON, AMODE_HEADKNEES,44,57,32,37 ;mode,x,y,w,h
WL 3,D4GP3C+FR6
.word ANI_ATTACK_OFF
WL ANI_IFNOTSTATUS,#missed
.word ANI_SET_ATTACH
.word ANI_DEBRISAT,250,1,10,50,0 ;%chance, tbl index, x,y,z off
; .word ANI_DETACH
WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,1,#exit
.word ANI_DEC_RPTCOUNT
WL ANI_IF_RPTCOUNT,#rpt
;Completed multiple uppercuts, allow flings, etc.
; .word ANI_SET_ATTACH
; .word ANI_SETOPP_PLYRMODE,MODE_NORMAL
; .word ANI_DETACH
.word ANI_SETWORD,USR_VAR2,1
.word ANI_CLR_BUTCOUNT
WL 2,D4GP3C+FR8
WL 2,D4GP3C+FR9
WL 2,D4GP3C+FR3
WL 2,D4GP3C+FR4
WL 2,D4GP3C+FR5
.WORD ANI_SOUND,43H
.word ANI_ATTACK_ON, AMODE_HEADKNEES,44,57,32,37 ;mode,x,y,w,h
WL 3,D4GP3C+FR6
.word ANI_ATTACK_OFF
WL ANI_IFNOTSTATUS,#missed
WL ANI_CODE,#go_high
WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#exit
WL 3,D4GP3C+FR7
WL ANI_CHANGEANIM,dnk_flying_kick_anim
; .word ANI_END
#exit
#missed
.word ANI_OFFSET,0,0,-5 ;x,y,z
WL 3,D4GP3C+FR7
.word ANI_DETACH
.word ANI_FACEDOWN
.word ANI_SETMODE,MODE_NORMAL
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_END
#go_high
;Got rid of this because attach_proc is a zero after a hit
; move *a13(ATTACH_PROC),a0,L
; move *a0(WRESTLERNUM),A14
; cmpi 3,a14 ;Yoko
; jrz #x
; movi 50000h,a14
; move a14,*a0(OBJ_YVEL),L
move *a13(CLOSEST_NUM),a14
X32 a14
addi process_ptrs,a14
move *a14,a14,L
move *a14(WRESTLERNUM),a0
cmpi 3,a0 ;Yoko too fat
jrz #x
movi 50000h,a0 ;Go higher for last hit!
move a0,*a14(OBJ_YVEL),L
#x rets
#chk_count
move *a13(ANIMODE),a0
andni MODE_STATUS,a0
move *a13(BUT_COUNT),a14
jrz #fail
ori MODE_STATUS,a0
#fail
move a0,*a13(ANIMODE)
rets
#*****************************************************************************
*
* #2 SLAP
SUBR dnk_2_slap_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable
.word ANI_ZEROVELS
.word ANI_SETSPEED,100h
.word ANI_SETFACING ;ANI_XFLIP <- not primary anim
.word ANI_SET_WRESTLER_XFLIP
.word ANI_STARTATTACK,AT_SPINKIK,30
.WORD ANI_ADD_MOVE,MOVE_C_3,2,2
WL 2,D2BS3A+FR1
; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff
LEAPATOPP 0dh,999,4ah-5,50,90000h,TGT_HEAD,96,105,-30
WL 3,D2BS3A+FR2
WL 07h,D2BS3A+FR3
WL 3,D2BS3A+FR4
.word ANI_ATTACK_ON, AMODE_BACKHAND,75,81,36,28 ;mode,x,y,w,h
WL 3,D2BS3A+FR5
WL 3,D2BS3A+FR6
.word ANI_ATTACK_OFF
WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit
WL ANI_SET_YVEL,40000h
WL 10,D2BS3A+FR6
#no_hit
.word ANI_WAITHITGND
.word ANI_ZEROVELS
WL 5,D2BS3A+FR6
WL ANI_CODE,spunch_delay
WL ANI_IFNOTSTATUS,#none
WL 15,D2BS3A+FR6
#none
WL 3,D2BS3A+FR8
WL 3,D2BS3A+FR9
.word ANI_SETMODE,MODE_NORMAL
.word ANI_END
#*
* #4 SLAP
SUBR dnk_4_slap_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable
.word ANI_ZEROVELS
.word ANI_SETSPEED,100h
.word ANI_SETFACING ;ANI_XFLIP <- not primary anim
.word ANI_SET_WRESTLER_XFLIP
.word ANI_STARTATTACK,AT_SPINKIK,30
.WORD ANI_ADD_MOVE,MOVE_C_3,2,2
WL 2,D4BS3A+FR1
; ticks,range max,hiX,hiZ,hiYvel,tgt,Xoff,Yoff,Zoff
LEAPATOPP 0dh,999,4ah-5,50,90000h,TGT_HEAD,96,105,30
WL 3,D4BS3A+FR2
WL 07h,D4BS3A+FR3
WL 3,D4BS3A+FR4
.word ANI_ATTACK_ON, AMODE_BACKHAND,75,81,36,28 ;mode,x,y,w,h
WL 3,D4BS3A+FR5
WL 3,D4BS3A+FR6
.word ANI_ATTACK_OFF
WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit2
WL ANI_SET_YVEL,40000h
WL 10,D4BS3A+FR6
#no_hit2
.word ANI_WAITHITGND
.word ANI_ZEROVELS
WL 5,D4BS3A+FR6
WL ANI_CODE,spunch_delay
WL ANI_IFNOTSTATUS,#none
WL 15,D4BS3A+FR6
#none
WL 3,D4BS3A+FR8
WL 3,D4BS3A+FR9
.word ANI_SETMODE,MODE_NORMAL
.word ANI_END
SUBR spunch_delay
move @royal_rumble,a0
jrnz #ok
move @PSTATUS,a0
subk 3,a0
jrz #cont
move @NUM_OPPS,a0
subk 1,a0
jrnz #ok
#cont
move *a13(LAST_SPUNCH),a14,L
move @PCNT,a0,L ;use 32-bit PCNT!
move a0,*a13(LAST_SPUNCH),L
sub a14,a0
cmpi 2*60,a0
jrge #ok
;This blocked fling attempt is too close (in terms of time) to most recent grab
move *a13(ANIMODE),a1
ori MODE_STATUS,a1
move a1,*a13(ANIMODE)
rets
#ok move *a13(ANIMODE),a1
andni MODE_STATUS,a1
move a1,*a13(ANIMODE)
rets
#*****************************************************************************
*
* EAR SLAP
SUBR dnk_2_earslap_anim
SUBR dnk_4_earslap_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable
.word ANI_ZEROVELS
.word ANI_SETSPEED,100h
.word ANI_SETFACING ;ANI_XFLIP <- not primary anim
.word ANI_SET_WRESTLER_XFLIP
.word ANI_SET_RPTCOUNT,4 ;3 times
.word ANI_CLR_BUTCOUNT
.word ANI_STARTATTACK,AT_LEAPING,14
WL 2,D3ES3A+FR1
LEAPATOPP 0dh,999,58h,80,90000h,TGT_HEAD,106,105,-30
WL 3,D3ES3A+FR2
WL 5,D3ES3A+FR3
WL 3,D3ES3A+FR4
WL 3,D3ES3A+FR5
.word ANI_ZERO_XZVELS
.word ANI_ATTACK_ON, AMODE_EARSLAP,70,74,60,42 ;mode,x,y,w,h
.word ANI_SOUND,43h
.word ANI_SHAKER,22
WL 3,D3ES3A+FR6
.word ANI_ATTACK_OFF
.WORD ANI_ADD_MOVE,MOVE_C_8,2,2
WL ANI_IFBLOCKED,#contz
WL ANI_IFSTATUS,#gothim
#cont
WL 10,D3ES3A+FR6
WL ANI_GOTO,#no_hit2
#contz
WL ANI_CODE,CALL_SPECIAL_MOVE
.word ANI_WAITHITGND
.word ANI_ZEROVELS
WL ANI_GOTO,#no_hitz
#gothim
.word ANI_DRAW_NAME,22
.word ANI_DAMAGEOPP,D_EARSLAP1,RD_EARSLAP1
WL ANI_CODE,CALL_SPECIAL_MOVE
.word ANI_WAITHITGND
.word ANI_ZEROVELS
.word ANI_DEBRIS,100,4,120,100,0 ;%chance, tbl index, x,y,z off
#no_hitz
WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,2,#fail
.word ANI_DEC_RPTCOUNT
WL ANI_IF_RPTCOUNT,#dnk_quick_earslap
#fail
WWL ANI_SLIDE_BACK,30h,-70000h,#no_hit3
WL ANI_SET_YVEL,40000h
WL 10,D3ES3A+FR6
#no_hit3
WL ANI_CODE,CALL_MISSES
WL 8,D3ES3A+FR6
WL 3,D3ES3A+FR5
WL 3,D3ES3A+FR4
WL 3,D3ES3A+FR3
WL 3,D3ES3A+FR2
WL 3,D3ES3A+FR1
.word ANI_FACEDOWN
.word ANI_SETMODE,MODE_NORMAL
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_END
#dnk_quick_earslap
.word ANI_CLR_BUTCOUNT
.word ANI_STARTATTACK,AT_EARSLAP1,14
WL 2,D3ES3A+FR5
WL 2,D3ES3A+FR4
WL 2,D3ES3A+FR3
WL 2,D3ES3A+FR2
WL 2,D3ES3A+FR3
WL 2,D3ES3A+FR4
WL 2,D3ES3A+FR5
.word ANI_ATTACK_ON, AMODE_EARSLAP,70,74,60,42 ;mode,x,y,w,h
.word ANI_SHAKER,22
WL 3,D3ES3A+FR6
.word ANI_ATTACK_OFF
WL ANI_IFBLOCKED,#cont
.WORD ANI_ADD_MOVE,MOVE_C_8,2,2
WWWL ANI_IF_BUTCOUNT_LT,PUNCHB_COUNT,2,#fail2
.word ANI_DEC_RPTCOUNT
WL ANI_IF_RPTCOUNT,#dnk_quick_earslap
#fail2
; .word ANI_ATTACK_ON, AMODE_BACKHAND,90,74,40,42 ;mode,x,y,w,h
.word ANI_ATTACK_ON, AMODE_HDBUTT,70,74,60,42 ;mode,x,y,w,h
.word ANI_SHAKER,22
WL 3,D3ES3A+FR6
.word ANI_ATTACK_OFF
WL ANI_CODE,#set_opp_y
;Stay in this buzz sequence longer if player keeps whacking on his punch button!
; WL ANI_SLAVEANIM,#drift_tbl
; .word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP
;
; .word ANI_DETACH
WWL ANI_SLIDE_BACK,30h,-70000h,#no_hitx
WL ANI_SET_YVEL,40000h
WL 10,D3ES3A+FR6
#no_hitx
WL 15-8,D3ES3A+FR6
#no_hit2
WL 8,D3ES3A+FR6
WL 3,D3ES3A+FR5
WL 3,D3ES3A+FR4
WL 3,D3ES3A+FR3
WL 3,D3ES3A+FR2
WL 3,D3ES3A+FR1
.word ANI_FACEDOWN
.word ANI_SETMODE,MODE_NORMAL
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_END
#set_opp_y
move *a13(WHOIHIT),a0,L
movi [4,0],a14
move a14,*a0(OBJ_YVEL),L
rets
SUBR dnk_4_combo_earslap_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable
.word ANI_ZEROVELS
.word ANI_SETSPEED,100h
.word ANI_SET_RPTCOUNT,4 ;2 times
; .word ANI_STARTATTACK,AT_EARSLAP1,17
WL 3,D3ES3A+FR1
LEAPATOPP 0dh,999,50h,80,90000h,TGT_HEAD,106,105,-30
WL 3,D3ES3A+FR2
WL 5,D3ES3A+FR3
WL 3,D3ES3A+FR4
WL 3,D3ES3A+FR5
.word ANI_ZERO_XZVELS
.word ANI_ATTACK_ON, AMODE_EARSLAP,70,74,60,42 ;mode,x,y,w,h
.word ANI_SOUND,43h
.word ANI_SHAKER,22
WL 12,D3ES3A+FR6
.word ANI_ATTACK_OFF
WL ANI_IFSTATUS,#gothimc
WL 12,D3ES3A+FR6
WL ANI_GOTO,#no_hit2c
#gothimc
.WORD ANI_INC_COMBO
.word ANI_DAMAGEOPP,D_EARSLAP2,RD_EARSLAP2
.word ANI_WAITHITGND
.word ANI_ZEROVELS
.word ANI_CLR_BUTCOUNT
#dnk_quick_combo_earslap
; .word ANI_STARTATTACK,AT_EARSLAP1,10
WL 1,D3ES3A+FR5
WL 2,D3ES3A+FR4
WL 1,D3ES3A+FR3
WL 2,D3ES3A+FR2
WL 1,D3ES3A+FR3
WL 2,D3ES3A+FR4
WL 1,D3ES3A+FR5
.word ANI_ATTACK_ON, AMODE_EARSLAP,70,74,60,42 ;mode,x,y,w,h
.word ANI_SHAKER,22
WL 3,D3ES3A+FR6
.word ANI_ATTACK_OFF
WL ANI_IFNOTSTATUS,#no_hit2c
.WORD ANI_INC_COMBO
.word ANI_DEC_RPTCOUNT
WL ANI_IF_RPTCOUNT,#dnk_quick_combo_earslap
WL 3,D3ES3A+FR6
WL 3,D3ES3A+FR5
WL 3,D3ES3A+FR4
WWWL ANI_IF_BUTCOUNT_LT,KICKB_COUNT,1,#NEXT_CHECK
.word ANI_IMMOBILIZE,30
WLW ANI_SET_XVEL,10000h,AM_FACE_REL
WL ANI_CHANGEANIM,dnk_combo_buzz2_anim
#NEXT_CHECK
WWWL ANI_IF_BUTCOUNT_LT,SPUNCHB_COUNT,1,#NEXT_CHEK2
WL 3,D3ES3A+FR3
WL 3,D3ES3A+FR2
WL 3,D3ES3A+FR1
WLW ANI_SET_XVEL,10000h,AM_FACE_REL
WL ANI_CHANGEANIM,dnk_combo_flying_kick_anim
#NEXT_CHEK2
WWWL ANI_IF_BUTCOUNT_LT,SKICKB_COUNT,1,#missed
WLW ANI_SET_XVEL,50000h,AM_FACE_REL
WL 3,D3ES3A+FR3
WL 3,D3ES3A+FR2
WL 3,D3ES3A+FR1
WL ANI_CHANGEANIM,dnk_combo_head_slam_anim
#missed
WL ANI_CODE,DO_COMBO_MESS
.WORD ANI_CLEAR_COMBO
.word ANI_FACEDOWN
.word ANI_SETMODE,MODE_NORMAL
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_END
#no_hit2c
WL ANI_CODE,DO_COMBO_MESS
.WORD ANI_CLEAR_COMBO
WL 8,D3ES3A+FR6
WL 3,D3ES3A+FR5
WL 3,D3ES3A+FR4
WL 3,D3ES3A+FR3
WL 3,D3ES3A+FR2
WL 3,D3ES3A+FR1
.word ANI_FACEDOWN
.word ANI_SETMODE,MODE_NORMAL
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_END
#*******************************
* Smoke trail (Process)
* A10=*wrestler proc
SUBR body_smoke
clr a11
#lp CREATE0 smokepuff
SLEEPK 1
inc a11
cmpi 17,a11
jrlt #lp
DIE
#*******************************
* Smoke trail puff (Process)
* A10=*wrestler proc
SUBRP smokepuff
move *a10(OBJ_ZPOSINT),a3
movk 3,a0
calla RNDRNG0
subk 2,a0
add a0,a3 ;-2 to 1
addk 16,a3
ori 1000h,a3
movk 3,a0
calla RNDRNG0
sll 5,a0 ;*32
addi smoke_t,a0
move *a0,a9,L
movi [1,8000h],a6
movi [-2,0],a7
move a11,a14
sll 4,a14
addi #x_tbl,a14
move *a14,a1
move *a10(OBJ_XPOSINT),a0
move *a10(OBJ_CONTROL),a14
btst B_FLIPH,a14
jrz #no_flip
neg a6
neg a1
#no_flip
add a1,a0
sll 16,a0 ;X
move a11,a14
sll 4,a14
addi #y_tbl,a14
move *a14,a14
movi Y_SCALE_MULTIPLIER,a2
move *a10(OBJ_ZPOSINT),a1
mpyu a2,a1
move *a10(OBJ_YPOSINT),a2
sub a14,a2
addi 0h,a2
sll 16,a2
sub a2,a1
movi CLDB1ORNG,a2
movi DMAWNZ|M_3D|M_NOCOLL,a4
movi CLSDEAD,a5
calla BEGINOBJ
SLEEPK 3
jauc FRQDELDIE
#x_tbl .word -14,-3,10,25,30,31,30,39,26,-3,17,32,53,54,41,32,45
#y_tbl .word -14,-33,-51,-59,-39,-20,-2,-67,-75,-76,-84,-77,-57,-81
.word -86,-98,-108
.def smoke_t
smoke_t
.long cldbw_l,cldblg_l,cldbgry_l,cldblg2_l
cldbw_l
LW CLDB2,3
LWL CLDB3,NEWPALET|3,ORNGPAL
LW CLDB4,2
LWL CLD5,NEWPALET|2,WHTPAL
LW CLD6,2
LW CLD7,2
LW CLD8,2
LW CLD9,2
LWL0 CLD10,2
cldblg_l
LW CLDB2,2
LWL CLDB3,NEWPALET|3,ORNGPAL
LW CLDB4,2
LWL CLD5,NEWPALET|2,LGRYPAL
LW CLD6,2
LW CLD7,2
LW CLD8,2
LW CLD9,2
LWL0 CLD10,2
cldbgry_l
LW CLDB2,3
LWL CLDB3,NEWPALET|2,ORNGPAL
LW CLDB4,2
LWL CLD5,NEWPALET|2,GREYPAL
LW CLD6,2
LW CLD7,2
LW CLD8,2
LW CLD9,2
LWL0 CLD10,2
cldblg2_l
LW CLDB2,2
LWL CLDB3,NEWPALET|2,ORNGPAL
LWL CLDB4,NEWPALET|2,LGRYPAL
LW CLD5,2
LW CLD6,2
LW CLD7,2
LW CLD8,2
LW CLD9,2
LWL0 CLD10,2
#*******************************
* Start sparks in AMODE
* A10=*wrestler proc
SUBRP hand_sparks
movi 11,a11 ;13
#lp CREATE0 one_spark
CREATE0 one_spark
SLEEPK 3
dsj a11,#lp
DIE
GRAV equ 04000h ;9000h ;a000h ;6000h
#********************************
* Spark from hand buzzer (Process)
* A10=*wrestler proc
SUBR one_spark
movk >a,a0
calla RNDRNG0
subk 5,a0
sll 14,a0 ;XVel
move a0,a6
movk >3,a0
calla RNDRNG0
addk 1,a0
sll 16,a0 ;YVel
neg a0
move a0,a7
move *a10(OBJ_ZPOSINT),a3
movk 3,a0
calla RNDRNG0
subk 2,a0
add a0,a3 ;-2 to 1
addk 16,a3
ori 1000h,a3
movi 40h,a1
move *a10(OBJ_XPOSINT),a0
move *a10(OBJ_CONTROL),a14
btst B_FLIPH,a14
jrz #no_flip
neg a1
#no_flip
add a1,a0
sll 16,a0
movi Y_SCALE_MULTIPLIER,a14
move *a10(OBJ_ZPOSINT),a1
mpyu a14,a1
move *a10(OBJ_YPOSINT),a14
addi 52h,a14
sll 16,a14
sub a14,a1
movi SPARK1,a2
movi DMAWNZ|M_3D|M_NOCOLL,a4
movi CLSDEAD,a5
calla BEGINOBJ
movk >f,a0
calla RNDRNG0
subk 7,a0
sll 14,a0
move a0,*a8(OZVEL),L
movi spark_l,a9
movk 3,a11
jruc #strt
#lp dsj a10,#noani
#strt
move a11,a10
move *a9,a0,L
jrz #die ;noani
addk 32,a9
move *a8(OCTRL),a1
calla obj_aniq
#noani
SLEEPK 3
move *a8(OYVEL),a2,L
addi GRAV*2,a2
move a2,*a8(OYVEL),L
jruc #lp ;Going up?
#die
clr a0
move a0,*a8(OXVEL),L
move a0,*a8(OYVEL),L
move a0,*a8(OZVEL),L
jauc DELOBJDIE
spark_l
.long SPARK2
.long SPARK2
.long SPARK2
.long SPARK2
.long SPARK2
.long SPARK3
.long SPARK3
.long SPARK3
.long 0
#*******************************
* Start sparks in AMODE
* A10=*wrestler proc
clobber_sparks
movk 8,a11 ;13
#lp CREATE0 clb_spark
CREATE0 clb_spark
SLEEPK 1
dsj a11,#lp
DIE
GRAV equ 04000h ;9000h ;a000h ;6000h
#********************************
* Spark from hand buzzer (Process)
* A10=*wrestler proc
clb_spark
movk 30,a0
calla RNDRNG0
subk 15,a0
sll 14,a0 ;XVel
move a0,a6
move *a10(OBJ_XVEL),a0,L
sra 1,a0
add a0,a6
movk >5,a0
calla RNDRNG0
addk 2,a0
sll 16,a0 ;YVel
neg a0
move a0,a7
move *a10(OBJ_ZPOSINT),a3
movk 3,a0
calla RNDRNG0
subk 2,a0
add a0,a3 ;-2 to 1
addk 16,a3
ori 1000h,a3
movi 0h,a1
move *a10(OBJ_XPOSINT),a0
move *a10(OBJ_CONTROL),a14
btst B_FLIPH,a14
jrz #no_flip
neg a1
#no_flip
add a1,a0
sll 16,a0
movi Y_SCALE_MULTIPLIER,a14
move *a10(OBJ_ZPOSINT),a1
mpyu a14,a1
move *a10(OBJ_YPOSINT),a14
addi 52h,a14
sll 16,a14
sub a14,a1
movi SPARK1,a2
movi DMAWNZ|M_3D|M_NOCOLL,a4
movi CLSDEAD,a5
calla BEGINOBJ
movk >f,a0
calla RNDRNG0
subk 7,a0
sll 14,a0
move a0,*a8(OZVEL),L
movi spark_l,a9
movk 3,a11
jruc #strt
#lp dsj a10,#noani
#strt
move a11,a10
move *a9,a0,L
jrz #die ;noani
addk 32,a9
move *a8(OCTRL),a1
calla obj_aniq
#noani
SLEEPK 3
move *a8(OYVEL),a2,L
addi GRAV*4,a2
move a2,*a8(OYVEL),L
jruc #lp ;Going up?
#die
clr a0
move a0,*a8(OXVEL),L
move a0,*a8(OYVEL),L
move a0,*a8(OZVEL),L
jauc DELOBJDIE
#*****************************************************************************
*
* ROLL OVER AND BREAK YER STINKIN' NECK
SUBR dnk_break_neck2_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP
;Maybe put this z float in other neck2_anim seqs.
;FIX!
WL ANI_CODE,ckzpos
WLW ANI_SET_XVEL,-20000h,AM_HIT_REL
WL ANI_SET_YVEL,60000h
.word ANI_SETFACING ;ANI_XFLIP <- not primary anim
WL 15,D3FD3E+FR4
WL 3,D3FD3E+FR5
WL 3,D3FD3E+FR6
WL 3,D3FD3E+FR7
WL 3,D3FD3E+FR8
.word ANI_WAITHITGND
WL 4,D3FD3E+FR9
;hit. stay.
WL ANI_CODE,SMALL_BOUNCE
;Fix!!!???
;Based on flip, this offset is fucked up!
.word ANI_SETFACING ;ANI_XFLIP <- not primary anim
; .word ANI_OFFSET,-20,-3,0
.word ANI_ZEROVELS
.word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him!
WL 20,D3RC3A+FR9
.word ANI_WAITROLL
WL ANI_CHANGEANIM,dnk_faceup_getup_anim
; .word ANI_END
SUBR dnk_break_neck3_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP
WLW ANI_SET_XVEL,-20000h,AM_HIT_REL
WL ANI_SET_YVEL,58000h
WLW ANI_SET_ZVEL,18000h,AM_ABS
WL ANI_CODE,ckzpos
WL 15,D4POGO+FR4
.word ANI_WAITHITGND
WL ANI_CODE,HIT_THE_MAT
.word ANI_XFLIP
.word ANI_SETFACING ;ANI_XFLIP <- not primary anim
WL 3,D3FD3E+FR6
WL 3,D3FD3E+FR7
WL 3,D3FD3E+FR8
.word ANI_WAITHITGND
WL 4,D3FD3E+FR9
;hit. stay.
WL ANI_CODE,SMALL_BOUNCE
;Fix!!!???
;Based on flip, this offset is fucked up!
.word ANI_OFFSET,-20,-3,0
.word ANI_ZEROVELS
.word ANI_SETPLYRMODE,MODE_ONGROUND ;So we can stomp him!
WL 10,D3RC3A+FR9
.word ANI_WAITROLL
WL ANI_CHANGEANIM,dnk_faceup_getup_anim
; .word ANI_END
SUBR dnk_break_neck_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP
.word ANI_SETFACING ;ANI_XFLIP <- not primary anim
.word ANI_ZEROVELS
WWWL ANI_IFROPE,RC_FRONT,100,#fall_back
;plenty o' room. roll over
WL 4,D3FD3E+FR4
.word ANI_OFFSET,-7,0,0
WL 4,D3FD3E+FR5
.word ANI_OFFSET,-5,0,0
WL 4,D3FD3E+FR6
.word ANI_OFFSET,-2,0,0
WL 4,D3FD3E+FR7
.word ANI_OFFSET,-3,0,0
WL 4,D3FD3E+FR8
.word ANI_OFFSET,-22,0,0
; WL 4,D3FD3E+FR9
.word ANI_OFFSET,-25,0,0
;impact
WL ANI_CODE,SMALL_BOUNCE
WL 4,D3GS3X+FR8 ;10 ;Face down
.word ANI_SETPLYRMODE,MODE_ONGROUND
.word ANI_WAITROLL
WL ANI_CHANGEANIM,dnk_faceup_getup_anim
; .word ANI_END
#fall_back
;too close to the ropes. fall back
WL 7,D3FD3E+FR3
.word ANI_OFFSET,-12,0,0
WL 4,D3FD3E+FR2
.word ANI_OFFSET,-25,0,0
WL 4,D3UC3A+FR9
.word ANI_OFFSET,-1,0,0
WL 4,D3UC3A+FR10
WL 4,D3UC3A+FR11
.word ANI_OFFSET,-3,0,0
.word ANI_XFLIP
WL 4,D3SA3A+FR9
.word ANI_SETPLYRMODE,MODE_ONGROUND
.word ANI_WAITROLL
WL ANI_CHANGEANIM,dnk_faceup_getup_anim
; .word ANI_END
#******************************************************************************
SUBR dnk_2_hair_pickup_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP
.word ANI_ZEROVELS
.word ANI_SETSPEED,100h
.word ANI_STARTATTACK,AT_PUPPET,8
WL 2,D1TT5Z+FR2 ;2.5
WL 2,D1TT5Z+FR3 ;3.5
SUBR dnk_4_hair_pickup_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP ;uninterruptable
.word ANI_ZEROVELS
.word ANI_SETSPEED,100h
.word ANI_SETPLYRMODE,MODE_NORMAL
.WORD ANI_ADD_MOVE,MOVE_C_4,2,2
.word ANI_STARTATTACK,AT_PUPPET,8
WL 3,D3PP3A+FR1
LEAPATOPP 8,999,80,80,40000h,TGT_HEAD,46,6,-2
WL 4,D3PP3A+FR2
WL 4,D3PP3A+FR3
.word ANI_ZERO_XZVELS
;FIX!! on other guys!
;PUPPET2 MODE!
;If no getup time for other guy, do a miss!
.word ANI_ATTACK_ON, AMODE_PUPPET2,21,1,43,23 ;mode,x,y,w,h
WL 4,D3PP3A+FR3
.word ANI_ATTACK_OFF
WL ANI_IFNOTSTATUS,#missed
;got him
.word ANI_CLR_BUTCOUNT
WL ANI_CODE,clear_opp_counts
.word ANI_ATTACHZ,0,0,-4 ;x & y don't matter.
WL ANI_CODE,DO_NONO
.word ANI_SETOPPMODE,MODE_GHOST
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_OVERLAP|MODE_KEEPATTACHED
.word ANI_SOUND,98h ;neck break (5-7 ticks late)
WL ANI_CODE,CALL_SETUP
WWLLW ANI_SUPERSLAVE2,3,D3PP3A+FR5,#puppet_tbl,0
WWLLW ANI_SUPERSLAVE2,3,D3PP3A+FR6,#puppet_tbl,1
WWLLW ANI_SUPERSLAVE2,3,D3PP3A+FR7,#puppet_tbl,2
WWLLW ANI_SUPERSLAVE2,3,D3PP3A+FR8,#puppet_tbl,3
WWLLW ANI_SUPERSLAVE2,3,D3PP3A+FR9,#puppet_tbl,4
WWLLW ANI_SUPERSLAVE2,3,D4GH3A+FR8,#puppet_tbl,5
.word ANI_SETPLYRMODE,MODE_HEADHOLD
WL ANI_SLAVEANIM,#headheld_tbl
.word ANI_SETWORD,USR_VAR2,0
WL 1,D4GH3A+FR8
.word ANI_CLROPPMODE,MODE_GHOST
.word ANI_SETMODE,MODE_NORMAL
.word ANI_END
#missed
WL ANI_CODE,CALL_MISSES
WL 20,D3PP3A+FR3
WL 4,D3PP3A+FR2
WL 4,D3PP3A+FR1
.word ANI_FACEDOWN
.word ANI_SETMODE,MODE_NORMAL
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_END
SUBR ck_getup
move *a13(ANIMODE),a1
andni MODE_STATUS,a1
move a1,*a13(ANIMODE)
move *a13(WHOIHIT),a0,L
move *a0(GETUP_TIME),a0
jrz #misshim
move *a13(ANIMODE),a1
ori MODE_STATUS,a1
move a1,*a13(ANIMODE)
#misshim
rets
#headheld_tbl
.long hrt_3_head_held_anim
.long rzr_3_head_held_anim
.long und_3_head_held_anim
.long yok_3_head_held_anim
.long shn_3_head_held_anim
.long bam_3_head_held_anim
.long dnk_3_head_held_anim
.long 0
.long lex_3_head_held_anim
#puppet_tbl
.long #Bret
.long #Razor
.long #Taker
.long #Yokozuna
.long #Shawn
.long #BamBam
.long #Doink
.long #Adam
.long #Lex
#Bret
LWWW H3GU4A+FR1,37,-31,0
LWWW H3GU4A+FR2,49,-33,0
LWWW H3GU4A+FR3,63,-42,0
LWWW H3DU3A+FR3,58,-39,1
LWWW H3DU3A+FR4,60,-29,1
LWWW H3BF3A+FR1,53,-35,0
.long 0
#Razor
LWWW R3GU2A+FR3,41,-22,0
LWWW R3GU4A+FR3,52,-27,0
LWWW R3GU4A+FR4,54,-36,0
LWWW R3GU4A+FR5,59,-42,0
LWWW R3DU3B+FR2,53,-43,1
LWWW R3BF3A+FR1,53,-37,0
.long 0
#Taker
LWWW U3DU3B+FR2,42,-23,1
LWWW U3DU3B+FR5,53,-23,1
LWWW U3DU3B+FR6,59,-29,1
LWWW U3DU3B+FR8,49,-26,1
LWWW U3DU3B+FR10,59,-21,1
LWWW U4BF3Z+FR5,54,-16,0
.long 0
#Yokozuna
LWWW Y3GU2A+FR1,47,-17,0
LWWW Y3GU2A+FR2,57,-18,0
LWWW Y3GU2A+FR4,44,-25,0
LWWW Y3GU2A+FR7,44,-37,0
LWWW Y3GU2A+FR11,60,-30,0
LWWW Y3BF3A+FR1,57,-25,0
.long 0
#Shawn
LWWW S3GU2A+FR1,44,-25,0
LWWW S3GU4A+FR2,51,-25,0
LWWW S3GU4A+FR4,58,-36,0
LWWW S3GU4A+FR5,58,-35,0
LWWW S3GU4A+FR6,59,-30,0
LWWW S3BF3A+FR1,41,-36,0
.long 0
#BamBam
LWWW B3GU4A+FR3,49,-21,0
LWWW B3GU4A+FR4,57,-28,0
LWWW B3GU4A+FR5,64,-33,0
LWWW B3GU4A+FR8,60,-25,0
LWWW B3GU4A+FR9,60,-23,0
LWWW B3BF3C+FR5,59,-29,0
.long 0
#Doink
LWWW D3GU4A+FR2,50,-28,0
LWWW D3GU4A+FR3,56,-31,0
LWWW D3GU4A+FR4,57,-43,0
LWWW D3GU4A+FR5,52,-34,0
LWWW D3GU4A+FR7,68,-36,0
LWWW D3BF3A+FR2,55,-35,0
.long 0
#Adam
.long 0
#Lex
LWWW L3GU4A+FR1,50,-26,0
LWWW L3DU3A+FR4,42,-23,1
LWWW L3DU3A+FR6,49,-31,1
LWWW L3DU3A+FR7,55,-29,1
LWWW L3DU3A+FR9,64,-29,1
LWWW L3BF3B+FR5,57,-32,0
.long 0
#*****************************************************************************
*
* THROWN FROM RING (shn_bslm, shn_frnk)
SUBR dnk_flyout_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE
.word ANI_SETPLYRMODE,MODE_INAIR
.word ANI_SETSPEED,100h
.word ANI_SET_IDIOT
WWL ANI_SETLONG,OBJ_GRAVITY,0f000h
WL ANI_CODE,DO_WAIL
WL 8,D3OS3A+FR4
WL 8,D3OS3A+FR5
#cont WL 8,D3OS3A+FR6
.word ANI_OFFSET,0,45,0
WL 1,D3FD3E+FR2
.word ANI_WAITHITGND
WWL ANI_SETLONG,OBJ_GRAVITY,GRAVITY
WL ANI_CODE,HIT_THE_MAT
.word ANI_SHAKEALL,2
.word ANI_SHAKER,60
.word ANI_DAMAGE,D_HIPTOSS
; .word ANI_SETWORD,DELAY_METER,0
; .word ANI_GETUP,500
WL ANI_CHANGEANIM,dnk_hitonground_xflip_anim
SUBR dnk_flyout2_anim
.word ANI_SETMODE,MODE_UNINT|MODE_NOAUTOFLIP|MODE_NOCONFINE
.word ANI_SETPLYRMODE,MODE_INAIR
.word ANI_SETSPEED,100h
.word ANI_SET_IDIOT
WWL ANI_SETLONG,OBJ_GRAVITY,0E000h
WL ANI_CODE,DO_WAIL
WL ANI_GOTO,#cont
#******************************************************************************
SUBR dnk_4_taunt_anim
.word ANI_SETMODE,MODE_UNINT
.word ANI_ZEROVELS
.word ANI_SETSPEED,100h
.word ANI_SETPLYRMODE,MODE_NORMAL
.word ANI_SETFACING ;ANI_XFLIP <- not primary anim
.word ANI_SET_WRESTLER_XFLIP
WL 4,D4CO4A+FR1
WL 4,D4CO4A+FR2
WL 4,D4CO4A+FR3
WL 4,D4CO4A+FR4
WL 4,D4CO4A+FR5
WL 4,D4CO4A+FR6
WL 4,D4CO4A+FR5
WL 4,D4CO4A+FR4
WL 4,D4CO4A+FR3
WL 4,D4CO4A+FR4
WL 4,D4CO4A+FR5
WL 4,D4CO4A+FR6
WL 3,D4CO4A+FR5
WL 3,D4CO4A+FR4
WL 3,D4CO4A+FR3
WL 3,D4CO4A+FR2
WL 3,D4CO4A+FR1
; WL ANI_CODE,set_taunt_bit
.word ANI_FACEDOWN
.word ANI_SETMODE,MODE_NORMAL
.word ANI_SETPLYRMODE,MODE_NORMAL
WL ANI_CHANGEANIM,dnk_stand4_anim
; .word ANI_END
; SUBR set_taunt_bit
;;Successful taunt achieved!
;
; move *a13(STATUS_FLAGS),a14
; ori M_DID_TAUNT,a14
; move a14,*a13(STATUS_FLAGS)
; rets
#*****************************************************************************
*
* END OF BACK BROKEN SEQ.
SUBR dnk_backbroken_anim
.word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP
.word ANI_ZEROVELS
.word ANI_SETSPEED,100h
; .word ANI_DETACH
.word ANI_GRAVITY_OFF
WL 5,D3BK3Z+FR7
.word ANI_GRAVITY_ON
WL ANI_SET_YVEL,070000h
WLW ANI_SET_ZVEL,20000h,AM_ABS
WL 25,D3BK3Z+FR7
WL 4,D3BK3Z+FR6
; WL 4,D3UC3A+FR5
.word ANI_WAITHITGND
.word ANI_ZEROVELS
.word ANI_BOUNCE,2
.word ANI_XFLIP
WL ANI_CODE,HIT_THE_MAT
WL ANI_CODE,HIT_THE_MAT
WL ANI_CODE,HIT_THE_MAT
.word ANI_DEBRIS,100,1,0,8,0 ;%chance, tbl index, x,y,z off
WL 2,D3SA3A+FR2
WL 3,D3SA3A+FR3
WL 6,D3SA3A+FR4
WL 3,D3SA3A+FR5
WL 3,D3SA3A+FR7
WL 2,D3SA3A+FR8
WL 3,D3SA3A+FR9
.word ANI_SETPLYRMODE,MODE_ONGROUND
;No stars around head here...
.word ANI_DETACH
WL 5,D3SA3A+FR9
.word ANI_WAITROLL
WL ANI_CHANGEANIM,dnk_faceup_getup_anim
; .word ANI_END
;#*****************************************************************************
;*
;* CHAIR STUFF
;
; SUBR dnk_pkup_chair_anim
;
; .word ANI_SETMODE,MODE_UNINT | MODE_NOAUTOFLIP
; .word ANI_ZEROVELS
; .word ANI_SETSPEED,100h
;
;#lp
; WL 4,D4WA4A+FR1
; WL 4,D4WA4A+FR2
; WL 4,D4WA4A+FR3
;
; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR1,42,-10,1 ;image, x,y,zoff
; WL 4,D4WA4A+FR4
;
; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR1,42,0,1 ;image, x,y,zoff
; WL 4,D4WA4A+FR5
;
; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR2,48,37,1 ;image, x,y,zoff
; WL 4,D4WA4A+FR6
;
; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR3,48,90,1 ;image, x,y,zoff
; WL 4,D4WA4A+FR7
;
; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR4,19,124,1 ;image, x,y,zoff
; WL 4,D4WA4A+FR8
;
; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR4,-5,141,1 ;image, x,y,zoff
; WL 4,D4WA4A+FR10
;
;; .word ANI_SINGLESTEP
;
; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR6,-31,131,1 ;image, x,y,zoff
; WL 4,D3CS3Z+FR2
; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR6,-38,123,1 ;image, x,y,zoff
; WL 4,D3CS3Z+FR3
; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR7,9,130,1 ;image, x,y,zoff
; WL 4,D3CS3Z+FR4
; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR8,67,100,1 ;image, x,y,zoff
; WL 4,D3CS3Z+FR5
; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR9,77,46,1 ;image, x,y,zoff
; WL 4,D3CS3Z+FR6
; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR9,83,66,1 ;image, x,y,zoff
; WL 4,D3CS3Z+FR7
; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR7,3,140,1 ;image, x,y,zoff
; WL 4,D3CS3Z+FR8
; WLWWW ANI_ATTCHIMAGE2,CHAIR_SWING+FR6,-25,129,1 ;image, x,y,zoff
; WL 4,D3CS3Z+FR9
;
;; .word ANI_SINGLESTEP
; WLW ANI_ATTCHIMAGE,0,0
;
; WL ANI_GOTO,#lp
;
; SUBR CHAIR_SWING
; .long 0 ;0
; .long CHSWNG01 ;1
; .long CHSWNG02 ;2
; .long CHSWNG03 ;3
; .long CHSWNG04 ;4
; .long CHSWNG05 ;5
; .long CHSWNG06 ;6
; .long CHSWNG07 ;7
; .long CHSWNG08 ;8
; .long CHSWNG09 ;9
; .long CHSWNFL ;10
;
******************************************************************************
.end