Skip to content

NPCs Give Pokemon Box RS Gift Eggs

judicornadamsfoster edited this page May 29, 2026 · 1 revision

Have you ever wanted to receive the eggs from Pokemon Box RS but don't have a Gamecube or don't want to store all those Pokemon just to get an egg?

These scripts add 4 NPCs that will each give 1 of a Zigzagoon with ExtremeSpeed, Skitty with Pay Day, Swablu with False Swipe and Pichu with Surf. For fun, there is also an additional NPC and a joke reason for giving the eggs.

I chose to have Surfing Pichu seperate in a different location but you can always add it to the same map if you choose.

This guide can be added to or changed to give any Pokemon as an egg with any move in a chosen slot.

This uses 3 unused VARS as well as the VAR_GIFT_PICHU_SLOT:

VAR_GIFT_UNUSED_1                                0x40DE // Var is written to, but never read //swablu
VAR_GIFT_UNUSED_2                                0x40DF // Var is written to, but never read //zigzagoon
VAR_GIFT_UNUSED_3                                0x40E0 // Var is written to, but never read //skitty

First, choose 4 unused flags and name them (my chosen flags are below):

#define FLAG_FALSE_SWIPE_SWABLU              0x1E1 // Unused Flag
#define FLAG_EXTREME_SPEED_ZIGZAGOON         0x1E2 // Unused Flag
#define FLAG_PAY_DAY_SKITTY                  0x1E3 // Unused Flag
#define FLAG_SURF_PICHU_EGG                  0x4F // Unused Flag

Swablu / Zigzagoon / Skitty

In a map script or somewhere you store your scripts, copy and paste all the below:

//swablu
EventScript_BoxRSGiftEgg_Cousin1::
	lock
	faceplayer
	goto_if_set FLAG_FALSE_SWIPE_SWABLU, EventScript_BoxRSGiftEgg_DontHaveAny
	msgbox Text_BoxRSGiftEgg_Ask, MSGBOX_YESNO
	goto_if_eq VAR_RESULT, NO, EventScript_BoxRSGiftEgg_No
	goto EventScript_BoxRSGiftEgg_GiveIfPossible_Swablu
	release
	end

//zigzagoon
EventScript_BoxRSGiftEgg_Cousin2::
	lock
	faceplayer
	goto_if_set FLAG_EXTREME_SPEED_ZIGZAGOON, EventScript_BoxRSGiftEgg_DontHaveAny
	msgbox Text_BoxRSGiftEgg_Ask, MSGBOX_YESNO
	goto_if_eq VAR_RESULT, NO, EventScript_BoxRSGiftEgg_No
	goto EventScript_BoxRSGiftEgg_GiveIfPossible_Zigzagoon
	release
	end

//skitty
EventScript_BoxRSGiftEgg_Cousin3::
	lock
	faceplayer
	goto_if_set FLAG_PAY_DAY_SKITTY, EventScript_BoxRSGiftEgg_DontHaveAny
	msgbox Text_BoxRSGiftEgg_Ask, MSGBOX_YESNO
	goto_if_eq VAR_RESULT, NO, EventScript_BoxRSGiftEgg_No
	goto EventScript_BoxRSGiftEgg_GiveIfPossible_Skitty
	release
	end

EventScript_BoxRSGiftEgg_No::
	msgbox Text_BoxRSGiftEgg_No MSGBOX_DEFAULT
	release
	end


EventScript_BoxRSGiftEgg_GiveIfPossible_Swablu:
	specialvar VAR_GIFT_UNUSED_1, CalculatePlayerPartyCount
	goto_if_eq VAR_GIFT_UNUSED_1, PARTY_SIZE, EventScript_BoxRSGiftEgg_FullParty
	call EventScript_BoxRSGiftEgg_GiveSwabluEgg
	goto EventScript_BoxRSGiftEgg_ReceivedEgg

