protocrystal

Sweet Honey / Honey Pot

There was going to be a "Honey Grandma" (mitsu-baasan) who gave you Sweet Honey collected by her Butterfree. You could spread this from your Honey Pot onto Headbutt trees, and shaking them with Headbutt a day or two later would guarantee a Heracross.

All that's left of it in the final ROM is text for the NPC in data/text/unused_sweet_honey.asm.

The p20430.txt changelog introduces the Honey Pot feature.

・みつのつぼを使ってみつを木にぬると、
次の日、木を揺らした時に、100%ヘラクロスとエンカウント
Using a honey pot to soak honey into a tree,
Encounter with 100% Heracross the next day when you rock the tree

The p20805.txt changelog replaces it with Sweet Scent.

●あまいかおりのフィールド効果が入りました。
●あまいみつ関連の仕様&イベントが削除されました。
● The field effect of Sweet Scent has been added.
● Sweet Honey related specifications & events have been deleted.

Some unidentified labels in pokecrystal have to do with Honey.

Disasm Name Original Name Disasm File Original File Details
ENGINE_0A EvBit_have_honey constants/engine_flags.asm EVENT.DMG
add_special UnusedCheckUnusedTwoDayTimer PRG_HoneyCheck data/special_pointers.asm EVENT.DMG
UnusedCheckUnusedTwoDayTimer HoneyCheck engine/events/specials.asm EVENT.DMG
SetUnusedTwoDayTimer EvTimeInit_Honey engine/overworld/time.asm TM_CHECK.DMG
CheckUnusedTwoDayTimer EvTimeCheck_Honey engine/overworld/time.asm TM_CHECK.DMG
wUnusedTwoDayTimerOn EvHoneyWork wram.asm EVENT.H This one label was used for seven bytes; their meanings are commented above HoneyPot.
ITEM_B3 179 constants/item_constants.asm EVENT.H "HONEY_POT" would be appropriate.
EVENT_03B FE_TUBOGET_r36_01 constants/event_constants.asm SCRIPT/SAVEFLAG.DEF Commented ";蜜の壷をもらった", "I got a Honey Pot"

This backed-up data in ITEM_GUI.DAT has the Honey Pot item description:


ItemGuide179$:		;みつのつぼ
	db	a_,ma_,bou@,i_,spc@,mi_,tu_,wo_,spc@,ta_,me_,ru_,spc@,tu_,bo_
	db	cr@
	db	mi_,tu_,no_,spc@,ni_,o_,i_,ga_,spc@,si_,mi_,tu_,i_,te_,i_,ru_
	db	EOM

"A pot for storing SWEET HONEY. It has an ingrained honey scent."

This commented code in USEITEM.DMG (after UseRod in engine/items/item_effects.asm) would have called the Honey Pot item effect.


;item_honey:
;	extern	HoneyPot
;	BCALL	G_BANK04,HoneyPot
;	ret

This dummied-out code in ITEMBOX.DMG (before FindItemInBallScript in engine/events/misc_scripts.asm) would have implemented the Honey Pot item effect. It also has a comment describing the meanings of the EvHoneyWork bytes.


  ifn	0

;=======================================================================;
;
;	どうぐ:ミツのつぼ
;
;-----------------------------------------------------------------------;
;EvHoneyWork
;	+ 0	: フラグ [Flag]
;		:	0:蜜を持っていない [0: do not have Honey]
;		:	1:蜜を持っている [1: do have Honey]
;	+ 1	: カウンタ [Counter]
;		:	0:時間切れ [Time out]
;		:	1:塗った次の日 [Next day after spreading]
;		:	2:塗ったその日 [The day of spreading]
;	+ 2	: チェック時間を保持する [Hold check time]
;	+ 3	: ゾーンナンバー [Zone number (aka "map group")]
;	+ 4	: マップナンバー [Map number]
;	+ 5	: X座標 [X coordinate]
;	+ 6	: Y座標 [Y coordinate]
;=======================================================================;
	public	EvHoneyWork

	public	HoneyPot

