aboutsummaryrefslogtreecommitdiff
path: root/entity/penguin.gbasm
blob: 3b5858662c084ec94845d610c339aee3c2b9a8ff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
Penguin_Drop:
	PUSH DE
	LD E, $03
	CALL =Check_attack_already_learnt
	CP $01
	JR Z, =.drops.ep_regen_item

	.drops.attack_item:
	LD D, $6C
	LD E, $05
	CALL =RNG_Step
	AND $03
	CP $00
	CALL Z, =Spawn_object
	JR =.drops.end

	.drops.ep_regen_item:
	LD D, $68
	LD E, $03
	CALL =RNG_Step
	AND $03
	CP $00
	CALL Z, =Spawn_object

	.drops.end:
	POP DE
	RET

Penguin_Turn:
	LD A, $mem_map_loading_flags
	BIT 3, A
	RET Z

	PUSH HL
	PUSH BC
	PUSH DE
	INC HL
	LD A, (HL+)
	LD B, A
	LD A, (HL+)
	LD C, A
	LD A, (HL+)
	LD D, A

	.ENTITY_HEALTH_CHECK =.Skip_turn =Penguin_Drop
	.ENTITY_FREEZE_SHIVER =.Skip_turn
	.ENTITY_STATUS_SKIP_TURN =.Skip_turn

	.RESET_BLINKING_MODE

	LD A, $mem_moving_animation_step
	CP $00
	JR NZ, =.attack_end
	LD A, $mem_bunny_status
	CP $01
	JR Z, =.Run_away
	CP $04
	JR Z, =.Run_away

	.ENTITY_TRY_ATTACK =Freeze_sight_check =Freeze_Enemy_Attack =.attack_end
	CALL =Walking
	JR =.attack_end

	.Run_away:
	CALL =Walking_Away

	.attack_end:

	CALL =Entity_End_movement

	.Skip_Turn:
	LD A, L
	AND $f0
	LD L, A
	INC HL
	LD A, B
	LD (HL+), A
	LD A, C
	LD (HL+), A
	LD A, D
	LD (HL+), A
	POP DE
	POP BC
	POP HL
	RET