EventScript_BoxRSGiftEgg_GiveIfPossible_Zigzagoon:
	specialvar VAR_GIFT_UNUSED_2, CalculatePlayerPartyCount
	goto_if_eq VAR_GIFT_UNUSED_2, PARTY_SIZE, EventScript_BoxRSGiftEgg_FullParty
	call EventScript_BoxRSGiftEgg_GiveZigzagoonEgg
	goto EventScript_BoxRSGiftEgg_ReceivedEgg

EventScript_BoxRSGiftEgg_GiveIfPossible_Skitty:
	specialvar VAR_GIFT_UNUSED_3, CalculatePlayerPartyCount
	goto_if_eq VAR_GIFT_UNUSED_3, PARTY_SIZE, EventScript_BoxRSGiftEgg_FullParty
	call EventScript_BoxRSGiftEgg_GiveSkittyEgg
	goto EventScript_BoxRSGiftEgg_ReceivedEgg

EventScript_BoxRSGiftEgg_FullParty:
	msgbox Text_BoxRSGiftEgg_FullParty, MSGBOX_DEFAULT
	waitmessage
	waitbuttonpress
	release
	end

EventScript_BoxRSGiftEgg_DontHaveAny:
	msgbox Text_BoxRSGiftEgg_DontHaveAny, MSGBOX_DEFAULT
	release
	end

EventScript_BoxRSGiftEgg_ReceivedEgg:
	lock
	faceplayer
	msgbox Text_BoxRSGiftEgg_ReceiveEgg, MSGBOX_DEFAULT
	waitmessage
	playfanfare MUS_OBTAIN_ITEM
	waitfanfare
	msgbox Text_BoxRSGiftEgg_LookAfterEgg, MSGBOX_DEFAULT
	release
	end

EventScript_BoxRSGiftEgg_GiveSwabluEgg:
	giveegg SPECIES_SWABLU
	call_if_eq VAR_GIFT_UNUSED_1, 1, FalseSwipeSwablu_Slot1
	call_if_eq VAR_GIFT_UNUSED_1, 2, FalseSwipeSwablu_Slot2
	call_if_eq VAR_GIFT_UNUSED_1, 3, FalseSwipeSwablu_Slot3
	call_if_eq VAR_GIFT_UNUSED_1, 4, FalseSwipeSwablu_Slot4
	call_if_eq VAR_GIFT_UNUSED_1, 5, FalseSwipeSwablu_Slot5
	setflag FLAG_FALSE_SWIPE_SWABLU
	return

EventScript_BoxRSGiftEgg_GiveZigzagoonEgg:
	giveegg SPECIES_ZIGZAGOON
	call_if_eq VAR_GIFT_UNUSED_2, 1, ExtremeSpeedZigzagoon_Slot1
	call_if_eq VAR_GIFT_UNUSED_2, 2, ExtremeSpeedZigzagoon_Slot2
	call_if_eq VAR_GIFT_UNUSED_2, 3, ExtremeSpeedZigzagoon_Slot3
	call_if_eq VAR_GIFT_UNUSED_2, 4, ExtremeSpeedZigzagoon_Slot4
	call_if_eq VAR_GIFT_UNUSED_2, 5, ExtremeSpeedZigzagoon_Slot5
	setflag FLAG_EXTREME_SPEED_ZIGZAGOON
	return

EventScript_BoxRSGiftEgg_GiveSkittyEgg:
	giveegg SPECIES_SKITTY
	call_if_eq VAR_GIFT_UNUSED_3, 1, PayDaySkitty_Slot1
	call_if_eq VAR_GIFT_UNUSED_3, 2, PayDaySkitty_Slot2
	call_if_eq VAR_GIFT_UNUSED_3, 3, PayDaySkitty_Slot3
	call_if_eq VAR_GIFT_UNUSED_3, 4, PayDaySkitty_Slot4
	call_if_eq VAR_GIFT_UNUSED_3, 5, PayDaySkitty_Slot5
	setflag FLAG_PAY_DAY_SKITTY
	return