HoneyPot:
	call	HoneyPotUseCheck

	and	GET_MSG_MASK
	ld	(work_event),a
	ret


HoneyPotUseCheck:
	call	get_hero_site_atr
	push	de
	call	ShakeTreeAttrCheck
	pop	de
	jr	nz,failed$

	ld	hl,EvHoneyWork+0
	bit	0,(hl)
	jr	z,no_honey$

	res	0,(hl)
	inc	hl
	inc	hl
	inc	hl
	ld	a,(zone_no)
	ld	(hli),a
	ld	a,(mapno)
	ld	(hli),a
	ld	(hl),d
	inc	hl
	ld	(hl),e

	extern	EvTimeInit_Honey
	BCALL	G_BANK04,EvTimeInit_Honey

	ld	hl,HoneyEvent
	call	ReserveNowBankEvent
;	ld	a,<nowbank
;	ld	hl,HoneyEvent
;	call	reserve_event
	ld	a,END_SEQ + SUCCESS_RESULT
	ret

failed$:
	ld	a,END_SEQ + FAIL_MSG_RESULT
	ret

no_honey$:
	ld	hl,NoHoneyEvent
	call	ReserveNowBankEvent
;	ld	a,nowbank
;	ld	hl,NoHoneyEvent
;	call	reserve_event
	ld	a,END_SEQ+SUCCESS_RESULT
	ret




;-----------------------------------------------------
; スクリプト:ミツを塗るイベント
;-----------------------------------------------------
HoneyEvent:
	db	E_REWRITE_MAP
	db	E_ID_PROGRAM
	dw	PRG_pal_reset

	db	E_MSG
	dw	msg$

	db	E_SE
	dw	musfanfare

	db	E_AB_BTN_WAIT

	db	MSG_MODE_END
	db	E_END

msg$:
	db	D_MSG
	db	myname@,ha_,spc@,mi__,tu__,wo_
	db	home@
	db	ki_,no_,mi_,ki_,ni_,spc@,nu_,ttu_,ta_,gyoe@
	db	EOMeom
	
;-----------------------------------------------------
; スクリプト:ミツがなかったとき
;-----------------------------------------------------
NoHoneyEvent:
	db	E_REWRITE_MAP

	db	E_ID_PROGRAM
	dw	PRG_pal_reset

	db	E_MSG
	dw	msg$

	db	E_SE
	dw	musboboo

	db	E_AB_BTN_WAIT

	db	MSG_MODE_END
	db	E_END

msg$:
	db	D_MSG
	db	myname@,ha_
	db	home@
	db	mi__,tu__,wo_,spc@,ki_,ni_,spc@,nu_,ro_,u_,to_,si_,ta_,tenten2@
	db	normal@
	db	si_,ka_,si_,spc@,tu_,bo_,no_,spc@,na_,ka_,ha_
	db	home@
	db	ka_,ra_,ttu_,po_,spc@,da_,ttu_,ta_,gyoe@
	db	EOMeom

  endif

This partly dummied-out code in ITEMBOX.DMG (starting at UseHeadbuttText in engine/events/overworld.asm) would have made spread Sweet Honey affect Headbutt trees.


;-----------------------------------------------------------------------;
; 
;-----------------------------------------------------------------------;

	extern	GetLimitedRandom
	extern	EvTimeCheck_Honey
	extern	rnd





