2020-04-11 14:33:22 +00:00
|
|
|
public EXALICE_PHASE_END
|
|
|
|
exalice_phase_end proc near
|
|
|
|
|
|
|
|
@@next_phase_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
|
|
|
|
call boss_explode_small pascal, si
|
|
|
|
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
|
2020-04-11 14:33:22 +00:00
|
|
|
call _boss_items_drop
|
|
|
|
|
|
|
|
@@set:
|
|
|
|
mov _boss_phase_timed_out, 1
|
|
|
|
inc _boss_phase
|
|
|
|
mov _boss_phase_frame, 0
|
|
|
|
mov _boss_mode, 0
|
|
|
|
mov _boss_mode_change, 0
|
|
|
|
mov ax, _boss_phase_end_hp
|
|
|
|
mov _boss_hp, ax
|
|
|
|
mov ax, [bp+@@next_phase_end_hp]
|
|
|
|
mov _boss_phase_end_hp, ax
|
|
|
|
pop si
|
|
|
|
pop bp
|
|
|
|
retn 4
|
|
|
|
exalice_phase_end endp
|