FalseSwipeSwablu_Slot1:
	setmonmove 1, 1, MOVE_PECK
	setmonmove 1, 2, MOVE_GROWL
	setmonmove 1, 3, MOVE_FALSE_SWIPE
	return

FalseSwipeSwablu_Slot2::
	setmonmove 2, 1, MOVE_PECK
	setmonmove 2, 2, MOVE_GROWL
	setmonmove 2, 3, MOVE_FALSE_SWIPE
	return

FalseSwipeSwablu_Slot3:
	setmonmove 3, 1, MOVE_PECK
	setmonmove 3, 2, MOVE_GROWL
	setmonmove 3, 3, MOVE_FALSE_SWIPE
	return

FalseSwipeSwablu_Slot4:
	setmonmove 4, 1, MOVE_PECK
	setmonmove 4, 2, MOVE_GROWL
	setmonmove 4, 3, MOVE_FALSE_SWIPE
	return

FalseSwipeSwablu_Slot5:
	setmonmove 5, 1, MOVE_PECK
	setmonmove 5, 2, MOVE_GROWL
	setmonmove 5, 3, MOVE_FALSE_SWIPE
	return

ExtremeSpeedZigzagoon_Slot1:
	setmonmove 1, 1, MOVE_TACKLE
	setmonmove 1, 2, MOVE_GROWL
	setmonmove 1, 3, MOVE_TAIL_WHIP
	setmonmove 1, 4, MOVE_EXTREME_SPEED
	return

ExtremeSpeedZigzagoon_Slot2::
	setmonmove 2, 1, MOVE_TACKLE
	setmonmove 2, 2, MOVE_GROWL
	setmonmove 2, 3, MOVE_TAIL_WHIP
	setmonmove 2, 4, MOVE_EXTREME_SPEED
	return

ExtremeSpeedZigzagoon_Slot3:
	setmonmove 3, 1, MOVE_TACKLE
	setmonmove 3, 2, MOVE_GROWL
	setmonmove 3, 3, MOVE_TAIL_WHIP
	setmonmove 3, 4, MOVE_EXTREME_SPEED
	return

ExtremeSpeedZigzagoon_Slot4:
	setmonmove 4, 1, MOVE_TACKLE
	setmonmove 4, 2, MOVE_GROWL
	setmonmove 4, 3, MOVE_TAIL_WHIP
	setmonmove 4, 4, MOVE_EXTREME_SPEED
	return

ExtremeSpeedZigzagoon_Slot5:
	setmonmove 5, 1, MOVE_TACKLE
	setmonmove 5, 2, MOVE_GROWL
	setmonmove 5, 3, MOVE_TAIL_WHIP
	setmonmove 5, 4, MOVE_EXTREME_SPEED
	return

PayDaySkitty_Slot1:
	setmonmove 1, 1, MOVE_TACKLE
	setmonmove 1, 2, MOVE_GROWL
	setmonmove 1, 3, MOVE_TAIL_WHIP
	setmonmove 1, 4, MOVE_PAY_DAY
	return

PayDaySkitty_Slot2::
	setmonmove 2, 1, MOVE_TACKLE
	setmonmove 2, 2, MOVE_GROWL
	setmonmove 2, 3, MOVE_TAIL_WHIP
	setmonmove 2, 4, MOVE_PAY_DAY
	return

PayDaySkitty_Slot3:
	setmonmove 3, 1, MOVE_TACKLE
	setmonmove 3, 2, MOVE_GROWL
	setmonmove 3, 3, MOVE_TAIL_WHIP
	setmonmove 3, 4, MOVE_PAY_DAY
	return

PayDaySkitty_Slot4:
	setmonmove 4, 1, MOVE_TACKLE
	setmonmove 4, 2, MOVE_GROWL
	setmonmove 4, 3, MOVE_TAIL_WHIP
	setmonmove 4, 4, MOVE_PAY_DAY
	return