;-----------------------------------------------------------------------;
;-----------------------------------------------------------------------;
ShakeTree_msg_001:
	extern	ShakeTree_msg_001_026_Itembox
	db	I_MSG2
	dw	ShakeTree_msg_001_026_Itembox
	db	I_MSG2BNK1	;{mv_msgツール挿入 バンク#}
	db	EOM	;{mv_msgツール挿入}



ShakeTree_msg_002:
	extern	ShakeTree_msg_002_027_Itembox
	db	I_MSG2
	dw	ShakeTree_msg_002_027_Itembox
	db	I_MSG2BNK1	;{mv_msgツール挿入 バンク#}
	db	EOM	;{mv_msgツール挿入}





;-----------------------------------------------------------------------;
; 木を揺らすイベント
;-----------------------------------------------------------------------;
ShakeEncountEvent:
	db	E_REWRITE_MAP

	db	E_ID_PROGRAM
	dw	PRG_pal_reset

ShakeEncountEventMain:
	db	E_PROGRAM
	db	nowbank
	dw	GetTheCapsuleName

	db	E_MSG
	dw	ShakeTree_msg_001

	db	E_REWRITE_MAP

	db	E_PROGRAM
	db	G_BANK23
	dw	TreeShakeEffect


	db	E_PROGRAM
	db	G_BANK2e
	dw	ShakeTreeEncCheck

	db	IF_ZERO_JUMP
	dw	NotEncount$

	db	MSG_MODE_END

	db	E_ENCOUNT_FIGHT		;990802 by tama
	db	E_GO_FIGHT
	db	E_AFTER_FIGHT

	db	E_END

NotEncount$:
	db	E_MSG
	dw	ShakeTree_msg_002
	db	E_AB_BTN_WAIT

	db	MSG_MODE_END

	db	E_END



;-----------------------------------------------------------------------;
; 揺らせる木に話しかけたとき
;-----------------------------------------------------------------------;
	public	TalkToShakeTree

TalkToShakeTree:
	ld	d,029			; ずつきのわざナンバー
	call	HidenWazaSearch
	jr	c,no_zutsuki$

	ld	a,<nowbank
	ld	hl,TreeShakeCallScript
	call	SetEventDirect
	scf
	ret
	
no_zutsuki$:
	xor	a
	ret


  ifn	0
; ずつきを持っていないときは反応しなくしたので
; このスクリプトは不要になった。
	ld	a,<nowbank
	ld	hl,TreeShakeCommentScript
	call	SetEventDirect
	scf
	ret

TreeShakeCommentScript:
	db	MSG_MODE_START
	db	E_PROGRAM
	db	nowbank
	dw	HoneyTreeCheck
	db	E_MSG
	dw	msg$
	db	E_AB_BTN_WAIT
	db	MSG_MODE_END
	db	E_END
msg$:
	db	D_MSG
	db	yu_,ra_,se_,ba_,spc@,poke@,ga_
	db	home@
	db	de_,te_,ku_,ru_,spc@,ka_,mo_,tenten2@
	db	EOMeom
  endif



;---------------------------------------------------;
; ずつきで木を揺らした時のイベントスクリプト
;---------------------------------------------------;
TreeShakeCallScript:
	db	MSG_MODE_START

  ifn	0
	db	E_PROGRAM
	db	nowbank
	dw	HoneyTreeCheck
  endif

	db	E_MSG
	dw	ask_msg$
	db	E_YESNO
	db	IF_N_ZERO_JUMP
	dw	ShakeEncountEventMain

	db	MSG_MODE_END
	db	E_END

ask_msg$:
	extern	ask_msg_028_Itembox
	db	I_MSG2
	dw	ask_msg_028_Itembox
	db	I_MSG2BNK1	;{mv_msgツール挿入 バンク#}
	db	EOM	;{mv_msgツール挿入}



  ifn	0
;---------------------------------------------------;
; ミツを塗っていた場合、それに応じてMSG表示
;---------------------------------------------------;
HoneyTreeCheck:
	call	HoneyPosCheck
	ret	nz

	BCALL	G_BANK04,EvTimeCheck_Honey
	ld	a,(EvHoneyWork + 1)
	and	a
	ret	z				; → 2日以上経過

	ld	hl,msg2$
	cp	1				; → 塗った翌日
	jr	z,put$

	cp	2
	ret	nz

	ld	hl,msg1$			; → 塗った当日
put$:
	call	push_win_msg
	ret
msg1$:
	db	D_MSG
	db	ko_,ko_,ni_,ha_,spc@,ki_,yyo_,u_,spc@,mi__,tu__,wo_
	db	home@
	db	nu_,ttu_,ta_,zo_,gyoe@
	db	EOMwaiteom
msg2$:
	db	D_MSG
	db	ko_,no_,ki_,ni_,ha_,spc@,ki_,no_,u_,spc@,mi__,tu__,wo_
	db	home@
	db	nu_,ttu_,ta_,zo_,gyoe@
	db	EOMwaiteom


;---------------------------------------------------;
; Out	: Zero Flg ON	自機の目の前がミツを塗った場所
;---------------------------------------------------;
HoneyPosCheck:
	ld	hl,EvHoneyWork + 3
	ld	a,(zone_no)
	cp	(hl)
	ret	nz

	inc	hl
	ld	a,(mapno)
	cp	(hl)
	ret	nz

	call	get_hero_site_atr
	ld	a,(EvHoneyWork + 5)
	cp	d
	ret	nz
	ld	a,(EvHoneyWork + 6)
	cp	e
	ret

  endif

This dummied-out code in ITEMBOX.DMG (before GetTreeMon in engine/events/treemons.asm) would have made the Honey Pot affect the encounter tables of Headbutt trees. (NormalEncChk is pokecrystal's GetTreeMon.)


;---------------------------------------------------;
; ミツのチェック、エンカウント率のチェック、
; エンカウントポケモンのナンバー・レベルの取得
; Out	: Carry ON	エンカウントした
;	: event_fight_no
;	: mons_level
;---------------------------------------------------;
	public	ShakeEncRateCheck

ShakeEncRateCheck:
  ifn	0
	push	hl
	BCALL	G_BANK03,HoneyPosCheck
	pop	hl
	jr	nz,NormalEncChk

	push	hl
	BCALL	G_BANK04,EvTimeCheck_Honey
	pop	hl
	ld	a,(EvHoneyWork + 1)
	cp	1
	jr	z,NormalEncChk

	jr	PassTableSelEncMons
  endif

NormalEncChk:
	push	hl
	call	CalcID_XY
	pop	hl
	and	a
	jr	z,hazure$
;	jr	z,no_encount
	cp	1
	jr	z,hit$
;	jr	z,SelectEncMons
	cp	2
	jr	z,big_hit$
;	jr	z,PassTableSelEncMons

	ret
hazure$:			; 1/10
	ld	a,10
	call	GetLimitedRandom
	and	a
	jr	nz,no_encount
	jr	SelectEncMons
hit$:				; 5/10
	ld	a,10
	call	GetLimitedRandom
	cp	5
	jr	nc,no_encount
	jr	SelectEncMons
big_hit$:			; 8/10
	ld	a,10
	call	GetLimitedRandom
	cp	8
	jr	nc,no_encount
	jr	PassTableSelEncMons

This debug script in D_EVENT.DMG (after db 0 ; unused in engine/events/mom_phone.asm) would have given the player a Honey Pot.


  ifn	0
TestEvAddHoneyPot:
	db	MSG_MODE_START

	db	E_CHECK_ITEM
	db	179

	db	IF_N_ZERO_JUMP
	dw	end$

	db	E_ADD_ITEM
	db	179
	db	1

	db	E_SE
	dw	musfanfare4

	db	E_MSG
	dw	msg$

	db	E_WAIT_COUNT
	db	60

	db	E_AB_BTN_WAIT

	db	E_ADD_ITEM_MSG

end$:
	db	E_SET_SYS_FLAG
	dw	EvBit_have_honey

	db	MSG_MODE_END

	db	E_END
msg$:
	db	D_MSG
	db	mi__,tu__,no_,tu_,bo_,wo_,spc@,mo_,ra_,ttu_,ta_,gyoe@
	db 	EOMeom
  endif

And this debug script in D_EVENT.DMG would have had the Honey Grandma put Sweet Honey in the Honey Pot:


  ifn	0
TestEvHoneyGran_mum:
	db	MSG_MODE_START

	db	E_MSG
	dw	msg_x_01

	db	E_AB_BTN_WAIT

	db	E_CHECK_ITEM
	db	179			; みつのつぼを持っている?
	db	IF_ZERO_JUMP
	dw	ev_x_06

	db	E_CHECK_SYS_FLAG
	dw	EvBit_have_honey	; みつがある?
	db	IF_N_ZERO_JUMP
	dw	ev_x_07

	db	E_ID_PROGRAM
	dw	PRG_HoneyCheck		; ミツの効果が持続している?
	db	IF_JUMP
	db	1
	dw	ev_x_08
	db	IF_JUMP
	db	2
	dw	ev_x_04

	db	E_MSG
	dw	msg_x_02
	db	E_SET_SYS_FLAG
	dw	EvBit_have_honey	; ミツをもらった!
	db	E_SE
	dw	musfanfare4
	db	E_MSG
	dw	msg_x_03
	db	E_WAIT_COUNT
	db	60
	db	E_AB_BTN_WAIT
	db	MSG_MODE_END

	db	E_END

ev_x_04:
	db	E_MSG
	dw	msg_x_04
	db	E_AB_BTN_WAIT
	db	MSG_MODE_END
	db	E_END
ev_x_06:
	db	E_MSG
	dw	msg_x_06
	db	E_AB_BTN_WAIT
	db	MSG_MODE_END
	db	E_END
ev_x_07:
	db	E_MSG
	dw	msg_x_07
	db	E_AB_BTN_WAIT
	db	MSG_MODE_END
	db	E_END
ev_x_08:
	db	E_MSG
	dw	msg_x_08
	db	E_AB_BTN_WAIT
	db	MSG_MODE_END
	db	E_END
msg_x_01:
	db	D_MSG
	db	wa_,ta_,si_,ha_,spc@,mi__,tu__,ba_,a_,sa_,n_,gyoe@
	db	EOMeom
msg_x_02:
	db	D_MSG
	db	mi__,tu__,wo_,spc@,tu_,ka_,ttu_,te_,mi_,ta_,ne_,hate@
	db	home@
	db	me_,zu_,ra_,si_,i_,spc@,poke@,mi_,tu_,ka_,ttu_,ta_,hate@
	db	normal@
	db	ma_,ta_,spc@,wa_,ke_,te_,spc@,a_,ge_,yo_,u_,gyoe@
	db	EOMwaiteom
msg_x_03:
	db	D_MSG
	db	mi__,tu__,wo_,spc@,wa_,ke_,te_,mo_,ra_,ttu_,ta_,gyoe@
	db	EOMeom
msg_x_04:
	db	D_MSG
	db	mi__,tu__,wo_,spc@,tu_,ka_,ttu_,te_,spc@,mi_,ta_,ka_,i_,hate@
	db	home@
	db	a_,si_,ta_,ga_,spc@,ta_,no_,si_,mi_,da_,ne_,gyoe@
	db	EOMeom
msg_x_05:
msg_x_06:
	db	D_MSG
	db	tu_,bo_,wo_,spc@,mo_,ttu_,te_,na_,i_,ne_,tenten2@
	db	home@
	db	o_,to_,to_,i_,ki_,na_,gyoe@
	db	EOMeom
msg_x_07:
	db	D_MSG
	db	so_,no_,spc@,mi_,tu_,wo_,spc@,mi_,ti_,ba_,ta_,no_,spc@,ki_,ni_
	db	home@
	db	nu_,ttu_,te_,mi_,te_,go_,ra_,n_,gyoe@
	db	EOMeom
msg_x_08:
	db	D_MSG
	db	mi__,tu__,wo_,spc@,tu_,ka_,ttu_,ta_,ba_,si_,yyo_,ni_
	db	home@
	db	i_,ttu_,te_,mi_,ta_,ka_,i_,hate@
	db	EOMeom
  endif