2022-03-20 17:03:10 +00:00
|
|
|
public EXALICE_PHASE_NEXT
|
|
|
|
exalice_phase_next proc near
|
2020-04-11 14:33:22 +00:00
|
|
|
|
2022-03-20 17:03:10 +00:00
|
|
|
@@next_end_hp = word ptr 4
|
2022-03-18 19:12:35 +00:00
|
|
|
@@explosion_type = word ptr 6
|
2020-04-11 14:33:22 +00:00
|
|
|
|
|
|
|
push bp
|
|
|
|
mov bp, sp
|
|
|
|
push si
|
2022-03-18 19:12:35 +00:00
|
|
|
mov si, [bp+@@explosion_type]
|
2020-04-11 14:33:22 +00:00
|
|
|
cmp si, ET_NONE
|
|
|
|
jz short @@set
|
2022-03-06 22:16:48 +00:00
|
|
|
call @boss_explode_small$q16explosion_type_t pascal, si
|
2020-04-11 14:33:22 +00:00
|
|
|
cmp _boss_phase_timed_out, 0
|
|
|
|
jnz short @@set
|
[Reverse-engineering] [th04/th05] Bullets: Distinguish clear and zap mechanics
And actually document them correctly.
Clear: Custom duration, awards constant points per bullet during the
entire duration, plays a decay animation
Zap: Fixed duration, awards a semi-exponential bonus for all bullets
alive on the first frame, plays a, um, "zapping" animation… in
TH04, because it's bugged in TH05 :zunpet:
Part of P0149, funded by Blue Bolt, Ember2528, and -Tom-.
2021-07-24 19:25:25 +00:00
|
|
|
mov _bullet_zap_drop_point_items, 1
|
|
|
|
mov _bullet_zap_active, 1
|
2022-03-06 22:16:48 +00:00
|
|
|
call @boss_items_drop$qv
|
2020-04-11 14:33:22 +00:00
|
|
|
|
|
|
|
@@set:
|
|
|
|
mov _boss_phase_timed_out, 1
|
|
|
|
inc _boss_phase
|
|
|
|
mov _boss_phase_frame, 0
|
|
|
|
mov _boss_mode, 0
|
2022-04-22 22:12:20 +00:00
|
|
|
mov _boss_phase_state, 0
|
2020-04-11 14:33:22 +00:00
|
|
|
mov ax, _boss_phase_end_hp
|
|
|
|
mov _boss_hp, ax
|
2022-03-20 17:03:10 +00:00
|
|
|
mov ax, [bp+@@next_end_hp]
|
2020-04-11 14:33:22 +00:00
|
|
|
mov _boss_phase_end_hp, ax
|
|
|
|
pop si
|
|
|
|
pop bp
|
|
|
|
retn 4
|
2022-03-20 17:03:10 +00:00
|
|
|
exalice_phase_next endp
|