PayDaySkitty_Slot5:
	setmonmove 5, 1, MOVE_TACKLE
	setmonmove 5, 2, MOVE_GROWL
	setmonmove 5, 3, MOVE_TAIL_WHIP
	setmonmove 5, 4, MOVE_PAY_DAY
	return


Text_BoxRSGiftEgg_Ask:
	.string "I'm one of three cousins.\p"
	.string "Our uncle was breeding POKéMON to\n"
	.string "make the best competitive fighter.\p"
	.string "He gave us any extra EGGS that he\n"
	.string "doesn't need.\p"
	.string "Would you take one?$"

Text_BoxRSGiftEgg_No:
	.string "Aww, OK then…\p"
	.string "If you change your mind, let me know.$"

Text_BoxRSGiftEgg_ReceiveEgg:
	.string "{PLAYER} received the EGG.$"

Text_BoxRSGiftEgg_FullParty:
	.string "Oh, your party appears to be full.\p"
	.string "Maybe you could store one of your\n"
	.string "POKéMON in your PC.$"

Text_BoxRSGiftEgg_LookAfterEgg:
	.string "Please raise it with love.\p"
	.string "You should speak to my other cousins\n"
	.string "to see if they still have their EGGS.$"

Text_BoxRSGiftEgg_DontHaveAny:
	.string "I don't have any more EGGS.\p"
	.string "You should speak to my other cousins\n"
	.string "to see if they still have their EGGS.$"

//uncle
EventScript_BoxRSGiftEgg_Uncle::
	lock
	faceplayer
	msgbox Text_BoxRSGiftEgg_Uncle1, MSGBOX_DEFAULT
	waitmessage
	showmonpic SPECIES_FARFETCHD, 10, 3
	waitbuttonpress
	hidemonpic
	msgbox Text_BoxRSGiftEgg_Uncle2, MSGBOX_DEFAULT
	release
	end

Text_BoxRSGiftEgg_Uncle1:
	.string "I've been breeding POKéMON to make\n"
	.string "the strongest and best competitive\l"
	.string "fighter for taking on the ELITE FOUR.\p"
	.string "Want to see it?$"

Text_BoxRSGiftEgg_Uncle2:
	.string "...\p"
	.string "You mean FARFETCH'D ISN'T that stong?\p"
	.string "Guess I better start again...$"

Finally, in your chosen map, add 4 objects using characters of your choice.

Set 3 of them to EventScript_BoxRSGiftEgg_Cousin1, EventScript_BoxRSGiftEgg_Cousin2 and EventScript_BoxRSGiftEgg_Cousin3 and the final 1 to EventScript_BoxRSGiftEgg_Uncle


Surfing Pichu Egg

In your chosen map (or where you store your custom scripts), copy and paste the below:


EventScript_SurfPichuStart::
	goto_if_set FLAG_SURF_PICHU_EGG, EventScript_SurfPichu_AlreadyGiven
	goto_if_unset FLAG_SURF_PICHU_EGG, EventScript_SurfPichu_Ask

EventScript_SurfPichu_AlreadyGiven::
	msgbox Text_SurfPichu_AlreadyGiven, MSGBOX_DEFAULT
	release
	end
	
EventScript_SurfPichu_Ask::
	lock
	faceplayer
	msgbox Text_SurfPichu_Start, MSGBOX_DEFAULT
	msgbox Text_SurfPichu_Ask, MSGBOX_YESNO
	goto_if_eq VAR_RESULT, NO, EventScript_SurfPichu_No
	goto EventScript_SurfPichu_Call
	release
	end

EventScript_SurfPichu_No::
	msgbox Text_SurfPichu_No MSGBOX_DEFAULT
	release
	end
	
EventScript_SurfPichu_Call::
	setflag FLAG_SURF_PICHU_EGG
	call MysteryGiftScript_SurfPichu
	end	

Text_SurfPichu_AlreadyGiven:
	.string "How's the POKéMON EGG I gave you?$"

