aboutsummaryrefslogtreecommitdiff
path: root/entity/questgoal.gbasm
blob: 8903e28d8b0614b6864f643d77bbff530d1da634 (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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
Open_Dialogue:
	LD A, L
	AND $f0
	LD L, A

	INC HL

	LD A, $mem_bunny_x
	CP (HL)
	JR Z, =.Vertical_check

	.Horizontal_check:
		INC A
		CP (HL)
		JR Z, =.Left
		.Right:
			INC HL
			INC HL
			LD (HL), $enum_direction_right
			JR =.Check_end
		.Left:
			INC HL
			INC HL
			LD (HL), $enum_direction_left
			JR =.Check_end
	.Vertical_check:
		INC HL
		LD A, $mem_bunny_y
		INC A
		CP (HL)
		JR Z, =.Up
		.Down:
			INC HL
			LD (HL), $enum_direction_down
			JR =.Check_end
		.Up:
			INC HL
			LD (HL), $enum_direction_up
			JR =.Check_end
	.Check_end:
	LD A, (HL)
	SWAP A
	OR (HL)
	LD (HL), A

	LD A, L
	AND $f0
	OR $0b
	LD L, A

	LD A, (HL+)
	DBG
	LD $mem_dialogue_script_bank, A
	LD A, (HL+)
	DBG
	LD ($mem_dialogue_script_program_counter), A
	LD A, (HL)
	DBG
	LD ($mem_dialogue_script_program_counter+1), A
	CALL =Dialogue_script_step

	LD A, $00
	LD $mem_bunny_animation, A

	LD A, $enum_dungeon_dialogue_mode
	LD $mem_requested_mode, A
	RET

QuestGoal_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

	.Start_action_or_movement:
		LD A, $mem_moving_animation_step
		CP $00
		JP NZ, =.Start_action_or_movement.end

		.Try_Walking:

		CALL =RNG_Step
		BIT 0, A
		JR Z, =.Start_action_or_movement.end

		CALL =Walking.Random_walker
	.Start_action_or_movement.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

Static_Human_Turn:
	LD A, $mem_current_mode
	CP $enum_dungeon_mode
	RET NZ
	LD A, $mem_requested_mode
	CP $enum_dungeon_mode
	RET NZ

	INC HL
	INC HL
	INC HL

	LD (HL), $11

	DEC HL
	DEC HL
	DEC HL
	RET