Text_SurfPichu_Start:
	.string "My parents got this EGG after leaving\n"
	.string "their PIKACHU at the DAYCARE CENTER,\l"
	.string "but they aren't able to raise any\l"
	.string "more POKéMON.$"

Text_SurfPichu_Ask:
	.string "Would you like it?$"

Text_SurfPichu_No:
	.string "Aww, OK then…$"

In data/scripts/gift_pichu.inc, replace the scripts there with the below:

MysteryGiftScript_SurfPichu::
	setvaddress MysteryGiftScript_SurfPichu
	vgoto_if_unset FLAG_MYSTERY_GIFT_DONE, SurfPichu_GiveIfPossible
	returnram

SurfPichu_GiveIfPossible:
	specialvar VAR_GIFT_PICHU_SLOT, CalculatePlayerPartyCount
	vgoto_if_eq VAR_GIFT_PICHU_SLOT, PARTY_SIZE, SurfPichu_FullParty
	setflag FLAG_MYSTERY_GIFT_DONE
	vcall SurfPichu_GiveEgg
	lock
	faceplayer
	vmessage sText_MysteryGiftEgg
	waitmessage
	playfanfare MUS_OBTAIN_ITEM
	waitfanfare
	vmessage sText_LookAfterEgg
	waitmessage
	waitbuttonpress
	release
	end

SurfPichu_FullParty:
	lock
	faceplayer
	vmessage sText_FullParty
	waitmessage
	waitbuttonpress
	release
	end

SurfPichu_GiveEgg:
	giveegg SPECIES_PICHU
	setmodernfatefulencounter VAR_GIFT_PICHU_SLOT
	setmonmetlocation VAR_GIFT_PICHU_SLOT, METLOC_FATEFUL_ENCOUNTER
	vgoto_if_eq VAR_GIFT_PICHU_SLOT, 1, SurfPichu_Slot1
	vgoto_if_eq VAR_GIFT_PICHU_SLOT, 2, SurfPichu_Slot2
	vgoto_if_eq VAR_GIFT_PICHU_SLOT, 3, SurfPichu_Slot3
	vgoto_if_eq VAR_GIFT_PICHU_SLOT, 4, SurfPichu_Slot4
	vgoto_if_eq VAR_GIFT_PICHU_SLOT, 5, SurfPichu_Slot5
	return

SurfPichu_Slot1:
	setmonmove 1, 1, MOVE_THUNDER_SHOCK
	setmonmove 1, 2, MOVE_CHARM
	setmonmove 1, 3, MOVE_SURF
	return

SurfPichu_Slot2::
	setmonmove 2, 1, MOVE_THUNDER_SHOCK
	setmonmove 2, 2, MOVE_CHARM
	setmonmove 2, 3, MOVE_SURF
	return

SurfPichu_Slot3:
	setmonmove 3, 1, MOVE_THUNDER_SHOCK
	setmonmove 3, 2, MOVE_CHARM
	setmonmove 3, 3, MOVE_SURF
	return

SurfPichu_Slot4:
	setmonmove 4, 1, MOVE_THUNDER_SHOCK
	setmonmove 4, 2, MOVE_CHARM
	setmonmove 4, 3, MOVE_SURF
	return

SurfPichu_Slot5:
	setmonmove 5, 1, MOVE_THUNDER_SHOCK
	setmonmove 5, 2, MOVE_CHARM
	setmonmove 5, 3, MOVE_SURF
	return

sText_MysteryGiftEgg:
	.string "{PLAYER} received the EGG.$"

sText_FullParty:
	.string "Oh, your party appears to be full.\p"
	.string "Maybe you could store one of your\n"
	.string "POKéMON in your PC.$"

sText_LookAfterEgg:
	.string "Please look after it and raise it\n"
	.string "with love and kindness.$"

In your chosen map, add 1 NPC object and set it as EventScript_SurfPichuStart

Compile and receive the eggs.

Clone this wiki locally